La Notte Europea dei Ricercatori 2015

Quest’anno passerò anch’io la Notte Europea dei Ricercatori assieme al gruppo di Comunicazioni Quantistiche del DEI (Dipartimento dell’Ingegneria dell’Informazione di vai Gradenigo) di Padova, guidato dal prof. Paolo Villoresi.

All’interno del cortile di Palazzo del Bo ci troverete nello stand che illustrerà il lavoro di Space Quantum Communications appena pubblicato su Physics Review Letter, insieme agli esperimenti e ai concetti che stanno alla base del Calcolo e dell’Informazione Quantistica.

notte

Sito web ufficiale: http://www.nottedeiricercatori.it/

Sito web della manifestazione in Padova con il programma completo: http://www.venetonight.it/padova/

 

Oracle e le transazioni

logo-oracle-large

Appunti sul funzionamento delle transazioni in Oracle. Oracle è transaction-oriented; cioè, utilizza le transazioni per assicurare l’integrità dei dati. Una transazione è una serie di una o più istruzioni SQL logicamente correlate, definite dall’utente per eseguire una certa operazione.

On progress.

Read more…

New Horizons oggi 14 luglio 2015 “sorvola” Plutone

Attorno alle 13:50 ora italiana il rendez-vouz.

Plutone e caronte confrontati con la Terra

(clicca per ingrandire)

Dopo 9 anni e 5 miliardi di km di viaggio, la sonda New Horizons arriva alle 13:49:57 su Plutone, nel punto più vicino mai raggiunto dall’uomo: circa 10000 km (12.472 km, fonte Wikipedia)! Se giocassimo a bocce sarebbe come dire mandare la boccia a 10 micron dal pallino (1 centesimo di millimetro). Preciso no? Plutone è così lontano che da quando è stato scoperto, deve ancora finire di fare un’orbita completa intorno al Sole.

La sonda prenderà immagini anche del suo satellite Caronte, le cui dimensioni sono confrontabili con quelle del pianeta, venendo a costituire un interessante sistema a due corpi in orbita attorno al sole in un piano inclinato rispetto all’eclittica.

Per questa ragione, per il fatto che probabilmente è stato catturato solo dopo la formazione del sistema solare, nel 2006 Plutone è stato declassato dal rango di pianeta del sistema solare a quello di pianeta nano.

Misuratore di polveri cosmiche.

La sonda New Horizons è equipaggiata, tra le altre cose, da un misuratore di polveri cosmiche raccolte durante tutto il tragitto, progettato e realizzato da degli studenti.  Nel sito della NASA non ho trovato notizie su quali fossero gli studenti e da che scuola/università provenissero.

nh-payload

 

(clicca per ingrandire)

