martes, 30 de marzo de 2010

Flex y JAVA con BlazeDS

Uno de los grandes enemigos de Flex, es su “imposibilidad” para acceder directamente a las bases de datos o al disco duro de usuario cuando se utiliza en entornos web (SWF), por lo que siempre es necesario utilizar lenguajes diferentes del lado del servidor, lenguajes como JSP, PHP, ASP, ColdFusion entre otros, y en la mayoría de las oportunidades se hace por medio de archivos XML, que para iniciar son muy buenos, pero cuando se manejan grandes volúmenes de datos, es necesario manejar herramientas más poderosas, por eso es que vamos a trabajar con BlazeDS, como puente entre Flex y JAVA.

imagen Flex y JAVA



--

Antes de empezar, tenemos que definir que es BlazeDS, y porque debemos trabajar con él.

BlazeDS: es un servidor remoto, hecho con JAVA para la interacción entre los lenguajes ActionScript 3.0 y JAVA, sirve como un puente de comunicación que se encarga de “traducir” de un lenguaje a otro, para que la interacción entre lenguajes y tecnologías sea transparente y no sea necesario hacer trucos raros a la hora de enviar información de una lado para otro.

¿Cómo empiezo? Es fácil (no me pareció tan fácil al comienzo, sufrimos mucho con unos aprendices para lograrlo, pero esto es para que no le pase a los demás…muchos soldados murieron en la guerra solo para que TU, si TU puedas hacer las cosas sin dificultades, lo menos que puedes hacer es al final de esto dejar tus comentarios!... ese fue el último deseo de los caídos en guerra), primero que todo debes ir a la página de proyectos de código abierto de Adobe, donde encontraras información del SDK de Flex, del proyecto BlazeDS y el proyecto Tamarin, que es un proyecto en conjunto con Mozilla Foundation para el manejo del estándar ECMAScript para el lenguaje ActionScript 3.

Lógicamente debemos ir al link de BlazeDS, donde se encuentra una leve descripción de la herramienta, el link de descarga de los archivos ejecutables y del código fuente del proyecto. Después de presionar donde dice Download BlazeDS now, iremos a la página de detalles de la descarga, donde se explican los términos de uso y nuevas posibilidades para descargar buscamos la primera opción (Release Builds), esto nos lleva a una nueva página donde debemos descargar el BlazeDS Turnkey.

Es un archivo .ZIP que contiene una serie de carpetas y archivos, .WAR, estos últimos archivos, son aplicaciones que nos permiten ver ejemplos de prueba, una consola para el monitoreo de nuestros proyectos y el BlazeDS que cuenta con el código que debemos utilizar para crear los proyectos, sin embargo no vamos a utilizar estos archivos.

Antes de empezar recomiendo crear una copia de seguridad del paquete que descargamos, ya que por efecto de las pruebas varios de esos archivos se pueden dañar.

Después de hacer la copia de seguridad vamos a la carpeta Tomcat, que contiene las carpetas habituales dentro de un Servidor Tomcat Instalado, la idea de este paquete, es instalarlo ya que tiene incorporadas todas las herramientas de BlazeDS sin embargo en ocasiones esto resulta muy dispendioso y genera muchos problemas, así que no vamos a utilizar este tomcat sino que vamos a utilizar uno instalado con el instalador del tomcat que se puede encontrar en su sitio web.

Nota: a la hora de instalar el apache tomcat, recuerda poner usuario y contraseña, preferiblemente admin, admin, ya que es la configuración más utilizada.

Dentro de la carpeta Tomcat que estábamos viendo, vamos a ir a esta ruta: Tomcat/webapps/samples/ en ella encontraremos todos los ejemplos que vienen con este paquete y dos carpetas muy comunes de los proyectos WEB de java, encontramos la carpeta WEB-INF y META-INF, ahora copiamos la carpeta WEB-INF y la pegamos en una nueva carpeta, que puede estar en cualquier sitio dentro de nuestro sistema de archivos, recomiendo poner una carpeta llamada con el nombre de nuestro proyecto, luego una nueva carpeta con el mismo nombre, que es donde vamos a almacenar el código del proyecto y dentro de esa carpeta ponemos la carpeta WEB-INF que acabamos de copiar.

En este caso voy a trabajar con esta ruta: D:/TestBlazeDS/TestBlazeDS

Para la carpeta WEB-INF esta: D:/TestBlazeDS/TestBlazeDS/WEB-INF

Además de eso debemos crear una carpeta para las páginas así: D:/TestBlazeDS/TestBlazeDS/WebPages

Ahora abrimos el IDE Netbeans, también es posible hacerlo con Eclipse o el IDE de desarrollo que utilicen para JAVA, primero que todo debemos crear un nuevo proyecto de JAVA de esta manera:

