Artificial Intelligence Framework Tercer Alpha Release

|

Pues si, a casi un año de iniciado el proyecto he decidido ponerle a caminar un poco más, por eso le agregue un control de Usuario Windows Presentation Foundation que te permite ver a la neurona y no solo imaginarla, esto ayuda con que sea más fácil de entender que está pasando.

Además le actualice la librería para que use .NET Framework 3.5, así también podemos usar las nuevas características que nos ofrece el Framework.

Espero también para en un Cuarto Release no muy lejano agregar algoritmos de aprendizaje y que se pueda escoger entre que algoritmo de aprendizaje se aplicara sobre la red de Hopfield de ejemplo.

Quieren ver más? entonces por favor hagan click aqui.

Migrando un sitio ASP .NET que funciona en IIS a Apache con MONO

|

Algunos se preguntaran? Y a este señor que le paso! Por que anda haicendo esos experimentos! Bueno, la verdad es que el mercado de mi país lo exige, tenemos un decreto del gobierno que indica que se debe propender a usar todo lo que sea Open Source sobre el software propietario en el sector público, y claro si no quieres morir pues tienes que adaptarte, entonces nosotros queremos seguir aprovechando la facilidad de desarrollo de las herramientas MS, y claro poder trabajar con infraestructura Open Source, por eso evaluando algunas alternativas la más viable la ofrece el proyecto Mono que es auspiciado por Novell, en definitiva es una implementación .NET para Linux/MacOs/Windows, algunas empresas como Linden (Second Live) han adoptado ya esta solución.

Me ha gustado además que a diferencia de muchos otros proyectos Open Source, este tiene un Road Map! Es decir si tienen un camino que intentan seguir, además Novell ha comenzado a dar soporte comercial si usas SUSE Linux en su versión Enterprise, claro esto tiene que se pagado, pero ya es algo mucho más serio que espera a que algún día se corrija un error que no te deja hacer algo o peor aún, adentrarse en un código que no tienes idea de como se hizo para intentar arreglarlo con todas sus posibles consecuencias.

Bueno después de la publicidad gratis, vamos un poco más a lo técnico, tengo un proyecto ASP .NET 2.0 que fue migrado desde ASP .NET 1.1, funcionando bien, y claro como todos necesitamos que esas cosas funcionen ya, simplemente comencé a investigar un poco del funcionamiento del famoso proyecto Mono, y encontré que hay una imagen en VMware de SUSE Linux (puedes encontrarla aqui), ya configurada para que uses tus proyectos .NET, de hecho es bastante fácil de usar, en las instrucciones dice que solo copies tu proyecto a un folder especifico, y voila! Puedes intentar abrirlo desde tu browser, y asi es funciona! Un momento salió un error, pero bueno ya corrió lo que quiere decir que si funciona, una parte, pero funciona, y que decía el error? Error: Failed to create shadow copy (CopyFile).
Y claro al más puro estilo de los servidores de aplicación o web open source, te da un stack que la verdad no te ayuda mucho, y de paso no cargaba y no cargaba y no cargaba y después de un tiempo de paso Apache empezaba a reusarse a funcionar por completo, y buscando si a alguien le había pasado lo mismo, pues encontré que sí, pero no había una luz de que sucedía, hablaban de un parche que no encontraba donde estaba ni nada, ya eran algunos días en los cuales cada vez se veía menos probable que este proyecto vaya bien por el camino Open Source, hasta ayer en la noche…

Yo estaba sospechando que por el error lanzado hacia falta algún assembly, y de hecho si era esa la razón del error, pero no era mi assembly, si no uno que por defecto referencia Visual Studio en sus proyectos, y de paso Mono aun no lo implementa, para mi buena suerte di a la primera, en el web.config quite la referencia al assembly System.Data.DataSetExtensions, busquen en su web.config esta línea específicamente:

<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

Si no están usando nada de ese assembly quítenlo y listo! Ahora si están usando algo de ese assembly (basicamente LinQ a DataSets) y necesitan hacerlo funcionar, la única solución es reemplazar esos métodos por métodos propios, y esperar y/o contribuir a que el proyecto Mono implemente esa parte de .NET, si no les funciona lo que les estoy sugiriendo, van a tener que seguir quitando referencias, de una en una a ver cuál es la que está molestando.
Se que se al parecer lo han reconocido como un Bug, y lo están arreglando, pero eso será hasta la versión 2.4.2, a veces uno no puede esperar tanto asi es que encuentra este tipo de soluciones.

