sábado, enero 29, 2005

Reinicio de clases

Estoy a un sólo día de regresar a la escuela, siento que desde que salí de vacaciones hasta el día de hoy no ha pasado más de una semana, en verdad que se va el tiempo cuando andas ocupado, ahora hice un poco más, aunque tal parece que no cumplí la meta de terminar mi capitulo faltante del ECMA, pero bueno cumplí algunos otras. He aprendido lo suficiente estas vacaciones para regresar a la escuela y desarrollar mis proyectos con mono, la forma de crear reportes ya no es problema, claro que renderizar los reportes en HTML no es la mejor solución, pero es una muy buena.

El proyecto que ando desarrollando, va bien, he terminado dos partes de las cuatro que son, aunque veo que hay detalles que tendré que verificar con mucha calma. Esta semana de desarrollo, en realidad no semana sino 5 días, ha sido interesante, aprender como va el avance de mono en MS Windows ha sido importante, vender la idea de "la aplicación que funciona en UNIX... ah y también en MS Windows" no es para perderla de vista. A pesar de que he encontrado un error en el XSP de Windows (en versiones 1.04 y 1.05) que imposibilita la utilización de CodeBehind en Webservices todo indica que en la versión 1.01 no existe, algo raro, porque se supone que si funciona en una versión 1.01 debería funcionar en una versión mayor a 1.01. Tal parece que tendré que utilizar tal versión y esperarme a una versión corregida para MS Windows, ya que ahora no tengo el tiempo suficiente para mirar el código y proveer una solución :(.

En MonoUML, Manuel y yo hemos propuesto dos borradores de la nueva versión de UMLCanvas#, creo que se tomará la de Manuel porque la veo pensada para ser escalable, agregando algunas cosas que hacen falta, tal parece que en unos meses cuando el borrador deje de ser borrador comenzaremos a implementarla, por mi parte seguiré escribiendo la vieja versión para avanzar con algo y resaltar lo que no se debe de hacer en la nueva versión.

Ando cansado pero sonriente, la vida no es tan dura pero si muy entretenida. Espero que todo salga muy bien este inicio de clases.

martes, enero 25, 2005

Mono. La magía de la portabilidad

Estoy días me la he pasado escribiendo código para un proyecto, ya quiero terminarlo, mientras más pronto termine más pronto me pagan, y mientras más pronto me paguen más tiempo tendré para MonoUML.

La aplicación que ando haciendo no es la gran cosa, pero como se busca que funcione en UNIX y MS Windows pues decidí darme una vuelta por los sistemas propietarios.

He quedado impresionado con mono, en verdad la gente detrás del proyecto esta haciendo un muy buen trabajo, el día de hoy probando el instalador de Paco he quedado también sorprendido, que buen instalador, todo en uno, no necesitas nada más para comenzar a desarrollar con mono en MS Windows, bueno, un editor quizás pero seguro el Bloc de notas sería también util, lo unico que (hasta este momento) no tiene es el monodoc, pero bueno, se puede consultar la versión en línea o probar el port que se esta haciendo.

Después de instalar mono en MS Windows y copiar los compilados hechos en Linux y ejecutarlos, no hubo problema alguno, es cierto que las aplicaciones hechas en Gtk se ven mejor en versiones nativas de UNIX, pero también es cierto que Gtk es portable y no decir de Gtk#, todo funciono perfectamente: threads, gtk#, glade#, pango en inclusive una imágen contenido dentro del winexe. Algo también interesante fue el XSP, de la misma forma, funciono, sin contratiempos, todo bien, los webservices funcionaron, inclusive una actualización programada en mi aplicación a una BD MySQL funcionó correctamente, sin errores.

Ventana principal. Linux Ventana principal. MS Windows
Configuración. Linux Configuración. MS Windows

Es claro que las aplicaciones escritas en GTK# se ven mejor en *NIX, pero eso no quiere decir que no funcionen en MS Windows :).

Por el lado de MonoUML, todo indica que tendré que apoyar a Rodolfo en la documentación de ExpertCoder, para así agilizar un poco más la integración entre los widgets de MonoUML.UML2/DI y la implementación de ExpertCoder.Uml2, inclusive he subido unos cambios al CVS para ver como se hace, en realidad podría decirse que no hice gran cosa, ahora el UMLActor al cambiar su nombre notifica a los demás de esta forma el Tree y la pestaña de propiedades de actualización correctamente. Aunque hay algunos detalles que no se si son porque pierdo las referencias a las variables al diagrama o es un error propio de EC, pues en ocasiones si salva los cambios y en otras no, es raro, debera depurarse con tiempo. Por cierto que el generador de código de Rodolfo funciona correctamente, por ahora sólo genera código para C#, pero por algo debemos de comenzar.

Nota de hoy: 'Buen trabajo el de los monos.'

sábado, enero 22, 2005

Trabajando

Por fin he conseguido un proyecto ligero que me dará un poco de dinero, no es gran cantidad, pero sirve para algo, al menos podre comprarme una cámara digital, que pues a veces hace falta, o quizás salir de viaje, que se yo, lo interesante es que aumento algo más en mi cv y por supuesto que gano más experiencia.

En este proyecto por fin uso mono como plataforma base (cayó como anillo al dedo) tanta flexibilidad para este proyecto debe ser explotada además del servidor ligero mono-xsp (apt-get install mono-xsp asp.net-examples), para utilizarle con webservices con C#, además de NuSOAP webservices remotos con PHP, básicamente la idea de lo que haré es proveer una interface de web para conectar un sistema, pero todo esto utilizando un servidor de hosting público, es decir sin que la empresa que tiene el sistema cuente con un servidor dedicado, todo esto gracias a la magia de los webservices.

Además estoy implementando un demonio que actualiza la dirección IP a la cual deberá escribir el servidor remoto los cambios necesarios para la base de datos, pues se busca la idea que el cliente pueda pedir servicios remotamente. Esta interesante la idea pues asi las PYMEs podrán contar con servicios que a la vista del usuario común son iguales a las Empresas grandes.

Quiero terminar esto pronto para no tener tanto que hacer, no creo excederme más de 2 meses en esto, la verdad ya estoy muy adelantado en estos 2 días que llevo trabajando, solo falta la integración con el sistema real, lo más difícil probablemente. Por otro lado, quiero seguir avanzando con MonoUML ando muy motivado pues ya le veo más forma :)

