Fabiola Gianotti nuovo Direttore Generale del CERN di Ginevra.

Che bello 🙂

Una donna, una fisica, dirigerà il CERN di Ginevra dal 2016, ricevendo il testimone dall’attuale direttore Rolf Heuer. Il quale ha dichiarato:

Fabiola Gianotti è una scelta eccellente come mio succesore. È stato un piacere lavorare con lei per molti anni. Non vedo l’ora di lavorare con lei per la transizione nel 2015, e sono certo che il CERN sarà davvero in buone mani.

Fabiola Gianotti ha conseguito il PhD in Fisica a Milano nel 1989, presso l’Università Statale (anche all’epoca era d’uso non parlare bene dell’Università italiana, però a quanto pare le eccellenze le ha sapute dare lo stesso).

È diplomata in pianoforte.

La Gianotti ha dichiarato:

Il CERN è un centro di eccellenza scientifica e una fonte di orgoglio e ispirazione per i fisici da tutto il mondo, CERN è anche una culla per la tecnologia e l’innovazione, una sorgente di conoscenza ed istruzione, e un luminoso, concreto esempio di cooperazione scientifica mondiale e di pace.

In mezzo a questa umanità che sta impazzendo abbiamo bisogno di figure come te.

Attendevo la pletora di politicanti che si sperticasse in esagerati complimenti e inopportune note scioviniste come “successo dell’eccellenza italiana”, “trionfo del made in Italy” (forse questa non l’ho ancora sentita, ma è di sicuro dietro l’angolo) e simili. Non sono stati inaugurati tunnel per l’occasione.

E quindi ben venga questa doverosa precisazione di Andrea Aparo Von Flüe. Che condivido dalla prima all’ultima riga.

Pillole Java/Oracle

Oracle HQUn problema, usando le connessioni in pool:

org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (IO Error: NL Exception was generated)

Nel sito di Tom Burleson e nella Oracle Community il suggerimento è di aggiungere una direttiva nella stringa di connessione:

(SERVER=DEDICATED)

In realtà, nel mio caso il problema è molto più banale, ma sufficiente a farmi perdere un po’ di tempo. Nel descrittore jdbc:

(
    description=
    (
        address_list=
        (
            address=
            (protocol=tcp)
            (host=dbtest.mydomain.it)
            (port=1521)
        )
    )
    (
        connect_data=
        (
            service_name=ora.mydomain.it
         )
     )
 )

manca la parentesi segnata in rosso

Responsive Web Design

Responsive Web design LayoutNato nel 2012, è una delle maggiori tendenze nel web design che si è trovato a dover affrontare un problema nuovo: come visualizzare bene pagine web in una miriade di scelte tra tipi di piattaforma (pc, tablet, smartphone), dimensioni dei monitor e risoluzioni diverse.

Il 29 agosto 2012 il W3C ha pubblicato una bozza con la proposta “HTML Responsive Images Extension”, documento non normativo nel quale vengono affrontati i nodi della questione e vengono proposti sia degli ulteriori attributi per il tag <img>, sia dei nuovi tag come <picture> che consentano al browser, in fase di download del materiale, di selezionare le immagini che meglio si adattano al dispositivo.

I quattro punti di miglioramento proposti sono

  • device-pixel-ratio
  • viewport-based selection
  • image format-based selection
  • Art direction-based selection

Device pixel ratio per tenere conto della diversa densità di pixel se le dimensioni dell’immagine sono fisse

Viewport based selection per poter scegliere immagini in dimensioni diverse (diversa larghezza in pixel ad esempio)

Image format based selection: il browser, se è capace di trattarli, sceglie i formati con maggiore compressione (JPEG XR al posto di JPEG ad esempio; JPEG XR ha una capacità di compressione maggiore)

Art direction based selection: L’immagine viene mostrata tutta se dimensioni del viewport e capacità di risoluzione dello schermo lo consentono, oppure ne viene mostrata solo una parte, dichiarata più importante dall’autore (art director), se l’immagine non ci sta.

 

Pillole di PHP e Yii

Yii è un framework di sviluppo PHP secondo il pattern MVC di cui ho parlato qui e qui. Il sito (fornitissimo) è qui.

La pillola riguarda la gestione dei campi data, campi testo (in html < 5 non esistono i campi data) ai quali Yii aggiunge funzionalità tipiche di un controllo per le date:

Il frammento con cui si definisce questo comportamento è il seguente

    $this->widget('zii.widgets.jui.CJuiDatePicker',array(
        'name'=>'Payment[deadline]',
        'model'=>$model,
        'attribute'=>'deadline',
        'value'=>$model->deadline,

        'options'=>array(
            'showAnim'=>'slide',
            'dateFormat' => 'yy-mm-dd',
            'defaultDate'=>$model->deadline,
        ),
        'language'  => 'it',
        'htmlOptions'=>array(
            'style'=>'height:20px;background-color:lightgreen;color:white;',
        ),
    ));

Attenzione all’array passato come argomento al widget(), evidenziato in grassetto:

  • ‘name’ => ‘Payment[deadline]’ ← è il nome della classe [nome dell’attributo], in questo caso classe = Payment, attributo = deadline
  • ‘model’=>$model,                       ← modello a cui fa riferimento la view
  • ‘attribute’=>’deadline’,                ← nome dell’attributo
  • ‘value’=>$model->deadline,     ←valore dell’attributo

Quest’ultimo attributo (value) fa in modo che venga visualizzata la data nel campo testo.

Invece l’attributo

'defaultDate'=>$model->deadline

invece fa in modo che nel calendario drop down venga evidenziata con un rettangolino la data come si vede in figura:

Yii-cjuiDatePicker

 

JAVA fundamentals

Questo articolo parla del sistema operativo in cui può essere eseguito un programma scritto in Java.

Qual è? Tutti.

Ovvero: in una macchina virtuale!

Questo inguaggio nasce con l’obiettivo di non avere bisogno di essere “portato” da un sistema operativo ad un altro. Il programmatore non deve avare compilatori/linker specifici per ciascun sistema operativo ma deve preoccuparsi solo di scrivere codice senza preoccuparsi dove questo potrà essere eseguito. L’infrastruttura farà in modo da rendere ugualmente eseguibile questo codice.

Ma per ottenere questo dobbiamo effettuare una astrazione della macchina fisica, in modo che il programma possa essere compilato ed eseguito da questa macchina astratta e questa sia l’unica cosa che debba mediare con l’architettura sottostante senza però preoccupare minimanente lo sviluppatore.

La tecnologia (originariamente sviluppata da Sun Microsystem ma poi presa in carico da Oracle Inc.) è stata stratificata per mettere a disposizione

  • un compilatore
  • un linker e un ambiente di esecuzione
  • uno strumento di gestione del ciclo di vita (development / test / run / deploy)

In questo contesto questi tre livelli sono denominati JVM, JRE, JDK.

Quali sono le differenze tra JDK, JRE e JVM?

L’immagine risponde in sintesi alla nostra domanda

Java: la d ifferenza tra JVM JDK e JRE
La differenza tra JVM JDK e JRE

È un sistema di scatole cinesi. Ma vediamo in dettaglio i tre blocchi

JVM

JVM (Virtual Machine) è una macchina astratta (o virtuale). È una specificazione che fornisce un ambiente esecutivo (runtime environment) – una simulazione di un calcolatore con processore e RAM – nel quale il bytecode (lo pseudo-codice macchina che gira nello pseduo-processore) può essere caricato nella memoria virtuale ed eseguito.

Le JVM sono disponibili per una ampia varietà di piattaforme harware e software. JVM, JRE e JDK sono dipendenti dalla piattaforma perché le configurazioni per ogni sistema operativo sono diverse e, come detto, questo non deve essere una preoccupazione dello sviluppatore che deve solo scegliere la JDK del sistema operativo in cui lui è abituato a lavorare. Però, Java è indipendente dalla piattaforma: quindi lo stesso codice sorgente può essere eseguito senza cambiare una virgola in qualsiasi sistema operativo. Quello che cambia è l’implementazione della Virtual Machine. La JVM fa le seguenti cose principali:

  • interpreta il codice sorgente con il just-in-time compiler e produce il bytecode allo stesso modo di un interprete (qui è molto diverso il funzionamentto dai programmi come C++ o C che vengono comletamente convertiti in codice macchina e poi eseguiti).
  • esegue il bytecode
  • gestisce il threading, ovvero le chiamate a funzione ed il ritorno al programma chiamante, le ricorsioni, gestendo il program counter e lo stack delle chiamate – ciò che fa un sistema operativo ma ad un livello astratto, senza un vero processore sotto).
  • gestisce la memoria virtuale (creazione e distruzione degli oggetti). Su questo particolare aspetto, che è decisamente critico, se volete potete leggere quest’altro articolo del mio blog.

Una volta che però esiste l’ambiente esecutivo, che è il prossimo passaggio.

JRE

Java Runtime Environment
Runtime Environment

JRE (Runtime Environment). Serve a fornire un ambiente di esecuzione. È l’implementazione della JVM. Esiste fisicamente. Contiene le librerie (e ne gestisce i collegamenti) necessarie per la funzionalità del programma e inoltre contiene altri files che la VM usa durante l’esecuzione (javaw, rt.jar, etc).

JDK

JDK (Development Kit). Anche questo esiste fisicamente. Contiene il JRE + strumenti per lo sviluppo (javac, javaws, etc)

java Development Kit
Development Kit

Come conoscere la versione della JRE correntemente in uso

marcob@jsbach:/opt$ java -version
   java version "1.6.0_26"
   Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
   Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

Come cambiare JRE/JVM in corsa

Si usa il comando update-alternatives, con l’opzione –config java:

marcob@js:/usr/lib/jvm$ sudo update-alternatives --config java 

Sono disponibili 4 scelte per l’alternativa (che fornisce /usr/bin/java).

Sel Percorso                                    Priorità  Stato   
-----------------------------------------------------------------------------     
 0   /usr/lib/jvm/java-7-oracle/jre/bin/java        1095  modalità automatica     
 1   /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061  modalità manuale     
 2   /usr/lib/jvm/java-6-oracle/jre/bin/java        1092  modalità manuale     
 3   /usr/lib/jvm/java-7-oracle/jre/bin/java        1095  modalità manuale
*4  /usr/lib/jvm/java-8-oracle/jre/bin/java         1094  modalità manuale 

Risorse nel blog

Un (presumibilmente) interessante articolo sulla gestione della memoria di una JVM

Bibliografia

Polinomi di Bernstein e curve di Bézier

bezier-ribbon2In questo breve articolo vengono delineati in modo elementare gli argomenti matematici alla base delle curve di Bézier e la loro implementazione nei software tool di sviluppo grafico vettoriale. Questi appunti sono stati originariamente scritti per le classi IV dell’ITIS “Carlo Zuccante” di Venezia-Mestre come supporto didattico per le lezioni del modulo “Grafica per il web” nell’ambito del corso di Progettista di siti web tenuto nell’omonimo Istituto nel 2000.

Ho trovato l’occasione di pubblicarlo.

Generatore di numeri casuali puri utilizzando la turbolenza atmosferica

Paolo Villoresi, Giuseppe Vallone, Davide Marangon e altri collaboratori del gruppo di Quantum Communications del DEI Dipartimento di Ingegneria dell’Informazione dell’Università di Padova, hanno messo a punto nel 2013 un prototipo che permette di generare numeri casuali puri tramite un raggio laser inviato ad un ricevitore sufficientemente lontano attraverso l’atmosfera. Il loro lavoro è stato pubblicato pubblicato su ArXiv.org e da nature.com.

Perché numeri casuali puri? I numeri casuali utilizzati finora nei computer sono numeri pseudo casuali cioè generati in modo deterministico con algoritmi che in sostanza implementano dinamiche caotiche nel senso del caos deterministico: un sistema deterministico con caratteristiche di non linearità, presenza di punti di equilibrio iperbolici e sensibilità ai valori iniziali, che si comporta apparentemente come un sistema casuale ma che casuale non è perché vale il determinismo alla Cauchy (fissato un punto si può sempre determinare il punto successivo con certezza – se il punto iniziale è noto con certezza).

Nei numeri casuali puri o genuini invece conoscere lo stato del sistema ad un certo istante non ci dà alcun modo di prevedere con certezza dove sarà il sistema l’istante successivo, possiamo solo stabilire delle probabilità.

Il metodo messo a punto da Villoresi ed i suoi collaboratori si avvale delle proprietà della turbolenza atmosferica nella diffusione di un raggio laser. Il prototipo è alquanto ingombrante: si tratta di ricevere il fascio laser ad una distanza di 143 km, essendo il trasmettitore laser posizionato nell’isola di La Palma ed il ricevitore nell’isola di Tenerife. Il fronte d’onda, approssimativamente sferico a grande distanza, viene deformato dal diverso indice di rifrazione dovuto alla turbolenza dell’aria, e viene raccolto da un sensore a matrice nel quale avviene un campionamento delle intensità e una codifica.

Il pattern di diffusione del fascio si dispone in una scacchiera in cui caselle nere e bianche (per semplificare) si scambiano continuamente di posto in modo del tutto impossibile da prevedere; la codifica di ogni scacchiera (frame) viene associata ad un numero per ottenere quindi una successione di numeri casuali puri.

In numeri ottenuti sono stati sottoposti a test di casualità passandoli tutti: il generatore è formidabile.

Nell’articolo pubblicato sull’Archivio vi è anche un’applicazione alla QKD (Distribuzione di Chiavi Quantistiche) nell’ambito della Quantum Information.

È iraniana la prima donna della storia a vincere una medaglia Fields

 

Maryan Mirzakhani ha vinto la medaglia Fields, l’equivalente del premio Nobel assegnato annualmente al matematico ritenuto il migliore.

La medaglia Fields viene assegnata durante l’annuale Congresso Internazionale dell’International Mathematical Union per meriti scientifici a matematici di non oltre quarant’anni, ed è la prima volta che questo prestigioso premio viene assegnato ad una donna.

La prof. Mirzakhani è nata a Teheran nel 1977 (che all’epoca era ancora Persia) ed ha una carriera di matematica iniziata molto precocemente: a 17 anni ha vinto le Olimpiadi Internazionali della Matematica a Hong Kong, e anche l’anno successivo a Toronto. Attualmente vive negli Stati Uniti e insegna alla Stanford University.

Il premio le è stato riconosciuto per i suoi lavori sulle superfici di Riemann. Nella sua attività di ricercatrice si è occupata, tra le altre cose, anche di teoria ergodica e geometria iperbolica.

Ulteriori approfondimenti su Wikipedia e BBC.

Oh Captain, my Captain

Gli studenti del college di Welton salutano il prof. Keating rompendo l'etichetta, la formalità e la convenzione

Gli studenti del college di Welton salutano il prof. Keating rompendo l’etichetta, la formalità e la convenzione

Era il mio attore preferito senza alcun dubbio.
Mi è risultato subito simpatico fin da quand’ero piccolo in cui interpretava Mork da Ork. “Nano Nano!”.

E giusto domenica l’ho visto in un film che avevo registrato, “The Big White” e ho pensato che la voce di Carlo Valli, doppiatore in quasi tutti i suoi film di successo, si sposava molto bene con il personaggio. Anzi mi pare di ricordare che Williams si fosse pure congratulato con lui per la fedeltà e l’abilità con cui dava la voce ai suoi personaggi.

Ho pensato anche che una volta intervistato da Vincenzo Mollica aveva lanciato un invito a Roberto Benigni per fare un lavoro insieme. E mi sono chiesto quando lo avrebbero fatto. Ho pensato che gli sono grato per tutti i film in cui l’ho visto (Good Morning, Vietnam, Toys – Giocattoli, La leggenda del Re Pescatore, Mrs. Doubtfire – Mammo per sempre, Will Hunting – Genio ribelle, Al di là dei sogni, Patch Adams, One Hour Photo, La musica nel cuore – era bravo anche ad interpretare personaggi antipatici! -), ma soprattutto per la sua interpretazione del prof. Keating e per tutti i messaggi usciti da quel film L’attimo fuggente (Dead poets society), che ho fatto miei per sempre. La sua faccia si sposava benissimo con l’intelligenza, la profondità e la simpatia del personaggio.

Una delle mie battute preferite del film è:

“Non scriviamo poesie perché è carino, ma per rimorchiare le donne!”

Voglio ricordarlo con questa canzone della Starland Vocal band che è la sigla dei titoli di coda di Hunting – Genio ribelle, in cui recitava in un altro ruolo di insegnante – musa ispiratrice con Matt Damon:

http://youtu.be/Fz1ex78QeQI
Ciao Robin, anche tu adesso sei concime per i fiori…

Perché l’orbita della terra attorno al Sole è ellittica?

Mi è stata posta questa domanda e ho cercato di rispondere.

Qui c’è l’articoletto.

Se volete anche il sito Treccani ha un articolo in proposito, lieto di vedere che i passaggi seguiti sono gli stessi.