Ancora una volta un Nobel per la Fisica per lavori sull’ottica

Agostini, Krausz, L'Huillier insigniti del premio Nobel per la Fisica 2023
Agostini, Krausz, L’Hullier insigniti del premio Nobel per la Fisica 2023

L’Ottica sembra diventata la regina delle discipline all’interno della Fisica: già nel 2022 erano stati premiati con Nobel tre fisici (Aspect, Clauser e Zeilinger) per i lavori sui fotoni e il loro contributo allo sviluppo dell’Informazione Quantistica. Quest’anno si parla sempre di laser (l’entanglement di fotoni si produce con i laser) da un punto di vista più “meccanico”, per così dire: sono stati premiati Pierre Agostini (Ohio State University, Columbus, USA), Ferenc Krauss (Max Planck Institute of Quantum Optics, Garching, Germany; Ludwig-Maximilians-Universität München, Munich, Germany) e Anne l’Hullier (Lund University, Lund, Sweden) per i loro lavori sulla produzione di impulsi laver ultrabrevi.

Quello di cui voglio parlarvi qui è qualcosa che ha a che vedere con questo premio. La motivazione per esteso è la seguente:

for experimental methods that generate attosecond pulses of light for the study of electron dynamics in matter

Dunque il premio è per i lavori sperimentali che generano impulsi di luce di durata dell’ordine dell’attosecondo e poi è citato l’impiego di questa tecnica: quella di osservare la dinamica degli elettroni nella materia.

Ora non è che possiamo vedere la traiettoria vera e propria degli elettroni: in quanto particelle quantistiche, le loro variabili dinamiche come posizione e velocità (dette variabili coniugate) non possono essere note simultanemente con precisione arbitraria per il principio di indeterminazione di Heisenberg: il prodotto delle incertezze è maggiore o uguale ad una quantità piccola:

\Delta p \Delta x \geq \frac{\hbar}{2}

dove \Delta p è l’incertezza sull’impulso (proporzionale alla velocità) e \Delta x è l’incertezza sulla posizione. La relazione è quanto meno di proporzionalità inversa, per cui se ho una piccola inceretzza sulla posizione ho grande incertezza sulla velocità e viceversa.

Però possiamo conoscere con precisione una delle due variabili e la tecnica degli impulsi ultrabrevi ci aiuta in questo.

Quello che mi preme di dire è questa cosa degli impulsi ultrabrevi.

Multipli e sottomultipli di dieci

Si potrebbe pensare di realizzare un impulso ultrabreve con un meccanismo meccanico o elettronico del tipo otturatore utilizzato nelle fotocamere digitali o negli smartphone. Nulla di tutto questo. La risoluzione temporale con questi mezzi arriva al massimo all’ordine del microsecondo (1 \mu s = 10^{-6} s = 0,000001 s = 1 milionesimo di secondo). Io ho visto funzionare sistemi di produzione di impulsi dell’ordine del femtosecondo; il Nobel è stato vinto per una tecnica che ha permesso di abbassare di altri tre oridini di grandezza la durata di questi impulsi e raggiungere gli attosecondi.

Fermiamoci un attimo a rivedere questi prefissi standard (fissati dal Sistema Internazionale di Misura ISO) per indicare le frazioni dell’unità.

sottomultipliprefissosimbolopotenzamultipliprefissosimbolopotenza
millesimomillim10^{-3}migliaiakilok10^3
milionesimomicro\mu10^{-6}milioniMegaM10^6
miliardesimonanon10^{-9}miliardiGigaG10^9
milionesimo di miliardesimopicop10^{-12}milioni di miliardiTeraT10^{12}
miliardesimo di miliardesimofemtof10^{-15}miliardi di miliardiPetaP10^{15}
milionesimo di miliardesimo di miliardesimoattoa10^{-18}milioni di miliardi di miliardiExaE10^{18}
Tabella dei multipli, e sottomultipli dell’unità, con potenza di dieci, prefisso e simbolo

Quest’anno è stato molto divertente vedere testate giornalistiche attribuire il premio agli scienziati per la scoperta o l’invenzione dell’attosecondo.

Tuttavia gli ordini di grandezza più in basso nella tabella sono molto al di fuori del nostro senso comune. Ad un kilogrammo, o un Gigabyte o un microsecondo forse ci arriviamo. Gli altri prefissi sono quantità o troppo grandi o troppo piccole per poterli immaginare subito.

Ma una proporzione può esserci d’aiuto.

Il numero di femtosecondi in un secondo è 10^{15}. Ci sono perciò più femtosecondi in un secondo, che giorni solari in tutta la storia dell’universo dal Big Bang a oggi (che sono circa 10^{12}: l’età dell’Universo è pari a 12 \times 10^{12} giorni, un secondo è pari a 10^{15} femtosecondi).

Il numero di attosecondi in un secondo è 10^{18}. Ci sono più attosecondi in un secondo, che secondi in tutta l’età dell’Universo (che sono circa 4,354 \times 10^{17}).

Come vengono prodotti impulsi dell’ordine del femtosecondo

Il concetto chiave qui è la durata estremamente breve di questi impulsi. La capacità di generare impulsi laser così brevi è fondamentale per molte applicazioni scientifiche e tecnologiche avanzate.

Questi impulsi laser sono così corti che possono essere utilizzati per esplorare e studiare eventi molto veloci o piccolissimi. Ad esempio, vengono usati in laboratori scientifici per studiare cosa succede quando le particelle microscopiche si muovono o interagiscono tra loro.

Gli impulsi laser ultrabrevi sono brevissimi flash di luce concentrata. Per capire meglio, immagina una torcia elettrica che emette un lampo di luce molto breve, tanto breve che dura solo una frazione di secondo. I laser ultrabrevi sono simili, ma la loro luce è estremamente concentrata e dura solo per un tempo infinitesimale.

Una delle tecniche usata per produrre impulsi al femtosecondo l’ho studiata con il prof. Paolo Villoresi nel 2015 ai Laboratori LUXOR dell’Istituto di Fotonica e Nanotecnologie (IFN) del CNR di via Trasea a Padova, e si chiama mode locking.

Laser

Il laser è una speciale lampada in cui una sorgente convenzionale (una lampada normale) è racchiusa in una cavità tra due specchi parabolici (cavità di Fabry-Perot). Le varie frequenze contenute nella luce prodotta dalla lampada si riflettono avanti e indietro sugli specchi, ma solo le lunghezze d’onda che sono sottomultiple della lunghezza della cavità sopravvivono costituendo onde stazionarie(funziona allo stesso modo delle corde di una chitarra: si impone solo un’onda stazionaria tra ponticello e capotasto, più le armoniche).

Poi quest’onda stazionaria investe uno spessore di materiale attivo, un materiale che amplifica una determinata gamma di frequenze e smorza tutte le altre per cui i modi – le frequenze – che sopravvivono sono molto pochi ma vengono amplificati tantissimo. A seconda del materiale attivo abbiamo vari tipi di colori e di potenze di laser: a rubino,

