[PFC] Programacion con Sockets en Python

30/07/2009

Trabajar con sockets en Python es muy parecido a como se trabaja en c, con la estructura socket; Tendremos por tanto las típicas funciones para enviar y recibir (send y recv), además de las llamadar para crear un socket o destruirlo, pasando por las write y read.

Como no hay mejor manera para aprender de esto, vamos a crear un servidor de ECHO, a ver como nos va la cosa:

Primero vemos el código del servidor

#importamos el modulo socket para comunicacion en red
import socket
#Creamos un socket de tipo INET (ipv4) de tipo TCP
serverSocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#bindeamos al puerto 9999 de localhost el socket
serverSocket.bind(("localhost",9999))
#escuchamos como mucho 5 peticiones simultáneas
serverSocket.listen(5)
while True:
    #si se recibe alguna conexion se acepta
    socketIntercambio, (host_c,puerto_c)=serverSocket.accept()
    #esperamos a que se nos envie algun mensaje
    recibido=socketIntercambio.recv(1024)
    print "Recibido: ",recibido
    #lo enviamos de vuelta
    socketIntercambio.send(recibido)
    #cerramos el socket de intercambio
    socketIntercambio.close()
    if recibido=="close":
        serverSocket.close()
        break

Ahora vemos el cliente

#importamos el modulo socket
import socket
#creamos un socket para la conexion
s = socket.socket()
s.connect(("localhost",9999))
#pedimos una entrada de datos para mandar al servidor de echo
mensaje=raw_input("->")
#enviamos la entrada
s.send(mensaje)
#esperamos una respuesta
recibido = s.recv(1024)
print "ECHO: ",recibido
#cerramos el socket
s.close()

Sistema de Automatización de Experimentos de Distribución en Planta

28/07/2009

Bueno, aquí empezamos la andadura del pfc, pero por ahora, sin muchas prisas, que ya llegaran…

Pues bien, como sistema de experimentación, lo fundamental que debemos tener son EXPERIMENTOS, hasta aquí estupendo, pero… ¿de qué se compone un experimento? Vamos por pasos, un experimento debe ser la agregación de:

  • Por una parte, los datos de entrada, como pueden ser: Población, Generaciones, Tipo de algoritmo,…
  • Por otra parte, también debe contener los resultados en caso de que haya sido realizado el experimento.
  • Vamos a incluir también una identificación de experimento (id_experimento), que bien podría ser un número entero sin signo.

De esta manera conseguimos sacar algunas entidades, como por ejemplo, la entidad Entrada, que va a contener los datos de entrada para el algoritmo; la entidad Salida, que va a contener las soluciones a las que llegue el algoritmo, y también podemos conseguir la entidad Algoritmo, que incluirá todos los parámetros necesarios para que el algoritmo funcione correctamente.

Como vamos a necesitar que las Salidas de un Experimento puedan ser usadas como Entrada en otro Experimento, se va a crear por comodidad otra entidad “contenedora” de los datos reales, siendo las entidades Entrada y Salida meras indicaciones de qué datos se van a usar (las salidas serán creadas en cada experimento).

En cuanto a la entidad Algoritmo, aún no está muy clara su inclusión en el diagrama entidad-relación, así que debemos detallar su función de manera más explícita, como por ejemplo, vamos a ver cuales atributos serían necesarios.

  • Nombre de Algoritmo (que sería considerado clave primaria)
  • Parámetros necesarios
  • (…)

Me parece también una buena idea la de disponer conjuntos de opciones listas para cada experimento, por eso es posible crear una entidad a la que se le denomine parametros, que contenga todo lo relativo a los parametros del experimento, como por ejemplo:

  • número de generaciones
  • tamaño de la población
  • probabilidad de mutación
  • tipo de mutación
  • probabilidad de cruce
  • tipo de cruce
  • evaluación
  • población de inicio

Por ahora, no le vemos disinción en cuanto a poner estos parametros directamente en la entidad experimento, sin embargo, de esta manera se podrán crear experimento con los mismos datos de inicio sin esfuerzo para poder, de ésta manera evaluar el desenpeño de distintos algoritmos.

Por ahora nos quedamos así, con la explicación textual, más adelante realizaremos el diagrama de Entidad-Relación


[PFC] Milleage set 0

02/07/2009

Bien, empezar, siempre se empieza por el principio, asi que alla vamos.

Con mi portatil puesto a cero, y mi sobremesa puesto a cero hace bien poco (porque siempre hay que estar limpio) vamos a dar comienzo a los logs basicos de mi pfc.

Como primero aun no he hecho nada, aunque deberia, pero eso es otra historia… por eso me voy a proponer dar estos anuncios de mi progreso, para que nada se vaya quedando atras.

Asi que esta entrada servira como puesta a cero del marcador y poco mas, paso siguiente: Primer Acercamiento a la Base de Datos del Sistema, que espero que sea lo mas detallada posible, ya contare…