Para mayor referencia el thread que leí es este:

http://www.nabble.com/Error%3A-Failed-to-create-shadow-copy-%28CopyFile%29.-td24091798ef1367.html

Ahí sugieren que puede ser la referencia al Entity Framework de MS, si tienen esa referencia y no la usan, entonces quítenla y a probar!

Bueno si tienen este tipo de problemas comenten por favor, así podemos intentar resolver estos problemas y de paso ayudar a madurar el proyecto Mono, es a mi forma de ver una muy buena alternativa para no perder los skills .NET y darle una opción a los clientes!

Ojala les sirva!

Error al usar TFS API en Vista x64


Hace tiempo que no escribia algo interesante, bueno por cosas de la vida ando haciendo unas herramientas extra para TFS, la computadora en la que trabajo tiene Windows Vista Business x64, y claro trato de tener todo en x64, pero Visual Studio 2k5 y 2k8 aun no son del todo x64, ademas de los APIs de TFS que tampoco son x64, estan compilados para x86, si no me creen vayan a su GAC y compruebenlo por ustedes mismo...
El punto es que via pruebas unitarias todo funcionaba perfecto, incluso hice unas formas que las ejecute con Team Tester para probar, todo de maravilla, pero cuando el Host de esas formas cambio a ser un compilado externo comenzo a arrojar el siguiente error:

No se puede cargar el archivo o ensamblado 'Microsoft.TeamFoundation.Client, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ni una de sus dependencias. El sistema no puede encontrar el archivo especificado.

La verdad me di algunas vueltas, encontre que cuando unstalas SP1 de VS 2008 al parecer a veces no lo hace bien, por lo que te sugieren reinstalarlo, y lo hice, pero no se resolvio el problema, segui dando vueltas y me encontre con este post:

http://weblogs.asp.net/omarv/archive/2008/10/10/using-the-tfs-api-in-your-64-bit-development-environment.aspx?CommentPosted=true#commentmessage

Aqui en resumen te dice que la configuracion de tu programa host debe ser x86, asi funciona como arte de magia!

Solo con cambiar eso encontro el assembly que no encontraba, y es logico que en pruebas unitarias funcione, VS esta compilado para x86 entonces como hace de host para las pruebas encuentra facil el assembly.

Bueno si tienen problemas dejenme saber para ayudarles!

Estimación de Hardware Requerido por SQL Server 2005

|

Esta tarea normalmente se hace un tanto difícil, siempre es mejor usar laboratorios de pruebas para poder especificar exactamente las características de hardware que una solución que construyes requiere, lo que puedes tener una idea fácil es de cuantas transacciones al dia vas a tener, y cuanto tu base de datos va a crecer, ok y con eso que hago? Cuantos recursos consume SQL Server 2005? Cuanta redundancia necesito? Y muchas otras preguntas normalmente asaltan nuestro trabajo…

Afortunadamente la gente de HP ha hecho nuestra vida mas fácil, ellos hicieron los laboratorios de pruebas y nos pueden decir rápidamente que necesitamos, y claro de paso que servidor de ellos se ajusta, como? Con las herramientas que se encuentran en este link:

http://h71019.www7.hp.com/ActiveAnswers/cache/70729-0-0-225-121.html?jumpid=reg_R1002_USEN

La herramienta HP ProLiant Transaction Processing Sizer for Microsoft SQL Server 2005 (x64)  es la que mas recomiendo, definitivamente la mejor arma para estimar con confianza que hardware recomendar, además muy fácil de usar por que funciona en base a un cuestionario que respondes y de paso tiene un actualizador que te mantiene al día los parámetros requeridos por SQL Server 2005.

Espero que les ayude tanto como a mí!

WCF y Balanceadores de Carga F5 Big IP

|