Il mezzo attivo aggiunge radiazione della stessa frequenza e fase dell’onda incidente attraverso l’emissione stimolata di radiazione, grazie a elettroni che in una prima fase vengono pompati a livelli energetici superiori assorbendo l’energia della lampada (che in questo contesto viene chiamata pompa) e poi ricadono nel loro livello energetico fondamentale, emettendo fotoni dello stesso colore e della stessa fase. Questo fenomeno dell’emissione stimolata della radiazione è stato studiato da Albert Einstein che ha scritto le equazioni che si usano tutt’ora per progettare i laser (teoria semiclassica dell’assorbimento della radiazione).

LASER è infatti acronimo per Light Amplification by Stimulated Emission of Radiation.

Da qui proviene il fatto che il laser costituisca una sorgente particamente quasi monocromatica e quasi rettilinea (il fascio praticamente non si allarga come avviene con i fanali dell’automobile). E il meccanismo di emissione stimolata di radiazione luminosa del mezzo attivo fa sì che le onde siano anche in fase per cui il laser si dice costituire una sorgente di radiazione coerente: i fotoni oscillano tutti insieme come un’orchestra d’archi in cui gli archetti si muovo su e giù tutti insieme.

Tra gli effetti che consentono di distinguere una sorgente coerente dalla luce di una torcia elettrica è la brillantezza e il rumore di puntinatura (speckle noise) che è quel riflesso di piccolissimi puntini brillanti che raggiungono i nostri occhi quando un fascio laser colpisce un corpo come un muro o un granello di polvere nell’aria.

Speckle Noise o rumore di puntinatura
Fig. 1: Speckle Noise o rumore di puntinatura

Tecnica del mode locking e impulsi di durata dei femtosecondi

Questa tecnica consente la produzione di treni di impulsi ultrabrevi, cioè della durata dell’ordine
del pico o del femtosecondo. Durate cosı̀ brevi sono molto al di là delle possibilità dell’elettronica
convenzionale per produrre commutazioni del guadagno o delle perdite nella cavità, che sono altre due tra le
tecniche per ottenere laser impulsati.

Un laser normalmente oscilla su diversi modi longitudinali le cui frequenze sono separate da
una spaziatura tipica del risuonatore di Fabry-Perot:

\nu_F = \frac{1}{T_F} = \frac{c}{2d}

d essendo la distanza tra gli specchi del risuonatore, T_F il periodo di attraversamento della luce della distanza complessiva avantie indietro della cavità, quindi 2d.

Pensate che questo è esattamente il modo con il quale si calcola anche la frequenza a cui oscilla una corda di chitarra.

Questi modi di solito oscillano indipendentemente, ma per mezzo di un intervento esterno è possibile introdurre un accoppiamento, agganciando le fasi dei singoli modi.

In generale la sovrapposizione di N modi di frequenza multipla della frequenza centrale ν0 :

\nu_q = \nu_0 + q \nu_F \;\;\;(1)

(con q numero intero) dà origine ad un campo:

U(z,t) = \sum_q A_q e^{i 2\pi \nu_q (t-z/c)}

dove i fattori A_q sono dei numeri complessi che caratterizzano il modulo e la fase di ogni modo.

Il modulo |A_q| è funzione della curva di guadagno del mezzo e delle perdite, mentre la fase
arg A_q è casuale, a meno che non interveniamo per agganciare queste fasi tra di loro

Supponendo che i moduli dei modi siano tutti uguali e in fase, si ottiene, usando la (1) e raccogliendo l’esponenziale con \nu_0 :

U(z,t) = \mathcal{A}(t -z/c) e^{i 2\pi \nu_0 (t-z/c)}

dove

\mathcal{A}(t) = \sum A_q e^{i q2\pi t/T_F}\;\;\;(2)

Se prendiamo tutti gli Aq = A ∈ R, la (2) è una somma parziale di una serie geometrica per cui (vi risparmio i passaggi):

\mathcal{A}(t) = A \frac{\sin N\pi t/T_F}{\sin \pi t/T_F}

e quindi l’intensità del fascio laser è data da:

I(z, t) = |A|^2 \frac{\sin^2 N\pi t/T_F}{\sin^2 \pi t/T_F}

L’intensità è rappresentata in fig. 2 da cui si può intuire il treno di impulsi e anche quanto essi possano essere resi brevi. Questa durata nei laser reali può arrivare anche a 10 fs. La spaziatura temporale tra gli impulsi è 2d/c mentre la durata di un impulso è pari a 2d/N c. Quindi agganciando un gran numero di modi (N → ∞) si può rendere questo tempo molto piccolo.

Treno d’impulsi risultanti dalla sovrapposizione di modi con fase agganciata
Fig. 2: Treno d’impulsi risultanti dalla sovrapposizione di modi con fase agganciata

Devo dire che qui la necessità di produrre impulsi ultrabrevi e molto intensi era la necessità di scatenare un fenomeno che si chiama Spontaneous Parametric Down-Conversion (SPDC) che consiste nel creare in un cristallo un’onda secondaria che corrisponde alla creazione di due fotoni entangled che servono per gli esperimenti di misura della violazione della diseguaglianza di Bell.

La tecnica dell’attosecondo è invece necessaria per poter fotografare gli elettroni.

Visita a due acceleratori dei Laboratori Nazionali di Legnaro (LNL – INFN)

Ho preso parte alla visita guidata dei laboratori dell’INFN di Legnaro (Padova), organizzata dalla Fondazione Ingegneri di Padova che si è svolta martedì 11 luglio 2023 ed è stata un’occasione per mettere il naso in alcune delle macchine che mi hanno sempre affascinato: gli acceleratori di particelle.

Ho avuto, in passato, l’occasione per vedere da vicino macchine simili, anche se di dimensioni molto, ma molto maggiori, nelle due visite che ho fatto al CERN di Ginevra nel 1993 e nel 2018 (in cui ho visto, rispettivamente, il LEP e l’LHC).

Qui non solo le dimensioni sono più contenute ma sono anche diversi la tipologia e gli scopi di queste macchine. Tuttavia per me il continuo raffronto tra queste due realtà è risultato inevitabile.

Ad illustrare le attività e la strumentazione dei laboratori sono stati tre tecnici, l’ing. Stefania Canella e i dott. Giorgio Keppel e Oscar Azzolini, scienziati dei materiali.

Il progetto SPES

Come ha detto nella presentazione il dott. Keppel, i LNL sono un’azienda che eroga un prodotto: fasci di ioni stabili che sono a disposizione 24/7 per chiunque abbia interesse a testare strumenti, macchine o a effettuare studi nell’ambito della fisica nucleare. L’ambito di applicazione è dunque la fisica dei nuclei e le energie prodotte da questi fasci raggiungono al massimo 1.5 GeV, uno scenario di applicazioni completamente diverso da quello del CERN, dove si accede a scale di distanza molto più piccole, con energie molto più elevate.

