Visualizzazione post con etichetta software. Mostra tutti i post
Visualizzazione post con etichetta software. Mostra tutti i post

fuseftp e sshfs

Montare file sistem remoti comincia a diventare un'abitudine a cui trovo difficile rinunciare
Ringrazio tanto gli sviluppatori idi fuseftp e sshfs, due applicazioni davvero utili che consentono, banda permettendo di connettere al proprio pc cartelle remote accessibili via ftp o ssh.

La modalita' di utilizzo e' molto simile nei due casi: ecco due semplici esempi:


# create una directory su cui montare l'albero di cartelle remoto
mkdir ftpremotedir
# montate il fs
fuseftp --cache=memory ftpremotedir/ yourserver:/path/to/remotedir
# e all'occorrenza smontatelo
fusermount -u ftpremotedir



# create una directory su cui montare l'albero di cartelle remoto
mkdir sshremotedir
# montate il fs
sshfs ale@example.com:/path/to/remotedir sshremotedir/
# e all'occorrenza smontatelo
fusermount -u sshremotedir

safe-rm: proteggetevi dalle distrazioni

La potenza di una shell e' enorme, ed eventuali errori si pagano cari

A volte puo' capitare di eliminare un file od una directory involontariamente a causa di stanchezza, distrazione. Il piu' delle volte il colpevole e' il comando rm, un comando di basso livello, molto ligio al dovere e forse viene utilizzato talmente tanto da sottovalutarne la pericolosita'.

Anche io sono uno di quelli che ha perso dei dati a causa di uno script che invocava un rm azzardatamente. Per fortuna avevo un backup recente e ho recuperato in fretta quanto ho perso. Ma quell'esperienza mi ha messo sul chi va la'!


Una soluzione a queste tragedie, tipiche del Venerdi' pomeriggio e che vi possono rovinare il weekend, e' safe-rm, un programma molto semplice che si comporta in maniera identica ad rm, ma permette di specificare una serie di file o directory in una lista (a livello globale e per utente).

safe-rm e' uno script perl di meno di 200 leggibilissime righe che potete scaricare da qui

Mandriva Cooker 2009 e KDE 4.1: amore a prima vista

In un colpo solo la soluzione di mille problemi
Devo fare un applauso agli sviluppatori di Mandriva che hanno rilasciato una versione Beta2 di Cooker gia' molto stabile.
Sono quasi 8 anni che uso Mandriva, ma mai mi sono azzardato ad installare Cooker per usarla quotidianamente! I motivi della mia reticenza sono legati all'instabilita' intrinseca della distribuzione e al grande numero di aggiornamenti rilasciati ogni giorno.

Tuttavia...
... mi sono deciso a utilizzare Cooker 2009 Beta 2 perche' l'attrazione esercitata da:
  1. kernel 2.6.26,
  2. gli ultimissimi driver Nvidia
  3. KDE 4.1
  4. firefox 3
  5. openoffice 3
presenti tutti e contemporaneamente in un sistema nato apposta per loro, era troppa. Vi rendete conto? Come potevo resistere?



E infatti ho capitolato!
Non che sulla 2008.1 non si potessero installare tali software (li avevo gia' tutti in realta'), ma sinceramente tale soluzione aveva il sapore di un surrogato. Molto meglio usare un sistema che e' stato progettato ad hoc per loro. Il fatto che la fase di sviluppo Beta 2 sia molto vicina alla release ufficiale mi ha tolto ogni dubbio.

A dispetto di chi suggerisce di installare la 2009 da zero, io ho aggiornato la 2008.1, andando su easyurpmi e impostando le nuovi sorgenti di pacchetti per cooker. Ovviamente prima ho rimosso le sorgenti vecchie con il comando urpmi.removemedia (chi non ne conosce l'utilizzo puo' usare il Centro di Controllo).

Consiglio a chi non e' avvezzo ad usare i tool per la gestione rpm da riga di comando di non imbarcarsi in imprese pericolose.

