Flash&Flex Developer Magazine

mayo 12, 2009

Hace algún tiempo me encontre con  Flash&Flex Developer Magazine una revista de orientada a desarrolladores de tecnología flash y flex que se ofrece suscripción tanto para versión en formato digital como impresa, en cuanto a esto no sé muy como será el envío para quienes suscriban desde fuera de Estados Unidos, en cuanto a la versión en pdf, me han llegado todas, al principio costó mucho el primer contacto, peo luego no he tenido demoras. 

Sin lugar a dudas un recurso más que interesante para todo aquel que se relacione o se quiera interiorizar en esta tecnología.

En la revista se presentas contenidos (flash, flex, AIR, ActionScript, Flash Lite, PaperVision) del más alto nivel, escritos por grandes personalidades (descúbranlas ustedes pueden darle un vistazo a la version online), de todas formas lo que más destaco es la posibilidad que da de ser autor de artículos así como también revisor, partners.

Tengo que insistir que es interesantísima y aborda distintos niveles de conocimiento, un exelente artículo es el que escribió Bernardo Pineda  Will You Flex que lo pueden leer desde el blog del autor.

Espero que resulte interesante y productivo, los saluda Adru desde buenos aires mientras leo ffdmag.

Anuncios

AIR File API

marzo 29, 2008

Es una de las APIs más funcionales en AIR

Es posible crear archivos y directorios, abrir y leer archivos, escribir archivos, listar el contenido de un directorio, acceder a directorios, comunes entre S.O., inspeccionar propiedades de un archivo, son todas clases del paquete flash.filesystem

Las tres clases que manejan toda esta API son File, FileMode, FileStream para leer/escribir archivos. Cuando queremos trabajar con archivos el primer paso es referenciarlo, se pueden identificar dos formas de hacerlos, la primera es instanciando un objeto y definir la propiedad nativePathvar

archivo =  new air.File();   
JS
var archivo : file = new File(); 
AS
Archive.nativePath = “C:/Documents and Settings…”;
Si bien esta alternativa es totalmente valida la forma más usual es a través de un directorio especialvar archivo File;
archivo = File.documentsDirectory.resolve(“foto.jpg”);
var archivo;
archivo = air.file.documentsDirectory.resolve(“…”);

Los directorios especiales pueden usar el método resolve para obtener un path hijo o usar el mismo objeto como File, tenemos los siguientes directorios especiales:

 applicationStorageDirectory: Donde podemos almacenar archivos propios de nuestra aplicación applicationResourceDirectory: La carpeta donde están nuestros archivos de instalación
desktopDirectory: “Escritorio del usuario”
documentsDirectory: “Mis Documentos”
userDirectory: Generalmente en un nivel superior a Mis Documentos Las operaciones sobre los archivos pueden ser sincronicas o asincrónicas, en el caso de asincrónicas, debemos escuchar el evento “complete” o Event.COMPLETE

Los métodos existentes son:

File.copyTo()                             File.copyToAsync()
File.deleteDirectory()              File.deleteDirectoryAsync()
File.deleteFile()                        File.deleteFileAsync()
File.listDirectory()                    File.listDirectoryAsync()
File.moveTo()                           FilemoveToAsync()
File.moveToTrash()                 File.moveToTrashAsync()
FileStream.open()                    FileStream.openAsync()

Un detalle de las propiedades de los archivos:

  • exists
  • icon
  • isDirectory
  • isHidden
  • isPackage
  • isSymbolicLink
  • nativePath
  • parent
  • url
  • creationDate
  • extension
  • modificationDate
  • name
  • size
  • type

Para abrir y leer un archivo, debemos obtener una referencia al objeto File y luego crear un FileStreamvar flujo:

FileStream = new FileStream();
flujo.open(archive, modo);

Los modos posibles son: FileMode.READ, FileMode.WRITE, FileMode.APPEND, FileMode.UPDATE.
También tenemos métodos para escribir distintos tipos de datos writeBoolean, writeInt, WriteUTF y para leer en el mismo orden, creamos archivos binarios.
El trabajo con directorios es igual que con los archivos, hay que referenciarlos y también es posible crear directorios temporales y borrarlos.


SQL en AIR

marzo 20, 2008

AIR puede conectarse a datos mediante un RDBMS embebido, hablamos de SQLite, esto es parte de los 10 MB que incluye el runtime de AIR.

Existen dos modelos que podemos utilizar, Sincrónico / Asincrónico pero una vez elegido un método, hay que continuar siempre con el mismo.

Las clases que mas podemos llegar a utilizar:

air.SQLConnection: representa a la conexión
air.SQLStatement: representa una consulta
air.SQLResult: representa una respuesta de la Base de Datos
air.SQLEvent: representa un evento de base de datos
air.SQLerrorEvent: representa un evento de error en la base de datos.