La facility che abbiamo visitato prende il nome di SPES (Selective Production of Exotic Species) e si occupa di produrre fasci di ioni a diverse energie per diversi tipi di applicazioni, dall’ingegneria dei materiali alla medicina nucleare. Questa facility è fondata sull’utilizzo di alcune macchine acceleratrici. Con il gruppo a cui mi sono aggregato ne ho viste due.

Acceleratori

Gli acceleratori presenti ai LNL sono di tipo lineare (LINAC), ne abbiamo visitati due:

  • l’acceleratore di ioni TANDEM basato su un generatore elettrostatico di Van de Graaf
  • l’acceleratore di ioni ALPI (Acceleratore Lineare Per Ioni) basato sugli acceleratori lineari a radio frequenza.

Esiste anche un acceleratore circolare, il Cyclotron B70, che però accelera protoni (come il CERN). Questo non è stato oggetto della visita (almeno non del mio gruppo).

Ripassino

Gli acceleratori di particelle sono macchine che accelerano particelle 🙂 Il moto rettilineo uniformemente accelerato di particelle cariche si imprime con i campi elettrici. Infatti una carica q immersa in un campo elettrostatico di intensità \mathbf{E} subisce una forza pari a \mathbf{F} = q\mathbf{E} e, se m è la sua massa, subirà l’accelerazione \mathbf{a} = q/m\mathbf{E} . Supponendo che il campo sia omogeneo e uniforme diretto in una sola direzione, se d è la distanza tra due elettrodi che si trovano sottoposti ad una differenza di potenziale V, l’energia acquisita dalla carica nel percorrere questa distanza sarà pari a qV. L’unità di misura sarebbe joule, ma quando si ha a che fare con cariche piccolissime, dell’ordine della carica di un elettrone (circa 1,6 \cdot 10^{-19}C), è più comodo esprimerla in elettron volt eV: l’energia che acquista un elettrone sottoposto alla ddp di 1 V.

Non si accelerano linearmente particelle cariche con i campi magnetici ma si può tuttavia imprimere loro con questi campi un’accelerazione centripeta e far compiere loro traiettorie circolari (o curvilinee in generale, nel caso di campi non uniformi), in virtù della forza di Lorentz \mathbf{F}_L = q\mathbf{v} \times \mathbf{B} , dove \mathbf{v} è la velocità relativa al campo magnetico \mathbf{B} (gli ingegneri preferiscono chiamarlo induzione magnetica).

Generatore di Van de Graaf

Il generatore di Van de Graaff è un accumulatore elettrostatico, una macchina che trasporta particelle cariche per mezzo di una cinghia rotativa, che preleva per frizione cariche da un elettrodo e le trasporta in un altro elettrodo dove vengono accumulate, creando tra questi due elettrodi un campo elettrico. Se l’intensità del campo elettrico supera il valore di 30 kV/m si possono vedere le scariche dovute alla rottura del dielettrico (l’aria).

Schema di funzionamento del generatore di Van Der Graaff.
Schema di funzionamento del generatore di Van de Graaff. (Wikimedia)

Storicamente gli accumulatori elettrostatici si sono diffusi nel XVIII secolo come macchine per divertimento. Erano molto popolari gli scherzi del bacio di Venere o della scossa sulle posate da tavola. Si era imparato a strofinare una superfice di vetro con un panno di lana e appoggiare questo panno su una superficie metallica. Sembrava che un misterioso fluido si depositasse sull’elettrodo. Ben presto vennero costruiti dei dischi rotanti di vetro con un dispositivo che lo strofinava portava la carica su un elettrodo metallico. Si tratta della macchina di Wimhurst e questo è uno degli esemplari esposti al Museo Giovanni Poleni di Padova.

Macchina di Wimhurst
Macchina di Wimhurst (foto mia)

Acceleratore TANDEM

Il TANDEM è stato prodotto a metà anni 80 negli USA dall’azienda fondata dallo stesso Robert Van de Graaff (USA, 1901-1967), la High Voltage Engineering Corporation, e installato presso i LNL.

Il suo funzionamento è fondamentalmente basato su un generatore di Van de Graaff.

Acceleratore Lineare TANDEM di HVEC
Acceleratore Lineare TANDEM di HVEC (foto mia)

Questo acceleratore (chiamato affettuosamente Moby Dick per la sua stazza e per il colore – era bianco e nel corso del tempo è diventato grigio) oltre al nastro e gli elettrodi del generatore di Van de Graaff, è costituito da una colonna coassiale immersa in un sarcofago (che è quello che si vede nell’immagine). Il sarcofago è riempito di esafluoruro di zolfo (SF6, un gas serra per cui viene rigorosamente sigillato) in pressione a 7 bar; all’interno della colonna che costituisce una gabbia di Faraday corre la tubazione a vuoto contenente il fascio, che viene accelerato dal campo elettrico creato dal generatore.

Colonna all'interno del sarcofago
Colonna all’interno del sarcofago (foto mia)

Degli ioni debolmente carichi negativamente (-e), provenienti da una fornace, si affacciano al tubo dell’acceleratore e vengono accelerati con una tensione di 14,5 MV; a metà colonna gli ioni incontrano loro il lungo percorso un sottile foglio di carbonio (stripper) che strappa alcuni elettroni per cui gli ioni, ora carichi positivamente, si affacciano alla seconda metà del tubo dove però incontrano un campo elettrico inverso che li accelera ancor più nella stessa direzione con una forza moltiplicata per il numero di carica. Alla fine dell’acceleratore l’energia del fascio è distribuita su uno spettro piuttosto ampio in quanto la carica degli ioni può andare da -e a -20e, ma è molto superiore all’energia che hanno a metà strada (>> 14,5 MeV).

Generatore di Van de Graaff
Generatore di Van de Graaff (foto mia)

Distribuzione del fascio e circuito del vuoto

Il fascio viene poi diretto lungo una conduttura in cui è praticato un vuoto spinto (10^{-10}\textrm{ bar}).

Il vuoto è necessario per non compreomettere la qualità direzionale de fascio e per non perdere energia in collisioni inutili con particelle e molecole residue. Il grado di vuoto dipende dalla purezza che si vuole raggiungere nella produzione e trasporto del fascio. Vuoti così spinti si realizzano con tecniche criogeniche più che con l’utilizzo di pompe.

L’impianto del vuoto riguarda tutta la linea di accelerazione e distribuzione ed è controllato da dispositivi elettronici dedicati.

Pipe per la distribuzione degli ioni accelerati che escono da TANDEM
distribuzione degli ioni accelerati che escono da TANDEM (foto mia)

Focusing (focheggiamento) del fascio