L'aggiornamento ha richiesto molta attenzione, visto che avevo installati sulla 2008.1 sia kde3 che kde4 e che anche ora li ho entrambi. Le complicazioni sono dovute al fatto che mentre per la 2008.1 il default era kde3, per la 2009 il default e', giustamente, kde4. Questa inversione di ruoli ha comportato diversi conflitti durante l'installazione, comunque tutti facilmente risolubili.
Il risultato finale dopo il reboot e' stata una meraviglia. Dopo un giorno di uso mai un crash o un problema. Tutto il software di cui ho bisogno e' presente all'ultima versione (compresa la fantastica libreria per Python matplotlib!).

In particolare posso finalmente dire di usare con gioia KDE 4, che ho tentato di apprezzare fin dalla versione 4.0 ma che mai mi ha soddisfatto appieno a causa della sua scattosita'. Ora, risolti in parte i bug dei driver Nvidia, lo adoro e mai tornerei indietro: perderei in produttivita'.

P.s.: fantastico il widget per plasma "Color Picker": chi fa grafica e/o web lo adorera'.

Nota conclusiva
L'esperienza che ho fatto mi ha ricordato ancora una volta quanto siano meritevoli gli sviluppatori open source di un obolo e in questo caso particolare i ragazzi che lavorano per Mandriva. Ricordatevene tutti! Costoro ci liberano dal male e ci regalano il meglio che possono, un gesto di riconoscimento, una volta ogni tanto se lo meritano davvero.

qombinatorics

Nei giorni scorsi ho parlato spesso di calcolo delle probabilita', piu' specificatamente ho scritto di come calcolare la probabilita' di certi eventi al gioco delle carte.

I conti da svolgere non sono complicati, benche' spesso noiosi. Siccome non sopporto la noia ho pensato bene di sviluppare un programma che mi permettesse di farli in fretta, una sorta di calcolatrice per lo studio del calcolo combinatorio.

Il risultato e' l'ottimo qombinatorics!
Sono molto soddisfatto del risultato. :) L'applicazione e' gia' stata distribuita presso i siti specializzati e sto gia' raccogliendo molti consensi!

Vi lascio con un'immagine del mio ultimo parto!

Tecniche Monte Carlo applicate a lenti di Laue

Ho sviluppato un software in Python dedicato alla simulazione di lenti di Laue destinato ad essere usato nell'ambito del progetto di Ricerca e Sviluppo in cui sono attualmente impegnato.

Gli elementi chiave da modellare nel programma sono tre:
1) i fotoni
2) il singolo cristallo
3) il detector

I fotoni e la loro sorgente
I fotoni prodotti sono modellizzati mediante la creazione di una classe dalla quale si puo' risalire in ogni momento alla loro posizione e al loro vettore d'onda. Dal vettore d'onda e' poi possibile risalire alla direzione di propagazione, all'energia e alla lunghezza d'onda del fotone stesso.
Funzioni specializzate si preoccupano di trasportare i fotoni incidenti dalla sorgente al cristallo, in cui vengono diffratti con una probabilita' dipendente dalla fisica del problema, e i fotoni diffratti dal cristallo al detector.

La sorgente di fotoni da simulare, un tubo a raggi X marca Siemens in grado di operare fino a 150 kV, presenta uno spettro di emissione di tipo Bremsstrahlung. Per simularne lo spettro sono state eseguite misure in laboratorio con un detector al Germanio raffreddato con azoto liquido. Tali misure sono state inserite nel programma in maniera tale che lo spettro dei fotoni simulati ricalcasse esattamente quello reale.

Per ottimizzare il tempo di calcolo, sono stati simulati unicamente i fotoni destinati a finire sulla superficie dei cristalli, visto che i fotoni destinati altrove vengono assorbiti da apposite schermature.

I cristalli
I cristalli simulati sono stati modellizzati tramite la creazione di una classe contenente informazioni circa il materiale componente il cristallo (rame a mosaico in questo caso) la loro forma, posizione e orientazione nello spazio.
Nel momento in cui fotone e cristallo interagiscono, esiste una probabilita' p che il fotone venga diffratto.
Qualora questo avvenga il fotone esce dal cristallo e viene trasportato fino al piano focale, in cui e' posto il detector.
La lente e' composta da venti cristalli disposti uniformemente su di una circonferenza di raggio 18 cm.
Nel caso ideale, i piani reticolari piu' probabili hanno normale diretta verso il centro della circonferenza. Il programma puo' tener conto di eventuali, disallineamenti.
Il programma puo' lavorare su tutti i cristalli contemporaneamente, su di un cristallo singolo, o su un sottoinsieme di cristalli.

