viernes, 2 de septiembre de 2011

.NET SERIALIZATION C#

El proceso de serializacion consiste en almacenar una instancia de una clase en un archivo de manera tal que pueda volver a crearse el objeto con sus mismas propiedades cargándolo desde el mismo archivo; es decir si tienes un objeto creado en memoria el cual representa a un automóvil y deseas almacenar el objeto completo para luego volver a hacer referencia a él en otro momento, entonces deberías utilizar serializacion.
Vamos a ver como funciona el proceso de serializacion en .Net
Para nuestro estudio vamos a suponer que tenemos una clase llamada Persona la cual tiene como propiedades el Nombre, el apellido y la Cedula(Numero único de identificación) de la persona.
Para poder serializar una clase esta debe estar marcada con el atributo [Serializable]
[Serializable]
class Persona
        {
            public string _Nombre;
            public string _Apellido;
            public string _Cedula;
                      
        }


El siguiente paso consiste en elegir el tipo de serializador que necesitamos teniendo dentro de nuestras opciones el serializador binario, el serializador xml y otros soportados por el espacio de nombres System.Runtime.Serialization.


Serializador Binario:



 Persona nuevaPersona = new Persona();
            nuevaPersona._Nombre = "Carlos Andres";
            nuevaPersona._Apellido = "Arango Morales";
            nuevaPersona._Cedula = "xxx xxx xxx";


            //Se crea una instancia del formateador binario que implementa la interfaz IFormater
            IFormatter Formatter = new BinaryFormatter();

            //Cramos un Stream para almacenar el archivo en el disco
            Stream stream = new FileStream("PersonaSerializada.bin", FileMode.Create, FileAccess.Write, FileShare.None);

            //Utilizamos el Formatter para serializar el objeto en el stream

            Formatter.Serialize(stream, nuevaPersona);
            stream.Close();



De esta forma tendríamos en la carpeta de la aplicación un nuevo archivo llamado PersonaSerializada.bin con caracteres no fácilmente comprensibles por los humanos pero en el cual esta almacenado el objeto.


Deserializador Binario:



Si deseamos leer el objeto desde el archivo entonces debemos leer el archivo utilizando un Stream Reader para luego por medio del Formatter realizar un Cast al tipo de objeto a los datos retornados por el Formatter.


 IFormatter Formatter2 = new BinaryFormatter();
            Stream stream2 = new FileStream("PersonaSerializada.bin", FileMode.Open, FileAccess.Read, FileShare.Read);

            //Esta es la parte importante
            //Despues de tener el objeto en el stream creamos el objeto declarando el contenedor y realizando
            //un Cast del contenido del stream a la clase que deseamos deserializar

            Persona PersonaDesSerializada = (Persona) Formatter2.Deserialize(stream2);


Ahora tenemos en memoria en el objeto PersonaDesSerializada el contenido del objeto persona creado inicialmente.


Existen varios de tipos de serializadores los cuales son importantes y mas efectivos en algunos casos pero el proceso es muy similar al que vimos en este apartado del blog.





El código completo lo pueden encontrar en este link Serializacion












lunes, 11 de julio de 2011

Como acceder a tablas en diferentes bases de datos utilizando SQL SERVER (LINKED SERVERS)

En algún momento de nuestras vidas como desarrolladores vamos a necesitar realizar alguna consulta que requiera múltiples origenes de datos; es decir traer información de la tabla A en el Servidor 1 y datos de la tabla B en el servidor 2 para luego por ejemplo unirlas o realizar un join o lo que se les ocurra.

Para esto sql server trae la tecnología Linked Servers la cual permite enlazar diferentes orígenes de datos ODBC y consultarlos en el servidor como si fuesen locales tan solo agregando el descriptor del origen en la consulta

por ejemplo:

si deseamos consultas la tabla empleados desde nuestro servidor pero esta se encuentra en otro servidor; podriamos realizarlo de la siguiente forma

SELECT * FROM ServidorFicticio.dbo.Empleados

donde ServidorFicticio es el nombre de la instancia de servidor asociado actual

Este tipo de consultas son llamas consultas distribuidas y pueden ser muy utiles para homogenizar entornos de bases de datos heterogeneos como se puede apreciar en la siguiente imagen cortesia de nuestros amigos de Microsoft