Il fascio tende a divergere dalla direzione desiderata per cui occorre ricomporlo con due coppie di magneti (quadrupolo) che agiscono in due direzioni ortogonali tra loro e a loro volta ortogonali alla direzione del fascio, per consentire la convergenza.

Quadrupolo focalizzatore di fascio
Quadrupolo focalizzatore di fascio (foto mia)

Bending (curvatura) e selezione dei fasci

Alla fine della stanza un magnete curva il fascio per indirizzarlo verso la camera degli esperimenti,

bender
Bender: curva il fascio di ioni (foto mia)

dove un ulteriore spettrometro di massa devia i fasci in base alla massa verso target prestabiliti.

Spettrometro di massa
Spettrometro di massa (devia gli ioni con un raggio di curvatura diverso a seconda del rapporto carica/massa) (foto mia)

Il fascio prodotto da TANDEM viene poi utilizzato direttamente negli esperimenti e in parte viene deviato come fascio di ingresso per l’acceleratore ALPI.

Acceleratore ALPI

L’acceleratore ALPI (Acceleratore Lineare Per Ioni) è molto più complesso e sfrutta una diversa tecnica di accelerazione che è quella delle cavità a superconduttore a radiofrequenza.

Acceleratori a RF

Sono degli array di cavità (drift tubes) in cui vengono iniettati degli ioni iso numero di carica, i quali vengono accelerati da un campo elettrico alternato. Questo tipo di cavità che illustro adesso è detta a mezz’onda e tra breve vediamo perché. Supponiamo che entri uno ione negativo nel primo tubo lungo la direzione +\hat{\mathbf{e}}_x; il campo abbia verso contrario alla direzione dello ione: essendo questo negativo, esso verrà ulteriormente accelerato:

\mathbf{a} = -e/m (-E \hat{\mathbf{e}}_x) = +(eE/m) \hat{\mathbf{e}}_x

La semionda deve mantenersi negativa per tutto il tempo impiegato dalla carica ad attraversare il tubo. Alla fine lo ione accelerato entra nel secondo tubo che prima aveva una tensione positiva, adesso ce l’ha negativa e il campo è ancora accelerante e così via. Ogni tubo è interessato da una semionda, nel senso che lo ione si trova accelerato per tutta la lunghezza dalla stessa semionda del segnale, da cui il nome “cavità a mezz’onda”. Siccome il tempo di percorrenza diminuisce nel secondo tubo, questo dovrà essere leggermente più lungo del precedente. Per velocità relativistiche questa differenza tra un tubo e il successivo tende a zero, ma per gli esperimenti in LNL la velocità v è tale che il fattore \beta = v^2/c^2 è in genere < 1.

Principio di funzionamento degli acceleratori lineari a radiofrequenza
Principio di funzionamento degli acceleratori lineari a radiofrequenza (immagine dalle dispense della prof. Valdata, unipg.it)

Le cavità acceleranti sono costruite in rame purissimo e vengono fatte funzionare a bassisima temperatura per consentire alle pareti interne delle cavita, che sono ricoperte di niobio (Nb), di funzionare in regime di superconduzione. Per questo motivo le cavità risonanti sono immerse in un criostato che consente al Niobio di lavorare ad una temperatura di 4,0 K che è al disotto del sua sua temperatura critica ( o di transizione) che è pari a 9,2 K.

Il regime di superconduttività consente di far funzionare i magneti senza dissipazione di potenza e di ottenere campi più intensi. Il surplus di energia necessario per far funzionare i criostati dà comunque luogo ad un consumo energetico inferiore rispetto al funzionamento a temperatura ambiente. Questa tecnica è usata anche per i magneti del CERN di Ginevra.

La forma delle cavità è come quella di figura

Cavità RF
Cavità RF (foto mia)

L’interno di quelle ampolle è ricoperto di niobio. In realtà la forma dei moduli è diversa, si tratta di cilindri che lungo un asse orizzontale, ortogonale all’asse del cilindro consentono il passaggio del fascio e lungo l’asse del cilindro consentono l’applicazione del campo elettrico, quindi il passaggio degli elettrodi:

Modulo di cavità RF
Modulo di cavità RF (foto mia)

Il cilindro contiene l’ellissoide e il foro trasversale (nella parte inferiore) per far passare il fascio ed è coassiale all’asse di rotazione dell’elissoide. Il foro coassiale con il cilindro invece serve per applicare il campo elettrico. Anche il funzionamento elettrico è leggermente diverso perché funzionano a quarto d’onda, perciò vengono detti QWR (Quarter Wave Resonator). In pratica il campo è postivo per due moduli e l’intensità massima del campo elettrico si ha nella transizione tra un modulo e il successivo.

Viene formato un array di 4 cavità immerse in bagno criostatico di elio liquido e ciascuno con una frequenza di lavoro progressivamente crescente: il primo gruppo lavora a 80 MHz, l’ultimo a 160 MHz (altro modo duale di configurare le cavità: invece di farle più lunghe le fanno lavorare ad una frequenza maggiore).

ALPI è un array di molti di questi moduli e lo scopo è di portare l’energia degli ioni uscenti a 1,4 GeV.

ALPI riceve il fascio da TANDEM, lungo la pipe mostrata in questo video in cui si vede la pipe fuoriuscire dal muro provenendo da TANDEM e attraversare lo stabilimento con tre focalizzatori di fascio e immettersi nell’edificio in cemento armato all’interno del quale è costruito ALPI:

Pipe da TANDEM al linac ALPI (Video mio)

ma riceve fascio anche da un altro acceleratore di nome PIAVE (hanno scelto tutti nomi nostrani, ma l’acronimo è Positive Ion Accelerator for VEry low velocity ions).

Tuning di ALPI

L’ing. Canella ha sottolineato il fatto che questa macchina è molto complessa da mettere in funzione. Le operazioni di fine tuning iniziali sono lunghe e laboriose e necessitano di un know how eccezionale. Accendere ALPI può richedere due settimane di lavoro, uno dei task più lunghi è proprio la sintonizzazione delle cavità risonanti: si parte con una cavità alla volta e si deve raggiungere un accordo ottimale di tutta la catena per massimizzare l’energia finale del fascio di ioni. Il pieno funzionamento viene supervisionato in remoto dalle sale di controllo tramite una complessa rerte di dispositivi di acquisizione e attuatori e la rete informatica che consente il controllo.

Software di controllo della facility SPES
Software di controllo della facility SPES (foto mia)

Il software viene sviluppato in parte all’interno dei laboratori, ma molta parte è già disponibile dai fornitori dell’hardware di controllo.

Sicurezza degli impianti

Quando le macchine sono in funzione la radioattività è a livello di attenzione e tutti gli operatori devono trovarsi all’esterno della fascia di sicurezza (i muri perimetrali in cemento armato dei locali che ospitano le macchine sono spessi quasi due metri). La messa in funzione delle macchine segue un dettagliato e rigoroso piano di sicurezza che si avvale di procedure di ronda atte a verificare che tutto il personale sia fuori dall’area operativa e di attuatori e sensori che assicurano che i cancelli siano chiusi e il personale fuori dall’area interressata da radiazioni prima dell’accensione.

