lunes, julio 16, 2007

Que paso con Kuali?

Con el motivo de adelantar materias, este verano estoy llevando "Fundamentos de Ingeniaria de Software" en el ITT; buena parte de la materia se enfoca en asegurar la calidad del software implementando algunos de los diferentes procesos que nos permitan medir y asegurar la calidad; debido a eso recorde que en Mexico existe una norma Mexicana para el aseguramiento del software, esta norma comunmente se conoce como Moprosoft.

Recuerdo que cuando la norma aun estaba en desarrollo, se hizo publicidad a que se estaba desarrollando una herramienta de software que iba a ayudar a implementar y manejar Moprosoft, esta herramienta se llamaba Kuali.

Me puse a buscar en Internet Kuali para ver como habia evolucionado desde la ultima vez que la habia utilizado, pero por alguna razon ya no existe. Kuali era una herramienta para Windows desarrollada en C#, por la empresa CrossHorizons bajo encargo de Microsoft / Secretaria de Economia, ambas aserciones las realizo porque es lo que recuerdo de Kuali y porque los ensamblados todos iniciaban su nombre con CrossHorizons; y en las propiedades de los mismos, se decia que los derechos estaban reservados a la SE.

Pero la pregunta sigue siendo, que paso con Kuali?, el cual se suponia que iba a ser un programa Open Source, nunca se dio eso, y el sitio, foros y binario no esta disponible.

De lo poco que pude encontrar al respecto es un post de Dan'l Lewin, VP Corporativo de Microsoft donde se dice lo siguiente:
"Through this project, we developed KUALI, a free tool to help the local industry implement MOPROSOFT, Mexico’s national software processes standard and preferred methodology for developing software"
Que ellos desarrollaron una herramienta libre llamada Kuali, para ayudar a la industria local a estandarizar el proceso y la metodologia de desarrollo de software, encargo que Microsoft realizo a CrossHorizons. En el sitio de CrossHorizons no hay referencia, pero en sus blogs, Beto Bedolla tiene 2 referencias de Kuali, una de ellas dice:
"Lo cual me recordó que hace ya más de un año, empezamos a usar VSTS para el proyecto Kuali …"
Pero no hay mas referencia, los foros de Software.net.mx no funcionan mas, solo muestras una pagina de Sharepoint, las ligas a Kuali tampoco.

Por ultimo, en la pagina de la Secretaria de Economia hay referencias a que en el 2005 se celebro un convenio para promocionar Kuali:
  • C0553/2005-
  • 01/11/2005
  • Conv. De Adhesión a la Addenda al Conv. De Colab.
  • Esta Secretaría, Asociación Mexicana de la Industria de Tecnologías de la Información, A.C. Y Microsoft México, S. De R.L. De C.V.
  • Apoyar el proyecto denominado "DevDays "Kuali" 2005"
  • Dirección General de Comercio Interior y Economía Digital
  • A partir de su firma hasta el 31 de diciembre de 2005 en el Distrito Federal el 26 de septiembre de 2005
  • $266,167.00
  • $798,502.00
  • $1,064,669.00
  • Reglas de Operación del Prosoft


Promocion que si se llevo a cabo en los DevDays de Microsoft, pero aun y con todo esto, Kuali nunca vio la luz, asi que repito la pregunta, alguien sabe que paso con Kuali?

domingo, julio 15, 2007

Mas eyecandy para Linux, Avant Window Manager y Launch Box

Desde hace unas semanas que compre mi MacBook, hay una aplicacion que me parece muy util, esta es Quicksilver, ya que con solo algunas teclas te permite lanzar cualquier aplicacion/documento en la PC; buscando una herramienta similar, pero para Linux, me encontre con Gnome Launch Box, la cual funciona exactamente igual.

La forma de instalar Gnome Launch Box en Ubuntu es de la siguiente manera en una terminal:
$ sudo apt-get install gnome-launch-box
Despues en el menu de Sistema > Preferencias > Sesiones, se agrega una nueva sesion con los siguientes valores:








Despues si tenemos Compiz o Beryl es necesario registrar la combinacion de teclas que nos permiten usar Gnome Launch Box, esta combinacion es: Ctrl + Space, en mi caso tengo Compiz Fusion, asi que en la pantalla de configuracion elegi "General Option", despues me fue al tab de "Action", ahi expandi el area de "Commands" y en uno de los comandos que tenga el valor "Disabled" hay que registrar la combinacion de teclas Ctrl+Space.













Una vez hecho esto y despues de reinciar la sesion vamos a poder activar Gnome Launch Box con la combinacion de teclas antes mencionada, empezamos a teclear las primeras letras del programa que buscamos y Gnome Launch Box nos va a mostrar el listado de programas cuyo nombre contiene las letras capturadas, y las opciones que tenemos, por ejemplo ejecucion.

La otra aplicacion de la que quiero hablar es un manejador de las ventanas abiertas en la sesion, el cual corre con los manejadores como Beryl o Compiz y que funciona de forma parecida al Dock de OSX, Avant Window Navigator.