Para mas informacion acerca de este tema pueden navegar en los siguientes links

Linking Servers
Creando Linked Servers

martes, 22 de febrero de 2011

Sumar dias o semanas o meses a una fecha en .net

Cuando estamos desarrollando aplicaciones en .net en ocasiones necesitamos sumar o restar algunas cantidades a las fechas actuales para esto .net trae un metodo el cual nos facilitara mucho la vida


por ejemplo

si quieres sumar un dia a una fecha


Dim ProximoDia as date
Dim DiaActual as date = system.datetime.time.now
ProximoDia = DiaActual .AddDays(1)


Puedes utilizar intelisense para ver los metodos que puedes utilizar para sumer meses años y demas


tambien puedes utilizar el metodo DateAdd



De la documentación de MSDN

DateAdd Function
Returns a Date value containing a date and time value to which a specified time interval has been added.

algunos ejemplos de MSDN

Example

This example takes a date and, using the DateAdd function, displays a corresponding date a specified number of months in the future.


Dim Msg, Number, StartDate As String 'Declare variables.
Dim Months As Double
Dim SecondDate As Date
Dim IntervalType As DateInterval
IntervalType = DateInterval.Month ' Specifies months as interval.
StartDate = InputBox("Enter a date")
SecondDate = CDate(StartDate)
Number = InputBox("Enter number of months to add")
Months = Val(Number)
Msg = "New date: " & DateAdd(IntervalType, Months, SecondDate)
MsgBox (Msg)

domingo, 18 de abril de 2010

MAESTROS DE OPERACION WINDOWS SERVER 2008

maestros de operaciones 

Maestro de Esquema:

El maestro de esquema almacena la única copia modificable del esquema del directorio activo. De manera breve podemos definir el esquema como un conjunto de atributos que definen la clase de objetos que pueden ser almacenados e instanciados en la base de datos del directorio activo. Todos los dominios en el bosque comparten un esquema común, el cual es replicado en todos los controladores de dominio en el bosque. Existe un solo maestro de esquema en todo el bosque.

El maestro de esquema almacena las definiciones para los siguientes elementos:

Objetos:

Un objeto especifico que puede ser catalogado en la base de datos del directorio activo y que es definido por medio de sus atributos. Ejemplo de estos objetos son los equipos, los usuarios, las unidades organizaciones y objetos definidos por el usuarios (Amigos lectores no intenten modificar el esquema a menos que sean personas muy capacitadas para hacerlo ya que pueden causar daños irreparables al dominio).

Contenedores:

Un contenedor es un tipo especial de objeto que puede contener a otros objetos.

Clases:

Una serie de atributos asociados a un objeto.

Ya que el esquema se puede extender; los administradores avanzados pueden crear nuevos elementos dentro del esquema.

Algo a tener en cuenta además de las consideraciones de integridad del domino es que solo los administradores miembros del grupo Schema Admins pueden extender el esquema.

Microsoft como precaución de seguridad deshabilita por defecto el Snap In de MMC para modificar el esquema, esto hace que los administradores deban registrar la dll por medio del comando “regsvr32 schmmgmt.dll” en la consola CMD para habilitar esta característica.

 

Maestro de nombres de dominio:

Al igual que el maestro de esquema el rol de maestro de nombres de dominio solo puede ser ejercido por un controlador de dominio en todo el bosque y en una instalación por defecto este se encuentra en el controlador de dominio raíz del bosque y se encarga de solucionar los conflictos de nombres de dominio en el momento de la creación de nuevos dominios en un árbol o en todo el bosque. Microsoft recomienda que los roles de maestro de nombres de dominio y maestro de esquema estén en el mismo controlador de dominio.

 

Emulador PDC (Emulador de controlador de dominio principal):

El emulador PDC en Windows Server 2008 funciona como controlador de dominio para equipos Windows NT y anteriores permitiendo la existencia de estos en la red y provee servicios básicos como Inicio de sesión y cambio de contraseña pero no cuentan con las características avanzadas con las que un bosque Windows server 2008 nativo cuenta. Además de servir como PDC para Sistemas operativos legacy este maestro es el encargado de sincronizar el reloj en todas las maquinas que se unen al dominio, por eso es aconsejable instalar un reloj hardware de tiempo real en el Controlador de dominio que tenga el rol de emulador PDC para tener la mayor precisión. Microsoft recomienda que el Emulador PDC se almacene en el primer controlador de dominio del bosque.

 