En Netbeans, Proyecto Nuevo, en categorías seleccionamos JAVA Web y en los tipos de proyectos, ponemos la opción Aplicación Web con código existente (Web Application with existing sources), siguiente.

En la siguiente ventana: Nombre y Ubicación, dejamos los valores de este modo:

Location: Se busca la carpeta que creamos dentro del disco D en mi caso

D:\ TestBlazeDS\ TestBlazeDS

Project name: Es el nombre de nuestro proyecto, podemos poner cualquier nombre, sin embargo es preferible manejar el nombre de la carpeta.

TestBlazeDS

Project folder: Es la misma ubicación del proyecto.

D:\ TestBlazeDS\ TestBlazeDS

Presionamos siguiente, ahora se deben poner los valores del nuevo servidor.

La última ventana de configuración del proyecto es quizás la más importante, debemos dejarla de esta manera:

Web Pages Folder: D:/TestBlazeDS/TestBlazeDS/WebPages

WEB-INF content: D:/TestBlazeDS/TestBlazeDS/WebPages/WEB-INF – Se debe especificar la carpeta WEB-INF que habíamos copiado hace un rato.

Libraries Folder: D:/TestBlazeDS/TestBlazeDS/WebPages/WEB-INF/lib – Se especifica la ubicación de las librerías, que se encuentran dentro de la carpeta WEB-INF.

Source Package Folders: D:/TestBlazeDS/TestBlazeDS/WebPages/WEB-INF/src -- Se indica la ubicación del código de nuestro proyecto, debe ser la carpeta src.

Presionamos terminar y ahora creamos un nuevo paquete llamado Test y una clase de prueba donde debemos crear un método simple que retorno un valor sin recibir parámetros y otro que reciba parámetros y retorne un dato.

clase Prueba con métodos

Tenemos dos métodos, el primero retorna un String y el segundo recibe un par de enteros y devuelve la suma de los dos.

Al tener los métodos listos, ahora debemos registrar la clase en un archivo de configuración. El archivo se encuentra en WEB-INF/flex/remoting-config.xml, al abrirlo debemos ir al final del archivo, antes del último nodo y poner esto:

Nodos destination

Nota: No olviden poner el atributo id para el primer nodo.

Finalmente en el archivo web.xml que se encuentra dentro de la carpeta Configuration Files, debemos poner esto al final, y antes del último nodo:

Configuración de web.xml

Limpiamos y construimos el proyecto y lo cargamos en el Tomcat, por medio del archivo .WAR que se crea cuando seleccionamos la opción Clean And Build, este es todo el proyecto por parte de JAVA.

Ahora, abrimos Flash Builder 4 (con respecto a Flex Builder 3 no hay muchos cambios) y creamos un nuevo proyecto WEB y en la opción de tecnologías del servidor, seleccionamos J2EE, Use remote object Access service y seleccionamos BlazeDS.

Presionamos siguiente y ahora debemos configurar la información del servidor de esta manera:

En Root Folder: C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\TestBlazeDS

En Root URL: http://localhost:8080/TestBlazeDS/

Context Root:/TestBlazeDS/

Cuando hacemos esta configuración, debemos presionar el botón Validate Configuration, que evalúa si la información es adecuada y si se puede hacer la conexión, en la parte inferior el campo Output Folder, debe quedar asi:

C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\TestBlazeDS\TestBlazeF-debug

Presionamos finalizar ya que no vamos a añadir librerias al proyecto y creamos un formulario de esta manera:


formulario Flash Builderr 4

RemoteObject, es el encargado de generar la conexión entre JAVA y Flex, y el atributo destination debe llamarse igual a como está en la configuración de JAVA. finalmente agregamos el código:


El método init() se llama desde la propiedad applicationComplete de la etiqueta Application, el método saludar() es llamado por el evento click del botón saludar y el método sumar() es llamado por el botón sumar.

Esto es TODO, realmente es solo un poco comparado con todo lo que permite hacer BlazeDS, en un próximo tutorial mostraré como enviar objetos entre clases, y manejar vectores de JAVA como proveedores de datos para controles de Flex.

Espero que les sirva, y dejen sus comentarios!
------

Leer más...

domingo, 28 de marzo de 2010

Novedades del Visual Basic 10 y C# 4

He querido comentarles las novedades que hay en las nuevas versiones de Visual Basic 10 y C# 4. Aunque en un tiempo no muy lejano estos serán lenguajes pares jejeje. Pero mientras eso sucede, en la versión del nuevo Core de Microsoft hay muchas novedades que les mostrare en el transcurso de los siguientes blogs.