Nota de hoy: '¿Webservices...? Interesantes.'

miércoles, enero 19, 2005

MonoUML, escuela y proyectos con ganancias.

Finalmente he logrado escoger mis ultimas materias en la escuela, ahora ya solo me falta una más por cursar y abre terminado mis estudios. El horario es algo agradable, al menos a mi me gusta, pues la entrada es a las 12:00 y la salida es a las 21:00, mucho mejor que el del semestre pasado donde entraba a las 08:00 y salía a las 21:00, ahora podré dedicar más tiempo a MonoUML.

He agregado unas mejoras a MonoUML, básicamente ando integrando UMLCanvas# a todo el demás trabajo realizado en el proyecto, hasta ahora he logrado lo más sencillo: que al activar un elemento del canvas este muestre sus propiedades en la UMLPropertiesTab, tal y como se hace cuando se selecciona un elemento del Tree de la izquierda, es un claro avance, ahora solo falta agregar unos eventos más para cuando se modifiquen las propiedades.

Enlace logrado

He agregado una nueva clase llamada UMLNodeEntryContained, que busca crear widgets de UML que contienen una o varias UMLEntry y que necesariamente deben estar dentro del UMLElement, ya antes había hecho una similar llamada UMLNodeEntry, pero con la diferencia que esta última no le interesa si los UMLEntry estan o no dentro del UMLElement, cuando me refiero a "dentro" es de modo visual, pues obviamente dentro del código en ambas clases los UMLEntry estan en la clase.

De esta forma UMLNodeEntryContained será útil para elementos UML con formato texto-contenido-obligatorio como las Clases y los Casos de Uso, a diferencia de UMLNodeEntry donde no interesa la posición de los UMLEntry, como en los Actores.

He agregado un bonito ícono para aplicación: el mono-sonriente, de esta forma ya no aparece el ícono por defecto del stock. Además de que por el momento el cuadro de diálogo de selección de proyecto contiene íconos de stock de Gtk, mientras alguien nos diseña unos bonitos íconos. El ícono del Acerca de, ha sido también modificado, utilizando la imagén del sitio.

Acerca de

Selección de proyecto

Por otro lado estoy en pláticas para hacer un proyecto que utilizará entre otras cosas Web Services con PHP, sincronización de BDs remotas con locales, básicamente haré el Engine necesario para hacer funcionar lo anterior en sistemas diseñados para las PYMEs, ojalá y se confirme ya que necesito una portátil :), y por supuesto que utilizaré mono para lograr todo lo anterior.

Por cierto: 'He retrasado el lanzamiento de MonoUML 0.01, ¿razones? Mucha precipitación, se debe tener algo usable y útil antes de pensar en otra cosa, hay que hacer todo paso a paso, lento pero seguro.'

sábado, enero 15, 2005

Pronto regreso

He estado un poco separado de MonoUML estos días libres, algo que no me gusta, pues el proyecto necesita avanzar, ahora que reiniciaré las clases en la universidad lo inscribiré a un concurso que se celebra a nivel nacional en todos los tecnológicos, por tal razón avanzaré lo más posible para mostrar algo usable a los jueces

Estuve separado por un proyecto de música, escencialmente para aprender a tocar el piano, es un proyecto interesente, lo pensaba desarrollar utilizando Java, pero después de pensar un poco, decidí no realizarlo, y no porque no pudiera, sino por el poco tiempo que tendría para MonoUML, confio más en mi proyecto que en el proyecto de otro, posiblemente debí haberlo seleccionado, pero también hay que saber cuando decir no.

Durante este proceso de "lo haré/no lo haré" me he dado cuenta de lo engreida que es la gente, yo sigo diciendo que desarrollar para Windows te afecta, claro que en ambientes Unix también hay gente así, pero siento que es menor, o quizá jamás lo había notado antes. Me he dado cuenta que me falta tanto por aprender, me siento un poco novato, creo que la única solución es estudiar y estudiar, aunque la propuesta de trabajo del proyecto anterior no funciono, o mejor dicho no deje que funcionara, seré pieza importante en el desarrollo internacional, pues pienso realizar algunas aplicaciones web para exportar el producto a niveles internacionales, no pienso quedarme ahi parado.

Inclusive esta es la primera vez que alguien me paga mis servicios sólo por lo que se, únicamente por mis consejos, resulte ser consultor, y ese trabajo es algo interesante, nadie antes me había pagado por algo así. Lo que si me di cuenta es que es un trabajo bien pagado y relativamente sencillo, actuar de alguna forma de traductor y abogado, es agradable.

Estoy seguro que MonoUML será un gran proyecto en el concurso de la facultad, eso sin duda. Si alguien es estudiante del ITV y le interesa participar no dude en contactarme, y si no es estudiante de ahí no importa cualquier ayuda es bien recibida, y si no es con MonoUML también hace falta ayuda con el proyecto hermano: ExpertCoder.

Por cierto: 'Buen trabajo el de Rodolfo: http://expertcoder.sf.net'

martes, enero 11, 2005

Explorando GNOME 2.9

Ayer y hoy me puse a instalar Ubuntu para probar porque todo mundo habla de él. Después de actualizar a Hoary, he mirado que contiene la versión de GNOME 2.9, hay algunos cambios notables, que han llamado mi atención y que por supuesto son merecedores de mostrar.

Directorios compartidos

Por lo que veo el equipo de GNOME se ha empeñado en integrar el escritorio, ¡y que bueno!, ya hacia falta algo como esto, ahora con esta nueva herramienta es posible desde el mismo escritorio definir nuestros directorios compartidos por SAMBA o NFS, dejaremos atras la vieja manera de utilizar SWAT o escribirlo todo a mano, muy interesante.

Configuración de Directorio Compartido

Directorio Compartido

Control de volúmen

Ahora parece que lo que era gnome-alsa-mixer se integrara directamente al escritorio.

Control de Volúmen

Cambios en el menú principal

Esto no se si sea una modificación propia de Ubuntu, pero ahora se ve asi el menú por defecto:

Menu Places

Menu Preferences

Menu System

Por supuesto que a todo esto no podría falta la captura del about.

Acerca de...

Estoy seguro que existen muchísimos cambios más, hay que estar atentos a los cambios en el escritorio de GNOME, todo pinta excelente.

Nota de hoy: 'Mas información en GNOME, siento además que gracias a la utilización de X.Org GNOME funciona más rápido.'

lunes, enero 10, 2005

Solaris 10

En estos días me he puesto a mirar lo que ahora nos trae Sun con su nuevo SO, a pesar de las críticas de Linus en contra a la versión de Solaris 10 como proyecto abierto para la arquitectura x86, no creo que sea considerado una broma, es cierto que el soporte que tiene Solaris 10 contra Linux es incomparable, pero también es cierto que Sun ha apoyado mucho al SL y mirar lo que ahora nos presenta Sun no nos quita nada. He instalado el Solaris 10-x86 en mi equipo utilizando una máquina virtual, el desempeño es bueno, y la interfaz es agradable, por supuesto que hay varios cambios, yo no tengo ni idea con él, pero espero en unos meses saber más, inclusive he ordenado un libro para meterme de lleno con este, mi idea es profundizar más y más en Solaris, creo que es momento de seleccionar un UNIX respaldado por una empresa, y me parece que Solaris es la respuesta, una respuesta accesible a mi bolsillo.

Hablando de la instalación, esta fue sencilla basada en Siguiente - Siguiente - Finalizar, el clásico "Sacar CD, Meter CD, ENTER", nada complejo en realidad, salvo unas opciones de configuración, pero en general nada complejo. Trae CDE y Java Desktop Environment (el GNOME de Sun) con buenos gráficos, mil veces más comodo de trabajar en comparación con CDE (mi humilde opinión), la integración con Java, es por supuesto excelente (más que ovbio), utiliza la última versión, el famoso Java 5.

Mi idea de todo esto es quitar (o al menos hacer arranque dual) mi actual Debian y reemplazarlo con Solaris, por supuesto que lo que interesa es tener funcionando mono en él, (con mono trabajo muchísimo, no puedo dejarlo asi nada mas), he mirado muchos enlaces de como compilarlo, pero sin resultado, debe ser mi inexperiencia con este UNIX, espero pronto dejar los pañales y comenzar a caminar con él.

Posiblemente en algunos meses este contando mi experiencia en como instalar mono en Solaris, o porque no unos paquetes de mono para Solaris, porque creo que no existen algunos, pero bueno, el tiempo lo dirá.

Por cierto: 'También llegará este libro junto con el de Solaris... espero :/'

jueves, enero 06, 2005

En busca del editor

En búsqueda del editor perfecto para escribir en C# he pasado por vi (y derivados), gEdit, MonoDevelop y ahora SciTE. A pesar que caí por casualidad con este editor me ha sorprendido que si soporta las #region y #endregion, además que permite colapsar regiones comprendidas entre { y } algo que no había visto en otros editores libres, hay que configurar algunas cosas para que funcione correctamente y tenga una buena vista. Hay que configurar las siguientes cosas para que quede de una forma agradable:

tabsize=4
indent.size=4
code.page=65001
LC_CTYPE=en_US.UTF-8
if PLAT_GTK
	font.base=font:courier,size:10
	font.small=font:courier,size:10
	font.comment=font:courier,size:10
	font.code.comment.box=$(font.comment)
	font.code.comment.line=$(font.comment)
	font.code.comment.doc=$(font.comment)
	font.text=font:sans,courier:10
	font.text.comment=font:courier,size:10
	font.embedded.base=font:courier,size:10
	font.embedded.comment=font:courier,size:10
	font.monospace=font:courier,size:10
	font.vbs=font:sans,courier:10
font.js=$(font.comment)

Lo que sería esto:

Ejemplo de SCiTE

Por otro lado me he instalado Tomboy que reemplaza a mi viejas StickyNotes de GNOME además de un ícono de para poder ocultar el XChat de la barra de tareas, aunque claro, hay algunos que prefieren utilizar desde GAIM todo, yo soy de los que aún usa XChat, posiblemente pronto cambie, esta bueno el ícono, pues te avisa que tienes mensajes activos y demás cosas.

Íconos en systray

En la imagén de arriba también se puede ver que esta el demonio de gnome-pilot, muy bueno, te sincroniza todo con Evolution, es muy muy bueno. En Debian/kernel 2.6 hay un detalle para que funcione correctamente de modo que cuando conectes tu Handheld se cree automáticamente el enlace en /dev, solo hay que editar el archivo /etc/udev/rules.d/udev.rules y agregar lo siguiente:

KERNEL="ttyUSB[0-9]*", NAME="tts/USB%n", MODE="777", SYMLINK="pilot"

Después de eso, todo debería servir correctamente.

Por otro lado, nuestro compañero Manuel ha agregado más funcionalidad a MonoUML, en cuestión a las asociaciones.

Asociaciones

Por otro lado Miguel Huerta se une al equipo de MonoUML, andará haciendo la documentación tipo MonoDoc de las clases que estan, lo cual, por cierto, realmente hace falta.

Nota de hoy: 'apt-get install *'

martes, enero 04, 2005

Actualizando Mono Hispano

He terminado la documentación de los 3 gestores de base de datos que me propuse estas vacaciones, aunque siento que esta un poco débil esa parte, aún faltan muchos otros gestores, mi intención es que al menos exista la forma de utilizar todos los gestores indicados en la página de mono, es decir, la lista de los gestores soportados por mono hasta ahora en comparación con el manual de ADO.net es lo siguiente:

  1. PostgreSQL
  2. MySQL
  3. MS SQL
  4. IBM DB2
  5. Firebird Interbase
  6. ODBC
  7. OLE DB
  8. ODBC
  9. Oracle
  10. Sybase
  11. SQL Lite
  12. TDS Generic

Es decir que va un 25% de BD documentadas, así que cualquier ayuda es aceptable. Como referencia la página de ADO.NET en mono es la guía actual de la cual estoy partiendo, además de las bases de datos anteriores me falta agregar el proveedor interno de GNOME, GDA, además de los clásicos ejemplos GUI de los componentes gnome-db para gtk#, aunque no estoy seguro si estos estarían fuera de contexto en este manual, quizás debería hacerse un tutorial propio para GDA, no lo se, luego veré q hacer.