Il detector
Il detector simulato e' sensibile alla posizione e dotato di 1024x1024 pixels, ciascuno di dimensione 0.3x0.3 mm2. Il centro del detector e' posto sull'asse ottico dell'esperimento.
I fotoni che cadono all'interno della superficie attiva del detector vengono misurati, quelli all'esterno vengono distrutti.

Finalita' del software
Tramite il codice sviluppato e' possibile determinare gli errori di allineamento dei singoli cristalli o della lente intera e capire quanto la qualita' del prototipo studiato differisca da quella massima ottenibile da un punto di vista teorico.

MIB vs MDE

Mandriva Italian Backports o Mandriva Enhanced Rpms?
Con un ritardo quanto meno insolito tardano ad arrivare i pacchetti MDE per Mandriva 2008. In realta' qualcosa si sta muovendo, come potrete verificare dai pacchetti presenti all'URL
http://www.mde.djura.org/2008.0/RPMS/.
MDE ha gia' pronti parecchi rpm, ma in maniera apparentemente non ufficiale. Gia' dall'inizio di Novembre si trovano le istruzioni per aggiungere la fonte di installazione, ma non funzionano.

La peculiarita' di MDE e' di fornire la versione piu' recente di KDE ai suoi utenti: in questo caso sarebbe la 3.5.8 che pero' al momento latita (sono presenti solo un paio di pacchetti). Fortunatamente la politica degli sviluppatori di Mandriva e' quella di patchare i pacchetti di KDE 3.5.7 degli update in maniera da includere i miglioramenti della nuova versione, in modo da non far mancare nulla ai loro utenti.

Visto che MDE latita ho pensato di testare i repository di MIB, un progetto italiano che tongo d'occhio da un po' e che fin da subito mi ha ispirato fiducia. Ecco come e' andata!
Ho aggiunto le fonti in un baleno con i seguenti comandi:
urpmi.addmedia --update 20080MIB-noarch http://mib.pianetalinux.org/2008.0/noarch with media_info/synthesis.hdlist.cz
urpmi.addmedia --update 20080MIB-i686 http://mib.pianetalinux.org/2008.0/i686/contrib with media_info/synthesis.hdlist.cz
urpmi.addmedia --update 20080MIB-NonFree http://mib.pianetalinux.org/2008.0/i686/non-free with media_info/synthesis.hdlist.cz
urpmi.addmedia --update 20080MIB-PlfFree http://mib.pianetalinux.org/2008.0/i686/plf-free with media_info/synthesis.hdlist.cz
urpmi.addmedia --update 20080MIB-PlfNonFree http://mib.pianetalinux.org/2008.0/i686/plf-nofree with media_info/synthesis.hdlist.cz
Notare che queste fonti PLF forniscono sono solo degli update ad alcuni pacchetti PLF!! Non usateli in sostituzione di altre fonti piu' complete, ma come complemento!
Prima di cominciare date il seguente comando:
rpm -ivh --force http://mib.pianetalinux.org/2008.0/noarch/fix-rpm-macros-1.0-1.mib2008.0.noarch.rpm
E' una patch per un problema di architettura dei pacchetti: Mandriva compila i586, MIB per i686.
Fatto questo basta un sano urpmi --auto-select per farvi suggerire quali pacchetti installare.
Quando l'ho fatto io mi ha installato tutto tranne la versione aggiornata di OpenOffice: era in conflitto con la vecchia. Non mi sono scoraggiato e ho ripetuto il comando magico urpmi --auto-select e questa volta e' filato tutto liscio: via il vecchio e dentro il nuovo!

