Planet

Reflexiones

Técnicamente, el IV CUSL ya terminó. La final se celebró en la Escuela Superior de Ingeniería de Cádiz, y la organización local la llevamos a cabo los de la OSLUCA. La final duró dos días y, además de las ponencias de los diferentes finalistas, también tuvieron lugar una serie de charlas de gente del mundo del FLOSS, en general bastante interesantes.
Además de las labores organizativas típicas, a mí también me tocó hacer las fotos, para variar.
Aunque los participantes y conferenciantes eran de toda España, se notaba mayoritaria presencia de gente de Sevilla, sobre todo teniendo el cuenta el abultado grupo de chavales, muy simpáticos, que vinieron apoyando al proyecto Cañafote.

La verdad es que los proyectos me impresionaron bastante en su mayoría, sobre todo Tivion: Un reproductor de TV por streaming con casi 700 canales de más de 60 países, traducido a un montón de idiomas, referenciado en muchos blogs, empaquetado y con un repositorio propio… A mí me parece que a este paso va a ir directo a los repositorios de Ubuntu y/o Guadalinex.

En cuanto a los conferenciantes, me pareció interesante el punto de vista completamente empresarial de Juan María Moreno de Price-Roch, que nos habló sobre “Emprender en la Era de lo Gratis”.

Por otro lado, me dejó impresionado Alfonso de Cala, responsable del Área de Software Libre de la Junta de Andalucía y nada menos que director de Guadalinex, entre otras cosas. Además, es un tío súper amable, ameno y humilde. Estuvimos charlando unos compañeros con él y la verdad es que da gusto. Además, se parece a Sam Fisher!

La pena es que las instalaciones de la Escuela son tercermundistas, el salón de actos debe tener más de 30 años, y está fatal: el sistema de sonido no funciona bien cinco minutos seguidos, se acopla; esto no sería un problema si la sala estuviera bien pensada, pero es que la acústica general es penosa y no se oye nada. La iluminación es malísima, además de que las paredes están forradas de madera y hace que todo se oscurezca aún más, dificultando mucho hacer las fotos. Los sillones dan un calor insoportable, el suelo es de madera y hace muchísimo ruido, solo hay UNA toma de corriente en toda la sala y está en una esquina alejada… De pena vamos.
A pesar de todo la convivencia con la gente ha merecido la pena y el resultado general es positivo.

Anuncios al tracker

Cuando un cliente esté interesado en ver un determinado stream va a tener que contactar periódicamente al tracker para descargar un listado actualizado de otros peers de los que va ...

El objeto KrakenHTTP casi listo

En el commit de hoy he introducido varios cambios al objeto HTTP: Soporte para transfer-encoding: chunked. Soporte para trabajar con KrakenHTTP de manera asíncrona He mejorado notablemente la implementación de ...

Migramos a Gitorious

Migramos la forja a Gitorious, con la intención de aprovechar las ventajas de Git frente a SVN. La dirección de la nueva forja es http://gitorious.org/dissim

Finalizó el CUSL pero…

Finalizó el CUSL pero no por ello GADA deja de tener continuación!
Antes de explicar la "nueva" etapa del proyecto, quería aprovechar para felicitar a los ganadores y finalistas de cada categoría. He estado siguiendo de forma personal todos sus proyectos y sinceramente se lo merecían. También quería dar las gracias a todos los que hacen posible el CUSL, ya que debido a ello, he explorado nuevas vías de desarrollo, perfeccionado muchos detalles que traía pendientes de la universidad y me ha ayudado a ver las carencias que tengo a nivel de desarrollo del software. Ver estas carencias son las que hacen posible corregirlas y para la próxima edición, tener una aplicación perfeccionada.
Una vez dicho esto, quiero decir que no por la finalización del CUSL vaya el Proyecto GADA a dejar de tener soporte o desarrollo. Con más razón a raíz de este concurso, me ha quedado claro que todo lo que empezamos debemos concluirlo, y a se posible de la mejor de las maneras. Quiero aprovechar esta entrada para decir que ahora que tengo más tiempo disponible, la finalización del desarrollo y la implantación van a ser dos de los hitos a conseguir.
Seguiré informando los próximos días. Un saludo!

Sigo avanzando

Después de un tiempo sin darle demasiada vidilla a esto, hoy he subido unos cuantos ficheros al SVN. Estos ficheros contienen una implementación muy muy inical y muy muy incompleta ...

Simulación con Ríos

Open Street Maps sólo define las orillas de los ríos, lagos, mares y demás masas de agua. Esto supone un problema a la hora de simular, pues no sólo las orillas han de estar inundadas, si no el río entero. De este problema ya habíamos hablado en una entrada anterior, y ahora que ya está [...]

Esquemas de Agentes