Aunque de igual forma es posible instalarlo desde alguno de los repositorios que lo tienen ya empaquetado, el dia de ayer el codigo sufrio algunas actualizaciones que lo hacen mas atractivo, y todavia mas parecido al Dock de OSX, ya es posible mostrar el fondo de los iconos de las pantallas sobre una barra en 3D y con refleccion de los iconos sobre esta.

Por lo tanto mientras ese codigo llega a los repositorios es necesario bajar el codigo fuente y compilarlo para usar las nuevas caracteristicas, para eso seguimos los siguientes pasos desde una terminal:

$ svn co http://avant-window-navigator.googlecode.com/svn/trunk avant-window-navigator
$ cd avant-window-navigator
$ ./autogen.sh --prefix=/usr
$ make
$ sudo make install
Despues de eso hay que activarlo para que se ejecute automaticamente al iniciar nuestra sesion para esto en Sistema > Preferencias > Sesiones ingresamos los siguientes datos:










Como ultimo paso necesitamos configurar AWN para que muestre el efecto 3D y la reflexion, pero como es una funcionalidad nueva, no estapresente en la propiedades de AWN, por lo tanto desde una terminal ejecutamos el siguiente comando:
$ gconf-editor

En la ventana abierta navegamos a: /apps/avant-window-navigator/bar
y ahi modificamos los valores de las siguientes llaves: bar_angle = 40, bar_height = 42 e icon_offset = 15; reiniciamos nuestra sesion y listo.


miércoles, julio 11, 2007

Discos de XBox 360 rayados


Ultimamente he visto en varios sitios relacionados con la consola XBox 360 acerca de problemas en que la consola raya los discos de juegos, aparentemente Microsoft ha negado que la consola sea la culpable del hecho y culpa al mal uso de los usuarios de la misma.

En lo personal me paso unicamente una vez, con un disco nuevo, el cual tenia apenas 2 dias de haberlo comprado, al querer jugralo, la consola lo rachazaba y me marcaba que el disco no era valido, al momento de revisarlo me percate que toda la circunferencia en la parte externa del disco estaba totalmente rayada con una anchura de alrededor de 3 milimitros, al principio pense que habia sido mal uso del disco, pero si por algun error mio hubiese pasado, la rayadura no fuera tan perfecta.


Tome el disco y lo lleve a una tienda donde venden videojuegos, y ahi le quitaron la rayadura en cuestion de minutos, despues de eso el disco volvio a funcionar correctamente, no ha vuelto a suceder, ademas de tomar las siguientes precauciones:
  • No dejar ningun disco dentro de la consola cuando se vaya a apagar
  • Tratar de no mover la consola mientras esta prendida, por ejemplo para conectar algun dispositivo USB o el cargador de los controles
Despues de leer los reportes sobre discos rayados en foros y sitios relacionados a XBox, estoy 100% seguro que la consola fue la causante del disco que se me rayo.

Ahora debido a esta situacion Microsoft tiene un juicio en su contra al no responder de manera efectiva a esta situacion negandola.

Esto solamente se agrega a la lista de problemas como:

viernes, julio 06, 2007

Compiz Fusion

OpenComposition es el proyecto que unifica los desarrollo de Compiz y Beryl ambos manejadores de ventanas con efectos de 3D para Linux.

En los ultimos dias han salido algunos posts de como instalarlo desde un repositorio con paquetes para Ubuntu, pero el unico problema para mi con eso paquetes, es que solo existen para 32 bits y mi laptop corre en AMD64.

Buscando en el sitio de OpenComposition, me encontre con un script que ayuda a descargar el codigo fuente, compilarlo e instalarlo, el script se llama makefusion.

La forma de utilizar el script es la siguiente:
  • Una vez descargado, es necesario darle permisos de ejecucion desde una terminal, es mejor guardarlo en su propio directorio, por ejemplo compiz o fusion:
chmod +x makefusion
  • Hay algunas opciones de configuracion que las voy a dejar con los valores por omision, estas se refieren a la distribucion de Linux, la version de la distribucion, donde se va a instalar, que paquetes de fusion instalar, que plugins; en la pagina del script viene la informacion detallada, por lo pronto los valores por omision me son suficientes para Ubuntu Gutsy Gibbon
  • El siguiente paso consiste en descargar las librerias que necesarias para compilar Compiz Fusion, estas se descargan desde el repositorio de Ubuntu con el siguiente comando:
./makefusion packages
  • Despues de descargar lo necesario para compilarlo, bajamos el codigo fuente de Compiz Fusion, para esto es necesario contar con la instalacion del programa git (sudo apt-get install git-core) que nos permite acceder al repositorio de codigo fuente de compiz:
./makefusion clone
  • Finalmente lo compilamos y lo instalamos con el siguiente comando, algo importante a remarcar es que si deseamos actualizar Compiz Fusion a los ultimos cambios en el codigo, solo ejecutamos a partir del paso anterior y asi siempre lo podemos tener actualizado, aunque esto es una navaja de 2 filos, ya que se pueden probar rapidamente las mejoras, pero tambien es posible que algo deje de funcionar o falle.
./makefusion install
A partir de aqui desde la consola podemos ejecutar
ccsm
para configurarlo y despues ejecutar
compiz-manager &
para activarlo y disfrutar de los efectos.

