miércoles, abril 27, 2005

MonoUML, i18n

Todo gracias a la magía de Gettext y a la ayuda de Enzo, ahora sólo falta terminar de traducir el archivo y la traducción es español estará totalmente lista, y claro, modificar el Makefile para que al momento de hacer make install se instale el catálogo en el directorio correspondiente.

MonoUML-en

MonoUML-es

martes, abril 26, 2005

Como una gota de agua

Que agradable es unir los trabajos de todos y que esta unión funcione armoniosamente, este ejemplo lo hice... en que serán, menos de 2 minutos todo con la magía del código de Rodolfo, Manuel y mio, todo funciono a la perfección, ahora se puede ver con mejor claridad nuestro trabajo, ahora solo falta retocarlo, mejorar unos errores del canvas, algunos otros diálogos de entrada y estaremos listos para la primera versión este 28 de Mayo. Creo que este podría ser un ejemplo que estaría incluido por defecto dentro de samples/ en el SVN de MonoUML, basado en un mismo ejemplo de la especificación de UML 2.0.

Como una gota de agua

Además de un demo de Ingeniería Inversa, claro faltan otros más por hacer, espero que este demo no se consuma el ancho de banda del servidor :P.

sábado, abril 23, 2005

MonoUML

Ya he comenzado a escribir los toolbars, la separación ya es posible y la interacción es práctimente independiente, aunque aun sigo pensando una forma limpia de unir los eventos del toolbar con el canvas correspondiente...

Toolbars

Por otro lado, ya tenemos bugzilla, gracias la contribución de Enzo. Espero mañana instalar y configurar el media wiki, ayer lo estaba haciendo, como no me gusta dejar las cosas a medias... lo borre y fui a dormir.

viernes, abril 22, 2005

22 años atras

Esta semana estuvo agitada, pero bueno, yo tengo la culpa, dejar todo al último no es bueno, pero como que de repente comenzaron a llover cosas por todos lados... que si un trabajo ... que si un proyecto... que si una exposición... que si no se que, pero bueno, no todo en la semana fue trabajar y desvelarme, cosas buenas pasaron, cosas raras como el hecho de no saber quien abono 100 pesos a mi teléfono celular ¿posiblemente una admiradora? ¿algún error del sistema de abonado de tarjetas amigo de telcel?, en fin, creo que nunca lo sabré, pero que raro en verdad, no creo que anden por ahí regalando dinero en crédito celular a cualquiera... en realidad no creo que lo regalen en primera.

Hoy es 22 de Abril un muy buen día en realidad, ¿quién hubiera dicho 22 años atras lo que iba a pasar? el tiempo vuela... ¡También ya pronto cumpliremos un año de haber comenzado MonoUML, que rápido se nos pasa la vida!

...que rápido...

miércoles, abril 20, 2005

¡Nuevo sitio!

En realidad el sitio es el mismo :P ¡pero ahora con dominio y hosting propio!, todo gracias a las estupendas contribuciones de Rodolfo y Enzo, respectivamente, :), ahora si la dependencia a Sourceforge ha desaparecido, aunque bueno se podría seguir utilizando ese hosting... en fin.

Por otro lado ya comence a ver lo del toolbar, la separación la hice anteriormente y ahora solo falta comenzar a hacer lo del Drag&Drop; he agregado unas cosas más a la parte de Reverse Engineering, más parámetros de configuración para que sea más flexible a la hora de la importación, ahora esta posible indicar que tipo de campos de clase y métodos (de acuerdo al nivel de acceso) no se quieren.

Estos días atras he estado bien ocupado, haciendo cosas de la escuela... lo bueno es que pronto terminará este semestre :), espero todo termine bien.

importing parameters

importing parameters

mscorlib.dll imported!

sábado, abril 16, 2005

MonoUML, Ingeniería Inversa: Asistente

¡A todo mundo le gustan los asistentes!

Que agradable es programar en C# utilizando la magía de mono. Ahora a trabajar con el Drag&Drop.

viernes, abril 15, 2005

¿Fin de semana? Ya llego

A pesar de que esta semana no ha sido agitada me ha hecho pensar muchas cosas, muchas ideas giran dentro de mi cabeza, quiero descansar un poco aunque creo que eso de dormir máximo 6-8 hrs diarias podría llegar a ser productivo... y cansado, hace tiempo leí que el intentar recuperar las horas perdidas durmiendo el fin de semana es inútil, pero bueno, ya habrá tiempo.

Nos hemos movido a Forge Novell, ahora sólo falta obtener un sitio web propio para descartar totalmente SourceForge, la razón principal de la migración fueron la utilización de SVN y el manejo de estadisticas, SF ya va cumplir el año que ha descartado la opción de estadisticas, antes no marcaba los commits ahora ni siquiera los accesos al sitio ni las descargas, pero bueno. ForgeNovell tiene cosas interesantes extras, que son de valor agregado y que quizás para algunos no les interese, pero bueno estan ahí para usarse.

