Simon Van Der Meer

Il 4 marzo scorso è scomparso Simon Van Der Meer, ingegnere tra le personalità più importanti nella storia del CERN di Ginevra.

Aveva vinto il premio Nobel 1984 assieme a Carlo Rubbia per gli esperimenti che avevano confermato l’esistenza delle particelle Z e W, i bosoni dell’interazione debole, e credo sia l’unico ingegnere ad essere stato insignito con un premio così importante nell’ambito della Fisica. Il suo contributo alla scoperta fu l’invenzione e la realizzazione del raffreddamento stocastico applicato all’acceleratore SPS (Super Proton Synchrotron), un metodo per stabilizzare i fasci di protoni e antiprotoni.

Il CERN gli ha dedicato un elogio nel sito istituzionale.

Nel sito http://nobelprize.org si trovano la lezione di Van Der Meer sul raffreddamento stocastico e la sua autobiografia.

Energie rinnovabili

È un tema che mi sta a cuore da qualche anno, ho anche frequentato un corso di progettazione di impianti fotovoltaici nel 2008 a Padova, al Collegio degli Ingegneri.

Il decreto firmato dal Presidente della Repubblica il 7 marzo sembra mettere in crisi il settore. Il Governo giura di no, ma gli addetti al settore invece dicono che è vero.

Ho cercato di farmi un’idea autonomamente, leggendomi sia la direttiva 2009/28/CE (che il decreto recepisce), che il decreto legge. Ammetto di fare un po’ di fatica a districarmi nel ginepraio di titoli, articoli, commi riferimenti incrociati (suggerimento al parlamento: PERCHÉ NON SCRIVETE LE LEGGI IN HTML COSÌ SI PUÒ LEGGERE UN RIFERIMENTO CLICCANDOCI SOPRA?), per cui ho cercato qualche aiuto. Nel sito del Sole 24 ore ci sono alcuni articoli, come questo, che evidenziano i punti salienti.

Si intitola: Meno incentivi sul fotovoltaico.

E’ di parte? Credo di poter dire di no: il quotidiano è l’organo della Confindustria che ha subito definito buono il decreto. Ma mi pare di capire che le cose non siano, però, così buone.

Può essere utile approfondire, ma l’impressione non è positiva.

Umask e sticky bit

Veloce incursione nel mondo Linux/Unix.

umask = 777 – diritti di lettura / scrittura (in ottale)

il valore umask è il complemento a 128 dei permessi di scrittura. Ci dice quali permessi vogliamo negare sul file più che concedere.

Ad esempio se una directory è leggibile / scrivibile / eseguibile dal proprietario e solo leggibile/eseguibile dalresto del mondo (il gruppo e tutti gli altri), si ha:

  • proprietario = 111 = 7
  • gruppo = 101 = 5
  • altri = 101 = 5

per cui umask = 777 – 755 = 022 (ottale)

Se anche il gruppo dovesse poter scrivere, si deve impostare la directory con

chmod 775 /path/to/dir

ossia umask = 777 – 775 = 002.

umask è un comando Unix che altera permanentemente i diritti di accesso ai file / directory creati dopo il comando per quella shell. Esempio:

marcob@jsbach:~$ umask 022
marcob@jsbach:~$ touch nuovo
marcob@jsbach:~$ ll nuovo 
-rw-r--r-- 1 marcob marcob 0 2011-03-07 15:28 nuovo
marcob@jsbach:~$ umask 002
marcob@jsbach:~$ touch nuovo1
marcob@jsbach:~$ ll nuovo*
-rw-r--r-- 1 marcob marcob 0 2011-03-07 15:28 nuovo
-rw-rw-r-- 1 marcob marcob 0 2011-03-07 15:28 nuovo1

Ma cosa vuol dire:

drwxrwxrwt  15 root root  4096 2011-03-07 14:55 tmp/

cioè cosa significa la t?

Significa che per la directory /tmp/ è stato impostato lo sticky bit (bit adesivo) che fa in modo che nella directory tutti possano scrivere ma solo i proprietari dei file possano rinominarli o cancellarli.

