jueves, 9 de julio de 2009

Aplicaciones p2p en java con JXTA

Hola amig@s del mundo, me he decidido nuevamente a publicar un texto despues de un largo tiempo (espero no haya sido demasiado), pero quiero mantener este espacio y para hacerlo hay que publicar ;p

Bueno, a lo que vine, actualmente estoy trabajando en lo que vendria a ser mi proyecto de final de grado, tambien conocido como tesina o tesis dependiendo del contexto en el que hablemos. El programa en el que estoy trabajando tendrá que ver con el uso de aplicaciones en p2p y para ello voy a utilizar la libreria JXTA, uso el termino libreria porque creo que es el mas apropiado, ya que para ser considerado un framework creo que le faltaria un poco mas de "maduración".

En fin, me he topado con un tutorial de esta libreria a principios de este año (2009) y lo he estado leyendo "lentamente" y de hecho varias veces "interrumpido" por los quehaceres de todos los dias.

Para los que no conozcan, les explicaré en la forma que yo entendí, lo que hace el JXTA, ahora que me acuerdo, siempre lo mencionan como la "Especificacion" ya que pretende ser la base para el desarrollo de aplicaciones p2p, y desenmarañar la forma en la que estas se desarrollan, ya que casi todas las aplicaciones, desarrolladas por diferentes programadores o grupos de estos, lo hacen "a su manera" y lo que tenemos como resultado es que todos "reinventan la rueda" una y otra vez para lograr la conectividad y ese tipo de cosas (disculpen mi poco tecnisismo).

Entonces como decia, lo que pretende es establecer las normas y estandares como para que a partir de la especificacion, se pueda desarrollar en los distintos lenguajes (C,C++,java,python,etc), para demostrar el funcionamiento de la especificación se eligió java, no me pregunten porque ni quien/es lo decidió/eron.

Bueno, como dije en un principio, yo tome la decisión de hacer mi proyecto en java y utilizar esta especificación como base para esta, actualmente sigo con la investigación de como funciona, luego de tener un pequeño y tonto tropezon (leia un tutorial para la versión 2.4 utilizando la libreria 2.5) supongo que por tonto perdi unas cuantas horas procurando hacer funcionar los ejemplos, pero no todo es malo, sirvió para entender algunos pasos que dieron para llegar a la versión 2.5 y entender "como funcionan" algunas de las partes que lo integran.

Luego de esto tengo planeado desarrollar una aplicación basica de interconexion entre dos computadoras a través de internet y transmitir mi primer "hello world" o "hola mundo!" junto con algún fichero que me encuentre por ahi.

El funcionamiento, aclaro como yo entiendo hasta el momento, es el siguiente.
Todas las comunicaciones son a través de los llamados adversitements que se transmiten utilizando siempre XML.

Existen varios protocolos que dominan el funcionamiento, y estos son:
* PDP (Peer Discovery Protocol) - utilizado por los peers para anunciar sus recursos por ej. otros peers, grupos de peers, pipes (canales de comunicacion) o servicios.
* PIP (Peer Information Protocol) - utilizado por los peers para obtener información de estado (tiempo online, estado, tráfico reciente, etc) de otros peers.
*PRP (Peer Resolver Protocol) - Permite a los peers enviar una consulta genérica a uno o más peers y recibe una respuesta (o multiples) a la consulta. Estas pueden ser dirigidas a todos los peers, a un grupo de peers, o a un conjunto selecto dentro de este. A diferencia del PDP y PIP, los cuales son usados para consultar informacion específica y predefinida, este protocolo permite a los servicios del peer definir e intercambiar información de forma arbitraria como se necesite.
* PBP (Pipe Binding Protocol) - Usado por los peers para establecer una comunicación virtual, o pipe, entre uno omas peers. El PBP es usado por un peer y ligado a dos o mas conexiones finales (pipe endpoints)
* ERP (End point routing protocol) - Usado por los peers para hallar rutas (caminos o path) a los puertos de destino de otros peers. La información de ruteo incluye una ordenada secuencia de ID's de peers repetidores que pueden ser usados para enviar un mensaje al destino. (Por ejemplo, el mensaje puede ser entregado al Peer A el cual lo repite al Peer B, que lo reenviará al destino final).
* RVP (Rendezvous Protocol) - Usado por los 'Edge Peer' (creo que son peers que se encuentran al final de una ruta, tras un NAT o un firewall) para resolver recursos, propagar mensajes, y anunciar recursos locales. Usado por los peers rendezvous para organizarse con otros peers rendezvous, compartir la tabla hash distribuida de espacio de direcciones, y propagar mensajes de forma controlada.

NOTA: esta lista y descripcion de protocolos lo extraje y traduje de la guia para programadores hecha por SUN microsystems. Link a la guia aqui.

