SyncMate, sincroniza Windows Mobile y Mac
http://www.moviendonos.com/
lunes, 7 de diciembre de 2009
Sincronizar Omnia en un Mac
jueves, 26 de noviembre de 2009
intrinsic class en flex
Flex 1.5 y por consiguiente AS 2.0 define sus class como intrinsic
AS2 OOP: Class Structure
by senocular
Intrinsic Classes
There is yet another type of class for ActionScript 2.0. That's the intrinsic class. This type of class, however, is not really a class. It's more of a set of guidelines for a class. It serves only one purpose - to provide strict date type definitions for pre-existing classes.
Macromedia uses intrinsic classes to define data types for all internal objects and classes defined natively within Flash (you may have seen these in a Classes folder if you've ever dug around in your Flash MX 2004 install directory). These include objects like Array, MovieClip and Math. But when might you use them? That depends. When do you need to define just data typing for classes?
The best and probably the only situation where you personally, as a developer, would physically create an intrinsic class yourself would be if you were using ActionScript 1.0 classes within your ActionScript 2.0-based movie. ActionScript 1.0 classes, as you know, have no strict data typing associated with them. This isn't a horrible thing, but it's not a great thing either. Being the MX 2004 (or later) developer you are, you need those data type definitions to help you maintain efficiency and competency in your project. That's where intrinsic classes come into play.
Lets say you have a great class you made in ActionScript 1.0 that does everything you would ever need for this new project your working on. Only one problem, you're now working in ActionScript 2.0, not ActionScript 1.0. Ok, no problem. You can use ActionScript 1.0 with ActionScript 2.0 seamlessly easily enough. The only thing is, you won't have those amazing data type definitions for your wonderful class. Instead of re-writing your ActionScript 1.0 class completely as a new ActionScript 2.0 class, you can instead just write an intrinsic class that outlines the data types used and have it be applied to your still functional (and still wonderful) ActionScript 1.0 class as its being used within your current project.
[ intrinsic classes are type definitions for existing classes ]
All you would need to do is create a new ActionScript 2.0 class file with the name of your pre-existing class and label it as being intrinsic just as you label the class as being dynamic (it can be both if you want). Within this file, put all your property and methods with proper typing but no definitions. After all, you're avoiding re-writing your class completely, so the definitions themselves are not included.
intrinsic class className {
Here's an example that adds data typing to an ActionScript 1.0 class defined within the main Flash movie.
// in Wonderful.as
intrinsic class Wonderful {
var msg:String;
function doSomethingWonderful(allow:Boolean):Void;
}
// ActionScript 1.0 class in main Flash movie
var Wonderful = function(msg){
this.message = msg;
};
Wonderful.prototype.doSomethingWonderful = function(allow){
if (allow) {
trace(this.message +" is Wonderful!");
}
};
var ItsA:Wonderful = new Wonderful("Life");
ItsA.doSomethingWonderful("yes"); // error: type mismatch
ItsA.doSomethingWonderful(true); // Life is Wonderful!
Try it yourself! (zipped source)
Though the Wonderful class was created in the ActionScript 1.0 style of class definition, the compiler was still able to recognize a type mismatch when attempting to use a string as an argument for doSomethingWonderful. This is thanks to the definitions as specified in the intrinsic class in Wonderful.as.
One thing to be aware of if using intrinsic classes in this manner is that your existing class definitions (constructor functions) need to be defined with the var keyword. Otherwise an error will be generated because it assumes you're actually using the pre-existing intrinsic class and not creating a new definition. This could require some editing of older ActionScript 1.0 classes to correct this. At that point, however, it might not be such a bad idea to simply re-write it in ActionScript 2.0 altogether.
Intrinsic class definitions are also created for the new MX 2004 components. Because this new generation of components can be compiled prior to their use, it means there are no hooks for the Flash compiler to check to make sure you're using the component and its methods right. An intrinsic class gives the compiler the information it needs about the definitions contained within the component so that it can check for proper usage and data typing mismatches when your working with that component in your Flash movie. Though the intrinsic classes are not compiled within the .swc file (they're available in text format), because intrinsic classes only contain definitions without the implementation, the component author's internal code is still kept confidential.
Fte: http://www.kirupa.com/developer/oop2/AS2OOPClassStructure8.htm
AS2 OOP: Class Structure
by senocular
Intrinsic Classes
There is yet another type of class for ActionScript 2.0. That's the intrinsic class. This type of class, however, is not really a class. It's more of a set of guidelines for a class. It serves only one purpose - to provide strict date type definitions for pre-existing classes.
Macromedia uses intrinsic classes to define data types for all internal objects and classes defined natively within Flash (you may have seen these in a Classes folder if you've ever dug around in your Flash MX 2004 install directory). These include objects like Array, MovieClip and Math. But when might you use them? That depends. When do you need to define just data typing for classes?
The best and probably the only situation where you personally, as a developer, would physically create an intrinsic class yourself would be if you were using ActionScript 1.0 classes within your ActionScript 2.0-based movie. ActionScript 1.0 classes, as you know, have no strict data typing associated with them. This isn't a horrible thing, but it's not a great thing either. Being the MX 2004 (or later) developer you are, you need those data type definitions to help you maintain efficiency and competency in your project. That's where intrinsic classes come into play.
Lets say you have a great class you made in ActionScript 1.0 that does everything you would ever need for this new project your working on. Only one problem, you're now working in ActionScript 2.0, not ActionScript 1.0. Ok, no problem. You can use ActionScript 1.0 with ActionScript 2.0 seamlessly easily enough. The only thing is, you won't have those amazing data type definitions for your wonderful class. Instead of re-writing your ActionScript 1.0 class completely as a new ActionScript 2.0 class, you can instead just write an intrinsic class that outlines the data types used and have it be applied to your still functional (and still wonderful) ActionScript 1.0 class as its being used within your current project.
[ intrinsic classes are type definitions for existing classes ]
All you would need to do is create a new ActionScript 2.0 class file with the name of your pre-existing class and label it as being intrinsic just as you label the class as being dynamic (it can be both if you want). Within this file, put all your property and methods with proper typing but no definitions. After all, you're avoiding re-writing your class completely, so the definitions themselves are not included.
intrinsic class className {
Here's an example that adds data typing to an ActionScript 1.0 class defined within the main Flash movie.
// in Wonderful.as
intrinsic class Wonderful {
var msg:String;
function doSomethingWonderful(allow:Boolean):Void;
}
// ActionScript 1.0 class in main Flash movie
var Wonderful = function(msg){
this.message = msg;
};
Wonderful.prototype.doSomethingWonderful = function(allow){
if (allow) {
trace(this.message +" is Wonderful!");
}
};
var ItsA:Wonderful = new Wonderful("Life");
ItsA.doSomethingWonderful("yes"); // error: type mismatch
ItsA.doSomethingWonderful(true); // Life is Wonderful!
Try it yourself! (zipped source)
Though the Wonderful class was created in the ActionScript 1.0 style of class definition, the compiler was still able to recognize a type mismatch when attempting to use a string as an argument for doSomethingWonderful. This is thanks to the definitions as specified in the intrinsic class in Wonderful.as.
One thing to be aware of if using intrinsic classes in this manner is that your existing class definitions (constructor functions) need to be defined with the var keyword. Otherwise an error will be generated because it assumes you're actually using the pre-existing intrinsic class and not creating a new definition. This could require some editing of older ActionScript 1.0 classes to correct this. At that point, however, it might not be such a bad idea to simply re-write it in ActionScript 2.0 altogether.
Intrinsic class definitions are also created for the new MX 2004 components. Because this new generation of components can be compiled prior to their use, it means there are no hooks for the Flash compiler to check to make sure you're using the component and its methods right. An intrinsic class gives the compiler the information it needs about the definitions contained within the component so that it can check for proper usage and data typing mismatches when your working with that component in your Flash movie. Though the intrinsic classes are not compiled within the .swc file (they're available in text format), because intrinsic classes only contain definitions without the implementation, the component author's internal code is still kept confidential.
Fte: http://www.kirupa.com/developer/oop2/AS2OOPClassStructure8.htm
lunes, 23 de noviembre de 2009
Timo y rastreo de emails
Todo en uno, un magnifico post que contiene: un intento de timo de un iphone y además muy bien explicado como rastrear la dirección email.
Iphone 3GS 32gigas Libre Por 300 €
Publicado por Yumbee el Miércoles, 5 Agosto 2009
Meneame
Mandalo por email
Vendo Iphone 3GS 32g Libre Por 300 €. Hola a tod@s esta es la oferta que ofrecía un usuario de ebay por un iphone 3GS de 32G y ademas Libre, para su uso con cualquier compañía Telefónica.
El articulo que hoy editare sale como consecuencia de la edición de esta otra entrada en la que aconsejaba alguna medidas para poder realizar una compra segura por internet; en el anterior Articulo al igual que en este pongo el enlace a el anuncio que da nombre al titulo y al que mande un E-Mail para informarme solo por curiosidad, ya que daba por hecho que se trataba de un “Timo”, por que si no, como nos van a vender un iPhone que por ejemplo su compra en Italia puede tener un valor de 650 o 700€, si no vale mas, por tan solo 300€ y con su Factura.
Bueno, empezamos, el día 03-08-09 envío un E-Mail solicitando información para realizar la compra del iPhone 3Gs.
El día 04-08-09, recibo el siguiente E-Mail por parte del vendedor, Atencion al Texto:
Asunto: RE: eBay anuncios | Has recibido respuesta a tu anuncio [310702]
Fecha: 4 de agosto de 2009 19:28:04 GMT+02:00
Para: benidebian@gmail.com
Hola,
El precio para un iPhone es 300€. También tenemos una oferta promocional:
2 x Iphone 32gb GS = 500€
4 x Iphone 32gb GS = 800€
Todos los iPhones son nueva Version 3GS con GPS, 32GB, nuevos, originales de Apple, libres de operador (puedes utilizar calquier tarjeta sim), vienen con la factura de compra y con un ano garantia. Los iPhones son selladas en su caja original de fábrica, incluidos todos sus accesorios y manuales completos en espanol.
Un Saludo.
Manda “Guevos” (como dicen por hay). La cara que le hecha el “Gacho”, por que si no me creía la primera oferta, esta ya ni te cuento. Pero que “Redaños” tiene el Tío.
Quien en su sano juicio puede creerse que por nada menos que 800€ nos venden !!4 iPhones¡¡ 3GS con 32 gigas, Libre, Precintados, Legales y con Factura.
Como esto huele fatal empiezo a investigar un poco sobre el “Tipo” el cual se hace llamar Francisco Martín Díaz y vive en Valencia. Pues cuando empiezo a rastrear el E-Mail resulta que no esta mandado desde Valencia, si no desde un Pueblecito de Francia.
Aquí ya si tenia sospechas, que por la “Oferta Promocional” desde luego que no tenia ninguna duda de que se trataba de una Estafa, pues ya si que no me creo nada.
Bueno pues nuevamente mando un segundo 2º E-Mail con el siguiente contenido:
hola, me interesaría la oferta de 4×800€ para mi y para otro compañero de trabajo la de 2×500€, por favor contacta conmigo lo antes posible para acordar la forma de pago.
P.D: Me URGE por que es para la empresa, en un futuro compraremos mas.
Pues como es de esperar “Paquito” (como he Bautizado al Supuesto) me manda respuesta a mi correo con las siguientes instrucciones de Pago:
De: francisco84ns@hotmail.com
Asunto: RE: compra iphone
Fecha: 4 de agosto de 2009 23:46:32 GMT+02:00
Para: benidebian@gmail.com
El envío y manipulación tarda 2-3 dias y esta incluido en el precio de venta.
Ofrezco una política del regreso de 3 días con un reembolso total si no eres satisfecho.
El pago se hace a empresa de transporte de una manera segura por Western Union, no contrareembolso.
Si usted quiere comprarlo, enviame un email y te informo con tos los datos para cerar el negocio.
saludos
Valla, con que con Western Union y como no, no se acepta el contrareembolso.
Si encima os fijáis bien, tal como explique en la anterior entrada tanto el primer como este segundo Correo contiene unas faltas de ortografía que para llamarte Francisco Martín Díaz y vivir en Valencia no se comprenden.
NOTA: Esta es una de las señales por la que deberíais de empezar ha sospechar de un vendedor. Las Faltas son ocasionadas por una mala traducción del Texto, repito como anteriormente:
Sin tener ningún tipo de prejuicio contra ninguna persona de cualquier nacionalidad estos Delitos suelen ser cometidos por Extranjeros normalmente residentes fuera de España.
El caso, este “Señor” a cometido muchos de los Fallos que hacen detectar una estafa por Internet, los Fallos en que debemos fijarnos son los siguientes:
1. El Bajísimo Precio por el que se vende el Producto. De verdad Nadie da Duros a Pesetas. Por muy Bonito que te lo “Anuncien”.
2. La dirección de Correos del sujeto siempre corresponde a hotmail, yahoo y en muy contadas ocasiones gmail.
3. Intentan que realicemos el Pago mediante trasferencia por Western Union y en algunos casos por Bancos en Canadá o Estados Unidos.
4. No da ningún Teléfono de Contacto y en caso de darlo comprobaras que no se corresponde con la población indicada o no contestara nadie.
Fijaos siempre en los Pasos indicados y llegareis ha detectar enseguida el Fraude.
Pues nada que el tio me mando los Datos para el Pago:
De: francisco84ns@hotmail.com
Asunto: RE: compra iphone
Fecha: 5 de agosto de 2009 11:27:43 GMT+02:00
Para: benidebian@gmail.com
Hola Amigo,sigues interesado en comprar el cosa, mandame los datos y realizo la proceso.
P.D: Amigo mejor realizar trato entre nosotros, si lo realizamos en Paypal cobraran
comision y el precio es subido. Mejor entre nosotrs conocidos.
Empresa de transporte se llama: MKB EXPRESS y trabaja seguro como escrow.
Esta compañía tiene un servicio seguro para los compradores y los vendedores. Éste son los pasos :
Paso uno:
Voy a dejar el paquete a empresa de transporte con todos los papeles.
Paso dos:
Empresa de trasporte examinará el paquete y comienza la entrega a su direction.
Paso tres:
Empresa de transporte te envia la factura, el numero del paquete, los datos de paquete y los datos de pago en su correo electronico.
Paso quatro:
Luego usted debes enviar el dinero por el nombre de un agnete MATY COURIER EXPRESS por Western Union. (www.westernunion.com)
Paso cinco:
Usted debe confirmar el pago con el codico de la transferencia a empresa de trabsporte, no a me.
Una ves que el pago esta confirmado a empresa de trasporte reciva el paquete a su domicilio.
Paso seis:
Cuando usted reciva el paquete, tienes que firmar para poder cobrar el dinero desde empresa de transporte.
Si te parece todo bien dejame su direction donde tengo que enviar el paquete, su nombre completo, un numero de contacto,y su DNI.
Gracias!
Muy “Profesional” el Pollo, je..je..je., “Que Jodio”. Como detalle, realizo una Búsqueda en Google del primer nombre de la empresa (MKB EXPRESS) y como podéis ver no arroja ningún resultado como empresa de mensajería.
Y casualmente al realizar la Busqueda de la segunda empresa (MATY COURIER EXPRESS) en uno de los resultados se comenta una estafa conseguida.
Y como, comenta que si “Pasamos” de Paypal no pagaremos la comisión. Hay que joderse, si encima va ha ser que es buena “Persona” y mira por nuestra economía. Precisamente es lo que hace, mirar por nuestra economía, !!Nos la quiere Quitar¡¡
Y como no, le mande yo un e-mail diciendo de todo menos guapo, pero se lo mande todo “Colocadito” con sus puntos y comas para que se creyera que era texto normal y lo tradujese para leer los insultos.
Ahora paso a explicaros como podemos rastrear un Correo recibido del que sospechemos. Lo explicare sin muchos Tecnicismos para que cualquiera pueda realizar este seguimiento en caso de necesitarlo:
Lo Primero, recibimos un Correo como el del ejemplo por Gmail o cualquier correoWeb (gmail,hotmail,yahoo..). Nos vamos a la pagina web del proveedor de nuestro correo (en el ejemplo gmail) buscamos y seleccionamos el correo sospechoso, pulsamos y lo Abrimos en otra ventana del navegador.
En el caso de Gmail (en los demás supongo que también) existe una opción que dice: “Mostrar Original”
Imagen 5
Pulsando en la Flecha, nos mostrara el siguiente Menú, elegimos Mostrar original.
Veremos lo siguiente:
Imagen 7
Seleccionamos todo el Texto y lo Copiamos. Ahora con el Texto Copiado nos dirigimos a la siguiente Web, http://www.ip-adress.com.
En la primera imagen vereis una pequeña ventana con vuestro numero de IP, pues nos desplazamos hasta la parte baja de la ventana y fijate en esta imagen:
Imagen 8
Pulsa en “who is Domain” y arriba del todo veras lo siguiente:
Imagen 10
Pues pulsa nuevamente en: “Email Trace” desplazate un poco hacia abajo y veras esta Ventanita:
Imagen 11
Ahora introduce el Texto que copiaste en el paso de Mostrar Original y pulsa en el Botón de : Trace Email Sender, enseguida se nos mostrara la siguiente información:
Imagen 13
Como puedes ver ya tenemos la Localización desde la cual se envío el E-Mail y como podemos comprobar en el ejemplo no se trata de Valencia ¿no?.
Vamos que si te tienen que dar “collejas” desde Valencia al lugar del envío me parece que el cuello se te iba a quedar como el hierro para subir los toldos.
Un Dato muy importante en caso de querer formular una denuncia es la Dirección IP, que es la numeración que sigue este Formato: 172.187.117.33,es como si fuese el D.N.I del equipo desde que se halla cometido un Delito y por la cual el Delincuente podrá ser Localizado.
Si lo que queréis es obtener información sobre el Servidor mediante el cual se conecta la persona que investigáis, fijaos al lado de la Bandera del país y veréis un enlace que dice “Whois” pulsar y desplazaros hasta que en el siguiente Texto localicéis la dirección y el teléfono del Proveedor de Internet, al que podeis llamar directamente y comunicando la IP del “Listo” podrán, si es que quieren tomar medidas.
Imagen 14
Fijaos en la segunda Linea, pone “Abuse” y un numero de Teléfono para reportar alguna incidencia. Se supone que llamando tomaran medidas contra el usuario, pero conociendo a las Compañías, yo no me atrevo a confirmar este dato.
NOTA: Para quien no sepa que es una Dirección Ip, deciros que no existe dos equipos conectados con una misma IP. La IP mostrada en este ejemplo es única de ese Equipo, bueno para los “Puristas” La Ip puede tener tener dos estados:
Dinámica o Fija. Mayormente casi todos nosotros tendremos en un Principio una Ip asignada por nuestro Proveedor de Internet DINAMICA, con lo cual cada cierto tiempo al volver a Desconectarse y Conectarnos esta Cambiara, pero eso no quiere decir que no se pueda Localizar al Delincuente. Por tanto si realizáis este ejemplo NO SALDRA NUNCA EL MISMO NUMERO DE IP en caso de ser distinto el Remitente del Correo.
Pero incluso siendo el Remitente de mi ejemplo si no se ha desconectado de Internet por un Tiempo si mostrara la misma Dirección IP.
Pues nada aquí tenéis una “Segunda Edición” del los consejos para comprar de manera segura por Internet y que mejor explicación que con un caso Real como este.
He mandado a la dirección de Ebay los datos de este vendedor para que investiguen y de ser posible que retiren el anuncio al ser un claro ejemplo de estafa.
Pues nada amig@s, que para mostrar este ejemplo ha sido necesario escribir esta “Tremeda Tochada de Texto”, pero creo que merece la pena leerlo y ponerse un poco mas al Día.
ACTUALIZACION 05-08-09: Hola mirando por internet encontré denuncias de las siguientes Direcciones de Correo de ESTAFADORES TOTALMENTE RECONOCIDOS, asi que si da la casualidad de que sus Mail coinciden con cualquier compra que vallas ha realizar, la ANULES INMEDIATAMENTE:
bb.phonesltd@hotmail.com
currentphone@hotmail.com
hitech.comms@hotmail.com
Wunmiplaza@hotmail.com
artbridge1226@gmail.com
justin68rivera@hotmail.com
cecilia.benita.diaz@hotmail.com
muchasmi@googlemail.com
luis.bernat@hotmail.com
alberto.kruz@mountaineers.com
mrkwnstn8@yahoo.es
mk4ps3@yahoo.es
ofertas_liquidacion@hotmail.com
jcba2.b@hotmail.com
articulos_venta@hotmail.com
UN SALUDO.
PUDIO.
Fte: http://www.iphone.com.es/2009/08/05/iphone-3gs-32gigas-libre-por-300-e/
Iphone 3GS 32gigas Libre Por 300 €
Publicado por Yumbee el Miércoles, 5 Agosto 2009
Meneame
Mandalo por email
Vendo Iphone 3GS 32g Libre Por 300 €. Hola a tod@s esta es la oferta que ofrecía un usuario de ebay por un iphone 3GS de 32G y ademas Libre, para su uso con cualquier compañía Telefónica.
El articulo que hoy editare sale como consecuencia de la edición de esta otra entrada en la que aconsejaba alguna medidas para poder realizar una compra segura por internet; en el anterior Articulo al igual que en este pongo el enlace a el anuncio que da nombre al titulo y al que mande un E-Mail para informarme solo por curiosidad, ya que daba por hecho que se trataba de un “Timo”, por que si no, como nos van a vender un iPhone que por ejemplo su compra en Italia puede tener un valor de 650 o 700€, si no vale mas, por tan solo 300€ y con su Factura.
Bueno, empezamos, el día 03-08-09 envío un E-Mail solicitando información para realizar la compra del iPhone 3Gs.
El día 04-08-09, recibo el siguiente E-Mail por parte del vendedor, Atencion al Texto:
Asunto: RE: eBay anuncios | Has recibido respuesta a tu anuncio [310702]
Fecha: 4 de agosto de 2009 19:28:04 GMT+02:00
Para: benidebian@gmail.com
Hola,
El precio para un iPhone es 300€. También tenemos una oferta promocional:
2 x Iphone 32gb GS = 500€
4 x Iphone 32gb GS = 800€
Todos los iPhones son nueva Version 3GS con GPS, 32GB, nuevos, originales de Apple, libres de operador (puedes utilizar calquier tarjeta sim), vienen con la factura de compra y con un ano garantia. Los iPhones son selladas en su caja original de fábrica, incluidos todos sus accesorios y manuales completos en espanol.
Un Saludo.
Manda “Guevos” (como dicen por hay). La cara que le hecha el “Gacho”, por que si no me creía la primera oferta, esta ya ni te cuento. Pero que “Redaños” tiene el Tío.
Quien en su sano juicio puede creerse que por nada menos que 800€ nos venden !!4 iPhones¡¡ 3GS con 32 gigas, Libre, Precintados, Legales y con Factura.
Como esto huele fatal empiezo a investigar un poco sobre el “Tipo” el cual se hace llamar Francisco Martín Díaz y vive en Valencia. Pues cuando empiezo a rastrear el E-Mail resulta que no esta mandado desde Valencia, si no desde un Pueblecito de Francia.
Aquí ya si tenia sospechas, que por la “Oferta Promocional” desde luego que no tenia ninguna duda de que se trataba de una Estafa, pues ya si que no me creo nada.
Bueno pues nuevamente mando un segundo 2º E-Mail con el siguiente contenido:
hola, me interesaría la oferta de 4×800€ para mi y para otro compañero de trabajo la de 2×500€, por favor contacta conmigo lo antes posible para acordar la forma de pago.
P.D: Me URGE por que es para la empresa, en un futuro compraremos mas.
Pues como es de esperar “Paquito” (como he Bautizado al Supuesto) me manda respuesta a mi correo con las siguientes instrucciones de Pago:
De: francisco84ns@hotmail.com
Asunto: RE: compra iphone
Fecha: 4 de agosto de 2009 23:46:32 GMT+02:00
Para: benidebian@gmail.com
El envío y manipulación tarda 2-3 dias y esta incluido en el precio de venta.
Ofrezco una política del regreso de 3 días con un reembolso total si no eres satisfecho.
El pago se hace a empresa de transporte de una manera segura por Western Union, no contrareembolso.
Si usted quiere comprarlo, enviame un email y te informo con tos los datos para cerar el negocio.
saludos
Valla, con que con Western Union y como no, no se acepta el contrareembolso.
Si encima os fijáis bien, tal como explique en la anterior entrada tanto el primer como este segundo Correo contiene unas faltas de ortografía que para llamarte Francisco Martín Díaz y vivir en Valencia no se comprenden.
NOTA: Esta es una de las señales por la que deberíais de empezar ha sospechar de un vendedor. Las Faltas son ocasionadas por una mala traducción del Texto, repito como anteriormente:
Sin tener ningún tipo de prejuicio contra ninguna persona de cualquier nacionalidad estos Delitos suelen ser cometidos por Extranjeros normalmente residentes fuera de España.
El caso, este “Señor” a cometido muchos de los Fallos que hacen detectar una estafa por Internet, los Fallos en que debemos fijarnos son los siguientes:
1. El Bajísimo Precio por el que se vende el Producto. De verdad Nadie da Duros a Pesetas. Por muy Bonito que te lo “Anuncien”.
2. La dirección de Correos del sujeto siempre corresponde a hotmail, yahoo y en muy contadas ocasiones gmail.
3. Intentan que realicemos el Pago mediante trasferencia por Western Union y en algunos casos por Bancos en Canadá o Estados Unidos.
4. No da ningún Teléfono de Contacto y en caso de darlo comprobaras que no se corresponde con la población indicada o no contestara nadie.
Fijaos siempre en los Pasos indicados y llegareis ha detectar enseguida el Fraude.
Pues nada que el tio me mando los Datos para el Pago:
De: francisco84ns@hotmail.com
Asunto: RE: compra iphone
Fecha: 5 de agosto de 2009 11:27:43 GMT+02:00
Para: benidebian@gmail.com
Hola Amigo,sigues interesado en comprar el cosa, mandame los datos y realizo la proceso.
P.D: Amigo mejor realizar trato entre nosotros, si lo realizamos en Paypal cobraran
comision y el precio es subido. Mejor entre nosotrs conocidos.
Empresa de transporte se llama: MKB EXPRESS y trabaja seguro como escrow.
Esta compañía tiene un servicio seguro para los compradores y los vendedores. Éste son los pasos :
Paso uno:
Voy a dejar el paquete a empresa de transporte con todos los papeles.
Paso dos:
Empresa de trasporte examinará el paquete y comienza la entrega a su direction.
Paso tres:
Empresa de transporte te envia la factura, el numero del paquete, los datos de paquete y los datos de pago en su correo electronico.
Paso quatro:
Luego usted debes enviar el dinero por el nombre de un agnete MATY COURIER EXPRESS por Western Union. (www.westernunion.com)
Paso cinco:
Usted debe confirmar el pago con el codico de la transferencia a empresa de trabsporte, no a me.
Una ves que el pago esta confirmado a empresa de trasporte reciva el paquete a su domicilio.
Paso seis:
Cuando usted reciva el paquete, tienes que firmar para poder cobrar el dinero desde empresa de transporte.
Si te parece todo bien dejame su direction donde tengo que enviar el paquete, su nombre completo, un numero de contacto,y su DNI.
Gracias!
Muy “Profesional” el Pollo, je..je..je., “Que Jodio”. Como detalle, realizo una Búsqueda en Google del primer nombre de la empresa (MKB EXPRESS) y como podéis ver no arroja ningún resultado como empresa de mensajería.
Y casualmente al realizar la Busqueda de la segunda empresa (MATY COURIER EXPRESS) en uno de los resultados se comenta una estafa conseguida.
Y como, comenta que si “Pasamos” de Paypal no pagaremos la comisión. Hay que joderse, si encima va ha ser que es buena “Persona” y mira por nuestra economía. Precisamente es lo que hace, mirar por nuestra economía, !!Nos la quiere Quitar¡¡
Y como no, le mande yo un e-mail diciendo de todo menos guapo, pero se lo mande todo “Colocadito” con sus puntos y comas para que se creyera que era texto normal y lo tradujese para leer los insultos.
Ahora paso a explicaros como podemos rastrear un Correo recibido del que sospechemos. Lo explicare sin muchos Tecnicismos para que cualquiera pueda realizar este seguimiento en caso de necesitarlo:
Lo Primero, recibimos un Correo como el del ejemplo por Gmail o cualquier correoWeb (gmail,hotmail,yahoo..). Nos vamos a la pagina web del proveedor de nuestro correo (en el ejemplo gmail) buscamos y seleccionamos el correo sospechoso, pulsamos y lo Abrimos en otra ventana del navegador.
En el caso de Gmail (en los demás supongo que también) existe una opción que dice: “Mostrar Original”
Imagen 5
Pulsando en la Flecha, nos mostrara el siguiente Menú, elegimos Mostrar original.
Veremos lo siguiente:
Imagen 7
Seleccionamos todo el Texto y lo Copiamos. Ahora con el Texto Copiado nos dirigimos a la siguiente Web, http://www.ip-adress.com.
En la primera imagen vereis una pequeña ventana con vuestro numero de IP, pues nos desplazamos hasta la parte baja de la ventana y fijate en esta imagen:
Imagen 8
Pulsa en “who is Domain” y arriba del todo veras lo siguiente:
Imagen 10
Pues pulsa nuevamente en: “Email Trace” desplazate un poco hacia abajo y veras esta Ventanita:
Imagen 11
Ahora introduce el Texto que copiaste en el paso de Mostrar Original y pulsa en el Botón de : Trace Email Sender, enseguida se nos mostrara la siguiente información:
Imagen 13
Como puedes ver ya tenemos la Localización desde la cual se envío el E-Mail y como podemos comprobar en el ejemplo no se trata de Valencia ¿no?.
Vamos que si te tienen que dar “collejas” desde Valencia al lugar del envío me parece que el cuello se te iba a quedar como el hierro para subir los toldos.
Un Dato muy importante en caso de querer formular una denuncia es la Dirección IP, que es la numeración que sigue este Formato: 172.187.117.33,es como si fuese el D.N.I del equipo desde que se halla cometido un Delito y por la cual el Delincuente podrá ser Localizado.
Si lo que queréis es obtener información sobre el Servidor mediante el cual se conecta la persona que investigáis, fijaos al lado de la Bandera del país y veréis un enlace que dice “Whois” pulsar y desplazaros hasta que en el siguiente Texto localicéis la dirección y el teléfono del Proveedor de Internet, al que podeis llamar directamente y comunicando la IP del “Listo” podrán, si es que quieren tomar medidas.
Imagen 14
Fijaos en la segunda Linea, pone “Abuse” y un numero de Teléfono para reportar alguna incidencia. Se supone que llamando tomaran medidas contra el usuario, pero conociendo a las Compañías, yo no me atrevo a confirmar este dato.
NOTA: Para quien no sepa que es una Dirección Ip, deciros que no existe dos equipos conectados con una misma IP. La IP mostrada en este ejemplo es única de ese Equipo, bueno para los “Puristas” La Ip puede tener tener dos estados:
Dinámica o Fija. Mayormente casi todos nosotros tendremos en un Principio una Ip asignada por nuestro Proveedor de Internet DINAMICA, con lo cual cada cierto tiempo al volver a Desconectarse y Conectarnos esta Cambiara, pero eso no quiere decir que no se pueda Localizar al Delincuente. Por tanto si realizáis este ejemplo NO SALDRA NUNCA EL MISMO NUMERO DE IP en caso de ser distinto el Remitente del Correo.
Pero incluso siendo el Remitente de mi ejemplo si no se ha desconectado de Internet por un Tiempo si mostrara la misma Dirección IP.
Pues nada aquí tenéis una “Segunda Edición” del los consejos para comprar de manera segura por Internet y que mejor explicación que con un caso Real como este.
He mandado a la dirección de Ebay los datos de este vendedor para que investiguen y de ser posible que retiren el anuncio al ser un claro ejemplo de estafa.
Pues nada amig@s, que para mostrar este ejemplo ha sido necesario escribir esta “Tremeda Tochada de Texto”, pero creo que merece la pena leerlo y ponerse un poco mas al Día.
ACTUALIZACION 05-08-09: Hola mirando por internet encontré denuncias de las siguientes Direcciones de Correo de ESTAFADORES TOTALMENTE RECONOCIDOS, asi que si da la casualidad de que sus Mail coinciden con cualquier compra que vallas ha realizar, la ANULES INMEDIATAMENTE:
bb.phonesltd@hotmail.com
currentphone@hotmail.com
hitech.comms@hotmail.com
Wunmiplaza@hotmail.com
artbridge1226@gmail.com
justin68rivera@hotmail.com
cecilia.benita.diaz@hotmail.com
muchasmi@googlemail.com
luis.bernat@hotmail.com
alberto.kruz@mountaineers.com
mrkwnstn8@yahoo.es
mk4ps3@yahoo.es
ofertas_liquidacion@hotmail.com
jcba2.b@hotmail.com
articulos_venta@hotmail.com
UN SALUDO.
PUDIO.
Fte: http://www.iphone.com.es/2009/08/05/iphone-3gs-32gigas-libre-por-300-e/
domingo, 22 de noviembre de 2009
Mate FrameWork para Flex
Enlace a un blog en el que se explica el uso y aparece el link para el Framework Mate, habrá que echarle un vistazo:
http://klr20mg.com/2009/10/14/mate-flex-framework/">http://klr20mg.com/2009/10/14/mate-flex-framework/
Mas enlaces:
http://riahispano.org/?q=content/mate-flex-framework-introduccion
http://klr20mg.com/2009/10/14/mate-flex-framework/">http://klr20mg.com/2009/10/14/mate-flex-framework/
Mas enlaces:
http://riahispano.org/?q=content/mate-flex-framework-introduccion
sábado, 21 de noviembre de 2009
Ofertas y Promociones en la prensa diaria
¿Alguna vez te has preguntado: saldrá hoy con el periodico ese DVD que quiero?
pues en esta página tienes la respuesta:
http://www.promocionesycolecciones.com/dvds-y-libros-hoy-con-tu-periodico/
pues en esta página tienes la respuesta:
http://www.promocionesycolecciones.com/dvds-y-libros-hoy-con-tu-periodico/
martes, 17 de noviembre de 2009
lunes, 16 de noviembre de 2009
Visual Studio 2010 gratis
Descargar Visual Studio 2010 Gratis
Microsoft ha publicado la primera beta pública de Microsoft Visual Studio disponible para descarga directa y válida hasta el 15 de Abril del 2010 de manera completamente gratis.
En esta nueva versión se mantienen todas aquellas funciones que han hecho de Microsoft Visual Studio un IDE con pocos rivales. Tanto la tecnología de autocompletado IntelliSense como la compilación en segundo plano siguen ahí. Pero también hay novedades.Toda la interfaz ha sido rediseñada para que fuese menos recargada que en las versiones anteriores. Y es que una queja frecuente de muchos usuarios de Microsoft Visual Studio ha sido precisamente la cantidad de elementos que distraían más que ayudaban.
El entorno de desarrollo de Microsoft Visual Studio 2010 difiere ligeramente dependiendo del lenguaje elegido. La configuración para C++, por ejemplo, activa atajos de teclado especiales, mientras que el entorno para Visual Basic da más relevancia al diseño de los formularios.
El abanico de lenguajes soportados por Microsoft Visual Studio va desde clásicos como Visual Basic o C++ hasta otros más recientes, como C# y F#. Con Microsoft Visual Studio también puedes diseñar aplicaciones Silverlight, la alternativa de Microsoft a Adobe Flash.
Descargar: http://download.microsoft.com/download/0/0/A/00A46D81-E169-4684-AE61-09E8902C8EA1/vs_proweb.exe
Microsoft ha publicado la primera beta pública de Microsoft Visual Studio disponible para descarga directa y válida hasta el 15 de Abril del 2010 de manera completamente gratis.
En esta nueva versión se mantienen todas aquellas funciones que han hecho de Microsoft Visual Studio un IDE con pocos rivales. Tanto la tecnología de autocompletado IntelliSense como la compilación en segundo plano siguen ahí. Pero también hay novedades.Toda la interfaz ha sido rediseñada para que fuese menos recargada que en las versiones anteriores. Y es que una queja frecuente de muchos usuarios de Microsoft Visual Studio ha sido precisamente la cantidad de elementos que distraían más que ayudaban.
El entorno de desarrollo de Microsoft Visual Studio 2010 difiere ligeramente dependiendo del lenguaje elegido. La configuración para C++, por ejemplo, activa atajos de teclado especiales, mientras que el entorno para Visual Basic da más relevancia al diseño de los formularios.
El abanico de lenguajes soportados por Microsoft Visual Studio va desde clásicos como Visual Basic o C++ hasta otros más recientes, como C# y F#. Con Microsoft Visual Studio también puedes diseñar aplicaciones Silverlight, la alternativa de Microsoft a Adobe Flash.
Descargar: http://download.microsoft.com/download/0/0/A/00A46D81-E169-4684-AE61-09E8902C8EA1/vs_proweb.exe
MegaVideo
Eliminar limite de espera en Megavideo
Megavideo es uno de los mejores alojadores de videos del ultimo tiempo. Pero el gran problema es que cuando estas en el minuto 72 te pide hacerte miembro, y para eso tienes que pagar, para eso te traemos Illimitux permitiendonos saltar la restricción de cualquier pelicula o video.
Illimitux es un complemento para Firefox, para ver peliculas online (http://www.verpeliculashd.com/) sin ninguna restricción, para que puedas estar tranquilo, y no esperar tantos minutos para poder seguir viendo tu serie favorita opelicula.
Este complemento para Firefox es un complemento experimental así que para instalarlo deberás seleccionar primero “Déjame instalar este complemento experimental” en la página de descarga de add-ons para Firefox.
Descargar: Illimitux https://addons.mozilla.org/es-ES/firefox/addon/11037 (vía Marlex http://www.marlexsystems.org/8662-illimitux-videos-megavideo-sin-limite-tiempo/)
Megavideo es uno de los mejores alojadores de videos del ultimo tiempo. Pero el gran problema es que cuando estas en el minuto 72 te pide hacerte miembro, y para eso tienes que pagar, para eso te traemos Illimitux permitiendonos saltar la restricción de cualquier pelicula o video.
Illimitux es un complemento para Firefox, para ver peliculas online (http://www.verpeliculashd.com/) sin ninguna restricción, para que puedas estar tranquilo, y no esperar tantos minutos para poder seguir viendo tu serie favorita opelicula.
Este complemento para Firefox es un complemento experimental así que para instalarlo deberás seleccionar primero “Déjame instalar este complemento experimental” en la página de descarga de add-ons para Firefox.
Descargar: Illimitux https://addons.mozilla.org/es-ES/firefox/addon/11037 (vía Marlex http://www.marlexsystems.org/8662-illimitux-videos-megavideo-sin-limite-tiempo/)
lunes, 26 de octubre de 2009
viernes, 23 de octubre de 2009
P2P en Flex... Gracias a Stratus
Introduction
Peer to Peer (P2P) applications have been around for quite some time now. Adobe Stratus, a recently released service from Adobe in combination with Flash Player 10 provides developers all there is needed to create P2P applications today. In this article, we will cover the following:
* What is Adobe Stratus
* How to get started with Adobe Stratus Service and understanding the Flash Player 10 API classes : NetConnection and NetStream vis-à-vis P2P requirement
* Write a P2P Application (Employee Review Application) using Adobe Stratus and the Flash Player 10 NetConnection and NetStream classes.
What is Adobe Stratus?
With Flash Player 10, Adobe brought in enhancements that make writing P2P applications a reality. Flash Player 10 provides support now for a new protocol called Real Time Message Flow Protocol (RTMFP). This protocol is well suited to creating applications that need to communicate to each other directly. This communication is facilitated via the Adobe Stratus Service which supports the RTMFP protocol and is a rendezvous Hosted Service that facilitates connection between two Flash Player 10 instances.
Once the Flash Player 10 instances are connected to each other, the two applications can continue to talk to each other without going through an intermediate server side.
Adobe has had Flash Media Server (FMS) over the years and recently they have also introduced Adobe Flash Collaboration Services (AFCS), formerly known as Cocomo. FMS currently does not support the RTMFP protocol but future versions of it could. On the other hand, Adobe Stratus in conjunction with the Flash Player 10 APIs does not provide support for full P2P capabilities like relay, shared data models, etc. but depending on the kind of application that you may require, it might just about the fit the requirements of your P2P Application without requiring additional server side architecture.
Getting started with Adobe Stratus
In this section, we will go through all the steps that you need to do in order to setup yourself to develop Adobe Stratus based P2P applications. Along with getting a developer key, setting up your Project settings and understanding the basic classes, we will cover just about enough to help you dive into code.
1. Get a Developer Key
To get started with the Adobe Stratus, you will need to get an Adobe Stratus Developer Key. Visit the Adobe Stratus home page located at http://labs.adobe.com/technologies/stratus/ and click on the link shown below to get your developer key. All you need is to click on the link and register with your Adobe ID.
2. Flash Player and Flex Builder Project Settings
* Flash Player 10 is a must to make use of the P2P features, so make sure that you have Flash Player 10 installed on your system.
* You need to also have Flex Builder 3.0.2 or above. In case you have an older version of Flex Builder 3, you can refer to a detailed article at http://blog.everythingflex.com/2008/05/20/using-flash-player-10-within-flex-builder that will guide you through the steps.
* To compile your project and target Flash Player 10, go to Flex Project Properties and set the value for the Flash Player version to 10.0.0 as shown below. If there is a Flash Player 9 version out there, please change it to the one shown below:
Alt Text
3. Understand the Flash Player 10 classes: NetConnection and NetStream
There are a couple of classes that we need to understand from the flash.net package. They are NetConnection and NetStream. While this is not a tutorial to cover all the details about these classes, we will cover enough here to get going with P2P. Readers looking for more detail should look at the Flash Player 10 documentation for these classes. We have provided the links for that in the Resources section.
NetConnection
* The NetConnection class allows for bi-directional connection between two Flash Player 10 or AIR application instances.
* The first step that you will need to do in your application is to create an instance of the NetConnection object.
* Once you create the instance, you need to call the connect() method on the NetConnection class to connect to the Adobe Stratus Server. The connect() method needs to be provided a single parameter that will contain the URI of the Adobe Stratus Server. The format of the URI is currently required as rtmfp://stratus.adobe.com/DEVELOPER_KEY, where DEVELOPER_KEY is your key for using the Adobe Stratus Service.
* We can listen to NetStatusEvent.NET_STATUS event on the NetConnection object. Several information codes are returned in the NET_STATUS event, primarily NetConnection.Connect.Success (if all is well) and NetConnection.Connect.Failed(if connection has failed due to reasons like incorrect developer key, network issue, etc).
* Once a connection is successfully established i.e. NetConnection.Connect.Success, we can retrieve our Peer Id (a unique 256-bit key) using the nearID attribute. Then we can start sending and receiving messages from other Flash Player 10 instances. This is done through the NetStream class that we cover next.
NetStream
* The NetStream class allows for one-way streaming connection between two Flash Player 10 or AIR application instances. The NetStream object is a channel that you have created within a NetConnection object.
* To publish a channel, call the publish() method of the NetStream class. The publish method takes a single parameter i.e. the channel name.
* To subscribe to a published stream and receive data, using NetStream.play(). The play() method takes a single parameter i.e. the channel name.
* To send a message to another Flash Player instance, send() method to send text messages to all subscribed clients. The send() method takes two parameters, the handler name (callback method) that will be invoked on receiving the message. The second parameter is the message that is sent.
4. Basic Flow of P2P communication using Stratus and NetConnection/NetStream
High Level steps that allow an application to engage in P2P communication using Stratus and NetConnection/NetStream classes is given below:
1. Create a NetConnection object and connect to the Adobe Stratus using the connect() method.
2. On successful connect to the Adobe Stratus Service, create a publishing stream (NetStream instance) and start the publishing stream by invoking the publish() method
3. To connect to a publishing stream i.e. to subscribe to a stream being published, create a receiving stream (another NetStream instance) by using the Peer ID of the application you wish to connect to.
4. To start receiving the stream, invoke the play() method on the receiving Stream created above.
5. To send messages to another application, invoke the send() method on the publishing stream.
6. Implement callback methods that will be invoked when a message is received from a Peer (Note that Peer used the send() method in the above step). The callback method will most likely contain your Application Logic i.e. actions that needs to be executed on receiving a message.
Sample P2P Application : Employee Review
The Employee Review application is a simple proof of concept application to apply what we have covered so far. It is not a full proof application and is used to simply demonstrate the power of Adobe Stratus and P2P features of Flash Player and how you can achieve that with few lines of code.
The Employee Review application is an application where a manager asks an employee for his feedback on employees. Once the initial connections and Peer Ids are exchanged, the Manager sends across the employee detail to the Peer. The Peer sees the Employee Record and fills out a simple form giving his rating for the particular employee in several areas. Once he has completed this, he sends the data across to the Manager who receives it. Except for the initial process of getting a Peer Id, the rest of the operations are happening directly between the two Flash Player instances.
Let us first understand how to run the application. Remember that for any real application, you will need an external service that will not only validate the users and their roles but also maintain the Peer Ids and allow them to view which Peers are online, etc. For the purposes of this article, we will keep it simple and directly feed in the Peer Ids that we wish to connect to.
To run the application, run two instances of the Flex Application. Shown below is the first instance:
Alt Text
Let us make this instance the Manager. Enter admin as the user name and click on Connect. This will connect to the Adobe Stratus Service and get a Peer ID. On successful connection, the Peer ID obtained is highlighted below for your reference:
Alt Text
Launch another instance of the Application. This time enter any name other than admin (enter 'user') in the username field. Note that we are intentionally doing this here to keep things simple but in the real world, you will need an authentication service. Click on Connect, you will see the user getting a Peer ID too as shown below:
Alt Text
The next step will be to connect each of them to the other. To do this, simply paste the My Peer Id of the other in the Other Peer Id field and click on Peer Connect button. Do this for both the applications, each time copying and pasting the Peer Id of the other application into the current applications' Other Peer Id field. The screenshots for the admin and user application are shown below respectively:
This is the Admin application screen:
Alt Text
And this is the User application screen:
Alt Text
You will see a common chat window for both the applications, where you can enter some messages and see it appearing on the other side. The admin user will have an Employee List, whereas the user will have a review form that is currently empty and not populated with any employee data.
To do the review, follow these steps:
1. For the admin user, click on the Load Employee Data button. This will populate the grid with some dummy employee data. Ideally this is fetched too from an external system.
Alt Text
2. Select any Employee Record and click on Send Review Form button. This will send the Employee Record data across to the other Peer. In our case, we selected the first Record (Jack Sparrow) and clicked on the Send Review Form button.
3. Switch to the user application, you will see that the Employee Details are populated. You can now select ratings for different performance criteria, give any additional comments and click on Send button.
Alt Text
4. Switch to the admin application, you will find that the completed review has reached the admin application with the summary of details. The grid is also updated for the Rating column with the cumulative ratings provided by the peer.
Alt Text
All this action has happened directly between the Flash Player 10 instances without any intermediate server layer. The only server layer is the connection to the Adobe Stratus Service for the Peer Id. The connection to the Stratus Service is maintained by the application via the NetConnection classes internally for you.
Now, that you saw how it works, let us look at the code by visiting the key areas:
1. Connecting to the Stratus Service and starting to publish a stream
The first step that we need to do is to make a connection to the Adobe Stratus Service and get our Peer ID. The Peer Id is a unique 256-bit key that is provided to you. To connect to the Adobe Stratus Service, we need a couple of things: the RTMFP endpoint of the Adobe Stratus Service and your Developer Key. Shown below the function that is invoked when you click on the Connect button.
private function connectToStratus(event:Event):void {
netConnection = new NetConnection();
netConnection.addEventListener(NetStatusEvent.NET_STATUS,onStratusConnect);
netConnection.connect(StratusAddress + "/" + DeveloperKey);
}
As listed above, we create an instance of the flash.net.NetConnection object using the no-args constructor. We can trap events from the NetConnection object by listening for the NetStatusEvent.NET_STATUS events, which we will see in a while. We then connect to the service using the connect method, where we provide the RTMFP end point and our Developer Key. The format is as follows: rtmfp://stratus.adobe.com/Your_Developer_Key. The Adobe Stratus Service address is defined in our source code file as follows:
private const StratusAddress:String = rtmfp://stratus.adobe.com;
Since we are listening to the NetStatusEvent.NET_STATUS event, we can get notified if the connection was successful or not. If the connection is successful, we get a NetConnection.Connect.Success code as shown in the code below. There are other codes returned too like NetConnection.Connect.Failed if there was a problem due to network connectivity, incorrect developer key, etc.
private function onStratusConnect(event:NetStatusEvent):void {
trace(event.info.code);
if (event.info.code == "NetConnection.Connect.Success") {
txtMyPeerId.text = netConnection.nearID;
//Create a NetStream for sending
sendStream = new NetStream(netConnection,NetStream.DIRECT_CONNECTIONS);
sendStream.addEventListener(NetStatusEvent.NET_STATUS,onSendStreamHandler);
sendStream.publish("mystream");
}
}
In the code above, we do some important stuff.
* If the connection is successful, the Stratus Service returns us a unique 256-bit key, which is our Peer Id. Your Peer Id is populated in the nearID field of your netConnection object. This Peer Id is how other applications will connect to us. So what we are doing at this point in time is simply displaying the Peer ID in the My Peer Id text box. This is then copied manually into the other applications Other Peer Id text field as we saw when we ran the example.
* Since we are now connected to the Adobe Stratus Service and have a Peer Id, we can start publishing a stream. Remember that streams are one-way only, hence we will have one stream for publishing and another one for subscribing. In this case, we create a publishing stream called sendStream. When creating a publishing stream, all you need is the NetConnection which you pass as the first parameter to the constructor. The second parameter is specific to Flash Player 10 and it indicates that you will allow Direct connections to be made to this Flash Player instance.
* Finally, to start publishing, we call the publish method on the sendStream object. The publish method takes a channel name, which can be any name. Our channel name here is called mystream. This will be the same channel name on which the other peer will subscribe and get data.
2. Subscribing to a Stream
To get data from another Peer, we need to do the following:
1. Create a subscription stream by connecting to the Peer.
2. Subscribe to the Channel published by the Peer
Let us look at how this is done by going through the code:
private function connectToPeer(event:Event):void {
recStream = new NetStream(netConnection,txtOtherPeerId.text);
recStream.addEventListener(NetStatusEvent.NET_STATUS,onReceiveStreamHandler);
recStream.play("mystream");
recStream.client = this;
}
private function onSendStreamHandler(event:NetStatusEvent):void {
trace(event.info.code);
}
* The connectToPeer() method is called when you click on the Peer Connect button in the application. What it does first is to create a new NetStream object. This NetStream object called recStream (Receiving Stream) and is created slightly different than the publishing stream (sendStream object) that we created earlier. The first parameter of the constructor is the same i.e. it requires the NetConnection object. Since we are interested in establishing connection to the other Peer here, we need to provide the Peer Id of the other application. This value is obtained from the text field Other Peer Id, which you manually copied from the other application. In a real world application, then would be obtained from some external service.
* To start subscribing, simply call the play() method of the NetStream object. The parameter to pass in here is the channel name that we are interested in subscribing to. This channel name is the same one on which the other peer will be publishing.
* We add an Event Listener here on the Stream to catch the NET_STATUS events. If the NetStream has started playing successfully i.e. it has subscribed successfully, then it gives a NetStream.Play.Start code, in which case we simply call the showWorkArea method. This method (not listed below) shows a list of Employees if the user is admin or else it shows the Review Form.
* Finally and most importantly, we set the client attribute of the receiving stream to the current instance. This is required so that when the publishing stream sends a message to your receiving stream, it will need to know where it can find the handlers for the receiving message. This will become clear in the next section.
3. Sending messages to each other
To send a message to the Peer, you need to invoke the send() method of the NetStream class. In our case the Netstream class object that we will be using is the sendStream object that we created earlier. The send() method requires two parameters. The first one is the handler (in other words the method) that will be invoked on the receivingStream Flash Player instance. And the second is the message Object. The message object can be any class that you wish to send across.
Let us first look at the basic chat messages since that is the simplest. When you enter any chat message and click on the Send button, we call the sendChatMessage() method which is shown below. This method invokes the send() method on the sendStream. The first parameter is the name of the method i.e. the handler which will be invoked on the receiving application. The second parameter is our chat message text. So, we have an equivalent method called the receiveChatMessage() which will be invoked in the receiving application. The method will be invoked automatically and the message will be passed in its second parameter. We simply extract it out and append it to our chat window.
private function sendChatMessage():void {
sendStream.send("receiveChatMessage",txtMsg.text);
}
public function receiveChatMessage(msg:String):void {
txtChatMessages.text += "\n" + msg;
}
Now, things should get clear on how to send the review form across and receive the feedback too. The Admin user selects a particular Employee Record and clicks on the Send Review Form button. We invoke the sendReviewForm() method shown below. It simply retrieves the currently selected row from the datagrid and calls the send() method passing the handler name receiveNewReview and the selected row as the second parameter.
private function sendReviewForm():void {
var obj:Object = dgEmployees.selectedItem;
sendStream.send("receiveNewReview",obj);
}
In the handler receiveNewReview() shown below, we simply extract out the person object that has been passed and initialize the ratings fields.
public function receiveNewReview(person:Object):void {
//Set the Form
empid.text = person.empid;
fname.text = person.fname;
lname.text = person.lname;
//Initialize the Ratings
cbCustomerInteraction.selectedIndex = 0;
cbPeerFeedback.selectedIndex = 0;
cbTechKnowledge.selectedIndex = 0;
cbTimeliness.selectedIndex = 0;
//Clear the Comments if any
txtComments.text = "";
}
In the user application, once we are done with entering the review details, we click on the Send button of the Review form. This will invoke the sendCompletedReview() method as shown below. The function builds the object and calls the send() method on its sendStream. The first parameter in the send() method is the handler name receiveCompletedReview and the second parameter is the completed review object.
public function sendCompletedReview():void {
var review:Object = new Object();
review.empid = empid.text;
review.fname = fname.text;
review.lname = lname.text;
review.rating_CustomerInteraction = cbCustomerInteraction.selectedLabel;
review.rating_TechKnowledge = cbTechKnowledge.selectedLabel;
review.rating_Timeliness = cbTimeliness.selectedLabel;
review.rating_PeerFeedback = cbPeerFeedback.selectedLabel;
review.comments = txtComments.text;
sendStream.send("receiveCompletedReview",review);
}
In the handler receiveCompletainedReview() shown below, we simply extract out the completed review object that has been passed and populate the Last Review Summary TextBox along with a cumulative score for the rating column in the datagrid for the particular employee.
public function receiveCompletedReview(review:Object):void {
//Set the Last Review
txtLastReview.text = "";
txtLastReview.text = "Received Review for Emp ID: " + review.empid + " -- " + review.fname + " " + review.lname;
txtLastReview.text += "\n" + "Technical Knowledge Rating : " + review.rating_TechKnowledge;
txtLastReview.text += "\n" + "Customer Interaction Rating : " + review.rating_CustomerInteraction;
txtLastReview.text += "\n" + "Timeliness Rating : " + review.rating_Timeliness;
txtLastReview.text += "\n" + "Peer Feedback Rating : " + review.rating_PeerFeedback;
txtLastReview.text += "\n" + "Comments : " + review.comments;
var rating:Number = Number(review.rating_TechKnowledge) + Number(review.rating_CustomerInteraction) + Number(review.rating_Timeliness) + Number(review.rating_PeerFeedback);
txtLastReview.text += "\n" + "Total Score : " + rating;
//Set the Rating in the dgEmployees Grid also
for (var i:int = 0; i< dpEmployeeData.length;i++) {
var empRecord: Object = dpEmployeeData.getItemAt(i);
if (empRecord.empid == review.empid) {
empRecord.rating = rating;
break;
}
}
dpEmployeeData.refresh();
}
Additional Notes
* The entire Flex Project is available for download. To compile it successfully, you will need to replace the Developer Key in the file EmployeeReview.mxml with your own Developer Key. The link to get a Stratus Key is given in the resources section.
* The application demonstrated here is not complete in all respects vis-à-vis making sure that no more than one peer can connect, enabling/disabling buttons depending on the functionality, etc. To Accept and Reject Peer Connections, there is an onPeerConnect function that can be written by the developer which will allow or reject the Peer connection depending on your application logic. For more information, refer to the Flash Player 10 NetConnection and NetStream documentation that is listed in the references.
* Once the two Peers are connected to each other, they can communicate to each other without going through an intermediate server layer. In other words they communicate directly over the network but still need to be connected to the Adobe Stratus Service. The understanding is that this is not too expensive to the application but it is required.
Adobe Stratus Resources
* Adobe Labs page for Stratus
* Stratus Developer Key Registration
* Adobe DevNet Article : Stratus service for developing end-to-end applications using RTMFP in Flash Player
* Sample Video Phone Application from Adobe
* Flash Player 10 NetConnection class documentation
* Flash Player 10 NetStream class documentation
Source Code
StratusSample.zip
Read more from Romin Irani. Romin Irani's Atom feed iromin on Twitter
Fte: http://www.insideria.com/2009/07/getting-started-with-adobe-str.html
Peer to Peer (P2P) applications have been around for quite some time now. Adobe Stratus, a recently released service from Adobe in combination with Flash Player 10 provides developers all there is needed to create P2P applications today. In this article, we will cover the following:
* What is Adobe Stratus
* How to get started with Adobe Stratus Service and understanding the Flash Player 10 API classes : NetConnection and NetStream vis-à-vis P2P requirement
* Write a P2P Application (Employee Review Application) using Adobe Stratus and the Flash Player 10 NetConnection and NetStream classes.
What is Adobe Stratus?
With Flash Player 10, Adobe brought in enhancements that make writing P2P applications a reality. Flash Player 10 provides support now for a new protocol called Real Time Message Flow Protocol (RTMFP). This protocol is well suited to creating applications that need to communicate to each other directly. This communication is facilitated via the Adobe Stratus Service which supports the RTMFP protocol and is a rendezvous Hosted Service that facilitates connection between two Flash Player 10 instances.
Once the Flash Player 10 instances are connected to each other, the two applications can continue to talk to each other without going through an intermediate server side.
Adobe has had Flash Media Server (FMS) over the years and recently they have also introduced Adobe Flash Collaboration Services (AFCS), formerly known as Cocomo. FMS currently does not support the RTMFP protocol but future versions of it could. On the other hand, Adobe Stratus in conjunction with the Flash Player 10 APIs does not provide support for full P2P capabilities like relay, shared data models, etc. but depending on the kind of application that you may require, it might just about the fit the requirements of your P2P Application without requiring additional server side architecture.
Getting started with Adobe Stratus
In this section, we will go through all the steps that you need to do in order to setup yourself to develop Adobe Stratus based P2P applications. Along with getting a developer key, setting up your Project settings and understanding the basic classes, we will cover just about enough to help you dive into code.
1. Get a Developer Key
To get started with the Adobe Stratus, you will need to get an Adobe Stratus Developer Key. Visit the Adobe Stratus home page located at http://labs.adobe.com/technologies/stratus/ and click on the link shown below to get your developer key. All you need is to click on the link and register with your Adobe ID.
2. Flash Player and Flex Builder Project Settings
* Flash Player 10 is a must to make use of the P2P features, so make sure that you have Flash Player 10 installed on your system.
* You need to also have Flex Builder 3.0.2 or above. In case you have an older version of Flex Builder 3, you can refer to a detailed article at http://blog.everythingflex.com/2008/05/20/using-flash-player-10-within-flex-builder that will guide you through the steps.
* To compile your project and target Flash Player 10, go to Flex Project Properties and set the value for the Flash Player version to 10.0.0 as shown below. If there is a Flash Player 9 version out there, please change it to the one shown below:
Alt Text
3. Understand the Flash Player 10 classes: NetConnection and NetStream
There are a couple of classes that we need to understand from the flash.net package. They are NetConnection and NetStream. While this is not a tutorial to cover all the details about these classes, we will cover enough here to get going with P2P. Readers looking for more detail should look at the Flash Player 10 documentation for these classes. We have provided the links for that in the Resources section.
NetConnection
* The NetConnection class allows for bi-directional connection between two Flash Player 10 or AIR application instances.
* The first step that you will need to do in your application is to create an instance of the NetConnection object.
* Once you create the instance, you need to call the connect() method on the NetConnection class to connect to the Adobe Stratus Server. The connect() method needs to be provided a single parameter that will contain the URI of the Adobe Stratus Server. The format of the URI is currently required as rtmfp://stratus.adobe.com/DEVELOPER_KEY, where DEVELOPER_KEY is your key for using the Adobe Stratus Service.
* We can listen to NetStatusEvent.NET_STATUS event on the NetConnection object. Several information codes are returned in the NET_STATUS event, primarily NetConnection.Connect.Success (if all is well) and NetConnection.Connect.Failed(if connection has failed due to reasons like incorrect developer key, network issue, etc).
* Once a connection is successfully established i.e. NetConnection.Connect.Success, we can retrieve our Peer Id (a unique 256-bit key) using the nearID attribute. Then we can start sending and receiving messages from other Flash Player 10 instances. This is done through the NetStream class that we cover next.
NetStream
* The NetStream class allows for one-way streaming connection between two Flash Player 10 or AIR application instances. The NetStream object is a channel that you have created within a NetConnection object.
* To publish a channel, call the publish() method of the NetStream class. The publish method takes a single parameter i.e. the channel name.
* To subscribe to a published stream and receive data, using NetStream.play(). The play() method takes a single parameter i.e. the channel name.
* To send a message to another Flash Player instance, send() method to send text messages to all subscribed clients. The send() method takes two parameters, the handler name (callback method) that will be invoked on receiving the message. The second parameter is the message that is sent.
4. Basic Flow of P2P communication using Stratus and NetConnection/NetStream
High Level steps that allow an application to engage in P2P communication using Stratus and NetConnection/NetStream classes is given below:
1. Create a NetConnection object and connect to the Adobe Stratus using the connect() method.
2. On successful connect to the Adobe Stratus Service, create a publishing stream (NetStream instance) and start the publishing stream by invoking the publish() method
3. To connect to a publishing stream i.e. to subscribe to a stream being published, create a receiving stream (another NetStream instance) by using the Peer ID of the application you wish to connect to.
4. To start receiving the stream, invoke the play() method on the receiving Stream created above.
5. To send messages to another application, invoke the send() method on the publishing stream.
6. Implement callback methods that will be invoked when a message is received from a Peer (Note that Peer used the send() method in the above step). The callback method will most likely contain your Application Logic i.e. actions that needs to be executed on receiving a message.
Sample P2P Application : Employee Review
The Employee Review application is a simple proof of concept application to apply what we have covered so far. It is not a full proof application and is used to simply demonstrate the power of Adobe Stratus and P2P features of Flash Player and how you can achieve that with few lines of code.
The Employee Review application is an application where a manager asks an employee for his feedback on employees. Once the initial connections and Peer Ids are exchanged, the Manager sends across the employee detail to the Peer. The Peer sees the Employee Record and fills out a simple form giving his rating for the particular employee in several areas. Once he has completed this, he sends the data across to the Manager who receives it. Except for the initial process of getting a Peer Id, the rest of the operations are happening directly between the two Flash Player instances.
Let us first understand how to run the application. Remember that for any real application, you will need an external service that will not only validate the users and their roles but also maintain the Peer Ids and allow them to view which Peers are online, etc. For the purposes of this article, we will keep it simple and directly feed in the Peer Ids that we wish to connect to.
To run the application, run two instances of the Flex Application. Shown below is the first instance:
Alt Text
Let us make this instance the Manager. Enter admin as the user name and click on Connect. This will connect to the Adobe Stratus Service and get a Peer ID. On successful connection, the Peer ID obtained is highlighted below for your reference:
Alt Text
Launch another instance of the Application. This time enter any name other than admin (enter 'user') in the username field. Note that we are intentionally doing this here to keep things simple but in the real world, you will need an authentication service. Click on Connect, you will see the user getting a Peer ID too as shown below:
Alt Text
The next step will be to connect each of them to the other. To do this, simply paste the My Peer Id of the other in the Other Peer Id field and click on Peer Connect button. Do this for both the applications, each time copying and pasting the Peer Id of the other application into the current applications' Other Peer Id field. The screenshots for the admin and user application are shown below respectively:
This is the Admin application screen:
Alt Text
And this is the User application screen:
Alt Text
You will see a common chat window for both the applications, where you can enter some messages and see it appearing on the other side. The admin user will have an Employee List, whereas the user will have a review form that is currently empty and not populated with any employee data.
To do the review, follow these steps:
1. For the admin user, click on the Load Employee Data button. This will populate the grid with some dummy employee data. Ideally this is fetched too from an external system.
Alt Text
2. Select any Employee Record and click on Send Review Form button. This will send the Employee Record data across to the other Peer. In our case, we selected the first Record (Jack Sparrow) and clicked on the Send Review Form button.
3. Switch to the user application, you will see that the Employee Details are populated. You can now select ratings for different performance criteria, give any additional comments and click on Send button.
Alt Text
4. Switch to the admin application, you will find that the completed review has reached the admin application with the summary of details. The grid is also updated for the Rating column with the cumulative ratings provided by the peer.
Alt Text
All this action has happened directly between the Flash Player 10 instances without any intermediate server layer. The only server layer is the connection to the Adobe Stratus Service for the Peer Id. The connection to the Stratus Service is maintained by the application via the NetConnection classes internally for you.
Now, that you saw how it works, let us look at the code by visiting the key areas:
1. Connecting to the Stratus Service and starting to publish a stream
The first step that we need to do is to make a connection to the Adobe Stratus Service and get our Peer ID. The Peer Id is a unique 256-bit key that is provided to you. To connect to the Adobe Stratus Service, we need a couple of things: the RTMFP endpoint of the Adobe Stratus Service and your Developer Key. Shown below the function that is invoked when you click on the Connect button.
private function connectToStratus(event:Event):void {
netConnection = new NetConnection();
netConnection.addEventListener(NetStatusEvent.NET_STATUS,onStratusConnect);
netConnection.connect(StratusAddress + "/" + DeveloperKey);
}
As listed above, we create an instance of the flash.net.NetConnection object using the no-args constructor. We can trap events from the NetConnection object by listening for the NetStatusEvent.NET_STATUS events, which we will see in a while. We then connect to the service using the connect method, where we provide the RTMFP end point and our Developer Key. The format is as follows: rtmfp://stratus.adobe.com/Your_Developer_Key. The Adobe Stratus Service address is defined in our source code file as follows:
private const StratusAddress:String = rtmfp://stratus.adobe.com;
Since we are listening to the NetStatusEvent.NET_STATUS event, we can get notified if the connection was successful or not. If the connection is successful, we get a NetConnection.Connect.Success code as shown in the code below. There are other codes returned too like NetConnection.Connect.Failed if there was a problem due to network connectivity, incorrect developer key, etc.
private function onStratusConnect(event:NetStatusEvent):void {
trace(event.info.code);
if (event.info.code == "NetConnection.Connect.Success") {
txtMyPeerId.text = netConnection.nearID;
//Create a NetStream for sending
sendStream = new NetStream(netConnection,NetStream.DIRECT_CONNECTIONS);
sendStream.addEventListener(NetStatusEvent.NET_STATUS,onSendStreamHandler);
sendStream.publish("mystream");
}
}
In the code above, we do some important stuff.
* If the connection is successful, the Stratus Service returns us a unique 256-bit key, which is our Peer Id. Your Peer Id is populated in the nearID field of your netConnection object. This Peer Id is how other applications will connect to us. So what we are doing at this point in time is simply displaying the Peer ID in the My Peer Id text box. This is then copied manually into the other applications Other Peer Id text field as we saw when we ran the example.
* Since we are now connected to the Adobe Stratus Service and have a Peer Id, we can start publishing a stream. Remember that streams are one-way only, hence we will have one stream for publishing and another one for subscribing. In this case, we create a publishing stream called sendStream. When creating a publishing stream, all you need is the NetConnection which you pass as the first parameter to the constructor. The second parameter is specific to Flash Player 10 and it indicates that you will allow Direct connections to be made to this Flash Player instance.
* Finally, to start publishing, we call the publish method on the sendStream object. The publish method takes a channel name, which can be any name. Our channel name here is called mystream. This will be the same channel name on which the other peer will subscribe and get data.
2. Subscribing to a Stream
To get data from another Peer, we need to do the following:
1. Create a subscription stream by connecting to the Peer.
2. Subscribe to the Channel published by the Peer
Let us look at how this is done by going through the code:
private function connectToPeer(event:Event):void {
recStream = new NetStream(netConnection,txtOtherPeerId.text);
recStream.addEventListener(NetStatusEvent.NET_STATUS,onReceiveStreamHandler);
recStream.play("mystream");
recStream.client = this;
}
private function onSendStreamHandler(event:NetStatusEvent):void {
trace(event.info.code);
}
* The connectToPeer() method is called when you click on the Peer Connect button in the application. What it does first is to create a new NetStream object. This NetStream object called recStream (Receiving Stream) and is created slightly different than the publishing stream (sendStream object) that we created earlier. The first parameter of the constructor is the same i.e. it requires the NetConnection object. Since we are interested in establishing connection to the other Peer here, we need to provide the Peer Id of the other application. This value is obtained from the text field Other Peer Id, which you manually copied from the other application. In a real world application, then would be obtained from some external service.
* To start subscribing, simply call the play() method of the NetStream object. The parameter to pass in here is the channel name that we are interested in subscribing to. This channel name is the same one on which the other peer will be publishing.
* We add an Event Listener here on the Stream to catch the NET_STATUS events. If the NetStream has started playing successfully i.e. it has subscribed successfully, then it gives a NetStream.Play.Start code, in which case we simply call the showWorkArea method. This method (not listed below) shows a list of Employees if the user is admin or else it shows the Review Form.
* Finally and most importantly, we set the client attribute of the receiving stream to the current instance. This is required so that when the publishing stream sends a message to your receiving stream, it will need to know where it can find the handlers for the receiving message. This will become clear in the next section.
3. Sending messages to each other
To send a message to the Peer, you need to invoke the send() method of the NetStream class. In our case the Netstream class object that we will be using is the sendStream object that we created earlier. The send() method requires two parameters. The first one is the handler (in other words the method) that will be invoked on the receivingStream Flash Player instance. And the second is the message Object. The message object can be any class that you wish to send across.
Let us first look at the basic chat messages since that is the simplest. When you enter any chat message and click on the Send button, we call the sendChatMessage() method which is shown below. This method invokes the send() method on the sendStream. The first parameter is the name of the method i.e. the handler which will be invoked on the receiving application. The second parameter is our chat message text. So, we have an equivalent method called the receiveChatMessage() which will be invoked in the receiving application. The method will be invoked automatically and the message will be passed in its second parameter. We simply extract it out and append it to our chat window.
private function sendChatMessage():void {
sendStream.send("receiveChatMessage",txtMsg.text);
}
public function receiveChatMessage(msg:String):void {
txtChatMessages.text += "\n" + msg;
}
Now, things should get clear on how to send the review form across and receive the feedback too. The Admin user selects a particular Employee Record and clicks on the Send Review Form button. We invoke the sendReviewForm() method shown below. It simply retrieves the currently selected row from the datagrid and calls the send() method passing the handler name receiveNewReview and the selected row as the second parameter.
private function sendReviewForm():void {
var obj:Object = dgEmployees.selectedItem;
sendStream.send("receiveNewReview",obj);
}
In the handler receiveNewReview() shown below, we simply extract out the person object that has been passed and initialize the ratings fields.
public function receiveNewReview(person:Object):void {
//Set the Form
empid.text = person.empid;
fname.text = person.fname;
lname.text = person.lname;
//Initialize the Ratings
cbCustomerInteraction.selectedIndex = 0;
cbPeerFeedback.selectedIndex = 0;
cbTechKnowledge.selectedIndex = 0;
cbTimeliness.selectedIndex = 0;
//Clear the Comments if any
txtComments.text = "";
}
In the user application, once we are done with entering the review details, we click on the Send button of the Review form. This will invoke the sendCompletedReview() method as shown below. The function builds the object and calls the send() method on its sendStream. The first parameter in the send() method is the handler name receiveCompletedReview and the second parameter is the completed review object.
public function sendCompletedReview():void {
var review:Object = new Object();
review.empid = empid.text;
review.fname = fname.text;
review.lname = lname.text;
review.rating_CustomerInteraction = cbCustomerInteraction.selectedLabel;
review.rating_TechKnowledge = cbTechKnowledge.selectedLabel;
review.rating_Timeliness = cbTimeliness.selectedLabel;
review.rating_PeerFeedback = cbPeerFeedback.selectedLabel;
review.comments = txtComments.text;
sendStream.send("receiveCompletedReview",review);
}
In the handler receiveCompletainedReview() shown below, we simply extract out the completed review object that has been passed and populate the Last Review Summary TextBox along with a cumulative score for the rating column in the datagrid for the particular employee.
public function receiveCompletedReview(review:Object):void {
//Set the Last Review
txtLastReview.text = "";
txtLastReview.text = "Received Review for Emp ID: " + review.empid + " -- " + review.fname + " " + review.lname;
txtLastReview.text += "\n" + "Technical Knowledge Rating : " + review.rating_TechKnowledge;
txtLastReview.text += "\n" + "Customer Interaction Rating : " + review.rating_CustomerInteraction;
txtLastReview.text += "\n" + "Timeliness Rating : " + review.rating_Timeliness;
txtLastReview.text += "\n" + "Peer Feedback Rating : " + review.rating_PeerFeedback;
txtLastReview.text += "\n" + "Comments : " + review.comments;
var rating:Number = Number(review.rating_TechKnowledge) + Number(review.rating_CustomerInteraction) + Number(review.rating_Timeliness) + Number(review.rating_PeerFeedback);
txtLastReview.text += "\n" + "Total Score : " + rating;
//Set the Rating in the dgEmployees Grid also
for (var i:int = 0; i< dpEmployeeData.length;i++) {
var empRecord: Object = dpEmployeeData.getItemAt(i);
if (empRecord.empid == review.empid) {
empRecord.rating = rating;
break;
}
}
dpEmployeeData.refresh();
}
Additional Notes
* The entire Flex Project is available for download. To compile it successfully, you will need to replace the Developer Key in the file EmployeeReview.mxml with your own Developer Key. The link to get a Stratus Key is given in the resources section.
* The application demonstrated here is not complete in all respects vis-à-vis making sure that no more than one peer can connect, enabling/disabling buttons depending on the functionality, etc. To Accept and Reject Peer Connections, there is an onPeerConnect function that can be written by the developer which will allow or reject the Peer connection depending on your application logic. For more information, refer to the Flash Player 10 NetConnection and NetStream documentation that is listed in the references.
* Once the two Peers are connected to each other, they can communicate to each other without going through an intermediate server layer. In other words they communicate directly over the network but still need to be connected to the Adobe Stratus Service. The understanding is that this is not too expensive to the application but it is required.
Adobe Stratus Resources
* Adobe Labs page for Stratus
* Stratus Developer Key Registration
* Adobe DevNet Article : Stratus service for developing end-to-end applications using RTMFP in Flash Player
* Sample Video Phone Application from Adobe
* Flash Player 10 NetConnection class documentation
* Flash Player 10 NetStream class documentation
Source Code
StratusSample.zip
Read more from Romin Irani. Romin Irani's Atom feed iromin on Twitter
Fte: http://www.insideria.com/2009/07/getting-started-with-adobe-str.html
jueves, 22 de octubre de 2009
Suscribirse a:
Entradas (Atom)