Per i file: il kernel, quando carica nella swap area un file eseguibile, non lo rimuove (lo incolla letteralmente alla swap area) nemmeno quando ha terminato l’esecuzione. Questo, soprattutto alle origini, per fare in modo che i programmi più frequentemente usati dall’utente rimanessero in memoria per avviarli più rapidamente.

Sull’uso di tablespaces separati per dati e indici

Mi sono imbattuto in questo interessantissimo botta e risposta nel sito dell’Oracle.

La domanda è: sarà più performante il database nelle operazioni di lettura e scrittura (e magari anche per i backup) se mettiamo tabelle e indici in tablespace separati?

I DBA con cui lavoro spesso adottano questo espediente per avere prestazioni migliori, ma alla Oracle stessa non ritengono così certa questa convinzione,  che, a quanto pare, risulta molto diffusa. La separazione può essere utile, ma non per le ragioni per cui di solito viene adottata.

Leggetevi la discussione in questo interessante forum: Ask Tom Oracle … almeno fino ad un certo punto rimane lucida; poi, come capita spesso nei forum, si va a farfalle.

“Howto” per l’installazione di un sistema LAOP (Linux Apache Oracle PHP)

Ho avuto la necessità di realizzarmi un ambiente di sviluppo basato su Linux, Apache e PHP ma con il vincolo di adottare una base dati Oracle.

Oracle da’ la possibilità di utilizzare un server ad uso test Oracle eXpress Edition. Il sistema che ne deriva l’ho chiamato LAOP, ricordando il molto più popolare ambiente LAMP che si basa sul DBMS MySQL (che è di proprietà di Oracle).

Ho seguito un utile howto sull’ottimo sito http://www.danilovizzarro.it/ ma ho voluto “vivisezionare” gli script di automazione per capire ciò che facevano. Ne è risultato un piccolo howto, redatto ovviamente in LaTeX ;-), che volentieri metto a disposizione con la speranza che risulti utile.

XML

Un piccolo problema: avevo la risposta di un web service e volevo renderla leggibile con maggior facilità. I web service rispondono (nella maggior parte dei casi) in XML, l’indentazione non è necessaria per un parser (il software che legge il file) ma per l’occhio umano è preferibile vedere come si annidano i nodi nel gioco di scatole cinesi.

Due soluzioni:

  1. in Ubuntu, aprire Synaptic e cercare xmlindent (probabilmente non è installato); una volta installato si lancia
    $ xmlindent file.xml > file1.xml

    Per chi vuole qualche info in più, man xmlindent

  2. soluzione per chi smanetta un po’ di più: applicare una trasformazione XSLT come suggerito in questo sito. Per chi non conosce le trasformazioni XSLT ho fatto qualche esempio in questa risorsa.

Openoffice.org

Mi è capitato talvolta che all’apertura di Open Office (versione 2.2) venisse avviata la procedura di recupero file corrotti (di solito in seguito ad un crash del programma o ad un arresto inatteso del sistema). Ogni tanto capita che, se fallisce il ripristino di uno o più files, al suo avvio Open Office mostri la schermata di ripristino perché i file da ripristinare non sono più disponibili nella cartella /tmp/, e il ripristino non è comunque più possibile. Questa situazione è destinata a permanere in eterno perché il recupero non può più essere effettuato.

Un modo per rimediare è il seguente:

Posizione file dei recuperi OpenOffice:

 <home>/.openoffice.org/user/registry/data/org/openoffice/Office/Recovery.xcu

La guida online (F1) recita:

Avviare il Programma di notifica errori. Nella maggior parte dei casi di crash del software, il Programma di notifica errori si avvia automaticamente. Tuttavia, se il software sembra essere bloccato e il programma non si avvia automaticamente potete avviarlo manualmente:
Accedete alla cartella del programma {office_install_path}/ e avviate il file crashrep.

Workaround alternativo:

Esco da OO (se già aperto). Con OO spento:

 $ vi <home>/.openoffice.org2/user/registry/data/org/openoffice/Office/Recovery.xcu

