chblogBlog personal de Cristian Hernandez

Flex Module for Apache and IIS

En Flex by Cristian Hernández on the May 5th, 2007

En Adobe Labs han desarrollado un Módulo Flex para Apache e IIS. Este sirve para realizar una compilación en tiempo de ejecución de archivos MXML y Actionscript 3. Es decir que si colocamos, http://localhost/Main.mxml en nuestro browser veremos directamente el archivo SWF que se genera. Yo lo instalé, lo probé, realmente es muy rápido y funciona bien.
Está disponible para los siguiente servers:

  • Apache 1.x/2.x (Windows, MacOS, o Linux)
  • IIS version 5.1, 6, o 7 (Windows)

Además requiere:

  • Flex SDK 2.0.1 o superior
  • JRE 1.4.2 o superior

Mas info: Flex Module for Apache and IIS en Adobe Labs

Flex: Cairngorm Framework

En Flex by Cristian Hernández on the April 27th, 2007

Estuve trabajando mucho con el Framework para desarrollo en Flex Cairngorm. Me parece muy útil para acelerar el desarrollo, pero principalmente para la organización, actualización y reutilización del código, también para la escalabilidad del proyecto.

http://www.cristianhernandez.org/blog/wp-content/uploads/2007/04/cairngorm2_rpc.swf
.
Cairngorm está basado en el patrón de diseño Model View Controller y está compuesto por:
Model Locator:
Es donde se guardan todas las los datos de la aplicación (Value Object) estos VO son objetos Bindables, es decir, si cambian sus valores se actualiza en todos los lugares donde se utilicen.
View:
Las vistas de la aplicación, son componentes o grupos de componentes donde se encuentra la parte gráfica o visual.
Front Controller:
Recibe todos los eventos que luego son mapeados en los commands.
Command:Es donde está toda la logica, donde se procesan los eventos, se actualizan los VO.
Delegate:
Son llamados por los Commands y "selecciona" que service utilizar, que parámetros pasar, aqui están instanciados todos los services.
Service:
Están todas las llamadas a los servicios remotos, XML, WebServices, AMFPHP, etc.

Algunos recursos:

Bueno, eso es todo por ahora, más adelante seguiré hablando de esto ya que me ha gustado mucho.

Mini-FAQ sobre Flex 2

En Flex, Actionscript 3, Adobe by Cristian Hernández on the April 24th, 2007

Hace tiempo que vengo hablando sobre Flex 2, posteando ejemplos y otras cosas salteándome cualquier tipo de introducción. Ultimamente recibí varias consultas de desarrolladores que quieren conocer Flex, por eso armé algunas consultas comunes y armé este pequeño FAQ.

¿Para que sirve Flex?
Básicamente Flex está pensado para el desarrollo de RIAs (Rich Internet Applications), o sea aplicaciones Web con elementos de formulario, interacciones avanazadas, conexión a base de datos.

¿Como es la forma de trabajar en Flex?
En resumen, son archivos XML (MXML) donde se encuentran las llamadas a los componentes, estados, vistas, etc. Los componentes pueden ser desarrollados por Adobe, o componentes propios. La programacíón se realiza en Actionscript 3, y estos códigos se colocan en archivos .as.

¿Como se realiza la compilación de los proyectos?
Básicamente hay dos formas, en tiempo de ejecución en un Flex Server o con el SDK de Adobe. En el Flex Server se suben los archivos .mxml y desde el browser se visualizan archivos swf. Una analogía conocida sería, se suben PHP y se visualizan HTML, este servidor está basado en Java. La otra es compilando los mxml con el SDK y subir directamente los archivos SWF.

¿Donde puedo conseguir el SDK?
El SDK se puede bajar del sitio de Adobe y es gratis.

¿Hay alguna herramienta para desarrollar Flex 2?
Si, se puede utilizar el Flex Builder 2, este es un plug-in para Eclipse que tiene asistentes muy útiles para la codificación, y también tiene una interfáz para el desarrollo visual.

Para ejecutarse, del lado cliente, ¿se necesita lago más que el FLASH Player?
No, se necesita tener instalado el Flash Player 9. Y es compatible con cualquier navegador que tenga esa versión de Flash Player.

¿Que tecnología de servidor debo utlizar para trabajar con Flex y base de datos?
Cualquiera, PHP, ASP, .NET, JSP, cualquier tipo de tecnología de servidor, utilizando Flash Remoting, XML, WebServices, WebOrb, etc.

Bueno, eso es todo por ahora, es muy básico pero espero que sirva para aclarar algunas dudas :)
Cualquier cosa que quieran agregar o corregir no tienen mas que ponerlo en los comentarios.

Error con los uploads en Flash 8 y Flex 2

En Actionscript, Flex by Cristian Hernández on the March 20th, 2007

Después de pubicar el componente para upload he recibido muchos mensajes que me comunicaban el mismo error:

Error #2044: IOErrorEvent no controlado: text=Error #2038: Error de E/S de archivo.

Tiempo después, en un proyecto personal, experimenté yo mismo en un proyecto personal con Flex, por suerte uno de los mensajes que recibí, de David, me dió una solución:

El problema se encuentra en la configuración de mod_security del Apache que bloquea el acceso del archivo temporal creado en el servidor al script 'upload.php'. Así que si tienen acceso a la configuración del Apache tienen que configurar este módulo para que permita este tipo de upload.

En mi caso, como no tengo acceso a la configuración del Apache, tuve que buscar una solución "alternativa":
Hay que modificar el .htaccess para deshabilitar el mod_security agregando las siguientes lineas:

SecFilterEngine Off
SecFilterScanPOST Off

Probé con esto y anda bien, espero que no traiga muchos problemas de seguridad, pero los uploads andan ;)

Flex DirBrowser Component

En Flex, Actionscript 3 by Cristian Hernández on the March 19th, 2007

Este componente es una mejora del componente File Upload que publiqué anteriormente.

Es simple, explora un directorio que se le pasa como parámetro, lista todos los archivos están en ese directorio, se pueden borrar y agregar nuevos archivos. Está pensado para imágenes.
Ejemplo
Flex Sources
Descargar todos los archivos

Apollo for Adobe Flex Developers Pocket Guide

En Flex, Apollo by Cristian Hernández on the March 17th, 2007

Apollo sigue prometiendo, Adobe Labs ha sacado una guía de Apollo para desarrolladores Flex, y está disponible para su descarga gratuita.


Apollo for Adobe Flex Developers Pocket Guide

Flex file upload component

En Flex by Cristian Hernández on the February 28th, 2007

Hace un tiempo publiqué un ejemplo de upload con flex, este era bastante básico.
Aqui dejo otro ejemplo, pero este hecho componente, es más fácil de utilizar y de reutilizar.
Componente Upload
Ejemplo
Sources

Adobe Apollo

En Flex, Adobe, Apollo by Cristian Hernández on the December 1st, 2006

Adobe Apollo es un producto pronto a salir, que por lo que pude ver promete mucho, como dice en Adobe Labs:

Apollo is a cross-OS runtime that allows developers to leverage their existing web development skills (Flash, Flex, HTML, Ajax) to build and deploy desktop RIA’s.

La verdad que estoy muy ansioso por poder probar este producto.

Link: Adobe Apollo en Adobe Labs

Upload de archivos con Flex 2

En Flex, Actionscript 3 by Cristian Hernández on the July 31st, 2006

En estos días estoy haciendo un admin para un sitio web, estoy utilizando Flex con PHP y MySQL. Esta herramienta me está simplificando mucho las cosas, lo que antes eram varios xhtmls otros tantos php y si queremos que quede mas usable otros muchos js para hacer un ajax, hoy son solo unas 50 lineas en un mxml y otro poco de código en Actionscript. Trabajando, me topé con un problema, hacer un upload de archivos con Flex, mucha info no encontré en internet, así que me las arreglé bastante solo, aquí comparto el resultado, espero que sirva.
Archivo mxml:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal"
creationComplete = "init()">
<mx:Script source="subir.as"/>
<mx:Panel title="Subir Imagen"
paddingBottom="10"
paddingLeft="10"
paddingRight="10"
paddingTop="10">
<mx:Form width="100%" height="100%">
<mx:FormItem label="Imagen">
<mx:Text id="file_path"/>
<mx:ProgressBar id="uploadProgress" label="" mode="manual" />
<mx:ControlBar horizontalAlign="right">
<mx:Button id="browseUpload" label="Buscar..." click="buscar()"/>
<mx:Button id="startUpload" label="Upload..." click="subir()" />
</mx:ControlBar>
</mx:FormItem>
</mx:Form>
</mx:Panel>
</mx:Application>

Archivo Actionscript:

import flash.net.FileReference;
import flash.net.URLRequest;
import flash.net.URLRequestMethod
private const UPLOAD_URL:String = "upload.php";
private var imagesFilter:FileFilter = new FileFilter("Images", "*.jpg;*.gif;*.png");
private var photoShop:FileFilter = new FileFilter("Archivos Photoshop", "*.psd");
private var fileref:FileReference = new FileReference();
private function buscar():void {
        fileref.browse([imagesFilter,photoShop]);
}
/**
* cuando se ha seleccionado el archivo coloco el nombre en el text
* y habilito el botón subir
*/

private function seleccionar(event:Event):void {
        startUpload.enabled = true;
    file_path.text = fileref.name;
}
/**
 * subo el archivo
 */

private function subir():void{
        var request:URLRequest = new URLRequest();
        request.method = URLRequestMethod.GET;
    request.url = UPLOAD_URL;
    fileref.upload(request);
}
/**
 * chequeo el progreso
 */

private function progressHandler(event:ProgressEvent):void {
        uploadProgress.setProgress(event.bytesLoaded, event.bytesTotal);
}
private function completeHandler(event:Event):void {
        uploadProgress.label = "UPLOAD COMPLETE";
}
/**
 * inicializo la applicación
 */

private function init():void{
        startUpload.enabled = false;
        fileref.addEventListener(Event.SELECT, seleccionar);
        fileref.addEventListener(ProgressEvent.PROGRESS, progressHandler);
        fileref.addEventListener(Event.COMPLETE, completeHandler);
}

Bajar Archivos y ejemplo

Ejemplo del HTTPService de Flex 2: last.fm

En Flex by Cristian Hernández on the July 22nd, 2006

En uno de mis posts anteriores publiqué un "RSS reader" utilizando Actionscript 3 y Flex 2.
Ahora realicé una prueba similar, pero con mi ranking de artistas más escuchados en last.fm:

wp-content/flex/xml/lastfm.swf

(requiere Flash Player 9)
En este caso no utilicé la Class XML de Actionscript 3 para parsear el XML, lo cargué con la Class HTTPService de Flex 2. Es realmente simple, acá va el código:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="horizontal"
creationComplete="fmRequest.send()" >
<mx:Style>
Application {
background-color: #ffffff;
color: #000033;
theme-color: #1167B8;
}
Panel {
header-colors: #1167B8, #1167B8;
shadow-direction: right;
}
</mx:Style>
<mx:HTTPService
id="fmRequest"
url="http://ws.audioscrobbler.com/1.0/user/locopro/topartists.xml"
useProxy="false" />
<mx:Panel width="420" height="400" layout="horizontal"
title="Mi ranking en Last.fm">
<mx:DataGrid x="20" y="20" id="dgArtists" width="400" height="350" dataProvider="{fmRequest.lastResult.topartists.artist}">
<mx:columns>
<mx:DataGridColumn headerText="Rank" dataField="rank" width="50"/>
<mx:DataGridColumn headerText="Artist" dataField="name"/>
<mx:DataGridColumn headerText="Plays" dataField="playcount" width="50"/>
</mx:columns>
</mx:DataGrid>
</mx:Panel>
</mx:Application>

Para compilar esto solo hay que salvarlo con un archivo con extensión mxml y compilarlo con el SDK de Flex 2.

10 Razones para usar Flex

En Flex by Cristian Hernández on the July 11th, 2006

Que buenas 10 razones para usar Flex
Me quedo con esta:

Rich Media Support. The Flash platform has absolutely blind-sided the previously dominant media players on the Web (Real, Windows Media). It is light and works without installing this or that. Flex makes it simple to embed both audio and video content right into your applications.

Principalmente para detractores de Flash-Flex, la primer razón para no usarlo es "hay que descargarse un Player". Pero en ese player "sirve" para todo, video, sonido, interactividad. Y es mucho más amigable que el Windows Media, Quick Time, Real Player u otros.

Flex y Accesibilidad

En Accesibilidad, Flex by Cristian Hernández on the July 10th, 2006

Interesante informe esctito por Andrew Kirkpatrick y Bob Regan, dos desarrolladores expertos en accesibilidad de Adobe, sobre accesiblilidad de los componentes de Flex. Tema que me preocupa mucho en el momento de ponerme a trabajar con esta herramienta.
Link: Flex Component Accessibility
Via: onflex.org

Next Page »