Como ultimamente sucede ando haciendo servicios Web, y me encanta WCF para hacerlo por muchas razones, en especial la rapidez con la que uno puede hacer cosas complejas, y como era de esperarse en una de las implementaciones que hice por el crecimiento que tienen, cambiaron sus balanceadores de carga de software por "cajas" F5 Big IP estas definitivamente son muy buenas para distribuir la carga y bajar el procesamiento de los servidores, por que entre otras cosas mas que balancear carga, se pueden encargar del procesamiento SSL, y por su puesto esto es un alivio para los servidores! Pero no para los servicios WCF que usan credenciales en el mensaje...
Resulta que como el F5 se encarga del procesamiento SSL, cuando el trafico es pasado al servidor de turno este pasa plano, claro para apliaciones web es facil configurar para que se reciba el trafico plano, de hecho en ciertos casos no hay que hacer nada, pero si usas un servicio WCF con credenciales en el mensaje, por restricciones de seguridad TIENES QUE USAR SEGURIDAD EN EL TRANSPORTE, esto significa encriptar la comunicación con SSL, no hay otra forma, o incurrir en otras practicas no recomendadas como pasar las credenciales como parametros de los mensajes (no hagan esto nunca!) y demas...

Uno puede notar el problema cuando claro ya configurado el F5 y apuntas a tu servicio con Seguiridad en el Transporte y Credenciales en el Mensaje, el trafico pasa y en el servidor donde se ejecuta el servicio te dicen que no pueden validar los mensajes que llegan, y de vuelta tambien tienes el mismo resultado, Faults diciendo que la seguridad no puede ser verificada, ok si tienes estos mensajes tienes el problema...

Hay 2 soluciones, la primera implementar un canal Http que permite que se pasen las credenciales en el mensaje sin seguridad en el transporte, eso puedes encontrar como hacerlo aca: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/87a254c8-e9d1-4d4c-8f62-54eae497423f/, pero la verdad no les recomiendo esto, revise un poco profundamente y hay ciertos casos en que no funciona completamente, y ademas es un poco complicado, ademas una advertencia es que si haces esto los mensajes pasan planos por la red y pueden ser vistos facilmente con un sniffer bien ubicado en la red...

La otra opcion antes no era posible, pero ahora si, antes los F5 no podian pasar el trafico SSL al servidor, solo podian pasarlo plano, gracias al soporte de F5 se nos indico que hoy ya se puede hacerlo, les sugiero que para los pasos exactos contacten al soporte de F5, los pasos basicos y no detallados en resumen son estos:

1.- Crear un virtual server en el puerto 443 y a el asociar un Profile SSL Server
2.- Crear un pool en el puerto 443 y poner como member server el servidor
3.- Dividir el certificado a usar en 2, 1 es el certificado y otro es la clave, subirlo al F5 a las ubicaciones correspondientes para cada tipo
4.- Crear un SSL Proxy, usando el certificado y la clave que se subio anteriormente
5.- Configurar a que apunte a los servidores correctos

Estos son pasos con mucha falta de detalle, yo insisto en que consulten a su soporte F5 para los pasos detallados, la consulta es como hacer un Servidor SSL de Cliente, para que el servidor reciba el trafico SSL.

Espero les sirva!

Una caracteristica interesante de IE 8

|

Desde hace un tiempo estoy probando Internet Explorer 8, y definitivamente me agrada mucho, tiene muchas cosas que de verdad te ayudan con el dia a dia de la navegacion, ejemplo a quien no le ha pasado que se le cerro un tab que no queria cerrar? A mi me pasa y bastante! Pues con Internet Explorer 8 puedes recuperar ese tab perdido en accion! Como? Simple en cuanto se haya cerrado abre otro nuevo tab, En la parte superior izquierda te aparecera Reopen closed tabs, “Reabrir tabs cerrados” en español ahi justo abajo del titulo encontraras el tab que acabas de cerrar, o si quieres ver otros tabs que cerraste podras abrir tu historial de navegacion para encontrarlo!!

En lo personal me ayuda mucho, claro no es un punto de que definitivamente haga que cambies de browser, pero si otras cosas como que definitivamente es mas rapido, los WebSlices, los aceleradores y cosas como el In-Private browsing, bueno aun estan en Beta 2, hay que esperar un poco mas de trabajo de la gente de MS, esperemos un browser de verdad competitivo es este nuevo año!!