Aquí mostramos una visión general del esquema de comunicación entre los agentes que utilizamos en DisSim:
Aquí está el árbol de clases:
Y ahora un resumen de las comunicaciones entre agentes de la forma:
Agente que manda el mensaje …. Agente que recibe el mensaje
(comportamiento que lo lanza, comportamiento que lo recibe, acción que realiza)

Final nacional del CUSL en Cádiz

Entre unas cosas y otras no he podido escribir sobre la final del CUSL que se celebró en Cádiz entre el jueves y el viernes pasado. Kora se llevó el primer premio de accesibilidad, y Visuse, también de Granada, el segundo premio de comunidad.
Antes que nada me gustaría dar las gracias a la organización, que lo han hecho bastante bien y además han demostrado ser bastante enrollaos. Además, me han dado dos camisetas . También me gustaría felicitar al resto de concursantes, que me han parecido gente de puta madre, todos y cada uno de ellos. En especial a Pino (de Visuse) que ha sido mi compañero de habitación y a los asturianos Adrián Bulnes y Daniel Martín (de Curuxa y Casual Services), que son con quien más tiempo he pasado allí. Pero como ya digo, toda la gente que he conocido en el Concurso ha sido magnífica y me llevo un gran recuerdo de todos ellos. Además, los KDEros éramos mayoría y por primera vez en mi vida he conocido a gente que use Arch.
Por otra parte, el hotel en el que nos hemos alojado, aun siendo sencillo es precioso (especialmente las puertas, que me han enamorado) y durante el poco tiempo que he pasado por allí, he estado muy a gusto. Nunca antes había estado en Cádiz y lo poco que he visto me ha gustado bastante, y me ha picado el gusanillo de volver pronto. La comida en todos los sitios ha estado bastante bien.

En general, las conferencias han sido bastante interesantes, especialmente las de Opengnsys, Guadalinfo y Korea. Me da lástima no haberme podido quedar a las del viernes por la tarde, pero me gradué ayer y si me hubiera quedado habría llegado (más) cansado y con el tiempo demasiado justo. Las relacionadas con las empresas han sido útiles y han venido particularmente bien para saber qué hay después de la carrera, pues más allá de los valores éticos que promueve el software libre, conviene que también sirva para comer.
Para terminar, reitero mi agradecimiento a los organizadores y patrocinadores del Concurso y espero con todas mis ganas volverme a encontrar con los participantes. A los pocos que leáis mi esto os recomiendo no dejar pasar la oportunidad de vivir esta experiencia, y sobre todo, que os esforcéis con vuestro proyecto para llegar a la final.

Trasteando Gource

