<?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>.:: klr20mg ::. Una dosis diaria de ....</title>
	<atom:link href="http://klr20mg.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://klr20mg.com</link>
	<description>Blog acerca de desarrollo orientado hacia Flash, Flex y Actionscript.</description>
	<lastBuildDate>Wed, 26 May 2010 21:59:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Oferta de empleo: Desarrolladores .NET</title>
		<link>http://klr20mg.com/2010/05/25/oferta-de-empleo-desarrolladores-net/</link>
		<comments>http://klr20mg.com/2010/05/25/oferta-de-empleo-desarrolladores-net/#comments</comments>
		<pubDate>Wed, 26 May 2010 05:42:17 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[Mini-Posts]]></category>

		<guid isPermaLink="false">http://klr20mg.com/?p=550</guid>
		<description><![CDATA[Con esto comenzamos con las ofertas de empleo. Hay diversos puestos para desarrolladores .NET en 3 estados de la República Mexicana, en concreto Monterrey, Aguscalientes y el Distrito Federal. Por el momento esta es toda la información con la que cuento, Si estas interesad@ por favor manda tu CV a noone@tmeister.net y te pongo en [...]]]></description>
			<content:encoded><![CDATA[<div class="info">Con esto comenzamos con las ofertas de empleo.</div>
<p><del datetime="2010-05-26T21:50:09+00:00">Hay diversos puestos para desarrolladores .NET en 3 estados de la República Mexicana, en concreto Monterrey, Aguscalientes y el Distrito Federal.<br />
Por el momento esta es toda la información con la que cuento, Si estas interesad@ por favor manda tu CV a noone@tmeister.net y te pongo en contacto directo con los interesados.<br />
Al decir diversos puestos me refiero a alrededor de 50 puestos disponibles.<br />
</del></p>
<p>UPDATE</p>
<p>Aqui hay mas detalles</p>
<p>Experiencia al menos tres años como <strong>Desarrollador.NET</strong> con los sig conocimientos:</p>
<ol>
<li>Object oriented programming (Advanced)</li>
<li>C# and .Net concepts (framework 2.0 or 3.5)</li>
<li>Web Development</li>
<li>XML &amp; XSL concepts</li>
<li>SQL Server</li>
<li>UML</li>
<li>Development methodology (Agile, XP, CMMI, etc)</li>
</ol>
<p>BILINGÜE (85% Inglés-Español)</p>
<p>DISPONIBILIDAD PARA RADICAR EN <strong>AGUASCALIENTES</strong></p>
<p>VACANTES: 28</p>
<p>El proyecto es indefinido (no tiene fin) y si da buen desempeño el candidato se le da la planta.</p>
<p>Recuerda CV a noone@tmeister.net o directo en twitter <a href="http://twitter.com/tmeister">@tmeister</a></p>
<p>Saludos!</p>
]]></content:encoded>
			<wfw:commentRss>http://klr20mg.com/2010/05/25/oferta-de-empleo-desarrolladores-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GarageFlash: Nueva conferencia onLine</title>
		<link>http://klr20mg.com/2010/03/12/garageflash-nueva-conferencia-online/</link>
		<comments>http://klr20mg.com/2010/03/12/garageflash-nueva-conferencia-online/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 23:44:14 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[#garageflash]]></category>
		<category><![CDATA[#online]]></category>
		<category><![CDATA[adobe]]></category>

		<guid isPermaLink="false">http://klr20mg.com/?p=549</guid>
		<description><![CDATA[@eldervaz y compañia vuelven con una nueva serie de conferencias en linea, estas conferencias seran online el proximo 15 de Marzo, transcribo el post original de Elder en CristaLab. Con motivo de celebrar nuestro paso a ser Adobe Community Champions, Adobe User Group Perú &#8211; GarageFlash, está organizando 8 conferencias onLine este lunes 15 de marzo, que será [...]]]></description>
			<content:encoded><![CDATA[<div class="info"><a href="http://twitter.com/eldervaz">@eldervaz</a> y compañia vuelven con una nueva serie de conferencias en linea, estas conferencias seran online el proximo 15 de Marzo, transcribo el post original de <a href="http://foros.cristalab.com/garageflash-nueva-conferencia-online-t85634/">Elder en CristaLab</a>. <img src='http://klr20mg.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  </div>
<p><img class="alignright" title="GarageFlash" src="http://l4c.me/uploads/garageflash2-1268434937_full550.png" alt="" width="400" height="256" />Con motivo de celebrar nuestro paso a ser <a href="http://www.garageflash.com/somos-adobe-community-champions/" target="_blank">Adobe Community Champions, Adobe User Group Perú &#8211; GarageFlash</a>, está organizando 8 <a href="http://www.cristalab.com/tags/conferencias/" target="_blank">conferencias</a> onLine este <strong>lunes 15 de marzo</strong>, que será vía Adobe Connect, con lo cual sólo tienes que acceder a este <a href="http://www.garageflash.com/somos-adobe-community-champions/" target="_blank">link</a> el día y hora de la charla que quieras escuchar. En esta conferencia relámpago, están participando personalidades de la <a href="http://www.cristalab.com/tags/comunidad/" target="_blank">comunidad</a> de Guatemala, España, México, Argentina, República Dominicana y Perú. Como siempre los temas están muy diversos y realmente interesantes. Además que hay varios <a href="http://www.cristalab.com/tags/cristalab/" target="_blank">clabers</a> que participan.</p>
<p>Aquí está la relación de conferencias y los temas. El horario está en GMT &#8211; 5</p>
<h2>Conferencias onLine</h2>
<p>1pm <strong>Repositorios y buenas practicas de control de versiones</strong><br />
cvander, Christian Van der Henst S. (Guatemala - <a href="http://www.maestrosdelweb.com/" target="_blank">Maestros del web</a>)</p>
<p>2pm <strong>El nuevo Flash Player 10.1</strong><br />
Alberto Gonzalez (México - <a href="http://www.riactive.com/" target="_blank">Riactive</a>)</p>
<p>3pm <strong>Desarrollo para móviles</strong><br />
Maximiliano Firtman (Argentina - <a href="http://www.arfug.com/" target="_blank">ARFUG</a>)</p>
<p>4pm <strong>Novedades Adobe AIR 2.0</strong><br />
<strong>eldervaz</strong> (Perú - <a href="http://www.garageflash.com/" target="_blank">GarageFlash</a>)</p>
<p>5pm <strong>Canales alpha para AE y Flash</strong><br />
<strong>lsosa22</strong>, Luis Sosa (Rep. Dominicana - <a href="http://groups.adobe.com/groups/a094cc5a3b/summary" target="_blank">DRAUG</a>)</p>
<p>6pm <strong>Microsoft Silverligth</strong><br />
Jorge Oblitas (Perú - <a href="http://www.microsoft.com/" target="_blank">Microsoft</a>)</p>
<p>7pm <strong>Jquery UNO</strong><br />
<strong>eporroa</strong> (Perú - <a href="http://www.garageflash.com/" target="_blank">GarageFlash</a>)</p>
<p>8pm <strong>Indexación de sitios full flash</strong><br />
<strong>Zguillez</strong> (España - <a href="http://codigoactionscript.org/" target="_blank">CodigoActionScript</a>)</p>
<p>Muchos se quedaron con ganas de participar en este día, pero por un tema de espacio no se pudo. Pronto haremos más charlas onLine.</p>
]]></content:encoded>
			<wfw:commentRss>http://klr20mg.com/2010/03/12/garageflash-nueva-conferencia-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Air 2.0 Conexi&#243;n IMAP mediante SecureSocket</title>
		<link>http://klr20mg.com/2010/02/26/air-2-0-conexin-imap-mediante-securesocket/</link>
		<comments>http://klr20mg.com/2010/02/26/air-2-0-conexin-imap-mediante-securesocket/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 01:56:24 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[AIR 2.0]]></category>
		<category><![CDATA[FlashBuilder]]></category>

		<guid isPermaLink="false">http://klr20mg.com/?p=546</guid>
		<description><![CDATA[Una de las nuevas características de Adobe Air 2.0 es la conexión a servidores mediante sockets encriptados (SSL). Uno de los servicios mas comunes que utiliza una conexión encriptado son los proveedores de correo usando IMAP. Para este ejemplo vamos a conectarnos al servidor IMAP de Gmail y obtener el numero de mensajes nuevos y [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://klr20mg.com/wp-content/uploads/2010/02/Adobe_Air-logo-8BE840B3A1.gif" alt="" title="Adobe_Air-logo-8BE840B3A1" width="200" height="200" class="alignright size-full wp-image-548" /><br />
Una de las nuevas características de Adobe Air 2.0 es la conexión a servidores mediante sockets encriptados (SSL).</p>
<p>Uno de los servicios mas comunes que utiliza una conexión encriptado son los proveedores de correo usando IMAP.</p>
<p>Para este ejemplo vamos a conectarnos al servidor IMAP de Gmail y obtener el numero de mensajes nuevos y mensajes en total que existen en nuestra cuenta.</p>
<p>Para fines prácticos de este ejemplo necesitamos:</p>
<ul>
<li>Una cuenta de Gmail, <a href="http://mail.google.com/mail/#settings/fwdandpop">con IMAP habilitado</a></li>
<li><a href="http://labs.adobe.com/technologies/flashbuilder4/">FlashBuilder</a></li>
<li><a href="http://labs.adobe.com/technologies/air2/">Adobe AIR 2.0</a></li>
</ul>
<p><span style="font-family: Georgia;">Lo primero es crear una interfaz sencilla en donde se pueda insertar el nombre de usuario, la contraseña, campos de output y un boton para iniciar el proceso.</span></p>
<pre class="brush: xml; light: true;">
	&lt;s:Label x=&quot;10&quot; y=&quot;17&quot; text=&quot;Gmail username:&quot;/&gt;
	&lt;s:Label x=&quot;10&quot; y=&quot;45&quot; text=&quot;Gmail password:&quot;/&gt;
	&lt;s:TextInput y=&quot;10&quot; id=&quot;username_txt&quot; change=&quot;_username = username_txt.text&quot; right=&quot;10&quot; left=&quot;120&quot;/&gt;
	&lt;s:TextInput y=&quot;40&quot; id=&quot;password_txt&quot; change=&quot;_password = password_txt.text&quot; displayAsPassword=&quot;true&quot; right=&quot;10&quot; left=&quot;120&quot;/&gt;
	&lt;s:Button y=&quot;70&quot; label=&quot;Tell me!!&quot; click=&quot;start()&quot; right=&quot;10&quot;/&gt;
	&lt;s:Label x=&quot;10&quot; y=&quot;100&quot; width=&quot;280&quot; id=&quot;result_txt&quot;/&gt;
	&lt;s:TextArea id=&quot;out_txt&quot; editable=&quot;false&quot; right=&quot;10&quot; bottom=&quot;10&quot; top=&quot;130&quot; left=&quot;10&quot;/&gt;
</pre>
<p><span id="more-546"></span></p>
<p>El resultado de esto se ve de esta forma:</p>
<div align="center">
<img src="http://klr20mg.com/wp-content/uploads/2010/02/gmailSSL.png" alt="" title="gmailSSL" width="308" height="280" class="aligncenter size-full wp-image-547" />
</div>
<p>Despues de tener nuestra interfaz vamos a declarar todas la variables y constantes que vamos a necesitar:</p>
<pre class="brush: as3; light: true;">
			/******************************************************************
			 *	Datos de la cuenta (Gmail IMAP)
			 * ***************************************************************/

			private static const INCOMING_SERVER:String = &quot;imap.gmail.com&quot;;
			private static const PORT:int = 993;
			private var _username:String = &quot;&quot;;
			private var _password:String = &quot;&quot;;

			/******************************************************************
			 * Socket &amp;&amp; Stuff
			 * ***************************************************************/ 

			private var _server:Socket;
			private var _buffer:ByteArray;
			private var _action:String;
			private var _totalMessages:String;
			private var _newMessages:String;

			/******************************************************************
			 * Respuestas del servidor (para filtar el contenido)
			 * http://tools.ietf.org/html/draft-gahrns-imap-namespace-00
			 * ****************************************************************/

			private static const CONNECT:String = &quot;*&quot;;
			private static const LOGIN:String = &quot;A002&quot;;
			private static const STATUS:String = &quot;A006&quot;;
			private static const CRLF:String = &quot;\r\n&quot;;
			private var _regSearch:RegExp = RegExp(&quot;\\&quot;+_action+&quot;\\r\\n&quot;);
</pre>
<p>Aqui hay un par de cosas que debo resaltar:</p>
<pre class="brush: as3; light: true;">
			private var _buffer:ByteArray;
</pre>
<p>En esta variable almacenaremos las respuestas que nos envié el servidor.</p>
<pre class="brush: as3; light: true;">
			private var _regSearch:RegExp = RegExp(&quot;\\&quot;+_action+&quot;\\r\\n&quot;);
</pre>
<p>Con esta expresion regular verificaremos si el mensaje que recibimos del servidor es util para nosotros.</p>
<pre class="brush: as3; light: true;">
			private static const CONNECT:String = &quot;*&quot;;
			private static const LOGIN:String = &quot;A002&quot;;
			private static const STATUS:String = &quot;A006&quot;;
</pre>
<p>Estas constantes son los identificadores de los mensajes que se mandan desde y hacia el servidor para saber mas de estos identificadores recomiendo esta lectura <a href="http://tools.ietf.org/html/draft-gahrns-imap-namespace-00">http://tools.ietf.org/html/draft-gahrns-imap-namespace-00</a></p>
<p>Ahora nos queda inicializar nuestro socket y crear los eventos que usaremos para comunicarnos con el servidor</p>
<pre class="brush: as3; light: true;">
				_server = new SecureSocket();
				_server.addEventListener(Event.CONNECT, onConnect);
				_server.addEventListener(Event.CLOSE, onClose);
				_server.addEventListener(ProgressEvent.SOCKET_DATA, onData);
				_server.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
</pre>
<p>El único cambio con respecto a trabajar con Sockets sin encriptar es el constructor de la clase en lugar de usar </p>
<pre class="brush: as3; light: true;">
				_server = new Socket();
</pre>
<p>Ahora debemos utilizar</p>
<pre class="brush: as3; light: true;">
				_server = new SecureSocket();
</pre>
<p>Así de simple; Bien, hemos seteado los listeners para CONNECT, SOCKET_DATA, CLOSE y IO_ERROR vamos a concentranos solamente en SOCKET_DATA que es el evento que se dispara al momento de recibir un mensaje del servidor.</p>
<pre class="brush: as3; light: true;">
			private function onData(e:ProgressEvent):void
			{
				out_txt.text += &quot;Data &quot; + e+&quot;\n&quot;;
				var socket:Socket = e.target as Socket;
				var bufferString:String;
				socket.readBytes(_buffer, _buffer.length, socket.bytesAvailable);
				bufferString = _buffer.toString();
				out_txt.text += &quot;SERVER: &quot; + _buffer.toString()+&quot;\n&quot;;
				if (  bufferString.search( _regSearch ) )
				{
					out_txt.text += &quot;Es una respuesta valida parsea\n&quot;;
					parseResponse();
				}
				cursorManager.removeBusyCursor()
			}
</pre>
<p>En esta función recibimos el evento y tomamos el contenido del mensaje mediante el método readBytes y lo almacenamos en la variable _buffer</p>
<pre class="brush: as3; light: true;">
				socket.readBytes(_buffer, _buffer.length, socket.bytesAvailable);
</pre>
<p>Verificamos que el mensaje corresponda a nuestra petición, en este caso solo usamos 3 peticiones CONNECT, LOGIN, STATUS y si el mensaje es correcto parseamos el contenido.</p>
<p>El primer mensaje que recibimos del servidor es el de conexión</p>
<p><strong>SERVER: * OK Gimap ready for requests from 189.216.40.184 14if7528374pzk.62</strong></p>
<p>Una vez que estemos conectados mandamos nuestras credenciales para que el servidor nos autentique y cambiamos el mensaje a LOGIN indicando que estamos esperando el mensaje de respuesta de la solicitud de logueo.</p>
<pre class="brush: as3; light: true;">
				if ( _action == CONNECT )
				{
					out_txt.text += &quot;Es es tag de conexion manda login\n&quot;;
					_server.writeUTFBytes(LOGIN + &quot; LOGIN &quot; + _username + &quot; &quot; + _password + CRLF);
					_action = LOGIN;
					_server.flush();
					return;
				}
</pre>
<p>Se envia el mensaje y de inmediato recibimos la respuesta del servidor, en caso de login correcto:</p>
<p><strong>A002 OK tmeister@gmail.com authenticated (Success)</strong></p>
<p>Si es incorrecto:</p>
<p><strong>A002 NO [ALERT] Invalid credentials (Failure)</strong></p>
<p>Con esto es muy fácil saber el resultado de la operación, usemos indexOf para saber si la palabra &#8220;OK&#8221; existe</p>
<pre class="brush: as3; light: true;">
				if ( _action == LOGIN )
				{
					out_txt.text += &quot;Es la respuesta del login\n&quot;;
					if( bufferString.indexOf(&quot;OK&quot;) != -1 )
					{
						out_txt.text += &quot;El login es correcto, estamos autenticados - Pedir correos sin leer\n&quot;;
						_action = STATUS;
						_server.writeUTFBytes(STATUS + &quot; STATUS inbox (MESSAGES UNSEEN)&quot; + CRLF);
						_server.flush();
					}else
					{
						out_txt.text += &quot;Ooops!! Las credenciales no son validas.\n&quot;;
						Alert.show(&quot;Ooops!! Las credenciales no son validas.&quot;, &quot;Error&quot;);
						_server.close();
					}
					return;
				}
</pre>
<p>Excelente estamos autenticados, Ahora que? solo nos falta pedir el estatus de la cuenta pidiendo los mensajes totales y los mensajes nuevos de la carpeta Inbox</p>
<pre class="brush: as3; light: true;">
						_server.writeUTFBytes(STATUS + &quot; STATUS inbox (MESSAGES UNSEEN)&quot; + CRLF);
</pre>
<p>El ultimo paso es recibir el mensaje del servidor con la información que pedimos y parsearla, al ser texto solo tenemos que usar indexOf y substring para acceder a lo que nos interesa</p>
<p><strong>STATUS &#8220;inbox&#8221; (MESSAGES 61298 UNSEEN 5)</strong></p>
<pre class="brush: as3; light: true;">
				if( _action == STATUS )
				{
					out_txt.text += &quot;Es la respuesta del Status &quot; + bufferString+&quot;\n&quot;;
					var startSub:int = bufferString.indexOf(&quot;(&quot;);
					var endSub:int = bufferString.indexOf(&quot;)&quot;);
					var message:String = bufferString.substring(startSub+1, endSub);
					var slides:Array = message.split(&quot; &quot;);
					var count:int = 0;
					for each( var slide:String in slides )
					{
						switch( slide )
						{
							case &quot;MESSAGES&quot;:
								_totalMessages = slides[count + 1];
								break;
							case &quot;UNSEEN&quot;:
								_newMessages = slides[count + 1];
								break;
						}
						count++;
					}
					result_txt.text = _newMessages + &quot; mensajes nuevos, de &quot; + _totalMessages + &quot; en total&quot;;
					out_txt.text += _totalMessages;
					out_txt.text += _newMessages;
					_action = null;
					_server.close();
				}
			}
</pre>
<p>Sin duda, lo mas complejo al momento de trabajar con Sockets es saber utilizar e implementar el protocolo de comunicación pero esa ya es otra historia.</p>
<p>Por ultimo les dejo el código completo</p>
<pre class="brush: as3;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:WindowedApplication xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
					   xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
					   xmlns:mx=&quot;library://ns.adobe.com/flex/halo&quot;
					   creationComplete=&quot;init(event)&quot;
					    width=&quot;300&quot; height=&quot;250&quot;&gt;
	&lt;fx:Script&gt;
		&lt;![CDATA[
			import flash.events.Event;
			import flash.events.IOErrorEvent;
			import flash.events.MouseEvent;
			import flash.events.ProgressEvent;
			import flash.net.SecureSocket;
			import flash.net.Socket;
			import flash.utils.ByteArray;

			import mx.controls.Alert;
			import mx.events.FlexEvent;

			private static const INCOMING_SERVER:String = &quot;imap.gmail.com&quot;;
			private static const PORT:int = 993;
			private var _username:String = &quot;&quot;;
			private var _password:String = &quot;&quot;;

			private var _server:Socket;
			private var _buffer:ByteArray;
			private var _action:String;
			private var _totalMessages:String;
			private var _newMessages:String;

			private static const CONNECT:String = &quot;*&quot;;
			private static const LOGIN:String = &quot;A002&quot;;
			private static const STATUS:String = &quot;A006&quot;;
			private static const CRLF:String = &quot;\r\n&quot;;
			private var _regSearch:RegExp = RegExp(&quot;\\&quot;+_action+&quot;\\r\\n&quot;);

			protected function init(event:FlexEvent):void
			{

				_server = new SecureSocket();
				_server.addEventListener(Event.CONNECT, onConnect);
				_server.addEventListener(Event.CLOSE, onClose);
				_server.addEventListener(ProgressEvent.SOCKET_DATA, onData);
				_server.addEventListener(IOErrorEvent.IO_ERROR, onIOError);

				_buffer = new ByteArray()
			}
			private function onConnect(e:Event):void
			{
				out_txt.text += &quot;Conexion establecida &quot; + e.toString()+&quot;\n&quot;;
			}
			private function onClose(e:Event):void
			{
				out_txt.text += &quot;Conexion cerrada &quot; + e+&quot;\n&quot;;
			}
			private function onData(e:ProgressEvent):void
			{
				out_txt.text += &quot;Data &quot; + e+&quot;\n&quot;;
				var socket:Socket = e.target as Socket;
				var bufferString:String;
				socket.readBytes(_buffer, _buffer.length, socket.bytesAvailable);
				bufferString = _buffer.toString();
				out_txt.text += &quot;SERVER: &quot; + _buffer.toString()+&quot;\n&quot;;
				if (  bufferString.search( _regSearch ) )
				{
					out_txt.text += &quot;Es una respuesta valida parsea\n&quot;;
					parseResponse();
				}
				cursorManager.removeBusyCursor()
			}
			private function onIOError(e:IOErrorEvent):void
			{
				out_txt.text += &quot;IOError &quot; + e+&quot;\n&quot;;
			}

			private function parseResponse():void
			{
				var bufferString:String = _buffer.toString();
				_buffer.clear();
				if ( _action == CONNECT )
				{
					out_txt.text += &quot;Es es tag de conexion manda login\n&quot;;
					_server.writeUTFBytes(LOGIN + &quot; LOGIN &quot; + _username + &quot; &quot; + _password + CRLF);
					_action = LOGIN;
					_server.flush();
					return;
				}
				if ( _action == LOGIN )
				{
					out_txt.text += &quot;Es la respuesta del login\n&quot;;
					if( bufferString.indexOf(&quot;OK&quot;) != -1 )
					{
						out_txt.text += &quot;El login es correcto, estamos autenticados - Pedir correos sin leer\n&quot;;
						_action = STATUS;
						_server.writeUTFBytes(STATUS + &quot; STATUS inbox (MESSAGES UNSEEN)&quot; + CRLF);
						_server.flush();
					}else
					{
						out_txt.text += &quot;Ooops!! Las credenciales no son validas.\n&quot;;
						Alert.show(&quot;Ooops!! Las credenciales no son validas.&quot;, &quot;Error&quot;);
						_server.close();
					}
					return;
				}
				if( _action == STATUS )
				{
					out_txt.text += &quot;Es la respuesta del Status &quot; + bufferString+&quot;\n&quot;;
					var startSub:int = bufferString.indexOf(&quot;(&quot;);
					var endSub:int = bufferString.indexOf(&quot;)&quot;);
					var message:String = bufferString.substring(startSub+1, endSub);
					var slides:Array = message.split(&quot; &quot;);
					var count:int = 0;
					for each( var slide:String in slides )
					{
						switch( slide )
						{
							case &quot;MESSAGES&quot;:
								_totalMessages = slides[count + 1];
								break;
							case &quot;UNSEEN&quot;:
								_newMessages = slides[count + 1];
								break;
						}
						count++;
					}
					result_txt.text = _newMessages + &quot; mensajes nuevos, de &quot; + _totalMessages + &quot; en total&quot;;
					out_txt.text += _totalMessages;
					out_txt.text += _newMessages;
					_action = null;
					_server.close();
				}
			}

			private function start():void
			{
				out_txt.text = &quot;iniciando Conexion\n&quot;;
				if( _server != null &amp;&amp; _server.connected )
				{
					_server.close();
				}
				if( _username.length &amp;&amp; _password.length )
				{
					_action = CONNECT;
					_server.connect(INCOMING_SERVER, PORT);
					cursorManager.setBusyCursor();
				}else
				{
					Alert.show(&quot;Escribe tus credenciales..&quot;, &quot;Error&quot;);
				}
			}

		]]&gt;
	&lt;/fx:Script&gt;
	&lt;s:Label x=&quot;10&quot; y=&quot;17&quot; text=&quot;Gmail username:&quot;/&gt;
	&lt;s:Label x=&quot;10&quot; y=&quot;45&quot; text=&quot;Gmail password:&quot;/&gt;
	&lt;s:TextInput y=&quot;10&quot; id=&quot;username_txt&quot; change=&quot;_username = username_txt.text&quot; right=&quot;10&quot; left=&quot;120&quot;/&gt;
	&lt;s:TextInput y=&quot;40&quot; id=&quot;password_txt&quot; change=&quot;_password = password_txt.text&quot; displayAsPassword=&quot;true&quot; right=&quot;10&quot; left=&quot;120&quot;/&gt;
	&lt;s:Button y=&quot;70&quot; label=&quot;Tell me!!&quot; click=&quot;start()&quot; right=&quot;10&quot;/&gt;
	&lt;s:Label x=&quot;10&quot; y=&quot;100&quot; width=&quot;280&quot; id=&quot;result_txt&quot;/&gt;
	&lt;s:TextArea id=&quot;out_txt&quot; editable=&quot;false&quot; right=&quot;10&quot; bottom=&quot;10&quot; top=&quot;130&quot; left=&quot;10&quot;/&gt;
&lt;/s:WindowedApplication&gt;
</pre>
<h1>Descarga</h1>
<div style="width: 200px; margin: 10px; text-align: center">
	<p><a rel="nofollow" title="Download version 0.1 of Gmail-Imap.air" href="http://klr20mg.com/downloads/Gmail-Imap.air"><img src="http://klr20mg.com/wp-content/plugins/drain-hole/images/download.png" alt="download" width="128" height="128"/></a></p>

	<table class="download">
		<tr>
			<th>Download:</th>
			<td><a rel="nofollow" title="Download version 0.1 of Gmail-Imap.air" href="http://klr20mg.com/downloads/Gmail-Imap.air">Gmail-Imap.air</a></td>
		</tr>
		<tr>
			<th>Version:</th>
			<td>0.1</td>
		</tr>
		<tr>
			<th>Updated:</th>
			<td>February 26, 2010</td>
		</tr>
		<tr>
			<th>Size:</th>
			<td>870.16 KB</td>
		</tr>
	</table>
</div>

<p>Espero les sea de ayuda y nos estamos leyendo.</p>
]]></content:encoded>
			<wfw:commentRss>http://klr20mg.com/2010/02/26/air-2-0-conexin-imap-mediante-securesocket/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jBuzz a Google Buzz Widget &#8211; jQuery Plugin</title>
		<link>http://klr20mg.com/2010/02/18/jbuzz-a-google-buzz-widget-jquery-plugin/</link>
		<comments>http://klr20mg.com/2010/02/18/jbuzz-a-google-buzz-widget-jquery-plugin/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 06:33:30 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[jBuzz]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://klr20mg.com/?p=525</guid>
		<description><![CDATA[jBuzz Google Buzz Widget es un plugin de jQuery que te permite agregar tu stream de Google Buzz en tu sitio web. jBuzz Google Buzz Widget es un plugin &#8220;cross browser&#8221; que funciona en los principales navegadores y es muy fácil de implementar en tu sitio web. Puedes cambiar su apariencia mediante CSS y personalizar [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-527" title="landing_preview" src="http://klr20mg.com/wp-content/uploads/2010/02/landing_preview-211x300.png" alt="" width="211" height="300" /></p>
<p><strong>jBuzz Google Buzz Widget </strong>es un plugin de jQuery que te permite agregar tu stream de Google Buzz en tu sitio web.</p>
<p><strong>jBuzz Google Buzz Widget</strong> es un plugin &#8220;cross browser&#8221; que funciona en los principales navegadores y es muy fácil de implementar en tu sitio web. Puedes cambiar su apariencia mediante CSS y personalizar cuantos buzz mostrar utilizando las opciones de configuración.</p>
<p><strong>jBuzz Google Buzz Widget</strong> utiliza el API liberada por Google, obteniendo los buzz mediante ATOM y los muestra en el contenedor de tu sitio web, para evitar problemas de permisos de &#8220;cross-domain&#8221; jBuzz utiliza un proxy creado en php para evitar este problema.</p>
<h1>Modo de uso:</h1>
<ol>
<li>Incluir jQuery, el archivo js del plugin y los CSS.</li>
<li>Crear un DIV contenedor con ID en el cual se creara el Widget</li>
<li>Inicializar el plugin indicando el usuario y cuantos buzz quieres mostrar.</li>
</ol>
<p>Aquí esta el ejemplo del código en una pagina simple.</p>
<pre class="brush: xml;">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;
	&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html&gt;
	&lt;head&gt;
		&lt;meta http-equiv=&quot;Content-type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
		&lt;title&gt;jBuzz jQuery Plugin by Tmeister&lt;/title&gt;
		&lt;link rel=&quot;stylesheet&quot; href=&quot;jBuzz/jBuzz.min.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; title=&quot;jBuzz&quot; charset=&quot;utf-8&quot;&gt;
		&lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
			#jBuzz
			{
				width: 250px;
			}
		&lt;/style&gt;
		&lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot; src=&quot;jquery-1.4.1.min.js&quot; &gt;&lt;/script&gt;
		&lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot; src=&quot;jBuzz/jquery.jBuzz.min.js&quot; &gt;&lt;/script&gt;
		&lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
			$(document).ready(function()
			{
				$('#jBuzz').jBuzz
				({
					user:&quot;tmeister&quot;,
					count:5
				});
			});
		&lt;/script&gt;

	&lt;/head&gt;
	&lt;body id=&quot;index&quot;&gt;
		&lt;div id=&quot;jBuzz&quot;&gt;&lt;/div&gt;
	&lt;/body&gt;
&lt;/html&gt;
</pre>
<p><a class="more-link float-none" title="preview" href="http://tmeister.net/jBuzz" target="_blank">Preview 1</a><a class="more-link float-none" title="preview" href="http://tmeister.net/jBuzz/?user=freddier" target="_blank">Preview 2</a></p>
<h2> English </h2>
<p>jBuzz Google Buzz Widget is a jQuery plugin that allows you to add your Google stream Buzz on your website, is &#8220;cross browser&#8221; runs on all major browsers and is very easy to implement in your website. You can change its appearance using CSS and customize as many buzz display using the configuration options.</p>
<p>Use the API released by Google, getting the buzz through ATOM and displays them in the container of your website, to avoid problems with permissions of &#8220;cross-domain&#8221; jBuzz uses a proxy set up php to avoid this problem.</p>
<p><a class="more-link float-none" href="http://github.com/Tmeister/jBuzz"> Descarga disponible tambien desde http://github.com/Tmeister/jBuzz</a></p>
<h1>Descarga</h1>
<div style="width: 200px; margin: 10px; text-align: center">
	<p><a rel="nofollow" title="Download version 0.1 of jBuzz.zip" href="http://klr20mg.com/downloads/jBuzz.zip"><img src="http://klr20mg.com/wp-content/plugins/drain-hole/images/download.png" alt="download" width="128" height="128"/></a></p>

	<table class="download">
		<tr>
			<th>Download:</th>
			<td><a rel="nofollow" title="Download version 0.1 of jBuzz.zip" href="http://klr20mg.com/downloads/jBuzz.zip">jBuzz.zip</a></td>
		</tr>
		<tr>
			<th>Version:</th>
			<td>0.1</td>
		</tr>
		<tr>
			<th>Updated:</th>
			<td>February 18, 2010</td>
		</tr>
		<tr>
			<th>Size:</th>
			<td>33.22 KB</td>
		</tr>
	</table>
</div>

]]></content:encoded>
			<wfw:commentRss>http://klr20mg.com/2010/02/18/jbuzz-a-google-buzz-widget-jquery-plugin/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Obtener tweets usando PHP &amp; Flex 4 (Gumbo)</title>
		<link>http://klr20mg.com/2009/12/09/obtener-tweets-usando-php-flex-4-gumbo/</link>
		<comments>http://klr20mg.com/2009/12/09/obtener-tweets-usando-php-flex-4-gumbo/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 23:17:49 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[api ejemplo]]></category>

		<guid isPermaLink="false">http://klr20mg.com/?p=512</guid>
		<description><![CDATA[En este ejemplo, ya no muy básico, les mostrare como obtener los últimos tweets de un usuario y mostrarlos en Flex 4 (Gumbo) para ello haremos uso de PHP como gateway, con PHP obtendremos los tweets por medio del API de Twitter y los desplegaremos en forma de XML para poder leerlos en Flex. Este ejemplo esta hecho [...]]]></description>
			<content:encoded><![CDATA[<p>En este <a href="http://klr20mg.com/category/flex-4/">ejemplo</a>, ya no muy básico, les mostrare como obtener los últimos tweets de un usuario y mostrarlos en <a href="http://klr20mg.com/category/flex-4/">Flex 4 (Gumbo)</a> para ello haremos uso de PHP como gateway, con PHP obtendremos los tweets por medio del <a href="http://apiwiki.twitter.com/">API de Twitter</a> y los desplegaremos en forma de XML para poder leerlos en Flex.</p>
<div class="info">Este ejemplo esta hecho con <a href="http://labs.adobe.com/technologies/flashbuilder4/" target="_blank">Flash Builder 4 Beta 2</a> y necesita el <a href="https://www.adobe.com/go/getflashplayer">FlashPlayer 10</a> para poder visualizarlo correctamente</div>
<h1>Ejemplo</h1>
<div>
<object width="600" height="350">
<param name="movie" value="http://klr20mg.com/flex/gumbo/last-tweet/tweets.swf"></param>
<param name="quality" value="high"></param>
<param name="wmode" value="window"></param>
<param name="menu" value="false"></param>
<param name="bgcolor" value="#2a2a2a"></param>
<param name="allowFullScreen" value="true"></param>
<embed type="application/x-shockwave-flash" width="600" height="350" src="http://klr20mg.com/flex/gumbo/last-tweet/tweets.swf" quality="high" bgcolor="#2a2a2a" wmode="window" menu="false" allowFullScreen="true" ></embed>
</object>
</div>
<p>Lo primero que necesitamos es crear el script en PHP para poder conectarnos al <a href="http://apiwiki.twitter.com/">API de Twitter</a>, obtener los tweets y desplegarlos en XML.</p>
<h1>PHP</h1>
<pre class="brush: php;">
&lt;?php
/**
 * get_user_tweets()
 *
 * @param mixed $username
 * @param integer $count
 * @return array $out
 */
function get_user_tweets($username, $count = 10)
{
	/**
	 * URL para obtener los tweets en formato JSON
	 * Utilizaremos curl para hacer la conexion al API de Twitter
	 * */
	$url = 'http://twitter.com/statuses/user_timeline/'.$username.'.json?count='.$count;
	$curl = curl_init();

	/**
	 * Iniciamos CURL pasando que URL vamos a cargar
	 * */
	curl_setopt($curl, CURLOPT_URL, $url);
	/**
	 * Indicamos que querremos el output de regreso
	 * */
	curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
	/**
	 * Ponemos un TimeOut al script
	 */
	curl_setopt ($curl, CURLOPT_CONNECTTIMEOUT, 10);

	/**
	 * Ejecutamos CURL
	 */
	$json = curl_exec($curl);

	/**
	 * Cerramos la conexion
	 */
	curl_close($curl);

	/**
	 * Tomanos el resultado (JSON) y lo parseamos en PHP
	 */
	$tweets = json_decode($json);
	$out;

	/**
	 * Por ultimo por cada tweet tomanos el contenido y lo metemos en un Array
	 */
	foreach($tweets as $tweet)
	{
		$out[] = $tweet-&gt;text;
	}

	return $out;
}

/**
 * Con la informacion obtenida del API construimos un XML y lo mostramos
 */
$out = '&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf8&quot;?&gt;';
$out .= &quot;&lt;tweets&gt;&quot;;
$tweets = get_user_tweets('tmeister', 10);
foreach($tweets as $tweet)
{
	$out .= &quot;&lt;tweet&gt;$tweet&lt;/tweet&gt;&quot;;
}
$out .= &quot;&lt;/tweets&gt;&quot;;
header (&quot;content-type: text/xml&quot;);
echo $out;
?&gt;
</pre>
<p>El resultado del script lo puedes ver en <a href="http://klr20mg.com/flex/gumbo/last-tweet/last.php">http://klr20mg.com/flex/gumbo/last-tweet/last.php</a></p>
<h1>MXML</h1>
<p>Una vez que tenemos el XML solo falta mostrar su contenido en Flex.</p>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:Application
    xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
    xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
    xmlns:mx=&quot;library://ns.adobe.com/flex/halo&quot;
    width=&quot;100%&quot;
    height=&quot;100%&quot;
    creationComplete=&quot;{service.send()}&quot;
    viewSourceURL=&quot;http://klr20mg.com/flex/gumbo/last-tweet/srcview/index.html&quot;
    &gt;

    &lt;fx:Script&gt;
        &lt;![CDATA[
            import mx.collections.ArrayCollection;
            import mx.controls.Alert;
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;

            [Bindable]
            private var _tweets:ArrayCollection;

            protected function service_resultHandler(event:ResultEvent):void
            {

                _tweets = new ArrayCollection();

                for each( var tweet:String in event.result.tweet  )
                {
                    _tweets.addItem(tweet);
                }
            }

            protected function service_faultHandler(event:FaultEvent):void
            {
                Alert.show(event.fault.faultString, &quot;Error&quot;);
            }

        ]]&gt;
    &lt;/fx:Script&gt;

    &lt;fx:Declarations&gt;
        &lt;s:HTTPService
            id=&quot;service&quot;
            result=&quot;service_resultHandler(event)&quot;
            fault=&quot;service_faultHandler(event)&quot;
            url=&quot;http://klr20mg.com/flex/gumbo/last-tweet/last.php&quot;
            showBusyCursor=&quot;true&quot;
            resultFormat=&quot;e4x&quot;
            &gt;
        &lt;/s:HTTPService&gt;
    &lt;/fx:Declarations&gt;

    &lt;mx:VBox verticalCenter=&quot;0&quot; horizontalCenter=&quot;0&quot;&gt;
        &lt;mx:Repeater id=&quot;rep&quot; dataProvider=&quot;{_tweets}&quot;&gt;
            &lt;s:Label text=&quot;{rep.currentItem}&quot; /&gt;
            &lt;mx:HRule width=&quot;100%&quot; /&gt;
        &lt;/mx:Repeater&gt;
    &lt;/mx:VBox&gt;

&lt;/s:Application&gt;
</pre>
<p>Con esto ya podemos mostrar los últimos tweets de un timeline sin necesidad de usar librerias ni de PHP o de ActionScript.</p>
]]></content:encoded>
			<wfw:commentRss>http://klr20mg.com/2009/12/09/obtener-tweets-usando-php-flex-4-gumbo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cambiando el symbolColor en el &#8220;Spark CheckBox&#8221;</title>
		<link>http://klr20mg.com/2009/12/08/cambiando-el-symbolcolor-en-el-spark-checkbox/</link>
		<comments>http://klr20mg.com/2009/12/08/cambiando-el-symbolcolor-en-el-spark-checkbox/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 14:00:20 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[checkbox]]></category>
		<category><![CDATA[Gumbo]]></category>
		<category><![CDATA[spark]]></category>
		<category><![CDATA[symbolColor]]></category>

		<guid isPermaLink="false">http://klr20mg.com/?p=492</guid>
		<description><![CDATA[Este es una entrada de la serie de ejemplos basicos de Flex 4 (Gumbo) En el siguiente ejemplo les mostrare como pueden cambiar el color de la marca de seleccion de un Spark Checkbox en Flex 4, asi como el basecolor de fondo y el texto del label. Este ejemplo esta hecho con Flash Builder [...]]]></description>
			<content:encoded><![CDATA[<p>Este es una entrada de la <a href="http://klr20mg.com/category/flex-4/">serie de ejemplos basicos de Flex 4</a> (Gumbo)</p>
<p>En el siguiente ejemplo les mostrare como pueden cambiar el color de la marca de seleccion de un Spark Checkbox en Flex 4, asi como el <a href="http://klr20mg.com/2009/12/07/cambiando-el-color-de-fondo-del-spark-button" target="_blank">basecolor de fondo</a> y el texto del label.</p>
<div class="info">Este ejemplo esta hecho con <a href="http://labs.adobe.com/technologies/flashbuilder4/" target="_blank">Flash Builder 4 Beta 2</a> y necesita el <a href="https://www.adobe.com/go/getflashplayer">FlashPlayer 10</a> para poder visualizarlo correctamente</div>
<h1>Ejemplo</h1>
<div>
<object width="600" height="200">
<param name="movie" value="http://klr20mg.com/flex/gumbo/checkbox/checkBox.swf"></param>
<param name="quality" value="high"></param>
<param name="wmode" value="window"></param>
<param name="menu" value="false"></param>
<param name="bgcolor" value="#2a2a2a"></param>
<param name="allowFullScreen" value="true"></param>
<embed type="application/x-shockwave-flash" width="600" height="200" src="http://klr20mg.com/flex/gumbo/checkbox/checkBox.swf" quality="high" bgcolor="#2a2a2a" wmode="window" menu="false" allowFullScreen="true" ></embed>
</object>
</div>
<p>Para ello usaremos las propiedades</p>
<ul>
<li>symbolColor</li>
<li><a href="http://klr20mg.com/2009/12/07/cambiando-el-color-de-fondo-del-spark-button">baseColor</a></li>
<li>color</li>
</ul>
<h1>MXML</h1>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:Application
    xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
    xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
    xmlns:mx=&quot;library://ns.adobe.com/flex/halo&quot;
    width=&quot;100%&quot; height=&quot;100%&quot;
 &gt;
   &lt;mx:ApplicationControlBar width=&quot;100%&quot; cornerRadius=&quot;0&quot;&gt;
        &lt;s:Label text=&quot;baseColor:&quot; /&gt;
        &lt;mx:ColorPicker id=&quot;colorPickerBase&quot; selectedColor=&quot;#cccccc&quot; /&gt;
        &lt;s:Label text=&quot;symbolColor:&quot; /&gt;
        &lt;mx:ColorPicker id=&quot;colorPickerSymbol&quot; selectedColor=&quot;#000000&quot; /&gt;
        &lt;s:Label text=&quot;textColor:&quot; /&gt;
        &lt;mx:ColorPicker id=&quot;colorPickerText&quot; selectedColor=&quot;#000000&quot; /&gt;
    &lt;/mx:ApplicationControlBar&gt;

    &lt;s:CheckBox
        label=&quot;Spark CheckBox&quot;
        selected=&quot;true&quot;
        baseColor=&quot;{colorPickerBase.selectedColor}&quot;
        symbolColor=&quot;{colorPickerSymbol.selectedColor}&quot;
        color=&quot;{colorPickerText.selectedColor}&quot;
        horizontalCenter=&quot;0&quot; verticalCenter=&quot;0&quot;
    /&gt;

&lt;/s:Application&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://klr20mg.com/2009/12/08/cambiando-el-symbolcolor-en-el-spark-checkbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cambiando el color de fondo del &#8220;Spark Button&#8221;</title>
		<link>http://klr20mg.com/2009/12/07/cambiando-el-color-de-fondo-del-spark-button/</link>
		<comments>http://klr20mg.com/2009/12/07/cambiando-el-color-de-fondo-del-spark-button/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 21:05:43 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[BaseColor]]></category>
		<category><![CDATA[Button]]></category>
		<category><![CDATA[Ejemplos]]></category>
		<category><![CDATA[Gumbo]]></category>

		<guid isPermaLink="false">http://klr20mg.com/?p=475</guid>
		<description><![CDATA[Con este post comenzare una serie de ejemplos básicos para irnos metiendo a lo nuevo de Flex 4 (aka Gumbo), su nuevo modelo de componentes y nuevas características. En este primer ejemplo mostrare como se puede cambiar el &#8220;baseColor&#8221; o background del componente Spark Button. Antes de continuar cabe resaltar que estos ejemplo estan hechos [...]]]></description>
			<content:encoded><![CDATA[<p>Con este post comenzare una serie de <strong>ejemplos básicos</strong> para irnos metiendo a lo nuevo de Flex 4 (aka Gumbo), su nuevo modelo de componentes y nuevas características.</p>
<p>En este primer ejemplo mostrare como se puede cambiar el &#8220;baseColor&#8221; o background del componente Spark Button.</p>
<div class="info">Antes de continuar cabe resaltar que estos ejemplo estan hechos con <a href="http://labs.adobe.com/technologies/flashbuilder4/" target="_blank">Flash Builder 4 Beta 2</a> y se necesita el <a href="https://www.adobe.com/go/getflashplayer">FlashPlayer 10</a> para poder visualizarlos correctamente</div>
<h1>Ejemplo</h1>
<div>
<object width="600" height="200">
<param name="movie" value="http://klr20mg.com/flex/gumbo/basecolor/baseColor.swf"></param>
<param name="quality" value="high"></param>
<param name="wmode" value="window"></param>
<param name="menu" value="false"></param>
<param name="bgcolor" value="#2a2a2a"></param>
<param name="allowFullScreen" value="true"></param>
<embed type="application/x-shockwave-flash" width="600" height="200" src="http://klr20mg.com/flex/gumbo/basecolor/baseColor.swf" quality="high" bgcolor="#2a2a2a" wmode="window" menu="false" allowFullScreen="true" ></embed>
</object>
</div>
<p>Hay 3 maneras como podemos cambiar el baseColor, usando MXML, Actionscript o CSS.</p>
<h1>MXML</h1>
<p>Este es el source del ejemplo anterior.</p>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;

&lt;s:Application
    xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
    xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
    xmlns:mx=&quot;library://ns.adobe.com/flex/halo&quot;
    width=&quot;100%&quot; height=&quot;100%&quot;
&gt;
    &lt;mx:ApplicationControlBar width=&quot;100%&quot;&gt;
        &lt;s:Label text=&quot;baseColor: &quot; /&gt;
        &lt;mx:ColorPicker id=&quot;colorSelector&quot; selectedColor=&quot;#cccccc&quot; /&gt;
    &lt;/mx:ApplicationControlBar&gt;

    &lt;s:Button
        id=&quot;button&quot;
        baseColor=&quot;{colorSelector.selectedColor}&quot;
        horizontalCenter=&quot;0&quot;
        verticalCenter=&quot;0&quot;
        label=&quot;baseColor&quot;
    /&gt;

&lt;/s:Application&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://klr20mg.com/2009/12/07/cambiando-el-color-de-fondo-del-spark-button/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flex Frameworks</title>
		<link>http://klr20mg.com/2009/11/19/flex-frameworks/</link>
		<comments>http://klr20mg.com/2009/11/19/flex-frameworks/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 04:47:51 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[AMFPHP]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Mate]]></category>
		<category><![CDATA[PureMVC]]></category>

		<guid isPermaLink="false">http://klr20mg.com/?p=471</guid>
		<description><![CDATA[Esta es una excelente recopilación de Frameworks para trabajar con Flash/Flex, las categorías son: MVC frameworks and Dependency Injection Testing frameworks and code coverage Building and Continue Integration Flash 3D Engines Server side libraries/frameworks for Flex El texto introductorio dice: &#8220;Some say that if a technology has a lot of frameworks, then it is a sign of maturity. [...]]]></description>
			<content:encoded><![CDATA[<p>Esta es una excelente <span style="color: #551a8b;"><span style="text-decoration: underline;">recopilación</span></span><a href="http://corlan.org/flex-frameworks/" target="_blank"> </a>de Frameworks para trabajar con Flash/Flex, las categorías son:</p>
<ul>
<li>MVC frameworks and Dependency Injection</li>
<li>Testing frameworks and code coverage</li>
<li>Building and Continue Integration</li>
<li>Flash 3D Engines</li>
<li>Server side libraries/frameworks for Flex</li>
</ul>
<p>El texto introductorio dice:</p>
<blockquote><p><em>&#8220;Some say that if a technology has a lot of frameworks, then it is a sign of maturity. You might argue with that, but still I think it is interesting to know what are the available frameworks in the Flex/Flash world.&#8221;</em></p></blockquote>
<p>La información completa y links la pueden encontrar en el <a href="http://corlan.org/flex-frameworks/" target="_blank">blog de Mihai Corlan</a></p>
<p>Enjoy!</p>
<p>Link : <a href="http://corlan.org/flex-frameworks/" target="_blank">Flex Frameworks</a></p>
]]></content:encoded>
			<wfw:commentRss>http://klr20mg.com/2009/11/19/flex-frameworks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Influxis Latin Flash Tour</title>
		<link>http://klr20mg.com/2009/10/22/adobe-influxis-latin-flash-tour/</link>
		<comments>http://klr20mg.com/2009/10/22/adobe-influxis-latin-flash-tour/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 03:16:56 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://klr20mg.com/?p=455</guid>
		<description><![CDATA[Evento enfocado a todos los entusiastas de la Plataforma Flash en México. Se hablarán de las próximas novedades Flash para iPhone, Flash CS5, Flash Builder, Flash Catalyst y más&#8230; Fecha: 18 de Noviembre 2009. Hora: 9:00 am. a 2:00 pm. Lugar: Universidad Iberoamericana. Dirección: Prolongación Paseo de la Reforma 880, Lomas de Santa Fe, Mexico [...]]]></description>
			<content:encoded><![CDATA[<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;">Evento enfocado a todos los entusiastas de la Plataforma Flash en México. Se hablarán de las próximas novedades Flash para iPhone, Flash CS5, Flash Builder, Flash Catalyst y más&#8230;</p>
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;">
<div align='center'>
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><a title="Sitio del Evento" href="http://latinflashtourmx.eventbrite.com" target="_blank"><img class="aligncenter size-full wp-image-463" title="Sitio del Evento" src="http://klr20mg.com/wp-content/uploads/2009/10/latinflash.jpg" alt="latinflash" width="450" height="130" /></a></p>
</div>
<p><strong>Fecha:</strong> 18 de Noviembre 2009.<br />
<strong>Hora:</strong> 9:00 am. a 2:00 pm.<br />
<strong>Lugar:</strong> Universidad Iberoamericana.<br />
<strong>Dirección:</strong> Prolongación Paseo de la Reforma 880, Lomas de Santa Fe, Mexico D.F.</p>
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><strong>Patrocinado por:</strong></p>
<p><a style="color: #3a3a3a; text-decoration: underline;" href="http://www.adobe.com/" target="_blank">Adobe</a> | <a style="color: #3a3a3a; text-decoration: underline;" href="http://influxis.com/" target="_blank">Influxis</a></p>
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;">
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;">Twitter: <a style="color: #3a3a3a; text-decoration: underline;" href="http://twitter.com/latinflashtour" target="_blank">@latinflashtour</a> hashtag oficial #latinflashtour</p>
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;">
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><span style="text-decoration: underline;">Para ingresar al evento se debe presentar impreso el registro</span></p>
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><strong>Conferencistas Magistrales:</strong></p>
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;">Todos ellos evangelistas de Adobe para la Plataforma Flash.</p>
<ul>
<li>Lee Brimelow (<a style="color: #3a3a3a; text-decoration: underline;" href="http://theflashblog.com/" target="_blank">The Flash Blog</a> &amp; <a style="color: #3a3a3a; text-decoration: underline;" href="http://www.gotoandlearn.com/" target="_blank">GotoAndLearn</a>)</li>
<li>Enrique Duvos (<a style="color: #3a3a3a; text-decoration: underline;" href="http://www.duvos.com/" target="_blank">RIA Excellence</a> &amp; <a style="color: #3a3a3a; text-decoration: underline;" href="http://www.madeinflex.com/" target="_blank">Made In Flex</a>)</li>
<li>Mike Chambers (<a style="color: #3a3a3a; text-decoration: underline;" href="http://www.mikechambers.com/blog/" target="_blank">Mike&#8217;s Blog</a>)</li>
</ul>
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;">Organizadores:</p>
<p style="line-height: normal; padding-top: 0px; padding-right: 0px; padding-bottom: 8px; padding-left: 0px; margin: 0px;"><a style="color: #3a3a3a; text-decoration: underline;" href="http://www.riactive.com/" target="_blank">RIActive</a> | <a style="color: #3a3a3a; text-decoration: underline;" href="http://www.riahispano.org/" target="_blank">RIAhispano</a> | <a style="color: #3a3a3a; text-decoration: underline;" href="http://flashmc.org/">Flash MC</a></p>
]]></content:encoded>
			<wfw:commentRss>http://klr20mg.com/2009/10/22/adobe-influxis-latin-flash-tour/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Mate (Flex Framework)</title>
		<link>http://klr20mg.com/2009/10/14/mate-flex-framework/</link>
		<comments>http://klr20mg.com/2009/10/14/mate-flex-framework/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 05:13:57 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Mate]]></category>

		<guid isPermaLink="false">http://klr20mg.com/?p=449</guid>
		<description><![CDATA[El uso de los frameworks al momento de desarrollar es muy conveniente, ya sea para mejorar la estructura del código, mantener y escalar la aplicación, o simplemente para la reutilización de código. A lo largo del tiempo han existido diversos tipos de frameworks, hablando exclusivamente de Flex podemos nombrar entre otros a: Cairngorn &#8220;el pionero&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>El uso de los frameworks al momento de desarrollar es muy conveniente, ya sea para mejorar la estructura del código, mantener y escalar la aplicación, o simplemente para la reutilización de código.</p>
<p>A lo largo del tiempo han existido diversos tipos de frameworks, hablando exclusivamente de Flex podemos nombrar entre otros a: <a href="http://en.wikipedia.org/wiki/Cairngorm_(Flex_framework)">Cairngorn</a> &#8220;el pionero&#8221; pasando por <a href="http://en.wikipedia.org/wiki/PureMVC">PureMVC </a>o <a href="http://www.swiz.cz/swiz/">Swiz</a>.</p>
<img alt="Mate Framework" src="http://mate.asfusion.com/skins/mate_site/assets/images/banner_mate2.jpg" title="Mate" width="600" height="150" />
<p>En esta ocasión quiero hablar de <a href="http://mate.asfusion.com">Mate</a>, una de las ultimas propuestas y una realmente interesante.</p>
<p><a href="http://mate.asfusion.com">Mate </a>es un framework para flex basado en etiquetas (MXML tags) y manejado por eventos.</p>
<p>La idea general de <a href="http://mate.asfusion.com">Mate</a> es organizar los eventos en una sola locación y a partir de &#8220;Eventhandlers&#8221; controlar la lógica de la aplicación.</p>
<p><a href="http://mate.asfusion.com">Mate</a> es un framework ligero, con una curva de aprendizaje corta y con una flexibilidad amplia.</p>
<p>Sin duda <a href="http://mate.asfusion.com">Mate</a> se ha convertido en mi framework favorito al trabajar con Flex.</p>
<p>En futuros post hare una guia basica de Mate asi que esten atentos al blog. <img src='http://klr20mg.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Links</strong><br />
<a href="http://mate.asfusion.com">Mate (Flex Framework)</a><br />
<a href="http://asfusion.com">ASFusion</a></p>
]]></content:encoded>
			<wfw:commentRss>http://klr20mg.com/2009/10/14/mate-flex-framework/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tweckr, Nuevo proyecto en linea</title>
		<link>http://klr20mg.com/2009/08/05/tweckr-nuevo-proyecto-en-linea/</link>
		<comments>http://klr20mg.com/2009/08/05/tweckr-nuevo-proyecto-en-linea/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 15:44:51 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Tweckr]]></category>

		<guid isPermaLink="false">http://klr20mg.com/?p=445</guid>
		<description><![CDATA[En las ultimas semanas he estado trabajando en un nuevo proyecto llamado Tweckr, el cual es un buscador de imágenes en tiempo real para twitter. El día de hoy fue el lanzamiento oficial de este nuevo proyecto y los invito a que lo visiten y me dejen sus impresiones, comentarios, o sugerencias en el blog [...]]]></description>
			<content:encoded><![CDATA[<p>En las ultimas semanas he estado trabajando en un nuevo proyecto llamado Tweckr, el cual es un buscador de imágenes en tiempo real para twitter.</p>
<p>El día de hoy fue el lanzamiento oficial de este nuevo proyecto y los invito a que lo visiten y me dejen sus impresiones, comentarios, o sugerencias en el <a href="http://blog.tweckr.com/">blog de desarrollo</a> del proyecto donde pueden encontrar los <a href="http://blog.tweckr.com/2009/08/hello-world-tweckr-is-alive/">detalles del lanzamiento</a> .</p>
<p>En verdad agradeceré todo el feedback.</p>
<p>Enlace: <a href="http://tweckr.com/">Tweckr, The eyes of twitter</a><br />
Blog: <a href="http://blog.tweckr.com/">Tweckr, The eyes of twitter &#8211; Dev Blog.</a><br />
Twitter: <a href="http://twitter.com/tweckr">@Tweckr</a></p>
<p>Saludos! <img src='http://klr20mg.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://klr20mg.com/2009/08/05/tweckr-nuevo-proyecto-en-linea/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Consumir Streaming de Twitter usando php</title>
		<link>http://klr20mg.com/2009/07/15/consumir-streaming-de-twitter-usando-php/</link>
		<comments>http://klr20mg.com/2009/07/15/consumir-streaming-de-twitter-usando-php/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 03:16:22 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://klr20mg.com/?p=437</guid>
		<description><![CDATA[He estado jugando en nuevo experimento (ya no los quiero llamar proyectos por que siempre quedan si acabar) alrededor de twitter, tratando de captar la mayor información posible proveniente de los tweets de los usuarios, La recolección de datos  puede ser muy frustrante si utilizamos el API normal que twitter nos ofrece. El en API [...]]]></description>
			<content:encoded><![CDATA[<p>He estado jugando en nuevo experimento (ya no los quiero llamar proyectos por que siempre quedan si acabar) alrededor de twitter, tratando de captar la mayor información posible proveniente de los tweets de los usuarios, La recolección de datos  puede ser muy frustrante si utilizamos el API normal que twitter nos ofrece. El en API normal solo tenemos acceso a los últimos 20 tweets del timeline publico cada minuto, haciendo la recolección de datos insuficiente.</p>
<p>Investigando encontré un API Alpha, <a href="http://apiwiki.twitter.com/Streaming-API-Documentation" target="_blank">Streaming API Documentation</a> lo extraordinario que tiene este API es que al abrir una petición, twitter envía los últimos tweets publicados en tiempo real hasta que la conexión se termine, ya sea por error de conexión o por cualquier otro motivo. Esto nos da acceso a una cantidad enorme de información.</p>
<p>Existen varios <a href="http://apiwiki.twitter.com/Streaming-API-Documentation#Methods" target="_blank">métodos de conexión</a>, de estos métodos, el mas útil para la recolección de información es el spritzer el cual nos da una porción de los últimos tweets del timeline publico y es con este método con el cual haremos el ejemplo de recolección de información.</p>
<p>Para acceder a cualquier método de este API es necesario estar autenticado ya sea con una cuanta valida de usuario de twitter o con credenciales de un &#8220;cliente&#8221; aprobado.</p>
<p>La documentación del API dice.</p>
<blockquote>
<h3>spritzer</h3>
<p>Returns a proportion of all public statuses, suitable for small projects that don&#8217;t require a statistically significant sample. Publicly available.</p>
<p style="border-width: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-size: 13px; font-family: inherit; vertical-align: baseline; line-height: 1.5em; color: #434343;"><strong>URL:</strong> <span style="border-width: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-size: 13px; font-family: 'Courier New'; vertical-align: baseline; line-height: 1.2em;">http://stream.twitter.com/spritzer.</span><em><span style="border-width: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-size: 13px; font-family: 'Courier New'; vertical-align: baseline; line-height: 1.2em;">format</span></em></p>
<p style="border-width: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-size: 13px; font-family: inherit; vertical-align: baseline; line-height: 1.5em; color: #434343;"><strong>Formats</strong>: xml, json</p>
<p style="border-width: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-size: 13px; font-family: inherit; vertical-align: baseline; line-height: 1.5em; color: #434343;"><strong>Method(s):</strong> GET</p>
<p style="border-width: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-size: 13px; font-family: inherit; vertical-align: baseline; line-height: 1.5em; color: #434343;"><strong>Returns:</strong> stream of <a style="border-width: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-size: 13px; font-family: inherit; vertical-align: baseline; color: #114488 ! important;" href="http://apiwiki.twitter.com/REST+API+Documentation#Statuselement">status elements</a></p>
<p style="border-width: 0px; margin: 0px; padding: 0px; font-weight: inherit; font-style: inherit; font-size: 13px; font-family: inherit; vertical-align: baseline; line-height: 1.5em; color: #434343;">
</blockquote>
<p>Con esta información y sabiendo que necesitamos mandar nuestras credenciales el URL de petición queda de la siguiente forma:</p>
<p><strong>http://user:password@stream.twitter.com/spritzer.json.</strong></p>
<p>Esto nos devolverá los tweets conforme van siendo publicados en twitter, bien con esta URL solo nos queda obtenerlos y parsearlos usando PHP, creamos un archivo php llamado &#8220;tweetstream.php&#8221; con el  código que consta de 4 lineas el cual queda así:</p>
<pre class="brush: php;">
$fp = fopen(&quot;http://user:password@stream.twitter.com/spritzer.json&quot;,&quot;r&quot;);
while($data = fgets($fp))
{
        $tweet = json_decode($data);
        echo $tweet-&gt;user-&gt;screen_name . &quot; : &quot; . $tweet-&gt;text . &quot;\n\r&quot;;
}
</pre>
<p>Ahora desde consola solo queda ejecutar el comando:</p>
<pre class="brush: php;">
php tweetstream.php
</pre>
<p>El script se ejecutara hasta que la conexión se pierda o el usuario lo cancele, el resultado de esto es:</p>
<blockquote><p>Kimble09 : Damm I just saw they moved the 10PM news too 11PM here in NY 4 the Wendy Williams Show, that&#8217;s big! ! ! ! ! ! ! !<br />
mariahmedina5 : Tortillas and sour cream! <img src='http://klr20mg.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
PerakExpress : Kes Anwar: Tangguh hingga 2:30 Ptg nanti.<br />
Cait1129 : Have the hourse to myself for a few days starting tomorrow. But probably will be too busy to enjoy it.<br />
mommiekaren : LAKESIDE BISTRO TOMORROW NIGHT AND A EVENING OF WINE AND WIT. SHOULD BE ENJOYABLE.</p></blockquote>
<p>Esta información se puede almacenar de manera simple, ya sea meterla a base de datos o a archivos de texto usando fopen, fwrite, esto ya es cuestión de lo que quieras hacer con ella.</p>
<p>Espero les sea de ayuda.</p>
<p>Saludos! <img src='http://klr20mg.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://klr20mg.com/2009/07/15/consumir-streaming-de-twitter-usando-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adobe en Vivo 2009 en su version onLine</title>
		<link>http://klr20mg.com/2009/07/08/adobe-en-vivo-2009-en-su-version-online/</link>
		<comments>http://klr20mg.com/2009/07/08/adobe-en-vivo-2009-en-su-version-online/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 16:12:04 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Eventos]]></category>

		<guid isPermaLink="false">http://klr20mg.com/?p=432</guid>
		<description><![CDATA[Como ya saben, Adobe en Vivo es una seria de conferencias internacionales que son de forma presencial organizadas por Adobe User Group Perú (Garage Flash), invitando a los expositores a pasar una semana en Perú, dando conferencias gratuitas y talleres privados. Como este evento se hace de forma anual, hemos pensado hacer una versión onLine [...]]]></description>
			<content:encoded><![CDATA[<p>Como ya saben, <a href="http://www.garageflash.com/adobe-en-vivo-version-online-del-14-al-18-de-julio/" target="_blank">Adobe en Vivo</a> es una seria de conferencias internacionales que son de forma presencial organizadas por <a href="http://www.garageflash.com/" target="_blank">Adobe User Group Perú (Garage Flash)</a>, invitando a los expositores a pasar una semana en Perú, dando conferencias gratuitas y talleres privados. Como este evento se hace de forma anual, hemos pensado hacer una versión onLine con 21 conferencistas entre manager, co-manager, lideres de comunidad y de opinión web.</p>
<p><a href="http://klr20mg.com/wp-content/uploads/2009/07/aev_logo.png"><img class="aligncenter size-full wp-image-433" title="aev_logo" src="http://klr20mg.com/wp-content/uploads/2009/07/aev_logo.png" alt="aev_logo" width="272" height="93" /></a></p>
<h2></h2>
<h1>Martes 14</h1>
<p><strong>Realidad Aumentada</strong><br />
Perú &#8211; <a href="http://www.garageflash.com/" target="_blank">Elder Vásquez</a> (eldervaz)</p>
<p><strong>Entrelazado vs progresivo en After Effects</strong><br />
España &#8211; <a href="http://www.adobelabo.com/" target="_blank">Jorge Mochon</a></p>
<p><strong>Contenido dinámico con InDesign</strong><br />
Colombia &#8211; <a href="http://xpert.com.co/" target="_blank">Marlon Ceballos</a></p>
<p><strong>Haciendo la Web más Dinámica con Premiere, Encore y After Effects</strong><br />
Rep.Dominicana &#8211; <a href="http://www.sdq.com.do/" target="_blank">Luis Sosa</a></p>
<h1>Miércoles 15</h1>
<p><strong>Experiencia del Usuario</strong><br />
México &#8211; <a href="http://www.activ.com.mx/" target="_blank">Edgar Parada</a></p>
<p><strong>Coldfusion 9</strong><br />
Ecuador &#8211; <a href="http://www.adobeenvivo.com/" target="_blank">Michael Borbor</a></p>
<p><strong>LiveCycle</strong><br />
Chile &#8211; <a href="http://www.garageflash.com/" target="_blank">Héctor Castro</a></p>
<p><strong>Técnicas de Alto Rendimiento en Sitios Web</strong><br />
Argentina &#8211; <a href="http://groups.adobe.com/groups/93e61be362/summary" target="_blank">Maximiliano R. Firtman</a></p>
<h1>Jueves 16</h1>
<p><strong>AIR vs Flash Player API&#8217;s</strong><br />
España &#8211; <a href="http://www.joangarnet.com/blog" target="_blank">Joan Garnet</a></p>
<p><strong>Trabajo con Adobe BrowserLab</strong><br />
España &#8211; <a href="http://www.dwug.es/" target="_blank">Andres Cayon</a></p>
<p><strong>ActionScript 3.0</strong><br />
México &#8211; <a href="http://www.activ.com.mx/" target="_blank">Alberto Gonzalez</a></p>
<p><strong>Soluciones para real-time applications</strong><br />
Perú &#8211; <a href="http://funciton.com/" target="_blank">Fernando Flórez</a> (fernando)</p>
<h1>Viernes 17</h1>
<p><strong>Mobile Video &#8211; Dandelion Player for Flash Lite</strong><br />
España &#8211; <a href="http://www.blocketpc.com/" target="_blank">Raul Jimenez</a> (elecash)</p>
<p><strong>Juegos en Flash Lite</strong><br />
España &#8211; <a href="http://www.blocketpc.com/" target="_blank">Marcos González</a></p>
<p><strong>Flash Builder 4 &#8211; Data Centric Development</strong><br />
España &#8211; <a href="http://groups.adobe.com/groups/d542f14d2e/summary" target="_blank">David Lopez</a></p>
<p><strong>ADOBE</strong><br />
EEUU &#8211; <a href="http://groups.adobe.com/pages/home" target="_blank">John Koch</a> &#8211; Community Manager<br />
International Developer Relations Manager</p>
<h1>Sábado 18</h1>
<p><strong>Flash Catalyst</strong><br />
España &#8211; <a href="http://groups.adobe.com/groups/3924ff1ac2/summary" target="_blank">Guillermo de la Iglesia</a> (Zguillez)</p>
<p><strong>El impacto de los Medios sociales</strong><br />
Bolivia &#8211; <a href="http://www.aeromental.com/" target="_blank">Daniel Sempértegui</a> (DanielSemper)</p>
<p><strong>Semántica en XHTML</strong><br />
Perú &#8211; <a href="http://aprendiendoweb.com/" target="_blank">Germán Martínez</a></p>
<p><strong>Promete algo útil</strong><br />
Colombia &#8211; <a href="http://foros.cristalab.com/" target="_blank">Freddie Vega</a> (freddie)</p>
<p><strong>Progressive Enhancement</strong><br />
Venezuela &#8211; <a href="http://thefricky.wordpress.com/" target="_blank">César Frick</a> (thefricky)</p>
<p><strong>Equipos Web en el Mundo Real™</strong><br />
Perú &#8211; <a href="http://indexante.com/" target="_blank">César Soplín</a> (cesars)<br />
Esta conferencia será transmitida por Adobe Connect, y para ello solo tienes que ingresar a la dirección web que será publicada el mismo día del evento.<br />
Verifica la fecha y hora de cada charla en:  <a href="http://www.adobenvivo.com/online/" target="_blank">http://www.adobenvivo.com/online/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://klr20mg.com/2009/07/08/adobe-en-vivo-2009-en-su-version-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tweetcoding, Unos meses atrasado, ve el resultado =)</title>
		<link>http://klr20mg.com/2009/07/03/tweetcoding-unos-meses-atrasado-ve-el-resultado/</link>
		<comments>http://klr20mg.com/2009/07/03/tweetcoding-unos-meses-atrasado-ve-el-resultado/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 00:38:16 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://klr20mg.com/?p=418</guid>
		<description><![CDATA[Hace meses @gskinner convoco a un concurso en donde el reto era hacer una pieza de codigo de menos de 140 caracteres que pudiera ser enviado usando un tweet, Obviamente este codigo debe hacer algo XD, en fin hoy despues de extrañar flash (Ultimamente solo estoy haciendo PHP), me puse a jugar y el resultado [...]]]></description>
			<content:encoded><![CDATA[<p>Hace meses <a href="http://twitter.com/gskinner/">@gskinner</a> convoco a un <a href="http://gskinner.com/playpen/tweetcoding.html">concurso</a> en donde el reto era hacer una pieza de codigo de menos de 140 caracteres que pudiera ser enviado usando un tweet, Obviamente este codigo debe hacer algo XD, en fin hoy despues de extrañar flash (Ultimamente solo estoy haciendo PHP), me puse a jugar y el resultado es este.</p>
<p><strong>La forma del dibujo cambia con cada refresh asi actualiza el navegador unas cuantas veces para que veas la diferencia. <img src='http://klr20mg.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> </strong></p>
<p><strong><span id="more-418"></span><br />
</strong></p>
<p>[FLASH]http://klr20mg.com/wp-content/uploads/2009/07/tweet.swf, 400,400[/FLASH]</p>
<p><a href="http://twitter.com/Tmeister/status/2462268077">Aqui encuentran el Tweet original.</a></p>
<p>Y este el codigo completo</p>
<p>[as]</p>
<p>g=graphics;<br />
mt=g.moveTo;<br />
lt=g.lineTo;<br />
ls=g.lineStyle;<br />
m=Math;<br />
r=m.random;<br />
s=m.sin;<br />
i=0;<br />
o={};</p>
<p>function f(e)<br />
{<br />
if(o.k==null){a=3000;c=.1;x=y=200;o.k=r()*20}i-=.2;w=i*s(a*.1);e=i*m.cos(a*.1);g.beginFill(r()*000099,c);g.drawCircle(w,e,7);c+=.0002;a-=o.k<br />
}<br />
addEventListener(&#8220;enterFrame&#8221;,f);</p>
<p>[/as]</p>
<p>Saludos <img src='http://klr20mg.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://klr20mg.com/2009/07/03/tweetcoding-unos-meses-atrasado-ve-el-resultado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google indexa contenido externo de SWFs</title>
		<link>http://klr20mg.com/2009/06/19/google-indexa-contenido-externo-de-swfs/</link>
		<comments>http://klr20mg.com/2009/06/19/google-indexa-contenido-externo-de-swfs/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 19:04:14 +0000</pubDate>
		<dc:creator>Tmeister</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Mini-Posts]]></category>

		<guid isPermaLink="false">http://klr20mg.com/?p=415</guid>
		<description><![CDATA[Google ha hecho el anuncion de que ahora puede indexar informacion externa de los SWF, con informacion externa se refieren a textos que se cargan al vuelo mediante archivos txt, xml, html. Toda la informacion al respecto la pueden encontrar en el anuncio oficial]]></description>
			<content:encoded><![CDATA[<p>Google ha hecho el anuncion de que ahora puede indexar informacion externa de los SWF, con informacion externa se refieren a textos que se cargan al vuelo mediante archivos txt, xml, html.</p>
<p><a href="http://googlewebmastercentral.blogspot.com/2009/06/flash-indexing-with-external-resource.html">Toda la informacion al respecto la pueden encontrar en el anuncio oficial</a></p>
]]></content:encoded>
			<wfw:commentRss>http://klr20mg.com/2009/06/19/google-indexa-contenido-externo-de-swfs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
