Categories
Eventos

Mad In Spain '09

Mad In Spain '09

Un clásico dentro de los eventos que tenemos en españa, ahora con el buen tiempo apetece dar paseos, visitar las grandes ciudades, compartir conocimientos, experiencias, proyectos, enriquecerse los unos con los otros, hablar de los retos conseguidos y los que aún están por ahí, de la inspiración, del sentimiento, de las emociones, de las alegrías, de las frustaciones, de los triunfos y de muchas cosas más.

Bueno, todo eso y mucho más es para mi Mad In Spain, esto es lo que he vivido en estos últimos años que he podido asistir al evento, así que quiero compartir con ustedes este evento, con lo cual os informo que ya están abiertas las incripciones, será como ya es costumbre en el Palacio de Congresos de Madrid, los días 26 y 27 de junio, desde ya se pueden comprar las entradas.

Resumiendo:

  • Lugar: Madrid, Palacio de congresos
  • Fecha: 26 y 27 de junio
  • Precio: Entre 45 y 100 € dependiendo de muchas cosas.

Recomendación, si se compra la entrada antes del 16 de mayo para las conferencias costará 45 €, con un descuento importante de 25 €, así que los que ya lo tienen claro aprovechad, que sino luego…

Saludos!!!

Categories
Flash JSFL Paneles Tutoriales

Tutorial JSFL – Introducción a Paneles

Tablero

Esta es la tercera entrega de los tutoriales sobre JSFL que en su momento me propuse escribir, con ésta cerraré el paquete de introducción, pero no todo termina aquí, pues han cambiado mucho las cosas desde que empecé a escribir, he aprendido nuevas cosas, me he tenido que enfrentar a nuevos retos y tengo nuevas ideas sobre que escribir y como aplicar estos conocimientos a situaciones reales para ayudarnos en nuestro día a día. Bueno, sin más preámbulos vamos a lo que nos compete.

En esta ocasión veremos los Paneles, los paneles son películas SWF que almacenamos en las siguientes rutas respectivamente en función del sistema operativo:

  • Windows® VistaTM:

unidad de arranque\Users\nombre de usuario\Local Settings\Application Data\Adobe\Flash CS4\idioma\Configuration\WindowSWF

  • Windows XP:

unidad de arranque\Documents and Settings\nombre de usuario\Local Settings\Application Data\Adobe\Flash CS4\idioma\Configuration\WindowSWF

  • Mac OS® X:

Macintosh HD/Usuarios/nombre de usuario/Librería/Application Support/Adobe/Flash CS4/idioma/Configuration/WindowSWF

El acceso a estos paneles lo hacemos a través del menú Ventana -> Otros paneles, aquí encontraremos todos los Paneles que creemos dentro del directorio WindowSWF.

¿Para que sirven los paneles? y ¿Qué podemos hacer con un panel?

Bueno, básicamente podemos hacer todo lo que hacen los comandos, pero con la ventaja de tenerlo siempre abierto.

¿Y eso que quiere decir?

Pues que por ejemplo para ejecutar un comando tenemos que hacerlo a través del menú Comandos, con lo cual perdemos el área de trabajo, esto si utilizamos un comando basado en interfaz gráfica, pero si lo hacemos con un comando sencillo no tenemos forma de configurar parámetros con lo que perdemos más valor. Sin embargo con un Panel tenemos siempre visible el área de trabajo, tenemos acceso a toda la configuración que deseemos implementar en el panel y además podemos crear previews del resultado puesto que el panel es una película swf en la que podemos hacer tanto como deseemos.

A ver, a ver, ¿dices que los Paneles son películas SWF?

Así es, esta es la parte más poderosa de los Paneles, que son películas SWF, con lo cual las podemos crear con lo que más cómodos nos sintamos, por ejemplo con Flex, con Flash, con mtasc, todos estos los he probado y funcionan perfectamente, seguro que también se puede con HAXE aunque no lo he probado.

¿Y donde está el truco?

Bueno, realmente no es truco, pero bueno la magia que nos permite hacer esto es una función muy sencilla que lleva mucho tiempo ahí y que es más potente de lo que ha simple vista parece, la función que nos permite utilizar a nuestros queridos SWF’s como interfaz de los Paneles es la función MMExecute, a ésta función le tenemos que pasar como parámetro código JSFL y listo.