Para ejecutar una consulta tipo SELECT:

  1. Crear y abrir la coneccion
  2. Crear el SQLStatement y especificar la base de datos
    1. var select = new air.SQLStatement();
    2. select.sqlConnection = conn;
  3. Definir el query
    1. select.text = “SELECT * FROM CLIENTES”;
  4. Definir eventos
    1. Select.addEventListener(air.SQLEvent.RESULT, respondio);
  5. Definir la función respondió para capturar el resultado
  6. Ejecutar
    1. select.execute()

Opcionalmente se pueden definir parámetros en el query y luego definirlos como parameters, también es posible traer solo los primeros XX resutados y luego ir pidiendo mas, para eso se usa execute.


Firmando Aplicaciones AIR

marzo 4, 2008

Las Aplicaciones de Adobe AIR se deben firmar para instalarse en otro sistema, esta es la filosofía de las aplicaciones construidas con AIR, existen alternativas de generación de paquetes AIRI provistos por los distintos plugins, pero esta alternativa está pensada para los casos que la aplicación deba ser firmada en un equipo distinto o cuando la firma se gestiona de forma distinta al desarrollo de la aplicación.

Firmando una aplicación

Como se menciona anteriormente el cuadro de firma digital nos da dos opciones, firmar con un certificado de digital o preparar un paquete AIRI. En el caso de firmar la aplicación, puede usar un certificado digital concedido por una entidad emisora de certificado raíz, o bien, crear un certificado con firma automática.

Cualquiera puede crear un certificado con firma, y es justamente ese el problema, a la hora de abrir una aplicación e instarla en nuestros equipos siempre serán más fiables las que han sido firmadas con las firmas que proveen las entidades emisoras.


El archivo AppDescriptor

marzo 1, 2008

El archivo descriptor de una aplicación AIR se llama “Application.xml” y es un archivo XML que setea algunas directivas que nuestra aplicacion AIR debera seguir, puede ser generado manualmente mediante cualquier editor de texto o con algun plugin. Dreamweaver nos ofrece una version muy simplificada y Basica con lo escencial que una aplicacion necesta. Aptana nos ofrece otro bastante mas completa bastante completo de todas formas siempre pueden ser modificacos posteriormente.

Esta es una aproximación a los nodos principales de un Application.xml standar con algunos comentarios.


<?xml version="1.0" encoding="utf-8" standalone="no"?>
 
<application xmlns="http://ns.adobe.com/air/application/1.0">
<id>ar.com.algonzalez.example.seteos</id><!-- Identificador único de caracter obligatorio es por esto que se recomienda una notacion del tipo direccion web inversa. -->
<filename>seteos</filename><!-- Un nombre de archivo para la aplicacion de caracter obligarorio, no lleva extension. -->
<name>seteos</name><!-- Este es el nombre que se visualizara duranta la instalacion de la aplicacion de caracter opcional -->
<version>1.0</version><!-- Designa en forma de texto una version para la aplicacion (V1, Version 1.0, Beta, Release, etc) es obligatorio . -->
<description>Aplicacion de prueba de seteos standart para una aplicacion AIR</description><!-- Tambien de caracter opcional y se podra ver en durante la instalacion de la nuestra aplicacion AIR. -->
<copyright>No tengo copy right</copyright><!-- Una informacion de copyright de caracter opcional -->
<initialWindow><!-- Es obligatorio y se usa de contenedor para configurar algunas opciones de la ventana inicial. -->
<content>seteos.html</content><!-- Es el pricipal HTML de la aplicacion y es obligatorio. -->
<title>Mi Aplicacion AIR<title/><!-- Titulo de la ventana principal. es Opcional. -->
<systemChrome>standard</systemChrome><!-- Puede contener dos valores "standard" or "none". Es opcional y por defecto standard. -->
<transparent>false</transparent><!-- Los valores pueden ser true o false, por defecto false y se puede aplicar solamente cuando systemChrome sea "none". -->
<visible>true</visible><!-- para inicializar la ventana en visible o no, es opcional y por defecto esta en false. -->
<minimizable>true</minimizable><!-- Si estara disponible la opcion de minimizar. Default true. -->
<maximizable>true</maximizable><!-- Si estara disponible la opcion de maximizar. Default true. -->
<resizable>true</resizable><!-- Si estara disponible la opcion de redimensionar. Default true. -->
<width>1024</width><!-- Espesifica el ancho inicial de la ventana. Opcional. -->
<height>768</height><!-- Espesifica el alto inicial de la ventana. Opcional. -->
<x>200</x><!-- posicion inicial de la ventana en x. Opcional. -->
<y>200</y><!-- posicion inicial de la ventana en y. Optional. -->
<minSize>800 600</minSize><!-- Especifica la configuacion minima de visualización de la ventana, Opcional. -->
<maxSize>1280 1024</maxSize><!-- Especifica la configuacion maxima de visualización de la ventana, Opcional. -->
</initialWindow>
<icon> <!-- El icono que representara la aplicacion se recomienda usar todas las medidas para su correcta visualizacion. -->
<image16x16></image16x16>
<image32x32></image32x32>
<image48x48></image48x48>
<image128x128></image128x128>
</icon>
<fileTypes><!-- Defines un tipo de archivos. Opcional. -->
<fileType> <!-- El nombre que el sistema mostrara para registrar un tipo de auchivo. Requerido. -->
<name></name> <!-- La extension que se va a registrar. Requerido -->
<extension></extension> <!-- Una descripcion del tipo de archivo. Opcional. -->
<description></description> <!-- El tipo MIME. Opcional. -->
<contentType></contentType> <!-- El icono que se va a mostrar por el tipo de archivo Opcional. -->
<icon>
<image16x16></image16x16>
<image32x32></image32x32>
<image48x48></image48x48>
<image128x128></image128x128>
</icon>
</fileType>
</fileTypes>
</application>