Hola de nuevo:
En la última entrada comenté un poco por encima un programita muy curioso y subí un vídeo de lo que mostraba al pasarle el repositorio de WikiUNIX. Este programa se llama Gource y para el que no lo leyera en la entrada anterior, sirve para generar una animación para visualizar el desarrollo de proyectos a partir de la información administrada por el sistema de control de versiones.
Gource soporta directamente Git, Bazaar y Mercurial, por lo que sólo tenéis que ejecutarlo desde la raíz del repositorio y listo. Sin embargo, como ya comenté había que utilizar trucos para que tirara en Subversion (no es que sea muy fan de este sistema de control de versiones, pero en la forja de RedIRIS no hay más remedio). Uno de esos trucos era utilizar un script, pero antes de esto había que llamar a svn para guardar los logs del repositorio, y pensé: “Pues hacer esto completamente automático es facilillo”, así que he retocado el script que ya estaba hecho para tener que ejecutar una única orden:
#!/usr/bin/python
# -*- coding: utf-8 -*-
## Copyright (c) 2010 Noelia Sales Montes (noelia.salesmontes@gmail.com)
## Copyright (c) 2009 Cameron Hart (cam@bitshifter.net.nz)
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted provided that the following conditions
## are met:
## 1. Redistributions of source code must retain the above copyright
## notice, this list of conditions and the following disclaimer.
## 2. Redistributions in binary form must reproduce the above copyright
## notice, this list of conditions and the following disclaimer in the
## documentation and/or other materials provided with the distribution.
## 3. The name of the author may not be used to endorse or promote products
## derived from this software without specific prior written permission.
##
## THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
## IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
## OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
## IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
## INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
## NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
## THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""
Python script that converts the XML output of the svn log command into a
format that can be read by the gource custom log format option and execute
gource to show the animation.
"""
import sys
import os
import time
import getopt
import re
from xml.etree import ElementTree
__clean__ = False
__verbose__ = False
__filter_dirs__ = False
# width x height
__size__ = "800x600"
# seconds per day
__time__ = "1"
__usage__ = """
USAGE: svn-gource.py [--help] [--clean] [--verbose] [--filter-dirs] [--size WIDTHxHEIGHT] [--time SECONDS-PER-DAY]
"""
# regular expression for matching any file with an extension
__extn_prog__ = re.compile(".*/?[^/]+\.[^\.]+$")
def reverse(data):
"""Returns the log entries in reverse."""
for index in range(len(data)-1, -1, -1):
yield data[index]
def verb(message):
"""Prints in verbose mode."""
if __verbose__ == True:
print message
def process_xmltree(__xmltree, logfile):
"""Prints the log file converted into the gource format in a new log file.
"""
if os.path.exists(logfile):
os.remove(logfile)
verb("Removing %s" % logfile)
verb("Translating %s" % logfile)
for logentry in reverse(__xmltree.getiterator("logentry")):
datetext = logentry.find("date").text
# svn xml logs always use UTC
timestamp = (time.mktime(time.strptime(datetext[:-8],
"%Y-%m-%dT%H:%M:%S")))
# a bit of a hack to get it into local time again...
#timestamp = timestamp - time.timezone
#author might not exist
try:
author = logentry.find("author").text
except:
author = ""
__f = open(logfile, "a")
# output all affected files
for pathentry in logentry.getiterator("path"):
# apply directory filtering strategy
if __filter_dirs__ and not re.match(__extn_prog__, pathentry.text):
continue;
# join output
__f.write( "|".join(("%d" % int(timestamp),
"%s" % author.encode("utf-8"),
"%s" % pathentry.get("action"),
"%s" % pathentry.text.encode("utf-8"), "\n")))
__f.close()
def print_usage(message):
""" Prints the script's usage """
sys.stderr.write(__usage__)
if message:
sys.exit('\nFATAL ERROR: ' + message)
else:
sys.exit(1)
if __name__ == "__main__":
try:
__opts__, __args__ = getopt.getopt(sys.argv[1:],
'hvcfs:t:', ['help',
'verbose',
'clean',
'filter-dirs',
'size',
'time'])
except getopt.GetoptError:
print_usage('Invalid arguments.')
for (opt, val) in __opts__:
if opt in ('--help', '-h'):
print_usage(None)
elif opt in ('--clean', '-c'):
__clean__ = True
elif opt in ('--verbose', '-v'):
__verbose__ = True
elif opt in ('--filter-dirs', '-f'):
__filter_dirs__ = True
elif opt in ('--size', '-s'):
__size__ = val
elif opt in ('--time', '-t'):
__time__ = val
verb(' OPTIONS:')
verb('Size = %s' % __size__)
verb('Seconds per day = %s\n' % __time__)
os.popen("svn log --verbose --xml > project.log")
__XMLTREE = ElementTree.parse("project.log")
process_xmltree(__XMLTREE, "project-gource.log")
verb('Calling gource... Showing the animation.')
os.popen("gource -%s -s %s --log-format custom project-gource.log" %
(__size__, __time__))
if __clean__:
verb("Removing log files.")
os.remove("project.log")
os.remove("project-gource.log")
Os comento un poco por encima qué opciones tiene el script:

  • –help, -h: Típica ayuda.
  • –verbose, -v: Modo chivato, por si queréis ver qué va haciendo (tengo costumbre de ponerlo por facilitarme el testeo…).
  • –clean, -c: Una vez finalizada o cancelada la animación, borra los ficheros de log utilizados, en este caso “project.log” y “project-gource.log”. De todas formas, se fuerza el borrado de “project-gource.log” antes de generarlo de cero, para asegurar que no se guarda nada raro de alguna ejecución anterior.
  • –filter-dirs, f:
  • –size, -s ANCHOxALTO: Esta opción recibe el tamaño de la ventana que generará gource. Atención que tanto el ancho como el alto se pasan en un mismo argumento, separados únicamente por una “x”. Si no se utiliza esta opción, se tienen por defecto 800×600.
  • –time, -t: Número de segundos por día que tomará la animcación. Si no se utiliza esta opción, se tiene por defecto 1 segundo por día.

Bueno, lo único que tenéis que hacer es guardarlo en “svn_gource.py” y ejecutarlo desde la raíz del repositorio pertinente (si tenéis varios repositorios, os resultará más cómodo tenerlo en el directorio padre de éstos y ejecutarlo desde dentro) con un simple:


python svn_gource.py

Yo suelo ejecutarlo usando las opciones:
python svn_gource -s 1200×600 -t 0.1 -v -c
A ver si puedo habilitar la subida de ficheros “especiales” al wiki para facilitar la descarga de los scripts.
Un saludo a todos, unixeros
PD: Para cualquier duda, problema, comentario, … acerca del script podéis utilizar los comentarios del blog o escribir en la página de discusión del script en el wiki directamente.
Archivado bajo:WikiUnix

Distribuir contenido