NOTA del escritor, osea yo, jejejeje
Una buena práctica es el encapsulamiento y además conseguir que nuestro Panel tenga poco acoplamiento. Esto es más sencillo de lo que suena, simplemente quiere decir que separemos el código AS y el código JSFL.

PARTE ActionScript, lógica de la vista del Panel

Bueno y ahora si por fin después de esta introducción ya podemos hablar sobre la forma en la que vamos a poner en práctica lo aprendido (pero que dice este tío, si lo único que hemos visto es la función MMExecute y una ruta rara) . Vamos a crear un Panel que nos ayude a crear tableros de ajedrez, si esos bellos tableros que se componen de 64 casillas, 8 filas y 8 columnas, alternando dos tipos de casillas.

Recuerdo que hace tiempo tomé un taller sobre ActionScript avanzado en el Flash For México 2004 que impartió Fernando Flores, ahí antes de empezar a picar código nos dijo una cosa que siempre recordaré y que sigo aplicando a diario en mis proyectos, la lista de la compra, o sea lo que queremos, lo que necesitamos de nuestra aplicación. En este caso que es lo que queremos que tenga este Panel, bueno, pues mi lista de la compra para este Panel es la siguiente:

  • Definir el tamaño de las casillas.
  • Definir el color de las casillas.
  • Tener un preview antes de crearlo.

Esta lista de la compra nos ayuda a saber que necesitaremos 2 instancias del Componente ColorPicker, una instancia del Componente NumericStepper y para ejecutar acciones el buen amigo Button. Con ellos tendremos la lógica de AS que nos ayudará a conseguir los valores necesarios para crear nuestro tablero.

Una vez que conseguimos los valores necesario hacemos la llamada al fichero JSFL encargado de crear el tablero, la llamada a este fichero es realmente la clave de éste Panel. El código es el siguiente:

MMExecute('fl.runScript( fl.configURI + "WindowSWF/JavaScript/Tablero.jsfl", "createBoard", ' + this.comColor1.selectedColor + ', ' + this.comColor2.selectedColor + ', ' + this.comNumericStepperSize.value + ' );');

La explicación de ese trozo de código es la siguiente:

MMExecute, esta función recibe como parámetro el código JSFL que deseamos ejecutar.

fl.runScript, esté método de sirve para ejecutar scripts con código JSFL. Recibe un parámetro obligatorio y dos opcionales, que en nuestro caso utilizamos.

  • El primero es la ruta del fichero JSFL que se desea ejecutar.
  • El segundo es el nombre de la función que se desea ejecutar dentro del fichero JSFL.
  • El tercero son los parámetros que enviamos a la función.

fl.configURI, esta propiedad nos devuelve la ruta de la carpeta configuration de Flash del equipo.

Hasta ahora lo único que hemos hecha ha sido simplemente llamar a un fichero JSFL alojado en la carpeta configuration/WindowSWF/JavaScript/Tablero.jsfl, hemos indicado que deseamos ejecutar la función createBoard dentro de este fichero y le hemos pasado los parámetros necesarios (Color1, Color2 y Tamaño).

Y ya está, nuestro Panel es así de simple, podemos hacer todo lo que nos venga en gana para hacerlo más bonito, con animaciones, diseños y demás, pero lo mínimo necesario para funcionar es lo que hemos hecho hasta ahora. Bueno, ahora si empieza la parte interesante que es la que desde el principio quiero explicar, lo que es realmente código JSFL y es el encargado de crear el tablero de Ajedrez. ¿Preparados? … Pues vamos allá.

Pero antes una imagen que como queda nuestra interfaz:

Panel Tablero

PARTE JSFL, lógica de … algo que no es la vista del Panel

Llegamos a este punto con una parte muy importante ya definida y es la función a la que se llama desde ActionScript con la función MMExecute, si, así es, me refiero a la función createBoard, pero no sólo sabemos que tenemos que crear esa función, también sabemos que recibe tres parámetros, con lo cual ya nos hacemos a la idea de algunas tareas que tendremos que hacer. Pero bueno, vamos a pensarlo un poco más para ver que elementos necesitaremos, teniendo en cuenta que el tablero sea fácil de usar y modificar.
Bueno, pues partiendo de estas premisas y pensando lo más fácil posible, planteo la creación de tres MovieClip’s.

  1. Caja 1, que será un cuadrado de las dimensiones y el color indicados por parámetro.
  2. Caja 2, que es lo mismo que la caja 1 pero con el otro color.
  3. Tablero, éste tendrá 32 instancias de cada Caja para formar el tablero.

