Analizando Windows Presentation Foundation

Bueno, hace un rato que no he hecho algun post, pero he estado algo ocupado. En cuanto a mis pocos tiempos libres que he tenido, he estado investigando un poco de la nueva tecnologia que nos presenta Microsoft en su framework 3.0, y aunque no me parece que el numero sea de lo mas acertado, es tema de discusion pero no queda mas remedio que aceptarlo.

En cuanto a WPF trae buenos deseos para este año que comienza, mencionare brevemente algunas de las caracteristicas que en mi experiencia pueden ser beneficas.

1. Diseño previo de interfaces:

Esto ayuda en lo absoluto a la persona que elabora los requerimientos hacia el cliente(SRS) en cuanto a que el diseñador puede elaborar rapidamente un bosquejo de los nuevos requerimientos de la aplicacion sin la necesidad de abrir Visual Studio. Aun no entiendo porque los analisitas o diseñadores crean diseños solo para mostrar pantallazos en el documento de diseño, pero lo importante aqui es convencer al cliente con algo tangible del trabajo que se elaborara.

2. Estandarizacion de tamaño y forma de los controles:

En ocaciones se desea mantenter un estandar de los controles en toda la aplicacion o aplicaciones, en ocaciones resulta mas que hecho un sueño guajiro de los que nos gusta mantener las cosas en orden, y creamos documentacion para que el equipo de trabajo mantenga este orden y cuando no se tiene una persona encargada del diseño de las interfaces de usuario, se crean aplicaciones que no ayudan en lo absoluto a la experiencia del usuario. Con WPF es muy facil lograr esta estandarizacion debido a que permite el declarar estilos a nivel aplicacion que podran ser modificados localmente en las excepciones necesarias. Quisiera hacer la analogia con Machine.config y Web.config.

3.Aplicaciones Windows diseñadas en capas:

Creo que ahora vemos algo mas claro de un diseño en capas agilizado el proceso de desarrollo, el fin de Microsoft es separar y unir, separar en cuanto a que los diseñadores y los programadores a lo suyo, cada quien haga lo que les corresponde, y unir me refiero a que el trabajo que cada quien realiza sea el mismo, que no sea necesario hacer modificaciones o retrabajo.

4.Una experiencia de usuario mas amena:

Supongo que con la facilidad que inplicara el desarrollar las interfaces el usuario se acostumbrara a ver aplicaciones con grandes diseños y sera mucho mas exigente por lo que sera necesario ponerse las pilas y dominar pronto esta tecnologia, cada vez los usuarios son mucho mas exigentes y si la competencia pudo hacer la aplicacion de tal forma te lo pediran.

Habra muchos beneficios en esta tecnologia por lo que vale la pena investigar un poco mas acerca de ella. No se si alguien pueda contestar mi duda pero tengo curiosidad por conocer la contraparte de java, en cuanto a que tecnologia aplican o aplicaran para contrarestar este avance de .NET.

En cuanto a informacion Microsoft provee cursos gratis durante un año acerca de el framework 3.o, los invito a que les den una revisada

Introduciendome al mundo de .Net Remoting

Para mi suena novedoso el tema, y muy apasionante.  Basicamente se puede considerar el hecho de crear instacias de clases en un servidor para centralizar procesos y estados de los objetos para centralizar a un grupo de clientes. Estas clases son publicadas en un servidor.  Hablando de terminos de seguridad, puede ser controlados de dos formas, una en cuanto a la configuracion del servidor y otra mediante la propia clase.

En cuanto a protocolos de trasferencia existe la posibilidad de realizarlo mediante tcp y http, y pueden ser serializados mediante xml o cualquier formato binario.  Igual que de manera local los objetos pueden ser pasados por referencia o un proxy, o por valor y ser cargados por parte del cliente.

Habra que dedicar mas tiempo en conocer y analizar las posibidades del uso de esta rama,
y sobretodo los escenarios en los que pueden ser aplicables.  En lo personal considero emocionante y revolucionario este tema.

Problemas con el Windows Genuine Advantage

Hace un par de meses me fui victima de las actualizaciones de Microsoft, debido a que inocentemente instale esta tan controversial actualizacion, provocandome molestosos avisos en mi maquina recorandome de algo nada novedoso para mi.

Mi problema en su momento fue solucionado por la reinstalacion del sistema operativo, hasta hace un par de semanas que sin mi autorizacion fueron descargadas las actualizaciones pertinentes al mes de Agosto, y entre estas nuevamente aparecio mi problema: «Windows Genuine Advantage».

Pero esta vez no me di por vencido y busque soluciones para tan grave problema, encontrandome en un principio con varios foros donde la solucion encontrada era sustituir «LegitCheckControl.dll» del System32 por alguno de alguna maquina que tuviera licencia, cosa que en mi caso no fue la solucion. Mas tarde y buscando en otro puñado de foros me entrontre que la posible solucion seria con «WGAKILL_12-08-06.rar» via torrent, gracias al Opera que tiene incorporado soporte para descargas via torrent, logre bajarlo y al parecer soluciona el problema de los incomodos mensajes, esperemos que no tenga repercuciones.

Usando la sentencia «using» dentro de un bloque de codigo

A lo mejor esto puede ser muy comun para los que ya llevan rato programando en C#, y el uso de esta sentencia ya sea bastante familiar; pero en mi caso siempre me causo mucho interes y algo de dificultad para encontrar su uso dentro de una sentencia.

Al estar leyendo un libro muy bueno del Dr. Ian Marteens, "La Cara Oculta de C# donde explica el uso y la equivalencia de la sentencia.

Cuando tenemos un caso como el siguiente:

<Clase que contenga metodo Dispose()> NombreInstancia = new <Clase>

try{

//realizar acciones

}

finally{

NombreInstancia.Dispose();

}

Podremos sustituirla por la siguiente instruccion:

using(<Clase que contenga metodo Dispose()> NombreInstancia = new <Clase>){

//realizar acciones

}

La unica restriccion de esta sentencia es que la clase instanciada implemente la interfaz IDisposable. En mi opinion es una alternativa muy valida para reducir un par de lineas, considerando que el ciclo de vida de la instancia sera muy corto y conociendo de antemano lo que implica.

Proyecto de personalizacion de controles(analisis)

Comenzare explicando el objetivo de crear controles personalizados y como le fue dando forma a este proyecto de personalizar controles. 

Todo comienza con el tema de la seguridad informatica, tomare la analogia del cerrojo de cualquier puerta;  si este cerrojo puede ser abierto con mas de un tipo de llave diferente quiere decir que no es seguro; esta misma seguridad puede aplicarse a las aplicaciones, si por cualquier entrada de datos puede aceptar mas de un tipo de dato quiere decir que no es seguro o es suceptible a ataques.  Y para hacer mas segura nuestra aplicacion debemos restringuir, discriminar o limitar los datos a ingresar, de tal forma que las vulnerabilidades solo queden a al descubierto de un pequeño grupo de expertos, no es una solucion conformista pero por el momento es la mas adecuada.

Partiremos de un control que nos permita ingresar solo datos de tipo numerico. Para crear este control es necesario heredar de otro control mas generico y donde esta clase hija sera la discriminadora de caracteres.  Para hacer mas versatil esta clase hija agregaremos una propiedad que nos permita definir el uso de un punto para el uso de enteros o decimales, al agregar esta propiedad veremos la necesidad de crear un atributo para el diseñador de formularios para determinar el orden en que seran serializados o deserealizados los componentes.

Analisis de la herramienta Mantis Bug Tracker

Actualmente me encuentro haciendo algunas modificaciones de esta herramienta. Para los que no la conocen esta herramienta permite la comunicacion de errores entre cliente y proveedor, manteniendo una bitacora o un historial de las incidencias. Gracias a este tipo de herramientas podemos estar informados constantemente del estatus de nuestro software.

 Esto se logra mediante la administracion de nuestros clientes(notificadores o informadores) y desarrolladores, en el cual nuestros clientes nos publican sus problemas de nuestro producto y nosotros administramos nuestros desarrolladores para su pronta solucion, estos ultimos publican o envian sus soluciones a nuestros clientes.

Ademas de ser de las herramientas unicas en su estilo, esta herramienta puede ser complementada con el CVS, ayudando al equipo de desarrollo en el momento de notificar sus cambios cuando se realice la accion de "commit" del CVS, con la adicion de #issue y el numero de la incidencia en la seccion de comentarios para ser asociada la incidencia correspondiente a la herramienta Mantis.

Por ultimo cabe mencionar que esta herramienta ha sido desarrolada en php y puede conectarse a distintos tipos de servidores y configurada para soportar las suscripciones de tipo RSS, ademas de tener licencia de tipo GPL(GNU General Public License) y puede ser descargada desde su sitio oficial

Analisis de herramientas de Red-gate software

Hace tiempo lei en un post de un software que le permitia a las actuales versiones de SQL Server tener la capacidad de intelligense, por lo que me di a la tarea de probar dichos productos y me tope con una amplia gama de productos muy interesantes de la compania Red-Gate Software.

Entre los productos que me llamaron mas la atencion fue SQL Compare, el cual permite comprarar dos esquemas de bases de datos y obtener las diferencias, y aun mejor, los scripts para igualarlas, solventando asi el problema de esquemas diferentes para un software en produccion y otro de desarrollo.

Investigando sobre los tipos nulos

Hace un par de dias tuve la oportunidad de asistir a la Gira Ineta 2006, donde los expositores estuvieron a la altura del evento.  Entre ellos se encontraba Guillermo Som("El Guille") quien entre algunos puntos, toco el tema de los tipos nulos.

Explico como declarar un tipo nulo en vb con la siguiente sentencia

Dim i as Nullable(of integer)

 y en C#

int? i 

Donde al declararla de la siguiente forma esta variable de tipo entera se ha convertido por medio de boxing a una variable de tipo nulo, esto con el afan de reducir el desajuste de impedancias  entre las columnas de las tablas y las variables.

Trabajando poco con las variables de este tipo me he dado cuenta que no es posible convertir a una clase o una cadena a este tipo de variables.  Leyendo un poco la documentacion del MSDN explica que solo es aplicable a variables de tipo valor y no de tipo referencia, por lo que suena logico… las variables de tipo valor contienen o almacenan el dato en si, cuando las de tipo referencia hacen referencia a hacia el valor dado.

Seguire investigando mas sobre el tema, creo que la solucion se podria encontrar en hacer referencia a un objeto nulo, o pudiese ser que pueda ser mas logica, que la variable al ser declarada se le asigne una referencia nula. 

Interoperabilidad… la paz entre maquinas

Dia con dia, la tecnologia se enfoca mas a una la grandioza idea de armonizar las comunicaciones entre equipos con el fin de poder compartir informacion. Historicamente siempre se ha tratado de lograr este tipo de armonia, a falta de acuerdos y estandares no se ha concebido y todo parece ser que estos pequeños roces.

Tratare primero de explicar el porque es tan preciada la interoperabilidad. Uno de los problemas mas cotidianos y de los que muchos hemos sido victimas han sido la actualizacion de programas de uso cotidiano, no critico que sea un problema el mejorar, pues la mejora continua nos lo exige no solo como profesionistas sino como humanos, ser mejor cada dia es mas que una obligacion un deber. El actualizar un programa es necesario para incorporar nuevas funcionalidades y herramientas para su uso mas eficiente y facilitar su propio uso. El problema radica que siempre se mira hacia adelante dejando de ver hacia atras, se corre con el riesgo de que si se los datos son actualizados para el nuevo programa, estos mismos ya no podran ser usados por versiones anteriores, pueda ser que la preocupacion sea mayor que la necesidad pero no se puede dejar a un lado la posibilidad de ser utilizados por una version anterior.

Consejos al migrar una base de datos de SQL Server 2000 a SQL Server 2005

Hace un par de dias me encomendaron a la tarea de montar la base de datos de la empresa sobre la nueva version de SQL Server 2005, reto que me parecio interesante. Se que esta tarea no debe de causar muchos conflictos, solo quiero enfatizar en algunos aspectos a tomar en cuenta.

 El primero es que SQL Server 2005 sigue la nueva ideologia de seguridad, con lo que quiero decir que SQL Server 2005 al instalarlo viene seguro por defecto esto es que todo lo que necesitaremos lo tendremos que habilitarlo.  Al conocer esto fue necesario habilitar las conexiones remotas, que viene por defecto deshabilitadas.

La segunda parte fue que SQL Server puede incorporar politicas en las contrasenias de sus usuarios, debido a que la aplicacion no requiere un cambio continuo de las mismas fue necesario deshabilitarlas.

 Por ultimo, donde tuve mas problemas es que SQL Server 2005 diferencia las mayusculas de las minusculas en sus contrasenias, esto causo muchos problemas debido a que la version anterior de SQL no le daba esta importancia.