viernes, abril 27, 2007

Silverlight vs Flex

Al parecer Microsoft se ha aventurado en una nueva batalla, esta vez por el control de aplicacion interactivas y ricas en multimedia para Web, en contra del mismisimo Adobe y su Flash. El nuevo producto de Microsoft Silverlight (antes llamdo WPF/E) promete mejorar la experiencia en aplicaciones interactivas para Internet con la ayuda de video, animaciones de graficos vectoriales e interactivos; el programa esta basado en la definicion de interfaces declarativas mediante XAML, con soporte para AJAX y obviamente todo el soporte de .NET.

Para poder ver contenido del Silverlight, es necesario instalar un "plugin", el cual microsoft promociona como multiplataforma, pero en el area de preguntas comunes del sitio solo hablan de soporte para Windows y MAC OX con los navegadores IE, Firefox y Safari.

 

 

Pues Adobe no se quizo quedar atras y ha anunciado que su framework Flex lo va a liberar completamente como Open Source para finales de año, ya desde ahorita hay algunas partes de Flex que estan libres. Flex al igual que Silverlight ofrece crear aplicaciones para Web ricas en contenido y dinamicas, estas aplicaciones se pueden visualizar mediante el plugin de Flash 9, el cual soporta mas plataformas que Silverlight, al incluir Linux - junto con todos los navegadores desarrollados para linux, ya sea con el backend de Safari o Firefox - y el navegador Opera, esto sin contar que si no todas las pc, si un alto porcentaje de estas cuenta ya con el plugin de Flash instalado, esto gracias al tiempo que lleva en el mercado y a sitios muy populares como Youtube.com que requieren de ese plugin para visualizar el contenido.

Flex ademas proporciona una IDE open source basada en eclipse para el desarrollo de aplicaciones, ademas de permitir escribir el "backend" de las mismas con lenguajes como ColdFusion, Java, .NET, PHP y Ruby.

Microsoft ya tiene un largo historial de entrar con productos a mercados dominados por otras companias y ganarlos, veremos si en esta ocasion se repite la historia.

Por ultimo como dato curioso el 20 de Abril, antes del anuncio de Adobe sobre liberar Flex, Miguel de Icaza comenta acerca de Silverlight desde su perspectiva y por ahi hace un comentario sobre que el piensa que Flash deberia liberarse como Open Source, pues bien el framework para crear aplicaciones para Flash esta a punto de dar este paso, quizas el siguente si sea Flash?

lunes, abril 09, 2007

Revivir el blog

Hace ya tiempo que habia dejado el blog por la paz, tengo la intencion de revivirlo, aunque para esto he regreado nuevamente a blogger, y asi quitarme de los problema de tener que mantener un sitio para esto.

sábado, abril 07, 2007

Test para entrar a una carrera de Ingenieria (Humor)

Generalmente no publico este tipo de posts, pero este me parecio gracioso - y muy apegado a la realidad -, es un test para saber si la persona tiene las cualidades para ser un Ingeniero:

FACULTAD DE INGENIERIA
¿Usted toma? __SI ___NO
¿Mucho Mucho? __SI ___NO
¿En verdad? __SI ___NO
¿Asistirá a las pedas de la Facultad? __SI ___NO
¿Conoce al menos 20 palabras altisonantes? (Nota:Altisonantes quiere decir
que saben hablar puras pinches pendejadas y putas groserías de mierda.) ___A HUEVO __NO

Para tests para otras areas/carreras universitarias consultar aqui.

Dude!, donde quedo Merge?

Para quizas una de las instrucciones mas interesantes que SQL 2005 introducia en T-SQL era la instruccion Merge, la cual tambien es conocida como "Upsert". La funcionalidad de Merge permitia el mezclar los cambios de una tabla en otra existente, pudiendo generarse casos en donde el registro ya existia en la tabla destino, en ese caso solo se actualizaba el registro existente y cuando no existia, se insertaba el registro faltante todo con una instruccion.

En el libro "Introduccion Microsoft SQL 2005 for developers" se habla sobre esta instruccion, pero en la version final al parecer fue excluida, la pregunta clave es, porque?; de acuerdo con los ejemplos del libro mencionado la forma de escribirla era:

MERGE INTO MyTable
     USING MyTempTable
          ON MyTempTable.MatchingField1 = MyTable.MatchingField1
WHEN MATCHED THEN
     UPDATE UpdateField1 = MyTempTable.UpdateField1
WHEN NOT MATCHED THEN
     INSERT VALUES(MyTempTable.MatchingField1, MyTempTable.UpdateField1)

Sin esa instruccion la pieza de T-SQL que produce el mismo efecto es:

UPDATE m
     SET UpdateField1 = t.UpdateField1
FROM MyTable m
     INNER JOIN MyTempTable t
          ON m.MatchingField1 = t.MatchingField1

INSERT INTO MyTable (MatchingField1, UpdateField1)
SELECT t.MatchingField1, t.UpdateField1
FROM MyTempTable t
     LEFT JOIN MyTable m
          ON m.MatchingField1 = t.MatchingField1
