<?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>RIA212&#187; Desarrollo</title>
	<atom:link href="http://ria212.com/blog/category/desarrollo/feed/" rel="self" type="application/rss+xml" />
	<link>http://ria212.com</link>
	<description>Rich internet Applications en tu idioma</description>
	<lastBuildDate>Thu, 08 Mar 2012 21:51:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Comenzando con Maven</title>
		<link>http://ria212.com/blog/2010/10/comenzando-con-maven/</link>
		<comments>http://ria212.com/blog/2010/10/comenzando-con-maven/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 03:38:25 +0000</pubDate>
		<dc:creator>leovalls</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://ria212.com/?p=789</guid>
		<description><![CDATA[Maven: Es una herramienta para la gestión de proyectos desarrollados en Java. Maven no posee interfaz gráfica, lo que significa que es controlada desde la consola de comandos. Incluye un modelo de objetos del proyecto, conjunto de estándares, ciclo de vida de un proyecto, sistema de gestión de dependencias y lógica para la ejecución de plugin<a href="http://ria212.com/blog/2010/10/comenzando-con-maven/">&#160;&#160;[ Read More ]</a>]]></description>
			<content:encoded><![CDATA[<h1><a rel="attachment wp-att-822" href="http://ria212.com/blog/2010/10/comenzando-con-maven/image_gallery/"><img class="size-full wp-image-822 aligncenter" title="image_gallery" src="http://ria212.com/wp-content/uploads/2010/10/image_gallery.gif" alt="" width="462" height="106" /></a></h1>
<h1><strong>Maven:</strong></h1>
<p>Es una herramienta para la gestión de proyectos desarrollados en Java. Maven no posee interfaz gráfica, lo que significa que es controlada desde la consola de comandos. Incluye un <a id="aptureLink_RIpaSBkOcv" href="http://es.wikipedia.org/wiki/Modelo%20de%20objeto">modelo de objetos</a> del proyecto, conjunto de estándares, ciclo de vida de un proyecto, sistema de gestión de dependencias y lógica para la ejecución de plugin goals (objetivos de los complementos) definidas en la fases del ciclo de vida.<br />
Toda la configuración necesaria para que Maven pueda gestionar un proyecto se encuentra en el modelo de objetos del proyecto (POM, por sus siglas en ingles, Project Object Model) antes mencionado. Es un archivo en formato <a id="aptureLink_l2Cbo9eSet" href="http://es.wikipedia.org/wiki/Extensible%20Markup%20Language">xml</a> donde se configura todo el comportamiento del proyecto, desde detalles simples el nombre del proyecto, la versión o sus desarrolladores, así como información vital como lo serian las dependencias del mismo. En caso de ser un proyecto donde encontramos varios subproyectos, existiría un pom.xml para el proyecto padre donde podemos encontrar información y configuraciones generales, como por ejemplo las declaraciones de los subproyectos de lo conforman, las dependencias comunes para varios subproyectos, entre otras datos; y uno para cada uno de los subproyectos, donde encontramos las configuraciones particulares de cada subproyectos, como pudiese ser el tipo de empaquetamiento (jar o war), las dependencias particulares de otros subproyectos.<br />
En un proyecto simple un archivo pom.xml pudiésemos verlo asi:</p>
<p style="text-align: center;"><a rel="attachment wp-att-830" href="http://ria212.com/blog/2010/10/comenzando-con-maven/1-2/"><img class="aligncenter size-full wp-image-830" title="pom.xml" src="http://ria212.com/wp-content/uploads/2010/10/11.jpg" alt="" width="486" height="407" /></a></p>
<p>Maven utiliza la convención sobre la configuración, esto a nivel práctico quiere decir que utiliza por defecto las configuraciones predeterminadas estándares asumidas como “convención” por las comunidades de desarrolladores, configuraciones como por ejemplo, que el nombre de las tablas y sus columnas se encuentren asociadas a los nombres de las clases y sus propiedades respectivamente, o como las rutas de los directorios para los códigos fuentes asumida por defecto en /src/main/java  o de los recursos que es asumida en /src/main/resources. Esto no indica que el usuario no pueda realizar configuraciones personalizadas, permitiéndosele modificar la mayoría de valores predeterminados.</p>
<p><strong>Instalación:</strong><strong><br />
</strong> Antes de instalar Maven, se debe verificar que el Java Developer Kit (<a id="aptureLink_le2RBLLtPY" href="http://es.wikipedia.org/wiki/Java%20Development%20Kit">JDK</a>)  se encuentra correctamente instalado, esto se puede verificar ejecutando, en la consola de comandos, el comando “java -version”:</p>
<p style="text-align: center;"><a rel="attachment wp-att-831" href="http://ria212.com/blog/2010/10/comenzando-con-maven/2-2/"><img class="aligncenter size-full wp-image-831" title="java version" src="http://ria212.com/wp-content/uploads/2010/10/21.jpg" alt="" width="617" height="148" /></a></p>
<p>•	Descargar y descomprimir Maven.<br />
•	Editar el Path (variables de entorno) agregamdp: “C:\maven-2.0.4\bin” (ruta donde fue descomprimido maven)<br />
•	Verificar instalación:  “mvn –version”</p>
<p style="text-align: center;"><a rel="attachment wp-att-832" href="http://ria212.com/blog/2010/10/comenzando-con-maven/3-2/"><img class="aligncenter size-full wp-image-832" title="maven version" src="http://ria212.com/wp-content/uploads/2010/10/31.jpg" alt="" width="617" height="145" /></a></p>
<p><strong>Crear Proyecto:</strong><strong><br />
</strong> Comando:<br />
mvn archetype:create -DgroupId=proyectos.ejemplos -DartifactId=EjemploMaven</p>
<p style="text-align: center;"><a rel="attachment wp-att-793" href="http://ria212.com/blog/2010/10/comenzando-con-maven/attachment/4/"><a rel="attachment wp-att-833" href="http://ria212.com/blog/2010/10/comenzando-con-maven/4-2/"><img class="aligncenter size-full wp-image-833" title="maven create" src="http://ria212.com/wp-content/uploads/2010/10/41.jpg" alt="" width="815" height="554" /></a><br />
</a></p>
<p><em>archetype:create</em> es el comando/plugin, o como quieras llamarlo, de maven para crear un proyecto.<br />
<em> -DgroupId=proyectos.ejemplos </em>es el conjunto de proyectos al que pertenece nuestro proyecto.<br />
<em> -DartifactId=EjemploMaven</em> es el nombre que queramos dar al proyecto.</p>
<p>Esto creará el proyecto y la estructura de archivos</p>
<p style="text-align: center;"><a rel="attachment wp-att-794" href="http://ria212.com/blog/2010/10/comenzando-con-maven/attachment/5/"><a rel="attachment wp-att-834" href="http://ria212.com/blog/2010/10/comenzando-con-maven/5-2/"><img class="aligncenter size-full wp-image-834" title="Estructura de directorios" src="http://ria212.com/wp-content/uploads/2010/10/51.jpg" alt="" width="206" height="189" /></a><br />
</a></p>
<p>Seguramente será necesario la creación de directorios adicionales para organizar el proyecto, los propuestos por Maven son:<br />
•	config para ficheros de configuración, iconos, etc.<br />
•	resources para ficheros que queramos que se metan dentro del jar. Maven meterá automáticamente todo lo que haya en este subdirectorio dentro del jar<br />
•	assembly para la configuración que queramos en nuestro zip de distribución.<br />
Maven también hace una propuesta de estructura de directorios:</p>
<p>http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html</p>
<p><strong>Compilar:<br />
</strong> Para compilar, basta con colocarse en el directorio donde se encuentra el archivo pom.xml y ejecutar: mvn compile</p>
<p style="text-align: center;"><a rel="attachment wp-att-835" href="http://ria212.com/blog/2010/10/comenzando-con-maven/6-2/"><img class="aligncenter size-full wp-image-835" title="Maven compile" src="http://ria212.com/wp-content/uploads/2010/10/61.jpg" alt="" width="713" height="317" /></a></p>
<p>Esto creará un directorio target dentro de EjemploMaven  y un subdirectorio classes donde se almacenaran todos los .class del compilado</p>
<p style="text-align: center;"><a rel="attachment wp-att-796" href="http://ria212.com/blog/2010/10/comenzando-con-maven/attachment/7/"><a rel="attachment wp-att-836" href="http://ria212.com/blog/2010/10/comenzando-con-maven/7-2/"><img class="aligncenter size-full wp-image-836" title="Estructura de directorios" src="http://ria212.com/wp-content/uploads/2010/10/71.jpg" alt="" width="185" height="242" /></a><br />
</a></p>
<p><strong>Generar el </strong><a id="aptureLink_nDqDucD6Qo" href="http://es.wikipedia.org/wiki/Jar"><strong>jar</strong></a><strong> :</strong><br />
Para generar el jar hay que ejecutar:mvn package</p>
<p style="text-align: center;"><a rel="attachment wp-att-797" href="http://ria212.com/blog/2010/10/comenzando-con-maven/attachment/8/"><a rel="attachment wp-att-837" href="http://ria212.com/blog/2010/10/comenzando-con-maven/8-2/"><img class="aligncenter size-full wp-image-837" title="Maven package" src="http://ria212.com/wp-content/uploads/2010/10/81.jpg" alt="" width="714" height="534" /></a><br />
</a></p>
<p>Compilará de ser necesario, ejecutará las pruebas <a id="aptureLink_cH1mK7JXoZ" href="http://es.wikipedia.org/wiki/JUnit">jUnit</a>, y de no haber fallos creará el jar en el directorio target. Maven asignará el nombre EjemploMaven-1.0-SNAPSHOT.jar, donde EjemploMaven es el nombre que asignado la momento de crear la aplicación, 1.0 indica que es la primera versión creada del proyecto (modificable en el archivo pom.xml) y SNAPSHOT indica que es una versión en construcción (no definitiva), cada vez que se crea un jar Maven sustituirá el texto SNAPSHOT por la fecha y hora de generación, permitiendo mantener todos los jar generados (Configurable en pom.xml).<br />
Al generarse el jar se incluirán todos los ficheros almacenados en el directorio resources.</p>
<p><strong>Repositorios:</strong><br />
Los repositorios, vistos como una de las ventajas de Maven, son almacenes de los archivos jar generados. Estos repositorios se encuentran tanto en <a href="http://www.ibiblio.org/maven2/" target="_blank">la web</a>, desde donde Maven descarga los jar que necesites en tu proyecto, así como de manera local, donde se almacenan los jar descargados para en caso de necesitarlos nuevamente, no tener que descargarlos. En este caso el directorio predeterminado por Maven para almacenar estos jar seria:<br />
•	$HOME/.m2 en unix/linux<br />
•	C:\Documents and Settings\usuario\.m2 en windows<br />
Pero como casi todo en Maven, esta ubicación puede ser modificada de necesitarlo.<br />
De haber diferentes versiones de un mismo jar en el repositorio, Maven las almacenará en directorios diferentes.</p>
<p><strong>Ejemplo de sistema de archivos del repositorio:</strong></p>
<p style="text-align: center;"><strong><a rel="attachment wp-att-798" href="http://ria212.com/blog/2010/10/comenzando-con-maven/attachment/9/"><a rel="attachment wp-att-838" href="http://ria212.com/blog/2010/10/comenzando-con-maven/9-2/"><img class="aligncenter size-full wp-image-838" title="Repositorios" src="http://ria212.com/wp-content/uploads/2010/10/91.jpg" alt="" width="219" height="292" /></a><br />
</a></strong></p>
<p>Con el ejemplo mostrado, Maven puede lucir como una simple aplicación para compilar proyectos, mas  si nos imaginamos una gran aplicación, comprendida de decenas de subaplicaciones, que pudiesen ser aplicaciones web o no serlo, que dependan unas de las otras, y que cada una de ellas utilice diferentes plugins que necesiten estar actualizados a la par en cada una de las subaplicaciones para evitar conflictos de versiones, Maven está en la capacidad de lidiar con esto, compilar, genar jar o war (en el caso de aplicaciones web), descargar actualizaciones de los plugins, estas entre muchas otras tareas de las cuales es capaz de hacerse cargo para ayudar a los desarrolladores a mantener aplicaciones.<br />
Adicionalmente cabe destacar que con Maven no todo es color de rosas, también tiene limitaciones, como por ejemplo la dependencia de una conexión a internet para poder realizar las descargar necesarias para poder completar hasta las tareas mas básicas, ya que al descargar Maven, solo trae consigo lo mínimo para funcionar, siendo este otro punto a su favor ya que lo hace más liviano.</p>
<p><strong>Fuentes consultadas:</strong><br />
<a href="http://www.proyectos.com/java/herramientas/maven.php" target="_blank"> http://www.proyectos.com/java/herramientas/maven.php</a><br />
<a href="http://www.sonatype.com/books/mvnex-book/reference/public-book.html" target="_blank"> http://www.sonatype.com/books/mvnex-book/reference/public-book.html</a></p>
<p>Escrito por: <a id="aptureLink_eoCR9aUUXN" href="http://twitter.com/Leo_Valls">Leonardo Valls</a></p>
<hr /><small>Copyright &copy; 2008<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:<br /> )</small>]]></content:encoded>
			<wfw:commentRss>http://ria212.com/blog/2010/10/comenzando-con-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recordar usuarios localmente con Shared Objects en Flex</title>
		<link>http://ria212.com/blog/2010/08/shared-objects-flex/</link>
		<comments>http://ria212.com/blog/2010/08/shared-objects-flex/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 04:15:35 +0000</pubDate>
		<dc:creator>Juan Manrique</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Componentes]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://ria212.com/?p=568</guid>
		<description><![CDATA[Los Shared Objects son objetos gestionados por el Flash Player que sirven para almacenar datos en el disco duro de la máquina donde se está ejecutando una película Flash. Aunque no lo son, los Shared Objects pueden entenderse como los cookies del Flash Player, con la diferencia de que son mucho más poderosos que los<a href="http://ria212.com/blog/2010/08/shared-objects-flex/">&#160;&#160;[ Read More ]</a>]]></description>
			<content:encoded><![CDATA[<p>Los Shared Objects son objetos gestionados por el Flash Player que sirven para almacenar datos en el disco duro de la máquina donde se está ejecutando una película Flash. Aunque no lo son, los Shared Objects pueden entenderse como los cookies del Flash Player, con la diferencia de que son mucho más poderosos que los cookies tradicionales en varios aspectos:</p>
<ul>
<li>Los cookies expiran por defecto; los Shared Objects no expiran.</li>
<li>Por lo general, los cookies tienen un límite máximo de 20 por cada sitio web; los Shared Objects no tienen ese límite.</li>
<li>Por lo general, los cookies están limitados a un tamaño de 4kb cada uno. Por defecto, los Shared Objects tienen un tamaño de 100kb pero se les puede configurar un tamaño ilimitado.</li>
<li>Los cookies pueden ser transmitidos a un servidor vía HTTP. Los Shared Objects no pueden ser transmitidos a un servidor ni pueden ser compartidos entre aplicaciones de distintos dominios (por defecto, aunque se puede permitir), características que suponen una ventaja a nivel de seguridad sobre los cookies.</li>
</ul>
<p>Otras características interesantes de los Shared Objects y los cookies que pueden ser consideradas como ventajas o desventajas dependiendo del punto de vista, son:</p>
<ul>
<li>Los cookies pueden ser deshabilitados en su totalidad o para un sitio específico desde el navegador. Los Shared Objects escapan a esta configuración. Deben ser gestionados desde la aplicación, haciendo clic derecho sobre la película Flash y seleccionando la opción &#8220;Configuración&#8221; o &#8220;Settings&#8221;, o desde el <a id="aptureLink_puW3UeBfNw" href="http://www.macromedia.com/support/documentation/en/flashplayer/help/">Panel de configuración de Flash Player oficial de Adobe</a> .</li>
<p><img class="alignright" title="MenuFlashPlayer" src="http://ria212.com/ejemplos/imagenes/menu.JPG" alt="" width="258" height="123" /> <img class="alignright" title="PanelFlashPlayer" src="http://ria212.com/ejemplos/imagenes/panel.JPG" alt="" width="236" height="163" /></p>
<li>Los cookies pueden ser eliminados desde las opciones del navegador. Los Shared Objects permanecen cuando se ejecuta esta opción ya que no son cookies.</li>
<li>Los cookies, por lo general, almacenan datos de tipo texto. Los Shared Objects almacenan varios tipos de dato binarios, entre ellos: Array, ArrayCollection (de String), Boolean, Date, etc.</li>
</ul>
<p>Esta tecnología es propia de Flash, está bastante madura a la fecha y su uso es tan simple como difundido. Los Shared Objects, junto con los cookies tradicionales, han sido motivo de pleitos legales en diversos países debido a lo intrusivos que pueden resultar cuando se utilizan de manera agresiva y desmedida en actividades como el rastreo de hábitos de navegación de usuarios con fines publicitarios. De hecho, en Reino Unido se han creado regulaciones que impiden la utilización de cookies y Shared Objects para rastrear hábitos de usuarios sin su consentimiento. Definitivamente, esta tecnología es mas poderosa de lo que aparenta y puede resultar sumamente útil en nuestras aplicaciones RIA. Particularmente, y debido al tamaño ilimitado que puede alcanzar un Shared Object, los considero una buena alternativa al momento de almacenar datos de formularios en aplicaciones sin conexión a Internet (offline) para su posterior envío al servidor (obviamente, cuando la conexión a Internet este disponible).<br />
Sobre esto haré un ejemplo pronto.</p>
<p>Por ahora, les dejo un ejemplo de un buen uso (nada de intrusiones publicitarias, esta vez) de Shared Objects para almacenar los datos de autenticación de un usuario en una aplicación Flex. Lo interesante del ejemplo se encuentra en la clase LoginModel.</p>
<p>Dudas y comentarios son bien recibidos.</p>
<p><a href="http://www.linkedin.com/in/juanmanrique">Juan Manrique</a>.</p>
<p><strong>Nota</strong>: Gracias a Daniel Terraza por darme pistas sobre Shared Objects en Flex.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_EjemploSharedObjectsLoginRia212_703421072"
			class="flashmovie"
			width="600"
			height="600">
	<param name="movie" value="http://ria212.com//ejemplos/EjemploSharedObjectsLoginRia212/EjemploSharedObjectsLoginRia212.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://ria212.com//ejemplos/EjemploSharedObjectsLoginRia212/EjemploSharedObjectsLoginRia212.swf"
			name="fm_EjemploSharedObjectsLoginRia212_703421072"
			width="600"
			height="600">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p><a href="http://ria212.com/ejemplos/EjemploSharedObjectsLoginRia212/EjemploSharedObjectsLoginRia212.html" target="_blank">Recordar usuarios con Shared Objects en Flex</a><br />
<a href="http://ria212.com/ejemplos/EjemploSharedObjectsLoginRia212/srcview/index.html" target="_blank">Código</a></p>
<p><a id="aptureLink_GtxATSvLoh" href="http://kb2.adobe.com/cps/526/52697ee8.html">Información oficial sobre Shared Objects</a><br />
<a id="aptureLink_I8bYwwzPqj" href="http://www.macromedia.com/support/documentation/en/flashplayer/help/">Panel de configuración de Flash Player oficial de Adobe</a><br />
<a href="http://en.wikipedia.org/wiki/Local_Shared_Object">Curiosidades de los Shared Objects</a></p>
<p>La imagen de Caracas es de<a href="http://" target="_blank"> aquí</a>.</p>
<hr /><small>Copyright &copy; 2008<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:<br /> )</small>]]></content:encoded>
			<wfw:commentRss>http://ria212.com/blog/2010/08/shared-objects-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Cómo obtener ganancias con aplicaciones en Flash?</title>
		<link>http://ria212.com/blog/2010/08/como-obtener-ganancias-con-aplicaciones-en-flash/</link>
		<comments>http://ria212.com/blog/2010/08/como-obtener-ganancias-con-aplicaciones-en-flash/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 22:56:33 +0000</pubDate>
		<dc:creator>rafaelochoa</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Open Screen Project]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://ria212.com/?p=517</guid>
		<description><![CDATA[Esta es una pregunta que nos hacemos los desarrolladores constantemente. Ahora con el Open Screen Project (desarrollo de una aplicación para diferentes entornos o dispositivos) y las compañías de dispositivos móviles apoyando el desarrollo de aplicaciones, nos enfrentaremos a situaciones desconocidas y difíciles de lograr para muchos en relación a nuestras aplicaciones, tales como distribución, cobro<a href="http://ria212.com/blog/2010/08/como-obtener-ganancias-con-aplicaciones-en-flash/">&#160;&#160;[ Read More ]</a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="Ganancias con Flash" src="http://dl.dropbox.com/u/949462/100506905.jpg" alt="Imagen: gettyimages" width="234" height="331" /></p>
<p>Esta es una pregunta que nos hacemos los desarrolladores constantemente. Ahora con el <a id="aptureLink_PEJgoprn0S" href="http://en.wikipedia.org/wiki/Adobe%20Flash#Open_Screen_Project">Open Screen Project</a> (desarrollo de una aplicación para diferentes entornos o dispositivos) y las compañías de dispositivos móviles apoyando el desarrollo de aplicaciones, nos enfrentaremos a situaciones desconocidas y difíciles de lograr para muchos en relación a nuestras aplicaciones, tales como distribución, cobro y periodos de prueba.</p>
<p>Recientemente, Adobe publicó en Labs el proyecto <a id="aptureLink_pfRxeZy8P3" href="http://labs.adobe.com/technologies/melrose/">Melrose</a> , servicio que soporta la distribución y monetización de aplicaciones creadas para correr en AIR y donde ell desarrollador obtiene el 70% de las ganancias, teniendo un precio mínimo de $2.99 para aplicaciones en venta. Por el momento existe una prueba privada del sistema y podemos apuntarnos para ser notificados de su salida.</p>
<p><strong>¿Queremos vender esa gran aplicación y no queremos esperar por Melrose?</strong></p>
<p>Desde la caída de la economía mundial, <a id="aptureLink_2pk1jGanuI" href="http://www.arnnet.com.au/article/276261/boost_second-hand_games_sales_upside_global_financial_crisis_/?fp=&amp;fpid=&amp;pf=1">la industria de los videojuegos ha sido la más beneficiada</a> por la disminución de gastos en otras áreas. Las personas prefieren invertir en esta clase de entretenimiento que, en la mayoría de los casos, es mucho más económico que cualquier otro.  Sumado a esto, las redes sociales y la vida tan agitada que se lleva actualmente crean la necesidad de tener dispositivos móviles que nos permitan seguir conectados con nuestro entorno.  Un juego promedio para un <a id="aptureLink_FOPl2KQmgv" href="http://www.pocketgamer.biz/r/PG.Biz/App+Store+Analysis/feature.asp?c=14291">dispositivo móvil cuesta $2</a> y muchos se soportan mediante publicidad. Esto nos lleva a cobrar por un servicio, crear aplicaciones que se distribuyen gratuitamente, dando la idea de estar completas, colocando procesos o contenido que sólo puede ser disfrutados realizando pagos, usando, por ejemplo la  <a id="aptureLink_XgKKZ67tDc" href="http://www.dynaplex.com/devnet/flex/articles/flex_paypal.html">integración de PayPal con aplicaciones hechas en Flex y AIR</a> <a href="http://www.dynaplex.com/devnet/flex/articles/flex_paypal.html" target="_blank">.</a></p>
<p>Actualmente, todos los dispositivos con Android 2.2  son capaces de correr Flash/Flex en sus navegadores de internet y <a id="aptureLink_pkIZoupdZq" href="http://labs.adobe.com/technologies/air2/android/">AIR como aplicaciones</a> . En los próximos meses esto no será una situación exclusiva de Android; la mayoría de los fabricantes de dispositivos móviles se unirá a esta iniciativa.</p>
<p>Una opción rápida podría ser inscribir los juegos en concursos donde los premios son de <a id="aptureLink_GO4neZ9RZ6" href="http://www.mochimedia.com/contest/jul10/index">$20.000</a> y <a id="aptureLink_BxY1YFit5y" href="http://www.flashgamelicense.com/sponsor_pages/adobe/">$30.000</a> a repartir entre los mejores juegos en Android.</p>
<p><strong>¿Redes sociales?</strong></p>
<p>Adobe ofrece <a id="aptureLink_8eHECD4xXE" href="http://www.adobe.com/flashplatform/services/social/">Social</a> , una herramienta que facilita la integración de aplicaciones con las redes sociales mas importantes, aunque esta no es la única manera de realizar dicha integración ya existen librerías que interactúan con el respectivo <a href="http://es.wikipedia.org/wiki/API" target="_blank">API</a> de las diferentes redes. Todo depende hacia donde se quiere llevar la aplicación y el tiempo de entrega.</p>
<p>Dos ejemplos de compañías exitosas en la venta de juegos son <a id="aptureLink_vHbfAfe1nT" href="http://www.zynga.com/games/facebook.php">Zynga</a> (estimado de <a id="aptureLink_HddmWXkXik" href="http://techcrunch.com/2010/05/03/zynga-revenue/">$270 millones en 2009</a> en múltiples plataformas) y <a id="aptureLink_yVkMKfaD0T" href="http://tapulous.com/">Tapulous</a> (estimado <a id="aptureLink_xlIEXeeosI" href="http://www.telegraph.co.uk/technology/apple/6857351/Tapulous-making-1m-per-month-from-iPhone-apps.html">$1millon mensua</a><a href="http://www.telegraph.co.uk/technology/apple/6857351/Tapulous-making-1m-per-month-from-iPhone-apps.html" target="_blank">l</a> por un solo dispositivo).</p>
<p>En conclusión,  la <a id="aptureLink_YNLWxvEFuo" href="http://www.adobe.ph/flashplatform/">plataforma Flash</a> no sólo está orientada al desarrollo de experiencia de usuario dentro de un navegador o en el escritorio; no son sólo animaciones que pueden ser espectaculares; es una manera de obtener ingresos que, si se aprovechan adecuadamente, pueden representar grandes ganancias.</p>
<p>twitter: <a href="http://twitter.com/rafaelochoa">rafaelochoa</a></p>
<p>Imagen: <a id="aptureLink_wn5waekSIn" href="http://www.gettyimages.com/">gettyimages</a></p>
<hr /><small>Copyright &copy; 2008<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:<br /> )</small>]]></content:encoded>
			<wfw:commentRss>http://ria212.com/blog/2010/08/como-obtener-ganancias-con-aplicaciones-en-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Un buen café en el 1er Tecno Café</title>
		<link>http://ria212.com/blog/2010/07/un-buen-cafe-en-el-1er-tecno-cafe/</link>
		<comments>http://ria212.com/blog/2010/07/un-buen-cafe-en-el-1er-tecno-cafe/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 20:55:00 +0000</pubDate>
		<dc:creator>Juan Manrique</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://ria212.com/?p=500</guid>
		<description><![CDATA[Este sábado 24 de Julio se llevó a cabo en Caracas el primer Tecno Café organizado por los fundadores del Adobe Users Group Venezuela y la experiencia, definitivamente, fue tan agradable como positiva. Finalmente, pude conocer a tres de los desarrolladores con los que he venido compartiendo ideas durante las conferencias a distancia que realizamos<a href="http://ria212.com/blog/2010/07/un-buen-cafe-en-el-1er-tecno-cafe/">&#160;&#160;[ Read More ]</a>]]></description>
			<content:encoded><![CDATA[<p>Este sábado 24 de Julio se llevó a cabo en Caracas el primer Tecno Café organizado por los fundadores del <a href="http://augvenezuela.wordpress.com/">Adobe Users Group Venezuela</a> y la experiencia, definitivamente, fue tan agradable como positiva. Finalmente, pude conocer a tres de los desarrolladores con los que he venido compartiendo ideas durante las conferencias a distancia que realizamos quincenalmente y pude confirmar que nuestra motivación por el AUG es la misma: somos, sin remedio, entusiastas de la tecnología.</p>
<p>Lo mejor del día: conocer a estos profesionales de la tecnología web, con los que cuento desde ya; tres potenciales nuevos amigos. Lo peor del día: el lugar y la falta de asistencia. Ya estamos trabajando en la búsqueda de un mejor lugar donde realizar los próximos eventos del AUG, así como en las actividades que debemos realizar para consolidar la comunidad que deseamos.</p>
<p>Les doy las gracias a los que asistieron y tengo fe en que los próximos eventos serán mejores. Bien sabemos que todo comienzo es difícil. Mantengamos el ánimo, que de todo esto sólo puede salir cosas buenas.</p>
<p><a href="http://www.linkedin.com/in/juanmanrique">Juan Manrique</a>.</p>
<hr /><small>Copyright &copy; 2008<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:<br /> )</small>]]></content:encoded>
			<wfw:commentRss>http://ria212.com/blog/2010/07/un-buen-cafe-en-el-1er-tecno-cafe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La Técnica Pomodoro y el software</title>
		<link>http://ria212.com/blog/2010/07/la-tecnica-pomodoro-y-el-software/</link>
		<comments>http://ria212.com/blog/2010/07/la-tecnica-pomodoro-y-el-software/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 05:31:03 +0000</pubDate>
		<dc:creator>Juan Manrique</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://ria212.com/?p=480</guid>
		<description><![CDATA[Para aquellos que, como yo, son presa fácil de cualquier foco de distracción durante la realización de nuestras actividades diarias (en especial si son realizadas frente a una computadora), existe una técnica de lectura obligada y uso recomendado, ideada por un desarrollador de software (¿quién mejor que un colega para conocer exactamente nuestros problemas?) de<a href="http://ria212.com/blog/2010/07/la-tecnica-pomodoro-y-el-software/">&#160;&#160;[ Read More ]</a>]]></description>
			<content:encoded><![CDATA[<p>Para aquellos que, como yo, son presa fácil de cualquier foco de distracción durante la realización de nuestras actividades diarias (en especial si son realizadas frente a una computadora), existe una técnica de lectura obligada y uso recomendado, ideada por un desarrollador de software (¿quién mejor que un colega para conocer exactamente nuestros problemas?) de nombre Francesco Cirillo y que está basada en un reloj de cocina en forma de tomate: la Técnica Pomodoro.</p>
<p>La Técnica Pomodoro fue ideada para ayudar en la concentración individual de las personas, por lo que impacta positiva y notablemente en la productividad individual. Esta técnica, que sorprende por su simplicidad y lo efectiva que puede llegar a ser, fue descrita por Cirillo en documentos que difundió abiertamente en varios blogs, hasta que, finalmente, estableció en un merecido <strong><a href="http://www.thepomodorotechnique.com/">sitio web</a></strong>.</p>
<p><a href="http://www.thepomodorotechnique.com/"><img class="alignnone" title="La Técnica Pomodoro" src="http://ria212.com/ejemplos/imagenes/pomodoro1.png" alt="" width="149" height="124" /></a><strong> </strong></p>
<p><strong>Metas de la Técnica Pomodoro</strong></p>
<p>Como se puede leer en el libro oficial:</p>
<p>“El objetivo de la Técnica Pomodoro es proporcionar una herramienta sencilla para mejorar la productividad (la tuya y la de tu equipo), que sea capaz de hacer lo siguiente:</p>
<ul>
<li>Aliviar la ansiedad vinculada a la <em>expectativa</em></li>
<li>Mejorar la atención y concentración al reducir las interrupciones</li>
<li>Aumentar la conciencia de tus decisiones</li>
<li>Aumenta la motivación y mantenerla constante</li>
<li>Reforzar tu determinación a alcanzar tus metas</li>
<li>Afinar el proceso de estimación, en términos cualitativos y cuantitativos</li>
<li>Mejorar tu proceso de trabajo o estudio</li>
<li>Reforzar tu determinación a seguir por ti mismo de cara a situaciones complejas”</li>
</ul>
<p><strong>Un vistazo a la Técnica Pomodoro</strong></p>
<p>Una forma de resumir la Técnica Pomodoro es la siguiente:</p>
<ul>
<li>Establecer las tareas del día antes de comenzar con cualquier actividad: copiar en una <strong><a href="http://www.pomodorotechnique.com/downloads/pomodoro_todo.pdf">hoja</a></strong> cada una de las actividades que deben ser realizadas durante el día, ordenadas según la prioridad.</li>
<li>Hacer el primer pomodoro:
<ul>
<li>establecer la alarma del reloj de cocina en 25 minutos,</li>
<li>escoger la primera actividad,</li>
<li>trabajar en ella hasta que suene la alarma del reloj</li>
<li>marcar con una “x” la actividad para indicar que se realizó un pomodoro</li>
<li>tomar un descanso de 5 minutos.</li>
</ul>
<p>Lo anterior se conoce como un “pomodoro” típico, aunque se pueden hacer ajustes a los intervalos de tiempo para mayor comodidad a medida que se familiariza con la técnica. Un pomodoro es la unidad básica de medida en la técnica. La marca que se realiza a la actividad servirá posteriormente para la autoevaluación.</li>
<li>Cada 4 pomodoros, realizar un descanso más largo: de 15 a 20 minutos, en los cuales Cirillo recomienda aprovecharlo para levantarse de la silla, tomarse un café, revisar el correo, dar un paseo rápido o simplemente descansar pero sin realizar ninguna actividad compleja que pueda distraer tu mente durante los próximos pomodoros del día.</li>
</ul>
<ul>
<li>Completar una actividad: hacer pomodoro tras pomodoro hasta terminar la actividad. A simple vista, se podrá observar cuántos pomodoros fueron necesarios para realizar la actividad. Luego del descanso correspondiente, se debe seleccionar la siguiente actividad en la lista diaria y aplicar la técnica nuevamente hasta el final de la jornada.</li>
<li>Registro y introspección personal: al final de la jornada, todas las actividades completadas junto con los pomodoros que fueron necesarios en cada una deben ser registrados en algún tipo de base de datos que permita observar el desempeño propio durante la realización de las actividades; esto con la finalidad de ayudar en la estimación de tiempos propios y la toma de decisiones en términos de la auto-observación y el conocimiento del desempeño propio. Para llevarle un poco la contraria a Cirillo, aquí tienen un modelo de <strong><a href="http://sixservix.com/blog/david/files/2010/02/SIX_pomodoro_recordsheet.pdf">hoja de registros</a></strong>.</li>
</ul>
<p><strong>El reloj de cocina en forma de tomate</strong></p>
<p>Si bien Cirillo, como explica en el libro, considera que la mejor manera de aplicar la técnica es con un reloj de cocina convencional, tal como aquel en forma de tomate que lo inspiró a esbozarla, hay una <a href="http://www.pomodorotechnique.com/fans.html#pomodorosoftware">lista de programas</a> que no solo emulan el comportamiento de estos relojes sino que cuentan con funcionalidades muy convenientes que facilitan la aplicación de la técnica.</p>
<p>En el <a href="http://www.thepomodorotechnique.com/">sitio oficial de la Técnica Pomodoro</a> se puede conseguir, entre otros recursos, las hojas de trabajo necesarias para la aplicación de la técnica, la versión digital oficial y gratuita del libro donde se explica detalladamente, artículos sobre experiencias de personas que la han aplicado, conferencias realizadas, el software relacionado y hasta las direcciones de contacto de Cirillo, quien desde hace un buen tiempo ofrece talleres sobre la adopción de esta técnica en equipos de trabajo.</p>
<p>La intención de este artículo no es ofrecer una guía resumida sobre la Técnica Pomodoro sino más bien dar una idea general que motive a su profundización, ya que contiene una gran cantidad de consejos mentales que son los que, a la larga, hacen muy efectiva.</p>
<p><a href="http://www.linkedin.com/in/juanmanrique">Juan Manrique</a>.</p>
<hr /><small>Copyright &copy; 2008<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:<br /> )</small>]]></content:encoded>
			<wfw:commentRss>http://ria212.com/blog/2010/07/la-tecnica-pomodoro-y-el-software/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Las 13 razones&#8230;</title>
		<link>http://ria212.com/blog/2010/01/las-13-razones/</link>
		<comments>http://ria212.com/blog/2010/01/las-13-razones/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 17:05:10 +0000</pubDate>
		<dc:creator>Juan Manrique</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[blazeds]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[ria]]></category>
		<category><![CDATA[sun]]></category>

		<guid isPermaLink="false">http://ria212.com/?p=176</guid>
		<description><![CDATA[13 razones para que los programadores Java aprendan Adobe Flex y BlazeDS]]></description>
			<content:encoded><![CDATA[<p>El don <a href="http://twitter.com/rafaelochoa">rafaelochoa</a> me pidió que tradujera un <a href="http://www.infoq.com/articles/java-flex-blazeds">artículo</a> en el que hablan de unas controversiales &#8220;<a href="http://www.infoq.com/articles/java-flex-blazeds">13 razones para que los desarrolladores Java aprendan Flex y BlazeDS</a>&#8220;. Espero que la traducción se entienda y les recomiendo que chequeen los comentarios de los lectores en el artículo original, ya que varios desarrolladores exponen diversos e interesantes puntos de vista. Igualmente, aquí será bien recibido cualquier comentario que deseen hacer.<span id="more-176"></span></p>
<p><strong>13 razones para que los programadores Java aprendan Adobe Flex y BlazeDS</strong></p>
<p>Este artículo bosqueja las 13 razones por las que los programadores Java deberían aprender Flex y BlazeDS. Habla sobre por qué Flex con BlazeDS es una de las mejores opciones para el desarrollo de Rich Internet Applications (RIA), desde sitios web altamente interactivos hasta aplicaciones empresariales basadas en Java. Más importante aún, muestra el alto retorno de inversión que ofrece esta combinación, tanto para los desarrolladores como para las empresas.</p>
<p>Para bosquejar las 13 razones por las que los programadores Java deberían aprender BlazeDS, uso un dispensador de refrescos ficticio para mostrar cómo convertir un programa Java existente en una RIA. A través  del ejemplo, explico las diferentes en que puedes usar BlazeDS,  bien sea con tus aplicaciones Java ya existentes como con aplicaciones nuevas.</p>
<p><strong>Razón 1: Es de código abierto</strong></p>
<p>El núcleo  del kit de desarrollo (SDK) de Flex es un <em>framework</em> código abierto para desarrollar y mantener aplicaciones RIA que tengan la misma apariencia independientemente del navegador y sistema operativo donde se ejecuten. Flex es liberado bajo la licencia “Mozilla Public License”. Las aplicaciones Flex compiladas corren sobre la plataforma propietaria Adobe Flash.</p>
<p>BlazeDS es una tecnología código abierto para conectar Flex a Java mediante invocación de métodos remotos y mensajería. Esta tecnología corre sobre servidores de aplicaciones Java como un <em>servlet</em>, permitiéndote así usarla en cualquier aplicación web común hecha en Java. BlazeDS es licenciado bajo la licencia “GNU Lesser General Public License” (LGPL). Paralelamente al lanzamiento de BlazeDS, Adobe publicó la especificación del “ActionScript Message Format” (AMF), lo que permite que BlazeDS y Java puedan comunicarse con clientes Flex usando un formato binario de serialización de objetos bastante compacto.</p>
<p><strong>Razón 2: Tiene gran apoyo de la comunidad</strong></p>
<p>Flex posee una comunidad sumamente activa, con muchos proyectos aportados por la comunidad. Flex.org, un sitio web con noticias de la comunidad de desarrolladores, recibe contribuciones casi a diario, y el grupo de usuario Flex de Yahoo! Posee más de 11.000 miembros.</p>
<p>Por ejemplo, el proyecto FlexLib hospedado en Google Code ha aportado una  gran cantidad de componentes de interfaz de usuario (UI) de código abierto. Los proyectos Swiz y Mate han aportado <em>frameworks</em>  para apoyar el manejo de eventos en las aplicaciones. Y finalmente, Gorilla Logic ha aportado Flex Monkey para pruebas automatizadas de interfaces de usuario.</p>
<p><strong>Razón 3: Puedes tener un trabajo por seis meses más</strong></p>
<p>Según James Ward, un evangelizador Flex de Adobe, aún existe una gran demanda de desarrolladores Flex con experiencia. Aprender Flex te ofrece un conocimiento mercadeable que te pondrá por delante de la competencia.</p>
<p><strong>Razón 4: Retorno de inversión empresarial más alto</strong></p>
<p>En general, desarrollar aplicaciones web empresariales ha sido notoriamente difícil. Flex y BlazeDS no solo proporcionan herramientas de mayor capacidad, sino que, además, facilitan el desarrollo. El aumento en la productividad del desarrollador permite a las organizaciones entrar más rápido al mercado. Además, Flex y Flash brindan una experiencia de usuario más atractiva, lo que podría incrementar tanto el número de visitas a los sitios web como la tasa de persuasión.</p>
<p>Un ejemplo ideal de esto es la cadena de librerías Borders, quienes recientemente presentaron un nuevo sitio web con un “Estante Mágico”. Este sitio posee una interfaz hecha en Flash que simula la experiencia de hojear libros. Borders constató que esto incrementó enormemente la tasa de persuasión: “los clientes que usan esta interfaz hecha en Flash (que permite a los visitantes ver las portadas de libros, DVDs y CDs) son persuadidos a comprar en un 62% más que aquellos que no la usan”.</p>
<p><strong>Razón 5: Flex fue el primer lenguaje diseñado para crear interfaces de usuario</strong></p>
<p>La mayoría de los lenguajes incorporan soporte para la creación de interfaces de usuario como algo secundario. Esto es particularmente notable en Java con el <em>framework </em>Swing. Como resultado de esto, cosas simples en Swing, como manejar datos, puede resultar engorroso usando modelos de datos específicos de Swing. El mayor problema con Swing es que tienes que conocer bastante bien su API para ser productivo.</p>
<p>Flex es exactamente lo contrario: fue diseñado desde el principio para construir interfaces de usuario web. Como le gusta a Brice Eckel decir, Flex es el primer lenguaje específicamente para desarrollar interfaces de usuario. Por lo tanto, es mucho más fácil crear interfaces de usuario con Flex que con otras tecnologías como JavaServer Pages (JSP), JavaServer Faces (JFS) y Swing. El enlace de datos con controles, el manejo de eventos, el diseño de componentes y las técnicas comunes de desarrollo de interfaces de usuario están incluidos en el lenguaje, lo que te permite ser productivo aun cuando conociendo muy poco sobre el lenguaje.</p>
<p><strong>Razón 6: Posee un modelo de programación similar a Java</strong></p>
<p>Es posible desarrollar con las herramientas existentes usadas para desarrollar en Java. Igualmente, puedes desarrollar aplicaciones Flex con la consola de comandos gratuita incluida en el SDK, con la herramienta Adobe Flex Builder (un <em>plug in</em> para el IDE Eclipse) o, más recientemente, con IntelliJ IDEA 8.</p>
<p>Flex proporciona un ambiente con estado de sesión en el que los datos son cargados desde el cliente. El modelo de programación se asemeja más al desarrollo de una aplicación de escritorio en lugar de programación HTML, lo que hace sentir familiarizado en la programación a todo aquel que haya programado con Java Swing.</p>
<p>La programación en Flex es una combinación de MXML, un lenguaje de etiquetas para interfaces de usuario similar a Extensible Markup Language (XML), y Adobe ActionScript, un lenguaje de scripting orientado a objetos. Esta combinación hace que programar en Flex sea similar a programar en Java porque es posible usar los conceptos conocidos de programación orientada a objetos.</p>
<p>Una manera ideal de configurar tu ambiente de desarrollo es construir tu aplicación Flex justo en tu carpeta de despliegue de aplicaciones web. De esta forma, no necesitas desplegar de nuevo tu aplicación luego de cada compilación: un simple refrescamiento del navegador reflejará los cambios realizados. Como resultado, desarrollar en Flex y BlazeDS es bastante productivo.</p>
<p><strong>Razón 7: BlazeDS corre sobre cualquier servidor de aplicaciones Java</strong></p>
<p> Existen múltiples versiones de BlazeDS disponibles, incluyendo una versión lista para usar configurada con  una versión de Apache Tomcat incluida. Para este articulo, utilizo la distribución compilada que viene como un archivo web (WAR), para mostrar cómo puedes desplegar BlazeDS en cualquier servidor de aplicaciones. Otra posibilidad es extraer los archivos Java (JAR) y usarlos en tu proyecto. Visita el portal wiki de BlazeDS para obtener más información sobre las distintas formas de instalar BlazeDS.</p>
<p>Este ejemplo usa BlazeDS con un proyecto existente, un dispensador de bebidas sencillo. Solo necesitas agregar los archivos Java (JAR) a tu proyecto y así podrás usar BlazeDS desde la aplicación, lo que te permite desplegarlo en cualquier lugar donde puedas desplegar la aplicación.</p>
<p>Para agregar BlazeDS a tu proyecto, completa los siguientes pasos:</p>
<ol>
<li>Extraer el contenido del archivo blazeds.war. Comando de consola: &gt; jar xvf blazeds.war.</li>
<li>Copia los archivos JAR de la carpeta WEB-INF/lib descomprimida en la carpeta lib de tu proyecto. Comando de consola: &gt; cp –R WEB-INF/lib /sodaSample.</li>
</ol>
<p><strong>Razón 8: Puedes usarlo con aplicaciones Java ya existentes</strong></p>
<p>Para el ejemplo del dispensador de soda, asume que quieres publicar tu servicio de soda existente para que las aplicaciones Flex remotas puedan conectarse a él. Los pasos básicos para configurar BlazeDS en una aplicación existente son:</p>
<ol>
<li>Edita los archivos de configuración de BlazeDS en la carpeta WEB-INF/flex.</li>
<li>Define un <em>MessageBrokerServlet</em> y un <em>listener</em> de sesión en el archivo web.xml de la aplicación.</li>
</ol>
<p>Luego de configurar BlazeDS, necesitas agregar tu servicio de soda al archivo de configuración de <em>remoting</em> del BlazeDS remoting-config.xml, el cual permite que el servicio de soda pueda ser invocado desde una aplicación cliente Flex. Para agregar tu servicio, defines un destino y uno o más canales para transportar los datos. El canal AMF básico está definido en el archivo services.xml. Usa esta definición para identificar tu destino en el archivo remoting-config.xml:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">&lt;destination id=&#8221;sodaService&#8221; channels=&#8221;my-amf&#8221;&gt;<br />
&lt;properties&gt;<br />
              &lt;source&gt;com.gorillalogic.sodaSample.SodaService&lt;/source&gt;<br />
        &lt;/properties&gt;<br />
&lt;/destination&gt;</td>
</tr>
</tbody>
</table>
<p>Al definir <em>endpoints</em> en el archivo de configuración de <em>remoting</em>, podrás invocar cualquier servicio Java desde una aplicación cliente Flex.</p>
<p>Para transferir tu estructura de datos como objeto Java a tu aplicación Flex, declara una equivalencia de datos entre los dos en la clase ActiosScript:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">[Bindable]<br />
[RemoteClass(alias="com.gorillalogic.sodaSample.SodaModel")]</td>
</tr>
</tbody>
</table>
<p>Estas sentencias le indican a Flex  que cuando el resultado proveniente de una invocación a un servicio remoto retorne tu clase Java SodaModel, lo mapee a tu clase Flex SodaModel. La aplicación Flex cliente en el ejemplo muestra como invocar este servicio Java. La invocación devuelve un objeto SodaModel, con los datos de tu orden:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">public function callSodaService():void {<br />
        var sodaType:String = type.text;<br />
        var sodaCount:int = parseInt(cnt.text);<br />
        var flag:Boolean = preOpen.selected;<br />
        remoteObject.getSoda(sodaType, sodaCount, flag);<br />
}private function resultHandler(event:ResultEvent):void {<br />
       var sodaModel:SodaModel = event.result as SodaModel;<br />
}</td>
</tr>
</tbody>
</table>
<p>Flex devuelve los resultados de la invocación en la variable genérica <em>result</em>, la cual deberás mapear y almacenar en tu clase SodaModel. No entraré en detalles sobre este punto pero te  recomiendo indicarle al compilador la ruta del archivo services-config.xml de esta forma:</p>
<pre>-locale en_US -services=/nsource/sodaSample/web/WEB-INF/flex/services-config.xml -context-root /</pre>
<p>De no hacerlo, tu aplicación cliente Flex no será capaz de encontrar los servicios Java. Del mismo modo, tú también podrás enviar objetos hacia el servidor. Por ejemplo, podrás enviar de vuelta al cliente la clase SodaModel vacía.</p>
<p><strong>Razón 9: Puedes heredar de BlazeDS y hacerle modificaciones en Java</strong></p>
<p>Supongamos que deseas agregar un registro de actividades especiales cada vez que el servicio de soda es invocado. Puedes heredar del adaptador estándar Java para agregar esta funcionalidad.</p>
<p>Primero, crea una clase Java que herede del JavaAdapter:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">import flex.messaging.services.remoting.adapters.JavaAdapter.<br />
public class TimingJavaAdapter extends JavaAdapter{</td>
</tr>
</tbody>
</table>
<p>Luego, sobrecarga el método <em>invoke()</em>:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">
<pre>public Object invoke(Message message) {
        RemotingMessage remotingMessage = (RemotingMessage) message;
        String operation = remotingMessage.getOperation();
        String destination = remotingMessage.getDestination();</pre>
<pre>        Logger.info("calling " + operation + " on destination " + destination);
        Object data = super.invoke(message);
        return data;
}</pre>
</td>
</tr>
</tbody>
</table>
<p>En este método puedes ver  la operación entrante y el <em>destination</em> de la invocación. Puedes usar este simple conector para otras cosas, como por ejemplo medir el tiempo se toman las llamadas al servidor.</p>
<p><strong>Razon 10: Puedes invocar BlazeDS desde HTML y JSP</strong></p>
<p>Esta invocación puedes hacerla de distintas formas, como a través del <em>Browser Manager</em> y <em>flashVars</em>. Las <em>flashVars</em> pueden ser configuradas en la página HTML para luego ser leídas por la aplicación Flex.</p>
<p>Por ejemplo, supongamos que deseas enviar desde la pagina HTML tu nombre y el tipo de refresco que quieres ordenar. Podrías asignar las variables de esta forma:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">
<pre>&lt;object id='SodaSample' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab' height='100%' width='100%'&gt;
        &lt;param name='src' value='SodaSample.swf'/&gt;
        &lt;param name='flashVars' value='username=ryan&amp;type=coke'/&gt;
        &lt;embed name='mySwf' src='SodaSample.swf'
pluginspage='http://www.adobe.com/go/getflashplayer' height='100%' width='100%'
flashVars='username=ryan&amp;type=coke'/&gt;
&lt;/object&gt;</pre>
</td>
</tr>
</tbody>
</table>
<p>Luego, en tu aplicación Flex, puedes leer estas variables buscándolas en las propiedades de la aplicación:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">
<pre>var username:String;</pre>
<pre>if (Application.application.parameters.hasOwnProperty("username")) {</pre>
<pre>        username = Application.application.parameters.username;</pre>
<pre>}</pre>
</td>
</tr>
</tbody>
</table>
<p> <br />
<strong>Razón 11: La transferencia de datos en Flex y BlazeDS supera a otras soluciones basadas en Ajax</strong></p>
<p>Por defecto, todas las invocaciones a procedimientos remotos (RPC) emplean el protocolo binario AMF. Siendo un estándar abierto, AMF es extremadamente rápido. James Ward construyó un ejemplo donde se hace una comparación de AMF con otras soluciones tecnológicas para hacer <em>remoting</em>. Aunque las otras soluciones AJAX, como Dojo, dan la pelea con un par de cientos de registros, Flex y BlazeDS pueden fácilmente manejar miles de registros. Chequea el artículo <a href="http://www.jamesward.com/census/">census</a> de James Ward en el que realiza un <em>benchmark</em> de carga de datos de varias tecnologías RIA.</p>
<p><strong>Razón 12: Puedes invocar BlazeDS directamente desde clientes Java</strong></p>
<p>La última versión de BlazeDS incluye una clase AMF en Java que puedes usar para que un cliente Java haga invocaciones al servidor de BlazeDS. Poder invocar BlazeDS de esta forma resulta sumamente útil para realizar pruebas unitarias y de carga de datos.</p>
<p><strong>Razon 13: Se integra con Spring</strong></p>
<p>Adobe y Spring se han unido para brindar una integración más cercana entre ambos <em>frameworks</em>, y la primera versión del componente de integración Spring-BlazeDS, del <em>framework</em> Spring, luce promisoria. Al permitir que un <em>bean</em> Spring pueda convertirse en un servicio remoto, se evita tener que duplicar los archivos de configuración. Para mayor información, visita el <a href="http://www.springsource.org/spring-flex">portal del proyecto</a>.</p>
<p><strong>Conclusión</strong></p>
<p>Siendo BlazeDS un <em>framework</em> código abierto y basado en Java, es una opción ideal para nuevos proyectos de servidor Java, así como para proyectos ya existentes. Por la comunicación remota de alto desempeño y <em>mapping</em> de objetos entre Flex y Java, las tecnologías Flex y BlazeDS  son una opción ideal para el desarrollo RIA. Los desarrolladores Java que se inicien en Flex y BlazeDS sentirán que el proceso de desarrollo es altamente productivo y fácil de aprender.</p>
<p>La combinación Flex-BlazeDS es también una opción ideal para aplicaciones empresariales Java de gran escala. En un proyecto pasado, mi equipo desarrolló una aplicación que contenía más de 50 pantallas y transfería regularmente varios cientos de registros de datos entre el servidor y el cliente. Este tipo de aplicación habría sido casi imposible de desarrollar usando la tecnología AJAX tradicional.  Con Flex y BlazeDS, pudimos presentar una versión inicial en menos de un año. Imagina lo que este dúo dinámico puede hacer por tus proyectos de desarrollo de aplicaciones.</p>
<p>Nota: Deberías lograr una base de estas tecnologías. Hay disponible una buena cantidad de tutoriales para ayudar en tu iniciación con BlazeDS, incluyendo <a href="http://www.infoq.com/articles/blazeds-intro;jsessionid=9D8A77AADB8A705E18A78424A20832B9">&#8220;Building Web and Desktop Applications with BlazeDS and AMF&#8221;</a> y <a href="http://www.adobe.com/devnet/livecycle/articles/blazeds_testdrive.html">&#8220;BlazeDS 30-minute test drive&#8221;</a>.</p>
<p><a href="http://www.infoq.com/articles/java-flex-blazeds">Artículo original</a> de Ryan Knight. Traducido por <a href="http://www.linkedin.com/in/juanmanrique">Juan Manrique</a>.</p>
<hr /><small>Copyright &copy; 2008<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:<br /> )</small>]]></content:encoded>
			<wfw:commentRss>http://ria212.com/blog/2010/01/las-13-razones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crear un instalador nativo para aplicaciones AIR 2.0</title>
		<link>http://ria212.com/blog/2010/01/como-crear-un-instalador-nativo-para-aplicaciones-air-2-0/</link>
		<comments>http://ria212.com/blog/2010/01/como-crear-un-instalador-nativo-para-aplicaciones-air-2-0/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 16:50:44 +0000</pubDate>
		<dc:creator>rafaelochoa</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://ria212.com/blog/2010/01/como-crear-un-instalador-nativo-para-aplicaciones-air-2-0/</guid>
		<description><![CDATA[Video que demuestra el proceso de crear un &#8220;wizard&#8221; para la instalación de una aplicacion de AIR 2.0, es una version alpha pero nos deja probar el API de procesos nativos de la nueva herramienta de Adobe. Herramienta usada en el video: Version para Mac OS X (Windows aun no disponible) Mas información: Serge Jespers<a href="http://ria212.com/blog/2010/01/como-crear-un-instalador-nativo-para-aplicaciones-air-2-0/">&#160;&#160;[ Read More ]</a>]]></description>
			<content:encoded><![CDATA[<div class="posterous_autopost"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="369" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=8235248&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="369" src="http://vimeo.com/moogaloop.swf?clip_id=8235248&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div>Video que demuestra el proceso de crear un &#8220;wizard&#8221; para la instalación de una aplicacion de AIR 2.0, es una version alpha pero nos deja probar el API de procesos nativos de la nueva herramienta de Adobe.</div>
<div></div>
<div>Herramienta usada en el video: <a href="http://dl.dropbox.com/u/117996/PackageAssistant.dmg"><strong>Version para Mac OS X</strong></a> (Windows aun no disponible)</div>
<div></div>
<div>Mas información: <a href="http://www.webkitchen.be/2009/12/23/air-2-package-assistant-public-alpha/">Serge Jespers</a></div>
<p>twitter:<a href="http://twitter.com/rafaelochoa">rafaelochoa</a></div>
<hr /><small>Copyright &copy; 2008<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:<br /> )</small>]]></content:encoded>
			<wfw:commentRss>http://ria212.com/blog/2010/01/como-crear-un-instalador-nativo-para-aplicaciones-air-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Retrospectiva al Latin Flash Tour</title>
		<link>http://ria212.com/blog/2009/11/retrospectiva-al-latin-flash-tour/</link>
		<comments>http://ria212.com/blog/2009/11/retrospectiva-al-latin-flash-tour/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 13:57:26 +0000</pubDate>
		<dc:creator>rafaelochoa</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://ria212.com/blog/2009/11/retrospectiva-al-latin-flash-tour/</guid>
		<description><![CDATA[Luego de terminar el Tour y darse un descanso para realizar presentaciones en Japon, Lee Brimelow escribe una breve reseña de   la gira que realizara con Enrique Duvós por Chile, Argentina, Peru, Colombia, Costa Rica y Mexico. Patrocinados por Influxis y organizado por los diferentes grupos de usuarios de Adobe, siendo Adobe User Group<a href="http://ria212.com/blog/2009/11/retrospectiva-al-latin-flash-tour/">&#160;&#160;[ Read More ]</a>]]></description>
			<content:encoded><![CDATA[<div><img title="4114302298_75775091f0.jpg" src="http://farm3.static.flickr.com/2779/4114302298_75775091f0.jpg" alt="4114302298_75775091f0.jpg" width="420" height="279" /></div>
<p>Luego de terminar el Tour y darse un descanso para realizar presentaciones en Japon, <a href="goog_1259152932295">Lee </a><a href="http://twitter.com/leebrimelow">Brimelow</a> escribe una breve reseña de   la gira que realizara con <a href="goog_1259152932279">Enrique </a><a href="http://twitter.com/eduvos">Duvós</a> por Chile, Argentina, Peru, Colombia, Costa Rica y Mexico. Patrocinados por <a href="http://www.influxis.com/">Influxis</a> y organizado por los diferentes grupos de usuarios de Adobe, siendo <a href="http://groups.adobe.com/groups/b003c0907d/summary">Adobe User Group Colombia</a> el mas destacado por la cantidad de integrantes y la asistencia que tuvieron en el evento.</p>
<div>La reseña y fotos  del evento de Bogotá serán publicadas  esta semana,  debo hacer un espacio para poder escribir sobre el evento.</div>
<div>
<div>Retrospectiva del <a href="http://theflashblog/?p=1498">Latin Flash Tour Lee Brimelow</a></div>
<div>Agradecimiento al <a href="http://www.duvos.com/?p=158">Latin</a><a href="http://www.duvos.com/?p=158"> </a><a href="http://www.duvos.com/?p=158">Flash</a><a href="http://www.duvos.com/?p=158"> </a><a href="http://www.duvos.com/?p=158">Tour</a><a href="http://www.duvos.com/?p=158"> de Enrique </a><a href="http://www.duvos.com/?p=158">Duvós</a></div>
<div>Fotografías del Tour: <a href="http://www.flickr.com/groups/1281162@N23/pool/">Grupo en flickr</a></div>
</div>
<p>twitter:<a href="http://twitter.com/rafaelochoa">rafaelochoa</a></p>
<hr /><small>Copyright &copy; 2008<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:<br /> )</small>]]></content:encoded>
			<wfw:commentRss>http://ria212.com/blog/2009/11/retrospectiva-al-latin-flash-tour/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