Como no he encontrado mucha informacion o ejemplos complejos de esta especificacion en java pretendo cuando termine mi proyecto publicarlo bajo licencia libre, quizas GPL o BSD, no se aun, de hecho no he revisado la licencia bajo la cual se libero la especificacion en java, tendré que adaptarme a ella quizas. Pero si publicare los fuentes que yo cree para hacer mi aplicación, y en sucesivos post ire mostrando mis avances.

Llegando a la parte final de este post les ruego, que si consiguen mas informacion (comunidades, ejemplos, informacion o lo que sea referenciado a esto) publiquen un comentario con esa información, no solo me ayudaran a mi sino a todo aquel que luego busque mas información al respecto.

Me despido nuevamente hasta una proxima publicacion.

martes, 21 de abril de 2009

Entretenimiento Virtual

Hola amigos...
hace mucho que no publico nada, y hoy se me ocurrio contarles de un sitio que un par de amigos me han recomendado visitar, y creo que está bastante bueno ver
se trata del sitio
este sitio es uno bastante original, se trata de un sitio de peleas virtuales, pero con la excepcion de que no hacemos nada realmente, cada jugador tiene unas habilidades basicas iniciales y algunas veces con alguna arma...
Luego de haber escogido al jugador/a y cambiar su look, esta listo para "desafiar" a algun otro participante en una pelea.

Cada jugador va subiendo de nivel y ganando puntos de experiencia segun vaya juntando peleas de este tipo.Asi se pueden tener hachas, barras, cuchillitos, espadas, tridentes, redes e inclusive puedes tener alguna mascota que te ayude durante la pelea.

Realmente al comienzo tengo que ser sincero,no me atrajo ni un poquito, luego le di una segunda oportunidad y me cayo mejor... luego de las tres primeras peleas ya empece a ver porque le gustaba a la gente.

Les recomiendo lo visiten, aqui tienen un enlace donde pueden encontrar mi usuario para "desafiarme" jaja... http://p431i7o.elbruto.es

Espero les guste, no les explico todo lo que tiene (doyos, torneos, historial de peleas...etc) porque no tengo muchas pilas hoy


Saludos..

jueves, 12 de febrero de 2009

Mack 3

Se viene el Mack 3
Manga
Anime
Cosplay
Karaoke
3 Edicion

Se llevará a cabo los dias 28 de febrero y 1 de marzo (un dia antes de mi cumple) jeje
Lugar: Centro Paraguayo Japones

Hora: desde las 14
Entradas Anticipadas: 25000 Guaraníes (por los dos dias)
Entradas Generales: 15000 Guaraníes

Habrá concursos de Cosplayers, karaokes, muchos mangas, dibujos y comidas japonesas


Para contactos pueden hacerlo con
- Diego:
msn: dieguiariel@hotmail.com,
Gtalk: dieguiariel@gmail.com
Cel: 0961814834

-Mahoro:
msn: josefinadedasso@hotmail.com
gtalk: rosajosefina@gmail.com
Cel: 0961675476

No se lo pierdan, vayan agendandolo para esas fechas...

jueves, 22 de enero de 2009

Gestor de Contenidos CMS basado en CodeIgniter

Buenas Nuevas amigos de la red!!!

En el grupo de codeigniter en español link ha surgido la idea de construir nuestro propia version de un gestor de contenidos (CMS) para que tengan una idea, pueden pensar en algo como joomla!, drupal, post-nuke, etc.

La idea surgió luego de un post del compañero Marcelo Espinola, esto todo paso a una votacion en el grupo donde se decidió desarrollar la propia version del grupo de un CMS.

El proyecto por el momento se llama codeigniter-es-cms y puede ser encontrado en google code. Link

En el momento que este lista las primeras versiones del sitio en su version beta, creo que sera publicado en el sitio www.codeigniter.com.es o en algun sitio que el grupo decida.

Es muy entusiasmante la idea, en especial para mi, ya que yo en el pasado (un año atras aproximadamente) comence un proyecto similar, pero solo desarrollado por mi para el Centro de Informacion y Cultura CIE. Link.

Este sitio ya cuenta con sistema de articulos, calendario de eventos, encuestas, suscripcion a boletines mensuales, Enlaces de interes organizados por categorias, servicios ofrecidos instituiciones de distintos ramos organizados por categorias, y un sistema de feed para los articulos publicados.

Obviamente es un sistema bastante sencillo pero me llevo como 4 meses desarrollarlo. Pero creo que esta idea de crear un CMS propio es una de las mejores que hemos tenido. Combinará todos los conocimientos que poseemos tanto del mismo framewor CI, asi como de gestores de contenidos que conocemos, en mi caso, joomla! y PostNuke, junto con los conocimientos que tenemos de javascript, css, ajax y php en general.

Todavia no tenemos una fecha de desarrollo inicial, y muchos menos para el rc (release candidate), ni siquiera que objetivos a corto plazo debera tener el sistema, pero, la rueda ya esta girando, es solo cuestion de tiempo para que ganemos velocidad.

Con el paso del tiempo ire publicando los avances que tengamos.

Saludos amigos!