26
Dec 09

Desarrollo para Plataforma Flash en Linux: Minibuilder

Desde hace un tiempo Adobe ya no desarrolla Flash/Flex Builder para Linux. Una alternativa libre prometedora que he encontrado es Minibuilder. Se trata de un editor que utiliza la tecnología Adobe Air.

flash platform

flash platform

Veamos a continuación los pasos necesarios para desarrollar en Linux para plataforma Flash con esta herramienta:

1. Instalamos Adobe AIR : (Fuente:  http://www.sizlopedia.com/2008/04/06/how-to-install-adobe-air-on-ubuntu/ )

user@computer:$ wget http://airdownload.adobe.com/air/lin/download/1.5/AdobeAIRInstaller.bin
user@computer:$ chmod +x AdobeAIRInstaller.bin
user@computer:$ ./AdobeAIRInstaller.bin

2. Instalar Java

user@computer:$ apt-get install sun-java-jre

3. Instalar Flex 3.5 ( URL : http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3sdk )

Descomprimir en algún sitio

4. Descargar minibuilder: (URL :  http://minibuilder.googlecode.com/files/AirMiniBuilder-1.0-alpha-3.air )

user@computer:$ Adobe\ AIR\ Application\ Installer /$RUTA_ABSOLUTA/AirMiniBuilder-1.0-alpha-3.air

5. Tras la instalación de minibuilder, éste se iniciará. Veremos que nos pide ejecutar un tal MBCompiler, la ruta al script figurará en la última línea de la ventana.
En mi caso : /opt/AirMiniBuilder/share/MBCompiler/start
Supongo que Minibuilder no hace ese trabajo por nosotros debido a algún tipo de limitación del sandbox de Air.

Teniendo ejecutado MBCompiler podemos hacer click en “Check again” y desaparecerá la advertencia.
También tenemos que especificar la ruta  a flex en el cuadro “SDK Path”.

Y ya está. Ya podemos empezar a utilizar de Minibuilder. Empezaremos con un pequeño proyecto para el Flash Player.

Utilizamos la pestaña “Create New Project“:

Minibuilder

Minibuilder

Elegimos:
Project target : “Flash Player AS3

Vemos que soporta dos frameworks : Flex y AsWing. Nosotros por ahora sólo usaremos Flex.
Activamos “Add (some) Flex support

Como project name lo que queramos, en mi caso “hola mundo”.

Ese texto inicial que veremos se trata de MXML, un lenguaje de marcado que facilita el uso del framework Flex.

Editor Minibuilder

Editor Minibuilder

Hacemos click en “Compile and Quickrun”. Veremos que tarda su tiempo en compilar el SWF, años luz de la rapidez de MTASC o Haxe.
No veremos nada cuando no debería ser así. Sospecho que puede ser porque mi distribución Linux utiliza SWFDEC por defecto en lugar del player de flash Adobe. El swf lo podemos encontrar en la carpeta bin-debug, con lo cual podremos ejecutarlo manualmente.

Veremos que aparecen unos botones (”AAA”,”BBB”…) es debido a que se está utilizando la clase “Application.as” predefinida por Minibuilder que incluye esos botones en tabs.

Ahora ya es cuestión de aprender Flex. Como pistas para alguien que venga de MTASC decir que las clases Flash que se solían utilizar anteriormente, en la documentación están en el API de Flash Player.

Así que para jugar por un lado tenemos los controles del framework Flex: http://livedocs.adobe.com/flex/3/html/help.html?content=controls_01.html y por otro lado tenemos el API de Flash Player, el cual ya nos resultará familiar al haberlo utilizado con MTASC , Haxe o Flash Studio:

http://livedocs.adobe.com/flex/3/html/help.html?content=Part3_Flash_Player_APIs_1.html

Podemos utilizar ambas cosas sin problemas. En el siguiente ejemplo, se utiliza NetStream y Netconnection en lugar del control VideoDisplay de Flex, pero eso no quita para que los botones a utilizar puedan ser controles Flex:

http://blog.flexexamples.com/2008/03/01/displaying-a-video-in-flex-using-the-netconnection-netstream-and-video-classes/

Vemos que en ese ejemplo el código Actionscript se encuentra incrustado en el MXML. No tiene porqué ser así y de hecho yo no creo que sea una buena práctica. El ejemplo de Minibuilder utiliza una clase independiente para el código (Application.as). De todos modos, ya hablaremos en otro post sobre buenas prácticas, patrones y otras librerías.

Entonces como conclusión. ¿Qué ofrece Minibuilder en cuanto a facilitar el desarrollo para plataforma Flash?

Resaltado y autocompletado AS3, así como compilación amigable de SWF incluyendo gestión de los namespaces.

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/03/01/displaying-a-video-in-flex-using-the-netconnection-netstream-and-video-classes/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white"
        creationComplete="init();">

    <mx:Script>
        <![CDATA[
            import mx.utils.ObjectUtil;

            private var nc:NetConnection;
            private var ns:NetStream;
            private var video:Video;
            private var meta:Object;

            private function init():void {
                var nsClient:Object = {};
                nsClient.onMetaData = ns_onMetaData;
                nsClient.onCuePoint = ns_onCuePoint;

                nc = new NetConnection();
                nc.connect(null);

                ns = new NetStream(nc);
                ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv");
                ns.client = nsClient;

                video = new Video();
                video.attachNetStream(ns);
                uic.addChild(video);
            }

            private function ns_onMetaData(item:Object):void {
                trace("meta");
                meta = item;
                // Resize Video object to same size as meta data.
                video.width = item.width;
                video.height = item.height;
                // Resize UIComponent to same size as Video object.
                uic.width = video.width;
                uic.height = video.height;
                panel.title = "framerate: " + item.framerate;
                panel.visible = true;
                trace(ObjectUtil.toString(item));
            }

            private function ns_onCuePoint(item:Object):void {
                trace("cue");
            }
        ]]>
    </mx:Script>

    <mx:Panel id="panel" visible="false">
        <mx:UIComponent id="uic" />
        <mx:ControlBar>
            <mx:Button label="Play/Pause" click="ns.togglePause();" />
            <mx:Button label="Rewind" click="ns.seek(0); ns.pause();" />
        </mx:ControlBar>
    </mx:Panel>

</mx:Application>

02
Dec 09

En defensa de los derechos fundamentales en internet

Ante la inclusión en el Anteproyecto de Ley de Economía Sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de internet manifestamos nuestra firme oposición al proyecto, y declaramos que…

Continue reading →


02
Nov 09

Probando Haxe

Haxe es el sucesor de MTASC, pero no se limita a tener como objetivo la tecnología flash sino que también genera Javascript, PHP y otros. Además, se acompaña de una máquina virtual, Neko, que le sirve para la ejecución en servidor. Yo personalmente creo que es un proyecto que está intentando abarcar demasiado pero hay varios puntos que me han animado a probarlo:

  • Las nuevas funcionalidades y rendimiento mejorado de AVM2 (máquina virtual en las últimas versiones de Flash).
  • El lenguaje de Haxe es mejor que ActionScript.
  • La posibilidad de portar aplicaciones flash a plataforma nativa fácilmente. Esto se está utilizando por ejemplo para aplicaciones iPhone.


A continuación los pasos necesarios para la instalación y un par de ejemplos de Haxe contra Flash y CPP usando el mismo código:

Continue reading →


02
Oct 09

Ikuspro en beta

Ikuspro es el nombre del software que he desarrollado para mi PFC. Se trata de un simulador gráfico de programas.
La idea del proyecto es de mi director de PFC que es profesor del departamento de LSI de EUITI-BI e imparte clases de “Fundamentos de Informática” por lo que pensó que una herramienta de este tipo podría ser útil para quien se enfrenta por primera vez a la metodología de programación.
Con Ikuspro la ejecución de los programas se hace visual y gracias a ello se alivia un poco la sensación de abstracción que suele inspirar la programación. Es algo parecido a lo que ocurre con Logo, aquella tortuga que hacíamos mover por toda la pantalla sin darnos cuenta de que estábamos programando por primera vez.

De todos modos lo mejor es que ponga un ejemplo. Este código por ejemplo:

editor

Como puedes ver este código es C.

Ikuspro en la versión actual incluye un intérprete de C que he desarrollado con el objetivo de que puedan funcionar los ejercicios utilizados en la asignatura de “Fundamentos de Informática”. Este ejemplo es muy sencillo para no recargar esta entrada pero el intérprete de C de Ikuspro es bastante más avanzado soportando funciones, arrays, condicionales, bucles e incluso punteros parcialmente.

Hablo del intérprete como algo independiente de Ikuspro ya que una parte interesante del proyecto es que Ikuspro está pensado en realidad como un simulador gráfico que se puede extender en el futuro con nuevos intérpretes para otros lenguajes sin mayor dificultad. Siendo un poco más técnicos, lo que hace Ikuspro es ejecutar el intérprete adecuado para el tipo de programa en un hilo independiente comunicándose ambos como productor-consumidor vía mensajes XML.

A continuación la simulación gráfica que genera Ikuspro al término de este programa y digo al término ya que con Ikuspro se va viendo la ejecución del programa línea a línea, en realidad como si de un debugger se tratara sólo que mucho más fácil y sobre todo didáctico para el usuario objetivo.

simulacion

Además, Ikuspro también genera comentarios didácticos acerca de lo que va sucediéndo línea a línea y muestra la salida estándar del intérprete, que es fiel a lo esperable.
A continuación un pantallazo de Ikuspro donde puedes ver las diferentes partes y hacerte una idea del funcionamiento del mismo:

ikuspro

Enlace a imágen ampliada

Ikuspro está desarrollado enteramente en Java. El intérprete C que incorpora se ha desarrollado con ANTLR.

Por último, el título de esta entrada es “Ikuspro en beta” porque esta semana he terminado de realizar mis pruebas así que está listo para realizar pruebas con usuarios. Ikuspro actualmente está numerado como 0.9 en lugar de 1.0 para dar cabida a alguna idea interesante y factible que pueda surgir en las pruebas con usuarios.

Si has llegado a leer hasta aquí y te gustaría probar Ikuspro:

Página web provisional del proyecto Ikuspro


22
Apr 09

Editores UML gratuitos

Aquí mantendré una lista comparativa de software gratuito para edición de diagramas UML. El prerrequisito para que el software sea incluido en la lista es la gratuidad excluyéndose licencias temporales y similares.

diagramas_uml

diagramas_uml

Continue reading →