Vamos a seguir con esto

21/02/2011

Bueno, seguimos adelante.

Ahora lo que me pasa es que quiero aprender Ruby, un lenguaje de programación que se está expandiendo como la espuma, y que tiene mucha potencia en cuanto a lo en diversión se refiere, ya que como indica su creador, es un lenguaje para divertirse programando, y como no podía dejar la entrada sin una pequeña reseña, allá vamos.

def funcion(parametro)

#comentando el codigo autoexplicativo

num=0.0

puts "Introduce dato, o cero para salir"

entrada = gets

while entrada.to_i!=0

total+=entrada.to_i

num+=1

end

puts "media = " + total/num

end

Como se puede observar, tiene una sintaxis similar a Python, pero su funcionamiento es bastante distinto, en principio, para los dados en la materia podría parecer que el ejemplo es una función típica de ejemplo, y estaría equivocados, Ruby tiene una metodología distinta, ya que en Ruby TODO es un objeto (supongo que ya habréis oido ésta frase en algún momento), así pues, el ejemplo de antes es un método de una clase, ¿que de qué clase?, pues está claro, de la clase “Class”, que existe en todo programa Ruby.

Un momento, ¿qué?

Empecemos de nuevo, que parece que hoy no quieres entender, Ruby es un lenguaje de programación, hasta ahí bien, ¿no?. Pues para más datos, es interpretado, fuertemente orientado a objetos, de hecho no existen tipos de datos, sino clases de objetos, los mismos números que escribes en los códigos fuentes o en el intérprete, son de la clase FixNum, y tienen sus propios métodos.

Con este concepto claro, sigamos adelante, en este caso con la sintaxis;

#sentencia if

if condicion==true then

#cosas que se realizan si se cumple

end

#sentencia if + else

if condicion==true then

#cosas del if

else

#cosas que pasan si no se cumple la condicion

end

Más o menos las cosas van así

En Ruby es todo “bastante opcional”, por ejemplo, cualquier paréntesis que no provoque confusión se puede dejar, o quitar, como con el paso de parámetros de las llamadas a los métodos, o en las operaciones que no sean necesarios, en las condiciones de los “if”, no obstante, nunca está de más ponerlos, aunque al final te acabes acostumbrando a no usarlos nada más que cuando son realmente necesarios.

Cómo seguir aprendiendo

Desde el Aula de Software Libre de la universidad de Córdoba se va impartir un taller teórico-práctico de Ruby a partir de la semana del 28 de Febrero de 2011, y es seguro que asistiré, así que espero volver la semana que viene a contaros más acerca de Ruby, ya que esta pequeñísima introducción nada tendrá que ver con cómo se trabaja en realidad con éste lenguaje que tanta libertad y diversión reparte.

Anuncios

Segundo Aniversario and.roid.es

25/10/2010

Como viene siendo habitual en las páginas “android” en las que sigo (y que sea así por mucho tiempo, o al menos, hasta que me caiga a mí algún regalo) sortean entre los que escriban un post en su blog varias “chucherías” del estilo del samsung galaxy tab, o galaxxy S, y algunas más, tan solo por comentar por qué te gusta and.roid.es.

Pues me gusta and.roid.es por su cantidad de actualizaciones, diversidad de noticias acerca de todo que tiene que ver con android, distintas marcas que fabrican telefonos android, por su curso de programación android que me sirvió para iniciarme, y sobre todo, ¡porque regalan chuches a sus lectores!

¡Un saludo!


Volvemos a la Carga!

25/10/2010

Después de los temidos exámenes de Septiembre volvemos a la carga, no diremos con más fuerza que nunca, porque nunca la tuvimos, pero sí diremos que con más ganas… ganas de terminar la carrera, que ya va siendo hora.

Así que hoy, por ser hoy, vamos a crear una plantilla y un makefile ¡para \LaTeX!

Antes de la plantilla así como así recordaremos ¿Qué es \LaTeX? Bien, jóvenes padawans, \LaTeX es un editor de textos WYSIWYM (lo que ves es lo que quieres decir). Ahora os preguntaréis, ¿pero eso qué quiere decir?, pues nada más y nada menos que tienes que ESCRIBIR que quieres una tabla, que un título tenga una forma determinada y todo lo demás, como consecuencia obtenemos el texto como nosotros le hemos escrito.

La siguiente pregunta es: ¿Pero eso no lo hacía ya antes? Lamento decirte que la respuesta es no si lo que has estado usando hasta ahora son editores de texto tipo OO.org/Word, si has usado otro tipo de editores, esto te resultará conocido.

Para comenzar: Encabezados del documento; es la primera parte que tiene cualquier documento de tipo \LaTeX, en ella especificamos qué tipo de documento vamos a escribir, cómo van a ser las páginas, qué lengua vamos a usar, en definitiva, qué documento queremos. Esto se consigue con:

\documentclass[a4paper,titlepage,oneside]{article}

El siguiente paso es añadir paquetes, estos paquetes añaden funcionalidades “extra” a \LaTeX ¿Qué funciones se le pueden añadir? Pues por ejemplo crear hipervínculos dentro del documento, carácteres de símbolos especiales, inserción de imágenes y muchas más. Por ejemplo se añaden al principio del documento:

\usepackage{}

Para usar los distintos paquetes que existen en el CTAN archive o los que tengas instalados en tu sistema.


Seguiremos informando más adelante!

Nexus One

27/05/2010

Aunque no haya ganado el sorteo de elandroide libre, he conseguido un preciado nexus one sin muchas complicaciones, el de mi hermano está aún por llegar…
Las primeras impresiones dejan al magic muy por debajo, se nota la gran mejora del procesador snapdragon de 1GHz.
Ahora a disfrutarlo…


Adquiriendo Conocimiento

28/04/2010

Partiendo de la gran premisa: “Siempre habrá alguien que lo haga mejor que tú”, debemos llegar a la conclusión de que debemos tener algún ejemplo para poder llegar a ser mejor.

Os preguntaréis [\mode ironic off] qué hago yo hablando de esto. Pues bien, un Nexus One habla por mí, un poco.

Gracias al sorteo realizado por http://www.elandroidelibre.com me animo a escribir un poquito sobre ellos, también le tengo que agradecer que me recordaran que tengo blog, que ya casi ni me acordaba.

Pues bien, para empezar, en http://www.elandroidelibre.com se habla sobre todo de android y todo lo relacionado con ello, realizando distintos análisis de las aplicaciones más interesantes, escribiendo algunos tutoriales para iniciarse en el tema android, en definitiva, como ellos mismos se definen, hablan un poco de todo, para que así sea más ameno y se puedan hablar de temas más dispares, no obstante, todos ellos tienen en común el tema de android.

Continuamos con los proyectos, aquellas cosas que nos proponemos en lugares hinóspitos y a horas intempestivas, pues bien, mi proyecto consiste en realizar una aplicación para android, pero no un bloc de notas ni nada de eso. Una en la que me sirvan mis conocimientos previos de OpenGL, no de la versión 2.0, pero sí compatibles :P.

Así que un temas más para archivar en la etiqueta de proyectos, Un saludo y suerte!


[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