Si queremos que se inicie cuando iniciamos sesion es necesario ir al menu de System > Preferences > Sessions, y en la ceja "Startup Programs" agregamos uno mas, como nombre podemos poner "Fusion Manager", en el comando ponemos "fusion-icon" y el comentario lo podemos dejar en blanco, presionamos Ok y cerramos la ventana de sesiones, con esto cada vez que iniciemos una sesion aparecera un icono en el area de notificaciones, con el cual podemos configurar las opciones de Fusion o bien habilitarlo o deshabilitarlo.

lunes, julio 02, 2007

VMWare Workstation 6 en Gutsy Gibbon

Instalando hoy el VMWare Workstation 6 en mi Gutsy Gibbon AMD64, fallo en la parte donde compila el modulo de soporte para redes, al parecer es un cambio en el API del kernel que trae Gutsy Gibbon.

make: Entering directory `/tmp/vmware-config3/vmnet-only'
make -C /lib/modules/2.6.22-6-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.22-6-generic'
CC [M] /tmp/vmware-config3/vmnet-only/driver.o
CC [M] /tmp/vmware-config3/vmnet-only/hub.o
CC [M] /tmp/vmware-config3/vmnet-only/userif.o
/tmp/vmware-config3/vmnet-only/userif.c: In function ‘VNetCopyDatagramToUser’:
/tmp/vmware-config3/vmnet-only/userif.c:630: error: ‘const struct sk_buff’ has no member named ‘h’
/tmp/vmware-config3/vmnet-only/userif.c:630: error: ‘const struct sk_buff’ has no member named ‘nh’
/tmp/vmware-config3/vmnet-only/userif.c:636: error: ‘const struct sk_buff’ has no member named ‘h’
make[2]: *** [/tmp/vmware-config3/vmnet-only/userif.o] Error 1
make[1]: *** [_module_/tmp/vmware-config3/vmnet-only] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.22-6-generic'
make: *** [vmnet.ko] Error 2
make: Leaving directory `/tmp/vmware-config3/vmnet-only'
Unable to build the vmnet module.

For more information on how to troubleshoot module-related problems, please
visit our Web site at "http://www.vmware.com/download/modules/modules.html" and
"http://www.vmware.com/support/reference/linux/prebuilt_modules_linux.html".


La forma de solucionar el problema se encuentra en este hilo del foro de VMWare donde basta con descargar el archivo vmnet.rar y copiarlo al directorio /usr/lib/vmware/modules/source (si es que ahi se realizao la instalacion del VMWare) y simplemente ejecutar nuevamente ejecutar el programa vmware-config.pl, y listo, el modulo se compila y es posible ejecutar nuestra maquina virtual con soporte para red.

jueves, junio 28, 2007

Ubuntu Gutsy Gibbon Tribe 2

El dia de hoy se ha liberado la segunda version de prueba de Ubuntu Gutsy Gibbon , al cual se llama Tribe 2, dentro de las cosas interesantes y nuevas que trae, se puede citar:
  • Gnome 2.19.4
  • Gnash, el cual es un player open source para archivos flash, el cual es compatible con archivos version 7 y 8, y comenta que el soporte para version 9 esta en proceso
  • Compiz fusion, que es la union de los proyectos Beryl y Compiz
  • Firefox 3 alfa, es la version de prueba del proxima version de Firefox
  • Restricted-manager, que ayuda a la instalcion de drivers no libres, o que aunque sean libres requieren de algun componente que no lo es, como por ejemplo en driver de las tarjetas de red Broadcomm - bcm43xx -, requiere de extraer el firmaware de la tarjeta para funcionar.
  • Ademas de habilitar nuevamente el reporteador de error ene el sistema
He estado utilizando de forma regular el Tribe1 desde que salio y en general no he tenido ningun problema y durante este tiempo he estado actualizando los paquetes conforme se van actualizando, por lo cual puedo decir que ahora estoy ejecutando Tribe2, y de igual forma nada que lamentar, todo funciona bien; esto es algo que llama la atencion, ya que antiormente en las versiones de prueba de Ubuntu, generalmente habia experimentado fallos que dejaban el sistema medio estable, pero con Gutsy la experiancia ha sido muy buena.

Por cirto a partir de dia de hoy aparezco sindicado en el sition Planeta Linux Mexico !!

miércoles, junio 27, 2007

La ley Antichapulín

La ley antichapulín es un tema muy "traído" ultimamente en el ámbito político de Baja California, y es como se le conoce popularmente al articulo 42 de la Constitución de Baja California, en donde se prohibe que cualquier funcionario publico que haya sido elegido por medio de una elección, abandone su puesto y se enrole en otra elección buscando "mejorar" su posición.

Esta Ley fue presentada al congreso de Baja California, fue presentada por la fracción priista en el año 2002 (o 2003 no lo recuerdo exactamente); en ese entonces el PRI comenzaba a ser oposición en el estado ya que el partido del gobernante era el PAN y que no solo controlaba la gobernatura, si no también la mayoría de los municipios - creo que Tecate ha sido el único que no ha sido gobernado por el PAN -; en aquel entonces y bajo este contexto el articulo 42 lo propuso el PRI para frenar a los políticos panistas "oportunistas" que brincaban de elección en elección para mejor su posición política, esta ley se aplico de forma incuestionable por 14años, hasta el día hoy.