Bueno, ahora si con las cosas claras es más fácil programar, entonces vamos por partes, hemos dicho que necesitamos crear MovieClip’s, esto es muy sencillo, para hacerlo necesitamos utilizar el método addNewItem del Objeto library, éste método recibe dos parámetros, el tipo de Item y el nombre del mismo. A continuación un ejemplo:

fl.getDocumentDOM().library.addNewItem("movie clip", "nombre del MovieClip");

Luego necesitamos editar el MovieClip creado en el paso anterior, esto lo hacemos con el método editItem del Objeto library, éste método recibe como parámetro el nombre del Item que deseamos editar. A continuación un ejemplo:

fl.getDocumentDOM().library.editItem("nombre del MovieClip");

Ahora dentro del MovieClip antes de dibujar el cuadro debemos definir el color, esto lo hacemos con el método setCustomFill del Objeto Document, éste método recibe un objeto como parámetro, donde indicamos el color y el estilo de relleno. A continuación un ejemplo:

fl.getDocumentDOM().setCustomFill( {color:_nColor, style:"solid"} );

Una vez que hemos definido el color del cuadro ya podemos dibujarlo, esto lo hacemos con el método addNewRectangle del Objeto Document, éste método recibe dos parámetros, un objeto con la posición y las dimensiones del rectángulo que crearemos y el factor de redondeo de las esquinas del mismo. A continuación un ejemplo:

fl.getDocumentDOM().addNewRectangle( { left:0, top:0, right:Tamaño, bottom:Tamaño }, 0);

Listo, con estos pasos hemos conseguido crear un MovieClip, editarlo, definir un color de relleno y dibujar un cuadro, ahora simplemente tenemos que salir del modo edición de éste MovieClip, esto lo hacemos con el método exitEditMode del Objeto Document. A continuación un ejemplo:

fl.getDocumentDOM().exitEditMode();

Repetimos estos pasos y conseguiremos crear el segundo cuadro.

NOTA
Una buena práctica es encapsular estos pasos en una función para reutilizarla en más ocasiones.

Bueno, con esto ya tenemos dos MovieClip’s en la biblioteca, del tamaño y color deseados, ahora nos queda montar el tablero. Para esto necesitaremos crear otro MovieClip e instanciar 64 Items de la biblioteca, 32 de un color y 32 de otro. Esto lo conseguiremos con el siguiente código,:

fl.getDocumentDOM().library.addNewItem("movie clip", "tablero");
fl.getDocumentDOM().library.editItem("tablero");
var n = 0;
for (var i = 1; i <= 8; i++)
{
    for (var j = 1; j <= 8; j++)
    {
        var sItemName = (n % 2 == 0) ? "casilla1" : "casilla2";
        fl.getDocumentDOM().library.addItemToDocument({x:(j - 1) * _nSize, y:(i - 1) * _nSize}, sItemName);
        n++;
    }
    n++;
}
fl.getDocumentDOM().exitEditMode();

De ese código la parte nueva que vemos de JSFL es el método addItemToDocument, del Objeto library, éste método nos permite instanciar elementos de la biblioteca en el escenario, recibe dos parámetros, el primero es un objeto con las coordenadas X e Y en las que deseamos instanciar el Item y el segundo es una cadena con el nombre del Item que deseamos instanciar.

Y listo, eso ha sido todo, quizá contado trozo a trozo no tenga mucho sentido, pero mi intención era explicar cada uno de los método utilizados. A continuación pongo el código JSFL completo://Declaración de variables

var oDoc;
var oLib;
var sBoxName1 = "box_1";
var sBoxName2 = "box_2";
var sBoardName = "board";

