martedì 21 luglio 2009

Il protocollo di Subversion si rinnova

Avete presente il protocollo HTTP di Subversion? Lo stanno migliorando e studiare come gestiscono questa miglioria mi aiuta a capire come gestire i progetti software.

Subversion supporta diversi protocolli (svn, http, e svn+ssh). Il protocollo che poggia su HTTP è forse il più comodo da usare come client perché usa solo la porta 80 (buono per i firewall e proxy trasparenti), e permette il browsing del repository con un semplice browser. Lato server il protocollo over HTTP fornisce una serie di goodies ereditate da Apache come la possibilità di usare l'autenticazione LDAP, e le stessi strumenti di logging usati per Apache. Fino ad ora questa comodità si pagava in termini di prestazioni. Come ammette lo stesso manuale di Subversion il protocollo over HTTP è più lento degli altri due.

Oltre alla velocità ci sono questioni di semplicità e di leggibilità che riguardano il protocollo. Se ho capito bene questo post che lo letto il problema sta nel fatto che il protocollo Subversion over HTTP è stato su una specifica over-ingegnerizzata: l'estensione di versioning di WebDAV.

Ora si è deciso di cambiare! La modifica è stata definita in una nuova specifica. In questo nuovo protocollo sono state rimosse tutte le complicazioni non necessarie. La parte interessante (per me) è vedere come la modifica è gestita!

Le specifiche sono scritte in un documento testo semplice messo sotto controllo di versione e automaticamente messe a disposizione su HTTP (grazie all'uso di Subversion over HTTP tra l'altro).

All'inizio c'e' una introduzione che contestualizza le modifiche e di seguito le specifiche sono dettagliate in senso top down. Lo stesso documento funge da report sullo stato del lavoro. Scendendo nel documento si trovano infatti gli elenchi di cose da implementare taggati con la scritta [DONE] o [STARTED]. Scorrendo indietro nella storia si potrebbe addirittura vedere la storia del documento e come si è evoluto il design e lo stato di implementazione.

Molto istruttivo.

giovedì 2 luglio 2009

Confronti numerici con ndiff

Ndiff permette di confrontare i file numericamente.
E' molto comodo se si vogliono confrontar gli output di programmi di calcolo numerico trascurando le differenze di formato di rappresentazione dei numeri.

Io lo installo così:

mkdir --parent .local/{bin,src,man/man1}

cd .local/src
wget http://ftp.math.utah.edu/pub//misc/ndiff-2.00.tar.gz
tar xvfz ndiff-2.00.tar.gz

cd ndiff-2.00
./configure --prefix ~/.local
make install

echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc
echo 'export MANPATH=~/.local/man:"$MANPATH"' >> ~/.bashrc