Adobe AIR 1.0 y Flex 3.0 en “Produccion”

febrero 26, 2008

Ayer 25 de febrero Adobe comunico a la comunidad que Adobe AIR y Flex 3 dejaban de ser Betas.

Adobe AIR 1.0 en su versión final fue lanzado sin grandes cambios de su versión Beta 3, y como lo había prometido Adobe el runtime es gratuito, no OpenSource (Se supone que debe ser por el flash player).
Como dije anteriormente no hay grandes cambios de su versión Beta pero en un principio lo que si es seguro que habrá que recompilar los proyectos realizados con las versiones Beta2 y Beta3, el resto me ire enterando despues de leer en detalle los papers.

Flex 3.0 también se ha lanzado y también como se preveía su runtime no solo es gratuita si no también OpenSource. Para los desarrolladores interesados se puede bajar una versión trial de 60 días que adobe pone a disposición de Flex Buider 3 para Windows y Mac.
También tenemos nuevo proyecto para flex 4 con nombre de código “Gumbo” que prevé lanzamiento para el 2009.


Acerca de AIR

febrero 22, 2008

Adobe AIR  (Introducción al concepto)

Antes conocido como APOLLO actualmente se encuentra en versión BETA3, se prevé la versión final para primer cuatrimestre de 2008 versión 1.0 (Ya en estos días.)

A este tipo de tecnología se la conoce como Rich Desktop Applications o también conocida como Escritorio 2.0. Hasta el momento no tiene competencia, hay cosas similares que podrían tener algunos puntos de comparación. (Google Gears, Openlaszlo, Prism, Silverlight).

  •  Openlaszlo: Posee una versión comercial que se llama laszlowebtop pero no está muy maduro, se puede bajar una trial desde la web oficial de openLaszlo.
  • Prism: Esto es algo que está preparando mozilla pero aun está muy verde, aun no da señales de vida de hecho no hay nada hecho.
  • Google Gears: Básicamente una extensión para navegadores, permite crear aplicaciones que puedan ejecutarse sin conexión a internet, se encuentra en versión Beta.
  • Silverlight: Este es quizá el más parecido y el más desarrollado aunque es de destacar que tampoco son lo mismo.

¿Con que tecnologías  puede trabajar?

  • (X)HTML + CSS + JavaScript
  • ActionScript 3 y 2 desde Adobe Flash CS3.
  • ActionScript 3 desde Flex 3
  • Adobe PDF

Lo mejor y lo más importante que nos ofrece AIR es la capacidad de mezclar todo esto

Herramientas:

  • Adobe AIR SDK
  • Adoby AIR Runtime aqui
  • Adobe AIR extension for Dreamweaver CS3
  • Adobe AIR Update for Flash Professional CS3
  • Adobe Flex3 (Beta 3)
  • Aptana Studio con Plugin de Adobe AIR

Podemos encontrar lo que necesitamos en http://labs.adobe.com/technologies/air/ 

Hasta donde sabemos adobe ofreció el SDK y el Runtime gratuitos y si mal no recuerdo (prometo averiguarlo) el SDK será OpenSource.

Compatibilidad

  • Hoy: Windows 2000/Xp/Vista y MacOs
  • En un futuro muy próximo: Linux se prevé algo durante el 2008.
  • En un futuro no tan próximo:  Mobile: se prevé para el 2010

El Runtime:

Compila dentro de un archivo AIR  / Desde la web (badge) Novedad.

Ventajas sobre Browser

  • Administrador de archivos
  • Uso de la red a bajo nivel
  • Bases de datos local
  • Soporte drag and drop
  • Soporte Portapapeles
  • Puede Trabajar en la barra de notificaciones
  • Puede ser transparente y/o Modal y/o Fullscreen
  • Puede trabajar desconectado
  • Pueden invocarse con un tipo de archivo.

Bibliografía

Hasta donde se existen manuales que ofrece adobe en formato pdf y un libro de O’Reilly también en pdf y todos de distribución gratuita. 

Para Concluir 

Esta es o pretende ser una introducción sobre Adobe AIR, el contenido de este articulo no contiene conocimientos técnicos importantes, no hay códigos ni ejemplos prácticos, tampoco hay implementado ningún Patrón de Diseño, pero para alguien que no tiene idea de que se trata la tecnología, definitivamente es por donde se debe empezar.