/**
* @method	createBoard
* Método encargado de crear un tablero.
* @param	_nColor1	Number		Número que indica el color primario del tablero
* @param	_nColor2	Number		Número que indica el color secundario del tablero
* @param	_nSize		Number		Número que indica el tamaño de las casillas
* @return	Void
*/
function createBoard(_nColor1, _nColor2, _nSize)
{
    if (this.config())
    {
        //Lamada al método createBox para crear MovieClp's
        this.createBox(this.sBoxName1, _nSize, _nColor1);
        this.createBox(this.sBoxName2, _nSize, _nColor2);

        //Hacemos una comprobación, si existen el item en la biblioteca lo eliminamos.
        if (this.oLib.itemExists(this.sBoardName))	this.oLib.deleteItem(this.sBoardName);

        //Creamos y editamos el MovieClip tablero
        this.oLib.addNewItem("movie clip", this.sBoardName);
        this.oLib.editItem(this.sBoardName);
        var n = 0;
        for (var i = 1; i <= 8; i++)
        {
            for (var j = 1; j <= 8; j++)
            {
                var sItemName = (n % 2 == 0) ? this.sBoxName1 : this.sBoxName2;
                //Añadimos al MovieClip una instancia de la casilla en su posición correspondiente
                this.oLib.addItemToDocument({x:(j - 1) * _nSize, y:(i - 1) * _nSize}, sItemName);
                n++;
            }
            n++;
        }

        //Salimos del modo de edición y volvemos al escenario
        this.oDoc.exitEditMode();
    }
}

/**
* @method	createBox
* Método encargado de crear un Item de tipo MovieClip en la biblioteca, editarlo y dentro crear un cuadro de tamaño y color indicados por parámetro.
* @param	_sName		String		Cadena que indica el nombre del Item que se creará en la biblioteca.
* @param	_nSize		Number		Número que indica el tamaño del cuadro que se creará.
* @param	_nColor		Number		Número que indica el color del cuadro que se creará.
* @return	Void
*/
function createBox(_sName, _nSize, _nColor)
{
    //Hacemos una comprobación, si existen el item en la biblioteca lo eliminamos.
    if (this.oLib.itemExists(_sName))	this.oLib.deleteItem(_sName);

    //Añadimos y editamos el MovieClip
    this.oLib.addNewItem("movie clip", _sName);
    this.oLib.editItem(_sName);
    //Definimos el color y estilo del trazo
    this.oDoc.setCustomStroke( {color:"#000000", thickness:1} );
    //Definimos el color y estilo de relleno del cuadro
    this.oDoc.setCustomFill( {color:_nColor, style:"solid"} );
    //Dibujamos el cuadro
    this.oDoc.addNewRectangle( { left:0, top:0, right:_nSize, bottom:_nSize }, 0);
    //Salimos del modo de edición y volvemos al escenario
    this.oDoc.exitEditMode();
}

/**
* @method	config
* Método encargado de la configuración del JSFL
* @return	Void
*/
function config()
{
    fl.showIdleMessage(false);
    fl.outputPanel.clear();

    var ret = false;

    if(fl.getDocumentDOM())
    {
        //Obtenemos y configuramos las referencias al Documento y a la Biblioteca
        this.oDoc = fl.getDocumentDOM();
        this.oLib = this.oDoc.library;
        ret = true;
    }
    else
    {
        alert("Debes tener un documento abierto.");
    }

    return ret;
}

Aquí se pueden descargar los ficheros de este tutorial. Cualquier, duda, sugerencia o comentario, aquí estaré.

Entradas relacionadas:

Categories
General

La primavera y el destape

Con la primavera llega el buen tiempo, la ciudad se llena de colores, los jardines nos muestran su mejor cara, llega el momento de guardar los abrigos y ponerse ropa más ligera. El metro, el tren y los autobuses también acogen a la primavera, bueno, realmente no son los medios de transporte sino quienes vamos en ellos, pero es muy agradable ver como cambiamos y llenamos de color y alegría la vida.

Al ser mexicano y vivir en casi toda mi vida en una ciudad donde el clima no pasaba de primavera todo el año, nunca había notado eso del cambio de estaciones, bueno está bien, en invierno hacia un poco de frío pero quien me conozca sabrá que yo no lo pasaba más :P. Al tema, la cuestión es que cuando llegué a vivir a a España, pude ver claramente este cambio de estaciones. Además de conocer el frío, ver los árboles sin hojas y sufrir los veranos infernales, jejeje, :P, viví, conocí, descubrí la primavera. Que estación tan bella, y es por ésta que vuelvo de mi letargo para retomar mis andaduras en la blogósfera.