Por otro lado creo que sería bueno comenzar a hacer un conjunto de Preguntas de Uso Frecuente de Programación con Mono, hasta ahora he visto las siguientes:

  1. GTK#. ¿Cómo designo un icono a la ventana de mi aplicación?

    Utilizando la propiedad Icon de la ventana, esta propiedad necesita un Gdk.Pixbuf para que funcione, por lo tanto se debe de agregar la imagen a los resources del proyecto y luego llamarla así: Gdk.Pixbuf.LoadFromResource("imagen.png").

  2. GTK#. ¿Existe una forma de distribuir mi ensamblado/ejecutable, el cual utiliza imágenes internamente, sin la necesidad de distribuir también las imágenes?

    La forma de hacerlo es incluir las imágenes a los resources del ensamblado/ejecutable y luego utilizarlas mediante la instrucción Gdk.Pixbuf.LoadFromResource("imagen.png").

  3. GTK#. ¿Cómo hago un botón (desde código) que tenga una imagén en vez de una etiqueta (Gtk.Label)?

    Hay que reemplazar la propiedad Child del botón con la imagen correspondiente, es decir:

    Gtk.Image img = new Gtk.Image ();
    img.SetFromStock (Gtk.Stock.Add, IconSize.Button);
    Gtk.Button boton = new Gtk.Button ();
    boton.Child = img;
    

    El ejemplo anterior es utilizando una imagén de Stock pero también es útil para imágenes incluidas en los resources.

  4. GTK#. ¿Cómo puedo imprimir/crear reportes/crear informes con mono?

    La única forma hasta ahora que se (al menos en Linux/Unix) y que me conste es utilizando Gnome.Print, posiblemente pronto se puedan algunas otras formas, como CrystalReports.

  5. GTK#. ¿Cómo puedo definir el tamaño de mi botón/label/entry/otro-widget en una ventana?

    Aunque no es recomendado, es posible, utilizando el contenedor Gtk.Fixed y luego agregando los widgets que se quieran redimensionar a un tamaño especifico, aunque repito, no es recomendado.

Si alguien tiene alguna otra pregunta que considera que debería ser agregada, no dude en contactarme.

Por cierto: 'Si que esta largo el capitulo 14 del ECMA, pero falta poco :)'

lunes, enero 03, 2005

Nuevo año

Pues si logre viajar, todo salió perfecto, a pesar del larguísimo viaje de ida todo fue excelente, en esos días que pase alla muchas cosas han hecho que piense un poco en lo que seguiré haciendo, me falta muy poco para terminar mis estudios y creo que debería ir especializandome en algo, tengo varias opciones:

  • Bases de datos
  • Ingeniría de Software
  • Administrador UNIX

Son las tres cosas principales que me gustan y hasta ahora las he sabido mezclar correctamente, he pensado en certificarme en Solaris y Java, aunque viendo la bolsa de trabajo veo que Solaris no es tan requerido en comparación a Java, aunque ahora con .NET la gente esta siendo absorbida por este, también he pensado tomar una certificación MCSE, aunque siento que estaría viviendo una doble vida, "certificado en MCSE y utiliza Linux", además siento que pagarles a Microsoft no es lo mío. Me parece que me iré por el camino de Sun, sigo con la misma confianza de hace 6 años de que algún día Linux sería gran competencia, y tal parece que esos días estan comenzando a llegar o quizás soy un idealista y estoy seguro que Sun será un buena alternativa libre muy pronto.

UNIX me ha cautivado desde que conocí FreeBSD, claro que la idea social atras de GNU/Linux ha hecho que me oriente más a él, espero poder tener el tiempo suficiente para lograr mi certificación este semestre escolar, se que será pesado hacer todo al mismo tiempo pero tengo que poder.

En cuestión a las bases de datos, creo que me inclinaré por Oracle, es muy popular, a pesar de que mi favorita sigue siendo PostgreSQL y bueno, también MySQL a pesar de ser un poco ligera para cosas "más grandes", aunque ahora la veo un poco más robusta con su versión 5, ojalá y mejore, tiene muchas posibilidades, en fin. Aunque bueno, también sabemos que MS SQL Server es extremadamente común, hay que conocer a todas.

Ahora que fui a Paraíso, Tabasco había un nacimiento de personajes hechos en papel maché, de tamaño real con algunos defectos de proporción pero en general bien hecho, nunca había visto una como esa, así que se me hizo interesante.

Nacimiento de papel mach&ecuacte;

Nacimiento de papel mach&ecuacte;

Nota de hoy: 'Simplemente feliz.'