Maestro de infraestructura:

El maestro de infraestructura realiza dos funciones principales. Actualiza la referencia a los objetos en otros dominios. Haciendo esto se asegura que cambios hechos por diferentes administradores en locaciones distintas no estén en conflicto. Cambios como agregar un nuevo usuario al dominio o la creación de nuevos grupos de seguridad son auditados por el maestro de infraestructura.

La otra función del maestro de infraestructura es seguir los cambios en la pertenencia a grupos que cruzan la frontera del dominio dentro del bosque y asegurarse que todos los elementos del bosque entiendan estos cambios evitando conflictos.

 

Maestro RID:

En un dominio todos los objetos descritos en el esquema y que pueden ser instanciados tienen un SID o identificador de seguridad además de un RID relativo al dominio. El maestro RID mantiene un registro de todos los RID’s asignados dentro de un dominio y genera bloques de 500 RIDs a todos los otros dominios para que los administradores puedan crear cuentas. El maestro RID genera un nuevo bloque de 500 RIDs cuando el bloque anterior ha sido asignado en un 20%.

Se pueden modificar llaves del registro para permitir generar un pool de RIDs más extenso. Si el maestro RID falla, administradores en otros controladores de dominio podrán crear cuentas hasta que el pool de RIDs se agote. Después de esto la creación de cuentas fallara.

Escrito por Carlos Andrés Arango

Email: darkhunter.mail@gmail.com

Blog: http://publicbytes.blogspot.com

viernes, 9 de abril de 2010

Active Directory identity and Acces (Directorio activo identidad y acceso IDA)


Una identidad es, en su sentido más amplio, una representación de una entidad que realizara acciones en la red empresarial. Por ejemplo si un usuario desea acceder a un documento compartido en un servidor.
Este documento normalmente estará protegido por una lista de control de acceso o ACL manejada por el sistema de gestión de seguridad del sistema operativo en el que se detalla los usuarios y dispositivos que pueden tener acceso a este recurso.
En el momento que un usuario necesita acceder a este documento el sistema operativo del cliente utiliza sus credenciales para solicitar acceso al recurso para lo cual el sistema operativo en el servidor debe comparar las credenciales del usuario con las almacenadas en su lista de control de acceso para garantizar o negar el acceso a este.
Computadoras, grupos, servicios y otros objetos también necesitan realizar operaciones en la red empresarial por lo tanto también deber ser representados por sus identidades; una identidad es un conjunto de parámetros únicos que posee un objeto. Valores tales como nombre de usuario o el SID (security indentifier) y el password son almacenados en una base de datos que permitirá la autenticación de estos objetos en la red.
Uno de los componentes principales de un sistema IDA es el almacén de identidades.
El almacén de datos de active directory o en ingles Active Directory data store también conocido como el directorio es un almacén de identidades. El directorio por sí mismo es almacenado y manejado por el controlador de dominio el cual realiza el rol de AD DS (Active directory Domain Services).
El controlador de dominio no permitirá el acceso a ningun recurso a usuarios que no tenga permisos almacenados en las listas de ACL de los recursos.
Autenticación Kerberos
En un dominio un protocolo llamado Kerberos es usado para autenticar a los usuarios. Cuando un usuario inicia sesión en un dominio, Kerberos entrega un paquete de información a este llamado el TGT o ticket Granted ticket. Antes de que una entidad pueda acceder a un recurso de la red, una petición de Kerberos es enviada al controlador de dominio junto con el TGT que identifica a la entidad que quiere hacer uso del recurso. El controlador de dominio entonces envía a la entidad un ticket llamado ticket de servicio el cual es presentado ante el servidor que posee el recurso al que se desea acceder y confirma que la entidad que solicita el recurso fue autenticada y validada por el almacén de identidades. Este proceso de autenticación se produce en el inicio de sesión y garantiza la identidad de una entidad en todo el dominio y habilita a los usuarios y dispositivos para adquirir tickets de servicio.

