Posts RSS Comments RSS 139 Posts and 54 Comments till now

Archive for March, 2010

Links for 21/3/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>
...

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.

Links for 15/3/2010

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/
  1. Il flag -a imposta la sincronizzazione in ‘archive mode’: ricorsivamente ogni file viene copiato, preservando attributi, permessi e riferimenti.
  2. Il flag -v imposta il ‘verbose mode’.
  3. Il flag -z agisce sulla compressione nel trasferimento dei dati
  4. 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;

Manuale di stile

Un sito del governo americano ha pubblicato un magnifico manuale di scrittura.

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

Starship Trooper

La Federazione è regolata da un’autorità suprema: la violenza, da cui dipende ogni altra autorità.

(Lt. Jean Rasczat)

Links for 4/3/2010