El PRI y el PT en estas próximas elecciones haciendo caso omiso al articulo 42, presentaron candidatos para los siguientes puestos:
- Jorge Hank Rhon, candidato a Gobernador por la alianza PRI-PVEM-PEBC
- Mercedes Maciel Ortiz, candidata a Gobernadora por la alianza Convergencia-PT
- Eligio Valencia Roque, candidato regidor de Tijuana por la alianza PRI-PVEM-PEBC
- Jaime Palafox Granados, candidato a la alcandia de Ensenada por la alianza PRI-PVEM-PEBC

Realmente no me explico que paso, no se si el mismo PRI era ignorante de este articulo - que remarcado, ellos mismos propusieron como ley - o pensaron que como ellos lo propusieron, ellos podían echarlo abajo, pero la verdad es que los ha puesto en graves aprietos.

Desde el año pasado el PRI a través del congreso trato de desechar el articulo de la Constitución de BC, pero no les fue posible por falta de acuerdos, ok el PAN no quería desecharlo, continuaron apoyando a los candidatos que claramente no iban a poder serlo, no se quizás esperando poder echar por tierra el articulo por otros medios/vías; pero este realmente no es el problema que ahora causa controversia, el problema es que cuando dichos candidatos solicitaron su registro ante el Instituto Estatal Electoral (IEE), este haciendo caso omiso de la ley e inclusive interpretando, cuestión que esta fuera de sus facultades, no rechazaron las candidaturas, las aceptaron, situación que el PAN tomo para interponer un recurso ante el Tribunal Estatal Electoral para que se rechazaran las candidaturas y se aplicara la ley vigente.

El Tribunal Estatal Electoral indico que el articulo 42 es un articulo vigente y que aplica al registro de candidatos para elección popular a puestos en el estado de Baja California, por lo tanto se revoco la candidatura de los antes mencionados, el PRI y su alianza en su defensa argumentó que al momento de pasar la el articulo 42, no se siguió todo el procesamiento técnico que se requiere para ser efectiva, pero eso sucedió hace 14 annos y en todo caso fue un error del PRI de aquel entonces, pero eso no ha sido impedimento para que se haya aplicado durante todo este tiempo y que no se aplique hoy.

Otro de los argumentos es que la ley es anti-constitucional y que esta en contra de lo que nuestra constitución rece sobre que todo ciudadano tiene el derecho de votar y ser votado, lo que están usando de forma maliciosa para confundir a la gente, ya que si bien es cierto laconstitución nos da ese derecho, hay ciertas condiciones que se tiene que cumplir, como el ser mayor de 18 años para ser votado y poder votar; si usamos el mismo criterio que están usando para descalificar el articulo 42 por sus restricciones, entonces la misma constitución esta contradiciendose a si misma... así como esta esta restricción hay otras en la misma constitución mexicana que limitan quien puede ser votado y quien no.

Además, se menciona que la constitución de un estado no puede contradecir la constitución, y eso es falso, la constitución mexicana nos da un respaldo jurídico como mexicanos, pero cada estado que compone la república es estado libre y soberano - dentro de los términos que, otra vez, la constitución les confiere -, y por lo tanto cada estado puedo - y de hecho sucede - adoptar su propia constitución con los obligaciones y derechos que se le confieren a cada habitante del estado.

El Tribunal Estatal Electoral fue muy claro en el sentido que ellos tiene que aplicar la ley vigente, y no tienen facultad para ver si se incumplió con la con el proceso de promulgación de leyes o no, o si la ley es anticonstitucional o no, para esas cuestiones esta la Tribunal Electoral del Poder Judicial de la Federación, asi que el tribunal simplemente hizo lo que tenia que hacer dentro de su ámbito de acción.

Como ultimo recurso, y al parecer es la accion que va a tomar la alianza PRI-PVEM-PEBC, es llevar el caso a la Tribunal Electoral del Poder Judicial de la Federación, y esperar a que resuelvan a tiempo para el proceso electoral del estado, y sobre todo a su favor, ya que de no serasí, las alianzas PRI-PVEM-PEBC y Convergencia-PT van a quedar en ridículo y a la mejor ya con el tiempo muy apretado para sustituir candidatos, por una toma de decisión equivocada desde su concepción.

Y para colmo de males el candidato para la alcaldía de Tijuana también fue rechazado por incumplir con la cuidadania Mexicana, o por lo menos por no haber realizado los tramites para la misma en tiempo y forma.

He visto en el área de comentarios del periódico Frontera, gente que critica al PAN y que los acusa de haber pagado el Tribunal Estatal Electoral o haber puesto algún tipo de coerción para que estos fallaran de la forma en como lo hicieron, pero a mi parecer están fuera de lugar, creo que si a alguien hay que culpar es a los mismos partidos que quisieron estar fuera de la ley y que no tomaron con la seriedad que se debe el proceso electoral, el PAN solo hizo notar los terribles errores en los que incurrieron, era la jugada cantada y nohabía otra para ellos.

