David

Categories

Latest News

Monthly archives

Links


Search




Sistemas de control de versiones: Subversion

Un sistema de control de versiones es un conjunto de programas que permiten gestionar los cambios en los ficheros que componen un proyecto, facilitando el trabajo en equipo al controlar el acceso y actualización del código fuente y llevando un registro de las modificaciones de éste.

Me he decidido a instalarlo porque me he encontrado con la necesidad de utilizar un sistema de control de versiones para gestionar los cambios que voy realizando en el código de mi proyecto de fin de carrera y en el código de DaVinci (esto último enmarcado en el Google Summer of Code).

El sistema que me he decidido a instalar es Subversion. Pretende ser una mejora del tan conocido CVS, añadiendo algunas características que se echaban en falta, como el renombre de ficheros o la eliminación de directorios.

El mayor problema a la hora de instalar el subversion vendrá dado por el control de acceso (no he podido aún hacer que funcione utilizando https en lugar de http). Pero por lo demás es bastante sencillo. La forma en que lo instalé fue mediante el módulo mod_dav_svn para Apache 2. Mediante este módulo, se puede acceder a los repositorios de código mediante http en lugar de utilizar el protocolo propio de Subversion (svn://).

Basta con instalar Apache 2 y configurarlo al gusto. Instalar el Subversion y el mod_dav_svn. Configurar el httpd.conf para que cargue mod_dav_svn como módulo y agregar las diversas líneas que definen un repositorio. Por ejemplo, para crear un repositorio accesible en http://myserver.com/repos podemos hacer lo siguiente:


$ cd /var/www/svn
$ chown -R apache.apache svn

Esto presupone que el usuario apache es el usuario que ejecuta el servidor httpd. Ahora los cambios al httpd.conf:


LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /repos>
   DAV svn
   SVNParentPath /var/www/svn

   AuthType Basic
   AuthName "Authorization Realm"
   AuthUserFile /var/www/.htpasswd
   Require valid-user
</Location>

Esto permite un acceso básico al repositorio para inspeccionar el código fuente. Para trabajar con el repositorio debes utilizar: 1) las órdenes de línea de comandos de svn o 2) Una interfaz gráfica como kdesvn en Linux o TortoiseSVN en Windows.

Como adición, viene muy bien buscar el ViewVC, un script cgi que permite una inspección detallada del repositorio, permitiendo ver diferencias entre versiones de un fichero, registros de modificación, etc. Es fácil de instalar, lo desempaquetas y sigues las instrucciones, que básicamente consisten en copiar el ejecutable viewvc.cgi al directorio cgi-bin (o cualquiera donde se ejecuten scripts del servidor web) y configurar httpd.conf para que permita ejecutarlo.

Posted by dsuarez Posted in: google SoC, informática, pfc, trabajo No Comments » November 2008


Fortran + xml

A la hora de definir un formato para un ficheros de opciones de programa que estas haciendo, se hace interesante el utilizar xml. Actualmente hay muchos intérpretes de xml para Java y C. Aunque no hay ninguno con las mismas características para Fortran, el xmlf90.

Programado en Fortran 90, te permite leer un fichero xml y extraer toda clase de opciones del mismo. Actualmente lo uso para leer los datos de la simulación atómica, como los modelos físicos a utilizar, el elemento químico y las condiciones de densidad electrónica, temperatura y tamaño del plasma; pero la intención es en el futuro utilizarlo para leer las configuraciones electrónicas del plasma.

Posted by dsuarez Posted in: pfc No Comments » November 2006


PETSc: Portable Extensible Toolkit for Scientific Computation

En este post voy a comentar una librería de funciones matemáticas que me está siendo de gran ayuda para el desarrollo de mi proyecto de fin de carrera.

La librería en cuestión se puede encontrar en el enlace: PETSc.

La característica de PETSc que más me interesa es la inclusión entre sus funciones de muchos (y en verdad son muchos) métodos de resolución de sistemas de ecuaciones lineales por métodos iterativos (para los tamaños de sistemas de ecuaciones que tengo que manejar, un método directo es inviable).

Para más señas: incluye el Bigradiente Conjugado y el GMRES (Generalized Minimal Residual). Estos son los métodos que mejores resultados dieron cuando se utilizó la librería CXML (Compaq eXtended Mathematical Library). Esta última librería se descartó ya que no esta disponible para Linux y es comercial.

Por otro lado, y aunque no se empleará por el momento, otra de las grandes características de PETSc es que es capaz de procesar los sistemas de ecuaciones en paralelo, aprovechando así la capacidad de cómputo del cluster GIRMA-Lab1. Todo ello de forma muy transparente a la hora de programarlo.

Otra características a citar es que dispone de una buena documentación, muy bien estructurada y con numerosos ejemplos. ¡Esto és fantástico! Muchas librerías potentes son inútiles porque la curva de aprendizaje es tremendamente empinada. Por último, citaré que es muy portable ya que funciona tanto en Unix como en Windows (aunque no lo he comprobado).

Posted by dsuarez Posted in: física, informática, pfc No Comments » November 2006


Gprof: Profiling aplicado a optimización de tiempo de ejecución

Gprof es una herramienta de profiling. El profiling consiste en registrar información sobre un programa durante su ejecución. Algunos de los datos interesantes que se pueden extraer son:

Al optimizar un programa, conviene conocer la Ley de Amdahl que básicamente dice lo siguiente, citado directamente de la Wikipedia: “La mejora obtenida en el rendimiento de un sistema debido a la alteración de uno de sus componentes está limitada por la fracción de tiempo que se utiliza dicho componente”. En la siguiente ecuación, Fm es el tiempo del componente que se mejora, y Am es el factor de mejora del componente. Por ejemplo, Si Am=2 entonces el tiempo empleado para realizar la tarea que tardaba Fm es ahora Fm/2.

Ley de Amdahl

Gracias a gprof podemos averiguar cuales son las funciones donde el programa consume la mayor parte del tiempo (se dice que el 80% del tiempo de ejecución se consume en un 20% del código: regla 80/20) y por tanto, aquellas que merece la pena optimizar para mejorar el rendimiento global del programa en cuestión.

En un post futuro publicaré una pequeña guía de utilización. Hasta entonces.

Posted by dsuarez Posted in: informática, pfc No Comments » October 2006


« Previous Entries