<?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>elBlëg - Interactividad, usabilidad y web &#187; ActionScript</title>
	<atom:link href="http://www.elbleg.com/category/actionscript/feed" rel="self" type="application/rss+xml" />
	<link>http://www.elbleg.com</link>
	<description>Interactividad, usabilidad y web</description>
	<lastBuildDate>Thu, 19 Aug 2010 16:41:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Flash Video: Calcular el tamaño del Buffer</title>
		<link>http://www.elbleg.com/actionscript/flash-video-calcular-el-tamano-del-buffer.html</link>
		<comments>http://www.elbleg.com/actionscript/flash-video-calcular-el-tamano-del-buffer.html#comments</comments>
		<pubDate>Tue, 28 Oct 2008 19:39:56 +0000</pubDate>
		<dc:creator>Yëco</dc:creator>
				<category><![CDATA[ActionScript]]></category>

		<guid isPermaLink="false">http://eldomo.net/yeco_blog/archives/flash-video-calcular-el-tamano-del-buffer</guid>
		<description><![CDATA[Muchas veces me han preguntado acerca de la forma correcta de calcular el tamaño de un buffer, y bien, me parece que ese sería un buen tema para desempolvar un poco el Blëg.
Si querés mostrar flash video, tenés 3 opciones primarias:

Ignorar el ancho de banda del usuario y solo mostrar una versión del archivo usando [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas veces me han preguntado acerca de la forma correcta de calcular el tamaño de un buffer, y bien, me parece que ese sería un buen tema para desempolvar un poco el Blëg.</p>
<p>Si querés mostrar flash video, tenés 3 opciones primarias:</p>
<ol>
<li>Ignorar el ancho de banda del usuario y solo mostrar una versión del archivo usando un buffer estimado.</li>
<li>Mostrar diferentes versiones del mismo archivo (por ejemplo alta y baja resolución) dependiendo del ancho de banda del usuario y usando un buffer con un tamaño estimado o bien, calculando el bufer adecuado.</li>
<li>Mostrar una versión encodeada razonablemente y usar un buffer dependiendo de la conexión del usuario</li>
</ol>
<p><span id="more-75"></span></p>
<p>Tomá en cuenta que me refiero a progressive download y no al Streaming (que es la mejor opción en caso de videos grandes), tampoco me refiero al video incrustado en la linea de tiempo de flash.</p>
<p>Volviendo a lo anterior, basandonos en como y donde querés mostrar el video la opción 1 solo es recomendable si el video está muy bien codificado y si conoces perfectamente a quién irá dirigido, la opción 2 es la más laboriosa (tener que crear las diferentes versiones&#8230;) pero funciona si puedes vivir con el hecho de que quienes tengan un menor ancho de banda van a ver una versión de mala calidad y pobre del video. La opción 3, ronda en medio de las opciones 1 y 2, además de que es algo que podés hacer siempre sin demasiado esfuerzo.</p>
<h2>Muy bonito, pero cómo calculo el buffer?</h2>
<p>Necesitás conocer tres valores:</p>
<ol>
<li>El largo de tu flv en segundos</li>
<li>El bitrate de tu flv en kilobits por segundo</li>
<li>El ancho de banda del usuario en kilobits por segundo</li>
</ol>
<p>Si conocés estos valores podés calcular el tamaño del buffer con una formula bastante simple. Que de donde sacás esos numeritos? El primero (el largo del flv) puede encontrarse en el<br />
metadata del flv propiamente y se incluye cuando se codifica el video, el segundo (el bitrate) se encuentra también en el bendito metadata. El tercero, como era de esperar, es más complicado de conseguir y no hay una propiedad o metodo en flash que nos dé el ancho de banda del usuario, entonces hay que conseguir ese valor mediante un chequeo la primera vez que el usuario descarga la aplicación, por ejemplo.</p>
<p>La formula es la misma que podés encontar en el <a href="http://www.adobe.com/devnet/flash/video.html" target="_blank">DevNet de Adobe</a> con la principal diferencia de que aquí ya está encapsulada en una clase.<br />
Podés encontrar algo exagerado poner solo un método con unas cuantas lineas de código en su propia clase pero es conveniente si lo deseas reutilizar en otros proyectos, y en lo personal, prefiero tener cada cosa con su cosa. Además podrías agregarle otros métodos que sean útiles para el manejo de videos y cambiarle el nombre a “VideoUtil” o algo por el estilo.</p>
<p>Acá está el <em>BufferCalculator.as</em>:</p>
<pre name="code" class="javascript">class cr.yeco.video.BufferCalculator {

// relleno del buffer en seg.
// Debe ser al menos el doble de largo que el intervalo de frames por segundo, ex:
// intervalo de 30 en 30fps --&gt; min. 2 sec.
public static var BUFFER_PADDING:Number = 3;

public function BufferCalculator() {

}

// Largo del FLV en seg., flv Bitrate y ancho de banda in kBits/Seg
public static function calculate(flvLength:Number, flvBitrate:Number, bandwidth:Number):Number {

var bufferTime:Number;

if (flvBitrate &gt; bandwidth) {
bufferTime = Math.ceil(flvLength - flvLength/(flvBitrate/bandwidth));
} else {
bufferTime = 0;
}

bufferTime += BUFFER_PADDING;

return bufferTime;

}

}</pre>
<h2>Ya tengo la clase, pero con qué la lleno?</h2>
<p>Bien, la próxima parte es como obtener los valores con los que vas a correr el método calculate(). Si no tenés tu forma de calcular el ancho de banda podés usar esta clase (<a href="http://www.mediafire.com/file/0swysjgymjz/BandwidthDetector.as" target="_blank">descargar</a>), en el archivo que se descarga al final del post hay un ejemplo comentado sobre cómo usar la clase.</p>
<p>Básicamente carga un archivo que vos especificás por unos cuantos segundos y luego calcula y te dice cual es el ancho de banda. Lo bueno es que solo es necesario correrlo una vez (por ejemplo al iniciar la aplicación). La clase guarda los valores en objetos compartidos y corre nuevamente cuando el tiempo ha expirado. Desde luego que no es un método a prueba de balas: el ancho de banda del usuario puede variar mientras usa la aplicación etc. Pero es mucho mejor que nada.  Lo siguiente es un ejemplo de como usar las dos clases juntas con el componente FLVPlayback (el código puesto en el frame 1):</p>
<pre name="code" class="javascript">Stage.scaleMode= "noScale";

import cr.yeco.loading.BandwidthDetector;
import cr.yeco.video.BufferCalculator;
import mx.utils.Delegate;

var BANDWIDTH:Number;

function onBwDetect(evObj:Object):Void {

BANDWIDTH = evObj.data.kBitsSec;
fp.contentPath = "flv/trusted_computing.flv";

}

function onFlvMetaData(evObj:Object):Void {
fp.bufferTime = isNaN(BANDWIDTH) ? 3 : BufferCalculator.calculate(fp.metadata.duration, fp.metadata.videodatarate, BANDWIDTH);
}

function init():Void {

fp.addEventListener("metadataReceived", Delegate.create(this, onFlvMetaData));

var bwDetector:BandwidthDetector = new BandwidthDetector(this, 0);
bwDetector.addEventListener("onDetect", Delegate.create(this, onBwDetect));
bwDetector.expireTime = 86400;
bwDetector.detect("img/bandwidthCheck.jpg", 3);

}

init();</pre>
<p>Podrías mejorarlo más, por ejemplo poniendo este codigo en una clase separada en lugar del frame 1 y encapsulando el detector de ancho de banda y el calculador de buffer en una clase de decoración para el componente FLVPlayback y así cada vez que se crea una instancia de FLVPlayback el tamaño del buffer se configura de forma automática, sería un buen addon, pero aún más importante es asegurarse de que el flv fué encodeado con el bitrate correcto, y el intervalo entre keyframes adecuado.</p>
<p>Recordá que en DevNet siempre hay textos interesantes con respecto al tema, además de buenas practicas trabajando con video.</p>
<p>Acá podés <a href="http://www.mediafire.com/file/quymdgnzylj/BufferSize.zip" target="_blank">descargar todos los archivos</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elbleg.com/actionscript/flash-video-calcular-el-tamano-del-buffer.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Por si usas SWFAdress y Google Analytics juntos</title>
		<link>http://www.elbleg.com/actionscript/por-si-usas-swfadress-y-google-analytics-juntos.html</link>
		<comments>http://www.elbleg.com/actionscript/por-si-usas-swfadress-y-google-analytics-juntos.html#comments</comments>
		<pubDate>Sat, 06 Sep 2008 00:14:50 +0000</pubDate>
		<dc:creator>Yëco</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Web Dev]]></category>
		<category><![CDATA[Analytics]]></category>
		<category><![CDATA[SWFAdress]]></category>

		<guid isPermaLink="false">http://eldomo.net/yeco_blog/archives/por-si-usas-swfadress-y-google-analytics-juntos</guid>
		<description><![CDATA[Este es un pequeño tip que te puede salvar algunos minutos si piensas usar SWFAddress y GA juntos en un proyecto en flash.
No uses getURL(); en ninguna parte de tu código, SWFAddress usa ExternalInterface internamente y van a haber serios bugs si usas getURL (para llamar el urchinTracker();, por ejemplo). Simplemente usa ExternalInterface y todo [...]]]></description>
			<content:encoded><![CDATA[<p>Este es un pequeño tip que te puede salvar algunos minutos si piensas usar SWFAddress y GA juntos en un proyecto en flash.</p>
<p>No uses <em>getURL();</em> en ninguna parte de tu código, SWFAddress usa <em>ExternalInterface</em> internamente y van a haber serios bugs si usas getURL (para llamar el<em> urchinTracker();</em>, por ejemplo). Simplemente usa ExternalInterface y todo va a ir bien. No sé si es un problema con <em>getURL();</em> y <em>ExternalInterface</em> en general o solo pasa en esta combinación en particular.</p>
<p>SWFAddress llama al<strong><em> </em></strong><em>urchinTracker();</em><strong><em> </em></strong>internamente. Esto podría ser bueno si solamente necesitas trackear cambios de url o cosas sencillas&#8230; pero si deseas un reporte mas detallado lo mejor es que dependas de tu propia aplicacion para llamar el <em>urchinTracker();</em> y no de SWFAddress, para esto, creas tu script y luego comentas &#8220;<em>track.call(this)</em>&#8221; en las lineas 202 y 303 de swfaddress.js.</p>
<p>Eso es todo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elbleg.com/actionscript/por-si-usas-swfadress-y-google-analytics-juntos.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flex + Apache + Php + mySQL + amfphp + tomcat +fds(lcds) juntos, sin problemas</title>
		<link>http://www.elbleg.com/actionscript/flexapachephpmysqlamfphptomcatfdslcds-sin-fisuras.html</link>
		<comments>http://www.elbleg.com/actionscript/flexapachephpmysqlamfphptomcatfdslcds-sin-fisuras.html#comments</comments>
		<pubDate>Fri, 16 May 2008 06:32:10 +0000</pubDate>
		<dc:creator>Yëco</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Web Dev]]></category>

		<guid isPermaLink="false">http://eldomo.net/yeco_blog/archives/flexapachephpmysqlamfphptomcatfdslcds-sin-fisuras</guid>
		<description><![CDATA[En estos momentos ando desarrollando una RIA bastante grande basada en Flex+AMFPHP y conexión con MySQL. Para desplegar el entorno de desarrollo de forma fácil, basta con instalar alguno de los paquetes recopilatorios que incluyen el entorno LAMP (como por ejemplo, XAMPP de los ApacheFriends).
Hasta aquí todo perfecto. El problema surge cuando queremos incorporar a [...]]]></description>
			<content:encoded><![CDATA[<p>En estos momentos ando desarrollando una RIA bastante grande basada en Flex+AMFPHP y conexión con MySQL. Para desplegar el entorno de desarrollo de forma fácil, basta con instalar alguno de los paquetes recopilatorios que incluyen el entorno LAMP (como por ejemplo, XAMPP de los ApacheFriends).</p>
<p>Hasta aquí todo perfecto. El problema surge cuando queremos incorporar a nuestro proyecto (en mayor o menor medida) algunos módulos basados en FDS (Flex Data Services), ahora conocido como LiveCycle Data Services. Esto nos obliga a montar un servidor de aplicaciones J2EE (como Tomcat) junto a nuestro Apache.<br />
<span id="more-70"></span><br />
La verdad es que para mi proyecto, dadas las dimensiones que ya tiene y a los tiempos de desarrollo tan ajustados, me resulta inviable plantear un refactoring del código para basar el proyecto totalmente en LCDS. Al menos para la primera revisión estable, he decidido mantener AMFPHP e incorporar LCDS para implementar un módulo de Reporting y quizás alguno más para generación de listados de datos y gráficas empresariales a tiempo real (mediante data-push).</p>
<p>Todo esto me hace plantear lo siguiente: ¿a caso no es posible, o incluso deseable, desarrollar un proyecto Flex en el que se incluyan partes con AMFPHP, LCDS e incluso Red5?</p>
<p>En un intento rápido, he tratado de cargar un módulo de generación de PDF existente en Tomcat desde la aplicación principal (basada en Flex+AMFPHP) sin muy buenos resultados.</p>
<p>El problema es que hay muchos problemas y me explico: el app principal corre en Apache (puerto 80) y tomcat en el 8080. Mi aplicación principal es un Flex compilado, mientras que la parte en LCDS es MXML compilado en el servidor. Al llamar de uno a otro, podemos tener problemas de violación de la sandbox y lo que es peor, problemas con los contextos:</p>
<p>En LCDS, configuramos la compilación, linkado, “destinations” y demás mediante ficheros de configuración xml. Concretamente, en el fichero services-config.xml especificamos los endpoints de cada uno de los canales con los que queremos trabajar. Esto es el extracto perteneciente a AMF:</p>
<p>[code]<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel"><br />
<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"></endpoint></channel-definition></p>
<properties>
<polling-enabled>false</polling-enabled> </properties> [/code]Como vemos, en el endpoint del canal, se indican una serie de “variables” que a posteriori se sustituirán por los valores correctos.</p>
<p>He observado que, cuando se llama al módulo desde la aplicación principal (en Apache), dicha información es desconocida y por lo tanto, el módulo no funciona ni para atrás.</p>
<p>Seguramente todo es más fácil de lo que pienso, pero ante todo soy desarrollador, NO administrador; por eso, aunque esos parámetros pueden indicarse tanto en el fichero flex-config.xml como en la propia linea de comandos del compilador, creo muy tedioso e indeseable el estar trasteando con esos parámetros. De hecho y por experiencia, creo que estar “chapuceando” las instalaciones para salir del paso se convierte en un problema insalvable a la larga.</p>
<p>Para mis necesidades, creo que la mejor solución es la siguiente: hacer hablar correctamente a Apache con Tomcat.</p>
<p>Para esto último, lo único que necesitamos es instalar Apache Tomcat Connector. Esto es simplemente un módulo de Apache como otro cualquiera que canaliza, según un fichero de reglas, todas las llamadas necesarias a Tomcat una vez recibidas por Apache y de forma transparente.</p>
<p>Esto nos proporciona enormes posibilidades no sólo para integrar en nuestras aplicaciones módulos de distintas procedencias de manera sencilla; sino que además nos permitirá servir aplicaciones J2EE desde varios servidores a través de Apache (Apache se convierte en una especie de “proxy”), habilitar mecanismos de balanceo de carga, etc….</p>
<p>Al grano….</p>
<h3>Instalación de Apache+PHP+MySQL+AMFPHP.</h3>
<p>Creo que este apartado no requiere de muchas explicaciones y hay montones de tutoriales por toda la red. En resumen y para los impacientes: descarga XAMPP para Mac Osx, Windows o Linux y descarga e instala AMFPHP como corresponda.</p>
<h3> Instalación de Apache Tomcat y LCDS</h3>
<p>- Descarga Apache Tomcat desde la web oficial e instala de la manera convencional. Arranca el servicio para comprobar que todo está OK y a continuación paralo nuevamente.</p>
<p>- Descarga el instalador de LiveCycle Data Services desde la web de Adobe.</p>
<p>- Inicia la instalación indicando que quieres una instalación sobre un servidor J2EE existente (no con el JRun integrado). Selecciona como directorio de instalación el directorio principal de aplicaciones de tu Tomcat (por ejemplo, D:\Tomcat_5.5_lcds\webapps). Esto añadirá a dicha carpeta varios ficheros .war que habilitarán LCDS sobre Tomcat.</p>
<p>- Inicia Tomcat y espera un pelín. Tomcat automáticamente se encargará de expandir los ficheros .war de LCDS, creando sobre nuestro directorio webapps correspondiente una nueva carpeta por cada fichero .war existente.</p>
<p>- Una vez compruebes de que todo está arrancado, abre las aplicaciones de ejemplo de LCDS para comprobar que todo está OK: http://localhost:8080/samples.</p>
<p>¡¡Ya casi estamos!!</p>
<h3>Instalación y configuración del Apache Tomcat Connector.</h3>
<p>Lo primero que deberemos hacer es descargar el módulo correspondiente a nuestra versión de Apache desde esta dirección.</p>
<p>Dentro encontrarás una serie de ficheros, entre los cuales están las librerías .so para nuestro Apache y que tienen la siguiente forma:</p>
<p>[code]mod_jk-apache-(version_apache).so[/code]</p>
<p>Tan sólo deberemos descargar el fichero correspondiente a la (version_apache) que tenemos instalada.</p>
<p>Ahora guardamos el fichero descargado en el directorio de módulos de apache (en Windows suele ser c:\apache\modules) y renombrar el fichero al nombre mod_jk.so. Este paso es muy importante si queremos evitar problemas a posteriori.</p>
<p>Para mantener las cosas en orden, vamos a crear un fichero de configuración .conf independiente del principal (htttpd.conf).</p>
<p>Creamos un nuevo fichero de texto llamado tomcat.conf con el siguiente contenido:</p>
<p>[code]# Carga del módulo apache<br />
LoadModule jk_module modules/mod_jk.so<br />
# Si tenemos instalado una versión de Apache &lt; 2.x quizás debamos<br />
# descomentar esta línea para habilitar<br />
# AddModule mod_jk.c<br />
# Ubicación del fichero de configuración del conector (workers.properties)<br />
# Es deseable que ubiques el fichero en el directorio conf para que esté cerca<br />
# del httpd.conf y lo tengamos todo controlado<br />
JkWorkersFile conf/workers.properties<br />
# Dónde poner el fichero de memoria compartida del módulo<br />
JkShmFile logs/mod_jk.shm<br />
# Dónde poner el fichero de log del módulo<br />
# Es deseable que ubiques el fichero en el directorio de logs de<br />
# Apache para tenerlo todo controlado<br />
JkLogFile logs/mod_jk.log<br />
# Especificamos el nivel de log [debug/error/info]<br />
JkLogLevel info<br />
# Especificamos el formato timestamp para el fichero de log<br />
JkLogStampFormat “[%a %b %d %H:%M:%S %Y] ”<br />
##################################################<br />
# REGLAS DE REDIRECCIÓN A TOMCAT<br />
##################################################<br />
# Aquí añadiremos tantas reglas de redirección como sean necesarias.<br />
# Es importante dejar claro que cada regla de redirección va dirigida a<br />
# un “worker” particular. Podemos tener tantos workers como queramos<br />
# y cada uno de ellos puede ser un Tomcat diferente.<br />
###################################################<br />
#<br />
# Enviamos todo para el contexto /samples al worker llamado “worker1″<br />
JkMount /samples/* worker1[/code]</p>
<p>Ahora creamos el fichero workers.properties en la ubicación que hayamos indicado en el fichero anterior y lo rellenamos con el siguiente contenido:</p>
<p>[code]#Definimos un worker real usando ajp13 (más sobre esto en la doc oficial)<br />
worker.list=worker1<br />
# Propiedades del worker1 (ajp13)<br />
worker.worker1.type=ajp13<br />
worker.worker1.host=localhost<br />
worker.worker1.port=8009[/code]</p>
<p>Por último, tan sólo nos queda incluir nuestro fichero de configuración para su carga con Apache:</p>
<p>Edita el fichero httpd.conf y añade al final del mismo las siguientes líneas:</p>
<p>[code]# Configuración del conector Apache-Tomcat<br />
Include conf/tomcat.conf[/code]</p>
<h3> Pruebas y conclusiones finales.</h3>
<p>Para probar que todo está OK, tan sólo debemos abrir http://localhost/samples. Si todo ha ido bien, ¡¡estamos viendo los ejemplos de LCDS sin usar el puerto 8080!!.</p>
<p>Fantástico, a mi me ha facilitado muchísimo el trabajo.</p>
<p>Si tienes algún problema, seguramente Apache ni te cargue correctamente. Intenta arrancar Apache desde consola para así poder ver posibles errores de sintaxis en alguno de los fichero que hemos creado. Lo más probable es que hayas descargado la versión del mod_jk.so errónea para tu versión de Apache.</p>
<p>Ahora podemos demostrar de manera muy rápida la integración y uso directo de Flex en el que cargamos un módulo en Tomcat+LCDS desde una aplicación con Flex+AMFPHP:</p>
<p>Código en aplicación ERP.swf (Apache+AMFPHP):</p>
<p>[as]<mx:moduleloader id="modPDFReportingModuleLoader"><br />
url=&#8221;http://localhost/samples/pdfgen/pdfgenModule.swf&#8221;<br />
height=&#8221;100%&#8221; width=&#8221;100%&#8221; x=&#8221;0&#8243;/&gt;<br />
<mx:script><br />
<!--[CDATA[<br />
import modules.ModPDFReporting;<br />
public function createModule():void {<br />
if (!modPDFReportingModuleLoader.url) {<br />
modPDFReportingModuleLoader.url = "http://localhost/samples/pdfgen/pdfgenModule.swf";<br />
return;<br />
}<br />
modPDFReportingModuleLoader.loadModule();<br />
}<br />
public function removeModule():void {<br />
modPDFReportingModuleLoader.unloadModule();<br />
}<br />
]]--></mx:script>[/as]<br />
Este es el contenido (simplificado) de pdfgenModule.swf:</mx:moduleloader></p>
<p>[as]<mx:module xmlns:mx="http://www.adobe.com/2006/mxml"><br />
<mx:script><br />
<!--[CDATA[<br />
import flash.net.navigateToURL;<br />
import mx.controls.Alert;<br />
import mx.rpc.events.FaultEvent;<br />
import mx.rpc.events.ResultEvent;<br />
import mx.graphics.ImageSnapshot;<br />
private function generatePDF():void<br />
{<br />
service.generatePDF(xmlModel);<br />
}<br />
private function resultHandler(event:ResultEvent):void<br />
{<br />
var url:String = event.result as String;<br />
navigateToURL(new URLRequest(url), "_blank");<br />
}<br />
private function faultHandler(event:FaultEvent):void<br />
{<br />
Alert.show(event.fault.toString(), "Error")<br />
}<br />
]]--><br />
</mx:script><br />
<mx:remoteobject id="service" destination="PDFService"><br />
fault=&#8221;faultHandler(event)&#8221;<br />
result=&#8221;resultHandler(event)&#8221; /></mx:remoteobject></mx:module>[/as]</p>
<p>Como podemos observar, en este código usamos LCDS para llamar a un destination de tomcat. Lo más importante es que ahora gracias a nuestro conector, el funcionamiento es transparente y se simplifica mucho la realización de módulos independientes e incluso, que varias personas trabajemos en cada parte sin saber muchos detalles acerca de la instalación y configuración puntual que haya sobre Apache, Tomcat, etc.</p>
<p>Si te sirve me cuentas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elbleg.com/actionscript/flexapachephpmysqlamfphptomcatfdslcds-sin-fisuras.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Software de información y la interface gráfica</title>
		<link>http://www.elbleg.com/actionscript/software-de-informacion-y-la-interface-grafica.html</link>
		<comments>http://www.elbleg.com/actionscript/software-de-informacion-y-la-interface-grafica.html#comments</comments>
		<pubDate>Thu, 14 Jun 2007 20:51:45 +0000</pubDate>
		<dc:creator>Yëco</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Gráfica]]></category>

		<guid isPermaLink="false">http://eldomo.net/yeco_blog/otros/software-de-informacion-y-la-interface-grafica/</guid>
		<description><![CDATA[
Bret Victor de WorryDream publicó recientemente un documento llamado Magic Ink: Information Software and the Graphical Interface en el que muestra de un modo bastante claro y con ejemplos una perspectiva diferente del diseño de interfaces y su aplicación a productos de información.
Muy bueno
]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.elbleg.com/wp-content/uploads/2007/06/information_model.jpg' alt='information_model.jpg' width="380" /></p>
<p>Bret Victor de WorryDream publicó recientemente un documento llamado <em><a target="_blank" href="http://worrydream.com/MagicInk/">Magic Ink: Information Software and the Graphical Interface</a></em> en el que muestra de un modo bastante claro y con ejemplos una perspectiva diferente del diseño de interfaces y su aplicación a productos de información.</p>
<p>Muy bueno</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elbleg.com/actionscript/software-de-informacion-y-la-interface-grafica.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparando el desempeño de Silverlight, Flex y Java</title>
		<link>http://www.elbleg.com/actionscript/flex/comparando-el-desempeno-de-wpfe-flash9flex-y-java.html</link>
		<comments>http://www.elbleg.com/actionscript/flex/comparando-el-desempeno-de-wpfe-flash9flex-y-java.html#comments</comments>
		<pubDate>Thu, 14 Jun 2007 17:42:43 +0000</pubDate>
		<dc:creator>Yëco</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://eldomo.net/yeco_blog/otros/comparando-el-desempeno-de-wpfe-flash9flex-y-java/</guid>
		<description><![CDATA[Esta es una muy buena idea, bubblemark.com es un genial website desarrollado con una muy sencilla animación en distintos paquetes de desarrollo de RIA&#8217;s y probados en distintos browsers, con el fin de  comparar de modo muy efectivo cada uno de ellos&#8230; 

]]></description>
			<content:encoded><![CDATA[<p>Esta es una muy buena idea, bubblemark.com es un genial website desarrollado con una muy sencilla animación en distintos paquetes de desarrollo de RIA&#8217;s y probados en distintos browsers, con el fin de  comparar de modo muy efectivo cada uno de ellos&#8230; <span id="more-33"></span></p>
<p><a href="http://bubblemark.com/flex.htm" target="_blank" title="Testeando Flex"><img src="http://www.elbleg.com/wp-content/uploads/2007/06/ballsvector.png" alt="Testeando Flex" width="380" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.elbleg.com/actionscript/flex/comparando-el-desempeno-de-wpfe-flash9flex-y-java.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apollo&#8230; ya no es Apollo¿?¿?</title>
		<link>http://www.elbleg.com/actionscript/apollo-ya-no-es-apollo%c2%bf%c2%bf.html</link>
		<comments>http://www.elbleg.com/actionscript/apollo-ya-no-es-apollo%c2%bf%c2%bf.html#comments</comments>
		<pubDate>Mon, 11 Jun 2007 19:47:48 +0000</pubDate>
		<dc:creator>Yëco</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://eldomo.net/yeco_blog/flash-actionscript/apollo-ya-no-es-apollo%c2%bf%c2%bf/</guid>
		<description><![CDATA[Pues no&#8230; precisamente hoy Adobe acaba de anunciar su beta de  Adobe® Integrated Runtime (o sea  Adobe® AIR)&#8230; que vendría siendo el apollo mismo, pero ya sin su codename.
Entre sus novedades están &#8211; Soporte transparente de aplicaciones HTML, mejoras en el API de windows, navegador de archivos nativo, API de conectividad a servidores [...]]]></description>
			<content:encoded><![CDATA[<p>Pues no&#8230; precisamente hoy Adobe acaba de anunciar su beta de  Adobe® Integrated Runtime (o sea  Adobe® AIR)&#8230; que vendría siendo el apollo mismo, pero ya sin su codename.</p>
<p>Entre sus novedades están &#8211; Soporte transparente de aplicaciones HTML, mejoras en el API de windows, navegador de archivos nativo, API de conectividad a servidores y servicios, Drag and drop, soporte para el clipboard (copy, paste) y posibilidad de integrar una base de datos entre otras cosillas.<br />
<span id="more-32"></span><br />
También sacó a la luz su Adobe AIR Extension para Dreamweaver&#8230; que vendría siendo una utilidad que permitiría crear y previsualizar aplicaciones .air dentro de nuestro querido Dreamweaver CS3 permitiendonos crear aplicaciones de escritorio usando nuestras habilidades para crear web, esto suena interesante no?&#8230;</p>
<p>Un poco más de info disponible en la web de Adobe®</p>
<p><a href="http://labs.adobe.com/wiki/index.php/AIR:Dreamweaver_CS3_Extension">http://labs.adobe.com/wiki/index.php/AIR:Dreamweaver_CS3_Extension</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.elbleg.com/actionscript/apollo-ya-no-es-apollo%c2%bf%c2%bf.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo utilizar sIFR</title>
		<link>http://www.elbleg.com/actionscript/como-utilizar-sifr.html</link>
		<comments>http://www.elbleg.com/actionscript/como-utilizar-sifr.html#comments</comments>
		<pubDate>Wed, 06 Jun 2007 23:02:45 +0000</pubDate>
		<dc:creator>Yëco</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[OpenSource]]></category>

		<guid isPermaLink="false">http://eldomo.net/yeco_blog/flash-actionscript/como-utilizar-sifr/</guid>
		<description><![CDATA[sIFR (Scalable Inman Flash Replacement) es una conocida tecnología que permite reemplazar pequeños trozos de textos por su equivalente en Flash. Su modo de operacion se basa en combinar JavaScript, CSS y ActionScript. Su mayor utilidad es poder mostrar textos con tipografías que el usuario no tiene instalada en su computadora. [ Ejemplo ]
Además en [...]]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" href="http://www.mikeindustries.com/sifr/">sIFR</a> (Scalable Inman Flash Replacement) es una conocida tecnología que permite reemplazar pequeños trozos de textos por su equivalente en Flash. Su modo de operacion se basa en combinar JavaScript, CSS y ActionScript. Su mayor utilidad es poder mostrar textos con tipografías que el usuario no tiene instalada en su computadora. [<a target="_blank" href="http://www.mikeindustries.com/blog/files/sifr/2.0/"> Ejemplo</a> ]<span id="more-23"></span></p>
<p>Además en caso de no tener instalado Flash Player, sIRF lo detecta y nos muestra el texto original. Por otra parte no es recomendable para textos grandes, sino para títulos, encabezados y muy pequeños párrafos.</p>
<p>Entonces, si tenemos un texto como este:</p>
<p> <img src='http://www.elbleg.com/wp-content/uploads/2007/06/imagen-1.gif' alt='Lorem ipsum' /></p>
<p>Con sIRF veremos:</p>
<p> <img src='http://www.elbleg.com/wp-content/uploads/2007/06/imagen-2.gif' alt='Lorem ipsum' /></p>
<p>En el ejemplo se ve el texto con la fuente Scriptina .  Y aca no hay limite, se puede utilizar cualquier fuente&#8230;</p>
<h3>Implementación</h3>
<p>En primer lugar necesitaremos 4 archivos que vienen dentro del paquete de descarga [ <a href="http://www.mikeindustries.com/blog/files/sifr/2.0/sIFR2.0.2.zip">Bajar</a> ]</p>
<p><strong>- sifr.js : </strong>Es el script que permitirá intercambiar el texto HTML.</p>
<p><strong>- sIFR-screen. css y sIFR-print.css : </strong>son los estilos en cascada necesarios para mostrar el .SWF. Ademas debemos contar con nuestro propio estilo en cascada principal, con las reglas que formatearán los textos originales (en caso de no tener habilitado el Flash Player)</p>
<p><strong>- tipografia.swf: </strong>Es el archivo Flash que contendrá la fuente que se utilizará. En el paquete de descarga vienen dos:  tradegothic.swf y vandenkeere.swf. Es decir que uno de los archivos contendrá la fuente Trade Gothic y el otro VandenKeere.</p>
<p>Lo primero que se hace es añadir  los CSS y el JS. Para eso entre <head>y </head> ponemos:</p>
<p class="code">&lt;link rel=&#8221;stylesheet&#8221; href=&#8221;sIFR-screen.css&#8221; type=&#8221;text/css&#8221; media=&#8221;screen&#8221; /&gt;<br />
         &lt;link rel=&#8221;stylesheet&#8221; href=&#8221;sIFR-print.css&#8221; type=&#8221;text/css&#8221; media=&#8221;print&#8221; /&gt;   <br />
         &lt;script src=&#8221;sifr.js&#8221; type=&#8221;text/javascript&#8221;>&lt;/script&gt; </p>
<p>Luego supongamos que tenemos un encabezado con la etiqueta H1:</p>
<p class="code">
&lt;h1&gt;&lt;a href=&#8221;http://www.google.com&#8221; target=&#8221;_self&#8221;&gt;Google&lt;/a&gt;</p>
<p>Finalmente debemos incorporar un pequeño codigo JS con los parámetros de sIRF. Los más importantes son:</p>
<p><strong>- sSelector:</strong> La etiqueta HTML a reemplazar;<br />
<br />
<strong>- sFlashSrc:</strong> El archivo Flash;<br />
<br />
<strong>- sColor:</strong> El color de las letras, en hexadecimal (#C0C0C0);<br />
<br />
<strong>- sLinkColor:</strong> El color en caso de ser un link;<br />
<br />
<strong>- sHoverColor:</strong> El color cambiante en caso de ser un link;<br />
<br />
<strong>- sBgColor:</strong> El color de fondo.</p>
<p>Existen varios parámetros más, en el wiki de sIFR explican que es cada uno [sección <strong>Replacement Syntax</strong>]</p>
<p>Por lo tanto agregaremos un pequeño codigo JavaScript con los parámetros arriba puestos:</p>
<p class="code">
      &lt;script type=&#8221;text/javascript&#8221;&gt;<br />
      if(typeof sIFR == &#8220;function&#8221;){<br />
          sIFR.replaceElement(named({sSelector:&#8221;h1&#8243;, sFlashSrc:&#8221;actionIs.swf&#8221;, sColor:&#8221;#99C137&#8243;, sLinkColor:&#8221;#99C137&#8243;, sBgColor:&#8221;#C0C0C0&#8243;, sHoverColor:&#8221;#508A15&#8243;}));<br />
      };<br />
       &lt;/script&gt;
</p>
<p>De esta forma estamos indicando que se debe reemplazar el texto entre las etiquetas H1 por el archivo actionIs.swf (que contiene la fuente Action Is ). Además el color de las letras debe tener tonos verdes con un fondo gris.</p>
<p>En caso de querer agregar más reemplazos tenemos:</p>
<p class="code">
         &lt;script type=&#8221;text/javascript&#8221;&gt;<br />
      if(typeof sIFR == &#8220;function&#8221;){<br />
          sIFR.replaceElement(named({sSelector:&#8221;h1&#8243;, sFlashSrc:&#8221;actionIs.swf&#8221;, sColor:&#8221;#99C137&#8243;, sLinkColor:&#8221;#99C137&#8243;, sBgColor:&#8221;#c0c0c0&#8243;, sHoverColor:&#8221;#508A15&#8243;}));<br />
          sIFR.replaceElement(named({sSelector:&#8221;h2&#8243;, sFlashSrc:&#8221;vandenkeere.swf&#8221;, sColor:&#8221;#FFFFFF&#8221;, sLinkColor:&#8221;#FFFFFF&#8221;, sBgColor:&#8221;#CCCCCC&#8221;, sHoverColor:&#8221;#F5F8FF&#8221;}));<br />
      };<br />
      &lt;/script&gt;
</p>
<p> En este caso se agrego para que reemplace a la etiqueta H2. Y eso es todo, si tenemos algo así:<br />
<img src='http://www.elbleg.com/wp-content/uploads/2007/06/imagen-3.gif' alt='imagen-3.gif' /><br />
Implementando sIFR quedaría:<br />
<img src='http://www.elbleg.com/wp-content/uploads/2007/06/imagen-4.gif' alt='imagen-4.gif' /></p>
<h3>Algo más que agregar&#8230;</h3>
<p>Existe un addon para sIFR que permite darle la posibilidad al usuario de ver o no los textos en Flash. Este addon viene en el paquete de descarga y se llama sifr-addons.js. De esta forma si agregamos este archivo entre &lt;head&gt; y &lt;/head&gt;</p>
<p class="code">&lt;script src=&#8221;sifr-addons.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;</p>
<p>Y luego agregamos un link asi haremos que se desabilite sIFR:</p>
<p class="code">&lt;a href=&#8221; javascript:sIFR.rollback();&#8221;&gt;Quitar sIFR&lt;/a&gt;<br />
 También hay varios plugins para los distintos CMS: <a target="_blank" href="http://wp-plugins.net/plugin/sifr/">WordPress</a> , <a target="_blank" href="http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,421/Itemid,35/">Joomla</a> , <a target="_blank" href="http://drupal.org/project/sifr">Drupal</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.elbleg.com/actionscript/como-utilizar-sifr.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Amfphp: llamadas remotas desde PHP</title>
		<link>http://www.elbleg.com/actionscript/amfphp-llamadas-remotas-desde-php.html</link>
		<comments>http://www.elbleg.com/actionscript/amfphp-llamadas-remotas-desde-php.html#comments</comments>
		<pubDate>Sun, 03 Jun 2007 21:41:16 +0000</pubDate>
		<dc:creator>Yëco</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Web Dev]]></category>

		<guid isPermaLink="false">http://eldomo.net/yeco_blog/?p=13</guid>
		<description><![CDATA[Bien&#8230; estos últimos días me he visto en la necesidad de investigar bastante sobre comunicación de Flash con una base de datos en el servidor&#8230; y leyendo&#8230; vi que amfphp es una muy buena opción, para quienes no tenemos $$$ suficiente para pagarle a adobe una licencia de Flash remoting y además no tenemos un [...]]]></description>
			<content:encoded><![CDATA[<p>Bien&#8230; estos últimos días me he visto en la necesidad de investigar bastante sobre comunicación de Flash con una base de datos en el servidor&#8230; y leyendo&#8230; vi que <strong>amfphp</strong> es una muy buena opción, para quienes no tenemos $$$ suficiente para pagarle a adobe una licencia de Flash remoting y además no tenemos un server ColdFusion.<br />
<span id="more-16"></span><br />
Amfphp es un RPC  que nos permite comunicar datos entre el cliente (Flash, Flex, &#8230;) y el servidor (PHP).</p>
<p>Se trata de llamar a un método de un objeto local con varios parámetros y una función de vuelta y recibir los resultados. No hay que preocuparse de cómo se envian o reciben los datos, el cliente y el servidor (Flash y PHP) están sincornizados para ello. Te permite preocuparte sobre las características de tu aplicación más que por como se implementa, a parte de ofrecer un navegador que permite realizar los servicios y probrarlos antes de que se empiece a desarrollar el cliente.</p>
<p>Permite conectar PHP con: Flash y Flex con Remoting, JavaScript y Ajax con JSON y clientes XML con XML-RPC. Y entre las características que nos ofrece, nos encontramos con que es compatible con PHP4 y PHP5, sin necesidades de extensiones, es rápido y ligero, ofrece herramientas para ayudarnos en el desarrollo y es posible incluirlo en el framework que usemos.</p>
<p>Ejemplos de desarrollo usando Amfphp que nos pueden ayudar:</p>
<ul>
<li><a target="_blank" href="http://www.flash-db.com/Tutorials/update/">Editar una tabla</a></li>
<li><a target="_blank" href="http://www.flash-creations.com/notes/servercomm_remoting_amfphp.php">Base de datos</a></li>
<li><a target="_blank" href="http://groups.drupal.org/node/2768">Obtener datos de Drupal</a></li>
<li><a target="_blank" href="http://klr20mg.com/awi/">AWI &#8211; Amfphp WordPress Integration</a></li>
<li><a target="_blank" href="http://www.flash-db.com/Tutorials/form/">Formularios</a></li>
<li><a target="_blank" href="http://flash-db.com/Tutorials/hello/flashamfphp.php">Hello World</a></li>
<li><a target="_blank" href="http://flash-db.com/Tutorials/store/ShoppingTutorial.php?page=6">Tienda online</a></li>
</ul>
<p>Podés descargar el Amfphp <a "_blank" href="http://www.amfphp.org/">acá</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.elbleg.com/actionscript/amfphp-llamadas-remotas-desde-php.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex será software libre!</title>
		<link>http://www.elbleg.com/actionscript/flex-sera-software-libre.html</link>
		<comments>http://www.elbleg.com/actionscript/flex-sera-software-libre.html#comments</comments>
		<pubDate>Mon, 14 May 2007 16:36:21 +0000</pubDate>
		<dc:creator>Yëco</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[OpenSource]]></category>

		<guid isPermaLink="false">http://eldomo.net/yeco_blog/?p=12</guid>
		<description><![CDATA[Adobe anunció el plan que llevará al lanzamiento Flex como Open Source. Esto permitirá que los usuarios participen en el desarrollo del marco avanzado más para la construcción del Rich Internet Application (RIAs) para la web.

A partir del junio de este año, Flex SDK de Adobe incluye el compilador MXML y las librerías de Actionscript [...]]]></description>
			<content:encoded><![CDATA[<p>Adobe anunció el plan que llevará al lanzamiento Flex como Open Source. Esto permitirá que los usuarios participen en el desarrollo del marco avanzado más para la construcción del Rich Internet Application (RIAs) para la web.<br />
<span id="more-15"></span><br />
A partir del junio de este año, <strong>Flex SDK</strong> de Adobe incluye el compilador MXML y las librerías de Actionscript 3.0 y ActionScript debugger. Flex SDK incluye todos los componentes necesarios para crea aplicaciones Flex que giran en torno al browser, en MAC OS X, Windows y Linux.</p>
<p>Con esto Adobe consigue dos beneficios inmediatos: por un lado la posibilidad de congregar en torno a Flex una comunidad de desarrolladores que le ayuden con la plataforma; por otro permitir que terceros integren Flex en sus herramientas de desarrollo y plataformas. Todo un golpe de mano frente a Microsoft y sus posibles anuncios en el <strong>MIX</strong> y frente a <strong>OpenLaszlo</strong>, la &#8220;plataforma libre para creación de Rich Internet Aplications&#8221; por excelencia hasta ahora.</p>
<p>La licencia MPL (Mozilla Public License) fue la elegida por el Adobe para el nuevo SDK Flex. Un SDK es un &#8220;Software Development Kit&#8221;, o Kit de desarrollo de software, &#8220;un conjunto de aplicaciones para desarrollar programas en un determinado lenguaje o para un determinado entorno&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elbleg.com/actionscript/flex-sera-software-libre.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SWFAddress &#8211; Deep linking para Flash</title>
		<link>http://www.elbleg.com/actionscript/swfaddress-deep-linking-para-flash.html</link>
		<comments>http://www.elbleg.com/actionscript/swfaddress-deep-linking-para-flash.html#comments</comments>
		<pubDate>Mon, 14 May 2007 05:03:03 +0000</pubDate>
		<dc:creator>Yëco</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[OpenSource]]></category>

		<guid isPermaLink="false">http://yeco.eldomo.net/?p=11</guid>
		<description><![CDATA[Uno de los inconvenientes típicos de flash es su incapacidad para lograr un buen SEO, y aunque se logre colocar los metatags en su lugar y mostrar un poco de contenido por medio de comentarios, aun no hay modo de que el crawler sepa cómo localizar una sección, otro problema que nos presenta flash es [...]]]></description>
			<content:encoded><![CDATA[<p>Uno de los inconvenientes típicos de flash es su incapacidad para lograr un buen SEO, y aunque se logre colocar los metatags en su lugar y mostrar un poco de contenido por medio de comentarios, aun no hay modo de que el crawler sepa cómo localizar una sección, otro problema que nos presenta flash es que no se puede ir hacia atrás, adelante o refrescar la página sin tener que cargarla toda de nuevo. Bien, creo que ya hay solución a esto.<br />
<span id="more-14"></span><br />
Al parecer la gente de <a href="http://www.asual.com">asual</a> le puso fin a esos angustiosos escenarios al presentar <a href="http://www.asual.com/swfaddress/">SWFadress</a>, un pequeño script que utiliza el <em>ExternalInterface</em> introducido con el flash 8 para crear URLs que permitan ser indexadas por buscadores, o simplemente ser enviadas por correo.</p>
<p>Muy bonito&#8230; muuy bonito.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elbleg.com/actionscript/swfaddress-deep-linking-para-flash.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