He comenzado a integrar la librería de Ingenería Inversa con MonoUML, con un agradable asistente, creo que agregaré más parámetros para hacer más moldeable la importación, la próxima semana comenzaré a trabajar de lleno con el toolbar del canvas, haciendo el Drag&Drop del Tree y del mismo toolbar.

Hoy he visto por fin funcionar la i18n a través de Mono.Posix, tal parece que tendré que actualizar el manual de Mono Hispano para que también se utilize esta nueva forma, no hay tanta variación, le diré a Enzo la nueva forma de hacerlo, el estaba averiguando como hacerlo y quería contribuir a MonoUML :)

Hoy hablando con un nuevo asesor, para el concurso próximo a efectuarse este Mayo, me ha dicho algo que no me ha gustado del concurso y que yo ignoraba, me decía que los derechos los proyectos presentados son adjudicados por la propia Dirección General de los Tecnólogicos, algo que se me hace totalmente injusto, ¿Cómo es posible que nuestro trabajo se lo lleven unos fulanos que sólo organizan el concurso? Tendré que investigar a fondo, otra cosa que me interesa averiguar es si la idea de proyecto libre es válida en este tipo de concursos (aunque no debería influir, pero bueno conociendo que aquí la gente es de mente cerrada...) sería algo muy desagradable de mi parte tomar todo el crédito del trabajo hecho por el equipo, ¡y claro que no lo haré!, si las premisas anteriores se cumplen, tendré que despedirme desde ahora de concursar ¿para que perder mi tiempo en concursos de ese tipo?

Y hablando de noticias buenas Rodolfo ha mejorado notablemente el performance de ExpertCoder, y en verdad se nota, no creo que sean ideas mías, siento que ahora el modelo importado de Gtk# con FullImport es cargado de una forma muchísimo más rápida. ¡Enhorabuena!

domingo, abril 10, 2005

MonoUML, Ingeniería Inversa, Cuarta Parte

Casi todo listo para terminar la librería, he limpiado el código ahora esta más legible, más rápido y con mayor soporte: clases anidadas, enumeraciones, arreglos, elementos pasados por referencia y punteros, y lo que había dicho antes, un parámetro para "nivelar" la profundidad de la importación, ahora por defecto se hace la importación AssemblyImport, es decir únicamente se hace ingeniería inversa a los ensamblados importados y no a sus dependencias, algo que por lo general es lo que se busca, y además esta el clásico FullImport, donde se busca hasta el nivel más bajo de información, por ejemplo si un método utiliza un System.Int32 (o un int en pocas palabras), también se la hace ingeniería inversa al System.Int32 a pesar de que es parte de la librería base, y así, todo recursivamente. Además de eso ya no hay problemas de Duplicated Key al cargarlo en MonoUML, en pocas palabras todo va genial.

Reverse Engineering

El código correspondiente es el siguiente:

using System;

namespace NamespaceSample
{
        public interface MyInterface
        {
                string HelloWorld ();
        }

        public enum MyEnumeration
        {
                Some,
                Thing,
                Here
        }

        public abstract class MyAbstractClass
        {
                public MyAbstractClass (MyEnumeration em)
                {
                }
        }

        public class MyClass : MyAbstractClass, MyInterface
        {
                public MyClass (MyEnumeration enm) : base (enm)
                {
                }

                public string HelloWorld ()
                {
                        return "hola mundo!";
                }

                public void ByReference (ref int i)
                {
                }

                protected class InternalClass
                {
                        public InternalClass (MyClass parentClass)
                        {
                        }

                        private void InternalHelloWorld ()
                        {
                        }

                        private string _myString;
                        private int[] _myArray;
                }
        }
}

Espero acepten mi propuesta, tengo mucho que platicar :)

Actualización: Correción de errores en imagén, CVS refleja los cambios.

viernes, abril 08, 2005

Si algo es propenso a fallar, lo hará

Después de regresar de vacaciones podría parecer que el reinicio de clases debe ser tranquilo y va aumentando de intensidad progresivamente, de una forma agradable; y así debería de ser, pero no lo fue, tres días después de desvelo y por fin hemos terminado muchas cosas, es increible como pueden pasar cosas en tu día de entrega de un reporte, y peor aún si ese día es entrega de proyecto final y peor aún si ese día es la única oportunidad que te dan para presentar algo; sea cual sea el caso hay varias cosas que pasan siempre, que si la impresora ayer imprimia muy bien ahora ni siquiera quiere encender, que si ayer funcionaba la aplicación hoy ni siquiera arranca el sistema operativo, es como estar jugando la "papa caliente" diciéndole a nuestro revisor... "¡pruebelo pruebelo! ¡ya!" porque estamos seguros que por alguna extraña razón todo explotará en cualquier momento. Pero a pesar de todo nos entretenemos y lo disfrutamos, o bueno eso sentí estos tres días, como que nos estabamos enfriando y queriamos acción, ¡buscando adrenalina! :)

En fin, a pesar del cansancio estoy feliz, ya falta menos.