NOTA: La imagen de portada mostrada, pertnece al semanario ZETA, y corresponde a la portada de la edición1734, de la semana del 22 al 28 de Junio del 2007

martes, junio 26, 2007

healthMonitoring de ASP.NET

El dia de ayer comente sobre un problema con el sitio del periodico frontera - y que no es la primera vez que sucede -, pues bueno extendiedo un poquito mas sobre el manejo de errores en aplicaciones ASP.NET, hay una forma muy sencilla de pedirle a ASP.NET que nos avise cada vez que se genera un problema en el sitio, esta notificacion puede ser a traves de un correo electronico, el insertar un registro en una base de datos o escribir el problema a la bitacora del sistema operativo.

De esta forma se puede ser un poco proactivo cuando algun problema surge, en lugar de esperar a que alguien nos lo haga saber.

La forma de activar este tipo de notificaciones, es haciendo uso del healthMonitoring, en cual se puede configurar de forma declarativa en el archivo web.config de nuestra aplicacion, algo importante de esta funcionalidad es que no unicamente nos puede servir para reportar errores, sino tambien para monitorear y auditar cuestiones de seguridad - demasiados intentos fallidos de acceso -, cuantas veces se recicla nuestra aplicacion -importante, ya que esto puede ocacionar problemas de rendimiento, entre otras cosas mas.

Para usar healtMonitoring en nuestro sitio, lo primero que tenemos que hacer es definir la seccion healtMonitoring dentro de la seccion de nuestro web.config, despues es necesario indicar los eventos eventos que deseamos capturar, luego se definen los proveedores, es decir a donde vamos a enviar los eventos capturados - email, base de datos, etc - y finalmente las reglas, ya que es posible filtrar ciertos eventos a un proveedor especifico, para mas detalle ver la pagina de ayuda de healtMonitoring en el sitio de MSDN.

Un ejemplo sencillo para recibir notificaciones por correo de cualquier error en nuestro sitio es el siguiente:
<healthMonitoring enabled="true">
<providers>
<add name="EmailProvider"
type="System.Web.Management.SimpleMailWebEventProvider"
from="error@micorreo.com"
to="parami@micorreo.com"
subjectPrefix="Error: algo pasa en misitio.com "
buffer="true"
bufferMode="Notification" />
</providers>
<rules>
<add provider="EmailProvider" name="All App Events" eventName="All Errors" />
</rules>
</healthMonitoring>

Como ven es muy facil con ASP.NET 2.0 mantener nuestro sitio monitoreado en cada momento, y sobre todo no es necesario modificar nuestra aplicacion para que esto suceda, aunque es posible extender las clases del healthMonitoring y generar eventos y proveedores personalizados, que podemos "disparar" desde nuestra aplicacion.

lunes, junio 25, 2007

Manejo de errores en ASP.NET, periodico frontera

Este mensaje de error esta aparencienod actualmente al intentar cargar la poagina de error del periodico frontera:

Es demasiada informacion para el usuario del servicio, ademas de que gente sin mucho que hacer puede buscar como explotar algun bug del sitio, al cabo ya el mismo error presenta demasiada informacion que puede ser util.

Es posible manejar los errores en ASP.NET para que despliegen paginas mas amistosas para el comun de los moratles y que ademas no muestre informacion critica del sitio, una forma es con el atributo errorPage para indicarle a nuestra forma, que si encuentra algun problema despliegue la pagina de error que le indiquemos:

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebTest.WebForm1" errorPage="/WebTest/ErrorPages/PageError.html"%>


Ora forma es configurado el manejo de errores de forma global en nuestra aplicacion, modificando el web.config para que luzca como:

(customErrors mode="On" defaultRedirect="/WebTest/ErrorPages/AppError.html")
(error statusCode="404" redirect="/WebTest/ErrorPages/404.html" /)
(/customErrors)
Nota: Cambie los <> por (), ya que si usaba los <> no se desplegaba el codigo.

Donde inclusive podemos indicar una pagina de error diferente para cada tipo de error que se produzca, si no existe una pagina especial, ASP.NET genera una generica, pero es posible indicarle que no muestre demasiada informacion, esto se logra cambiado el valor de mode a "On" o a "RemoteOnly", estoy seguro que el sitio del frontera lo tiene en "Off".

La diferencia entre los 3 modos es que:
  • On: Despliega una pagina de error generico si no se indica otra cosa, pero en lugar de mostrar detalles del error, indica como ver los detalles del mismo
  • Off: Siempre que se genere un error, si no se especifica una pagina de error, va a mostrar una pagina generica de error con todos lo detalles posible,. muy peligro si el sitio esta en Internet.
  • RemoteOnly: Muestra una pagina generica de error para los usuarios del sitio, pero el administrador/programadores que se conencten de forma local al servidor van a recibir una pagina con todo el detalle del error para investigarlo/corregirlo.

jueves, junio 21, 2007

Silverlight en OSX


Despues del post anterior donde hago referencia al proyecto Moonlight, me dispuse a instalar Silverlight para OSX, solo que me encontre con el siguente problema al momento de instalarlo, al parecer mi OSX no cumple con el requerimiento de ser igual o mejor a la version 10.4.8, alguna sugerncia? ...

