<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>www.riactive.com</title>
	<atom:link href="http://www.riactive.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.riactive.com</link>
	<description></description>
	<lastBuildDate>Tue, 02 Feb 2010 17:31:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Nueva versión de Adobe AIR 2.0</title>
		<link>http://www.riactive.com/2010/02/02/adobe-air-2-beta2/</link>
		<comments>http://www.riactive.com/2010/02/02/adobe-air-2-beta2/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 17:28:54 +0000</pubDate>
		<dc:creator>Alberto Gonzalez</dc:creator>
				<category><![CDATA[Actualizaciones]]></category>
		<category><![CDATA[Apollo]]></category>
		<category><![CDATA[air]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=816</guid>
		<description><![CDATA[El día de hoy se liberó una nueva versión de Adobe AIR 2.0, la versión BETA 2.

Desde la versión anterior (beta 1) hemos podido utilizar muchas de sus nuevas características:
Webkit con soporte para CSS3/HTML 5
Integración de código nativo
Empaquetamiento de aplicaciones como instaladores nativos del OS
Soporte para detección de volúmenes de almacenamiento de datos
Muchas mejoras en [...]]]></description>
			<content:encoded><![CDATA[<p>El día de hoy se liberó una nueva versión de <strong><a href="http://labs.adobe.com/technologies/air2">Adobe AIR 2.0, la versión BETA 2</a>.</strong><br />
<br />
Desde la versión anterior (beta 1) hemos podido utilizar muchas de sus nuevas características:</p>
<li>Webkit con soporte para CSS3/HTML 5</li>
<li>Integración de código nativo</li>
<li>Empaquetamiento de aplicaciones como instaladores nativos del OS</li>
<li>Soporte para detección de volúmenes de almacenamiento de datos</li>
<li>Muchas mejoras en la comunicación por redes (UDP, DNSResolver, Socket Servers, etc)</li>
<p>pueden encontrar una lista completa de las nuevas características y funcionalidades en <a href="http://labs.adobe.com/wiki/index.php/AIR_2:Release_Notes">Adobe Labs</a>.<br />
<br />
En esta nueva versión, beta 2, las mejoras que se le hicieron las podemos dividir en tres secciones: impresión mejorada desde aplicaciones AIR, soporte mejorado en las comunicaciones por socket, mejoras en los TextInput y en el soporte para IME.<br />
<br />
Lo requerido para comenzar a utilizar esta nueva versión y probarla es que descarguen el <a href="http://labs.adobe.com/downloads/air2.html">SDK de AIR 2 Beta 2</a>, si utilizan Flash Builder o Flex Builder deben sustituir los archivos que se encuentran en la versión de SDK que utiliza de forma predeterminada Flex Builder.<br />
<br />
Inicialmente, en la etiqueta principal del Application Descriptor hay que modificar la versión para la cuál compilan la aplicación y utilizar, ahora "2.0beta2" -&gt; xmlns="http://ns.adobe.com/air/application/2.0beta2".<br />
<br />
Si por alguna razón, las aplicaciones que hayan creado con la beta 1 de AIR 2 no se ejecutan en el runtime de AIR 2 beta 2, deberán recompilarlas ahora apuntando al beta 2.<br />
<br />
Más adelante colocaremos algunas observaciones sobre esta nueva versión.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/02/02/adobe-air-2-beta2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comunicación entre SWF&#8217;s con LocalConnection</title>
		<link>http://www.riactive.com/2010/02/01/comunicacion-entre-swfs-con-localconnection/</link>
		<comments>http://www.riactive.com/2010/02/01/comunicacion-entre-swfs-con-localconnection/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 15:30:52 +0000</pubDate>
		<dc:creator>yacaFx</dc:creator>
				<category><![CDATA[CS4]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[as2]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[localconnection]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[yacaFx]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=745</guid>
		<description><![CDATA[La semana pasada surgió la duda en twitter de cómo pueden comunicarse dos o mas SWF's embebidos en una página y eso me dio la idea para hacer este post =)

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_LocalConnectionSender_1470219984"
			class="flashmovie"
			width="300"
			height="200">
	<param name="movie" value="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionSender.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionSender.swf"
			name="fm_LocalConnectionSender_1470219984"
			width="300"
			height="200">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_LocalConnectionReceiver_859814218"
			class="flashmovie"
			width="300"
			height="200">
	<param name="movie" value="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionReceiver.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionReceiver.swf"
			name="fm_LocalConnectionReceiver_859814218"
			width="300"
			height="200">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_LocalConnectionAS2Sample_921711742"
			class="flashmovie"
			width="400"
			height="50">
	<param name="movie" value="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionAS2Sample.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionAS2Sample.swf"
			name="fm_LocalConnectionAS2Sample_921711742"
			width="400"
			height="50">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
Este tipo de comunicación [...]]]></description>
			<content:encoded><![CDATA[<p>La semana pasada surgió la duda en twitter de cómo pueden comunicarse dos o mas SWF's embebidos en una página y eso me dio la idea para hacer este post =)</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_LocalConnectionSender_1689005921"
			class="flashmovie"
			width="300"
			height="200">
	<param name="movie" value="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionSender.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionSender.swf"
			name="fm_LocalConnectionSender_1689005921"
			width="300"
			height="200">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_LocalConnectionReceiver_1660581012"
			class="flashmovie"
			width="300"
			height="200">
	<param name="movie" value="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionReceiver.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionReceiver.swf"
			name="fm_LocalConnectionReceiver_1660581012"
			width="300"
			height="200">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_LocalConnectionAS2Sample_1948244959"
			class="flashmovie"
			width="400"
			height="50">
	<param name="movie" value="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionAS2Sample.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.riactive.com/wp-content/uploads/2010/01/LocalConnectionAS2Sample.swf"
			name="fm_LocalConnectionAS2Sample_1948244959"
			width="400"
			height="50">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object><br />
Este tipo de comunicación es bastante sencilla y podemos lograrlo haciendo uso de la clase LocalConnection. Primero tengamos un acercamiento a esta clase y veamos cómo funciona.<br />
<span id="more-745"></span><br />
Una Local Connection es la vía que tendrán 2 o más SWF (en una o varias instancias de un flashplayer como en un browser y un flash projector o AIR) para poder comunicarse entre ellos siempre y cuando estén ejecutándose en la misma computadora.  </p>
<p>Recordemos que por la naturaleza de los SWF’s podemos comunicarlos sin importar si fueron generados vía Flex o Flash.</p>
<p>Como mínimo es necesario tener 2 swf para lograr esta comunicación y uno al menos debe fungir como mensajero (sender) y otro como escucha (listener) aunque ambos pueden realizar ambas tareas y es posible tener más de 2 swf en este proceso.</p>
<p>Algo que podría sonar atractivo si estamos trabajando en equipo y no todos usan AS3 es el hecho de que todos los objetos de tipo LocalConnection  creados con cualquier versión de AS (1, 2 o 3) son compatibles.</p>
<p>Esta clase tiene dos métodos importantes para lograr la comunicación entre los SWF’s:  send() y connect().</p>
<p>El método send() se  encarga de enviar la petición de comunicación y requiere de 2 parámetros, el primero que será el nombre del canal y el segundo el método que se ejecutará en el swf destino. En caso de que el método destino requiera de parámetros estos deben de agregarse después del segundo parámetro y separado por comas.</p>
<p><img src="http://www.riactive.com/wp-content/uploads/2010/01/LCimg1.png" alt="LCimg1" width="490" height="241" class="aligncenter size-full wp-image-789" /></p>
<p>El método connect() estará en el swf destino y recibirá como parámetro el nombre de la conexión que se estableció en el método send() en el swf origen.  Con esto establecido el sfw destino ya estará habilitado para escuchar las peticiones a través de un LocalConnection.</p>
<p>Es importante que en el swf destino el objeto LocalConnection se le indique, a través de la propiedad “client”, en donde se encuentra el método que se está invocando desde el swf origen. Esto aplica si nuestro método está dentro de un paquete o en el mismo nivel donde se está instanciando el objeto LocalConnection. Otra consideración que se debe tener con este método es que debe ser declarado público.</p>
<p>Si al objeto LocalConnection destino no le indicamos la ubicación del método y este no lo declaramos como público la aplicación nos arrojará un error.</p>
<p><img src="http://www.riactive.com/wp-content/uploads/2010/01/LCimg2.png" alt="LCimg2" width="490" height="241" class="aligncenter size-full wp-image-788" /></p>
<p>Ya entendida la funcionalidad de la clase y la lógica de este tipo de aplicaciones es hora de tirar algunas líneas de código y de probar esta funcionalidad. </p>
<p>Tendremos 3 archivos swf’s uno generado desde Flash y otro generado desde Flex  y ambos tendrán los 2 roles necesarios para esta aplicación (Mensajero y Escucha) y el tercer SWF será generado desde Flash usando AS2 y solo con el rol de Escucha. Para efectos de este tutorial los tres SWF estarán integrados en el mismo archivo HTML.</p>
<p>Se me ocurre que esta aplicación sea algo similar a una calculadora donde en un primer SWF se ingresen 2 datos y se envíen al segundo SWF donde se elija la operación a realizar y regrese el resultado al primer SWF donde se le sumara una cantidad y el resultado final se enviará a un tercer SWF el cual solo mostrará este resultado final. Cada SWF tendrá un color de fondo distinto para poder identificarlos y están embebidos independientemente. El SWF1 es verde, el SWF2 es azul y el SWF3 es anaranjado</p>
<p><img src="http://www.riactive.com/wp-content/uploads/2010/01/tutoLocalConnectionMockup.png" alt="tutoLocalConnectionMockup" width="745" height="317" class="aligncenter size-full wp-image-786" /></p>
<p>El código para el SWF1 hecho en Flash con AS3 queda así:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">//Creamos el objeto tipo LocalConnection
var cnxLocal:LocalConnection = new LocalConnection();
&nbsp;
enviarBtn.addEventListener(MouseEvent.CLICK, enviaDatos);
&nbsp;
function enviaDatos(evt:MouseEvent):void
{
/*Enviamos datos a través del canal(conexión) 'cnxIda' 
indicándole que método ejecutar y los parametros a recibir*/
	cnxLocal.send('cnxIda', 'muestraDatos', dato1.text, dato2.text);
&nbsp;
/*De una vez referenciamos la conexión o canal para 
recibir los datos de regreso que enviará la app en Flex*/
	cnxLocal.connect('cnxVuelta');
	cnxLocal.client = this;
};
&nbsp;
/*Este método muestra el resultado calculado en el SWF2, 
hace un nuevo calculo y envía ese resultado al SWF3*/
function muestraResultadoRegresado(resultado:String):void
{
	resultado1.text = resultado;
&nbsp;
	var resultadoFinal:String;
	resultadoFinal = String(Number(resultado)*10);
&nbsp;
//Aquí es donde se envían los datos al SWF3
	cnxLocal.send('cnxFinal', 'muestraDatosFinales', resultadoFinal);
}</pre></div></div>

<p>El código para el SWF2 hecho en Flex con AS3 queda así:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"> import mx.controls.Alert;
&nbsp;
//Creamos el objeto tipo LocalConnection
            private var _cnxLocal:LocalConnection = new LocalConnection();
&nbsp;
            private function _initApp():void
            {
//Nos conectamos a la conexión definida en el SWF 1 para este SWF
                _cnxLocal.connect('cnxIda');
//Indicamos en donde esta el método invocado en SWF1
                _cnxLocal.client = this;
            }
&nbsp;
//Este es el método invocado desde SWF1 y está definido como público
            public function muestraDatos(datoE1:String, datoE2:String):void
            {
                dato1.text = datoE1;
                dato2.text = datoE2;
            }
&nbsp;
            private function _realizarCalculo(evt:MouseEvent):void
            {
                var resultado:Number;
                switch (evt.currentTarget.label)
                {
                    case '+':
                        resultado = Number(dato1.text) + Number(dato2.text);
                        break;
&nbsp;
                    case '-':
                        resultado = Number(dato1.text) - Number(dato2.text);
                        break;
&nbsp;
                    case '*':
                        resultado = Number(dato1.text) * Number(dato2.text);
                        break;
                    case '/':
                        resultado = Number(dato1.text) / Number(dato2.text);
                        break;
                }
                _regresaDatos(String(resultado));
            }
&nbsp;
//Este método regresa el resultado al SWF1
            private function _regresaDatos(resultado:String):void
            {
                Alert.show(resultado, 'Resultado del calculo:');
                _cnxLocal.send('cnxVuelta', 'muestraResultadoRegresado', resultado);
            }</pre></div></div>

<p>El código para el SWF3 hecho en Flash con AS2 queda así:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">//Creamos el objeto tipo LocalConnection
var cnxLocal:LocalConnection = new LocalConnection();
&nbsp;
//Nos conectamos a la conexión definida en el SWF 1 para este SWF
cnxLocal.connect('cnxFinal');
&nbsp;
cnxLocal.muestraDatosFinales = function(resultado) {
&nbsp;
//Se muestran en la caja de texto los datos recibidos
    resultadoFinal.text = resultado;
};</pre></div></div>

<p>Como puede apreciarse la comunicación entre uno o varios SWF's es muy sencilla y en este tutorial queda sentado que no importa si es AS2 o AS3, Flash o Flex donde generemos nuestras aplicaciones, la comunicación a través de LocalConnection es transparente =)</p>
<p>Esperamos que este tutorial te sea de utilidad y si tienes dudas o comentarios no dudes en preguntarnos, ya sea a través de los comentarios o vía twitter en @riactive.</p>
<p>Sean felices y... Happy Coding!!!</p>
<p>Sergio Brito AKA yacafx</p>
<p>------------------------------------------------------------------------------------------------------<br />
Los archivos fuente generados en este tutorial están disponibles para su descarga<br />
[<a href="wp-content/uploads/2010/01/LocalConnectionTutorialRiactive.zip">Source Files</a>]</p>
<p>Para la elaboración de este post usamos Flash, Flex Builder, Photoshop y <a href="http://www.balsamiq.com/products/mockups">Balsamiq Mockups</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/02/01/comunicacion-entre-swfs-con-localconnection/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tutorial: Como conectar Zend_AMF con Adobe Flex Builder 3</title>
		<link>http://www.riactive.com/2010/01/28/tutorial-como-conectar-zend_amf-con-adobe-flex-builder-3/</link>
		<comments>http://www.riactive.com/2010/01/28/tutorial-como-conectar-zend_amf-con-adobe-flex-builder-3/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 20:43:16 +0000</pubDate>
		<dc:creator>Gz.Francisco</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex Data Services]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=736</guid>
		<description><![CDATA[Saludos a los flexeros del mundo, este es mi primer tutorial, como parte del Grupo de Usuarios de Adobe @RIActive.
Este tutorial está pensado para seguirse como receta de cocina y que en pocos pasos estén divirtiéndose trabajando con esta poderosa forma de conectar Flex con PHP.
Requisitos:

Tener ZEND Framework en su última versión y completo. La [...]]]></description>
			<content:encoded><![CDATA[<p>Saludos a los flexeros del mundo, este es mi primer tutorial, como parte del Grupo de Usuarios de Adobe <a href="http://twitter.com/riactive" target="_blank">@RIActive</a>.</p>
<p>Este tutorial está pensado para seguirse como receta de cocina y que en pocos pasos estén divirtiéndose trabajando con esta poderosa forma de conectar Flex con PHP.</p>
<p>Requisitos:</p>
<ul>
<li>Tener ZEND Framework en su última versión y completo. La razón de tenerlo completo radica en que cuando yo quise instalarlo y solo baje el paquete de ZEND_AMF me arrojaba constantemente errores de librerías requeridas. Para evitarnos eso vamos a conseguir toda la librería de Zend para no tener problemas. <a href="http://framework.zend.com/download/overview">http://framework.zend.com/download/overview</a></li>
<li>Un editor de texto plano o una IDE para PHP. <a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/SR1/eclipse-php-galileo-SR1-win32.zip">http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/SR1/eclipse-php-galileo-SR1-win32.zip</a></li>
<li>Adobe Flex Builder 3. <a href="http://www.adobe.com/products/flex/">http://www.adobe.com/products/flex/</a></li>
<li>Un servidor http que tenga el motor de ejecución PHP compatible con la versión de  Zend (Yo use wamp). <a href="http://www.wampserver.com/en/download.php">http://www.wampserver.com/en/download.php</a></li>
</ul>
<p><span id="more-736"></span><br />
Contenido:</p>
<ol>
<li>Organizar es buena idea: Preparando a Zend.</li>
<li>MiClasePHP.php: Creando una clase personalizada de PHP</li>
<li>El marco de la puerta: Creando a Zend_AMF_Server</li>
<li>La perilla de la puerta: Configurando Flex</li>
<li>Con quien voy a hablar?: RemoteObject y la configuraciones.</li>
<li>@Flex: “¿Donde estas @PHP?”. @PHP: “Aquiiiiii!!”</li>
</ol>
<h3>Introducción</h3>
<p>Necesitas hacer llamada de una función que se encuentra en una clase PHP desde Flex y te preguntas ¿Cómo logro eso? Una de las diversas respuestas es: Zend_AMF</p>
<p>Zend_AMF es un paquete con el cual lograras hacer llamadas desde Flex a PHP. Zend es un framework para PHP muy potente, por lo tanto cuando el uso de los datos es extremo, esta es la mejor solución.</p>
<h3>Preparando a Zend</h3>
<p>Ok, ahora vamos con el primer paso operativo de esta receta.</p>
<p>En una carpeta del servidor http, colocaremos la carpeta llamada “Zend” la cual contendrá todo el framework que hemos bajado. Dentro del server colocaremos una carpeta que llamaremos “lib” la cual contendrá todas nuestras clases personalizadas.</p>
<p>Y por ultimo crearemos un archivo “zend_amf_server.php” que será el Zend_AMF_Server.</p>
<p><img src="http://l4c.me/uploads/carpetas-inicio-screenshot-1264655585_full550.jpg" alt="Carpetas incio" /></p>
<h2>Creando una clase personalizada de PHP</h2>
<p>Adentro de la carpeta “lib” crearemos una clase de PHP llamada “ClasePersonal” que tenga un método llamado “holaMundo” al cual se le pueda pasar un argumento de tipo string para ejecutar el ejemplo.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?php</span></span>
<span style="color: #009900;">class ClasePersonal<span style="color: #66cc66;">&#123;</span></span>
<span style="color: #009900;">public function holaMundo<span style="color: #66cc66;">&#40;</span>$mensaje = <span style="color: #ff0000;">'Hi'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span></span>
<span style="color: #009900;">$date = getdate<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #009900;">return <span style="color: #ff0000;">'Hola desde PHP, Flex dijo: '</span>. $mensaje .<span style="color: #ff0000;">' el dia '</span>. $date<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;seconds&quot;</span><span style="color: #66cc66;">&#93;</span>;</span>
<span style="color: #009900;"><span style="color: #66cc66;">&#125;</span></span>
<span style="color: #009900;"><span style="color: #66cc66;">&#125;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">?&gt;</span></span></pre></div></div>

<p>Como pueden observar es una clase cualquiera, no tiene alguna implementación especial o algo por el estilo.</p>
<h3>Creando a Zend_AMF_Server</h3>
<p>En lo personal ésta fue la parte más angustiante de todas, ya que por más que hacia copy-paste de código que obtenía en el sitio de Zend_AMF y de otros tutoriales que encontré, no salía correctamente y era porque a todos o les faltaba alguna línea u otros tenían una entrega del server distinta. La última línea de código de este PHP es la más importante de todas.</p>
<p><strong>“zend_amf_server.php” </strong>será el equivalente a <strong>“gateway.php”</strong> que utiliza AMFPHP. Es la puerta de acceso al server de Zend_AMF.</p>
<p>Este será un pequeño archivo PHP que dará el acceso a Flex. En 6 puntos a seguir estará configurado.</p>
<p>Primero incluimos la librería Zend.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">require_once 'Zend/Amf/Server.php';</pre></div></div>

<p>Segundo incluimos a nuestra clase personalizada.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">require_once 'lib/ClasePersonal.php';</pre></div></div>

<p>Tercero instanciamos al Zend server.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">$server = new Zend_Amf_Server();</pre></div></div>

<p>Cuarto le enviamos a nuestro nuevo server la clase personalizada.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">$server-<span style="color: #ddbb00;">&amp;gt;</span>setClass('ClasePersonal');</pre></div></div>

<p>Quinto establecemos el método de entrega del server.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">echo $server-<span style="color: #ddbb00;">&amp;gt;</span>handle();</pre></div></div>

<p>Y como producto obtendremos un “zend_amf_server.php” con las siguientes líneas de código:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?php</span></span>
<span style="color: #009900;">require_once <span style="color: #ff0000;">'Zend/Amf/Server.php'</span>;</span>
<span style="color: #009900;">require_once <span style="color: #ff0000;">'lib/ClasePersonal.php'</span>;</span>
<span style="color: #009900;">$server = new Zend_Amf_Server<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #009900;">$server-&amp;gt;setClass<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'ClasePersonal'</span><span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #009900;">echo $server-&amp;gt;handle<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">?&gt;</span></span></pre></div></div>

<p>&lt;mx:Nota&gt;Sí tienen muchas clases de PHP y no tienen deseos de incluirlas al script de PHP y luego enviarlas a Zend. Pueden eliminar el segundo punto y además modifican el quinto por la siguiente línea de código antes del método de entrega del server.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">$server-<span style="color: #ddbb00;">&amp;gt;</span>addDirectory('include/services/');</pre></div></div>

<p>&lt;/mx:Nota&gt;</p>
<h3>Configurando a Flex</h3>
<p>Para empezar debemos tener un proyecto de Flex abierto y crear un nuevo archivo con extensión XML adentro de la carpeta “src”.</p>
<p>Al siguiente archivo lo llamaremos “services-config.xml” (sin comillas) y será el encargado de decirle a Flex en donde se encuentra nuestro “zend_amf_server.php”</p>
<p>Este archivo es un documento en formato XML, dentro del cual colocaremos dos cosas importantes: La ruta del “zend_amf_server.php” y el nombre asignado a este canal.</p>
<p>En mi caso el XML contendrá lo siguiente:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;services-config<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;services<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;service</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;zend-service&quot;</span> <span style="color: #000066;">messageTypes</span>=<span style="color: #ff0000;">&quot;flex.messaging.messages.RemotingMessage&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;destination</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;zend&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channels<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channel</span> <span style="color: #000066;">ref</span>=<span style="color: #ff0000;">&quot;zend-endpoint&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/channels<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;source<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>*<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/source<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/destination<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/service<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/services<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channels<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channel-definition</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;zend-endpoint&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;endpoint</span> <span style="color: #000066;">uri</span>=<span style="color: #ff0000;">&quot;http://localhost/zend_amf_server.php&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/channel-definition<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/channels<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/services-config<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Como podrán ver, el XML tiene 2 puntos críticos que son los nodos “endpoint” y “destination” dentro de los cuales se especifica la ruta del zend_amf_server y el nombre que se le asignara para identificarlo dentro de Flex.</p>
<p>Una vez creado y guardado el XML nos vamos a nuestro proyecto y damos clic derecho&gt;propiedades&gt;Flex Compiler y en donde dice “Aditional compiler arguments” (Argumentos de compilación adicionales) le agregamos el texto  -services "services-config.xml" (con los guiones y las comillas) y aceptamos los cambios con el botón Ok.</p>
<p><img src="http://l4c.me/uploads/argumentoscompilador-screenshot-1264654877_full550.jpg" alt="argumentos compilador" /></p>
<h3>RemoteObject y las configuraciones.</h3>
<p>Ahora sí, le daremos un nombre a cada clase que necesitemos. Claro esto también se puede hacer en AS pero aquí les va el ejemplo en MXML.</p>
<p>Primero crearemos la etiqueta RemoteObject.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:RemoteObject</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;ClasePersonal&quot;</span> <span style="color: #000066;">destination</span>=<span style="color: #ff0000;">&quot;zend&quot;</span> <span style="color: #000066;">source</span>=<span style="color: #ff0000;">&quot;ClasePersonal&quot;</span> <span style="color: #000066;">showBusyCursor</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000066;">fault</span>=<span style="color: #ff0000;">&quot;onConexError(event)&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span></pre></div></div>

<p>Aquí una pequeña lista de los atributos que necesitan y para qué sirven:</p>
<p>Id: El identificador con el que llamaran a la clase.</p>
<p>Source: El nombre de la clase PHP que vamos a llamar.</p>
<p>Fault: La función que arrojara para todos los métodos de esa clase, cuando exista algún error.</p>
<p>ShowBusyCursor: Es para que se muestre ocupado el mouse cuando está haciendo la llamada a los servicios PHP hasta que retorne algún valor/error.</p>
<p>Destination: Recuerdan que en el XML llamado “services-config.xml” tenía un nodo llamado destination, pues el valor del atributo de ese nodo es el que va aquí y sirve para indicarle a este RemoteObject a donde hay que enviar todas las consultas.</p>
<p>Una vez que ya colocamos la instancia de RemoteObject por clase PHP, pasaremos a indicar cuáles son los métodos de la clase PHP y como los llamaremos en Flex.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:method</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;holaMundo&quot;</span> <span style="color: #000066;">result</span>=<span style="color: #ff0000;">&quot;onResultHolaMundo(event)&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span></pre></div></div>

<p>Atributos de la etiqueta Methods:</p>
<p>Id: El nombre del método de la clase PHP.</p>
<p>Result: la función de Flex, la cual será llamada cuando exista regreso en un método de la clase PHP</p>
<p>Fault: Es la función de Flex que será llamada cuando exista un error de conexión en especifico para ese método de la clase PHP. Este atributo es opcional ya que en la etiqueta RemoteObject definimos una función de error para todos los métodos de esta clase.</p>
<p>&lt;mx:Nota&gt;Estos pasos se tendrán que repetir para cada método y para cada clase de PHP.&lt;/mx:Nota&gt;</p>
<p>&lt;mx:Nota&gt;No olviden realmente definir las funciones en AS que son los resultados de las llamadas y las que son invocadas por errores.&lt;/mx:Nota&gt;</p>
<h3>Llamadas a las clases y los métodos.</h3>
<p>Bueno, con esto se ha terminado todas las configuraciones. Ahora nos enfocaremos a terminar el tutorial, con un pequeño ejemplo.</p>
<p>A nuestra aplicación vamos a crearle una función de nombre “init” que estará disponible para el evento creationComplete de la aplicación, está se encargara de hacer la llamada al método de la clase PHP.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">private function init():void{
ClasePersonal.holaMundo(&quot;Hola PHP&quot;);
}</pre></div></div>

<p>Como nosotros ya definimos la función de AS que será la que responda nuestra llamada al método de la clase PHP, solo haremos que en un Label nuevo, le asigne el texto que nos regreso el método de PHP y después lo instanciaremos en el escenario de Flex.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">private function onResultHolaMundo(event:ResultEvent):void{
var etiqueta:Label = new Label();
etiqueta.text = event.result.toString();
this.addChild(etiqueta);
}</pre></div></div>

<p>Con esta parte estará completo nuestro MXML. Obteniendo así el script final.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:Application</span> <span style="color: #000066;">xmlns:mx</span>=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> <span style="color: #000066;">layout</span>=<span style="color: #ff0000;">&quot;vertical&quot;</span> <span style="color: #000066;">creationComplete</span>=<span style="color: #ff0000;">&quot;init()&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:Script<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #339933;">&lt;![CDATA[</span>
<span style="color: #339933;">import mx.controls.Alert;</span>
<span style="color: #339933;">import mx.rpc.events.ResultEvent;</span>
<span style="color: #339933;">import mx.controls.Label;</span>
<span style="color: #339933;">import mx.rpc.events.FaultEvent;</span>
<span style="color: #339933;">private function onConexError(event:FaultEvent):void{</span>
<span style="color: #339933;">&lt;em&gt;//Agregado para que arroje el error.&lt;/em&gt;</span>
<span style="color: #339933;">Alert.show(event.fault.faultDetail, event.fault.faultString);</span>
<span style="color: #339933;">}</span>
<span style="color: #339933;">private function onResultHolaMundo(event:ResultEvent):void{</span>
<span style="color: #339933;">var etiqueta:Label = new Label();</span>
<span style="color: #339933;">etiqueta.text = event.result.toString();</span>
<span style="color: #339933;">this.addChild(etiqueta);</span>
<span style="color: #339933;">}</span>
<span style="color: #339933;">private function init():void{</span>
<span style="color: #339933;">ClasePersonal.holaMundo(&quot;Hola PHP&quot;);</span>
<span style="color: #339933;">}</span>
<span style="color: #339933;">]]&gt;</span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/mx:Script<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:RemoteObject</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;ClasePersonal&quot;</span> <span style="color: #000066;">destination</span>=<span style="color: #ff0000;">&quot;zend&quot;</span> <span style="color: #000066;">source</span>=<span style="color: #ff0000;">&quot;ClasePersonal&quot;</span> <span style="color: #000066;">showBusyCursor</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000066;">fault</span>=<span style="color: #ff0000;">&quot;onConexError(event)&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:method</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;holaMundo&quot;</span> <span style="color: #000066;">result</span>=<span style="color: #ff0000;">&quot;onResultHolaMundo(event)&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/mx:RemoteObject<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/mx:Application<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<h3>Comentarios y posibles problemas.</h3>
<p>&lt;mx:posibleproblema&gt;Recuerden configurar su aplicación Flex como una aplicación de servidor PHP, ya que la seguridad de Flash Player no les permitirá acceder a un servidor http sino está corriendo bajo el mismo dominio, y si necesitan hacer llamadas entre dominios necesitaran un XML llamado “domain-config.xml” si lo requieren postéenlo y se los proporciono.&lt;/mx:posibleproblema&gt;</p>
<p>&lt;mx:comentario&gt;Yo me he fijado que la primera vez que se hace llamada a algún método de nuestras clases, lo hace 2 veces y es porque en la primera establece la conexión y en la segunda ya hace la llamada. En la segunda llamada a algún método de la clase PHP ya no hará esto.&lt;/mx:comentario&gt;</p>
<p>Asi les debe quedar la carpeta de su servidor al final. (Ahora ya tiene la version de depuracion de Flex porque lo creamos como una aplicacion de server PHP)</p>
<p><img src="http://l4c.me/uploads/carpetas-final-screenshot-1264655638_full550.jpg" alt="server final" /></p>
<p>Lo demás lo pueden colocar con todo gusto y les apoyare con mi poca pero insistente experiencia xD</p>
<p>Hasta pronto, nos leemos en mi siguiente post. Byte.</p>
<p>Gracias a <a href="http://twitter.com/eternalmoon_" target="_blank">@eternalmoon_</a> por su participación en la corrección de este tutorial.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/01/28/tutorial-como-conectar-zend_amf-con-adobe-flex-builder-3/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Blink de Banamex hecho en Flex</title>
		<link>http://www.riactive.com/2010/01/27/blink-de-banamex-hecho-en-flex/</link>
		<comments>http://www.riactive.com/2010/01/27/blink-de-banamex-hecho-en-flex/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 20:49:50 +0000</pubDate>
		<dc:creator>Edgar Parada</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=717</guid>
		<description><![CDATA[En esta ocasión queremos platicar de un proyecto llamado Blink de Banamex, el cuál esperamos que marque un precedente para todos los desarrolladores Flex en México ya que es la primera vez que una institución financiera (de las más grandes del país) prueba esta tecnología en web a nivel masivo, anteriormente se había utilizado en [...]]]></description>
			<content:encoded><![CDATA[<p>En esta ocasión queremos platicar de un proyecto llamado <strong>Blink de Banamex</strong>, el cuál esperamos que marque un precedente para todos los desarrolladores Flex en México ya que es la primera vez que una institución financiera (<em>de las más grandes del país</em>) prueba esta tecnología en web a nivel masivo, anteriormente se había utilizado en Intranets y algunos portales más pequeños.</p>
<div align="center"><img src="http://www.riactive.com/wp-content/uploads/2010/01/imagen_1.jpg" alt="imagen_1" title="imagen_1" width="513" height="330" class="aligncenter size-full wp-image-718" /></div>
<p>A primera vista podemos destacar una interfaz atractiva que <strong>no se parece</strong> a los clásicos portales tradicionales de banco, ya que Blink es un banco virtual que no tiene sucursales toda la actividad se realiza por internet, su lema dice <strong>“Don’t Bank, Blink!”</strong><br />
<span id="more-717"></span></p>
<h3>Flex para el Frontend</h3>
<p>Si accedemos a la <a href="https://www.blink.com/btrial/">versión de prueba</a> del servicio podremos jugar con la interfaz de usuario que muestra todas las posibilidades del banco virtual en un componente acordeón horizontal, seguramente de <a href="http://code.google.com/p/flexlib/">Flex Lib</a> o desarrollado de manera interna porque recordemos que el acordeón nativo no tiene esa funcionalidad.</p>
<div align="center"><img src="http://www.riactive.com/wp-content/uploads/2010/01/imagen_3.jpg" alt="imagen_3" title="imagen_3" width="513" height="330" class="aligncenter size-full wp-image-720" /></div>
<p>El manejo de los colores para sugerir la <em>usabilidad</em> de la aplicación es una de las características que salta a primera vista, en los grids hay diferentes tonalidades de acuerdo a la gama de colores seleccionados e inclusive es posible cambiar el color de toda la interfaz de acuerdo al estado de ánimo del usuario, un detalle bastante cool por cierto <img src='http://www.riactive.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
En cuando a la experiencia de usuario podemos rescatar ciertas interacciones tipo <em>drag&#038;drop</em> y algunos detalles de sensibilidad de acuerdo a la posición del cursor muy agradables. Hay algunos <em>dashboards</em> de la interfaz para revisar los índices de IPC, Dow Jones y NASDAQ, aunque en futuras versiones se agradecerían <em>drill downs</em> para hacer más dinámico el control de los datos.</p>
<h3>Acceso a Datos</h3>
<p>El acceso a datos en una aplicación que maneja muchas transacciones tiene que ser <strong>algo de lo más importante a considerarse</strong> y por el tipo de desempeño que vemos en <a href="https://www.blink.com/">Blink</a> podríamos apostar <em>nuestros 2 centavos</em> a que están usando <strong>Remoting</strong> en alguna de sus variantes (Blaze, WebOrb, LCDS...)<br />
Otro punto notable es que al cargar la aplicación, desde que se ejecuta podemos notar cierto bootstrapping de elementos comunes como iconografía y algunos estilos y controles, de otra manera no podríamos explicarnos su buen desempeño inclusive con anchos de banda algo limitados.<br />
Queda el pendiente de revisar la aplicación con datos reales puesto que utilizamos la versión de prueba pero esperamos que se comporte igual de bien al momento de estar “transaccionando”.</p>
<div align="center"><img src="http://www.riactive.com/wp-content/uploads/2010/01/imagen_4.jpg" alt="imagen_4" title="imagen_4" width="513" height="330" class="aligncenter size-full wp-image-721" /></div>
<h3>Redes Sociales</h3>
<p>Ninguna aplicación que se precie de ser <strong>2.0</strong> en este momento puede ignorar el poder de las redes sociales. En el caso de <a href="https://www.blink.com">Blink</a> ya están usando <strong>Twitter</strong> y <strong>Facebook</strong>, aunque hay que decirlo todavía a un nivel muy básico. Yo esperaría que en un futuro la integración fuera tal que inclusive cuando hicieras una transacción, el sevicio te mandara instantáneamente un DM por Twitter como alternativa al clásico SMS que utilizan la mayoría de bancas electrónicas.<br />
Así mismo sería interesante que hubiera un apartado de wishlists de tus amigos en FaceBook que te permitiera rápidamente acceder a tiendas en línea a través del portal de Blink. En definitiva el target al cuál va orientado este servicio (<em>estudiantes universitarios y recién egresados</em>) poco a poco exigirá a sus desarrolladores mayor integración con Social Media y esperemos ver innovaciones interesantes al respecto.</p>
<div align="center"><img src="http://www.riactive.com/wp-content/uploads/2010/01/imagen_6.jpg" alt="imagen_6" title="imagen_6" width="512" height="330" class="aligncenter size-full wp-image-723" /></div>
<h3>Tecnologías Móviles</h3>
<p>En este rubro <a href="https://www.blink.com">Blink</a> le apuesta a una buena estrategia abarcando las 3 plataformas de smartphones con más usuarios en este momento: <strong>iPhone, BlackBerry y Windows Mobile.</strong><br />
La aplicación de iPhone que fue la que tuvimos oportunidad de probar mantiene buenas críticas en la App Store y llega a ser un buen complemento a la aplicación de stocks original del dispositivo. Destaca también el que incluye un lector de <strong>RSS</strong> para mostrar las noticias financieras más relevantes así como los tipos de cambio del día.</p>
<div align="center"><img src="http://www.riactive.com/wp-content/uploads/2010/01/imagen_7.jpg" alt="imagen_7" title="imagen_7" width="436" height="197" class="aligncenter size-full wp-image-724" /></div>
<h3>Conclusiones</h3>
<p>En definitiva <a href="https://www.blink.com">Blink</a> nos ha gustado mucho, hace tiempo que los portales financieros en México solamente se ocupaban del tema de seguridad y responsabilidad social, dejando muy olvidado el tema de experienciencia de usuario. <strong>Esperamos en un futuro ver más apuestas por Flex en proyectos en México</strong> que permitan ver las bondades de esta tecnología. Así mismo los invitamos a que nos dejen un comentario sobre su opinión al respecto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/01/27/blink-de-banamex-hecho-en-flex/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>SHDH 12 &#8211; Flexers &amp; Flashers Welcome!</title>
		<link>http://www.riactive.com/2010/01/25/shdh-12-flexers-flashers-welcome/</link>
		<comments>http://www.riactive.com/2010/01/25/shdh-12-flexers-flashers-welcome/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 03:29:07 +0000</pubDate>
		<dc:creator>Edgar Parada</dc:creator>
				<category><![CDATA[Eventos]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=707</guid>
		<description><![CDATA[Hay pocos eventos en México que podríamos definir como verdaderas excepciones y uno de ellos es sin duda el DevHouse, donde el espíritu de compartir conocimiento se puede sentir al máximo; en un mismo techo podemos ver a programadores de Ruby convivir con programadores de .NET, a desarrolladores de Flash platicar con entusiastas de AJAX [...]]]></description>
			<content:encoded><![CDATA[<p>Hay pocos eventos en México que podríamos definir como <strong>verdaderas excepciones</strong> y uno de ellos es sin duda el <a href="http://shdhmexicocity.org/">DevHouse</a>, donde el espíritu de compartir conocimiento se puede sentir al máximo; en un mismo techo podemos ver a programadores de <em>Ruby</em> convivir con programadores de <em>.NET</em>, a desarrolladores de <em>Flash</em> platicar con entusiastas de <em>AJAX</em> y todo ello sin prejuicios porque las reglas del juego <a href="http://shdhmexicocity.org/preguntas-frecuentes/">están muy claras</a>.</p>
<div align="center"><a href="http://shdhmc.pbworks.com/SHDH-12"><img src="http://www.riactive.com/wp-content/uploads/2010/01/shdh-logo.png" alt="shdh-logo" title="shdh-logo" width="150" height="150" class="aligncenter size-full wp-image-708" /></a></div>
<p>Para esta edición el equipo de <a href="http://www.riactive.com/equipo/">RIActive</a> ha decidido ir un poco más allá y apoyaremos al DevHouse de la siguiente manera...<br />
<span id="more-707"></span></p>
<ul>
<li><strong>Queremos conocer a quiénes están usando la Plataforma Flash en México</strong> por lo que nos dará mucho gusto que te acerques y platiques con nosotros tus inquietudes.</li>
<li><strong>Vamos a documentar los proyectos que tengan que ver con Flash/Flex</strong> con una pequeña cápsula de video y un post, les robaremos solo unos minutos ya que no queremos interrumpirlos mucho, pero estamos seguros que les dará visibilidad con la comunidad.</li>
<li><strong>Llevaremos algunos libros</strong> de referencia para que puedas usarlos durante el evento.</li>
<li><strong>Algunos integrantes del equipo estaremos presentes</strong>, la mayoría desarrollamos con la plataforma Flash por lo que si tienes alguna duda podemos compartir contigo más de un par de tips.</li>
</ul>
<p>Así que ya lo sabes no hay excusa para faltar a este <a href="http://shdhmc.pbworks.com/SHDH-12">DevHouse 12, este sábado 20 de febrero de 2010</a> solo tienes que registrarte en el wiki, llevar como meta realizar o avanzar un proyecto y compartir con nosotros!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/01/25/shdh-12-flexers-flashers-welcome/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Reunión 5 de Flash_mc &#8211; Audio</title>
		<link>http://www.riactive.com/2010/01/20/reunion-5-de-flash_mc-audio/</link>
		<comments>http://www.riactive.com/2010/01/20/reunion-5-de-flash_mc-audio/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 13:21:18 +0000</pubDate>
		<dc:creator>Edgar Parada</dc:creator>
				<category><![CDATA[Eventos]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=698</guid>
		<description><![CDATA[Nuestros amigos del grupo Flash_mc tendrán este sábado 23 de enero un evento y como ya se ha hecho costumbre desde hace un par de reuniones hay una temática para todas las sesiones que en esta edición abarca la Integración de Flash con Audio. 

La cita es a las 3:30 pm en las instalaciones de [...]]]></description>
			<content:encoded><![CDATA[<p>Nuestros amigos del grupo <a href="http://flashmc.org/">Flash_mc</a> tendrán este sábado 23 de enero un evento y como ya se ha hecho costumbre desde hace un par de reuniones hay una temática para todas las sesiones que en esta edición abarca la <strong>Integración de Flash con Audio. </strong></p>
<div align="center"><img src="http://www.riactive.com/wp-content/uploads/2010/01/flashmc_05.jpg" alt="flashmc_05" title="flashmc_05" width="425" height="254" class="aligncenter size-full wp-image-699" /></div>
<p>La cita es a las 3:30 pm en las instalaciones de ARSCITE, ubicadas en Pasadena #19, Col. Del Valle, a una cuadras del WTC. <strong>La entrada es completamente gratuita</strong>. Para más información sugerimos visitar el <a href="http://www.tequilavalley.com/2010/01/19/flash_mc-5-audio/">post original.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/01/20/reunion-5-de-flash_mc-audio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magazine Xpert</title>
		<link>http://www.riactive.com/2010/01/15/magazine-xpert/</link>
		<comments>http://www.riactive.com/2010/01/15/magazine-xpert/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 15:45:40 +0000</pubDate>
		<dc:creator>Edgar Parada</dc:creator>
				<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=693</guid>
		<description><![CDATA[Últimamente la comunidad a nivel latinoamérica esta muy activa (lo cuál es muy bueno!) y es ahora que de parte del grupo de usuarios Xpert de Colombia nos enteramos del proyecto Magazine Xpert. Una revista en formato digital que trata temas de actualidad relacionados con el mundo de Adobe y lo mejor de todo en [...]]]></description>
			<content:encoded><![CDATA[<p>Últimamente la comunidad a nivel latinoamérica esta muy activa (<strong>lo cuál es muy bueno!</strong>) y es ahora que de parte del grupo de usuarios <a href="http://xpert.com.co/">Xpert de Colombia</a> nos enteramos del proyecto <a href="http://magazinexpert.com/2010/01/descarga-el-segundo-numero-del-magazinexpert/">Magazine Xpert</a>. Una revista en formato digital que trata temas de actualidad relacionados con el mundo de Adobe y lo mejor de todo en nuestro idioma.</p>
<div align="center"><a href="http://magazinexpert.com/2010/01/descarga-el-segundo-numero-del-magazinexpert/"><img src="http://www.riactive.com/wp-content/uploads/2010/01/magazinexpert_02.jpg" alt="magazinexpert_02" title="magazinexpert_02" width="500" height="324" class="aligncenter size-full wp-image-694" /></a></div>
<p>En este número encontrarán diversos tutoriales de Flex, Flash y de móviles. También verán las última noticias y un directorio muy útil de los grupos hispanos para que se acerquen a ellos y participen en sus actividades.<br />
<strong>En RIActive queremos desear la mejor de las suertes al grupo Xpert</strong> y esperamos poder colaborar próximamente en alguna de las ediciones. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/01/15/magazine-xpert/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AMFPHP y PHP 5.3</title>
		<link>http://www.riactive.com/2010/01/06/amfphp-y-php-5-3/</link>
		<comments>http://www.riactive.com/2010/01/06/amfphp-y-php-5-3/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 22:14:28 +0000</pubDate>
		<dc:creator>yacaFx</dc:creator>
				<category><![CDATA[Actualizaciones]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=675</guid>
		<description><![CDATA[Como ya muchos saben AMFPHP lleva en el limbo cerca de 2 años cuando Wade Arnolds dejo el proyecto para colaborar directamente en la integracion de AMF con zend y en todo ese tiempo no ha existido algun update en el proyecto. 
Recordemos que AMFPHP es una implementación PHP de AMF(Action Message Format) para poder [...]]]></description>
			<content:encoded><![CDATA[<p>Como ya muchos saben <a href="http://amfphp.org/">AMFPHP</a> lleva en el limbo cerca de 2 años cuando <a href="http://wadearnold.com/blog/">Wade Arnolds</a> dejo el proyecto para colaborar directamente en la integracion de AMF con zend y en todo ese tiempo no ha existido algun update en el proyecto. </p>
<p>Recordemos que AMFPHP es una implementación PHP de AMF(<a href="http://en.wikipedia.org/wiki/Action_Message_Format">Action Message Format</a>) para poder hacer uso de PHP, en el caso de Flex a travez de Remote Objects y con Flash usando NetConnection.</p>
<p>Mientras tanto PHP como tal ha continuado con su evolución y derivado de esto en las instalaciones de AMFPHP haciendo uso de PHP 5.3 existen un par de errores que no permiten la correcta ejecucion de amfphp y podemos darnos cuenta de e esto al ejecutar el browser de clases pues nos arroja 2 errores.<br />
<span id="more-675"></span><br />
El error arrojado es "Function eregi_replace() is deprecated" y esto es por que a la función eregi_replace() ya no se la dará soporte y en PHP 6 desaparecerá. </p>
<p>Esta función sirve para reemplazar cadenas de texto haciendo uso de expresiones regulares o strings; por lo que para poder solucionar este error podemos comentar las lineas de código (505 y 507)donde se muestra ese error o usar una función alternativa a <a href="http://php.net/manual/en/function.eregi-replace.php">eregi_replace()</a> como puede ser <a href="http://www.php.net/manual/en/function.preg-replace.php">preg_replace()</a> y el código quedaria de la siguiente manera:</p>
<p>****************************************************<br />
//Línea 505:<br />
//Antes:<br />
$comment = eregi_replace("\n[ \t]+", "\n", trim($comment));<br />
//Después:<br />
$comment = preg_replace("\n[ \t]i", "\n", trim($comment));</p>
<p>//Línea 507:<br />
//Antes:<br />
$comment = eregi_replace("[\t ]+", " ", trim($comment));<br />
//Después:<br />
$comment = preg_replace("[\t ]i", " ", trim($comment));</p>
<p>****************************************************</p>
<p>Al final tu método queda asi:</p>
<p>****************************************************<br />
function cleanComment($comment){<br />
		$comment = str_replace("/**", "", $comment);<br />
		$comment = str_replace("*/", "", $comment);<br />
		$comment = str_replace("*", "", $comment);<br />
		$comment = str_replace("\r", "", trim($comment));<br />
		$comment = preg_replace("\n[ \t]i", "\n", trim($comment));<br />
		$comment = str_replace("\n", "\\n", trim($comment));<br />
		$comment = preg_replace("[\t ]i", " ", trim($comment));</p>
<p>		$comment = str_replace("\"", "\\\"", $comment);<br />
		return $comment;<br />
	}<br />
****************************************************</p>
<p>eregi_replace es usado en la clase MethodTable en el método cleanComment ubicado en la ruta core\shared\util dentro de la carpeta de amfphp. El objetivo de este método es eliminar los caracteres que indican comentario (// o /* */) en un código para mostrar dichos comentarios "limpios" en el Browser de Clases</p>
<p>Ya para concluir este post, AMFPHP a pesar de ser un proyecto que lleva parado cerca de 2 años sigue siendo bastante funcional y sigue en el gusto de mucha gente para integrar servicios de PHP con Flex o con FLASH, esperemos que reviva pronto, aun a pesar de existir <a href="http://framework.zend.com/download/amf">ZEND</a> o <a href="http://code.google.com/p/sabreamf/">SABREAMF</a> de los cuales hablaremos posteriormente.</p>
<p>Feliz año nuevo lleno de exitos y.... Happy Coding!!!!!!!<br />
By yacaFx!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/01/06/amfphp-y-php-5-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Escribamos bien con Squiggly</title>
		<link>http://www.riactive.com/2010/01/06/escribamos-bien-con-squiggly/</link>
		<comments>http://www.riactive.com/2010/01/06/escribamos-bien-con-squiggly/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 20:18:00 +0000</pubDate>
		<dc:creator>sernart</dc:creator>
				<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=676</guid>
		<description><![CDATA[En dias anteriores fue publicada en http://labs.adobe.com la nueva actualización de Squiggly. Esta es una librería desarrollada en ActionScript que nos permite contar con un motor de sugerencia ortográfica para controles de tipo texto de nuestras aplicaciones. Trabaja sobre el Flash Player (incluyendo la versión 10) y Air.  Squiggly está en estatus de pre liberación [...]]]></description>
			<content:encoded><![CDATA[<p>En dias anteriores fue publicada en <a href="http://labs.adobe.com/">http://labs.adobe.com</a> la nueva actualización de <a href="http://labs.adobe.com/technologies/squiggly/" target="_blank">Squiggly</a>. Esta es una librería desarrollada en ActionScript que nos permite contar con un motor de sugerencia ortográfica para controles de tipo texto de nuestras aplicaciones. Trabaja sobre el <a href="http://www.adobe.com/products/flashplayer/" target="_blank">Flash Player</a> (incluyendo la versión 10) y <a href="http://www.adobe.com/products/air/" target="_blank">Air</a>.  Squiggly está en estatus de pre liberación y esta versión representa su segunda actualización.</p>
<p>Podremos utilizar Squiggly en nuestras aplicaciones realizadas tanto en: <a href="http://www.adobe.com/products/flex/?promoid=BPDEQ" target="_blank">Flex 3</a> como en <a href="http://labs.adobe.com/technologies/flashbuilder4/" target="_blank">Flex 4</a> y en aplicaciones puras de Flash.<span id="more-676"></span></p>
<p>Personalmente, me llamo la atención el funcionamiento de la librería, la cual en una primera instancia se basa en reglas gramaticales del inglés lo que ocasiona que solo haya correcciones para palabras en este idioma, pero más adelante esto cambiará. Utiliza Shared Objects para guardar la personalización del diccionario de cada usuario lo cual ofrece una experiencia bastante interesante.</p>
<p>Al leer toda la documentación y los ejemplos de este desarrollo podremos darnos cuenta que es una alternativa interesante y que en la medida en que madure nos permitirá incluirla como parte de nuestros desarrollos lo que nuestros usuarios agradecerán más de una vez.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2010/01/06/escribamos-bien-con-squiggly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash Catalyst, lo mejor de ambos mundos.</title>
		<link>http://www.riactive.com/2009/12/23/flash-catalyst-lo-mejor-de-ambos-mundos/</link>
		<comments>http://www.riactive.com/2009/12/23/flash-catalyst-lo-mejor-de-ambos-mundos/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 00:55:07 +0000</pubDate>
		<dc:creator>sernart</dc:creator>
				<category><![CDATA[Artículos]]></category>

		<guid isPermaLink="false">http://www.riactive.com/?p=667</guid>
		<description><![CDATA[A puesto a que más de uno, independientemente de su experiencia en la plataforma Flash, nos ha nacido la idea de acercarnos a las novedades que Adobe prepara en las próximas versiones de sus productos y más aún de comenzar a sacar jugo de ellas.
Podemos definir a Flash Catalyst como una herramienta de diseño que [...]]]></description>
			<content:encoded><![CDATA[<p>A puesto a que más de uno, independientemente de su experiencia en la plataforma Flash, nos ha nacido la idea de acercarnos a las novedades que Adobe prepara en las próximas versiones de sus productos y más aún de comenzar a sacar jugo de ellas.</p>
<p>Podemos definir a <a href="http://labs.adobe.com/technologies/flashcatalyst/" target="_blank">Flash Catalyst</a> como una herramienta de diseño que nos permite crear interfaces ricas visualmente sin la necesidad de implementar una sola línea de código.</p>
<p>Imaginemos 2 mundos: el de los diseñadores y el de los desarrolladores. ¿Cuántas veces hemos sufrido para entendernos unos con otros dentro de un proyecto?, muchas, ¿No es así? pues en este contexto Flash Catalyst funge como un puente conciliador entre ambos mundos.</p>
<p><span id="more-667"></span></p>
<p>Con Flash Catalyst un diseñador extiende sus dominios al grado de crear interfaces con arte elaborado, animaciones, efectos e interactividad, los desarrolladores, aprovechan el trabajo realizado por los diseñadores y lo conectan con los servicios de datos correspondientes para desplegar la información utilizando Flash Builder.</p>
<p>Un nivel más arriba: el diseñador crea la interfaz utilizando: <em>Illustrator, Photoshop o Fireworks</em>, otra persona dedicada a trabajar la interactividad sobre la interfaz en Flash Catalyst y el desarrollador haciendo de las suyas en <em>Flash Builder</em>. Suena mucho mejor ¿No es así?.</p>
<p>La tendencia es de comenzar a crear aplicaciones RIA’s en serie creando roles, tareas especificas y flujos de trabajo más naturales. Como consecuencia, se generará una especialización en todas las fases del proceso, lo que a mi parecer nos ayudará a crear aplicaciones cada vez mas útiles y atractivas para el usuario final, en menor tiempo.</p>
<p>Podremos crear Wireframes ilustrativos e interactivos que muestren el flujo propuesto para una aplicación, desarrollaremos prototipos y todo el trabajo realizado en ellos representará el inicio de nuestras aplicaciones finales.</p>
<p>Para los desarrolladores con tendencias a diseñadores y viceversa Flash Catalyst les vendrá como anillo al dedo. Sin duda, la plataforma nos da todas las herramientas para globalizar nuestro conocimiento.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riactive.com/2009/12/23/flash-catalyst-lo-mejor-de-ambos-mundos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