cancello le righe relative ai documenti citati nel prompt iniziale (nel campo oor:name) e le sostituisco con le righe:

 <node oor:name="recovery_item_2" oor:op="remove"/>

dove anziché item_2 può essere un item diverso, di solito più righe uguali in ordine da 1 a 15). Salvo e riavvio OO. Non appare più il prompt di recovery.

Nella versione 3.2 che ho in questo momento, tuttavia, il problema è stato risolto, per cui non serve alcun intervento (la coda dei file da ripristinare si svuota da sola).

Lucene, un potente motore di ricerca open source

Mi è capitato due anni fa di giocare con un motore di ricerca molto potente e flessibile: Lucene, uno dei prodotti dell’Apache Group. Lucene (pronunciato all’incirca lussìn) è scritto in Java ed è integrabile in un software qualsiasi in cui occorra avere a disposizione una funzione di ricerca su filesystem ma anche su database (io ad esempio l’ho usato in quest’ultima situazione).

Ha una API molto fornita a disposizione, buona documentazione ed è tutto sommato semplice sia da installare / configurare che da usare.

Ha funzionalità di ricerca fuzzy come anche su fornitura di espressioni di ricerca (quella che fa uso degli operatori OR, -, e altri, ma che pochi conoscono e usano) e di indicizzazione su più fonti dati, come detto.

Ho scritto un piccolo manualetto per l’installazione, nella speranza che possa essere utile. Di solito quello che scrive il manuale dimentica sempre un caso particolare che in una determinata situazione trasformano immantinente il manuale in carta igienica. Io sicuramente ci sarò riuscito. Però mi sono soffermato, forse, su dettagli che sono scontati per i più bravi.

Premi Breakthrough of The Year 2010

Sono dieci premi assegnati ogni anno da Physics World ai 10 maggiori successi della ricerca nell’ambito della Fisica (a cui sia riconosciuto il rango di una “svolta”).

Quest’anno il primo premio è stato assegnato ai fisici dell’esperimento ALPHA del CERN di Ginevra per avere isolato per 170 ms 38 atomi di antiidrogeno (ho fatto un piccolo tweet anch’io circa un mese fa su questa osservazione straordinaria).

I fisici sperano di osservare delle differenze nei livelli energetici tra idrogeno e antiidrogeno per trovare una motivazione dell’asimmetria nella presenza del primo rispetto al secondo nell’universo.

I dettagli nel sito di Physics World.

CakePHP

Dopo molti tentennamenti, visto il framework Struts per Java, ho deciso di iniziare a sviluppare applicativi PHP con il tool MVC CakePHP.

Il paradigma MVC è una configurazione architetturale (design pattern), un acronimo per Model – View – Controller (approfondimento su Wikipedia inglese).

MVC design pattern - Tratto da Wikipedia

MVC design pattern - Tratto da Wikipedia

Ogni applicativo viene separato in tre componenti interagenti che sono:

  • Model (il modello): è in sostanza il modello dati su cui si basa l’applicativo, può essere un database, o un file xml, o altro ancora. Nel caso del database relazionale, nel modello definisco lo schema entità/relazione, cioè tutto l’insieme delle tabelle e dei vincoli di integrità referenziale: è la parte di PHP che parla direttamente con il database
  • Controller (la logica) definisce le azioni sulle entità del modello (vista, inserimento, modifica); un click dell’utente chiama un componente del controller e una volta terminata l’elaborazione del modello, il controllore invoca la vista adeguata per visualizzare i risultati.
  • View (la presentazione) definisce come visualizzare il risultato delle azioni sul modello (listato di una tabella, inserimento o variazione di una o più tabelle).

CakePHP fornisce nativamente un ambiente di controllo della connessione a database (scaffold, impalcatura) che consente a costo 0 di controllare se la configurazione del modello e le principali azioni su di esso sono funzionanti. Tempo fa avevo scritto uno scaffold che avevo chiamato TABULA che fa la stessa cosa.