Categoría: Programación

Proyecto P2P, ¿De qué habla este tío?

Bueno, bueno, como no ha quedado muy claro, voy a centrar el tema cuidadosamente.
La idea es básicamente aprender. Yo no voy a estudiar ingeniería informática pues soy un firme defensor de la tesis que se decanta por aprender la informática de un modo autodidacta, aprovechando el tiempo universitario con algo más divertido como puede ser la física o las matemáticas. Así, aplicándome el cuento, quiero ponerme de algún modo en acción, y como no se me ocurre nada, supuse que un proyecto muy educativo podría ser un cliente P2P privado.

La idea de éste P2P sería, con un uso mínimo de recursos y siendo portable a cualquier plataforma (incluyendo PDA’s, móviles, etcétera), crear un sistema con una red interna sin servidores que, usando un puerto y una contraseña preacordados en cada cliente, permitiera con fluideza el intercambiar información a velocidades de descarga directa.
Sería preferentemente programado con un lenguaje libre, a ser posible interpretado para garantizar la máxima portabilidad y completamente abierto a ser modificado por los usuarios. La interfaz gráfica, aunque ya he diseñado y programado una rudimentaria en wxpython, podría ser de tipo web, cosa que permitiría incluso la administración remota, etcétera.

Como es obvio, tal vez existan centenares de programas que tengan éstas y muchas otras funcionalidades. Y serán centerares de veces más estables, rápidos y seguros que este proyecto. Pero lo importante de ésto es aprender, aprender en cómo funcionan las redes y la programación sobre éstas, así como aprender a llevar un proyecto más o menos definido.
En general, que lo considero sin duda algo interesante al menos como intento. Siempre está bien tener algo entre manos.

Una vez pasado ésto, explicaré más o menos cómo está diseñado el código del anterior post. El sistema básicamente genera un servidor XMLRPC. Tal vez sea menos completo que SOAP, pero también es más sencillo. Los imports entonces se entienden con los comentarios que hay en el propio código.

Encontramos entonces tres clases o subsecciones de programa. Empezaremos por la primera como debe ser, el servidor. Existen dos funciones que ejecutará el servidor. Estas son listar_archivos y transferir_archivo, con los usos obvios: la primera envia una relación de los archivos compartidos y la segunda transfiere un archivo seleccionado. La función __init__ como es de esperar lo ejecuta: “incluye” las dos funciones anteriores en el servidor y lo pone en marcha de modo que éste queda a la espera de llamadas.

Seguidamente encontramos el cliente. Tiene dos funciones, con nombres bastante explicativos, que se encargan de enviar la señal necesaria al servidor remoto para que éste responda ya sea con el listado de archivos o con un archivo en si.

Finalmente está el HTTPServer. Básicamente es un servidor HTTP común, que presenta una página definida externamente. Útil para generar interfaces web, programas con acceso remoto, etcétera, sin necesidad de ejecutar un peso pesado como Apache.

Bueno, más o menos esto es todo, si es necesario no hay más problema en explicar de un modo detallado línea por línea el código, aunque como ejercicio recomiendo que trate de ser leído. Leer código es realmente útil para aprender a programar.

Proyecto P2P, con la primera entrega, el núcleo y las tapas

Código eliminado para aumentar la legibilidad de la página. En cualquier caso, el código puede obtenerse aquí

Pido perdón al altísimo por el horrible HTML que he copiado ahí arriba, pero ¿a que queda bonito?. Bueno, se aceptan opiniones, modificaciones, preguntas, etcétera.

El Propósito

It is purpose that created us.
Purpose that connects us.
Purpose that pulls us.
That guides us.
That drives us.
It is purpose that defines us.
Purpose that binds us.

Explosión Termonuclear
La gente se aburre. Y lo digo por experiencia propia. Ya puedo estar hasta donde sea de trabajo y demás que en el poco tiempo libre que me queda, estoy tan embotado que todo me parece tedioso. Y me aburro, me aburro muchísimo todos los días. Y eso, creo yo, es porque no tengo ningún objetivo a corto término. Es fácil darse cuenta que cuando una persona tiene algo que hacer, vive mejor. Incluso se recomienda a los jubilados que mantengan aficiones y tareas, pues incluso alarga la vida. Y entonces me doy cuenta de que tengo que encontrar algo que hacer. ¿Pero qué?. El estudio me embota en exceso, así que no debe ser nada que me fuerce demasiado la mente. Debe ser algo distraído. ¿Qué tal programar algo?. Tal vez sea la solución, y bueno, aquí estoy ahora, intentando desenterrar un antiguo proyecto de sistema p2p privado. Así que en cuando pueda me voy a poner de nuevo, e iré colgando aquí el código que vaya generando. Pero obviamente es un poco tontería escribir ésto solamente para anunciar que voy hacer algo. Lo que realmente quería decir es que se aceptan ayudas de todo tipo, es decir que si alguien se aburre en su casa y quiere meterse en un pequeño proyecto que le distraiga, éste está disponible. En principio trabajaré en Python pues es el lenguaje en el que mejor me desenvuelvo, pero si es necesario centrarse en otro, no hay problema.
Espero que éste sea el primero de la nueva saga de anotaciones con algo de contenido. Ahm, y como es obvio, la foto no tiene sentido alguno.