Silverlight en 21 dias


No, no es el titulo de un nuevo libro para aprender Silverlight, es un interesante y largo post de Miguel de Icaza donde explica el estado y como es que se dio forma al proyecto Moonlight, que es la version libre de Silverlight.

El post es interesante en el sentido de que estan muy cerca de tener una version de Silverlight que se podra ejecutar en *nix, habla sobre las complicaciones tecnicas del proyecto, la coordinacion de los desarrolladores dispersos por varias regiones del planeta, y la posible extension del proyecto para llevarlo a otras areas de Linux.

martes, junio 19, 2007

Experiencia con la MAC



La nueva MacBook que ordene hace 2 semanas, llego la semana pasada, en general la experiancia ha sido excelente, desde la experiencia de desempacarla, la verdad Apple se esmera en todos los pequeños detalles del empaque, para la que la mac se vea de lujo.

Hace ya mucho tiempo que no utilizaba una mac, y a principio si saca un poco de "onda" el como acceder a las aplicaciones que no estan en el "dock", o que el mouse solo tiene un boton, pero es super facil acostumbrase.

De lo primero que le instale fue el quicksilver, herramienta para acceder a aplicaciones, datos, contactos, etc de una forma muy sencilla e intuitiva, el siguiente software fue Firefox, despues XCode, herramienta para el desarrollo de aplicaciones en OSX, Mono para OSX y el plugin para desarrollar aplicaciones en C# en XCode, aunque aun no he tenido tiempo de hacer alguna prueba, espero en los siguientes dias poder hacerlo.

Definitivamente una de las caracteristicas que mas me gustan es RowFront, de los unicos detalles que encontre y que me desagrada es que al importar fotos con el programa iPhotos desde mi camara digtal, no me pregunta si deseo cambiarle el nombre a los archivos a importar o dejarles el nombre que les asigno la camara, aun no encuentro si es posible hacerlo o no.

Pero como mencione en general, me encanta la MacBook, y ya estoy esperando que esten disponibles por aca en Tijuana las nuevas MacBookPro para adquirir una.

jueves, junio 14, 2007

Conectarse a redes VPN Microsoft pptp con Network Manager

En un post anterior mencione que en Linux utilizo el Network Manager para el manejo de mis conexiones de red, Network Manager es una mejora importante en Linux para la gestion de conexiones de red, sobre todo ahora que en muchos lugares publicos aqui en Tijuana.

Network Manager Network Manager puede ser extendido, por ejemplo para conectarse a diferentes tipos de VPN, por medio de plugins, esta es la parte interesante para mi, ya que parte de mi trabajo requiere que me conecte a VPNs de Microsoft (PPTP).

Inicialmente trate de activar mi red VPN con el pluing para PPTP que se encuentre en los repositorios de Ubuntu, pero al intentarme conectar el pluing fallaba con un "segment fault", buscando en los foros de Ubuntu y en Launchpad, al parecer el problema era relacionado a que la version de NetwrokManager no era compatible con la version del plugin.

Asi que me resigne y configure mi VPN manualmente por medio de los archivos de configuracion de ppp, hace poco decidi volver a intentar con el NetworkManager, me encontre que en Ubuntu la situacion no habia cambiado, pero buscando en Internet di con una pagina donde alguien compilo y subio paquetes del plugin para PPTP compatibles con la version del NetworkManager de Ubuntu.

Descargue e instale el paquete desde ahi, y en ese momento me fue posible configurar y conectarme graficamente a redes VPN Microsoft PPTP, el unico detalle que aun queda pendiente, es que aunque especifico que al momento de conectarme agregue una ruta para llegar al subnet de la VPN, no lo hace.

Por ejemplo si yo estoy en la red 192.168.5.0 y la red del VPN estan en 10.0.2.0, es necesario agregar una ruta que direccione todo el trafico destinado a la red 10.0.2.0 a traves de la conexion VPN, de momento la unica solucion que encontre es realizar la rutra de forma manual cada vez que me conecto, y lo hago dela siguiente forma:
$ sudo route add -net 10.0.2.0 netmask 255.255.255.0 dev ppp0

Fuera de eso todo funciona a la perfeccion, espero que en la version 0.7 del NetworkManager el problema quede corregido, esta version es posible que este liberada para el final del verano.

jueves, junio 07, 2007

Soy MAC

Asi es ya soy MAC, bueno casi..., el dia de hoy ordene mi primer MacBook, el cual me dicen que llega el proximo miercoles.


macbook


La MacBook la compre en la tienda del distribuidor de Apple en Tijuana D Newton, inicialmente pense ir a la tienda Apple de San diego y comprarla alla, pero al contemplar el costo de la misma + el impuesto de California + el impuesto para importarla a Mexico y asi poder hacerla deducible, me salia algo alto; asi que me di una vuelta a la tienda aqui en Tijuana y el precio de la misma ya con el IVA, me salia mas barata que comprarla en US y con factura para poder deducirla.

La MacBook que compre es de los nuevos modelos anunciados hace una semana, la cual viene con una actualizacion de procesador.

Ahora la siguiente compra Mac va a ser una MacBook Pro ya que esten disponibles la anunciadas hace unos dias ;).