--
Una novedad de las tantas que tiene C# 4.0 es el soporte de parámetros por nombre y opcionales, esto vinculado al lenguaje Visual Basic desde que tengo uso de razón. y un tema de los cuales era de discusión con los consultores de los diferentes lenguajes. pero bueno, Una ventaja porque recordemos que teníamos que colocar el famoso Missing, al pasar parámetros que no usaríamos, o simularlo usando Overloads que era algo desgastante para el desarrollador, y mucho mas para la CPU.

Teniendo en cuenta la Imagen, que esta basada sobre el Framework 3.5, nos damos cuenta que para poder simular los parámetros opcionales debíamos declarar muchas sobrecargas.

Sobre Cargas

Teniendo esto como una solución a medias, porque si hablamos de rendimiento, no será la opción mas recomendable. Como todos sabemos cuando se compila una aplicación .net, el resultado es Lenguaje Intermedio (IL) o (MSIL), y si lo examinamos detalladamente lo que relazaría este fuente es ser declarado el método con todos sus parámetros.

Pero en la nueva versión de C# 4, la misma situación se vería de otra manera.

Parametros Opcionales

no es necesario usar sobrecarga ya que podríamos omitir los parámetros que no usaremos. Ahora para llamar los parámetros de este método se podrían realizar por nombre como se observa en la siguiente pintura.

Parametros por Nombre

En VB10 también encontramos numerosas novedades para destacar como los inicializadores de colecciones, esto también posible en C# 4, pero para esta demo lo hare en VB.

Inicializadores

Como vemos, la inicialización de estas colecciones es muy fácil de implementar, esto permitiendo rendimiento al desenvolvedor.

Otra novedad para destacar es la creación de funciones dentro del lamba, bueno aunque se realiza un delegado de igual manera, pero la novedad consiste en la creación de multi-línea como lo muestra en la imagen.

Funciones

Estaré colgando en los siguientes blogs, la continuación de las novedades de los lenguajes.

Saludos y no Olviden Comentar.

también dejo el Fuente a continuación con los dos Lenguajes.


Leer más...

sábado, 27 de marzo de 2010

Expresiones Regulares

Fabian Castro probablemente familiar y quizás el sobrino favorito de Fidel el amable Castro, escribió un tutorial muy interesante en su blog sobre el manejo de expresiones regulares y después de horas y horas de ruegos, sobornos, calumnias y finalmente de secuestrar a su hermano y empezar a enviarle uno a uno los dedos de las manos y los pies en sobres de manila, aceptó que lo copiara y pegara en este blog como un articulo escrito por mi pero que tiene toda la autoría de él.

^[a-zA-Z0-9_-]{2,}@[a-zA-Z0-9_-]{2,}\.[a-zA-Z]{2,4}(\.[a-zA-Z]{2,4})?$ ¿Alguna vez han visto algo como esto? Tal vez en las clases de matemáticas o calculo algebraico ya que esto parece una fórmula matemática o física, o algo así, que solo lo entendería un ingeniero de la NASA (¿porque siempre ellos son los mejores?), pero no amigos esto es una expresión regular una sección de código universal que se usa en los buscadores de palabras o simplemente en una validación de datos, pero ¿cómo que validación de datos? Si eso se puede hacer contra una Base de datos y ya!, pero la verdad amigos del conocimiento eso gasta mucho recurso de sistema y además es tedioso para el usuario final de alguno de nuestros programas, por ejemplo datos como correos, teléfonos, celulares, direcciones entre otros datos que tienen una estructura definida o estándar.

Banner, expresiones regulares


--
por ejemplo:
• Un correo siempre tendrá un símbolo
@ en la mitad del correo
• Un Teléfono sea fijo o celular siempre serán números
Eso por mencionar algunos, esos datos se pueden validar en el lado del usuario, solo con unas pocas líneas de código en cualquier lenguaje de programación.

La mayoría por no decir todos los lenguajes de programación soportan expresiones regulares entre ellos están:
• JAVA
• .Net Framework
• javaScript
• PHP
• Pyton
• Pealr
• ActionScript 3 (AS3)