Control de Acceso:
La infraestructura de IDA protege la confidencialidad de los datos en la red empresarial al proveer un mecanismos de gestión de listas de control de Acceso granular por medio del almacén de identidades así un administrador podrá permitir o denegar el acceso a los recursos almacenados en el almacén de identidades de IDA en el caso de Windows Server el directorio activo.
Auditoria:
La infraestructura IDA también permite que la empresa pueda auditar lo sucedido con respecto a sus recursos de red y así poder rastrear a los responsables de diferentes actividades.

El almacén de identidades no es el único componente que incluye Windows server 2008 para la implementación de la infraestructura IDA. En la figura de la parte superior se muestran algunos componentes que incluye Windows server 2008 para la implementación de IDA.


Conclusión:

LA infraestructura IDA o Identification and Acces es uno de los pilares fundamentales de una dominio Microsoft y sobre este sistema de autenticación esta implementadas muchas de las tecnologías que pueden ayudar a una compañía a ser más productivas.
Esta infraestructura permite el acceso a recursos utilizando un único inicio de sesión y garantiza que los administradores puedan aplicar listas de control de acceso de manera centralizada sobre los usuarios, los equipos y demás entidades de un Dominio.

En próximas entregas de este Blog hablaremos de los otros servicios que componen IDA
Escrito por Carlos Andrés Arango
Correo: darkhunter.mail@gmail.com
Bibliografia MCTS - self paced training kit exam 70-640 configuring windows server 2008 Microsoft press

jueves, 8 de abril de 2010

AFORGE.NET framework para agilizar el desarrollo de aplicaciones de visión artificial en C#

Recientemente durante el desarrollo de mi trabajo de grado me vi en la necesidad de buscar una herramienta que me permitiera agilizar el desarrollo de un algoritmo en el que estoy trabajando llamado IRA, en español algoritmo de reconocimiento del iris, en particular necesitaba una herramienta que me permitiera aplicar filtros sobre imágenes, segmentar y reconocer algunos patrones en las imágenes.
En la búsqueda de esta herramienta tuve el placer de encontrar AFORGE.net


Fragmento extraído de la documentación oficial:

AForge.NET Framework is a C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence - image processing, computer vision, neural networks, genetic algorithms, machine learning, etc.

Como lo dice el fragmento anterior Aforge.NET es un marco de trabajo para C# diseñado para desarrolladores e investigadores en los campos de visión artificial, inteligencia artificial, procesamiento digital de imágenes, redes neuronales, algoritmos genéticos y maquinas de aprendizaje, además de otras características que se van a agregando al proyecto que es por supuesto open source y todos podemos contribuir.


El siguiente es un ejemplo de como se utiliza el framework para entrenar un perceptron multicapa comúnmente utilizado para reconocer patrones








// initialize input and output values

double[][] input = new double[4][] {

    
new double[] {00}, new double[] {01},

    
new double[] {10}, new double[] {11}

}
;

double
[][] output = new double[4][] {

    
new double[] {0}, new double[] {1},

    
new double[] {1}, new double[] {0}

}
;

// create neural network

ActivationNetwork   network = new ActivationNetwork(

    SigmoidFunction( 
),

    
2// two inputs in the network

    
2// two neurons in the first layer

    
)// one neuron in the second layer

// create teacher

BackPropagationLearning teacher = new BackPropagationLearning( network );

// loop

while ( !needToStop )

{

    
// run epoch of learning procedure

    
double error teacher.RunEpoch( input, output );

    
// check error value to see if we need to stop

    // ...

}



Colorized by: CarlosAg.CodeColorizer






Por ultimo les dejo el link del framework para los que quieran investigar un poco mas

http://www.aforgenet.com/framework/

miércoles, 7 de abril de 2010

Tratado de libre comercio y sus implicaciones en el sector de las telecomunicaciones en Colombia

