Home    About me    Publications    Blog    Undergrad memories

Fabio Ruini's blog

'cause Italians blog better

Archivio per giugno, 2011

Launchpad

Con CVS (Concurrent Versions System) ormai dato per defunto, e’ aperta nel mondo dell’informatica la lotta per la sua successione. Tra i diversi sistemi proposti negli ultimi anni, particolare successo e’ stato ottenuto da Apache Subversion (SVN per gli amici). Neanche quest’ultimo sembra esseri pero’ un sistema esente da pecche, tanto che ulteriori alternative si sono affacciate da qualche tempo sulla scena. Di notevole rilevanza mercurial, git e Bazaar. Proprio quest’ultimo e’ stato oggetto di un po’ di sperimentazioni da parte del sottoscritto che si sono protratte per un’oretta questo pomeriggio. Sperimentazioni che sono passate attraverso Launchpad, una software collaboration platform che permette di ospitare al suo interno archivi di codice sorgente di applicazioni open source.

Una volta attivato il proprio account sul sito di Launchpad e’ possibile sia creare un progetto vero e proprio, sia limitarsi a creare più’ semplici branch (in gergo “junk”, ossia spazzatura). Il che e’ un’ottima soluzione per chi, come il qui presente, non ha ambizioni particolari se non quelle di utilizzare Launchpad come un repository un po’ evoluto. A tal fine ho riassunto qui di seguito i comandi principali sufficienti per garantire un’efficiente interazione con Launchpad via Bazaar (per quanto riguarda l’installazione delle utility di Bazaar in ambiente Linux, tutte le istruzioni sono contenute in questa pagina).

Dando per scontato che sulla macchina che stiamo utilizzando abbiamo un progetto con una sua directory root, per inizializzare una branch locale non occorre far altro che spostarsi all’interno di questa cartella ed impartire i due comandi che seguono:

$bzr init
$bzr add

A questo punto e’ possibile uploadare il tutto all’interno dei repository di Launchpad, specificando il nostro nome utente ed il nome che vogliamo dare alla branch. Per fare tutto cio’ serve un solo comando:

$bzr push lp:~/userName/+junk/branchName

Ora, nel caso in cui continuassimo a lavorare sul nostro progetto apportandovi delle modifiche, per aggiornare il contenuto del repository e’ necessario effettuare un commit tramite le istruzioni:

$bzr commit
$bzr push

Da notare che nella seconda istruzione non abbiamo più specificato il percorso remoto, dato che Bazaar dovrebbe averlo tenuto in memoria.

Per recuperare dal repository l’ultima versione (revision) del proprio software, occorre creare una directory locale apposita, spostarvisi al suo interno, inizializzarla per ospitare una determinata branch e poi procedere a copiarvi quanto contenuto sul repository on line.

$bzr branch lp:~/userName/+junk/branchName
$bzr pull o $bzr update

Nel caso in cui il computer che si utilizzasse non dovesse essere lo stesso con il quale la branch e’ stata originariamente creata ed uploadata su Launchpad, l’opzione “whoami” puo’ essere utilizzata per identificarsi:

$bzr whoami userName

Launchpad utilizza per l’autenticazione un ottimo sistema di sicurezza basato su SSH. In caso di eventuali problemi con l’impostazione delle chiavi, a questa pagina e’ spiegata molto bene la procedura da seguire.

Direi che questo e’ quanto. Ora non si tratta che di valutare nel tempo la robustezza e la praticità’ di questo sistema. Nel frattempo, buon coding (sicuro e condiviso) a tutti.

Share

AISC presenta UPdate

Da una email ricevuta dal buon Orazio Miglino, attuale presidente della AISC, Associazione Italiana di Scienze Cognitive, scopro che l’associazione ha lanciato un nuovo e molto interessante progetto. Si tratta di UPdate, una newsletter con cadenza quadrimestrale che cerca di perseguire due obiettivi di fondo: “Il primo è quello di stimolare la discussione tra gli studiosi italiani che operano nel settore delle scienze cognitive; Il secondo, non meno importante, è invece rappresentato dalla promozione di contatti con la comunità scientifica internazionale, condizione imprescindibile per una effettiva crescita dell’associazione“.

Il primo numero della newsletter, che contiene interessanti contributi tra i quali una dettagliata intervista a Cristiano Castelfranchi, direttore dellISTC-CNR e’ disponibile, in formato PDF, a questo link.

Share

La Pieve del Pilastrino di Roteglia

Come avevo promesso qualche post addietro, ho finalmente trovato il tempo per importare su YouTube il documentario dedicato alla Pieve del Pilastrino di Roteglia, realizzato da mio zio, al secolo Corrado Debbi, alcuni mesi fa. Per i soliti problemi relativi alla durata massima dei video uploadabili su YouTube, ho dovuto spezzettare il filmato originale in tre spezzoni di circa 12 minuti ciascuno. Il risultato e’ qui sotto. Buona visione.

Share

iCub simulator – display an image on the projection screen

Niente da fare. In questa settimana che e’ coincisa con il ritorno alla vita mio e, di conseguenza, del blog, pare proprio che gli argomenti che vadano per la maggiore siano quelli di natura squisitamente tecnica. Tema del giorno e’ il codice che permette di caricare un’immagine dal proprio computer e visualizzarla all’interno dell’iCub simulator sul pannello apposito per proiezioni. Funzione che puo’ essere molto interessante quando si lavora sull’image processing ed e’ necessario effettuare sperimentazioni di vario genere.

Bando alle ciance, dopo un po’ di smanettamenti dovuti a problemi vari di puntatori e formati che non riuscivo a far coincidere sono infine arrivato alla versione definitiva della funzione che implementa tale caratteristica del simulatore. Funzione che e’, in realta’, molto molto semplice. Diciotto righe inclusi spazi e parentesi graffe. Piu’ minimalista di cosi’ si muore.

Ed ecco qui il risultato, da uno screenshot della solita applicazione di prova sulla quale sto lavorando in questi giorni.

Share

Un nuovo Sobel filter, questa volta funzionante

Perfetto. Come avevo in qualche modo sospettato, l’implementazione del Sobel filter che avevo proposto nel post di ieri non genera esattamente i risultati attesi. Effettivamente, un processamento sull’immagine di input che appariva sensato veniva effettuato, ma mi lasciava perplesso il fatto che piu’ che edge detection sembrava che l’algoritmo lavorasse al contrario, colorando le parti all’interno dei vari contorni identificati (a mo del “colora i puntini” della Settimana Enigmista) senza evidenziare (se non indirettamente) i bordi stessi. Cancellato l’algoritmo scritto ieri, ho fatto cosi’ un nuovo tentativo basandomi sul codice pubblicato a questo link. L’algoritmo risultante ve lo propongo nello snippet che segue. L’unico problema e’ che, per poter compilare in un ambiente basato su Qt4, e’ necessario abilitare il Qt3Support module, sia con i vari include all’interno del proprio codice, sia, a fini di linkaggio, nei vari .pro/CMakeLists file utilizzati.

Questa volta i risultati sono decisamente migliori e perfettamente in linea con quanto, anche secondo Gimp, sarebbe lecito aspettarsi. Un esempio potete vederlo nell’immagine proposta qui di seguito, che mostra a sinistra uno screenshot preso dal solito iCub simulator, a destra la stessa immagine alla quale la nuova versione del filtro e’ stata applicata.

Share

Pagina successiva »