Lucio Zambon: PHP@Elettra - Presentation Transcript
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.
1 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon
Elettra: Sincrotrone Trieste S.C.p.A.
Linac: Vengono generati ed accelerati dei pacchetti di elettroni
Storage Ring: anello dove
viene accumulato il fascio
di elettroni per 24-48 ore
Beam Lines: Linee di luce
di sincrotrone dove ven-
gono svolti esperimenti
di fisica della materia,
microfabbricazione (nano
tubi), medicina (corona
virus, mammografia),
chimica, etc.
2 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
3 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), Windows
Altri sistemi di controllo:
Epics: usato da circa cento istituti, basato su WxWorks
Tine: sviluppato a DESY (Amburgo)
etc
4 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
5 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon
E-Giga: Electronic Graphic Interface for Global Archiving
Tecnologia: PHP, MySQL, JavaScript, JPGraph, etc
Periodo di sviluppo: 25 luglio 2003 – fino ad oggi
Versioni: 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
1 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon
Architettura a pagina singola
Requisiti:
Web browser
Pop-ups
Cookies
2 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon
Aree principali
Selezione
Disegno
Menu
3 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
4 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)
5 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon
Grafico
Clic sull’
immagine per
ottenere uno
zoom
6 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
7 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
8 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon
Menu
Bookmarks
Le preferenze sono salvate nei cookies
Create salva configurazione in bookmark
Load carica una configurazione
Default setta un bookmark come default
Delete cancella un bookmark
9 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
10 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
11 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon
Editor di Formule
Composizione
Caricamento
Cancellazione
Grafica MathML
auto –
completamento
delle variabili
12 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon
Menu
Help
Help Contents alcune pagine di aiuto
About E-Giga versione e autore
13 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 spazio
Ringraziamenti
Sono state utilizzate 8 librerie open-source PHP e JavaScript
Molte persone hanno contribuito con suggerimenti e
segnalazioni di malfunzionamenti
14 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
1 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon
Canone: un'interfaccia PHP verso i sistemi di controllo
web
libreria Canone Gestione
core Utenti
Widget
animazione Front-end Buffer DB
Widget
Multi-port channel socket
Socket server
Interfaccia DAL
Epics Tango … Sistema di controllo
2 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ù porte
Disaccoppiamento: 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).
3 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 server
Java: un altro socket server (più generico)
4 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
5 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon
Grafica
Configurazione
di un Widget
Variabile associata
Anteprima
Parametri
6 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon
Pannelli
I pannelli sono composti da un
insieme di widget
7 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon
Pannelli
Pannelli: le configurazioni
vengono salvate in file XML
8 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
9 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
10 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon
Animazione
AJAX: Asynchronous JavaScript and XML
http://it.wikipedia.org/wiki/Ajax
JavaScript 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!
11 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon
Animazione
GAJAX = Graphical Asynchronous JavaScript and XML
Animazione + grafica:
Sfondo costruito sul
lato server (PHP + GD)
Animazione aggiunta
Sul lato client
(JavaScript + AJAX)
12 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon
Animazione
Frequenza di acquisizione
Frequenza regolabile a livello di pannello
Interpolazioni
Si 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.
13 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon
Gestione risorse
Permessi utente
read - solo lettura
operator - lettura e comandi
expoert – configurazione
14 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/
15 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon
Conclusioni
Ringraziamenti
Miha Pelko (Lubiana, Slovenia) http://www.cosylab.com
Socket server in Java per altri sistemi di controllo e debug
Anthony J. Green (Cambridge, UK) http://www-mdp.eng.cam.ac.uk
Stili, sicurezza e debug
Documentazione, demo e sorgenti:
http://luciozambon.altervista.org/canone
16 PHP Day 2007, Verona 18 maggio 2007 Lucio Zambon
0 comments
Post a comment