Antes de profundizar en el tema debemos tener claro que es un tratado de libre comercio. Un tratado de libre comercio es un contrato entre dos o más países, o entre un país y un bloque de países que es de carácter vinculante (es decir, de cumplimiento obligatorio) y cuyo objeto es eliminar obstáculos al intercambio comercial, consolidar el acceso a bienes y servicios y favorecer la captación de inversión privada. Con el fin de profundizar la integración de las economías, el TLC incorpora, además de temas comerciales, temas económicos, institucionales, de propiedad intelectual, laborales y medio ambientales, entre otros. De otro lado, para resguardar a los sectores más sensibles de la economía, el TLC apunta al fortalecimiento de las capacidades institucionales de los países que lo negocian y establece foros y mecanismos para dirimir controversias comerciales. Un Tratado de Libre Comercio es un instrumento de Política Comercial y como tal es negociado por entidades rectoras de cada Gobierno. Dichas instituciones pueden recurrir a funcionarios de otras entidades públicas para negociaciones específicas.
Finalmente, el texto del acuerdo es aprobado o desaprobado por el Poder Legislativo de cada uno de ambos países.
Este contrato es especificado en un pliego que aborda todos los temas y contiene las normas y los beneficios que cada país recibirá al hacer parte del tratado.
En Colombia el tratado de libre comercio es negociado por la máxima autoridad del país y los grandes empresarios con una aprobación final por parte del poder legislativo después de análisis exhaustivo con el fin de garantizar las oportunidades equitativas para ambas partes.
El texto que comprende los pliegos del tratado de libre comercio entre Colombia y los estados unidos contiene 23 capítulos y varios anexos en los que se detallan de forma clara cuales son los beneficios arancelarios y se proponen la creación de entidades de control para los procesos de competencia entre ambos países así también está plasmada la posición de Colombia con respecto a la protección de la biodiversidad y la mejora en los aspectos sanitarios y fitosanitarios.


TLC y las comunicaciones:

El texto del tratado de libre comercio específicamente en su capitulo 14 detalla los aspectos relacionados a las telecomunicaciones que serán tenidos en cuenta en el desarrollo de este proyecto de integración comercial específicamente se habla de las medidas relacionadas con el acceso y el uso de los servicios públicos de telecomunicaciones, las medidas relacionadas con las obligaciones de los proveedores de servicios públicos de telecomunicaciones y medidas relacionadas con las redes públicas y el suministro de información.
En particular el tratado hace énfasis en la obligación de las compañías que son dueñas de las redes de datos en el país a arrendar por un precio razonable el acceso a sus redes por parte de terceros con el fin de promover la competencia y así mejorar la calidad en el servicio y esto verse reflejado en los precios de los servicios de comunicaciones a los usuarios finales.
Dentro del documento se especifica que las compañías que entraran a competir al país podrán comprar o arrendas equipos y conectar terminales a las redes existentes, suministrar servicios a usuarios finales a través de circuitos propios o arrendados, interconectar sus redes con las redes públicas y con los servicios públicos de telecomunicaciones y utilizar protocolos compatibles técnicamente pero de libre elección sin desmejorar la calidad de servicio.
En este apartado el tratado tiene más pros que contras debido a que la hegemonía que algunos proveedores de servicios públicos de telecomunicaciones en nuestro país no ha permitido una competencia justa e igualitaria gracias a la ventaja en términos de la participación en el mercado que tiene algunos operadores los cuales pueden especular con los precios de interconexión a sus redes afectando así el bolsillo del usuario final.
Estas medidas que promueven el acceso de otros operadores a las redes existentes no pueden verse como una amenaza a la información de las compañías ya existentes ni de los usuarios finales ya que cada parte podrá garantizar la seguridad y la confidencialidad de los mensajes y la protección de los datos no públicos utilizando las técnicas que ellos consideren necesarias sin que esto se convierta en una forma de discriminación arbitraria y creara preferencias en el mercado.
Siempre que las condiciones necesarias para el acceso a las redes se cumplan los dueños de estas podrán establecer por medio de un documento técnico las condiciones físicas de interconexión y los mecanismos para que esta carga adicional para sus redes no se convierta en un detrimento en el servicio para el usuario final protegiendo siempre el acceso a un servicio de alta calidad.
Una parte importante del acuerdo es que si una compañía adquiere un servicio con un operador este no podrá poner limitaciones para la reventa de este permitiendo el crecimiento de pequeñas empresas constituidas legalmente que no tienen el musculo económico para competir con las grandes hegemonías de telecomunicaciones y por último las compañías que prestan sus redes para la prestación de servicios por terceros deben evitar el uso de prácticas anticompetitivas como el empleo de subsidios cruzados, el uso de información de los competidores con resultados anticompetitivos o el no poner de manera oportuna a disposición de los proveedores de servicios públicos de telecomunicaciones, información técnica sobre las instalaciones esenciales y la información comercialmente relevante que estos necesiten para suministrar el servicio público de telecomunicaciones y por último las empresas dominantes del mercado dueñas de la infraestructura física como armarios de cableado, postes, ductos y derechos de paso deben poner estos a disposición de las empresas que entran a competir con el tratado a precios justos y razonables que estarán vigilados por el ente encargado en cada país; en nuestro caso el ministerio de las tecnologías de la información y las comunicaciones
Uno de los temas más controversiales con respecto al articulo 14 que trata sobre las telecomunicaciones; es la aclaración de que cada país de acuerdo a su legislación podrá definir que son los servicios de información creando un vacío legal que podrá ser utilizado para obtener ventajas competitivas al intentar clasificar cualquier servicio como un servicio de información y así poder acceder a beneficios tales como no tener que justificar sus tarifas de acuerdo a costos, ni tener que registrar las tarifas de tales servicios ante las autoridades competentes o ajustarse a estándares de interconexión para conectarse a redes distintas de la red pública de telecomunicaciones. En mi opinión para que esta parte del texto tenga valides y pueda ser aprobada el ministerio de las tecnologías de la información y las telecomunicaciones debe analizar de manera detallada la legislación con respecto a los servicios de información y modificar la ley en el país para coincidir en este aspecto y así entrar a competir de igual a igual y no dejar cabida a conflictos de interpretación en los países respectivos.