Impiego degli acceleratori

Gli acceleratori del progetto SPES vengono impiegati in campi di spettro veramente amplissimo, ne cito solo alcuni:

  • raccolta di radionuclidi per imaging diagnostico (PET) e terapia oncologica
  • generazione di neutroni per impieghi di ingegneria dei materiali
  • investigazioni sulla fisica dei materiali
  • studi sui modelli di evoluzione stellare.

Riferimenti web

Amarcord del professor Malesani

Al corso di Complementi di Elettronica Applicata, un corso del quinto anno tenuto dal prof. Gaetano Malesani, forse era il 1992, oltre a studiare tante belle cose come le PLL o gli alimentatori switching, il prof. Malesani dispensava perle di saggezza tipo “Non pensate che quando lavorerete ci sarà qualcuno ad insegnarvi ciò che dovete fare. Chi sa i trucchi del mestiere o non ha tempo o non ha voglia di spiegarveli e/o di documentarli e soprattutto se li tiene per sé”. È stata esattamente la mia esperienza, non in tutti i casi, ma in buona parte sì.

Al corso, poi, era rischiesta l’elaborazione di un progetto, nel nostro gruppetto di amici avevamo in mente di costruire un barcode scanner, ti ricordi Mario se eravamo in gruppo assieme? Forse ti eri già laureato. C’era anche Adriano “il Fufi” che mi chiamava “ingegnere dea Nasa”. Avevo anche preso contatti con la Datalogic di Calderara di Reno (c’è ancora) spiegando cosa ci apprestavamo a fare, per avere eventuale assistenza.

Senonché il prof ad un certo punto ci dice: “Ragazzi, siete troppi gruppi e il laboratorio è limitato, dobbiamo aggregarvi”.

Praticamente i nuovi accoliti non vollero saperne di un progetto così ambizioso, bisognava fare il meno possibile per passare l’esame. Dopo un po’ che non trovavamo un accordo, Malesani ci dice: “Allora ve lo assegno io il progetto: perché non costruite un oscillatore a ponte di Wien?” e ci diede delle specifiche assurde per quanto riguarda campo di frequenza coperto e distorsione armonica. Eravamo, noi del gruppetto inziale, abbstanza delusi, ci sembrava un ribasso notevole sulle nostre aspettative.
Ma lui lesse lo sconforto nei nostri volti e aggiunse: “Non pensate che si tratti di una punizione: Hewlett e Packard hanno iniziato così, costruendo oscillatori a ponte di Wien, circuiti che emettevano fischi terrificanti, per un cliente di tutto rispetto: la Walt Disney”.

Alle fine ci siamo inventati una retroazione dell’oscillatore con un JFET, tipo i VCO che si usano nei sintetizzatori analogici, che rendeva il sistema performante ad una gamma di frequenze ancora più grande e con un distorsione armonica molto al disotto del limite imposto.

Poi alla fine scrissi da solo buona parte della relazione soffermandomi in modo particolare sull’analisi della retroazione e scoprii, spiegandola all’esame, che avevo impiegato senza accorgermene il metodo della funzione descrittiva che stavo studiando per la tesi sul caos deterministico. Ho preso 30 quella volta ed era sotto Natale.

La primava dopo, ricordo bene ero a piedi lungo il Piovego, un paio di studenti che facevano parte del gruppo e che non si erano mai fatti vedere, mi prendono in disparte e mi dicono “Ma chi cazzo ha scritto la relazione? non si capisce niente c’è solo un’analisi inutile della retroazione!”. Ho risposto che per me era la cosa più interessante del lavoro. E ho capito già allora come si fa a fare strada nel mondo del lavoro: usare i lavoro degli altri, prendersene gli eventuali meriti e sparare merda su chi ha lavorato.

È stato di sicuro il corso in cui ho imparato più cose, grazie prof. Malesani!

Disinstallare Skype

skype
skype

Mi sono trovato con due versione di Skype, una installata con apt e l’altra con snap. Non ricordavo di avere fatto questa cosa, probabilmente ho installato la seconda perché era comparso l’avviso che da quella versione era supportato ChatGPT.

In ogni caso ho deciso di eliminare la più obsoleta, quella installata con apt, che era alla versione 8.98 e il cui eseguibile era sotto /usr/share/skypeforlinux/.

Con una lista dei processi ho visto i due programmi che girano indipendentemente:

$ ps ax | grep skype
10692 ?        SLl    0:05 /usr/share/skypeforlinux/skypeforlinux --executed-from=/home/marcob --pid=10671 --enable-crashpad
...
10694 ?        SLl    0:16 /snap/skype/281/usr/share/skypeforlinux/skypeforlinux --enable-crashpad
...

Visualizzando le rispettive versioni dalle due GUI, vedo che una è la 8.98 e una è la 8.99 ma non so quale di quei due processi corrisponda alla 8.98. Quindi chiudo la versione più vecchia e l’unico processo che sopravvive è il 10694, e la correlazione è fatta.

Come detto, la versione più vecchia l’ho installata con apt, la più recente con snap. Comunque dal programma di disinstallazione è possibile specificare la versione da rimuovere:

$ sudo apt remove skypeforlinux=8.98*
[sudo] password di marcob: 
Lettura elenco dei pacchetti... Fatto
Generazione albero delle dipendenze... Fatto
Lettura informazioni sullo stato... Fatto   
Versione "8.98.0.402" (. stable:stable [amd64]) selezionata per "skypeforlinux"
I seguenti pacchetti saranno RIMOSSI:
  skypeforlinux
0 aggiornati, 0 installati, 1 da rimuovere e 23 non aggiornati.
Dopo quest'operazione, verranno liberati 330 MB di spazio su disco.
Continuare? [S/n] S
(Lettura del database... 529434 file e directory attualmente installati.)
Rimozione di skypeforlinux (8.98.0.402)...
...
$

Fine.

Pillole Linux – grep

Come selezionare con una regex (espressione regolare) tutte le righe di uno stream che non contengono una certa stringa?

% cat file | grep -v "some string"

Et voilà.

php-curl una storia infinita

Dopo l’ultimo aggiornamento di php-curl ho nuovamente il fastidio di emendare l’errore che stavolta si presenta in una veste diversa, a volte Warning