En mi anterior trabajo hablando sobre las características de la primavera con algunos amigos (Henry y Alex), especialmente sobre el destape que se ve con las calles con mujeres tan lindas que nos llenan de luz y alegría el día (lo digo en serio). Me explicaron que se llamaba destape y que tenía su origen en la época de finales del franquismo, cuando se quito gran parte de la censura en cine y televisión. ¿Y todo esto a qué viene?, pues que ahora mismo estoy en uno de los lugares que más me gustan de Madrid, en el Parque del Retiro, comiendo y descansando (aunque también escribiendo un post, :P) y se puede disfrutar de todo lo que he escrito, de la belleza de la naturaleza en su total expresión.

Saludos y en breve volverán los tutoriales sobre JSFL y demás cositas.

Categories
General

El peso de los bits, bytes, etc

Estaba leyendo este post que ví en menéame y no puedo más que ponerlo aquí para conseguir que llegue a más gente para hacernos pasar una buen rato con unas risas.

Perdonar si este no es el sitio correcto para esta pregunta.

He observado que al copiar datos o instalar programas en mi portátil, el peso del portátil aumenta.
Tengo problemas de espalda y mi médico me ha limitado el peso que puedo llevar, por lo que tengo que tener mucho cuidado con esto.

También he notado que mi XBox pesa más (compro y guardo los juegos arcade). Generalmente no viajo con mi XBox con lo que no es un problema para mí, pero noto el aumento de peso en ella.

Mi pregunta, ¿cuál es el ratio peso/archivo?

Por ejemplo, ¿Cuántos Gigabytes son 6 Onzas (28.3495 Gramos)? Temo que llegue el día en el que necesite un carrito para llevar mi portátil.

Gracias de antemano!

El original es este post de un foro de microsoft en inglés. No se pierdan las respuestas y los comentarios, son lo máximo. De los comentarios del blog donde lo leí rescato este que me ha encantado.

Definitivamente la solución pasa por desconectar el ventilador del procesador. Así el equipo empezará a entrar en calor y, por consiguiente a sudar, con la pérdida de peso que eso conlleva.

Saludos!!!

Fuentes:

Categories
AIR Eventos Flash Flex

Adobe Creative Suite 4 Tour Madrid

Para empezar bien el año la gente de Adobe nos propone una presentación sobre la nueva Adobe Creative Suite 4. Este evento será el próximo día 28 de enero en Madrid de 9 de la mañana a 6 de la tarde en la sala IMAX. Como es habitual el evento será gratuito con la única condición de registrarse, así que no esperen más.

Agenda

09:00 – 09:30 – Apertura de puertas y registro
09:30 – 09:45 – Presentación de Adobe Creative Suite 4
09:45 – 10:45 – Demostración de CS 4 Web Premium
10:45 – 11:00 – Pausa-café
11:00 – 11:45 – Presentación de HP
11:45 – 12:30 – Demostración de Adobe Photoshop CS4
12:30 – 13:30 – Demostración de CS 4 Production Premium
13:30 – 13:45 – Configuraciones de las Suites
13:45 – 15:00 – Pausa
15:00 – 16:00 – Demostración de CS 4 Design Premium
16:00 – 16:45 – Presentación de Apple
16:45 – 17:15 – Acrobat 9: funcionalidades para pro-creativos
17:15 – 17:30 – Fin del seminario

Al final me han convencido mis amigos, así que por ahí nos veremos. Saludos!!!

Categories
Eventos Flash

Lite Days: Eventos en vivo de BlocketPC

Lite Days

Los chicos del Spanish Mobile Adobe User Group ha organizado un súper evento en Barcelona para el día 20 de Febrero, me refiero a Lite Days. El evento es gratuito, siemplemente hay que inscribirse y ya está, jejeje, así de fácil a disfrutar de las charlas oficiales y extra oficiales con los colegas.

¿Sobre qué va? Pues sobre Flash Lite y todo su entorno aunque se puede ver toda la información en los enlaces del final. Y tal como dicen ellos:


Para lograr nuestro objetivo nos ayudará contar con los máximos representantes de algunos de los puntos a tratar, como Mark Doherty que nos hablará del Adobe Mobile Packager y el Distributable Player, también responsables de Zed y Thumbplay (empresas designadas por Adobe como Partners para la distribución de contenidos mediante el Adobe Distributable Player en Europa) y por supuesto que estaremos nosotros para poneros al día de 3 años de trabajo, y de los grandes planes de futuro que tenemos para BlocketPC.