Asi que ya soy MAC !

lunes, mayo 21, 2007

Configurar X server para 2 monitores con tarjeta de video ATI

Uno de los problemas que tuve el Linux, es que solo me reconocía un solo monitor cuando conectaba un monitor externo a mi laptop, es decir solo activaba el monitor externo, pero no el de la laptop o en el peor de los casos “clonaba” los monitores, es decir en los veía exactamente lo mismo, en Windows realmente es muy sencillo activar los 2 monitores para tener un escritorio grande, desafortunadamente en Linux no es así.

Primeramente es necesario saber que tarjeta de video estamos utilizando y cual es el driver que usamos para la misma, ya que dependiendo de la combinación de tarjeta/driver es el procedimiento a utilizar.



En mi caso mi laptop cuenta con una tarjeta ATI mobility radeon 9600, y para tal tarjeta tengo 2 opciones de drivers, los drivers libres y los drivers binarios de ATI, cuando instale Linux, este me instalo los drivers libres, así que son los que le deje y sobre los cuales realice mi configuración.

Mi primer intento de configurar los 2 monitores como un escritorio extendido, fue el utilizar el programa displayconfig-gtk (el cual se puede encontrar el los repositorios de Ubuntu), el cual proporciona una interfase gráfica sencilla de comprender y de realizar cambios a nuestra configuración de la tarjeta de video, el programa no función en mi caso, así que tuve que realizar los cambios de forma directa y manual en el archivo xorg.conf.

Asumiendo que los drivers libres para la tarjeta ATI están instalados, el siguiente paso del proceso consiste en habilitar la funcionalidad MergedFB que es la que permite extender el escritorio a mas de un monitor, en primer lugar hay que editar el archivo xorg.conf que se encuentra en /etc/X11, a mi en lo personal me gusta usar el editor vi, pero también es posible usar gedit:
$sudo vi /etc/X11/xorg.conf o $gksu /etc/X11/xorg.conf

Las instrucciones sudo y gksu nos ayudan a realizar los cambios como usuario root/administrador, ya que como usuarios normales no es posible realizar cambios en este archivo, acto seguido localizamos dentro del archivo la sección llamada “Device”, aquí se van a realizar algunos cambios y agregar algunas lineas, en mi caso la sección quedo de la siguiente forma:

Section “Device”
Identifier "ATI Technologies Inc RV350 [Mobility Radeon 9600 M10]"
Driver "radeon"
BusID "PCI:1:0:0"
Option "MergedFB" "true" #Habilita la funcionalidad de MergedFB
Option "MergedNonRectangular" "true" #Si la resolución de los 2 monitores no es igual (con respecto a la altura), es decir que forme un rectángulo, es necesario habilitar esta opcion
Option "MergedXinerama" "on" #Esta opción indica a las aplicaciones que se cuenta con mas de un monitor y eso ayuda a posicionar de manera correcta nuevas ventanas que se abran
Option "AGPMode" "8"
Option "EnablePageFlip"
Option "ColorTiling" "on"
Option "AccelMethod" "XAA"
Option "XAANoOffscrenPixmaps" "true"
Option "AddARGBGLXVisuals" "true"
Option "RenderAccel" "true"
Option "MonitorLayout" "LVDS, CRT" #Se definen los tipos de monitor que tenemos, LVDS es para la pantalla de la laptop y CRT indica que el monitor esta conectado al puerto VGA
Option "CRT2Hsync" "30-70" #Valores de sincronización horizontal del monitor externo, ver manual del mismo
Option "CRT2VRefresh" "50-150" #Valores de barrido vertical del monitor externo, ver manual
Option "CRT2Position" "RightOf" #Posición física del monitor externo con respecto al de la laptop, en este caso dice que mi monitor secundario esta a la derecha del de mi laptop
Option "MetaModes" "1280x800 1280x800-1280x1024" #Se definen las resoluciones tanto del primer monitor como del segundo, en este caso dice que tengo 2 configuraciones definidas, la primera 1280x800, es para cuando solo tengo el monitor de mi laptop, la segunda 1280x800-1280x1024, es para cuando tengo conectado mi monitor externo, se define la resolución de cada monitor separada por un guion (-)
EndSection

Los cambios necesarios para activar MergedFB son los que están comentados con # en el código de arriba.

Adicionalmente en la sección de “Screen” tuve que agregar la resolución total de cuando están activados ambos monitores, en mi caso fue de 2560x1024, solo agregue esta definición para 24 bits de colores, aunque se puede agregar a las otras definiciones también:

SubSection "Display"
Depth 24
Modes "1280x800" "1024x768" "800x600"
Virtual 2560 1024
EndSubSection

Una vez que tenemos la configuración correcta, es necesario reiniciar el X server, una forma de hacerlo es reiniciando la pc o bien presionando atl+ctrl+backspace, una vez que se inicie la sesión gráfica, ambos monitores deben de estar activados.

Un problema que tuve que solucionar una vez activada la funcionalidad de MergeFB, es que no encontré forma de que detectara si esta conectado o no el monitor secundario, por lo tanto aun y cuando no estuviera conectado mi resolución siempre era de 2560x1024, lo cual provocaba que algunas ventanas se abrieran en el área del monitor no conectado.

La única forma que encontré de solucionar este problema fue de forma manual y con la ayuda de un par de scripts. De acuerdo a mi configuración yo se que solo tengo definidas 2 resoluciones 1280x800 y 2560x1024, así que con la ayuda de el programa xrandr puedo cambiar entre las resoluciones de forma rápida, activando y desactivado el monitor externo según lo requiera. Los scripts son los siguientes:

smallscreen.sh
#!/bin/bash
sudo xrandr -s 0

bigscreen.sh
#!/bin/bash
sudo xrandr -s 1

Simplemente es necesario guardar los scritps y darles permisos de ejecución con:
$chmod +x smallscreen.sh
$chmod +x bigscreen.sh

Al ejecutarlos desde una terminal solicitan el password de administrador para poder correr. El valor numérico en la instrucción xrandr puede obtenerse ejecutando xrandr de la siguiente forma y modificando esos valores a los correctos para nuestra pc:
$ sudo xrandr -q
SZ: Pixels Physical Refresh
0 1280 x 800 ( 867mm x 347mm ) 60
*1 2560 x 1024 ( 867mm x 347mm ) *25
Current rotation - normal
Current reflection - none
Rotations possible - normal
Reflections possible – none

Aquí hay 2 ligas a los foros de Ubuntu con mayor información acerca de como configurar un monitor externo:

domingo, mayo 20, 2007

Me cambio a Linux

He sido usuario ya por poco mas de 6 años, aunque he sido usuario un tanto esporádico, con excepción de 2 años en los que por mi trabajo relacionado con servidores Unix, mi pc escritorio era tenia un ambiente Linux con dual boot a Windows, el cual durante ese tiempo utilizaba de forma esporádica.


Comencé con utilizando la distribución Redhat 8, la cual con el tiempo se convirtió en Fedora Core, con mi salida de ese trabajo, volví otra vez a Windows y me convertí en consultor independiente, dejando el uso de Linux otra vez de forma esporádica.

Desde hace un par de semanas atrás reevalue mi posición con respecto a Linux, ya que desde hace 2 años mis actividades de desarrollo de software han ido decreciendo y en cambio me he enfocado a la administración y desarrollo de bases de datos, específicamente Oracle y Microsoft SQL.

Por el lado de Oracle no hay problema ya que lo he utilizado en Unix, Linux y Windows, pero en el caso de MSSQL solamente corre en Windows, pero también es cierto que trabajo menos desconectado, principalmente trabajo por medio de VPN's a las redes de mis clientes, por lo tanto mi escritorio de trabajo no importa mucho que digamos para poder seguir realizando los proyectos de mis clientes.

Así que después de una mala racha con Windows en mi pc – spyware, bajo rendimiento de Windows en general, en ocasiones simplemente se pone lento sin explicación obvia -, decidí ver que me costaría moverme a Linux y utilizar software libre en la medida de lo posible, esta ultima parte no es nueva, ya que aunque estaba en Windows he utilizado una buena cantidad de programas libres, principalmente OpenOffice, ya que no he tenido licencia de MS Office desde hace como 6 años, y aunque algunos clientes me han ofrecido licencia gratuita, no he sentido de la necesidad de instalar MS Office en mi pc.

Hasta el momento Linux me ha funcionado a la perfección – bueno casi – en la actividades de la escuela y de mis clientes y no veo mi regreso a Windows, por lo menos para utilizarlo como mi ambiente principal en un futuro cercano.



La distribución de Linux elegida es Ubuntu 7.04 (Feisty Fawn) con los siguientes puntos a favor y en contra hasta el momento:

A favor

  • Fácil de instalar, con mucho soporte en Internet
  • Con NetworkManager mi configuración de red inalámbrica fue tan fácil como en Windows
  • Soporte para leer/escribir a particiones NTFS
  • Compiz y Beryl proporcionan increíbles efectos – eyecandy – en el escritorio
  • Una gran cantidad de software libre a mi disposición
  • No tengo gran problema con spyware ni virus
  • Reconocimiento de todos mis dispositivos USB/Fireware, cámara de video, fotográfica, teléfonos, PDA, etc. sin problemas y sin instalar drivers – algunos de estos simplemente no los pude usar en Windows -

En contra

  • Aunque es fácil de instalar y todo me funciono prácticamente “Out of the box” tuve que configurar manualmente el servidor X para que me reconociera mi monitor externo
  • Algo similar me paso con el NetworkManager, que aunque me reconoce y me permite conectarme a la redes wireless, no me fue posible configurar mis VPNs de forma gráfica y tuve que editar algunos archivos de configuración para que funcionaran
  • Programas que no están disponibles en paquetes de instalación, y por algún motivo se requieren, es necesario bajar el código fuente y compilarlo por uno mismo.


Si bien Linux ha avanzado en su facilidad de instalación y uso para tareas cotidianas, aun de vez en cuando se requiere tener algún conocimiento adicional para hacer que algunas cosas funcionen.

Sobre los problemas que se me presentaron ya estaré comentado con mas detalle cuales fueron y como los he ido resolviendo.

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.