Nel caso vi interessasse, riporto la lista completa delle mie fonti. contenente pure la sorgente di google. Potete scaricarla ed installarla, magari rimuovendo le fonti presenti con urpmi.removemedia -a, con il comando
source urpmi2008.0
Oltre alle ultime versioni di OpenOffice e Firefox (ovviamente presente anche in italiano), ho avuto l'incredibile piacere di trovare gia' pronta la versione 2.0 di Kile, un fantastico programma per redigere documenti, anche molto complessi, in LaTeX.

Visto che tutto ha funzionato e sta funzionando cosi' bene, ai ragazzi del MIB va un grazie e un grande in bocca al lupo, continuate cosi'!

gmailfs: 5 GB gratis per il vostro pinguino

Impariamo ad utilizzare i 5 GB (in continua crescita) di gmail come spazio disco.
Gmailfs e' una utility che permette di utilizzare l'enorme spazio che Google mette a disposizione dei suoi utenti come un normale disco fisso. Bisogna dire che l'accesso alla risorsa e' ovviamente molto piu' lento di un reale hard disk ed e' condizionato dal possesso di un account su gmail e dall'essere connessi al momento dell'utilizzo.

Se non avete fretta e avete una flat o se semplicemente vi va, considerate l'opportunita' di utilizzare gmailfs o per backup di emergenza [*] o come una sorta di ftp/chiavetta USB su cui mettere dei dati che vi potranno tornare utili ovunque voi siate.

[*] gmailfs e' ancora in test, percui usatelo solo come ultima spiaggia o come doppia copia!!!

Dipendenze
Vi occorre python-fuse (in mandriva si installa con "urpmi python-fuse") e l'ultima versione di libgmail.
Per montare gmailfs come utente normale dovete essere nel gruppo fuse.
Chi usa Mandriva 2008.0 notera' che questa distribuzione mette a disposizione solo la versione 0.1.7, ma non basta!!!
Nessun problema, arrivo io!!! Se volete ho gia' pronto un rpm per Python 2.5 costruito su mandriva 2008.0.
Si installa con i comandi:
wget http://alessandro.pisa.googlepages.com/libgmail-0.1.8-1.noarch.rpm
# inserite password di root se necessario.
# togliamo la vecchia versione e installiamo la nuova
su -c "rpm -e python-libgmail"
su -c "rpm -Uvh libgmail-0.1.8-1.noarch.rpm"
Il nome del pacchetto da togliere potrebbe cambiare qualora aveste un'altra distribuzione, ma quello da installare va bene per tutte quelle che hanno Python 2.5!

Se volete installare da sorgenti scaricate l'ultima versione [link] e poi date i seguenti comandi...
# scompattate il file
tar xfz libgmail-0.1.8.tar.gz
cd libgmail-0.1.8/
# inserite la password di root quando richiesto
su -c "python setup.py install"
Come installarlo
Il sito di gmailfs, dove troverete la documentazione ufficiale ed eventuali novita', e' il seguente:
http://richard.jones.name/google-hacks/gmail-filesystem/gmail-filesystem.html

La versione che ho installato oggi e la 0.8 scaricabile direttamente da qui.
Una volta scaricato il pacchetto aprite una console e date i seguenti comandi:
# scompatta l'archivio
tar xfz gmailfs-0.8.0.tar.gz
# cambiate directory
cd gmailfs-0.8.0/
# Copiate i file nei posti giusti. Inserite la password di root quando richiesto
su -c "cp gmailfs.py /usr/local/bin/"
su -c "cp mount.gmailfs /sbin/"
cp gmailfs.conf $HOME/.gmailfs
# Mettiamo permessi sicuri
chmod 600 $HOME/.gmailfs
A questo punto seguite le istruzioni per modificare le seguenti righe del il file $HOME/.gmailfs:
username = gmailusername # <- metteteci il vostro account senza @gmail.com

password = gmailpassword # <- metteteci la vostra password... Non siate paranoici!!!

fsname = linux_fs_3 # <- metteteci quello che vi pare, anche qualcosa di strano tanto non vi servira' granche'...