WHERE m.MatchingField1 IS NULL

A mi parecer era una instrccion muy util - y mas ahora que la estoy necesitando -, pero por alguna razon desconocida - no he encontrado referencia en Internet del porque ya no existe -, la instruccion desaparecio. Ahora si quiero usar esa misma instruccion en mi base de datos, solo me queda migrarme a Oracle, que la implemento desde la version 9i hace ya algunos años.

Subversion en Windows

Subversion es un sistema para el control de codigo fuente, es decir ayuda al manejo y control de control de archivos y directorios que son colocados en un repositorio que se encarga de registrar cada cambio realizado en ellos, con lo cual nos es posible recuperar una version anterior de algun archivo, o revisar y auditar la historia de cambios ocurridos, la forma en como Subversion maneja la historia es mediante la asignacion de un numero de revision en cada cambio atomico - es decir en cada cambio de uno o un grupo de archivos y/o directorios -.

El repositorio es posible accederlo de forma local (file://myrepositorio) o a traves de la red (svn://myrepositorio) y su mecanismo de seguridad nos ayuda a controlar quien tiene acceso al repositorio, ya sea de solo lectura o con permiso de escritura.

La forma en como el repositorio es organizado por omision, consiste es tres directorios que nos ayudan a llevar una organizacion de nuestro codigo fuente:

Trunk: Este directorio se utiliza para colocar nuestra version de codigo fuente mas actual, es donde generalmente se colocan los archivos de codigo fuente con los que estamos trabajando, por ende contiene la version mas actual de nuestro programa.

Branches: Hay ocaciones que es necesario realizar algunas pruebas con nuestro codigo - por ejemplo agregar funcionalidad que puede o no concretarse en la version final -, pero que no queremos que se vea afectada por el desarrollo normal de la aplicacion o bien, con nuestra pruebas no queremos afectar el desarrollo normal de la aplicacion, en esos casos podemos hacer una copia desde el Trunk para nuestra copia de trabajo, despues si los cambios realizados en nuestra "branch" nos satisface, podemos sincronizarlos con el Trunk o viceversa, podemos sincronizar cambios desde el Trunk con nuestro "branch".

Tags: Finalmente cuando liberamos alguna version de nuestra aplicacion, hacemos una copia del codigo fuente del Trunk que compone nuestra version de la aplicacion y la copiamos al directorio Tags, de esa forma podemos identificar plenamente el codigo fuente del cual se compilo una version especifica de nuestra aplicacion, mientras que en Trunk se puede continuar con el desarrollo de la proxima version.

Repositorio
-------> Trunk
----------------> Miprograma ( <- lugar donde ocurren los cambios mas actuales a nuestro codigo fuente )
-------> Branches
----------------> Miprograma_Mario_Prueba ( <- Copia de alguna version del Trunk para pruebas personales )
-------> Tags
----------------> Miprograma_V1.0 ( <- Copia del Trunk del codigo que compone la version 1.0 )
----------------> Miprograma_V1.1 ( <- Copia del Trunk del codigo que compone la version 1.1 )

Para trabajar con el codigo fuente del repositorio, es necesario realizar una copia, por ejemplo del Trunk, a nuestro disco duro local, la cual permanece bajo el control de Subversion, en esta copia podemos realizar nuestros cambios, y cuando esten completos, estos se envian al servidor de Subversion para que se registren en el repositorio. Es imprtante mencionar que al realizar la copia local, los archivos no tienen candado que limiten a otros programadores copiar los mismo archivos a sus pcs, lo cual permite a mas de un programador trabajar con los mismos archivos almismo tiempo.

Si bien esto es una gran ventaja, tambien esta propenso a conflictos, por ejemplo si dos programadores copian el mismo archivo del Trunk a sus disco duro, y los dos trabajan en cambios sobre el, pero uno de los programadores envia sus cambios al servidor de Subversion antes que el otro, el segundo va a recibir posiblemente un error indicando que el archivo fue modificado en el servidor, por lo cual es necesario sincronizar el nuevo archivo del servidor con la copia local. En algunos de los casos el mismo Subversion va a ser capaz auto sincronizar los cambios entre los dos archivos, en otras ocaciones el programador va a tener que indicarle a Subversion como sincronizar los cambios.

Si bien Subversion ayuda al manejo de codigo fuente en un equipo de desarrolladores, eso no implica que si se es un desarrollador unico no se pueda usar Subversion, definitivamente si se realiza desarrollo es importante el contar con algun tipo de control de codigo fuente, que nos ayude a manejar el codigo, a organizarlo, a comentar y poder revisar cambios realizados, y sobre todo que nos permita "regresar en el tiempo" y rescatar, si se requiere, el codigo fuente como estaba antes de algun cambio que causo algun problema.

La siguiente guia de como instalar Subversion en Windows la tome y la traduje de aqui.

Obtener los programas necesarios

  • Es necesario descargar la version mas reciente de Subversion para Windows
  • Para configurar que Subversion se ejecute como un servicio en Windows es necesario descargar este archivo.
  • Finalmente y de manera opcional podemos descargar una herramienta grafica que nos ayude a manejar el repositorio, una de ellas puede ser TortoiseSVN que se integral al Windows Explorer o Ankhsvn que se integra al IDE de Visual Studio

Instalar Subversion

Solo es necesario ejecutar el instalador y listo, adicionalmente va a ser necesario agregar el directorio de instalacion a nuestra variable de ambiente PATH y opcionalmente configurar notepad u otro editor de texto como el editor por omision de Subversion.

Para agregar el path de Subversion a la variable de ambiente PATH solo es necesario agregar la linea %programfiles%\subversion\bin

Para indicar que el notepad va a ser el editor por omision de Subversion es necesario agregar la variable de ambiente SVN_EDITOR apuntandola a c:\windows\notepad.exe

 Creando un repositorio

Para crear un repositorio en una ventana de MS-DOS ejecutamos el siguiente comando

svnadmin create "c:\Documents and Settings\Subversion Repository"

Despues es necesario modificar nuestro archivo /conf/svnserve.conf para indicar que usuarios anonimos pueder ver el codigo fuente, solo usuarios autentificados pueden realizar cambios y que nuestro archivo de seguridad se va a llamar passwd.

[general]
anon-access = read
auth-access = write
password-db = passwd

En el archivo /conf/passwd damos de alta a los usuarios y sus password de la siguiente forma:

[users]
harry = harryssecret
sally = sallyssecret

Nota: El directorio conf se encuentra dentro del directorio que creamos para nuestro repositorio en nuestro caso fue: "c:\Documents and Settings\Subversion Repository"


Probar que nuestro repositorio trabaja


Para poder probar nuestro repositorio es necesario iniciar el servidor de Subversion para esto ejecutamos la siguiente instruccion desde una ventana de MS-DOS

svnserve --daemon --root "C:\Documents and Settings\Subversion Repository"

Despues creamos un directorio en nuestro repositorio

svn mkdir svn://localhost/trunk/myproject

Una ventana de notepad aparecera, esta ventana ponemos algun comentario que nos ayude a recordar el porque del cambio en el repositorio, en nuestro caso del porque de la creacion del directorio. Estos comentarios son importantes ya que quedan relacionados con los cambios realizados en el repositorio y son de gran utilidad cuando se revisa el historia del cambios ya que nos ayudan a comprender el porque de los mismos.


Hay que colocar nuestro comentario y guardar el archivo de texto con el nombre por omision.


Acto seguido se nos va a preguntar por nuestras credenciales de Subversion

Authentication realm:  0f1a8b11-d50b-344d-9dc7-0d9ba12e22df
Password for 'Administrator': *********
Authentication realm: 0f1a8b11-d50b-344d-9dc7-0d9ba12e22df
Username: sally
Password for 'sally': ************

Committed revision 1.

Una vez que las proporcionemos vamos a ver el mensaje Committed revision 1, el cual indica que nuestro cambio fue guardado con el numero de revision 1.


Iniciar el servidor de Subversion como un servicio de Windows


Para detener nuestro servidor de Subversion, en la ventana de MS-DOS donde se esta ejecutando es necesario presionar CTRL+C, despues hay que copiar el archivo SNVService.exe descargado de aqui en el directorio de instalacion de Subversion subversion\bin, finalmente hay que configurar el servicio para que apunte a nuestro repositorio y se inicie automaticamente con el siguiente comando

svnservice -install --daemon --root "C:\Documents and Settings\Subversion Repository"
sc config svnservice start= auto
net start svnservice

Lo unico que resta es probar que nuestro servicio funciona con el siguiente comando

svn ls svn://localhost/trunk

El cual nos debe de mostra nuestro directorio myproject que creamos anteriormente.


Herramientas graficas para el manejo del repositorio


TortoiseSNV se integra al shell de Windows Explorer, permitiendonos manejar de forma grafica el repositorio de SVN. Por cierto aqui hay informacion de como integrar TortoiseSVN dentro del IDE de Visual Studio




Ankhsvn es otra herramientra grafica que se integra al IDE de Visual Studio, y tambien permite el manejo grafico de repositorio.




Recursos adicionales


Como recursos adicionales para conocer mas acerca de subversion, esta disponible el libro gratuito "Version Control with Subversion". El sitio de TortoiseSVN tambien tiene informacion interesante.


Conclusion


Como mencione anteriormente no importa si se es un equipo de programadores o si se es un programador unico, es una buena practica el contar con un control de codigo fuente. El lo personal utilizo Subversion desde hace 2 años y me ha sido de gran utilidad cuando me ha sido necesario investigar cambios realizados en el pasado, o para mantener el codigo de mi version estable de un programa, mientras cuento con otra copia del codigo fuente de la version sobre la cual estoy trabajando.

Nokia 770 Internet Tablet

Ya hace una semana que compre un Nokia 770 Internet Tablet, el cual es un PDA que corre Linux.

El PDA es realmente pequeño (141 x 79 x 19 mm) y pesa 230 g; cuenta con un display de alta resolucion de 800 x 480 con 65, 536 colores.

Tiene conectividad Wi-Fi y Bluetooth, y cuenta con una serie de programas que me permiten navegar en Internet, Mensajeria Instantea, Voz sobre IP, Radio por Internet, reproductor video, reproductor de archivos de audio, block de notas, lector de PDF y correo electronico. Los metodos de entrada son a traves de su pantalla tactil, ya sea mediante el reconocimiento de escritura o con el teclado en pantalla.

De fabrica el Nokia 770 viene con los programas necesarios para empezar a trabajar con el, pero dada su naturaleza de que ejecuta Linux y que el Internet Tablet OS - Linux y ambiente grafico personalizado para el 770 - Nokia lo tiene liberado como open source, existe una comunidad de programadores que estan creando aplicaciones nuevas y portando existentes para que puedan ejecutarse en el. De hecho existe un listado "semi oficial" de las aplicaciones disponibles en este catalogo, ademas de que Nokia ofrece hospedaje para el codigo fuente de aplicaciones en su garage - muy a la sourceforge -.

Tanto en el catalogo como en el garage existen una gran cantidad de aplicaciones de todo tipo; ademas con la ayuda de Google, es posible encontrar aplicaciones adicionales disponibles no listadas en el sitio de Nokia.

Ayer instale el ambiente de prueba y compilacion de aplicaciones para el Nokia 770, espero poder tener algo de tiempo libre para desarrollar algo, aunque sea sencillo. Es posible desarrollar usando C, C++ y Phyton, existe soporte para Mono pero solo para aplicaciones en la version IT2005 del SO, para la version actual IT2006 del SO, se necesita algo de trabajo todavia para que funcione correctamente.

Actualizacion:
Como informacion adicional sobre el Nokia 770 se me paso comentar que en general me gusta la facilidad de uso, el que exista una lista importante de aplicaciones que se pueden cargar de forma sencilla, pero tambien encuentro los siguientes inconvenietes, algunos de ellos ya existe trabajo en proceso para solucionarlos, en otros no esta claro cual es su futuro, por ejemplo:

  • Utiliza Opera como navegador de Internet pero no soporta "tabs" para abrir nuevas sesiones - como Firefox -, algunos sitios que hacen uso de AJAX no funcionan; ya hay gente trabajando en portar Minimo de Mozilla, el cual si soporta "tabs" y aunque no lo he probado quiero pensar que tiene mejor soporte para AJAX.
  • Aunque soporta contenido flash, cuenta con la version 6.0, obviamente videos de sitios como Youtube y Google Video no se pueden ver, al parecer Macromedia esta cerca de poder liberar Flash 9.0 para Linux, con un poco de suerte en un futuro proximo se podria actualizar la version de flash del Nokia.
  • El cliente de email es malisimo, pero ya existe trabajo en un nuevo cliente llamado Modest.
  • No reproduce audio ni video en formato Windows Media, asi que se necesita convertirlo a algun otro formato compatible antes de poder pasarlo al Nokia, aqui la unica solucion viable es licenciar los codecs de Microsoft.

Día mundial de software libre

Este 16 de septiembre se va a llevar a cabo el dia mundial del software libre, y Tijuana no es la excepcion. El evento esta siendo organizado por Linux Baja en la sala de lecturas del Centro Cultural Tijuana de 2pm a 8pm.

Los temas que se van a presentar son:

  • 2:00 PM – 2:30 PM Registro
  • 2:30 PM – 3:00 PM Conferencia “¿Qué es el Software Libre?”
  • 3:00 PM – 3:50 PM Conferencia “Ventajas del Software Libre”
  • 4:00 PM – 4:50 PM Conferencia “Software Libre para Windows: The Open CD”
  • 5:00 PM – 5:50 PM Conferencia “Integración de soluciones empresariales utilizando Software Libre”
  • 6:00 PM – 6:50 PM Conferencia “GPL: Licenciamiento en el Software Libre”
  • 7:00 PM – 7:50 PM Panel Software Libre en la vida diaria

Andres Manuel, enfermo de poder

Ante los ultimos acontecimientos en relacion a las elecciones presidenciales del 2 de Julio, la unica conclusion que me queda acerca de la actitud Andres Manuel Lopez, es que esta enfermo de poder y quiere la presidencia a costa de todo y de todos.

Al margen de que si hubo fraude, ya sea "cibernetico", a la "antigϋita", "embarazo" de urnas, el algoritmo matematico, la corrupcion de los representantes de casilla de la coalicion; Andres Manuel quiere la presidencia para el y nada mas para el, no va a aceptar de ninguna forma que otra persona mas sea presidente si no es el.

Por que realizo tal aseveracion?, bueno en un post anterior ya mencione que ha descalificado a todo aquel, institucion o persona, que no crea que Andres Manuel gano las elecciones, solo restaban los ministros de la corte que estan decidiendo sobre las incorformidades presentadas por la Coalicion por el de bien de todos, pues bien ese momento ya llego, como al parecer la corte no va a invalidar la eleccion y tampoco le va a dar el triunfo a Andres Manuel, se refirio a ellos de la siguiente forma:

"Ellos, que aparentan ser gente de bien, la verdad es que son unos reverendos ladrones. Nos quieren despojar, nos quieren robar la Presidencia"
Articulo diario La jornada

Ademas agregro que - en la misma nota -:

''porque no soy cacique ni líder moral, sino dirigente de mujeres y hombres libres y con criterio''

O sea que si yo no lo apoyo, por lo tanto a mi no me liderea, eso indica que no soy libre - de pensamiento y/o accion -, ademas no tengo criterio... y lo mismo pasa con la demas gente que no lo apoya?, si bien es cierto Andres Manuel es apoyado por los llamados Intelectuales del pais - y no lo digo de forma irrespetuosa -, asi como por personas que creen en el; tambien es "apoyado" por una orde de borregos que no tienen ni la menor idea de que es lo que hacen ni porque, solo les dijeron que tenian que apoyar, gritar y estar al pendiente de los pases de lista.

A pocos de dias de que el Tribunal ratifique a Felipe Calderon como ganador de la eleccion, Andres Manuel asevero que no va a aceptar el resultado y que la resistencia continuara, pero no solo eso, se va a autoproclamar presidente de Mexico !!

En una entrevista publicada en Le Monde (Frances, Ingles) , Andres Manuel indica que no va aceptar otro resultado que no le sea favorable - como siempre ha sido con el, sin importar si esta mal, equivocado o no -.

En la entrevista comenta que de acuerdo al articulo 39 de la Constitucion, el pueblo tiene el derecho inalienable de cambiar al gobierno si este no vela por los intereses de los gobernados, por tal motivo comenta que no va de ninguna manera a reconocer al gobierno de Felipe Calderon, y que en base a este articulo a convocado a una asamblea constituyente para el proximo 16 de Septiembre.

Segun el, la asamblea constituyente estaria conformada por delegados de todas la regiones del pais, por lo tanto es una asamblea representativa, la cual en un acto republicano tiene la decision de nombrar a quien seria el legitimo presidente de Mexico, por tal aseveracion implica que habria una disolucion de los poderes legislativo, judicial y ejecutivo, ya que esta asamblea decidiria por ellos y por nosotros los Mexicanos... pero esperenme un momento si esta asamblea es convocada por Andres Manuel y la Coalicion por el bien de todos, entonces los delegados que supuestamente nos representarian son afines a Andres Manuel ... mmmm dejenme adivinar, si eligen al legitimo presidente de Mexico, esta eleccion no caeria en ... Felipe?, Madrazo?, Patricia?... no !, seria la mismisisima Excelencia, Emperador de Mexico, Don Andres Manuel Lopez Obrador !

Con esto nos dejan fuera de la jugada a los que votamos por otra opcion, llamese Alianza, Convergencia, PAN, PRI, o los que invalidaron su voto, votando por el Dr. Simi, Batman o algun otro personaje.

Ahora si lo puedo decir con todas sus letras, Andres Manuel Lopez Obrador esta enfermo de poder.

Ante tal perspectiva, quizas lo mejor seria que el tribunal invalide la eleccion, el poder legislativo nombre un presidente interino, y que Andres Manuel se espere 2 años para otra eleccion, haber si realmente recibe el apoyo de dice que tiene. O mejor aun que invaliden la eleccion y que no se les permita registrarse a los mismo candidatos a ver que hace Andres Manuel - aunque esto no es posible de acuerdo a la ley -.

ADO.NET vNext CTP

Hace unos dias Microsoft libero la primera version de prueba del ADO.NET vNext, el cual es una herramienta que ayuda a mapear entre el modelo de base de datos relacional al modelo orientado a objetos, lo cual ayuda a poder abstraer el modelo de la base de datos del diseño y programacion de la aplicacion.

ADO.NET vNext consiste en el ADO.NET Entity Framework y la integracion del mismo con LINQ. Con el ADO.NET Entity Framework podemos hacer uso del Entity Data Model para mapear la estructura de la base de datos a nuestro diseño orientado a objetos, de esta forma podemos trabajar en nuestra aplicacion puramente con objetos, y cuando nos sea necesario sincronizar nuestros objetos con la informacion de la base de datos (Actualizar, Insert, Eliminar) el ADO.NET Entity Framework de manera transparente y gracias al mapa creado con con el Entity Data Model se encargara de generar, enviar y ejecutar las instrucciones de SQL necesarias para realizar las operaciones requeridas.

Con ADO.NET Entity Framework se introduce una variante del SQL denominada Entity SQL - o simplemente eSQL - que nos permite escribir - si es que realmente requerimos - SQL para gestionar nuestros objetos, en lugar de SQL para gestionar datos - tal y como se hace actualmente en nuestras aplicaciones -. Otra forma de gestion de nuestros objetos es utilizando LINQ ya sea para gestionar nuestros objetos o Datasets.

Aqui dejo unos links intersantes que explican a detalle ADO.NET vNext

Community Serve 2.1

Como mencione en días pasados instale el Community Server para correr este weblog, al principio todo parecía bien, pero luego comenzaron los problemas.

El problema, y que esta relacionado y no, es que en los servicios proveedores de hosting se asigna un application pool de IIS por cada cuenta, este application pool esta configurado de manera que si no existe ninguna solicitud de paginas en un determinado tiempo, el application pool finaliza su ejecución, esto se hace con la finalidad de recuperar y administrar mejor los recursos del servidor, el problema aquí esta que cuando esto sucede y después se solicita alguna pagina, el CS tarda mucho en responder, debido a que el tiempo de inicialiacion del CS es muy grande - según se explica en el sitio del CS, tarda en inicializar porque crea cache de paginas y controles en memoria a partir de los datos de la bases de datos -, dando la impresión de que el sitio no esta respondiendo. Por tal motivo hace un par de días actualice el CS a la versión 2.1, la cual incluye correcciones a bugs, algunas mejoras de perfomance y de ejecución sobre ambientes "Medium Trust" - el cual es el modo en que si no todos, la mayoría de proveedores de hosting compartido utilizan -, ademas de la adición de nuevos controles de contenido y algunos temas para CS.

Aparentemente la situación se ha mejorado, aunque el sitio sigue con algunos problemas, como excepciones generadas por el CS, algunas de ellas ya las reporte, espero que exista alguna solución Una funcionalidad que me ha sido de gran ayuda para investigar y estar al pendiente de los errores generados en CS, a sido la infraestructura de Health Monitoring incluida en ASP.NET 2.0, de la cual quisiera comentar en un post posterior.

Por cierto estoy usando para escribir este post, y enviarlo a mi servidor de CS, la nueva herramienta de Microsoft Windows Live Writer, porque Gabriel Flores comenta sobre ella.

Ubuntu 6.06

El pasado 1ro de Junio se libero la nueva versión del distro de Linux Ubuntu 6.06, así que este fin de semana pasado me di a la tarea de descargar el iso e instalarlo en mi pc AMD64.

La instalación fue de manera gráfica, rápida - mucha mas rápida que una instalación de Windows - y sencilla, lo mas "complicado" - si se puede llamar así - fue particionar mi disco, pero con la herramienta visual fue fácil

Alrededor de 15 a 20 mins después de iniciar la instalación, esta finalizo y entre a una sesión de Ubuntu, en donde encontré 3 cosas que me gustaron mucho de esta nueva versión:

  1. El proceso de inicio - boot - realmente fue muy rápido, solo tardo unos pocos segundos, cuando ya me estaba pidiendo mi usuario y password para iniciar sesión.
  2. La interfase gráfica esta muy bien trabajada, y sobre todo muy responsiva, realmentemente se siente rápida en comparación a versiones anteriores.
  3. Mi tarjeta inhalambrica de red la reconoció automáticamente, esto se debe a que ya existen drivers nativos para ella, por tal razón ya no tuve que usar el ndiswrapper y los drivers de Windows para hacerla funcionar.

Después de iniciar mi sesión fue necesario realizar algunos pasos adicionales para tener un sistema completo con todos los programas y herramientas que necesito:

  1. Instale una versión del kernel especifica para mi CPU AMD64, ya que la instalación solo instalo el kernel para AMD genérico, con la ayuda de synaptic, fue solo cuestión de seleccionar el paquete correcto y listo.
  2. Instale el programa Network Manager, el cual identifica y permite conectarse a redes inhalambricas muy a la manera en como se hace en Windows.
  3. Con la ayuda de la aplicación Add/Remove instale programas para desarrollo, bases de datos, editor gráficos, etc... todo lo que se necesita para tener un sistema funcional. Add/remove realmente hace esta tarea muy trivial, ya que solo se selecciona la aplicación a instalar y listo.
  4. El ultimo paso fue el instalar soporte para multimedia - MP3, DVD, etc. -, tarea que también es muy sencilla con la ayuda de al herramienta Automatix.


En general Ubuntu 6.06 - dentro de lo poco que lo utilice este fin de semana -, me parece que supero pero de forma muy importante a versiones anteriores, aunque bueno esto realmente se debe a que a partir de esta versión, Ubuntu cuenta con soporte corporativo, para quienes así lo requieran.

PrintDialog y AMD64

Realizando unos cambios a una aplicación de uno de mis clientes, la cual programe inicialmente en .NET 1.1, decidí probar que tan difícil seria convertirla a .NET 2.0 manteniendo el código original - o con el mínimo de cambios -, la duda venia básicamente de que la aplicación es Windows Forms y varios de los controles de .NET 1.1 cambiaron de manera importante en .NET 2.0; el asistente de actualización de finalizo de manera exitosa y todo parecía funcionar bien, hasta que llegue al momento de realizar una prueba de impresión, el dialogo donde se elijen las propiedades de la impresora no se mostraba ... revise el código y todo se veía bien, pero el dialogo seguía sin mostrarse y el valor DialogResult siempre regresaba falso.

Pues resulta que mi notebook tiene un procesador AMD64 y de acuerdo con la documentación el PrintDialog "puede" no funcionar en este tipo de procesadores a menos de que la propiedad UseEXDialog se coloque en verdadero, aun y cuando la documentación dice que la propiedad por omisión tiene como valor verdadero.

Después de este pequeño cambio la aplicación funciono como se esperaba.

Codeplex y RedGate Sql Prompt

Desde la semana pasada Microsof revelo el sitio Codeplex, el cual esta destinado a ser un ambiente para el desarrollo de aplicación de código fuente, ofreciendo funcionalidad para el manejo del proyecto y el código fuente del mismo.

Codeplex esta basado en el Team Foundation Server, y es gratuito. Al parecer Codeplex pretende reemplazar a Gotdotnet workspaces. Como parte del apoyo a Codeplex Microsoft libero de forma gratuita el cliente Team Explorer, el cual permite conectividad con el Team Foundation Server, y por tanto con Codeplex; de forma integral con el Visual Studio 2005.

Por otro lado Redgate libero de forma gratuita la herramienta Sql Prompt, la cual precisamente agrega la funcionalidad de intellisense a las herramientas del SQL de microsoft, llámese query analizer, SQL management studio y Visual Studio 2005.

Sql Prompt es gratuito de descargar e incluye toda la funcionalidad del producto, aunque esta promoción solo es valida hasta el 1ro de Septiembre, quien lo descargue antes de esta fecha lo va a poder seguir utilizando sin restricción alguna después del 1ro de Septiembre.

ASP.NET Development server

En la version 2005 del VSNET cuando se desarrolla bajo ASP.NET ya no se requiere de tener corriendo el servicio de IIS, ya que el VSNET utiliza una herramienta llamada ASP.NET development server para ejecutar el sitio Web en desarrollo.

Este Development server al ser ejecutado se le asigna un puerto aleatorio en donde nuestra aplicación va a responder al ser accedida por medio de un navegador, la dirección IP del server siempre va a apuntar al LocalHost, ya que el servidor solo atiende a llamados locales.

Es posible hacer uso del Development server fuera del ambiente de desarrollo del VSNET, por ejemplo para ejecutar alguna aplicacion ASP.NET de forma temporal o una pequeña prueba, sin necesidad de tener que configurar el IIS. Para ejecutarlo, solo hay que copiar la siguiente linea dentro de un nuevo archivo .bat o .cmd y colocar el archivo dentro de nuestro PATH - por ejemplo en el directorio de Windows -:

start /B %FrameworkDir%\%FrameworkVersion%\webdev.webserver.exe /port:%1 /path:%CD%  /vpath:/

La forma de llamarlo es mediante una consola de MS-DOS dentro del directorio que contiene los archivos .aspx, y como parametro le pasamos el número de un puerto TCP libre - en mi caso mi archivo bat se llama webdev.bat:

webdev 6897

Con esto se va a iniciar una sesión del Development server, a la cual nos podemos conectar con nuestro navegador de web.

Service Pack 1 SQL 2005

Apenas la semana pasada se libero el service pack 1 para SQL 2005, el cual trae una serie de mejoras relacionadas con la compatibilidad con SQL 2000, ademas de una serie de correcciones a bugs, algo curioso en este service pack, es que me da la impresión que la lista de mejoras es mayor que la lista de bugs corregidos.

Por cierto el problema que reporte anteriormente sobre que los objetos SQL-SMO generaban scripts incompatibles con SQL 2000 ya quedo corregido.

Innovatech 2006, actualizado

Hace unos días mencione sobre el evento Innovatech 2006 a llevarse a cabo en el ITT, pues desde esa fecha al día de hoy han surgido cambios sobre el evento, uno de ellos es que se mueve de principios de Mayo a finales del mismo mes, ademas de extenderse de solo conferencias a: conferencias, foros, visitas industriales y talleres, para pasar de ser un evento de 2 días a 4, del 29 de Mayo al 1ro de Junio.

Por cierto el sitio ya fue actualizado, y esta en proceso de contener la información que aquí les comento, ademas de que el registro ya esta abierto.


Probando Linux con Cosmopod

Cosmpod es un servicio gratuito que permite probar linux sin instalar nada en la pc, bueno casi nada, solo el cliente NX que mide 4Mb y que esta disponible desde la pagina de Cosmopod.

Por medio del cliente se realiza una conexión remota a el servidor de Cosmopod donde se inicia una sesión de nuestro propio escritorio Linux – solo soporta KDE -, el cual cuenta con todas la herramientas de escrito como OpenOffice, cliente de mensajería, correo electrónico, organizadores, juegos y acceso a Internet.

Ademas de permitir probar Linux sin crear dobles boots, usar live cds o instalar maquinas virtuales, el servicio ofrece espacio limitado de 1GB para guardar documentos o archivos, lo cual permite personalizar nuestra sesión y que los cambios queden almacenados cada vez que regresamos.

Yo me conecto con un DSL a 256 kbps y al respuesta del escritorio remoto es buena – no como en mi pc local, pero muy aceptable -.

IIS falla al iniciar - Skype

El día de hoy trate de iniciar el IIS desde el inetmgr, pero cada vez que trataba de iniciar el Website default, me mostraba el siguiente error y no se iniciaba “The process cannot access the file because it is being used by another process”, la ultima vez que había iniciado el IIS en mi pc fue apenas la semana pasada y en esa ocasión funciono sin problemas, trate de recordar que cambios o nuevo software había instalado recientemente, pero lo único que me vino a la mente fueron unas actualizaciones criticas para Windows, nada fuera de los normal.

En mi primer intento por solucionar el problema cambie el puerto de servicio Web del 80 al 8080 y funciono, el servicio pudo iniciar, lo cual se me hizo extraño, algo estaba ocupando el puerto 80, corrí el TaskManager para ver que procesos estaba ejecutando y ver si encontraba algo raro pero nada, así que abrí una consola de MS-DOS y ejecute el comando: netstat -oan para que me mostrara el numero de proceso que estaba conectado al puerto 80, después ejecute el comando: tasklist, donde ya con el PID del proceso conectado al puerto pude encontrar al culpable: Skype!

Al parecer resulta que si se esta detrás de un Firewall con el puerto de Skype bloqueado, este por omisión se conecta del puerto 80 y/o 443, situación que “chocaba” con el IIS y aunque el Skype lo tengo desde hace tiempo, creo que nunca lo había tenido activo mientras trabajaba con el IIS.

La solución fue sencilla, configurar mi Firewall para que le permitiera a Skype conectarse por algún otro puerto, deshabilitar la opción en Skype para usar el puerto 80; finalmente después de esto, pude levantar el servicio del IIS.

OracleXE

Desde finales del año pasado comente acerca de la inminente liberación de OracleXE (Oracle Express), la cual es una versión reducida de la base de datos Oracle, y que cuenta con licencia de producción, pues bueno, hace algunas semanas atrás salio la versión final de OracleXE, y hasta hace algunos días tuve la oportunidad de instalar la nueva versión y probarla.

OracleXE es una buena opción para esos proyecto pequeños que requieran de una base de datos segura y confiable y que ademas se pueda ejecutar en ambiente Windows o Linux, y aunque tiene algunas limitantes como el máximo de memoria que puede utilizar o el tamaño de los datafiles que se pueden crear, es muy simple el migrarse a una versión de paga de Oracle.


La instalación y configuración del OracleXE, es simplemente sencilla, ademas para la configuración y administración, Oracle provee de una aplicación web con la que se puede administrar cualquier área de la base de datos e inclusive es posible realizar consultas desde este administrador web desde código o utilizar la funcionalidad de "drag and drop" para crear consultas de forma visual.

Ademas de la liberarnos gratuita de OracleXE, Oracle libero el Oracle SQL Developer, el cual es una herramienta IDE gratuita para trabajar las bases de datos Oracle, una características interesantes que ofrece el SQL Developer es el soporte a autocompletar los scripts con la información de los objetos de la base de datos, ademas de la posibilidad de depurar el código de los procedimientos o paquetes paso por paso, teniendo visibilidad de las variables locales.


Definitivamente OracleXE y SQL Developer son una buena opcion para quien tengan el interés de probar la base de datos de Oracle, contrario a la idea general que se tiene de Oracle, la instalación y configuración de ambos productos es muy sencilla - solo el asistente de instalación -.


Por ultimo solo deseo hacer notar que OracleXE se instala con la configuración de utilizar alrededor de 190 megas de memoria RAM, pero con el asisten es sencillo disminuir los valores del SGA y PGA para que utilice una menor cantidad de memoria, ademas los servicios de la base de datos y el listener de la misma se activan para iniciar encender la pc, pero con solo ir al área de servicios en el control panel es posible cambiar esta configuración para que no se inicie automáticamente.

Mono Windows Forms y Monodevelop

El dia de hoy Miguel de Icaza publico un post interesante donde habla sobre el soporte de Mono para Windows Forms, y la experiencia de portar un aplicación Windows a Linux, en donde el menciona solo algunos cambios triviales requeridos para realizar la migración, algunos de ellos ya comente yo previamente el el siguiente articulo hace tiempo: Mono, lleva el .Net Framework a plataformas no-Windows

Windows Forms bajo Mono va tomando forma y si se tiene cuidado en observar que la aplicación no este completamente ligada a Windows – uso de servicios solo disponibles en Windows o librerías que solo se ejecutan bajo Windows -, va a ser muy sencillo el poder crear clientes .NET que se puedan ejecutar en diferentes plataformas.

Otra de las cosas que Miguel menciona en el post es el soporte de Monodevelop para el diseño gráfico integrado para la creación de formas GTK#, asi como el insipiente soporte para el desarrollo gráfico de aplicaciones ASP.NET.