En otros terminos, todo indica que este fin de semana quedará el namespace ReverseEngineering, usable, y con el paso del tiempo se irán corrigiendo errores y mejorando el performance, ¿para que esto? para comenzar a trabajar con el drag&drop de la toolbar de los diagramas para hacer posible la creación de diagramas de casos de uso, la salida de la versión 0.01 es muy cercana además del concurso de creatividad del cual, por cierto, no he visto bases publicadas para inscripción, raro, pero bueno, seguro vendrán pronto... deben, sino aun así la liberación se hará.

miércoles, abril 06, 2005

Mono Debugger

A pesar de que nunca he utilizado un debugger a fondo en mi corta vida, he decido darle un vistazo al mono-debugger, algunas de las razones que me obligaron a utilizarle es el bug de mucha memoria, que ahora me estoy convenciendo que es un error de Gtk#, pero bueno, además de mi interés de averiguar que pasa con las novedades del debugging con mono. La instalación es sencilla, hay que obtener los fuentes de svn

svn co svn://svn.myrealbox.com/source/trunk/debugger

instalar un paquete necesario:

apt-get install libreadline5-dev

luego hacer el clásico:

./autogen.sh --prefix=/home/mario/Programs/mono && make && make install

y recompilar Monodevelop:

./autogen.sh --prefix=/home/mario/Programs/mono --enable-debugger && make && sudo make install

y listo a disfrutar del debugger:

mdb monouml.exe

Aunque claro, la solución para este error no será de un día, ni de una noche, hay que ir paso por paso, de seguro agregar uno que otro breakpoint y comenzar de descartar soluciones hasta llegar a la efectiva.

Me gustaría tener un poco más de tiempo libre, espero tenerlo muy pronto, un tiempo para trabajar a fondo con MonoUML.

lunes, abril 04, 2005

De vuelta

Después de 2 días de descanso he regresado a la vida diaria, al trabajo, y a la explotación por parte del jefe mayor: la escuela, a todo como era antes, a pesar de que acabo de llegar hace unos minutos, no puedo dormirme porque si lo hago no iré a la reunión que tengo a las 9 AM, en fin, a poner cara de palo y a aguantar el regaño (si es que hay), pero lo bailado nadie te lo quita :) Aunque no se porque soy tan negativo, diré 'salí de viaje' y seguro me comprenderan... lo dudo.

¿SWF? No por favor, mejor MWF:

class HelloWindowsForms
{
        public static void Main()
        {
                System.Windows.Forms.MessageBox.Show ("Bienvenido a casa");
        }
}

Managed.Windows.Forms

Acabo de notar que mañana hay que entregar un trabajo, cuyo único día de recepción es mañana mismo... y por supuesto que no lo tengo, espero mi equipo haya hecho algo... lo dudo, pero bueno dicen que la esperanza muere al último.

Actualización. Hay un error a la hora de compilar libgdiplus 1.1.5 cuando no indicas que quieres soporte para GIF, la solución ya esta en el SVN pero para puedes solucionarla activando el soporte GIF: apt-get install libungif4-dev libtiff4-dev libpng3-dev para tener soporte de TIFF, PNG y GIF.

viernes, abril 01, 2005

Tranquilidad

Estos días si que he estado ocupado, con muchas cosas que hacer, toda esta semana ha sido así, desde el domingo anterior ya quería que llegará este día y por fin, por fin ha pasado la semana, me voy de viaje, de viaje en busca de libertad, se muy bien que hay cosas por hacer, ¡pero vamos! quiero relajarme, además después de esto será prácticamente imposible viajar de nuevo y de todos modos lo haré :) Me iré a la preciosa ciudad de Paraíso en Tabasco.

Aún no termino lo de ReverseEngineering en el proyecto, me falta prácticamente poco: delegados y eventos, determinar como modelar las struct en UML, corregir que las DataType tengan sus propios datos y no aparezcan como Clases aparte, y agregar algunos parámetros más para que no se haga una importación tan a bajo nivel, he descubierto algunas cosas raras al hacer las importaciones al mscorlib.dll, no se si incluirlas...

Además he comenzado a comenzado a mirar los archivos XML generados por Dia para ser agregado también a la parte de importación, lo que me deja pensar es si el archivo comprimido de Dia es algún gz/zip/bzip2 o algo semejante, lo más probable es que sí, en fin, tendré que mirar un poco los fuentes de Dia para ver como lo manejan ellos.

Además de todo esto sigo con lo del Drag&Drop, que por cierto, ahora está detenido aunque creo que sería mejor primero hacer el Drag&Drop del Tree que de la toolbar, pero bueno hacer la toolbar funcional por primera instancia será mi prioridad. Veo que Rodolfo ha metido la opción de agregar diagramas, ahora es posible crear diagramas de casos de uso y de clases, ahora solo falta mi parte de agregar elementos de UML y todo esto pintará de un color más vistoso :)

Todo va muy bien

Class Diagram

Lo que no va bien es el bug de mucha memoria, Miguel Ángel me he indicado que también en Monodevelop ocurre este error, ¿será algún error de código administrado dentro de Gtk#? ¿O es que nuestras horas de análisis de código no dan resultados...? En fin a seguir buscando, sino se tendrá que poner un reporte.