emerge -av life

June 6th, 2007 | by | general, mono, tesis

Jun
06

Ha pasado un buen rato, y la verdad que no ha pasado mucho en mi vida. Estoy bastante ocupado con boludeces de la facultad (trabajos, entregas, parciales, etc) y principalmente con mi tesis que dio un giro que no me esperaba :) , se recorto por todos lados lo que yo tenía pensado hacer (o más bien lo que yo había entendido que tenía que hacer :D ).

Resumido en un párrafo de un mail en la charla con uno de mis directores de Tesis :

Tal vez para resumir mi idea sobre el proyecto, lo que estarías haciendo es un “reificador de mensajes entre objetos”, configurable de forma que la reificación pueda encenderse y apagarse de forma dinámica por motivos de performance. Casi la palabra aspecto se puede suprimir :D

En fin, parece tan simple, que complica. Para empezar estoy analizando diferentes weavers y como realizan su trabajo, para poder comprender los cambios que se necesitan en la VM.

Les dejo acá buen paper sobre el weaving en AspectJ.

En otro aspecto de la vida, mi hermana juró por su título hace un par de semanas, y ahora oficialmente soy el único miembro no-titulado de mi familia :) , lo que suma una presión extra a completar mi carrera de grado. Tengo una foto que predice el futuro, donde estoy posando muy sonriente con el título de mi hermana (total enrollados todos son iguales!!), pero voy a tener que esperar a viajar a Cipolletti para obtener una copia :) .

No Comments »

O.L.E. screencast!

July 20th, 2006 | by | mono, oregano

Jul
20

Para aquellos curiosos hice un pequeño screencast de editor de componentes. Lo nuevo respecto de mi último post es la habilidad de modificar los puntos de control de los elementos y darles nuevas y alocadas formas :) .

Por razones de sueño, no pude completar los puntos de control de lo elipces, por lo que no lo muestro en el video.

El screencast lo hice, como siempre, con vnc2swf y está acá y pesa casi 3Mb.

1 Comment »

Oregano Library Editor!

July 11th, 2006 | by | mono, oregano, programación

Jul
11

Así como lo leen, ya estoy trabajando en un editor para las bibliotecas de componentes de Oregano. En principio para poder cambiar algunas que no me gustan mucho o que tienen detalles, después veré si la aplicación queda lo suficientemente linda como para hacerla crecer :-) .

OreganoLibraryEditor.pngLuego de una frustrada búsqueda de algún Canvas (no iba a repetir los errores del pasado y usar GnomeCanvas :-) ) decidí hacer uno minimalista, que soporte las operaciones básicas que requiero : Agregar cosas, moverlas y rotarlas. Salvo esta última, las demás están andando, con soporte Group y UnGroup

Y si, como ya se pueden imaginar la aplicación está escrita en C#, con Gtk# y Cairo#. Como el buildsystem depende enteramente de Monodevelop, no creo que libere código alguno por el momento.
En la captura se puede ver el diseño de un componente místico, conocido como Futirifoken :-D

UPDATE: Unos toque mágicos con el Stetic, un poco de magia de System.Xml.Serialization y un par de hacks para sacar la cosa más rápido y …

OreganoLibraryEditorWorking.png

No Comments »

Scary Code

June 16th, 2006 | by | mono

Jun
16

Preparándome para mi charla sobre Mono en la CTT de junio organizada por el Cafelug, me puse a jugar con un ejemplo para mostrar que, efectivamente, anda eso de mezclar lenguajes en .NET.

Antes de seguir leyendo, si sufrís de nauceas, estás embarazado/a, o simplemente este tipo de cosas te impresionan, no sigas leyendo :-)

Todo comienza con la definición de nuestra clase en C# :

using System;
public class ClaseCS {
    private int x;
    public int X {
        get { return x; }
        set { x = value; }
    }
    public ClaseCS (int x) {
        X = x;
    }
    public override string ToString () {
        return String.Format ("Soy ClaseCS hecha en C# {0}", x);
    }
}

No es una clase que haga mucho (el property está bien al cuete). Lo importante acá es el método ToString que luego utilizaremos desde IronPython.

Para compilar solo debemos ejecutar : #> mcs -target:library -out:clasecs.dll ClaseCS.cs.

La parte que asusta es ahora ejecutar la consola de IronPython, sobre todo por el notice de copyright que trae la última versión :-) . Voy a mostrar todo de una y después explicar que es cada cosita.

IronPython 1.0.60523 (Beta) on .NET 2.0.50727.42  
Copyright (c) Microsoft Corporation. All rights reserved.  
>>> import clr  
>>> clr.AddReferenceToFile("clasecs.dll")  
>>> import ClaseCS   
>>> c = ClaseCS(1)  
>>> print c 
Soy ClaseCS hecha en C# 1

Trivial, no :) ?. Básicamente lo que hago es importar un módulo especial de IronPython que se encarga de manejar las referencias a los assemblies .Net del sistema. Si hacemos cosas como “import System” el CLR se encargaría transparentemente. En mi caso, al cargar algo especifico lo debo hacer explicitamente (y no es mayor problema, porque el Zend de Python dice “mejor explícito que implícito” :-D ) .

El método AddReferenceToFile agrega una referencia al DLL que habíamos generado antes, para que la máquina virtual la conozca. Luego importamos el módulo, y como no tenemos namespace declarado, podemos instanciar directamente ClaseCS ().

Por último llamamos a “print c” que lo que hace en llamar a c.__str__ para obtener la representación en forma de texto de la instancia. Internamente IronPython traduce a una llamada ToString del código intermedio que está mapeada con nuestro ToString de C#, dando como resultado que se imprima el texto que habíamos definido en nuestra clase de C#.

No es algo que recomiende hacer en sus casas, pero es algo relindo y loco para impresionar en una charla :-P

No Comments »

Ubuntu Update

May 4th, 2005 | by | gnu+linux, mono

May
04

Luego de varios días con los repositorios rotos, Ubuntu Breeze (como se llama la nueva versión de desarrollo) volvió a la vida. La novedad con la que me encontré es que han creado paquetes para Mono 1.1.X y Gtk# 1.9.x, con lo que ahora puedo probar todo eso que no podía antes, por no querer compilar Mono desde los fuentes, o sea : Beagle e iFolder.

También compilé Mono UML, una herramienta CASE para generar diagramas UML y luego código (C# por ahora si mal no recuerdo), entre otras cosas. Si bien está un poco verde, los diagramas son 1000 veces más lindos que los que hace Dia. Pueden ver como compilarlo en este enlace.

Mono UML

Sin duda Ubuntu crece y crece para el lado correcto cada día ….

Pero, para tener un poco de variedad, no le pierdan la vista a Foresight Linux, una distro que quiere pisar fuerte. Seguramente haré uno de mis famosos review’s cuando termines los actuales :-)

No Comments »