<?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; Tutorial</title>
	<atom:link href="http://ria212.com/blog/category/tutorial/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_250318388"
			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_250318388"
			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>Infinitas cámaras en Flash Player mediante Flex</title>
		<link>http://ria212.com/blog/2010/07/infinitas-camaras-en-flash-player-mediante-flex/</link>
		<comments>http://ria212.com/blog/2010/07/infinitas-camaras-en-flash-player-mediante-flex/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 05:09:41 +0000</pubDate>
		<dc:creator>Juan Manrique</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://ria212.com/?p=436</guid>
		<description><![CDATA[No tengo idea de por qué pero hace unas semanas atras me surgió la duda sobre cuántas cámaras se pueden conectar en una misma aplicación Flex. Sobran los artículos sobre conexión de webcams remotas; de hecho, hace un tiempo atras hice algunas pruebas de streaming de video de una webcam mediante Red5, pero realmente no<a href="http://ria212.com/blog/2010/07/infinitas-camaras-en-flash-player-mediante-flex/">&#160;&#160;[ Read More ]</a>]]></description>
			<content:encoded><![CDATA[<p>No tengo idea de por qué pero hace unas semanas atras me surgió la duda sobre cuántas cámaras se pueden conectar en una misma aplicación Flex. Sobran los artículos sobre conexión de webcams remotas; de hecho, hace un tiempo atras hice algunas pruebas de streaming de video de una webcam mediante Red5, pero realmente no recuerdo haberme cruzado con algún código que conectara varias camaras a la vez <strong>de manera local</strong>.</p>
<p>Así que para no quedarme con la duda, comencé a codificar mis intentos y el resultado lo comparto aquí con ustedes, esperando, como siempre, que pueda ser de ayuda para alguien. Lo interesante de este ejemplo se encuentra en la línea  86 del código, ya que al invocar el método <strong>getCamera</strong>, podemos pasar el número específico de la cámara que queremos encender como parámetro, pero debe indicarse como String y no como un entero:</p>
<div class="codecolorer-container actionscript3 default codecolorer-noborder" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br /></div></td><td><div class="actionscript3 codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #3f5fbf;">/**</span><br />
<span style="color: #3f5fbf;">&nbsp;* Carga la camara correspondiente al indice indicado y la agrega a la lista de camaras</span><br />
<span style="color: #3f5fbf;">&nbsp;* listas.</span><br />
<span style="color: #3f5fbf;">&nbsp;**/</span><br />
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> cargarCamara<span style="color: #000000;">&#40;</span> indice <span style="color: #000066; font-weight: bold;">:</span> <a href="http://www.google.com/search?q=uint%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:uint.html"><span style="color: #004993;">uint</span></a> <span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span><br />
<span style="color: #000000;">&#123;</span><br />
<span style="display:block;background-color:#ffff66">&nbsp; &nbsp; <span style="color: #6699cc; font-weight: bold;">var</span> camara <span style="color: #000066; font-weight: bold;">:</span> <a href="http://www.google.com/search?q=camera%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:camera.html"><span style="color: #004993;">Camera</span></a> = <a href="http://www.google.com/search?q=camera%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:camera.html"><span style="color: #004993;">Camera</span></a><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">getCamera</span><span style="color: #000000;">&#40;</span> <a href="http://www.google.com/search?q=string%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:string.html"><span style="color: #004993;">String</span></a><span style="color: #000000;">&#40;</span> indice <span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span><br /></span>&nbsp; &nbsp; <span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span> camara <span style="color: #000066; font-weight: bold;">!</span>= <span style="color: #0033ff; font-weight: bold;">null</span> <span style="color: #000000;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; camara<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span> <a href="http://www.google.com/search?q=activityevent%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:activityevent.html"><span style="color: #004993;">ActivityEvent</span></a><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ACTIVITY</span><span style="color: #000066; font-weight: bold;">,</span> camaraActivityEventHandler<span style="color: #000066; font-weight: bold;">,</span> <span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #0033ff; font-weight: bold;">true</span> <span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; camarasListas<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span> camara <span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000;">&#125;</span><br />
<span style="color: #000000;">&#125;</span></div></td></tr></tbody></table></div>
<p>Ignoro si conectar varias camaras a la vez pueda servir para algo. El único uso útil que se me ocurrió para esto fue hacer una aplicación AIR que grabara videos desde distintos ángulos (¿?). Al don <a href="http://twitter.com/rafaelochoa">rafaelochoa</a> se le ocurrió que podría servir para hacer una aplicación de vigilancia, tipo circuito cerrado. Queda de parte de ustedes intentar desarrollar algo útil. Me gustaría leer en los comentarios qué se les ocurre, así como cualquier duda que tengan.</p>
<p><a href="http://www.linkedin.com/in/juanmanrique">Juan Manrique</a>.</p>
<p><strong>Nota</strong>: Obviamente, no tiene sentido probar el ejemplo si no se dispone de, al menos, 2 camaras.<br />

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_EjemploCamarasRia212_1872051849"
			class="flashmovie"
			width="600"
			height="600">
	<param name="movie" value="http://ria212.com/ejemplos/EjemploCamarasRia212/EjemploCamarasRia212.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://ria212.com/ejemplos/EjemploCamarasRia212/EjemploCamarasRia212.swf"
			name="fm_EjemploCamarasRia212_1872051849"
			width="600"
			height="600">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p><a href="http://ria212.com/ejemplos/EjemploCamarasRia212/EjemploCamarasRia212.html">Infinitas cámaras en Flex</a><br />
<a href="http://ria212.com/ejemplos/EjemploCamarasRia212/srcview/index.html">Código</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/infinitas-camaras-en-flash-player-mediante-flex/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Imagenes como ItemRenderers en gráficos</title>
		<link>http://ria212.com/blog/2010/05/imagenes-como-itemrenderers-en-graficos/</link>
		<comments>http://ria212.com/blog/2010/05/imagenes-como-itemrenderers-en-graficos/#comments</comments>
		<pubDate>Tue, 25 May 2010 01:47:21 +0000</pubDate>
		<dc:creator>Juan Manrique</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Componentes]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://ria212.com/?p=363</guid>
		<description><![CDATA[Hace unos días fuí contratado para implementar un componente de gráficas bastante particular y configurable (que espero poder mostrarles pronto) por lo que me ví en la necesidad de codificar unos cuantos subcomponentes elementales, herederos de la clase ChartElement, para poder lograr los detalles requeridos. Uno de estos subcomponentes era un Series (BarSeries y ColumnSeries)<a href="http://ria212.com/blog/2010/05/imagenes-como-itemrenderers-en-graficos/">&#160;&#160;[ Read More ]</a>]]></description>
			<content:encoded><![CDATA[<p>Hace unos días fuí contratado para implementar un componente de gráficas bastante particular y configurable (que espero poder mostrarles pronto) por lo que me ví en la necesidad de codificar unos cuantos subcomponentes elementales, herederos de la clase ChartElement, para poder lograr los detalles requeridos. Uno de estos subcomponentes era un Series (BarSeries y ColumnSeries) que debía permitir el cambio de color de cada uno de sus items, independientemente de que pertenecieran al mismo Series.<span id="more-363"></span> No resulto dificil encontrar las propiedades que debía modificar para cumplir con este requirimiento. Sin embargo, tuve que hacer unas cuantas lecturas para poder implementar el ItemRenderer de manera adecuada. En unas de estas lecturas me topé con <a href="http://sangflex.wordpress.com/2009/09/11/charts-and-item-renderers/">un código</a> que me resultó sumamente interesante, ya que hace uso de imagenes como ItemRenderers o ItemEditors de Series en Charts, lo que permite crear gráficos muy llamativos y de codificación muy sencilla cuyas barras, columnas, tortas, puntos y otros, sean imagenes de cualquier tipo.</p>
<p>Como de costumbre, hice un ejemplito sencillo en el que se aprecia el código necesario para utilizar imágenes como ItemRenderers o ItemEditors de Series de gráficos en Flex 3. Las dudas y comentarios, siempre bien recibidos.<a href="http://www.linkedin.com/in/juanmanrique">Juan Manrique</a>.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_Ria212ChartImagenItemRenderer_877551662"
			class="flashmovie"
			width="600"
			height="600">
	<param name="movie" value="http://ria212.com/ejemplos/EjemploChartImagenItemRenderer/Ria212ChartImagenItemRenderer.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://ria212.com/ejemplos/EjemploChartImagenItemRenderer/Ria212ChartImagenItemRenderer.swf"
			name="fm_Ria212ChartImagenItemRenderer_877551662"
			width="600"
			height="600">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p><a href="http://ria212.com/ejemplos/EjemploChartImagenItemRenderer/Ria212ChartImagenItemRenderer.html">Chart con imagenes en Series</a><br />
<a href="http://ria212.com/ejemplos/EjemploChartImagenItemRenderer/srcview/index.html">Código</a><br />
Las imágenes de los trenes del Metro son de <a href="http://trenesvenezolanos.com/ferromodelismo/index.html">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/05/imagenes-como-itemrenderers-en-graficos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Se trata de Flash: Kimili = WordPress + Flash</title>
		<link>http://ria212.com/blog/2010/02/se-trata-de-flash-kimili-wordpress-flash/</link>
		<comments>http://ria212.com/blog/2010/02/se-trata-de-flash-kimili-wordpress-flash/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 00:01:46 +0000</pubDate>
		<dc:creator>Juan Manrique</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://ria212.com/?p=258</guid>
		<description><![CDATA[Como se habrán percatado, nuestro blog ya cuenta con la capacidad de cargar y mostrar aplicaciones Flex embebidas en los posts, situación esta que me contenta mucho ya que WordPress, por defecto, no brinda soporte para esta capacidad (al menos no en la versión en la que está establecido nuestro blog ria212.com). Sin embargo, logramos<a href="http://ria212.com/blog/2010/02/se-trata-de-flash-kimili-wordpress-flash/">&#160;&#160;[ Read More ]</a>]]></description>
			<content:encoded><![CDATA[<p>Como se habrán percatado, nuestro blog ya cuenta con la capacidad de cargar y mostrar aplicaciones Flex embebidas en los posts, situación esta que me contenta mucho ya que WordPress, por defecto, no brinda soporte para esta capacidad (al menos no en la versión en la que está establecido nuestro blog ria212.com). Sin embargo, logramos agregarle esta capacidad a nuestro blog gracias a un sencillo plugin gratuito desarrollado especialmente para WordPress: <a href="http://kimili.com/plugins/kml_flashembed">Kimili</a>. <span id="more-258"></span>Esto enriquecerá la forma en que los lectores verán los mensajes que incluyan códigos de ejemplo, ya que, en la gran mayoría, podrán ver la ejecución de los ejemplos en el mismo post (los anteriores también fueron actualizados).</p>
<p>Y ya que a la larga este post se trata de Flash, Flex y objetos SWF, aquí les dejo los pasos a seguir para agregar el plugin Kimili al manejador de contenido WordPress:</p>
<ol>
<li>Descargar el <a href="http://downloads.wordpress.org/plugin/kimili-flash-embed.2.1.1.zip">plugin Kimili Flash Embed para WordPress</a>, ya que existe también una <a href="http://kimili.com/file_download/36">versión para Textpattern</a>.</li>
<li>Extraer el contenido del archivo ZIP descargado en una carpeta. Ubicar la carpeta kimili_flash_embed dentro de esta carpeta.</li>
<li>Ubicar la carpeta /wp-content-plugins/ entre las carpetas del manejador WordPress correspondiente. Normalmente, la conexión a estas carpetas se realiza por FTP con una cuenta de administrador.</li>
<li>Copiar la carpeta ubicada en el paso 2 dentro de la carpeta ubicada en el paso 3.</li>
<li>Ir a la ventana de administración de plugins de WordPress y activar Kimili Flash Embed.</li>
<li>Para agregar una película SWF en un post, hay dos opciones:
<ol>
<li>En la vista “Visual” del mensaje, hacer clic en el icono de Flash que aparecerá luego de activar el plugin Kimili. Indicar la dirección URL de la película Flash que se desea agregar, configurar otras opciones, como por ejemplo, el tamaño y la versión de Flash Player deseada y finalmente, hacer clic en el botón “Generar”.</li>
<li>En la vista “HTML” del mensaje, colocar el siguiente tag (opción que considero más simple):</li>
<div></div>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;div&gt;&amp;#91;kml_flashembed movie=&quot;/ruta/pelicula.swf&quot; height=&quot;300&quot; width=&quot;300&quot;/&amp;#93;&lt;/div&gt;</div></div>
</ol>
</li>
</ol>
<p>Queda de parte de ustedes jugar con las opciones de configuración que incluye Kimili y profundizar un poco más sobre este sencillo pero utilísimo plugin y, como siempre, cualquier comentario es bien recibido.</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/02/se-trata-de-flash-kimili-wordpress-flash/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Eventos de teclado simples y combinados en Flex</title>
		<link>http://ria212.com/blog/2010/02/eventos-de-teclado-simples-y-combinados-en-flex/</link>
		<comments>http://ria212.com/blog/2010/02/eventos-de-teclado-simples-y-combinados-en-flex/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 17:31:39 +0000</pubDate>
		<dc:creator>Juan Manrique</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Componentes]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://ria212.com/?p=242</guid>
		<description><![CDATA[Hace unos meses atras hicieron una pregunta bastante interesante en nuestro grupo de Google, Flexairve. La duda trataba sobre cómo capturar los mismos eventos del teclado a los que responde el navegador, como por ejemplo, Ctrl + W para cerrar una pestaña, Ctrl + P para imprimir una página web, etc. En esa oportunidad, se<a href="http://ria212.com/blog/2010/02/eventos-de-teclado-simples-y-combinados-en-flex/">&#160;&#160;[ Read More ]</a>]]></description>
			<content:encoded><![CDATA[<p>Hace unos meses atras hicieron una <a href="http://groups.google.com/group/flex-air-ve/browse_thread/thread/c49c236d16a0e209?hl=es">pregunta</a> bastante interesante en nuestro grupo de Google, <a href="http://groups.google.com/group/flex-air-ve?hl=es">Flexairve</a>. La duda trataba sobre cómo capturar los mismos eventos del teclado a los que responde el navegador, como por ejemplo, Ctrl + W para cerrar una pestaña, Ctrl + P para imprimir una página web, etc. En esa oportunidad, se hizo referencia a varias opciones ofrecidas por Flex y la plataforma Flash, en las que sobresalieron el uso de JavaScript desde Flex mediante diversos mecanismos y la captura de eventos de teclas combinadas. <span id="more-242"></span>Aparte de indicar varios enlaces donde se puede encontrar información sobre este importantísimo tema, preparé un ejemplo donde se apreciaban algunas de las posibilidades para resolver problemas de interacción de ese tipo. Aquí les presento nuevamente el ejemplo y, en caso de requerir más información al respecto, pueden dirigirse al <a href="http://groups.google.com/group/flex-air-ve/browse_thread/thread/c49c236d16a0e209?hl=es">mensaje original</a> o indicar comentarios o dudas por aquí mismo.</p>
<p><a href="http://www.linkedin.com/in/juanmanrique">Juan Manrique</a>.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_AplicacionPrincipal_877959255"
			class="flashmovie"
			width="550"
			height="250">
	<param name="movie" value="http://ria212.com/ejemplos/EjemploCapturaTeclasFlexairve/AplicacionPrincipal.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://ria212.com/ejemplos/EjemploCapturaTeclasFlexairve/AplicacionPrincipal.swf"
			name="fm_AplicacionPrincipal_877959255"
			width="550"
			height="250">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p><a href="http://ria212.com/ejemplos/EjemploCapturaTeclasFlexairve/AplicacionPrincipal.html">EventosTeclado</a><br />
<a href="http://ria212.com/ejemplos/EjemploCapturaTeclasFlexairve/srcview/index.html">Código</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/02/eventos-de-teclado-simples-y-combinados-en-flex/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Más sobre AlivePDF&#8230;</title>
		<link>http://ria212.com/blog/2010/02/mas-sobre-alivepdf/</link>
		<comments>http://ria212.com/blog/2010/02/mas-sobre-alivepdf/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 00:30:55 +0000</pubDate>
		<dc:creator>Juan Manrique</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Componentes]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[alivepdf]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[ria]]></category>

		<guid isPermaLink="false">http://ria212.com/?p=214</guid>
		<description><![CDATA[Definitivamente, AlivePDF es el mejor esfuerzo que se ha realizado hasta ahora en la comunidad open source para el manejo de documentos PDF desde Action Script. Buscar una mejor alternativa para la creación y edición de documentos de este tipo desde clientes Flash o Flex, es simplemente perder el tiempo. Esta librería, creada por Thibault Imbert, ha estado en manos<a href="http://ria212.com/blog/2010/02/mas-sobre-alivepdf/">&#160;&#160;[ Read More ]</a>]]></description>
			<content:encoded><![CDATA[<p>Definitivamente, <a href="http://alivepdf.bytearray.org/">AlivePDF</a> es el mejor esfuerzo que se ha realizado hasta ahora en la comunidad open source para el manejo de documentos PDF desde Action Script. Buscar una mejor alternativa para la creación y edición de documentos de este tipo desde clientes Flash o Flex, es simplemente perder el tiempo.<span id="more-214"></span> Esta librería, creada por Thibault Imbert, ha estado en manos de <a href="http://code.google.com/p/alivepdf/">la comunidad</a> de desarrolladores desde el año 2007, por lo que ha transitado un camino de depuración colaborativa bastante extenso y conveniente,  dando como resultado una librería muy simple de usar pero más poderosa de lo que parece a simple vista, al manipular archivos PDF.</p>
<p>Preparé un ejemplo donde se puede apreciar algunas de las capacidades de esta librería:</p>
<ul>
<li>Rendering de texto</li>
<li>Rendering de imagenes</li>
<li>Rendering de enlaces a sitios web (links) sobre texto e imagenes</li>
</ul>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_EjemploPDF_Ria212_1183224817"
			class="flashmovie"
			width="400"
			height="200">
	<param name="movie" value="http://ria212.com/ejemplos/EjemploPDFRia212/EjemploPDF_Ria212.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://ria212.com/ejemplos/EjemploPDFRia212/EjemploPDF_Ria212.swf"
			name="fm_EjemploPDF_Ria212_1183224817"
			width="400"
			height="200">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>Demás está recomendarles que revisen la documentación sobre esta librería. Particularmente, cada vez que la utilizo, termino descubriendo, al menos, una funcionalidad desconocida para mi. El ASDoc viene incluido en el archivo de descarga, junto con un par de códigos de ejemplo en Flash y Air.</p>
<p>El código fuente está algo comentado pero, como siempre, las dudas son oídas con gusto.</p>
<p><a href="http://www.linkedin.com/in/juanmanrique">Juan Manrique</a>.</p>
<p><a href="http://ria212.com/ejemplos/EjemploPDFRia212/EjemploPDF_Ria212.html">EjemploPDFRia212</a><br />
<a href="http://ria212.com/ejemplos/EjemploPDFRia212/srcview/index.html">Código</a></p>
<p><a href="http://ria212.com/blog/2010/01/sobre-alivepdf-y-la-clase-filereference/">Sobre AlivePDF y la clase FileReference</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/02/mas-sobre-alivepdf/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Sobre AlivePDF y la clase FileReference</title>
		<link>http://ria212.com/blog/2010/01/sobre-alivepdf-y-la-clase-filereference/</link>
		<comments>http://ria212.com/blog/2010/01/sobre-alivepdf-y-la-clase-filereference/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 15:53:31 +0000</pubDate>
		<dc:creator>Juan Manrique</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Componentes]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[alivepdf]]></category>
		<category><![CDATA[filereference]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[pdf]]></category>

		<guid isPermaLink="false">http://ria212.com/?p=162</guid>
		<description><![CDATA[Una característica interesante de esta librería es que el procesamiento del archivo PDF se hace en el mismo cliente Flex. Sin embargo, viendo el código del ejemplo mencionado me di cuenta de que al momento de guardar el archivo a disco]]></description>
			<content:encoded><![CDATA[<p>Hace un tiempo estuve buscando información sobre cómo trabajar con archivos PDF en Flex y, particularmente, como guardar texto en archivos de este tipo y me topé con un <a href="http://blog.unthinkmedia.com/?p=53">popular ejemplo</a> en el que se presenta una pantalla donde es posible dibujar garabatos con el mouse para luego guardar dicha imagen en un archivo PDF. Este ejemplo hace uso de la famosa librería <a href="http://alivepdf.bytearray.org/">AlivePDF</a> para la manipulación de archivos PDF desde Flex.<span id="more-162"></span></p>
<p>Una característica interesante de esta librería es que el procesamiento del archivo PDF se hace en el mismo cliente Flex. Sin embargo, viendo el código del ejemplo mencionado me di cuenta de que al momento de guardar el archivo a disco, se hace una invocación a un script PHP en algún servidor remoto que, supongo, genera el archivo PDF y lo reenvía al cliente Flex para que sea descargado. Esto me pareció algo inconveniente, pues todo el procesamiento del archivo PDF se hace en el cliente Flex, pero no se accede a disco desde Flex al momento de guardarlo. Me pregunte entonces si sería posible acceder a disco desde el cliente Flex para poder crear y guardar un documento PDF sin hacer uso de ninguna tecnología de servidor. Lo que encontré fue que Flash Player 10  incluye una clase especial para la carga y descarga de archivos hacia y desde un servidor, respectivamente: la clase FileReference. Esta clase logra acceder a disco abriendo un cuadro de dialogo “Guardar como” del sistema operativo. Así que si se desea manejar archivos PDF exclusivamente en el cliente Flex, me parece adecuado hacer uso de esta clase para guardar a disco el archivo PDF sin hacer uso de ningún servicio remoto.</p>
<p>Comentando una línea y agregando solo tres más al ejemplo original, fue posible crear y guardar a disco un archivo PDF mediante la librería AlivePDF y la clase FileReference. La librería AlivePDF posee un método <strong>save()</strong> mediante el cual es posible generar el documento PDF. Este método tiene dos constructores en los cuales se indica si la generación del documento será de manera remota (en un servidor) o de manera local (en el cliente Flex). Como es de esperarse, comenté la línea donde se invoca a este método de manera remota en el ejemplo original y agregué la invocación al mismo método pero de manera local. Las dos siguientes líneas son triviales cuando se hace uso de la librería FileReference.</p>
<p>Espero que les guste el ejemplito. Se aceptan comentarios y dudas.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_DrawingDemo_1744223834"
			class="flashmovie"
			width="550"
			height="350">
	<param name="movie" value="http://ria212.com/ejemplos/SavePDF/DrawingDemo.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://ria212.com/ejemplos/SavePDF/DrawingDemo.swf"
			name="fm_DrawingDemo_1744223834"
			width="550"
			height="350">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p><a href="http://www.linkedin.com/in/juanmanrique">Juan Manrique</a>.</p>
<p><a href="http://ria212.com/ejemplos/SavePDF/DrawingDemo.html">DrawingDemoRIA212</a><br />
<a href="http://ria212.com/ejemplos/SavePDF/srcview/">Codigo</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/sobre-alivepdf-y-la-clase-filereference/feed/</wfw:commentRss>
		<slash:comments>4</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>Convertir Aplicación Flash Lite a dispositivos Sony Ericsson</title>
		<link>http://ria212.com/blog/2009/12/convertir-aplicacion-flash-lite-a-dispositivos-sony-ericsson/</link>
		<comments>http://ria212.com/blog/2009/12/convertir-aplicacion-flash-lite-a-dispositivos-sony-ericsson/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 02:14:53 +0000</pubDate>
		<dc:creator>rafaelochoa</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://ria212.com/blog/2009/12/convertir-aplicacion-flash-lite-a-dispositivos-sony-ericsson/</guid>
		<description><![CDATA[Demostración en video de como preparar una aplicación para vender en PlayNow, tienda de Sony Ericsson para dispositivos móviles. Otra muestra de lo versátil que resulta la plataforma Flash. Mas información twitter:rafaelochoa Copyright &#169; 2008 This feed is for personal, non-commercial use only. The use of this feed on other websites breaches copyright. If this<a href="http://ria212.com/blog/2009/12/convertir-aplicacion-flash-lite-a-dispositivos-sony-ericsson/">&#160;&#160;[ Read More ]</a>]]></description>
			<content:encoded><![CDATA[<div style="font-family: Arial, Helvetica, sans-serif; font-size: 10px;">
<div>Demostración en video de como preparar una aplicación para vender en PlayNow, tienda de Sony Ericsson para dispositivos móviles. Otra muestra de lo versátil que resulta la plataforma Flash.</div>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="303" 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://www.youtube.com/v/RASU4qMT8z8&amp;hl=es_ES&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="500" height="303" src="http://www.youtube.com/v/RASU4qMT8z8&amp;hl=es_ES&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p><a href="http://developer.sonyericsson.com/site/global/newsandevents/latestnews/newsdec09/p_flash_developers.jsp?utm_source=twitterfeed&amp;utm_medium=twitter&amp;utm_campaign=news" target="_blank">Mas información</a></p>
<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/12/convertir-aplicacion-flash-lite-a-dispositivos-sony-ericsson/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