Las expresiones regulares o también llamados patrones nos sirven como ya mencionamos para validar datos, pero para ello usan una estructura estándar para realizar las validaciones por ejemplo en
^[a-zA-Z0-9_-]{2,}@[a-zA-Z0-9_-]{2,}\.[a-zA-Z]{2,4}(\.[a-zA-Z]{2,4})?$ cada símbolo representa algo y sirve para algo dentro de la cadena expliquemos primero los símbolos básicos como son :
^ : representa el inicio de la cadena, eso quiere decir que el dato a validar debe empezar por el carácter o grupo de caracteres inmediatamente siguiente
$ : representa el fin de la cadena, es decir que el dato a validar debe terminar en el carácter o grupo de caracteres inmediatamente anterior
[] : representa un grupo de meta-caracteres, es decir un rango de caracteres por ejemplo [a-z] representa que solo habrán letras en minúscula mientras que [A-Z] representaría letras en mayúscula, dentro de ellos se pueden colocar varios rangos y el los validara igual por ejemplo [a-zA-Z0-9_-] representa todas las letras ya sean mayúsculas o minúsculas y todos los números del 1 al 9 además de ellos acepta los caracteres de línea(-) y línea baja(_).
{} : representa un cuantificador de valor, es decir que el carácter inmediatamente anterior solo se repetirá sienta cantidad de veces por ejemplo A{3} quiere decir que la letra A mayúscula se repetirá 3 veces ni más ni menos, mientras A{2,} representara que la letra A se repetirá mínimo 2 veces máximo infinito, y A{2,5} representa que la letra A mayúscula se repetirá entre 2 a 5 veces
(): representa un grupo de caracteres especifico por ejemplo (a|b|c)al quiere decir que la palabra tiene que empezar en a, b o c siendo validas aal, bal y cal ya que b y c están en el grupo de caracteres
| : representa una decisión de OR en los grupos de caracteres. Solo se aplica en paréntesis ()
\ : representa el escape de un carácter: es decir que encuentre ese carácter en especifico, por ejemplo si queremos que nuestra expresión regular encuentre cadenas que contengan {} o [] tendríamos que colocarlas asi \{\} \[\] ya que [] y {} son usados por las expresiones regulares en los patrones creados.
? : Es un cuantificador que dice que el carácter o grupo de caracteres inmediatamente anterior puede aparecer cero (0) o una (1) vez en la cadena
* : es un cuantificador que dice que el carácter o grupo de caracteres inmediatamente anterior se repite de cero (0) a muchas veces
+ : es un cuantificador que dice que el carácter o grupo de caracteres inmediatamente anterior se repite de una(1) a muchas veces

Estos son los símbolos más importantes en la creación de expresiones regulares y los más usados por ende.

Ya que sabemos cuál es la utilidad de cada simbolito ahora si expliquemos que hace y como lo hace nuestra expresión regular :
^[a-zA-Z0-9_-]{2,}@[a-zA-Z0-9_-]{2,}\.[a-zA-Z]{2,4}(\.[a-zA-Z]{2,4})?$

cojamos parte por parte de la expresión y expliquémosla paso a paso :


Esta parte indica que la cadena a validar inicia con cualquier carácter alfanumérico línea o línea baja y que mínimo deben existir 2 caracteres


Esta parte de la cadena indica que continua un carácter obligatorio en cual es el
@, si ese símbolo es obligatorio esto es un correo, luego es seguido de varios caracteres alfanuméricos donde son mínimo 2 y debe continuar con un punto (.), ya que el punto también significa cualquier carácter en las expresiones regulares se le coloca el carácter de escape ( \ ). Representa en nombre del dominio donde esta el correo ya sea Hotmail o Yahoo


Representa la segunda parte del dominio ya sea
.com o .es


Representa una parte opcional en los correos por ejemplo en dominios que sean como entidad.edu.co sirve para validar la ultima parte si es que existe y además indica el fin de la línea

En un próximo Tutorial explicaremos como implementarlas en el lenguaje de programación JAVA.

Repito, este tutorial es de la autoria de @dexterfcp (Fabian) si hay que comentar o agradecerle por hacernos menos ignorantes, se le debe hacer a él.

Leer más...

miércoles, 24 de marzo de 2010

Lanzamiento de ADOBE CS5

Una de las campañas más ruidosas que he escuchado y visto en estos días es la del lanzamiento de la Adobe Creative Suite 5 (Adobe CS5) por todas partes Adobe Certified Professionals hacen un gran escándalo, pero cuando van a mencionar datos que realmente interesan como el día del lanzamiento siempre pasa "algo inesperado" un ruido corta el audio de las personas, se acaban los caracteres en twitter y otras tantas cosas, pues bien, el silencio se acabo y YA HAY FECHA para el lanzamiento de la nueva CS5.


--
La CS5 será expuesta al fin, el 12 de Abril de este año, y asegura tener un éxito rotundo desde su primer día, Flash CS5, PhotoshopCS5, Flash CAtalyst, entre otros programas, son quizás los que más llamen la atención de este lanzamiento, las nuevas herramientas que traen los programas y la integración entre los programas de la suite hace que uno desee trabajar con todos al tiempo.

Para hacer el registro, debes hacerlo aqui: http://cs5launch.adobe.com/?sdid=FDSEN
Para obtener más información, recomiendo seguir en twitter al usuario CS: http://twitter.com/creativesuite
Al grupo Xpert de colombia: http://twitter.com/adobexpert

Y no dudes en dejar tus comentarios, dentro de poco tendremos tutoriales, reseñas y sorpresas referentes a este nuevo lanzamiento!




Leer más...

lunes, 22 de marzo de 2010

Flash Builder 4 - Versión Final