$ php -m | grep curl
PHP Warning:  PHP Startup: Unable to load dynamic library 'curl.so' (tried: /usr/lib/php/20220829/curl.so (/usr/lib/php/20220829/curl.so: undefined symbol: curl_mime_addpart, version CURL_OPENSSL_4), /usr/lib/php/20220829/curl.so.so (/usr/lib/php/20220829/curl.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

e a volte Fatal

PHP Fatal error:  Uncaught Error: Call to undefined function curl_init() in /home/marcob/IdeaProjects/PHP/code/vendor/jasig/phpcas/source/CAS/Request/CurlRequest.php:107
Stack trace:
#0 ...

Senza riportare tutta la ricerca fatta, vado al punto: al solito, un’aggiornamento di PHP ha nuovamente modificato un link simbolico facendolo puntare ad una versione non compatibile della libreria libcurl

marcob@jsbach:/usr/local/lib$ ll
totale 170048
drwxr-xr-x 10 root root       4096 gen  5 17:18 ./
drwxr-xr-x 19 root root       4096 set 24  2021 ../
-rw-r--r--  1 root root       1957 set  2 17:07 curl.txt
-rw-r--r--  1 root root    1006444 mag 23  2017 libcurl.a
-rwxr-xr-x  1 root root       1042 mag 23  2017 libcurl.la*
lrwxrwxrwx  1 root root         16 gen  5 17:18 libcurl.so.4 -> libcurl.so.4.4.0*

Serve rifare il link simbolico:

marcob@jsbach:/usr/local/lib$ sudo ln -s /usr/lib/x86_64-linux-gnu/libcurl.so.4
marcob@jsbach:/usr/local/lib$ ll
totale 170048
drwxr-xr-x 10 root root       4096 gen 13 10:52 ./
drwxr-xr-x 19 root root       4096 set 24  2021 ../
-rw-r--r--  1 root root       1957 set  2 17:07 curl.txt
-rw-r--r--  1 root root    1006444 mag 23  2017 libcurl.a
-rwxr-xr-x  1 root root       1042 mag 23  2017 libcurl.la*
lrwxrwxrwx  1 root root         38 gen 13 10:52 libcurl.so.4 -> /usr/lib/x86_64-linux-gnu/libcurl.so.4
...
$ php -v
PHP 8.2.1 (cli) (built: Jan  6 2023 15:18:43) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.1, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.1, Copyright (c), by Zend Technologies
    with Xdebug v3.2.0, Copyright (c) 2002-2022, by Derick Rethans

Il Warning scompare ma il Fatal c’è ancora: basta riavviare Apache

$ sudo apachectl restart

SSH headache

ssh
ssh

Stamattina non riesco più a stabilire una connessione SSH con un server in cui ho lavorato l’ultima volta un po’ di tempo fa. Facciamo che questo host si chiami web.mysecretserver.it come FQNS.

Anche oggi ho la mia occasione per sentirmi stupido.

Primo tentativo

Al primo tentativo il protocollo mi dice che non ha trovato tra quelli a disposizione del client, alcun metodo di scambio chiavi crittografiche supportate dal server:

$ ssh web.mysecretserver.it
Unable to negotiate with 184.17.4.115 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

Secondo tentativo

Ho quindi specificato uno degli algoritmi supportati dal server

$ ssh -oKexAlgorithms=diffie-hellman-group-exchange-sha1 web.mysecretserver.it
Unable to negotiate with 184.17.4.115 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

ma stavolta i tipi di chiave supportati dal server sono diversi da quelli a mia disposizione (è inutile: ho una versione client di SSH molto più aggiornata del vecchio mysecretserver).

Terzo tentativo

Specifico allora un tipo di chiave supportato dal server:

$ ssh -oKexAlgorithms=diffie-hellman-group-exchange-sha1 -c ssh-dss -oHostKeyAlgorithms=+ssh-dss web.mysecretserver.it
Unknown cipher type 'ssh-dss'

Non serve specificare la cifratura (ssh-dss), basta il parametro -oHostKeyAlgorithms.

Quarto tentativo

$ ssh -oKexAlgorithms=diffie-hellman-group-exchange-sha1 -oHostKeyAlgorithms=+ssh-dss web.mysecretserver.it
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the DSA key sent by the remote host is
SHA256:iDMXs5dTRKtmP9VpVRtuPpJ1/bMja3ZSLnwuuEz5jAo.
Please contact your system administrator.
Add correct host key in /home/marcob/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/marcob/.ssh/known_hosts:23
  remove with:
  ssh-keygen -f "/home/marcob/.ssh/known_hosts" -R "web.mysecretserver.it"
Host key for web.mysecretserver.it has changed and you have requested strict checking.
Host key verification failed.

Ci siamo! Stavolta la connessione è possibile solo che la chiave dell’host è cambiata rispetto a quella contenuta nel mio portachiavi. Quindi

Elimino l’host

Aggiorno il file .ssh/known_hosts togliendo la chiave dell’host desiderato (il programma crea atuonomamente una copia di backup).

$ ssh-keygen -f "/home/marcob/.ssh/known_hosts" -R "web.mysecretserver.it"
# Host web.mysecretserver.it found: line 23
/home/marcob/.ssh/known_hosts updated.
Original contents retained as /home/marcob/.ssh/known_hosts.old

Trovo la soluzione

Dopo aver eliminato il vecchio host, il server SSH mi presenta il suo fingerprint (l’impronta) e mi chiede se sono disposto a fidarmi:

$ ssh -oKexAlgorithms=diffie-hellman-group-exchange-sha1 -oHostKeyAlgorithms=+ssh-dss web.mysecretserver.it
The authenticity of host 'web.mysecretserver.it (184.17.4.115)' can't be established.
DSA key fingerprint is SHA256:iDMXs5dTRKtmP9VpVRtuPpJ1/bMja3ZSLnwuuEz5jAo.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'web.mysecretserver.it' (DSA) to the list of known hosts.
         * * * * * * * * * * * * * W A R N I N G * * * * * * * * * * * * *
         THIS SYSTEM IS RESTRICTED TO AUTHORIZED USERS FOR AUTHORIZED USE
         ONLY. UNAUTHORIZED ACCESS IS STRICTLY PROHIBITED AND MAY BE
         PUNISHABLE UNDER THE COMPUTER FRAUD AND ABUSE ACT OF 1986 OR
         OTHER APPLICABLE LAWS. IF NOT AUTHORIZED TO ACCESS THIS SYSTEM,
         DISCONNECT NOW. BY CONTINUING, YOU CONSENT TO YOUR KEYSTROKES
         AND DATA CONTENT BEING MONITORED. ALL PERSONS ARE HEREBY
         NOTIFIED THAT THE USE OF THIS SYSTEM CONSTITUTES CONSENT TO
         MONITORING AND AUDITING.
         * * * * * * * * * * * * * W A R N I N G * * * * * * * * * * * * *
(webportal@web.mysecretserver.it) Password: 
Last login: Wed Nov 16 10:13:25 2022 from az931356.mysecretserver.it
-bash-3.2$ 

Eureka!

Ultima chicca: mettere tutte queste opzioni in un file di configurazione per accorciare il comando:

$ nano .ssh/config
Host websecret
	Hostname web.mysecretserver.it
	User webuser
	HostKeyAlgorithms=+ssh-dss
	KexAlgorithms=diffie-hellman-group-exchange-sha1
$ 

Quindi posso collegarmi senza dover ricordare tutto lo stringone, semplicemente con:

$ ssh websecret
         * * * * * * * * * * * * * W A R N I N G * * * * * * * * * * * * *
         THIS SYSTEM IS RESTRICTED TO AUTHORIZED USERS FOR AUTHORIZED USE
         ONLY. UNAUTHORIZED ACCESS IS STRICTLY PROHIBITED AND MAY BE
         PUNISHABLE UNDER THE COMPUTER FRAUD AND ABUSE ACT OF 1986 OR
         OTHER APPLICABLE LAWS. IF NOT AUTHORIZED TO ACCESS THIS SYSTEM,
         DISCONNECT NOW. BY CONTINUING, YOU CONSENT TO YOUR KEYSTROKES
         AND DATA CONTENT BEING MONITORED. ALL PERSONS ARE HEREBY
         NOTIFIED THAT THE USE OF THIS SYSTEM CONSTITUTES CONSENT TO
         MONITORING AND AUDITING.
         * * * * * * * * * * * * * W A R N I N G * * * * * * * * * * * * *
(webuser@web.mysecretserver.it) Password: 
Last login: Wed Nov 16 15:35:22 2022 from 10.196.82.233
-bash-3.2$ 

Voilà.

Riferimenti Web

Quantum Computing

Il mantra avveniristico più in voga degli ultimi due anni è sicuramente lui, secondo me anche più dell’Intelligenza Artificiale: il Quantum Computing, calcolo quantistico.

È anche vero che da un po’ l’attributo Quantum va comunque di moda anche in ambiti non strettamente scientifici (coscienza quantica, mente quantica e via discorrendo), però di sicuro una delle innovazioni da cui ci si aspettano progressi sconvolgenti è proprio questa branca della ricerca che incrocia Fisica Teorica, Fisica Sperimentale e Computer Science.

Breve storia del Quantum Computing

La nascita della Fisica dei quanti è dovuta a Max Planck che, in un suo articolo del 1901, trovò la quadra per una giustificazione teorica della curva del corpo nero (ho tradotto l’articolo originale, per chi fosse interessato) un oggetto ideale che non riflette alcuna luce, a cui i fisici di fine ‘800 non riuscivano a dare una spiegazione in termini di Elettromagnetismo e Termodinamica.

A coniare il termine “quanto” fu Albert Einstein nel suo articolo sull’effetto fotoelettrico del 1905 (il primo dei tre articoli del suo annus mirabilis), uno dei primi contributi ad utilizzare con profitto l’idea di elemento di energia (come lo chiamava Planck).

L’idea di utilizzare la Meccanica Quantistica per costruire i computer si può far risalire a Richard Feynman che la descrisse nella sua celebre lezione al Caltech per l’American Physical Society il 29 dicembre 1959: There’s Plenty of Room at the Bottom.

Attenzione: già i computer attuali sono basati sulla Meccanica Quantistica (il funzionamento dei semiconduttori si spiega solo con la Meccanica Quantistica), ma per questa nuova generazione la differenza è questa: affidare la codifica dell’informazione ad uno stato di un singolo sistema quantistico. Attualmente non è così: 0 o 1 fisicamente vengono codificati con il fatto che una strisciolina di silicio lasci passare o meno una corrente, che è una informazione dell’elettromagnetismo classico.

Paradosso EPR e teorema di Bell

Fin dalle origini (Planck e Einstein, anni Zero), passando per i lavori di Bohr e Sommerfeld (anni Dieci) e poi ancora per quelli di Heisenberg, Schrödinger, Jordan, Born e Dirac (anni Venti) – ma ne ho lasciati fuori tanti – non ci si affrancò mai abbastanza da essere sicuri di dove questa teoria ci avrebbe condotto. Era strana. Molto più strana anche della stessa Relatività di Einstein. Occorreva capirla ancora, sempre meglio. Che fosse difficile da capire lo ammisero tutti dall’inizio.

Bohr nel suo tentativo di argomentare contro l’articolo EPR nel 1935 ammise “Stiamo cominciando a capirci qualcosa”. Erano passati vent’anni dal suo primo articolo.

In un’altra lezione del 1965 Feynman lo disse fuori dai denti: “I think I can safely say that nobody understands Quantum Mechanics.”

Nel 1935 Einstein fece un lavoro che partì in sordina – le citazioni per vent’anni rimasero molto poche, poi all’inizio degli anni Sessanta fino ad oggi crebbero enormemente. Egli continuò a rimuginare sulla teoria quantistica per tutta la vita senza riuscire a digerirla. Il famoso articolo scritto quand’era già a Princeton dopo essere fuggito dalla Germania nazista, presenta il famoso paradosso di EPR (dai nomi degli autori: Einstein, Podolsky e Rosen), nel quale si sosteneva che la Meccanica Quantistica non può essere completa, attraverso un esperimento mentale grazie al quale si dimostrava che si poteva violare il principio di indeterminazione. Detto in parole semplici, secondo l’articolo di EPR la Meccanica Quantistica è probabilistica perché ci nasconde qualcosa.

Molti tentativi di confutare questa conclusione furono fatti – in primis da Bohr al quale avevano toccato il suo giocattolo – ma non convinsero mai completamente tutta la comunità scientifica. Una svolta si ebbe con il Teorema di Bell, dimostrato dal fisico irlandese John Bell nel 1964, nel quale si provava che erano fondate le preoccupazioni espresse da Einstein. In effetti Bell ci mostra che la Meccanica Quantistica non è reale né locale: la peggior paura di Einstein, in quanto pare che le informazioni possano propagarsi a velocità infinita (la spooky action at a distance detta poi entanglement) e che la Luna non esista quando la si guarda, cioè lo stato quantistico non sia definito prima della misura. In realtà le cose non stanno esattamente così nel mondo macroscopico, ma in quello subatomico sì.

Tecnicamente il teorema di Bell afferma che se la Meccanica Quantistica è una teoria a variabili nascoste (cioè è probabilistica perché ci nasconde qualcosa) allora deve valere una certa diseguaglianza. Ma se la Meccanica Quantistica è quello che dice di essere, questa diseguaglianza deve venire violata.

La violazione della diseguaglianza di Bell viene sistematicamente verificata dagli stati quantistici, in altre parole: la Meccanica Quantistica non è casuale grazie a variabili nascoste, è proprio dispettosa di suo. Questo fu provato sperimentalmente da Alain Aspect nel 1983 e da molti altri esprimenti condotti nei modi più fantasiosi per evitare che la Natura potesse aggirare l’esperimento (i cosiddeti loopholes), anche se la prova definitiva risale solo al recente 2018.

Alain Aspect, Anton Zeilinger e John Clauser sono stati insigniti del premio Nobel per la Fisica quest’anno, il 2022, proprio per questi lavori.

Cosa entra questo con il calcolo quantistico?

Quantum Computing
Quantum Computing – il qubit

La manipolazione degli stati effettuata per avere una conferma sperimentale del teorema di Bell, diede forza al concetto di qubit: un modo di codificare una informazione binaria attraverso lo stato di un sistema quantistico che però ha la bella proprietà di trovarsi in infinite combinazioni lineari di stati elementari prima di venire misurato. Il valore dello stato non esiste prima della misura, è questo che si intende con la locuzione la MQ non è reale.

Al contrario, il bit classico ha un valore anche prima di essere misurato, solo che lo ignoriamo ma è lo stesso che ha anche dopo che lo abbiamo misurato. La differenza è sostanziale ed è alla base del calcolo parallelo consentito dal questo tipo di dispositivi.

Nel 2015 ho seguito il corso di Quantum Information nell’ambito il Dottorato in Ingegneria delle Telecomunicazioni dal DEI – Università di Padova, tenuto dal prof. Paolo Villoresi, mio insegnante di Elettronica Quantistica quando studiavo Ingegneria Elettronica che, saputo del mio interesse sull’argomento, mi ha accolto affettuosamente nel suo gruppo di dottorandi.

In quel corso effettuammo un esperimento che era un po’ il rifacimento dell’esperimento di Aspect che mostrava la conferma sperimentale del teorema di Bell: una diseguaglianza che in teoria deve venire violata dalla MQ se è non reale o non locale – viene violata per davvero. Ne nacque questo mio lavoretto che mi divertii sommamente a scrivere, nel quale affronto un po’ di armamentario teorico per manipolare con una certa confidenza l’argomento, studio in dettaglio il paradosso EPR e infine descrivo il teorema di Bell e l’esperimento che da’ una conferma sperimentale che la disuguaglianza di Bell è davvero violata nella realtà.

Vedo, dai log del mio Google Analytics, che ultimamente il download di questo mio articolo ha avuto una rapida impennata, lo metto volentieri in evidenza per chi volesse leggerlo.

Misura della violazione della disuguaglianza di Bell

Bibliografia

È quella che trovate all’interno dell’articolo.

Applicare una patch

Tux patch
Tux patch

Dimentichiamoci per un attimo che esista Git e, più in generale, i software di gestione del versionamento. All’origine dei tempi, come si applicavano le modifiche ai file quando si faceva sviluppo in team? Ovviamente quanto segue è comunque utile e può essere utilizzato in sistuazioni in cui dobbiamo emendare singoli file.

Unix ha tuttora, compreso Linux, un comando di utilità molto potente: il comando diff, che è un utilissimo strumento per confrontare file di testo. È utile per esempio per individuare i punti in cui un programma è stato modificato rispetto ad una versione iniziale, magari introducendo dei bug non intenzionali, come capita spesso.

Meno comune è il suo uso per applicare velocemente le modifiche di una nuova versione ad uno stesso file di una versione diversa.

Potremmo semplicemente guardarci il file vecchio con un occhio, il file nuovo con un altro e applicare a mano le novità presenti nel nuovo dentro al file vecchio.

Ma l’essere umano è naturalmente fallibile ed è consigliabile operare in altro modo.

In Linux/Unix esiste un comando gemello di diff che è patch. Patch prende un file di differenze e modifica il file argomento applicando le modifiche contenute nel file di differenze.

Il file di differenze è l’output del comando diff. Vediamo un esempio.

Scrivo un bellissimo programma

Il bellissimo programma è questo, si chiama, tanto per non discostarci troppo dalla tradizione, hello.c:

#include <stdio.h> 

int main() {
	printf("Hello World\n");
}

Un collega scrive una versione più completa

Un collega che sta lavorando sul mio stesso progetto, fa una modifica al file e produce il nuovo file hello_new.c: (ovviamente al giorno d’oggi nessuno più si sogna di lavorare così, ma riportiamoci per un attimo nel passato, come abbiamo detto ll’inizio):

#include <stdio.h>

int main(int argc, char *argv[]) {
	printf("Hello World\n");
	return 0;
}

Il suo programma è più figo perché prevede che gli si possano passare dei parametri in ingresso.

Ora devo aggiornare la mia copia

Come faccio da aggiornare la mia copia senza fare errori? Ovviamente, non riportando a mano (e a occhio) le modifiche.

Uso invece il file differenza, un cerotto, detto patch: non è altro che l’output del comando diff:

$ diff hello.c hello_new.c 
1c1
< #include <stdio.h> 
---
> #include <stdio.h>
3c3
< int main() {
---
> int main(int argc, char *argv[]) {
4a5
> 	return 0;

Ora questo ouput lo mettiamo su un file che chiamiamo hello.patch

$ diff hello.c hello_new.c > hello.patch

L’applicazione del cerotto si fa con il comando:

$ patch [file da sanare] [cerotto]

Nel nostro caso, prima mi faccio un backup del file da sanare:

$ cp hello.c hello.orig.c

e poi applico la patch

$ patch hello.c hello.patch

A questo punto il file hello.c è cambiato, recependo gli aggiornamenti:

$ cat hello.c
#include <stdio.h>

int main(int argc, char *argv[]) {
	printf("Hello World\n");
	return 0;
}

È possibile creare la copia di backup contestualmente con l’applicazione della patch, senza cioè farlo a mano con un secondo comando come abbiamo fatto noi: specificando l’opzione -b, patch prima crea la copia di backup e poi applica le modifiche:

$ patch -b hello.c hello.patch 
patching file hello.c
$ ll
totale 28
drwxrwxr-x 2 marcob marcob 4096 ott 25 11:58 ./
drwxrwxr-x 3 marcob marcob 4096 ott 25 10:52 ../
-rw-rw-r-- 1 marcob marcob  173 ott 25 10:54 diagram.txt
-rw-rw-r-- 1 marcob marcob   94 ott 25 11:58 hello.c
-rw-rw-r-- 1 marcob marcob   62 ott 25 11:56 hello.c.orig <---- creato grazie all'opzione -b
-rw-rw-r-- 1 marcob marcob   94 ott 25 10:54 hello_new.c
-rw-rw-r-- 1 marcob marcob  128 ott 25 11:57 hello.patch

È bello Nautilus (il file manager di GNOME Linux) che mostra delle icone azzeccate:

patch
patch: Nautilus mostra icone constestuali 🙂

… e Git?

Questo comando è integrato in Git, ad esempio quando eseguiamo il comando di merge di due linee di sviluppo (branch). Diciamo che il bello di questo comando è il principio ma oggigiorno è annegato in strumenti ben più complessi per la gestione delle versioni dei file.

Riferimenti

Convertire xlsx in csv

Convert XLS to CSV
Convert XLS to CSV

Per soli utenti Linux, in due righe di comando:

$ sudo apt install gnumeric
$ ssconvert --export-type=Gnumeric_stf:stf_csv file.xlsx file.csv

Fine.

Riferimenti