Martín Bove Blog! | Otro blog de tecnología…

CAT | AS3

La nueva habilidad de Adobe Air 2 de resolver DNS, puede ayudar en gran a mejorar las operaciones relacionadas con el manejo de redes en nuestras aplicaciones, si a esto le sumamos el manejo de Sockte´s, que es otra de las innovaciones en la versión 2 de Adobe AIR, se puede ver claramente como despunta un potencial interesante en lo que respecta al desarrollo de aplicaciones que hagan uso de los recursos de red, como por ejemplo serian aplicaciones del estilo per2per o inclusive aplicaciones de telefonía Ip.

Veamos un poco más en profundidad que puede hacer Adobe Air con respecto a los DNS.

Para dar soporte a la resolución de DNS, Adobe a integrado una nueva clase llamada:  DNSResolver, que se encuentra en el paquete “flash.net.dns”. Esta clase, resuelve DNS ejecutando un DNS Query estándar, y devolviéndonos una respuesta de los registros en lo que habitualmente se conoce como DNS Records.

Hay muchas clases de DNS Records, pero aquí les detallo cuales son los que Adobe Air 2, va a manejar.

  • A: Los registros A son los que mapean una dirección IPv4 con un hostname. Este registro contiene:  “hostname”, “TTL (Time To Live)” y la dirección “IPv4″.
  • AAAA: Los registros AAA son los que mapean una dirección IPv6 con un hostname. Este registro contiene: “hostname”, “TTL” y la dirección “IPv6″.
  • MX: Los registros MX mapean una lista de servidores de mail con un nombre de domino. Este registro contiene: “hostname”, “TTL”, “exchange server” y preferencias.
  • PTR: Los registros PTR mapean un hostname  con una dirección Ip, en esencia es lo que se conoce como “reverse DNSLookup” . Este registro contiene: “hostname”, “TTL”, y un puntero hacia el host.
  • SRV: Los registros SRV mapean una lista de servicios con un hostname. Este registro contiene: “hostname”, “TTL”, “priority”, “weight”, “port”, y “target domain”

La sintaxis para usar la clase sería la siguiente:

public function DNSResolverExample()
{
//Create the resolver object
var resolver:DNSResolver = new DNSResolver();
resolver.addEventListener( DNSResolverEvent.LOOKUP, lookupComplete );
resolver.addEventListener( ErrorEvent.ERROR, lookupError );

//Look up records
resolver.lookup( "example.com.", ARecord );
resolver.lookup( "example.com", AAAARecord );
resolver.lookup( "example.com", MXRecord );
resolver.lookup( "208.77.188.166", PTRRecord );
resolver.lookup( "_sip._tcp.example.com.", SRVRecord );
}

Para probar un poco esta nueva funcionalidad he realizado esta pequeña aplicación, que aquí pueden ver y más abajo descargar.
nota: Es necesario para compilar está aplicación el SDK de Adobe AIR2 instalado en nuestro entrono de desarrollo, en este post hay un tutorial de como instalarlo.
AIR 2 Ejemplo de uso de DNS

Aquí se puede descargar la aplicación de ejemplo como sus fuentes.
AIR2 Ejemplo DNS

               

feb/10

11

Iterador de Vectores en Flex

Una de las más esperadas adiciones en el Flex 3.4 SDK es la inclusión de la clase Vector.class. Los vectores son en particular especialmente esperados por que proporcionan la seguridad de tipos en tiempo de compilación, que de otra manera no estaría disponible cuando implementábamos cualquier solución personalizada como esta typed collection.

En esencia, los vectores son solo Arrays tipados. Y aunque no son tan robustos o de gran alcance, como lo son sus parientes de  C # o Java, en Flex cumplen con su cometido.

Cuando se sabe en tiempo de diseño que se va a trabajar con una colección de un solo tipo, los vectores pueden  utilizase de igual manera para proveer seguridad de tipos y también para permitir una mejora en el rendimiento comparado con otras colección de Flex.

Recientemente  quise convertir a un buen número de implementaciones de Arrays con tipo en vectores, sin embargo, los Arrays  se estaban  atravesados con el  iterador. Con el fin de reducir la cantidad de código  a  refactoriar en el  cliente,  simplemente puse en marcha un vector con un Iterator específico.

Si usted está familiarizado con el Patrón Iterator en general, y la interfaz Iterator en particular, entonces su uso le resultará muy sencillo. Usted puede utilizar el Iterator para realizar iteraciones estándar en un Vector.
A continuación se muestra un ejemplo de uso típico:

var abc:Vector.<String> = new Vector.<String>(3, true);
abc[0] = "a";
abc[1] = "b";
abc[2] = "c";

var it:Iterator = new VectorIterator( alpha );

while ( it.hasNext() )
{
trace( it.next() );
// a, b, c

}

El uso de un iterador con un vector  asegura que sólo de pueda realizar una búsqueda lineal, lo que resulta útil con vectores que  son Arrays densos. Sin embargo, una consideración debe hacerse cuando se utiliza un Iterator con un vector, la seguridad de tipos  se pierde cuando accedemos al vector a través de iterator.next ().

Por eso yo sugiero solamente utilizar Iterator con vectores para apoyar la compatibilidad hacia atrás solamente.

Los archivos completos de este ejemplo se encuentra para descargar aquí: VectorIterator, VectorIteratorTest

Fuente original: Eric Feminella

               

<< Nuevos Posts

Theme Design by devolux.nh2.me