logfile = ~/gmailfs.log # <- metteteci ~/.gmailfs.log, sara' meno in mezzo ai piedi :)
Siete pronti???!!!
Tirate un bel sospiro di sollievo create la cartella sotto cui volete montare gmailfs
mkdir $HOME/gmailfs
e date il comando
/sbin/mount.gmailfs /usr/local/bin/gmailfs.py $HOME/gmailfs
Se date il comando df per due volte vedrete che la prima volta si lagnera', ma la seconda vi dira' qualcosa di simile:
python 5.0G 144M 4.8G 3% /home/xxx/gmailfs
Complimenti!!! ora potete usare la cartella $HOME/gmailfs come usaste una penna USB! Alla fine ricordatevi di smontarla con:
fusermount -u $HOME/gmailfs
Problemi incontrati e risolti
1) mount.gmailfs deve essere in grado di leggere il suo file di configurazione, altrimenti non funziona. Avete due scelte:
  1. metterlo sotto /etc/gmailfs.conf
  2. metterlo sotto $HOME/.gmailfs
Evitate di fare come me che l'ho messo sotto $HOME/.gmailfs.conf!!!!

2) Puo' essere che non riusciate ad usare fuse, in particolare ad accedere a /dev/fuse. Probabilmente non siete ancora nel gruppo fuse. Inseritevi in questo gruppo utilizzando vigr o gli appositi strumenti di gestione della vostra distribuzione e riloggatevi.
Una volta riloggati il comando groups dovrebbe aggiornarvi sulla vostra appartenenza al gruppo di fuse.

3) Se quando montate gmailfs vi da un messaggio del tipo: HTTP Error 400: Bad Request e poi non potete scrivere o leggere nulla da gmailfs perche' continuamente tormentati dall'errore "no space left on device", aggiornate libgmail all'ultima versione (piu' sopra spiego come fare).

Saluti e baci
Spero di esservi stato di aiuto. Qualora permanessero dubbi o riscontraste errori vi prego di scrivermi.
Grazie e ciao!

Garching meeting: PSF di una lente di Laue, studio per una lente di Laue asimmetrica

Gia ' che ci siamo pubblico pure una presentazione tenuta a Marzo a Garching che racconta un po' di cose sulla PSF di una lente di Laue.
Nella presentazione sono contenuti estratti da un articolo a mio unico, all'epoca non ancora pubblicato.[1]

Inoltre viene studiata la possibilita' di utilizzare una lente di Laue con una forte asimmetria. La rottura della simmetria cilindrica in una lente di Laue permette di risalire piu' facilmente alla posizione nel cielo di una sorgente di raggi X.

[1] http://dx.doi.org/10.1016/j.nima.2007.06.120

Python: progress bar con kde

Ovvero come implementare una simpatica e utile progress bar in Python sfruttando un'installazione funzionante di KDE

Requisiti: Python, KDE

Vi faccio dono di questo pezzo di codice che spesso e volentieri mi e' tornato utile.
Inserendo una progress bar in un programma con un tempo di esecuzione piuttosto elevato, posso ottenere in maniera rapida informazioni quali:
  1. stato di avanzamento del programma;
  2. stima del tempo trascorso;
  3. stima del tempo rimanente.
Il codice allegato sfrutta chiama mediante una l'apertura di una pipe l'utilissimo programma kdialog, parte dell'installazione base di KDE, per lanciare una finestra di dialogo con una progress bar che viene aggiornata e controllata dal codice Python sfruttando dcop.

Un esempio di come utilizzare questo codice e' inserito nella funzione test(), presente anch'essa nel codice e che viene eseguita in seguito al comando:
$ python progress_bar.py

L'immagine mostra la progress bar che dovrebbe apparire sul vostro schermo.


Come riciclare questo codice
La cosa piu' semplice che possiate fare e' copiarlo all'interno del codice che state sviluppando e creare un'istanza dell'oggetto Progressbar che partira' automaticamente, ad esempio cosi':
pbar=Progressbar(title='test title', name='test window', update_time=.1, steps=1000)
Per incrementare la barra e' sufficiente variare il contatore della barra stessa con il valore attuale, ad esempio:
pbar.index=500
Se volete chiudere la finestra di dialogo e' sufficiente cliccare sul tasto "Cancel". Questa azione, inoltre, settera' al valore True la variabile pbar.stop che potra' essere eventualmente usata nel programma principale per decidere di interrompere la sua esecuzione.