19/02/2008

Flex TRAMP

Hi,

Some collegues from Adobe consulting and I are working in a new open source project called Flex TRAMP. My friend George Cook, author of the original idea, has just written a very good entry on his blog explaining the goals of the project and a little demo.

Yo can see the English version here, and now I am going to translate it into Spanish to let the Spanish Flex community know about it.

Thanks.


TRANSLATION INTO SPANISH -- TRADUCCIÓN DE LA ENTRADA DE GEORGE COOK

FlexTRAMP - "Consigue algo en cada compilacion"

este es mi primer proyecto open Source.....

FlexTRAMP es un Testing Runtime Actionscript Mini Parser..

Lo que significa que te permite interactuar con tu Flex en ejecucion, y
  1. crear variables
  2. asignar objetos
  3. actualizar atributos
  4. llamar a métodos
  5. y básicamente interactuar con tu aplicación flex
Por qué?

Unos colegas y yo estamos trabajando actualmente en una aplicación de Flex que tarda un poco en compilar. Es muy frustrante compilar, y entonces ver que una variable o un objeto se ha inicializado con un valor incorrecto, y tener que recompilar.

Yo estoy acostumbrado a trabajar con Firebug - si hay algún problema en mi javascript, lo modifico "en vivo" y lo intento de nuevo.

Por ejemplo: Tenemos una parte de nuestra aplicación que muestra cierta información. Para llegar a ella, tienes que introducir información de registro y realizar muchas tareas.

Con FlexTRAMP, puedo iniciar la aplicación, y en la linea de comandos que aparece al pulsar mi botón de FlexTRAMP, puedo instanciar e inicializar todos esos objetos que necesito y llamar al método que muestra la información, una y otra vez.. no es necesario pasar por todo el proceso de registro. Mucho ahorro de tiempo, soy más productivo, y por tanto, más feliz :)

Otro ejemplo - hoy sin ir más lejos - hice unos cambios y compilé. Me ncontré con que el currentState de uno de mis componentes estaba mal.. esto significaba volver y recompilar de nuevo.. sin embargo, utilizando FlexTRAMP, pude asignar el estado, actualizar unas cuantas variables, y después de una llamada a un método, depurar una transición que tenía que me descubrí que necesitaba un pequeño retoque.

Por lo tanto no terminé habiendo compilado sin lograr algo.

Para cualquiera acostumrado a utilizar Firebug, o el procesador de linea de comandos de Microsoft, sabrás la utilidad de esta característica. No es un substituto de las pruebas unitarias, pero es una herramienta muy útil cuando tienes que ponerte "hacky" con algun defecto.

Pero yo creía que Actionscript no tenía eval?

No lo tiene, y mientras algunas personas están tardando mucho (y aplicando grandes habilidades) para obtener un eval genuino en actionscript (como compilando el bytecode y cargandolo de nuevo en un swf), nosotros no lo estamos haciendo.

Nosotros estamos haciendo algo mucho más simple, pero igual de efectivo para los propósitos que tenemos.

Quién lo está desarrollando? qué licencia tiene?

Yo estoy haciendo FlexTRAMP, con algunos compañeros de Adobe Consulting - somos:
  1. George Cook (yo)
  2. Ignacio Martín
  3. Mike Herron
  4. Satinder Ubhis
El proyecto es open source y está alojado en Google. Será lanzado bajo licencia wftpl.

En qué estado está?

Ahora mismo hay poquito que he hecho, que tiene alguna funcionalidad:
  1. Asignación de variables
  2. Creación de objetos
  3. Invocación de métodos
  4. Información básica de métodos
  5. Operaciones básicas, combinaciones y expresiones booleanas
  6. Puede añadir variables existentes desde tu aplicación!
  7. Acceso a métodos estáticos
Hay algunas limitaciones
  1. Sólo un tipo de operador (+ - * / ) por expresión
  2. No mucha anidación de nada (ej: () []). El parser es chunguillo con los paréntesis (sólo un set de parentesis permitido por expresión)
  3. no hay bucles (do, while, etc..)
  4. no hay funciones
  5. Sólo son accesibles las variables/métodos públicos.. probablemente esto será así siempre..
  6. Hacer cosas como a.length, o object.method().property, o object.method().method() no está reconocido aun...
Parseador feo, feo!!

El parseador que escribí es tremendamente deo (sólo es una prueba rápida de concepto que surgió una tarde) y no permitiré a nadie ver el código de momento!! Ese es también el motivo por el cual hay tantas limitaciones. Ignacio estará trabajando en un parseador mucho mas elegante esta semana, y una vez que tengamos implementado eso, junto a otras cosas de Sat y Mike, lanzaremos el código a todo el mundo.

Tenemos muchas ideas para el futuro de este proyecto, y nuestro objetivo es crear algo que os permita hackear y "ensiciaros" en el código

Piensa : " The lady is a tramp", y encontrarás nuestra idea.

Más realidad pronto, lo prometo

Oh, y está en Google Code.. Tengo por aquí un ejemplo básico:

Aquí está el link al código de Google Code, para el que le interese..

Y aquí está una versión básica:

Prueba algo de código:
# a = " hello world!"
# myApp = mx.core.Application.application
# myButton = new mx.controls.Button()
# myApp.addChild( myButton )
# myButton.label = " Hello from TRAMP "
# myButton.width = 200
# myButton.height = 100
# mx.controls.Alert.show(myButton.label,"now you can play with your flex app in runtime :-)")

Si quieres usar este código, copialo en la caja de texto primero y quita las almohadillas que el formato del blog ha puesto.

Los comandos extra son "cls" para limpiar la salida y "delete VARNAME" para eliminar una variable.. ej: delete myButton

Date cuenta de que también puedes introducir comandos multilinea, de modo que puedes copiar tus favoritos a un navegador para utilizarlos después.. haciendo doble click en un elemento creará una referencia al mismo en tu ventana del código. DATE CUENTA DE QU
E EL ÁRBOL (y el parseador) estan cutrillos aun!

Ejemplo:

Ejemplo de FlexTRAMP - Es muy pronto, así que no esperes deasiado!

He estado utilzando esto el último par de días para hacer debug en una aplcación LCDS con Cairngorm. Es realmente divertido crear eventos de Cairngorm, darles una vuelta y lanzarlos una y otra vez sin tener que recompilar.

Pronto más!

No comments:

Post a Comment