Quest'anno per la prima volta mi sono regalato una full immersion di 2 giorni all'ipw09.
E' stata una esperienza bella ed appagante e mi ha lasciato con la voglia di scrivere tanto tanto codice perl.
Un'altra cosa che mi reso questa esperienza ancora più appagante è che alcuni relatori che hanno presentato progetti molto interessanti sono anche miei colleghi ed amici.
La manifestazione si è tenuta al Centro Nazionale delle Ricerche una cornice eccellente all'alto livello della manifestazione.
Fare una carrellata dei talk che si sono tenuti sarebbe un lavoro lungo e faticoso quindi per ulteriori informazioni vi rimando su perl.it, non appena disponibili le slide le potrete trovare qui (come bonus trovate anche quelle degli anni scorsi). Alcuni talk riguardavano aspetti tecnici specialistici, altri erano divulgativi (tra cui un corso completo di perl della durata di 480 minuti - scusate se è poco) ed ancora alcuni erano ironici come il talk sull'Antiquated Perl riguardante i trucchi rocamboleschi che si possono fare con il perl delle vecchie versioni, una lezione che si è rivelato un ottima introspezione sul funzionamento a basso livello del perl.
Insomma molti interventi tutti caratterizzati da un elevato livello di competenza, una voglia di divulgare una propria passione ed anche di divertirsi un pochino.
Una ottima iniziativa.
Una collezioncina di trucchi informatici incentrati nel mondo dell'open source con un'occhio di riguardo a linux
sabato 24 ottobre 2009
sabato 4 luglio 2009
Git e Gitosis
Ecco come creare un repository git e condividerlo con gitosis su ubuntu 9.04.
Installare git
Installare gitosis
Prima di poter utilizzare gitosis va creato un utente ad hoc e configurato come amministratore di gitosis. L'utente che andiamo a creare molto originariamente si chiamerà git.
occorre quindi recuperare la chiave pubblica dell'utente valerio da ~/.ssh/id_rsa.pub ma se non è presente va creata con
e importata nel repository amministrativo gitosis-admin con
il quale confermerà con un
Bisogna aggiornare alcuni permessi poichè gitosis li imposta in maniera non corretta
A questo punto il repository amministrativo è pronto e lo si può accedere ovviamente utilizzando git con
verrà creata una sandbox con il file e la directory
gitosis.conf contiene la configurazione degli utenti mentre keydir contiene le chiavi pubbliche di tutti gli utenti (compresa già quella di valerio che è stata passata precedentemente con il comando
gitosis.conf contiene le seguenti voci
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = valerio@ken
il che significa che attualmente il repository gitosis-admin è accedibile da valerio dalla macchina ken utilizzando la chiave pubblica valerio@ken che è in
A questo punto l'installazione è conclusa anche se ovviamente dovrebbero essere aggiunti i repository su cui si vuole versionare il proprio codice. Supponendo di voler creare un repository chiamato personale gitosis.conf assumerà l'aspetto
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = valerio@ken
[group team]
writable = personale
members = valerio@ken
dopodichè va fatto il commit ed il push di queste modifiche
a questo punto l'utente valerio@ken è in grado di creare il repository personale con
e il repository personale adesso è accessibile con
Ovviamente è possibile utilizzare utenti multipli per un singolo repository aggiungendo vari utenti alla configurazione
[group team]
writable = personale
members = vcrini@vcrini-laptop valerio@ken
qui il repository mysite è scrivibile da vcrini e valerio. In keydir va copiata a mano la chiave pubblica vcrini@vcrini-laptop.pub
Volete debuggare?
Aggiungere "loglevel = DEBUG" proprio sotto la voce [gitosis] e fate attenzione agli spazi altrimenti non funziona.
[gitosis]
loglevel = DEBUG
[group gitosis-admin]
writable = gitosis-admin
...
Maggiori informazioni?
C'è un ottimo tutorial su Git qui.
Installare git
sudo apt-get install git-core python-setuptools
Installare gitosis
cd /tmpGitosis è un modo "semplificato" - si fa per dire - per gestire gli accessi al repository git e consiste nel modificare un file di configurazione con una serie di autorizzazioni e di chiavi pubbliche ssh associata ad ogni utente.
git clone git://eagain.net/gitosis.git
cd gitosis
python setup.py install
Prima di poter utilizzare gitosis va creato un utente ad hoc e configurato come amministratore di gitosis. L'utente che andiamo a creare molto originariamente si chiamerà git.
l'utente appena creato avrà come unico compito di "ospitare" il repository e di far girare gitosis. Quindi i repository saranno almeno due
sudo adduser \ --system \ --shell /bin/sh \ --gecos 'git version control' \ --group \ --disabled-password \ --home /home/git \ git
- il repository in cui vogliamo mettere i nostri dati da versionare (può essere più di uno)
- il repository amministrativo di gitosis che si chiama gitosis-admin
occorre quindi recuperare la chiave pubblica dell'utente valerio da ~/.ssh/id_rsa.pub ma se non è presente va creata con
ssh-keygen -t rsa
e importata nel repository amministrativo gitosis-admin con
sudo -H -u git gitosis-init < ~/.ssh/id_rsa.pub
il quale confermerà con un
si lo dirà 2 volte.
Initialized empty Git repository in ./ Initialized empty Git repository in ./
Bisogna aggiornare alcuni permessi poichè gitosis li imposta in maniera non corretta
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
A questo punto il repository amministrativo è pronto e lo si può accedere ovviamente utilizzando git con
git clone git@localhost:gitosis-admin.git
verrà creata una sandbox con il file e la directory
-rw-r--r-- 1 valerio valerio 142 2009-07-04 17:31 gitosis.conf
drwxr-xr-x 2 valerio valerio 80 2009-07-04 17:31 keydir
gitosis.conf contiene la configurazione degli utenti mentre keydir contiene le chiavi pubbliche di tutti gli utenti (compresa già quella di valerio che è stata passata precedentemente con il comando
sudo -H -u git gitosis-init < ~/.ssh/id_rsa.pub
)gitosis.conf contiene le seguenti voci
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = valerio@ken
il che significa che attualmente il repository gitosis-admin è accedibile da valerio dalla macchina ken utilizzando la chiave pubblica valerio@ken che è in
ls -l keydir/
-rw-r--r-- 1 valerio valerio 393 2009-07-04 17:31 valerio@ken.pub
A questo punto l'installazione è conclusa anche se ovviamente dovrebbero essere aggiunti i repository su cui si vuole versionare il proprio codice. Supponendo di voler creare un repository chiamato personale gitosis.conf assumerà l'aspetto
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = valerio@ken
[group team]
writable = personale
members = valerio@ken
dopodichè va fatto il commit ed il push di queste modifiche
git commit -m "new personal repository" -a
git push
a questo punto l'utente valerio@ken è in grado di creare il repository personale con
cd /tmp
mkdir personale
cd personale/
git init
git remote add origin git@localhost:personale.git
echo "il mattino ha l'oro in bocca" > readme.txt
git add readme.txt
git commit -m "primo file"
git push origin master
e il repository personale adesso è accessibile con
git clone git@localhost:personale.gitUtenti multipli
Ovviamente è possibile utilizzare utenti multipli per un singolo repository aggiungendo vari utenti alla configurazione
[group team]
writable = personale
members = vcrini@vcrini-laptop valerio@ken
qui il repository mysite è scrivibile da vcrini e valerio. In keydir va copiata a mano la chiave pubblica vcrini@vcrini-laptop.pub
Volete debuggare?
Aggiungere "loglevel = DEBUG" proprio sotto la voce [gitosis] e fate attenzione agli spazi altrimenti non funziona.
[gitosis]
loglevel = DEBUG
[group gitosis-admin]
writable = gitosis-admin
...
Maggiori informazioni?
C'è un ottimo tutorial su Git qui.
martedì 26 maggio 2009
ubuntu e terminali multipli
Con linux a me torna comodo avere una visualizzazione di questo tipo dei terminali
il problema è che mi tocca fare sempre tutto a mano fino a che non ho scoperto questa riga di comando:
gnome-terminal --geometry=160x30 && gnome-terminal --geometry=80x21+0+820 && gnome-terminal --geometry=73x21-1+820
mettendo questo comando in uno script multi_finestra
#!/bin/sh
gnome-terminal --geometry=160x30 && gnome-terminal --geometry=80x21+0+820 && gnome-terminal --geometry=73x21-1+820
e rendendolo eseguibile con
chmod u+x multi_finestra
adesso, associandole un tasto veloce riesco a fare tutto con una semplice combinazione di tasti
sabato 16 maggio 2009
Pycon 3 - La conferenza italiana di Python a Firenze
Da Venerdì 8 a Domenica 10 Maggio si è tenuta a Firenze la terza conferenza italiana sul linguaggio python.
Un'incontro molto interessante per chi usa il linguaggio Python e per chi (come me) è semplicemente incuriosito dal fermento che viene fatto scaturire da un incontro con persone legate da un'interessa comune come l'informatica.
La conferenza aveva un'ospite di eccezione quest'anno: Guido Van Rossum il papà di Python ovvero colui che lo ideò tanti anni fa che ha tenuto uno talk sulla nuova versione 3 del linguaggio ed uno su Google App.
Un'incontro molto interessante per chi usa il linguaggio Python e per chi (come me) è semplicemente incuriosito dal fermento che viene fatto scaturire da un incontro con persone legate da un'interessa comune come l'informatica.
La conferenza aveva un'ospite di eccezione quest'anno: Guido Van Rossum il papà di Python ovvero colui che lo ideò tanti anni fa che ha tenuto uno talk sulla nuova versione 3 del linguaggio ed uno su Google App.
In particolare ho trovato molto interessante il talk di Martelli su le Astrazioni , l'epopea della conversione del modulo postgrep da python 2 a python 3 di Federico di Gregorio e il corso di software finanziario tenuto da Stefano Taschini.
Una nota a parte per una introduzione all'utilizzo di Erlang che con Python ha ben poco a che fare ma che è stata molto gradita sia per la simpatia del suo relatore che per l'interesse che è stato destato sull'argomento.
Insomma nel complesso una conferenza ben fatta, ben organizzata e ricca di contenuti. La cosa che più mi ha colpito è stata la grande abilità nel rendere appassionante l'incontro e questo è un grande merito trasversale all'argomento trattato.
Una nota a parte per una introduzione all'utilizzo di Erlang che con Python ha ben poco a che fare ma che è stata molto gradita sia per la simpatia del suo relatore che per l'interesse che è stato destato sull'argomento.
Insomma nel complesso una conferenza ben fatta, ben organizzata e ricca di contenuti. La cosa che più mi ha colpito è stata la grande abilità nel rendere appassionante l'incontro e questo è un grande merito trasversale all'argomento trattato.
lunedì 9 febbraio 2009
xml e wsdl in perl
Dato uno schema wsdl e il modulo SOAP::Lite di perl è semplice ottenere una modulo perl personalizzato per effettuare le chiamate semplicemente utilizzando il comando
stubmaker.pl 'file:./schema.wsdl'
in questo modo verrà creato il modulo schema.wsdl che contiene tutte le chiamate previste nello schema
stubmaker.pl 'file:./schema.wsdl'
in questo modo verrà creato il modulo schema.wsdl che contiene tutte le chiamate previste nello schema
martedì 3 febbraio 2009
Ubuntu e firefox senza audio su youtube
Mamma mia per mesi ho avuto l'impossibilità di sentire l'audio su youtube malgrado l'audio funzionasse correttamente il player di ubuntu.
Il problema si è verificato facendo l'upgrade da ubuntu 8.04 a 8.10 e questa è la soluzione:
killall pulseaudio
sudo apt-get remove pulseaudio
sudo apt-get install esound esound-clients libao2
sudo rm /etc/X11/Xsession.d/70pulseaudio
adesso posso finalmente tornare a sentire "L'uomo che usciva la gente"
Il problema si è verificato facendo l'upgrade da ubuntu 8.04 a 8.10 e questa è la soluzione:
killall pulseaudio
sudo apt-get remove pulseaudio
sudo apt-get install esound esound-clients libao2
sudo rm /etc/X11/Xsession.d/70pulseaudio
adesso posso finalmente tornare a sentire "L'uomo che usciva la gente"
mercoledì 28 gennaio 2009
validatore xml sotto linux con vim
Mi avrebbe evitato un'errore qualche giorno fa mentre testavo un parser di xml proprio perchè vim 7 non ha di default un formattatore e validatore di xml ma è molto semplice aggiungerne uno.
Inserendo in vimrc la seguente riga
vmap ,px !xmllint --format -<cr>
basta selezionare in modalità visuale ciò che si vuole verificare e digitare ',px' a questo punto se l'xml è valido viene formattato altrimenti segnala un errore e specifica anche il punto.
Quindi si passa da
<xml version="1.0" encoding="UTF-8" standalone="yes"> <message version="1" type="foo"> <metadata1> bla</metadata1> <metadata2> bla bla</metadata2> </message>
a
<xml version="1.0" encoding="UTF-8" standalone="yes">
<message version="1" type="foo">
<metadata1> bla</metadata1>
<metadata2> bla bla</metadata2>
</message>
ma se c'è un errore (ad esempio manca un '?' iniziale)
<xml version="1.0" encoding="UTF-8" standalone="yes"> <message version="1" type="foo"> <metadata1> bla</metadata1> <metadata2> bla bla</metadata2> </message>
otteniamo
-:1: parser error : attributes construct error
<xml version="1.0" encoding="UTF-8" standalone="yes"> <message version="1" type="" parser="" error="" couldn="" t="" find="" end="" of="" start="" tag="" xml="" line="" 1=""><xml version="1.0" encoding="UTF-8" standalone="yes"> <message version="1" type="" parser="" error="" extra="" content="" at="" end="" of="" the="" document=""><xml version="1.0" encoding="UTF-8" standalone="yes"> <message version="1" type="">
</message></xml></message></xml></message></xml></xml></cr><cr><xml version="1.0" encoding="UTF-8" standalone="yes"><xml version="1.0" encoding="UTF-8" standalone="yes"><message version="1" type="" parser="" error="" couldn="" t="" find="" end="" of="" start="" tag="" xml="" line="" 1=""><xml version="1.0" encoding="UTF-8" standalone="yes"><message version="1" type="" parser="" error="" extra="" content="" at="" end="" of="" the="" document=""><xml version="1.0" encoding="UTF-8" standalone="yes"><message version="1" type="">
</message></xml></me
Inserendo in vimrc la seguente riga
vmap ,px !xmllint --format -<cr>
basta selezionare in modalità visuale ciò che si vuole verificare e digitare ',px' a questo punto se l'xml è valido viene formattato altrimenti segnala un errore e specifica anche il punto.
Quindi si passa da
<xml version="1.0" encoding="UTF-8" standalone="yes"> <message version="1" type="foo"> <metadata1> bla</metadata1> <metadata2> bla bla</metadata2> </message>
a
<xml version="1.0" encoding="UTF-8" standalone="yes">
<message version="1" type="foo">
<metadata1> bla</metadata1>
<metadata2> bla bla</metadata2>
</message>
ma se c'è un errore (ad esempio manca un '?' iniziale)
<xml version="1.0" encoding="UTF-8" standalone="yes"> <message version="1" type="foo"> <metadata1> bla</metadata1> <metadata2> bla bla</metadata2> </message>
otteniamo
-:1: parser error : attributes construct error
<xml version="1.0" encoding="UTF-8" standalone="yes"> <message version="1" type="" parser="" error="" couldn="" t="" find="" end="" of="" start="" tag="" xml="" line="" 1=""><xml version="1.0" encoding="UTF-8" standalone="yes"> <message version="1" type="" parser="" error="" extra="" content="" at="" end="" of="" the="" document=""><xml version="1.0" encoding="UTF-8" standalone="yes"> <message version="1" type="">
</message></xml></message></xml></message></xml></xml></cr><cr><xml version="1.0" encoding="UTF-8" standalone="yes"><xml version="1.0" encoding="UTF-8" standalone="yes"><message version="1" type="" parser="" error="" couldn="" t="" find="" end="" of="" start="" tag="" xml="" line="" 1=""><xml version="1.0" encoding="UTF-8" standalone="yes"><message version="1" type="" parser="" error="" extra="" content="" at="" end="" of="" the="" document=""><xml version="1.0" encoding="UTF-8" standalone="yes"><message version="1" type="">
</message></xml></me
Iscriviti a:
Post (Atom)