Saludos!!!

Más información:

Categories
Música

Franco De Vita – No basta

Franco De Vita (oficial) es un cantante Venezolano del genero pop y balada romántica, porque como ya lo he dicho en otras ocasiones aquí en nomeva

no todo en la vida el rock and roll

En esta ocasión quiero compartir una bellísima melodía que me ayuda y da fuerzas para ser un buen padre.

Espero que la difruten, saludos!!!

Entradas relacionadas:

Categories
AIR Flash Flex Tutoriales

Flash & Flex Developer’s Magazine

Este post me trae recuerdos de aquellos viejos y buenos tiempos en los que se publicaban e-site o blankmgz (Dani Granatta y Salvador Cuenca) y era posible tener en papel los experimentos, los casos de éxito, los tutoriales, las técnicas avanzadas, las entrevistas y muchísimas cosas más que hoy en día hay que estar picando de un sitio, blog, foro, red social y demás.

Bueno, después de esa breve introducción quiero compartir este descubrimiento que hice hace poco y que por falta de tiempo no había podido compartir, hoy, en nuestros días, en estos momentos de transiciónen que el papel tiende a desaparecer y los eBooks o las eMagazines proliferan cada vez más aparece para nuestro deleite la revista Flash & Flex Developer’s Magazine que como es posible adquirirla en papel o en formato electrónico.

Si se dan prisa todavía se puede descargar desde aquí y se puede ver la versión online también.

Tal como dicen los amigos de Riactive sobre este último número de la revista:

En este ultimo numero vienen articulos interesantes tratando temas de como usar los googles maps con Flash o como desarrollar juegos para el Wii en flash!!!

Saludos!!!

Más información:

Categories
Eventos Flash Series

Concurso – 25 líneas de ActionScript

Feliz año a todos, con esto de las fiestas y las vacaciones no he podido estar tan atento al blog y mis lecturas como me gustaría, pero he podido disfrutar de mi familia.

Los niños y yo hemos dedicado casi 5 días a organizar y volver a montar todos los legos que tenemos, además de montar los regalitos (Guarda Costas y Torre, Cartero, Casa en la playa y Excavadora) que nos trajo papá noel :-P.

Ishtar y yo hemos visto la tercera temporada de la serie The IT Crowd, terminamos de ver la segunda temporada de Eli Stone hasta donde va y empezamos a ver la primera temporada de Dexter.

Entre amigos, familia, comidas, cenas, fiestas y la magia de la navidad he estado en otra onda. Pero bueno, ahora que sintonizo nuevamente mi frecuencia habitual y quito los bloqueos para estar atento a las noticias que el mundo de Flash tiene que contar me he quedado impresionado con los resultados del concurso de 25 líneas de ActionScript que organizó Keith Peters.

El ganador ha sido Marius Heil con este juego basado en texto y el código IMPRESIONANTE que utilizó es este. Gracias a ese talento se ha hecho con una copia de la CS4 Master Collection.

Los 12 finalistas son los siguientes:

Enhorabuena a Marius y los finalistas, así como agradecimiento a todos los participantes, jurado y a Keith por organizarlo.

Espero que lo disfruten tanto como espero hacerlo yo, jejeje, ahora nos queda estudiar el código y seguir aprendiendo. Los nombres de las películas SWF han sido obra de Nacho. 😛

Saludos y que paséis felices reyes!!!

Más información:

Categories
Flash

Feather Framework y Layout Manager for Flash Lite

Los chicos (mis amigos Raúl y Marcos) de BlocketPC nos han dado un magnífico regalo de navidad y es que han liberado Feather Framework y Layout Manager un par de frameworks para desarrollo de aplicaciones con Flash Lite. Tienen muy buena pinta, además viniendo de ellos nos podemos esperar lo mejor.

Feather Framework se puede descargar desde aquí, aunque es fundamental pasarse por la web del proyecto para estar al día.

Layout Manager para acceder a la documentación, las descargas y las demos de este framework, así como estar al tanto de las novedades hay que visitar la web del proyecto.

De sus palabras tenemos:

Actualmente tenéis disponibles los archivos fuentes de los proyectos, documentación y repositorios SVN para manteneros actualizados al día. Además estamos creando tutoriales y ejemplos de uso que estarán colgados en breve.

Saludos y felices fiestas!!!

Más información: