Lucio Zambon: PHP@Elettra

35
1 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon Elettra: Sincrotrone Trieste S.C.p.A. Ente di ricerca: Ente di diritto privato, finanziamento pubblico Importante laboratorio di fisica sperimentale Acceleratore di particelle di terza generazione Scopo di Elettra è l’accelerazione di elettroni, il loro immagazzinamento, la produzione con essi di luce di sin- crotrone che viene utilizzata per osservazioni o interazioni a livello di singole molecole o di atomi.

description

 

Transcript of Lucio Zambon: PHP@Elettra

Page 1: Lucio Zambon: PHP@Elettra

1 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Elettra: Sincrotrone Trieste S.C.p.A.

Ente di ricerca: Ente di diritto privato, finanziamento pubblicoImportante laboratorio di fisica sperimentaleAcceleratore di particelle di terza generazioneScopo di Elettra è l’accelerazione di elettroni, il loro immagazzinamento, la produzione con essi di luce di sin-crotrone che viene utilizzata per osservazioni o interazioni a livello di singole molecole o di atomi.

Page 2: Lucio Zambon: PHP@Elettra

2 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Elettra: Sincrotrone Trieste S.C.p.A.

Linac: Vengono generati ed accelerati dei pacchetti di elettroniStorage Ring: anello dove viene accumulato il fascio di elettroni per 24-48 oreBeam Lines: Linee di luce di sincrotrone dove ven-gono svolti esperimenti di fisica della materia, microfabbricazione (nanotubi), medicina (corona virus, mammografia), chimica, etc.

Page 3: Lucio Zambon: PHP@Elettra

3 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Elettra: Sincrotrone Trieste S.C.p.A.

Problematiche ad Elettra: Gestione personale (staff) e utenti (temporanei) Gestione acceleratore (magneti, pompe, alimentatori, cavità RF etc) Sistema di controllo gestisce circa 20000 variabili

Page 4: Lucio Zambon: PHP@Elettra

4 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Sistema di Controllo

Ad Elettra si utilizza e sviluppa TANGO Collaborazione con ESRF (Grenoble) SOLEIL (Parigi) e ALBA (Barcellona) Basato su CORBA Linguaggi supportati (API): C++, Java, Python OS: Linux (anche con estensione real time RTAI), WindowsAltri sistemi di controllo: Epics: usato da circa cento istituti, basato su WxWorks Tine: sviluppato a DESY (Amburgo) etc

Page 5: Lucio Zambon: PHP@Elettra

5 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Applicativi PHP ad Elettra

Esistono varie applicazioni indipendenti: Homepage: http://www.elettra.trieste.it/index.php Servizi interni: web update, clockin, myphoto, people, ordini, it_support, ecologia, gimmeFTP CANONE: interfaccia verso il sistema di controllo E-GIGA: interfaccia verso il sistema di archiviazione

Page 6: Lucio Zambon: PHP@Elettra

1 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

E-Giga: Electronic Graphic Interface for Global Archiving

Tecnologia: PHP, MySQL, JavaScript, JPGraph, etcPeriodo di sviluppo: 25 luglio 2003 – fino ad oggiVersioni: più di 110 versioni

Niente di nuovo sotto il sole: Esistono innumerevoli programmi per produrre grafici Solo ad Elettra ce ne sono altri 2 su web L’unica novità sta nei dettagli

Page 7: Lucio Zambon: PHP@Elettra

2 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Architettura a pagina singola

Requisiti:

Web browser Pop-ups Cookies

Page 8: Lucio Zambon: PHP@Elettra

3 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Aree principali

SelezioneDisegnoMenu

Page 9: Lucio Zambon: PHP@Elettra

4 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Selezione

Seleziona variabili per l’asse Y1 Seleziona variabili per l’asse Y2 (opzionale) Seleziona variabili multistato (opzionale) Seleziona variabili ON/OFF (opzionale) Data e ora d’inizio + calendario Data e ora di fine + calendario Bottone di zoom inverso Bottone di disegno

Page 10: Lucio Zambon: PHP@Elettra

5 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Calendario

Data e ora in un clic Presenza di dati Periodo relativo (ultimi N minuti / ore / giorni) Informazioni aggiuntive (run)

Page 11: Lucio Zambon: PHP@Elettra

6 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Grafico

Clic sull’ immagine per ottenere uno zoom

Page 12: Lucio Zambon: PHP@Elettra

7 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Menu

File New elimina tutti i parametri nei cookies Load… legge dei parametri da un file sul server Open… legge dei parametri da un file sul client Save… scrive i parametri su un file sul client

Page 13: Lucio Zambon: PHP@Elettra

8 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Menu

Export PDF™ grafici e tabelle in formato A4 o A3 XLS usa XML per Excell™ XP o 2003 MAT formato binario di Matlab™ CSV comma separated values Mail con protocollo multipart mime

Page 14: Lucio Zambon: PHP@Elettra

9 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Menu

BookmarksLe preferenze sono salvate nei cookies Create salva configurazione in bookmark Load carica una configurazione Default setta un bookmark come default Delete cancella un bookmark

Page 15: Lucio Zambon: PHP@Elettra

10 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Menu

Format Hide Events nasconde/mostra gli eventi Plot size modifica le dimensioni del grafico Zoom cambia due modalità di zoom Style a gradini / lineare / a punti sparsi Y axis scala logaritmica, etichetta, max/min Y2 axis attiva o nascondi l’asse Y2 Correlation correlazioni fra 2 variabili Show Raw Data mostra dati in una tabella

Page 16: Lucio Zambon: PHP@Elettra

11 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Menu

Options Groups mostra solo le variabili in un gruppo Period seleziona un periodo di tempo Advanced solo per utenti avanzati FastPlot usa plot rapido di JPGraph 1.17 Formulae… modifica una formula

Page 17: Lucio Zambon: PHP@Elettra

12 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Editor di Formule Composizione Caricamento Cancellazione Grafica MathML auto –completamento delle variabili

Page 18: Lucio Zambon: PHP@Elettra

13 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Menu

Help Help Contents alcune pagine di aiuto About E-Giga versione e autore

Page 19: Lucio Zambon: PHP@Elettra

14 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Conclusioni

Sviluppi futuri Debugging: nessuno è perfetto Gestione variabili: selezione colore delle variabili etc Utenti: gestione utenti e configurazioni tutto sul lato server Multi-plot: più grafici nella stessa pagina Variabili vettoriali: selezioni di elementi e viste nello spazioRingraziamenti Sono state utilizzate 8 librerie open-source PHP e JavaScript Molte persone hanno contribuito con suggerimenti e segnalazioni di malfunzionamenti

Page 20: Lucio Zambon: PHP@Elettra

1 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Sommario

Canone è un’interfaccia web grafica e animata verso il sistema di controllo di un acceleratore di particelle. Connessioni: socket testo Tecnologia: PHP, JavaScript, SQL. Grafica: sia in PHP che in JavaScript Pannelli: riuniscono uno o più elementi grafici in una pagina Animazione: con l’utilizzo di una libreria Ajax Gestione risorse: utenti e permessi

Page 21: Lucio Zambon: PHP@Elettra

2 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Canone: un'interfaccia PHP verso i sistemi di controllo

web

Canone core

libreriaWidget

animazioneWidget

Interfaccia DAL

Multi-port channel socket

Socket server

Buffer DBFront-end

Gestione Utenti

Epics Tango … Sistema di controllo

Page 22: Lucio Zambon: PHP@Elettra

3 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Connessioni

Socket: la comunicazione col sistema di controllo avviene attraverso un protocollo di tipo testo su un socket TCP/IP. Più comunicazioni contemporanee possono avvenire su più porteDisaccoppiamento: il sistema di controllo deve essere il più possibile separato dal web, non deve essere influenzato da un sovraccarico sul web (attacchi DoS) Letture bufferizzate: tutte le letture sono memorizzate temporaneamente in un database (SQLite o MySQL) con limitazioni di sicurezza (banda limitata).

Page 23: Lucio Zambon: PHP@Elettra

4 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Tecnologia

PHP: tutta l’elaborazione sul lato server viene svolta in PHP (circa 85% del codice complessivo), le classi sono utilizzate solo nelle librerie (widget, interfaccia SQL), supporta sia PHP4 che PHP5. Utilizza GD, Socket e MySQL o SQLite JavaScript: Ajax, menù a tendina, disegno di elementi grafici e trascinamento col mouse (drag-and-drop) Python: un socket serverJava: un altro socket server (più generico)

Page 24: Lucio Zambon: PHP@Elettra

5 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Grafica

Esiste un insieme di elementi grafici generici (widget) http://www.elettra.trieste.it/~tango/Canone/widgets_example.html

Un widget consiste in: Una classe che estende

una generica classe “widget” Uno sfondo disegnato in PHP Una grossa quantità di parametri passati anche a JavaScript

Page 25: Lucio Zambon: PHP@Elettra

6 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Grafica

Configurazionedi un Widget Variabile associata Anteprima Parametri

Page 26: Lucio Zambon: PHP@Elettra

7 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

PannelliI pannelli sono composti da un insieme di widget

Page 27: Lucio Zambon: PHP@Elettra

8 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Pannelli

Pannelli: le configurazioni vengono salvate in file XML

Page 28: Lucio Zambon: PHP@Elettra

9 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Pannelli

Designer: i widget possono essere spostati con il mouse (drag-and-drop) e possono essere ridimensionati tenendo premuto il tasto shift e muovendo il mouse

Page 29: Lucio Zambon: PHP@Elettra

10 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Grafica

Grafica e JavaScript JavaScript è privo di funzionalita grafiche, ma esiste una libreria che realizza gli elementi grafici come colore di sfondo di tag HTML opportuni (vectorgraphics library). L’imagine desiderata viene scomposta nel minor numero possibile di rettangoli e per ognuno di questi viene creato un <div>. http://www.walterzorn.com/jsgraphics/jsgraphics_e.htm

Page 30: Lucio Zambon: PHP@Elettra

11 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Animazione

AJAX: Asynchronous JavaScript and XML http://it.wikipedia.org/wiki/AjaxJavaScript fa una chiamata XMLHttpRequest() per scambiare dati in modo asincrono con il web server usando XML.

Questa tecnica ha circa due anni ed ha già un’enorme popolarità. Dalla versione 2.0 Canone supporta Ajax! Ma c’è ancora molto da fare!

Page 31: Lucio Zambon: PHP@Elettra

12 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Animazione

GAJAX = Graphical Asynchronous JavaScript and XML

Animazione + grafica:Sfondo costruito sullato server (PHP + GD)

Animazione aggiunta Sul lato client (JavaScript + AJAX)

Page 32: Lucio Zambon: PHP@Elettra

13 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Animazione

Frequenza di acquisizioneFrequenza regolabile a livello di pannello

InterpolazioniSi possono inserire fra due letture “vere” una o più interpolazioni che rendono l’animazione molto più fluida a parità di banda.Il prezzo da pagare è un ritardo nella visualizzazione e la non perfetta veridicità di tutti i dati mostrati.

Page 33: Lucio Zambon: PHP@Elettra

14 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Gestione risorse

Permessi utente read - solo lettura operator - lettura e comandi expoert – configurazione

Page 34: Lucio Zambon: PHP@Elettra

15 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Sviluppi Futuri

Solo alcuni dei possibili miglioramenti: Upgrade del Designer creare la possibilità di aggiungere

nuovi widget Estensione della libreria di widget Utilizzo del formato grafico SVG (XML del W3C)

http://www.w3.org/Graphics/SVG/ Utilizzo del linguaggio JavaFX script (??)

http://www.sun.com/software/javafx/

Page 35: Lucio Zambon: PHP@Elettra

16 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon

Conclusioni

RingraziamentiMiha Pelko (Lubiana, Slovenia) http://www.cosylab.com

Socket server in Java per altri sistemi di controllo e debugAnthony J. Green (Cambridge, UK) http://www-mdp.eng.cam.ac.uk

Stili, sicurezza e debug

Documentazione, demo e sorgenti:http://luciozambon.altervista.org/canone