Archive for March, 2010
Search and replace in file
In un progetto recente mi è capitato di dover modificare al volo uno stesso parametro in molteplici file di configurazione.
Più in dettaglio, avrei dovuto modificare il valore dell’elemento <data>.
La soluzione si basa su una serie di istruzioni bash.
# si ottiene il numero di occorrenze da sostituire
$ grep -r '4010' /path/file/configurazione | wc -l
# le occorrenze vengono sostituite
$ find . -maxdepth 1 -name "param*.xml" -exec sed -i 's/4010/3010/g' {} \;
# si verifica che le occorrenze sostituite siano uguali a quelle trovate nella situazione iniziale
$ grep -r '3010' . | wc -l
Più in dettaglio, ecco la successione di operazioni che ho eseguito.
# listing file nel path
~/tmp/param$ ls
param1.xml
param2.xml
param3.xml
...
# search: quante volte occorre la stringa da sostituire?
~/tmp/param$ grep -r '4010' . | wc -l
10
# search: in quali file occorre la stringa da sostituire?
~/tmp/param$ grep -r '4010' .
./param1.xml: <data>40100328000000</data>
./param2.xml: <data>40100328000000</data>
./param3.xml: <data>40100328000000</data>
...
# il find e' corretto?
~/tmp/param$ find . -maxdepth 1 -name "param*.xml"
./param1.xml
./param2.xml
./param3.xml
...
# search/replace
~/tmp/param$ find . -maxdepth 1 -name "param*.xml" -exec sed -i 's/4010/3010/g' {} \;
# verifica: replace quante volte?
~/tmp/param$ grep -r '3010' . | wc -l
10
# verifica: replace in quali file?
~/tmp/param$ grep -r '3010' .
./param1.xml: <data>30100328000000</data>
./param2.xml: <data>30100328000000</data>
./param3.xml: <data>30100328000000</data>
...
pm :: Mar.19.2010 :: italian :: No Comments »
Metodo di studio
Leggo e trascrivo dalla traduzione italiana del progetto Motion Mountain le indicazioni dell’insegnante che ha scritto questo libro divulgativo di fisica.
Nella mia esperienza di insegnante esiste un metodo che non ha mai fallito nel trasformare uno studente debole in uno di successo: quando si studia un libro, si ripete ogni sezione con parole proprie, ad alta voce. Se non ci si riesce, si rilegge la sezione, finché diventa possibile ricapitolare in parole proprie, ad alta voce.
Il metodo si può usare da soli in una stanza, con amici, o camminando. Se usato con tutto ciò che si legge, il tempo necessario allo studio sarà fortemente ridotto.
Per di più, il piacere di leggere testi gradevoli aumenterà, e il fastidio di leggere testi brutti diminuerà. Gli esperti di questo metodo possono usarlo perfino durante le lezioni, a voce bassa, evitando così di mai prendere appunti.
pm :: Mar.18.2010 :: italian :: No Comments »
Links for 15/3/2010
- Motion Mountain – The Adventure of Physics : The Free Physics Textbook –
- TED Talks – Jamie Oliver: Educazione al Cibo per i Bambini –
- Elettronica e Elettrotecnica – 31 ottimi Programmi Gratuiti –
- Elettrotecnica di base –
- tinc wiki –
- JGoodies :: Java User Interface Design –
pm :: Mar.18.2010 :: italian :: No Comments »
Script utili
Mi appunto un paio di script utili per operazioni che compio spesso.
Come sincronizzare i sorgenti di un progetto sw, senza i file di versionamento
rsync -avz --exclude=.svn /alfa/beta/gamma /epsilon/zeta/theta/
- Il flag -a imposta la sincronizzazione in ‘archive mode’: ricorsivamente ogni file viene copiato, preservando attributi, permessi e riferimenti.
- Il flag -v imposta il ‘verbose mode’.
- Il flag -z agisce sulla compressione nel trasferimento dei dati
- Notare che il path sorgente cosi’ indicato eviterà la creazione di una ulteriore directory nel path target.
Come sincronizzare due directory, in modo generico.
#!/bin/bash # sincronizza la directory remota di documentazione del progetto # con la directory locale di documentazione del progetto OLDIFS=$IFS DIR_FROM="/foo/bar/project_remote/" DIR_TO='/home/foo/project_local' echo -e "i file saranno spostati" echo -e "da --> $DIR_FROM" echo -e "a --> $DIR_TO" echo 'CONFERMI?[y/n]' read conferma if [ "$conferma" != "y" ] then exit fi IFS=$'\n' # dir esiste? if [ ! -d "$DIR_FROM" ] then echo "la dir $DIR_FROM non esiste!" IFS=$OLDIFS exit fi if [ ! -d "$DIR_TO" ] then echo "la dir $DIR_TO non esiste!" IFS=$OLDIFS exit fi # sincronizzazione rsync -avz $DIR_FROM $DIR_TO IFS=$OLDIFS echo '****** OPERAZIONE CONCLUSA ******' exit;
pm :: Mar.18.2010 :: italian :: No Comments »
Manuale di stile
Un sito del governo americano ha pubblicato un magnifico manuale di scrittura.

pm :: Mar.12.2010 :: italian :: No Comments »
Vita iso 9000
Lavorare “dalle otto alle diciassette” (quando va bene). Vivere in ufficio otto ore. Quelle otto ore. Sempre le stesse. Da anni.
Ufficio come prigione quotidiana. Come si fa a resistere tanto?
Daniel H. Pink sostiene in modo documentato quello che è facile immaginare:
nel lavoro più siamo lasciati autonomi, liberi di organizzarci e pure un po’ a briglia sciolta, più possiamo essere creativi, produttivi e qualche volta persino felici
Via http://mestierediscrivere.splinder.com/post/22351734/Motivazione+3.0

pm :: Mar.12.2010 :: italian :: No Comments »
Starship Trooper
La Federazione è regolata da un’autorità suprema: la violenza, da cui dipende ogni altra autorità.
(Lt. Jean Rasczat)

pm :: Mar.08.2010 :: italian :: No Comments »
Links for 4/3/2010
- Debian e sintesi vocale: installazione di festival e mbrola – Guide@Debianizzati.Org –
- Italian Text-to-Speech (by Piero Cosi) –
- FESTIVAL –
- Dashboard – Opensource @ Sourcesense –
- Carlos Sanchez’s Weblog –
- Luca Sartoni: parlare in pubblico (video) | Ignite Italia –
pm :: Mar.08.2010 :: italian :: No Comments »