Con respecto al articulo 14.7 las partes involucradas en el tratado deberán garantizar que su ente regulador en nuestro caso el ministerio de las tecnologías de la información y las comunicaciones y en el caso de estados unidos el Departamento de comercio de los estados a través de la NTIA que estos entes no podrán tener ninguna participación económica ni política ni de preferencias con las entidades que estén en competencia legitima por el mercado de las telecomunicaciones en el país, con el fin de promover la competencia sana y disminuir los casos de corrupción y tráfico de influencias que tanto azotan a nuestro país en desarrollo en especial en épocas electorales.
En términos generales la forma en que se administran recursos escasos y valiosos (entiéndase esto como el espectro electromagnético, el espacio público y demás ) no sufren muchos cambio con la propuesta debido a que se mantiene el proceso licitatorio para la consecución de estos así como las condiciones de idoneidad para la prestación de los servicios en particular el espectro electromagnético sigue siendo administrado por las mismas entidades pero se disminuirán las trabas para la participación de entidades extranjeras a las cuales no se les dará un trato diferente a la de las entidades nacionales.
Cualquier empresa en el mercado podrá acudir a los entes reguladores para resolver conflictos con respecto a la facilitación de las redes de los operadores dominantes nacionales y denunciar la especulación o las prácticas anticompetitivas como sobre costos y demás.
Este mismo ente recibirá las quejas para reconsiderar las resoluciones tomadas por el mismo organismo como un mecanismo de apelación pero que por ningún motivo exime del cumplimiento de la norma hasta que una entidad de mayor nivel o la misma entidad deroguen la resolución después de un análisis exhaustivo.
Como punto final en el análisis del documento se debe mencionar que todos los procesos públicos en un democracia deben ser transparentes y de acceso público es por esto que los ministerios deberían publicar oportunamente información con respecto a procedimientos, tarifas, listas de operadores pliegos de licitación y demás documentos públicos garantizando la libre competencia y la igualdad de condiciones para las empresas en los respectivos países beneficiando a los usuarios finales y nosotros como entes reguladores del estado debemos opinar y dejar nuestro precedente acerca de temas tan neurálgicos como lo es el TLC.

Escrito por Carlos Andrés Arango
Bibliografia:
Especificación del documento TEXTO FINAL TLC COLOMBIA-EEUU articulo 14 alojado en el dominio www.tlc.gov.co