Hoy es un maravilloso día, no porque en Colombia estemos de día festivo (no sé ni siquiera que estamos festejando), ni porque está haciendo un día soleado con pájaros trinando en los arboles y las nueves estén diciendo “buenos días amiguitos”, no, nada de eso importa en estos momentos, lo realmente importante es que Adobe ha lanzado hoy la versión final de Adobe Flash Builder 4 que ya se puede descargar.


flash builder 4 logo

--
Esta mañana abrí como de costumbre mi twitter y note que había muchísimo ruido alrededor del trabajo con Adobe Builder 4, tutoriales paginas con información de interés y videos de todo tipo inundaron rápidamente mi navegador, al punto que tuve que abrir 2 ventanas y empezar a catalogar pestañas por las que más importancia tenían, aun escribiendo este post me encuentro leyendo varias publicaciones tanto de los grupos de usuarios Adobe de todo el mundo, como de gente como yo que escribe nada más porque si y todas dicen: Adobe Flash Builder FINAL!!.

Así es, ya está disponible la versión final de Adobe Flash Builder 4, pero no es solo esto, también está disponible la última versión del SDK Flex 4 y Adobe Coldfusion Builder. Lo novedoso es que el SDK de flex, trae nuevas herramientas, entre las cuales se destacan los servicios para conexión a redes sociales, que aseguran una conexión transparente y rápida con aproximadamente 14 de los líderes de las redes sociales, como Facebook, Twitter, MySpaceID, LinkedIn entre otras.

Otra de las grandes ventajas que trae Flex 4 es la implementación de la arquitectura SPARK, que se encargará del manejo grafico de los controles de Flash Builder, permitiendo meternos en el núcleo de los controles y cambiar su configuración grafica desde el mismo lenguaje, la ventaja es que la lógica del control se separa de la parte visual optimizando de manera notable (espero que así sea) el rendimiento de las aplicaciones WEB y de escritorio.

Por otra parte el nuevo Flex trae un completo entorno de depuración para nuestras aplicaciones, que soporta puntos de interrupción sometidos a condiciones, evaluación de expresiones (algo que hacía falta en las versiones anteriores) y toda una serie de herramientas para hacer más fácil la depuración de aplicaciones hechas con Flash Builder.

Recuerda que hay muchísima información en la web y que hay decenas de sitios donde se puede aprender a trabajar con Flex, para iniciar también es muy recomendable descargar el Tour de Flex.

Recomiendo visitar sitios como: Adobe TV, Flex.org y en general entrar al sitio web de Adobe para conocer lo nuevo de Adobe Flash Builder 4

Leer más...

domingo, 21 de marzo de 2010

Listeners en AS3

Una de las cosas más complicadas de entender cuando se hace la migración de lenguaje AS2 al AS3, es el manejo de los listeners, que tienen un nombre bien raro y en español son difíciles de interpretar, ya que la palabra escuchador es muy poco común, por eso escribo este tip, para aprender a utilizarlos e intentar solucionar ciertas inquietudes.


--

En mis clases siempre digo que antes de definir un concepto técnicamente se debe hacer coloquialmente, es decir, antes de definir un término muy complicado y llenarlo de palabras difíciles de entender, se debe definir de la manera más sencilla y orientada al idioma. En este caso hablaremos de los Listeners, sabemos que la palabra al español se traduce como “escuchador” u “oyente”, palabras muy poco utilizadas ya que no creo haber conocido a alguien que le paguen por eso, no es común escuchar la frase: “…si, y ese de allá es Pedro, el escuchador…”. Ahora, teniendo claro que un escuchador es aquel que está siempre atento a escuchar a los demás tenemos que definir los demás conceptos que están asociados a los listeners en AS3.

Recordemos que AS3 es un lenguaje de programación orientado a Objetos y a Eventos, un objeto es todo lo que podemos hacer en el lenguaje y puede tomar cualquier forma, ahora definamos evento. Un evento es un suceso que le puede pasar al objeto, de esta manera un objeto de la clase persona tiene eventos como, tener sed, tener hambre, tener ganas de ir al baño, tener sueño, todos esos son eventos, sucesos que le pasan al objeto, para poder controlar estos eventos se recurre al uso de métodos, que son las acciones propias del objeto, así pues, cada evento tiene asociado un método de esta manera:

tener sed beberLiquido()
tener hambre comer()
tener ganas de ir al baño irBaño()
tener sueño dormir()