[Fonte e immagini: http://www.nasa.gov]

LHC is back!

Nel Centro di controllo del CERN, il team operativo LHC, nonché i membri della direzione del CERN, applaudono l'annuncio di fasci stabili questa mattina alle 10:40 (Image: Maximilien Brice / CERN)

Nel Centro di controllo del CERN, il team operativo LHC, nonché i membri della direzione del CERN, applaudono l’annuncio di fasci stabili questa mattina alle 10:40 (Image: Maximilien Brice / CERN)

Il Large Hadron Collider (LHC) ha iniziato a generare dati di fisica oggi per la prima volta dopo 27 mesi. Dopo un arresto di quasi due anni e alcuni mesi ripartenza, il LHC sta ora fornendo collisioni a tutti i suoi esperimenti con una energia senza precedenti di 13 TeV (13 mila miliardi di elettronvolt), quasi il doppio l’energia di collisione della sua prima versione. Questo segna l’inizio della stagione 2 per LHC, aprendo la strada a nuove scoperte. Il LHC funzionerà ventiquattro ore su ventiquattro per i prossimi tre anni.

“Con il ritorno alla produzione di collsioni di LHC, festeggiamo la fine di due mesi dalla messa a punto del fascio”, ha detto il direttore degli acceleratori e della tecnologia CERN, Frédérick Bordry. “È un grande risultato e un momento gratificante per tutte le squadre impegnate nel lavoro svolto durante il lungo periodo di arresto del LHC, durante le prove di potenza e di messa a punto del fascio. Tutte queste persone hanno dedicato gran parte del loro tempo per rendere possibile tutto questo. “

 

Oggi alle 10:40, gli operatori del LHC hanno dato il via con la loro dichiarazione: “fasci stabili”, il segnale per gli esperimenti LHC che finalmente possono iniziare ad acquisire dati. I fasci sono fatti di “treni” di grappoli di protoni si muovono quasi alla velocità della luce lungo l’anello di 27 km del LHC. Questi cosiddetti treni di grappoli circolano in direzioni opposte, guidate da potenti magneti superconduttori. Oggi in LHC sono stati iniettati 6 grappoli contenenti ciascuno circa 100 miliardi di protoni. Questo tasso sarà progressivamente aumentato fino a raggiungere i 2.808 grappoli per fascio, consentendo al LHC di produrre fino a 1 miliardo di collisioni al secondo.

[Fonte: CERN]

 

beam

 

Quale teoria ci permetterà di andare oltre il Modello Standard? Sarà la SUSY, una delle numerose ipotesi teoriche attualmente in fase di studio? Questa teoria dovrebbe unificare le particelle di materia con le particelle associate con le forze fondamentali. Ma la Supersimmetria implica l’esistenza di numerose nuove particelle, nessuna delle quali è stata ancora trovata.

Sarà il LHC operativo a 13 TeV che ci consentirà di produrre alcune di queste particelle supersimmetriche? O l’ingresso del passaggio segreto verso questo nuova fisica” potrà essere rivelato da uno studio meticoloso di pletora di quantità, come le proprietà del bosone di Higgs? Scopriremo che esso è il legame tra la materia ordinaria (tutto ciò che è descritto dal modello standard) e la materia oscura?

Queste sono alcune delle tante domande che il LHC potrebbe chiarire nei prossimi anni. Una scoperta sperimentale potrebbe rivelare la nuova fisica. Potremmo benissimo essere sull’orlo di una enorme rivoluzione scientifica.

[Fonte: Pauline Gagnon’s blog]

Il pensiero di Einstein sulla crisi

Ieri sera in una pizzeria ho trovato questo pensiero di Einstein in bella vista attaccato al muro. Gli sono molto affezionato, sto finendo di studiare un suo importante lavoro, e mi ha colpito che lui, socialista, antimilitarista, dicesse cose del genere. In effetti quando le ha dette non aveva ancora visto la seconda guerra mondiale, non aveva ancora fatto nascere il progetto Manhattan, quindi tutto si spiega. Però sono righe che trasmettono una grande forza e invitano ad essere fiduciosi in se stessi. Le riporto verbatim da The World As I See It (Il mondo come io lo vedo), pubblicato nel 1934.

 

Let’s not pretend that things will change if we keep doing the same things. A crisis can be a real blessing to any person, to any nation. For all crises bring progress. Creativity is born from anguish, just like the day is born from the dark night. It’s in crisis that inventiveness is born, as well as discoveries made and big strategies. He who overcomes crisis, overcomes himself, without getting overcome.
He who blames his failure to a crisis neglects his own talent and is more interested in problems than in solutions. Incompetence is the true crisis. The greatest inconvenience of people and nations is the laziness with which they attempt to find the solutions to their problems. There’s no challenge without a crisis. Without challenges, life becomes a routine, a slow agony. There’s no merit without crisis. It’s in the crisis where we can show the very best in us. Without a crisis, any wind becomes a tender touch. To speak about a crisis is to promote it. Not to speak about it is to exalt conformism. Let us work hard instead. Let us stop once and for all the menacing crisis that represents the tragedy of not being willing to overcome it.

XML beautifier con xmllint

xmllint è una utility che fa parte del pacchetto:

libxml2-utils

Per installarlo

$ sudo apt-get install libxml2-utils

Avevo bisogno di un “abbellitore” (beautifier) per codice XML. Ci sono tanti bei servizi anche online, ma me ne serviva uno di integrato con l’editor PHP che uso, Geany.

Geany consente di inviare frammenti di codice sezionati dal file (anche tutto il file) a questo programma che mi produce l’output abbellito direttamente nell’editor.

Esempio, ho questo file

xmllint0

 

Seleziono il file e richiamo da menu la funzione xmllint:

 

 

xmllint1

 

Il risultato è questo

 

xmllint2

 

Geany è configurabile per aggiungere comandi di questo tipo. Per farlo si segue lo stesso menu della seconda figura e si seleziona la voce “Imposta i comandi personalizzati”:

 

impostaSi edita il comando, nel mio caso il comando è

xmllint --format -

(mi raccomando il alla fine, che in questo caso significa standard input, file da passare come argomento al comando)

Aiuto!!! LA CPU bolle!

AMD Heat SinkSe vi siete trovati come me ad iniziare l’estate con il PC che scotta, vi consiglio queste utilities:

  • i8kmon
  • i8kctl

che vi servono per monitorare e controllare i parametri per il raffrescamento.

Ulteriori informazioni nel Wiki.

Fonti:

  • http://www.cyberciti.biz/faq/controlling-dell-fan-speeds-temperature-on-ubuntu-debian-linux/
  • http://manpages.ubuntu.com/manpages/karmic/man1/i8kctl.1.html
  • http://askubuntu.com/questions/281478/fan-speed-in-ubuntu-pwmconfig-no-pwm-capable-sensor-modules-installed

 

Pillole CSS: Responsive design

Today's latte, World Wide Web Consortium (W3C).Il responsive web design è l’arte di disegnare pagine web visibili da tutti i tipi di viewport, cioè di dispositivi: dal browser su computer desktop, al notebook, al tablet e allo smartphone.

Ne abbiamo già parlato qui.

Fondamentalmente si tratta di saper usare i fogli di stile (CSS) che, essendo “cascading” vengono applicati a cascata per cui la stessa regola presente in vari fogli di stile viene resa dal browser come uguale a quella letta nell’ultimo foglio di stile.

Il problema della decisione del tipo di dispositivo (e della sua orientazione) si risolve con lo strumento delle media queries: una grammatica che ci permette di istruire il browser su quali fogli di regole deve caricare a seconda del risultato di queste interrogazioni.

Prendo spunto da questo sito.

Prendiamo ad esempio queste istruzioni di importazione che si trovano nelle intestazioni delle pagine html:

    <link rel="stylesheet" media="(max-width: 640px)" href="max-640px.css">
    <link rel="stylesheet" media="(min-width: 640px)" href="min-640px.css">
    <link rel="stylesheet" media="(orientation: portrait)" href="portrait.css">
    <link rel="stylesheet" media="(orientation: landscape)" href="landscape.css">

In sostanza il browser adotta il foglio di stile max-640px.css se la pagina è stata caricata in un dispositivo piccolino (uno smartphone), oppure caricherà il foglio min-640px.css se il viewport è più comodo (ad esempio un computer desktop o laptop).

Inoltre il browser sceglie al volo il foglio portrait.css (disposizione tipo “ritratto”) o landscape.css (disposizione tipo “paesaggio”) a seconda di come ruotiamo lo smartphone o il tablet, oppure se ridimensioniamo il browser in una finestra stretta e alta.

I diversi fogli di stile contengono regole diverse per gli stessi oggetti; per esempio ne l mio caso avevo un layout a tre colonne che si poteva visualizzare solo su uno schermo grande; per gli schermi piccoli mando a capo una sotto l’altra le tre colonne.

Versione responsive per desktopdesktop

Versioneresponsive per smartphone

Responsive design

Responsive design

Pillole PHP/Yii: far transitare parametri da HTTP alla pagina web

yiiDalla request alla pagina web

Grande è la tentazione di utilizzare i valori provenienti dalla $_REQUEST direttamente nella view, ma così facendo rischiamo di perdere pezzi per strada.

Il percorso corretto da compiere è questo

  $_REQUEST ---> controller ---> action ---> view.

Esempio, voglio far transitare una variabile $payment_id dal flusso HTTP alla pagina web

  index.php?r=voucher/create&payment_id=2

Step 1: dalla request al controller

Supponiamo di voler creare un nuovo record per l’oggetto voucher, che ha bisogno di essere agganciato al record payment_id=1

  • file VoucherController.php
   public function actionCreate()
   {
       $model=new Voucher;
       if(isset($_REQUEST['Voucher']))
       {
           $model->attributes=$_REQUEST['Voucher'];
           $payment_id = $model->payment_id;
           if($model->save())
               $this->redirect(array('index','id'=>$model->id, 'payment_id' => $payment_id));
       }
       else 
       {
           $payment_id = $_REQUEST['payment_id'];
       }
       $this->render('create',array(
           'model'=>$model,
           'payment_id' => $payment_id,
       ));
   }

con questo frammento valorizziamo la variabile da passare e la passiamo al metodo create nell’array dei parametri (il secondo parametro della funzione render).

Step 2: dal controller alla action

  • file voucher/create.php
   <?php echo $this->renderPartial('_form', array('model'=>$model, 'payment_id' => $payment_id)); >?>

il valore $payment_id è quello che arriva dalla funzione render citata sopra. Con questa istruzione passiamo al template _form.php l’array che contiene $model e $payment_id

Step 3: dalla action alla view

  • file voucher/_form.php
   <?php echo $form->hiddenField($model,'payment_id', array('value' => $payment_id)); ?>

questo è l’ultimo passaggio, siamo arrivati. L’html generato al volo conterrà questo campo hidden:

<input id=”Voucher_payment_id” type=”hidden” name=”Voucher[payment_id]” value=”2“>.

Segui tutto l’articolo sul Wiki.

Pillola PHP/Yii lavorare con le date

yiiSalvare una data 25/12/2015 in MySQL, leggerla e visualizzarla nello stesso formato

Occorre un po’ di magheggio per gestire le date con Yii. Il formato con cui MySQL registra out-of-the-box i campi data è quello ISO (yyyy-mm-dd). Per rendere compatibile la nostra applicazione con questo formato (non andiamo a cambiare il locale del database, e non ci poniamo al momento obiettivi sul rendere localizzabile l’applicazione) occorre

  • trasformare 25/12/2015 in ISO in fase di scrittura e
  • trasformare da ISO a 25/12/2015 in fase di lettura

Lettura di un campo data

Si scrive un filtro (afterFind) da aggiungere al model degli oggetti (tabelle) in cui ci sono le date che vogliamo gestire:

   protected function afterFind(){
                                                
       foreach($this->metadata->tableSchema->columns as $columnName => $column)
       {                        
           if (!strlen($this->$columnName)) continue;
           
           if ($column->dbType == 'date')
           {
               $timestamp = CDateTimeParser::parse($this->$columnName, 'yyyy-MM-dd');
               $this->$columnName = Yii::app()->dateFormatter->formatDateTime(
                 $timestamp,'short',null);
           }
           elseif ($column->dbType == 'datetime')
           {
               $timestamp = CDateTimeParser::parse($this->$columnName, 
                  'yyyy-MM-dd  hh:mm:ss');
               $this->$columnName = Yii::app()->dateFormatter->formatDateTime(
                  $timestamp);
           }
       }
       
             return true;
   }

Con il parser (CDateTimeParser::parse) catturiamo la data ISO che esce dalla query e la riformattiamo con il formatter (Yii::app()->dateFormatter->formatDateTime) nel formato short (dd/mm/yyyy) e senza l’orario se il campo è date, con l’orario se è datetime: in particolare, ‘short’, null dice che la data è in formato dd/mm/yyyy e non visualizza l’ora e i minuti.

Nota bene

Non è necessario ricompilare lo scaffold se si cambia il tipo campo database da date a datetime.

Scrittura di un campo data

Anche qui si aggiunge un metodo (beforeSave) al model (sempre nello stesso file quindi)

   protected function beforeSave(){
       foreach($this->metadata->tableSchema->columns as $columnName => $column)
       {
           if ($column->dbType == 'date')
           {
               $this->$columnName = date('Y-m-d', CDateTimeParser::parse(
                   $this->$columnName, 'dd/MM/yyyy'));
           }
           elseif ($column->dbType == 'datetime')
           {
               $this->$columnName = date('Y-m-d H:i:s', CDateTimeParser::parse(
                   $this->$columnName, 'dd/MM/yyyy'));
           }
       
       }
   
   return true;
   }

Grazie al sito forum di Yiiframework.

Il Wiki completo