1. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Interface de contrôle et de commande MSG
Benoît Larroque1
1 Pôle ATIS
École Supérieure d’Electronique d’Informatique et d’Automatique
Projet XL
2. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Sommaire
Motivation
Pourquoi une nouvelle interface ?
Interface MSG
Station
Technologies utilisées
Modélisation
Interface utilisateur
Utilisation
API, Maintenance, Perspectives
API
Maintenance
Perspectives d’avenir
3. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Lignes directrices
Motivation
Pourquoi une nouvelle interface ?
Interface MSG
Station
Technologies utilisées
Modélisation
Interface utilisateur
Utilisation
API, Maintenance, Perspectives
API
Maintenance
Perspectives d’avenir
4. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
En image
5. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Plus précisément
On souhaite une interface avec les capacités :
• Accéder aux images à distance
• Faire des requêtes (temporelles, géographiques)
• Surveiller les machines
6. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Plus précisément
On souhaite une interface avec les capacités :
• Accéder aux images à distance
• Faire des requêtes (temporelles, géographiques)
• Surveiller les machines
7. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Plus précisément
On souhaite une interface avec les capacités :
• Accéder aux images à distance
• Faire des requêtes (temporelles, géographiques)
• Surveiller les machines
8. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Lignes directrices
Motivation
Pourquoi une nouvelle interface ?
Interface MSG
Station
Technologies utilisées
Modélisation
Interface utilisateur
Utilisation
API, Maintenance, Perspectives
API
Maintenance
Perspectives d’avenir
9. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Station
10. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Lignes directrices
Motivation
Pourquoi une nouvelle interface ?
Interface MSG
Station
Technologies utilisées
Modélisation
Interface utilisateur
Utilisation
API, Maintenance, Perspectives
API
Maintenance
Perspectives d’avenir
11. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Ruby on Rails
• Open source
• Framework MVC
• Fournit une abstraction de la base de données
12. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Ruby on Rails
• Open source
• Framework MVC
• Fournit une abstraction de la base de données
13. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Ruby on Rails
• Open source
• Framework MVC
• Fournit une abstraction de la base de données
14. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
PostgreSQL et PostGIS
• Open source
• Robuste et performant (+ de 377760
images en bases)
• Extensible, ajout des primitives
géographiques
15. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
PostgreSQL et PostGIS
• Open source
• Robuste et performant (+ de 377760
images en bases)
• Extensible, ajout des primitives
géographiques
16. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
PostgreSQL et PostGIS
• Open source
• Robuste et performant (+ de 377760
images en bases)
• Extensible, ajout des primitives
géographiques
17. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Lignes directrices
Motivation
Pourquoi une nouvelle interface ?
Interface MSG
Station
Technologies utilisées
Modélisation
Interface utilisateur
Utilisation
API, Maintenance, Perspectives
API
Maintenance
Perspectives d’avenir
19. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Schéma
Deux types d’utilisateurs→utilisateurs et possesseurs de jetons
• ont tous des droits (admin, lecteur, analyste. . . )
• un possesseur de jetons ne peut pas être admin
20. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Lignes directrices
Motivation
Pourquoi une nouvelle interface ?
Interface MSG
Station
Technologies utilisées
Modélisation
Interface utilisateur
Utilisation
API, Maintenance, Perspectives
API
Maintenance
Perspectives d’avenir
22. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
• xHTML léger pour un téléchargement plus rapide
• Facilement modifiable par conception
• Multi-résolution (conçu pour 1024 × 768)
23. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
• xHTML léger pour un téléchargement plus rapide
• Facilement modifiable par conception
• Multi-résolution (conçu pour 1024 × 768)
24. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
• xHTML léger pour un téléchargement plus rapide
• Facilement modifiable par conception
• Multi-résolution (conçu pour 1024 × 768)
25. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Lignes directrices
Motivation
Pourquoi une nouvelle interface ?
Interface MSG
Station
Technologies utilisées
Modélisation
Interface utilisateur
Utilisation
API, Maintenance, Perspectives
API
Maintenance
Perspectives d’avenir
26. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Recherche
• Formulaire permettant de chercher par :
• Date (début et fin)
• Canal (ex : VIS008, VIS006, IR_039. . . )
• Coordonnées Géographiques (latitude, longitude)
• Les résultats sont affichés dans un tableau réordonnable
27. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Recherche
• Formulaire permettant de chercher par :
• Date (début et fin)
• Canal (ex : VIS008, VIS006, IR_039. . . )
• Coordonnées Géographiques (latitude, longitude)
• Les résultats sont affichés dans un tableau réordonnable
36. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Lignes directrices
Motivation
Pourquoi une nouvelle interface ?
Interface MSG
Station
Technologies utilisées
Modélisation
Interface utilisateur
Utilisation
API, Maintenance, Perspectives
API
Maintenance
Perspectives d’avenir
37. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Fait
Fact
L’interface est conçue pour nécessiter peu de maintenance
38. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Opérations de maintenance
• Surveiller la tailles des logs
• tail log/production.log > log/production.log
• Surveiller la bonne marche de PostgreSQL
• VACCUM FULL ANALYZE
39. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Opérations de maintenance
• Surveiller la tailles des logs
• tail log/production.log > log/production.log
• Surveiller la bonne marche de PostgreSQL
• VACCUM FULL ANALYZE
40. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
En cas de problème
• Regarder les logs du serveur
• redémarrer lighttpd
41. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Lignes directrices
Motivation
Pourquoi une nouvelle interface ?
Interface MSG
Station
Technologies utilisées
Modélisation
Interface utilisateur
Utilisation
API, Maintenance, Perspectives
API
Maintenance
Perspectives d’avenir
42. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Idées de projet
Nombreuses !
• Analyses déportées
• Client lourd, interfaçage Google Earth
• Aide à la destruction des images inintéressantes
43. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Idées de projet
Nombreuses !
• Analyses déportées
• Client lourd, interfaçage Google Earth
• Aide à la destruction des images inintéressantes
44. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Idées de projet
Nombreuses !
• Analyses déportées
• Client lourd, interfaçage Google Earth
• Aide à la destruction des images inintéressantes
45. Motivation Interface MSG API, Maintenance, Perspectives Conclusion
Conclusion
• Enfin une interface simple et accessible à tous.
• Facile à maintenir.
• Un projet intéressant.
47. Appendices
Code
require ’ atis ’
r e q u i r e ’ RMagick ’
i n c l u d e Magick
TOKEN= ’ 1∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗TOKEN∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ e ’
def composite ( tab )
t a b . map { | f | f . s a v e ( ’ / v e r s a t i l e / ’+f . f i l e n a m e ) }
t=t a b . c o l l e c t { | f | p u t s f . f i l e n a m e ; ( Image . r e a d ( ’ / v e r s a t i l e / ’+f .
filename ) ) [0];}
Image . c o m b i n e ( t [ 0 ] , t [ 1 ] , t [ 2 ] ) . t h u m b n a i l ( 1 0 8 0 , 1 0 8 0 ) . w r i t e ( quot; . / o u t /
c o m p o s i t e −#{t a b . f i r s t . d a t e . s t r f t i m e ( ’%Y% %d%H% ’ ) } . png quot; )
m M
p u t s quot; c o m p o s i t e −#{t a b . f i r s t . d a t e . s t r f t i m e ( ’%Y% %d%H% ’ ) } . png quot;
m M
t a b . map { | f | F i l e . u n l i n k ( ’ / v e r s a t i l e / ’+f . f i l e n a m e ) }
end
p u t s quot;START SCRIPTquot;
c o n=A t i s C o n n e c t i o n . new ( : t o k e n = TOKEN)
>
s=A t i s S e a r c h . new co n
r e t ={}
c a c h e=D i r . new ( ’ . / o u t / ’ ) . r e j e c t { | t | t [0]== ’ . ’ [ 0 ] } . c o l l e c t { | t | Time . r e a d (
F i l e . basename ( t , ’ . png ’ ) . s p l i t ( ’− ’ ) . l a s t ) }
s . s e a r c h ( : c h a n n e l = [ ’ VIS006 ’ , ’ VIS008 ’ , ’ IR_016 ’ ] , : e n d =
> >Time . r e a d ( quot;
2 0 0 9 0 1 1 1 1 2 0 0 quot; ) , : b e g i n = Time . u t c ( 2 0 0 9 ) ) do | im |
>
r e t [ im . d a t e ]= Hash . new i f r e t [ im . d a t e ] . n i l ?
r e t [ im . d a t e ] [ im . c h a n n e l ]= im u n l e s s c a c h e . i n c l u d e ? im . d a t e
i f r e t [ im . d a t e ] . s i z e > 2
p u t s quot; compose #{im . d a t e } quot;
c o m p o s i t e ( [ r e t [ im . d a t e ] [ ’ IR_016 ’ ] , r e t [ im . d a t e ] [ ’ VIS008
’ ] , r e t [ im . d a t e ] [ ’ VIS006 ’ ] ] )
end
: more
end
49. Appendices
Code
require ’ atis ’
r e q u i r e ’ RMagick ’
i n c l u d e Magick
TOKEN= ’ 1∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗TOKEN∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ e ’
p u t s quot;START SCRIPTquot;
c o n=A t i s C o n n e c t i o n . new ( : t o k e n = TOKEN) ; s=A t i s S e a r c h . new con ; r e t ={}
>
c a c h e=D i r . new ( ’ . / o u t / ’ ) . r e j e c t { | t | t [0]== ’ . ’ [ 0 ] } . c o l l e c t { | t | Time . r e a d (
F i l e . basename ( t , ’ . png ’ ) . s p l i t ( ’− ’ ) . l a s t ) }
c a c h e 2=D i r . new ( ’ . / o u t 2 / ’ ) . r e j e c t { | t | t [0]== ’ . ’ [ 0 ] } . c o l l e c t { | t | Time . r e a d
( F i l e . basename ( t , ’ . png ’ ) . s p l i t ( ’− ’ ) . l a s t ) }
b l a c k = Magick : : Image . new ( 1 0 8 0 , 1 0 8 0 ) { s e l f . b a c k g r o u n d _ c o l o r = ’ b l a c k ’ }
s . s e a r c h ( : c h a n n e l = [ ’ IR_039 ’ ] , : e n d =
> >Time . r e a d ( quot; 2 0 0 9 0 1 1 1 1 2 0 0 quot; ) , :
b e g i n = Time . u t c ( 2 0 0 9 ) ) do | im |
>
i f ( c a c h e . i n c l u d e ? ( im . d a t e ) && ! c a c h e 2 . i n c l u d e ? ( im . d a t e ) )
p u t s quot; compose #{im . d a t e } quot;
i =Image . r e a d ( quot; . / o u t / c o m p o s i t e −#{im . d a t e . s t r f t i m e ( ’%Y% %d m
% M ’ ) } . png quot; ) [ 0 ]
H%
i . f u z z=quot; 5.1% quot; ; t r a n s= i . t r a n s p a r e n t ( ’ b l a c k ’ )
im . s a v e ( ’ / v e r s a t i l e / ’+im . f i l e n a m e )
n _ i g h t =( Image . r e a d ( ’ / v e r s a t i l e / ’+im . f i l e n a m e ) [ 0 ] ) .
thumbnail (1080 ,1080)
n i g h t=Magick : : Image . c o m b i n e ( b l a c k . copy , n _ i g h t , b l a c k . c o p y
)
p=n i g h t . c o m p o s i t e ( t r a n s , 0 , 0 , Magick : : O verC ompo site Op )
p . w r i t e ( quot; . / o u t 2 / c o m p o s i t e 2 −#{im . d a t e . s t r f t i m e ( ’%Y% %d%H% m
M ’ ) } . png quot; ) { s e l f . d e p t h =8}
F i l e . u n l i n k ( ’ / v e r s a t i l e / ’+im . f i l e n a m e )
end
: more
end