Currently Browsing

pfc

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.

MPI_Scatter and MPI_Scatterv

In this post I will explain the difference between MPI_Scatter and MPI_Scatterv and why this last is needed.

MPI_Scatter sends a vector of data along the processes in the MPI communicator, sending the same number of data to each process. ie, if there is a vector[100] and there are 10 processes, each process will receive a 10 ints vector.

Suppose there is a matrix of size (x, y) and you want to send each column of size (1, y) to a MPI process using MPI_Scatter; but there are only n < x processes. There will be a problem because MPI_Scatter sends the same quantity of data to each process.

MPI_Scatterv allows to control the number of data sent to each process, in such a way you can control the above problem, sending a determinate number of columns to each process.

¿OpenMPI en OpenMosix?

Después de estar buscando algo de información en la lista de distribución de openMPI, encontré una conversación en la que se comenta que OpenMPI no soporta migración de procesos. Esto serí­a un handicap menor para mi proyecto de fin de carrera, ya que pensaba usar esta implementación de MPI.

La conversacióne s de febrero del 2005, pero puede muy bien seguir vigente, ya que no he encontrado mucha información sobre OpenMPI en un cluster OpenMosix. El BCCD (Bootable Cluster CD) sólo incluye mpich y lam-mpi como implementaciones MPI, y puesto que la útima versión es de Mayo del 2006, parece lógico pensar que OpenMPI sigue sin soportar OpenMosix.

Tendré que utilizar la implementación LAM-MPI (actualmente en estado de mantenimiento, ya que los desarrolladores se han movido a OpenMPI) para la fase de producción, por lo menos hasta que OpenMPI funcione bien el cluster OpenMosix.

¿Frameworks para PHP? No, gracias

Como parte de mi proyecto de fin de carrera, he estado investigando los frameworks disponibles para desarrollar aplicaciones web utilizando PHP. He instalado y probado dos de ellos: CakePHP y Prado.

Ambos son frameworks muy prometedores, CakePHP emulando el comportamiento de Ruby on Rails y Prado utilizando un enfoque por componentes similar al JSF.

Sin embargo, no he salido de las pruebas con un buen sabor de boca: ambos frameworks carecen de documentación adecuada. Desde que la aplicación crece un poco, me veo incapaz de seguir desarrollándola por falta de información.Incluso pensando que la WUI de mi proyecto no es altamente compleja, requiere algunas funciones básicas como control de acceso por roles y algo de AJAX.

Visto esto, tardo menos implementando la WUI directamente en PHP que aprendiendo a utilizar cualquier framework.