Entendiendo esto, vamos a pasar a la práctica, todos los objetos dentro de AS3 bien sean de Flash o del SDK de Flex, tienen unos eventos que se pueden manejar. Por ejemplo en Flex, el objeto Application (que esta usualmente en la primera etiqueta del código mxml, tiene un evento applicationComplete, que indica que la aplicación está completa es decir que ha cargado todos sus controles, sabiendo esto, podemos hacer un método que se dispare cuando la aplicación se carga y que empiece a cargar datos de una fuente de datos.

Para no hacer tan complicado el ejemplo, voy a hacerlo con un botón, y vamos a añadir un escuchador de evento para varios de sus eventos, esto lo haré con Flash, pero en Flex también se puede hacer, lo primero que vamos a hacer, es crear una figura en flash, lo convertimos en un botón o en un movieClip, personalmente prefiero los movieclips, ponemos un nombre de instancia y vamos al código.

Mi botón en este caso se llama boton_btn. Ahora vamos a programar los métodos para cada uno de los eventos, de esta manera.

boton_btn.addEventListener(MouseEvent.CLICK, clic);
function clic(
e:MouseEvent):void{
trace(
"el boton fue presionado");
}


Así se programa el evento Click para el botón, de la misma manera podemos programar un evento del mouse o del teclado, del escenario y en general de cualquier objeto para que se ejecute acción, en el archivo adjunto se encuentra la programación para más eventos del Mouse para este botón.

Cómo conclusión podemos decir que un listener es un objeto que está siempre atento a escuchar a otro objeto y cuando escucha algo, dispara un método que ejecuta cierto proceso lógico, me viene a la mente Superman, el super heroe es un listener, Luisa es otro objeto, que dispara el evento caer, superman escucha que ella está cayendo y ejecuta el método correr, o volar y después el método recibir para salvar la vida de Luisa.


Leer más...

sábado, 20 de marzo de 2010

Lector RSS con Flex : Segunda Parte

En una anterior publicación (Lector RSS con Flex) vimos la manera de leer los datos de un archivo XML de una fuente RSS de este blog, ahora vamos a crear el código y los controles necesarios para mostrar la descripción del post, cuando se selecciona un Item del DataGrid, además se creara el instalador de la aplicación ya que es una aplicación de Adobe AIR.


--
Ahora crearemos un control TextArea en la parte inferior del DataGrid que tenga los Constraints inferiores y los laterales, el constraint superior no se debe seleccionar para que no se cambie su tamaño a lo alto, solo a lo ancho, el id del TextArea debe ser noticiaTxt para mostrar el detalle de la noticia, ahora debemos crear la función que se encargara de llenar el área de texto.

private function mostrarInfo():void{
noticiaTxt.htmlText = notDg.selectedItem.description;
}

y en la etiqueta de notDg, ponemos lo siguiente:

change=
"mostrarInfo();"


Con esto es suficiente para que al seleccionar un ítem de la lista, se muestre una pequeña descripción de la noticia. Para ver el resto de la información, podemos poner esto en la etiqueta del DataGrid:

doubleClickEnabled="true" doubleClick="navigateToURL(newURLRequest(notDg.selectedItem.link))"

Recuerden utilizar el cuadro de Intellisense, para que se hagan los imports necesarios, si después de esto, aparece algún error quizás sea por que falta importar la clase navigateToURL, para ello, en la parte superior del bloque Script, ponemos esto:

import "flash.net.navigateToURL";

Ahora vamos a ver como se exporta un proyecto de flex como aplicación de escritorio por medio de Adobe AIR, primero que todo, guardamos el proyecto y presionamos click derecho en el proyecto, en el menú contextual seleccionamos en la carpeta Flex Builder, seleccionamos la opción Release-Build:
Release-Build

Aparece una ventana donde se permite cambiar al ubicación donde quedará el instalador, generalmente es bin-release, pero se puede poner donde sea, luego presionamos de nuevo siguiente y aparecerá esta ventana:

Digital Signature

Seleccionamos la primera opción "Export and sign an AIR file with a digital certificade", como esta es la primera aplicaci[on, tenemos que hacer un certificado, esto lo hacemos por medio del botón "Create" y con esto nos aparecerá esta ventana:

Create Certified

Llenamos los datos requeridos, y guardamos la licencia, presionamos ok y en el formulario anterior, escribimos una contraseña y presionamos Finish, con esto, se genera un archivo con extension .AIR

Instaldor AIR

Este es el archivo de instalación del lector de noticias, solo basta con presionar doble clic sobre el archivo para ejecutar el instalador y poder utilizar la aplicación.





Leer más...

Google TV

La teoría al rededor de Google, el gigante de Internet, de que cada vez se parece más a la famosa SkyNet retoma fuerza, no solo por el hecho de que no podemos concebir la vida en Internet sin todas las herramientas que ofrece, o porque ahora hace parte de la tecnología móvil que todos queremos, la novedad del gran dueño de la red es que desea incursionar en el mundo de la televisión, y para ello está echando mano de sus contactos para gobernar el mundo de las cajas mágicas que hablan.


--
Los rumores afirman que Google se meterá en el hogar de cada persona, por medio de su televisor, gracias a una serie de dispositivos que serán creados, primero para poner a un lado de los mismos y luego vendrán integrados dentro de la cajita mágica, esto con el apoyo de grandes como SONY e Intel, el primero de los asociados, se encargaría de crear los televisores tal y cómo lo viene haciendo desde hace décadas, y el segundo asociado, Intel crearía los procesadores para el televisor.

La idea de incluir conexión a Internet en los televisores no es nueva, ya que empresas como Microsoft, Samsung, TiVo entre otras ya lo hacen, sin embargo tratándose de Google, no podemos esperar que creen una aplicación como las que ya existen, por otra parte los televisores contarían con un sistema operativo Android, que es el mismo que utilizan los nuevos celulares de HTC como el G1, el mismo que usa el Nexus One de google y algunos de la serie Sony Ericsson.

Finalmente para los desarrolladores se espera que sea liberado un kit de desarrollo, que permitiría crear aplicaciones WEB que funcionen desde el televisor, lo que seguramente generará una masificación de publicidad horrible en los canales, pop-ups del demonio y quizás la resurrección de animaciones que generen ataques epilépticos hechas en Flash. Solo espero que esto último no suceda de nuevo.

Leer más...

domingo, 14 de marzo de 2010

Lector RSS con Flex

Uno de los ejemplos más claros, usados y útiles cuando se inicia con Adobe Flex, es la creación de un lector de noticias RSS, se usa para aprender a manipular archivos XML desde Flex con el objeto HTTPService.

Primero que todo debemos crear un nuevo proyecto de Adobe AIR (New, Flex Project, Application Type:Desktop Application (runs in Adobe AIR)), también es posible crear un proyecto para la Web, la única diferencia radica en que la ejecución se haría con el Flash Player y no con el runtime de Adobe.


Inicialmente, ponemos un panel cuyos constraints, estén distribuidos de esta manera:


Escribimos "Lector RSS" como titulo al panel, en el interior debemos ubicar un DataGrid, al cual le vamos a poner los mismos constraints que al panel, solo que le vamos a dejar un espacio 133 desde la base del panel hasta el pie del Datagrid, en el ID lo llamamos noticiasDg y ahora vamos a revisar la vista de código.

Ahora, vamos a usar uno de los elementos mas poderosos de la programación con Flex, que permite ahorrar decenas de lineas de código y realmente, aumenta la eficiencia en la lectura de XML, estoy hablando del objeto HTTPService, este objeto, se encarga de recorrer el XML, "parsearlo" (formatearlo) y almacenarlo como si todo hiciera parte de un objeto. Sigamos, después de la etiqueta
(si están haciendo un proyecto web, se maneja ), vamos a colocar esto:

(<) mx:HTTPService
id="noticias"
url="http://feeds.feedburner.com/UnDaParaHablar?format=xml"
showBusyCursor="true"
result="cursorManager.removeBusyCursor();"
/>

Esta es la manera mas sencilla de manejar el objeto HTTPService, esta es la explicación de los atributos:
Id: es el nombre del objeto para llamarlo en el código.
URL: se refiere a la direccion de la que estamos extrayendo el XML (recuerden que si es web, siempre debe tener http://), en este caso esta es la dirección de este blog.
ShowBusyCursor: muestra un reloj en lugar del puntero del mouse cuando el objeto HTTPService está procesando información.
result: este atributo, nos permite ejecutar una acción determinada cuando se termine la carga del XML y el código cursorManager.removeBusyCursor();, remueve el reloj del puntero cuando.

Ahora, vamos a configurar el DataGrid, para que reconozca la información del XML que se almacena en noticias (recordemos que es el id del HTTPService), para esto, nos dirigimos a la etiqueta de noticiasDg y ponemos el atributo dataProvider="{noticias.lastResult.feed.entry}":

top="10" left="10" bottom="133" right="10"
dataProvider="{noticias.lastResult.feed.entry}" id="notDg">

Ponemos las llaves en: dataProvider = " {} ", porque estamos utilizando un objeto implicito, es decir, estamos manejando algo que posiblemente no este, estas llaves {} nos permiten manejar datos, que solo se verán en tiempo de ejecución. Como se pueden dar cuenta, estamos usando como proveedor de datos a noticias (el httpservice), usamos la propiedad lastResult, para obtener la última actualización del XML que estamos solicitando y lo que sigue, es la ruta de los nodos del XML.


Para poder ver el resultado, vamos a mostrar la información, para esto, nos dirigimos a las etiquetas y borramos la ultima, solo vamos a usar dos columnas y las dos que quedan las vamos a dejar de este modo:

headerText="Titulo" dataField="title"/>
headerText="Fecha" dataField="published"/>

headerText, es el encabezado de la columna en el dataGrid y dataField es el nombre del nodo que nos brindara la información que queremos, se pueden dar cuenta en la estructura del xml.

Finalmente, vamos a la etiqueta
applicationComplete="cargar();", cargar, es una función debemos hacer, así que creamos el bloque script y la función de esta manera:

private function cargar():void{
noticias.send();
}
noticias.send(), envía la petición del XML a la url especifcada, pueden probarlo con Ctrl+F11 y esto debe ser suficiente para que se cargue el XML. Esto es todo, para esta primera parte, la segunda parte la escribiré dentro de poco.


Leer más...

sábado, 13 de marzo de 2010

Ordena tus proyectos con: Adobe WorkFlowLab

Hoy estaba leyendo paginas como de costumbre, viendo las novedades de las herramientas adobe, leyendo sobre futuros eventos y encontré por pura casualidad una herramienta de Adobe que no sé como no la conocía si es tan buena y necesaria. Hablo de Adobe WorkFlowLab que es una herramienta que sirve para la organización de los proyectos, que permite una gran personalización, es algo así como un diagrama de GANTT, pero permite organizar por categorias, roles y herramientas los tiempos de ejecución de un proyecto.


Adobe WorkFlowLab, es una aplicación de Adobe AIR, que permite administrar casi cualquier ambiente de trabajo y en especial entornos de desarrollo y diseño de software que implementan las tecnologías Adobe, permite tener múltiples proyectos organizados y añadir descripciones a cada proyecto:
Después de crear el nuevo proyecto solo basta con añadir los tiempos de cada tarea, y añadir las categorias que se requieren, además se pueden especificar erramientas externas como aplicaciones, recursos, librerias, personas, etcétera.


En general es una excelente herramienta, muy recomendada para la creación y organización de los proyectos.


Leer más...

miércoles, 10 de marzo de 2010

Tutoriales .NET

Una de las grandes dificultades que tiene la gente a la hora de aprender a utilizar una nueva herramienta de desarrollo, es la falta de recursos, de información, de libros, de profesores o de sitios, todos estos "peros" son muros que se atraviesan en el camino de cada quien, cuando hasta ahora empieza a desarrollar, por eso hoy les quiero recomendar el sitio que está desarrollando un buen amigo.




Un Espacio para .Net, es un blog diseñado para hablar de la tecnología de Microsoft, de aplicaciones WEB con ASPX de aplicaciones de escritorio, del futuro de la herramienta, y de las novedades dentro de las herramientas para el desarrollo con .NET.

No dejen de visitar este sitio, y recuerden comentar, los comentarios son el alimento de quienes hacemos contenido en la WEB.



Leer más...

Lanzamiento Visual Studio 2010 hasta el 14 de abril

visual-studio-2010-teusje 

Estábamos a la espera del lanzamiento del Visual Studio 2010 para principios del mes de marzo.  pero unos errores en el rendimiento del beta, nos hará esperar por lo menos unas cuantas semanas más de lo esperado.

Saludos..

Leer más...

domingo, 7 de marzo de 2010

Perdón por la usencia

Desde hace 4 días no tenemos actividad, mucho de ello fue causa del paro de transporte en Bogotá, bueno no fue propiamente el paro, fue más bien el levantamiento del paro, ya que debimos iniciar labores normalmente, las evaluaciones, preparación de clases y demás son cosas que no lo dejan de atormentar a uno cuando se es instructor además, por mi parte he estado en una serie de proyectos que realmente han consumido todo mi tiempo, pero que me han dejado muchísimas experiencias que estoy dispuesto a compartir con la comunidad.
Hay alguien ahí?

El paro de transportadores se termino el Jueves 4 de Marzo, en horas de la tarde, tan pronto como puse el anuncio en todos los medios posibles (twitter y facebook) sentí la desaprobación de mis alumnos y conocidos, pero ¿qué puedo hacer yo? Finalmente si no trabajo, no me pagan, entonces tocaba dar clase, el viernes fue día de adelantar clase, de hacer evaluaciones atrasadas y de tomar un par de cervezas, esa es la razón por la que el viernes no hubo movimiento, el sábado estuve todo el día en un evento de cristalab, el taller de posicionamiento para buscadores, del cual escribiré dentro de muy poco tiempo, en la noche estuve escribiendo un tutorial para la creación de controles personalizados con Flex, pero por motivos oscuros no lo puedo publicar todavía y hoy finalmente, a pesar de que la mayoría de personas usa el domingo para descansar, me reuní junto con Fabian Castro y unos aprendices para ver si podíamos al fin, unir Flex con JAVA utilizando BlazeDS, el resultado fue satisfactorio y dentro de poco también tendremos tutoriales de BlazeDS.

Espero que sigan leyendo, compartiendo y participando en el blog, esto es de todos y para todos.

Leer más...