399 lines
12 KiB
TeX
399 lines
12 KiB
TeX
|
\documentclass{beamer}
|
||
|
|
||
|
%\usertheme{Madrid}
|
||
|
\setbeamercovered{transparent}
|
||
|
\setcounter{tocdepth}{2}
|
||
|
\usepackage[french]{babel}
|
||
|
%\usepackage[utf8,utf8x]{inputenc}
|
||
|
\usepackage[T1]{fontenc}
|
||
|
\usepackage{xunicode} %Unicode extras!
|
||
|
\usepackage{xltxtra} %Fixes
|
||
|
\setmainfont{CaviarDreams}
|
||
|
\usepackage{multicol}
|
||
|
%\usepackage{colortbtl}
|
||
|
\usepackage{graphicx}
|
||
|
\usepackage{verbatim} % Pour l'insertion de fichier en mode verbatim
|
||
|
\usepackage{ucs}
|
||
|
\usepackage{tabto}
|
||
|
\usepackage{xcolor}
|
||
|
\usepackage{hyperref}
|
||
|
\usepackage{hyperxmp}
|
||
|
\hypersetup{%
|
||
|
colorlinks=true,linkcolor=blue,urlcolor=blue,pdfpagemode=UseNone,
|
||
|
pdftitle={Tiramisu},
|
||
|
pdfkeywords={eole, cadoles, python, tiramisu},
|
||
|
pdfauthor={Emmanuel Garette},
|
||
|
pdflang={fr-FR},
|
||
|
pdfcopyright={Copyright © 2013 Cadoles}, % Nécessite XeTeX
|
||
|
pdflicenseurl={http://creativecommons.org/licenses/by-sa/2.0/fr/},
|
||
|
}
|
||
|
%\usecolortheme{crane}
|
||
|
\definecolor{UniBlue}{RGB}{83,121,180}
|
||
|
\definecolor{CleanWhite}{RGB}{255,255,255}
|
||
|
\setbeamercolor{title}{fg=UniBlue}
|
||
|
\setbeamercolor{frametitle}{fg=CleanWhite}
|
||
|
\setbeamercolor{structure}{fg=UniBlue}
|
||
|
\newcommand{\eolesmall}{
|
||
|
\begin{minipage}[c]{0.10\textwidth}
|
||
|
\includegraphics[width=1cm]{beamer-skel/img/logo-eole.png}
|
||
|
\end{minipage}
|
||
|
}
|
||
|
\newcommand{\eolebig}{\includegraphics[width=2cm]{beamer-skel/img/logo-eole.png}}
|
||
|
\newcommand{\eolefull}{\includegraphics{beamer-skel/img/logo-eole.png}}
|
||
|
%\setmonofont[Scale=0.86]{Andale Mono}
|
||
|
%\usepackage{colortab}
|
||
|
|
||
|
\setbeamertemplate{background}{\includegraphics[width=128mm]{beamer-skel/img/banner01.png}}
|
||
|
|
||
|
\title[]{Tiramisu}
|
||
|
|
||
|
\subtitle{Version 0.48 et supérieur}
|
||
|
|
||
|
\author[Equipe Auteur]{Emmanuel Garette}
|
||
|
|
||
|
%\institute[E.O.L.E]{\includegraphics[width=2cm]{beamer-skel/img/logo-eole.png}}
|
||
|
\institute[Cadoles]{\includegraphics[width=2cm]{beamer-skel/img/logo-cadoles-01.png}}
|
||
|
|
||
|
\date{{\small 8 avril 2013}}
|
||
|
|
||
|
\subject{Talks}
|
||
|
|
||
|
\AtBeginSubsection[]
|
||
|
{
|
||
|
\begin{frame}<beamer>
|
||
|
\frametitle{}
|
||
|
\tableofcontents[currentsection,currentsubsection]
|
||
|
\end{frame}
|
||
|
}
|
||
|
|
||
|
|
||
|
\logo{
|
||
|
%\includegraphics[width=1cm]{beamer-skel/img/logo-ecologie.png}~
|
||
|
%\hspace{120pt}
|
||
|
\includegraphics[width=2cm]{beamer-skel/img/logo-cadoles-01.png}~
|
||
|
%\hspace{113pt}
|
||
|
%\includegraphics[width=1cm]{beamer-skel/img/logo_en.jpg}~
|
||
|
}
|
||
|
%%%presentation
|
||
|
%\documentclass{beamer}
|
||
|
%\usepackage{beamerthemetree}
|
||
|
%%%impression
|
||
|
%%\documentclass[a4paper,9pt]{extarticle}
|
||
|
%%\usepackage{beamerarticle}
|
||
|
%%%
|
||
|
%
|
||
|
%% class FR
|
||
|
%\usepackage[T1]{fontenc}
|
||
|
%\usepackage[utf8]{inputenc}
|
||
|
%\usepackage[frenchb]{babel}
|
||
|
%
|
||
|
%% image
|
||
|
%\usepackage{graphicx}
|
||
|
%
|
||
|
%\usecolortheme{crane}
|
||
|
%\beamertemplatetransparentcovered
|
||
|
%
|
||
|
%% le logo
|
||
|
%%\logo{\includegraphics[height=1cm]{ban.png}}
|
||
|
%
|
||
|
%\title{Tiramisu}
|
||
|
%\subtitle{Version 0.48 et supérieur}
|
||
|
%
|
||
|
%\author{GARETTE Emmanuel}
|
||
|
%\institute{Cadoles}
|
||
|
%\date{\today}
|
||
|
|
||
|
\begin{document}
|
||
|
\frame{\titlepage}
|
||
|
|
||
|
\section{Introduction}
|
||
|
\begin{frame}{Plan}
|
||
|
\small \tableofcontents[currentsection, hideothersubsections]
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Introduction}
|
||
|
\begin{itemize}
|
||
|
\item Tiramisu :
|
||
|
\begin{itemize}
|
||
|
\item résultat d'une réflexion en gestation dès le début de EOLE 2.3 ;
|
||
|
\item première ligne de code environ septembre 2011 ;
|
||
|
\item un an de travail sur le code ;
|
||
|
\item 207 commits, 1 262 lignes de codes, 473 lignes de commentaires.
|
||
|
\end{itemize}
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\section{Les objets Tiramisu}
|
||
|
\begin{frame}{Plan}
|
||
|
\small \tableofcontents[currentsection, hideothersubsections]
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Présentation}
|
||
|
\begin{itemize}
|
||
|
\item Les 4 types d'objets :
|
||
|
\begin{itemize}
|
||
|
\item les Options
|
||
|
\begin{itemize}
|
||
|
\item UnicodeOption, ChoiceOption, ... = les variables ;
|
||
|
\item les OptionDescriptions = l'arborescence (familles, groupes, ...) ;
|
||
|
\end{itemize}
|
||
|
\item les Values : valeurs personnalisées d'une configuration, calcul de la valeur et gestion des multis ;
|
||
|
\item les Settings : propriétés particulières d'une configuration et read\_only/read\_write ;
|
||
|
\item les Configs : point d'entrée et lien entre des options/des valeurs/des propriétés = un serveur ;
|
||
|
\end{itemize}
|
||
|
\item notes :
|
||
|
\begin{itemize}
|
||
|
\item des options en "lecture seule" ;
|
||
|
\item des options communes à plusieurs serveurs : définition de variantes ;
|
||
|
\item des configs, values, settings uniques et spécifiques à un serveur, un utilisateur.
|
||
|
\end{itemize}
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Option}
|
||
|
\begin{itemize}
|
||
|
\item name : nom de la variable ;
|
||
|
\item informations : libellé, aide, séparateur, ... ;
|
||
|
\item default : valeur par défaut ;
|
||
|
\item callback : calcul pour obtenir la valeur par défaut ;
|
||
|
\item values, open\_values : valeur possible (pour ChoiceOption), booléen pour savoir si les valeurs sont ouvertes ;
|
||
|
\item opt\_type : type de l'objet (unicode, choice, ...) ;
|
||
|
\item properties : propriété par défaut d'une variable (mandatory, ...) ;
|
||
|
\item requires : modification des propriétés suivant la valeur d'une autre variable ;
|
||
|
\item multi : booléen pour savoir si c'est une multi ;
|
||
|
\item validator : option de validation supplémentaire ;
|
||
|
\item multitype, master\_slaves, default\_multi : default ou master ou slave, valeur de la master pour une slave et inversement, valeur simple pour l'ajout dans une multi sur une slave.
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{OptionDescription}
|
||
|
\begin{itemize}
|
||
|
\item name : nom de la famille, ... ;
|
||
|
\item informations : aide, ... ;
|
||
|
\item properties : propriété par défaut (hidden, ...)
|
||
|
\item requires : modification des propriétés suivant la valeur d'une variable ;
|
||
|
\item children : ensemble des fils (structure arborescente) ;
|
||
|
\item group\_type : default, family ou master ;
|
||
|
\item cache\_paths : cache (chemin, option) généré à la création de l'objet Config.
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Values}
|
||
|
\begin{itemize}
|
||
|
\item values : dictionnaire ( \{option: (owner, value)\}) ;
|
||
|
\item ne conserve pas les valeurs par défaut ou calculées.
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Settings}
|
||
|
\begin{itemize}
|
||
|
\item Properties : dictionnaire
|
||
|
\begin{itemize}
|
||
|
\item de l'objet Config : liste de propriétés à "vérifier" ;
|
||
|
\item d'un objet Option : liste des propriétés de l'objet Option modifié (ex. : calcul) ;
|
||
|
\end{itemize}
|
||
|
\item permissives : dictionnaire
|
||
|
\begin{itemize}
|
||
|
\item de l'objet Config : liste de propriétés à ne pas vérifier de manière temporaire (ex. : pour un calcul) ;
|
||
|
\item d'un objet Option : liste de propriétés à ne jamais vérifier pour l'objet Option (ex. : basic/normal/expert) ;
|
||
|
\end{itemize}
|
||
|
\item owner : propriétaire de l'application.
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Config}
|
||
|
\begin{itemize}
|
||
|
\item Config/SubConfig :
|
||
|
\begin{itemize}
|
||
|
\item descr : l'objet OptionDescription ;
|
||
|
\end{itemize}
|
||
|
\item Config :
|
||
|
\begin{itemize}
|
||
|
\item settings ;
|
||
|
\item values.
|
||
|
\end{itemize}
|
||
|
\item objet Config unique par serveur ;
|
||
|
\item objet SubConfig construit "à la demande" ;
|
||
|
\item création du cache de l'objet OptionDescription si nécessaire.
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Nouveautés version 0.48}
|
||
|
\begin{itemize}
|
||
|
\item Création des Values ;
|
||
|
\item séparation stricte Option/Settings/Values/Config ;
|
||
|
\item Option/OptionDescription ne sont plus modifiées ;
|
||
|
\item optimisation mémoire/temps de chargement ;
|
||
|
\item suppression des adaptations spécifiques à l'ancien gen\_config et nettoyage de l'API.
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Reste à faire pour la version 1}
|
||
|
\begin{itemize}
|
||
|
\item Finir le nettoyage de Config ;
|
||
|
\item créer un object MetaConfig pour Zéphir.
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
\begin{frame}
|
||
|
\frametitle{Optimisations}
|
||
|
\begin{itemize}
|
||
|
\item ConfigObj/fichier INI trop lent et pas adapté ;
|
||
|
\item voir si les variables de Values/Settings => base de données ;
|
||
|
\item cache des valeurs calculées (notamment pour le Zéphir).
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\section{Intégration à Créole}
|
||
|
\begin{frame}{Plan}
|
||
|
\small \tableofcontents[currentsection, hideothersubsections]
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Propriétés}
|
||
|
\begin{itemize}
|
||
|
\item Liste des propriétés utilisées :
|
||
|
\begin{itemize}
|
||
|
\item *mandatory* : variable obligatoire ;
|
||
|
\item hidden : variable cachée (mais accessible en lecture seule) ;
|
||
|
\item disabled : variable désactivée (jamais accessible) ;
|
||
|
\item *frozen* : non modifiable ;
|
||
|
\item auto\_freeze : variable non modifiable si enregistrée ;
|
||
|
\item force\_default\_on\_freeze : retour à la valeur par défaut si frozen ;
|
||
|
\item basic ou normal ou expert : les modes ;
|
||
|
\end{itemize}
|
||
|
\item dans la gen\_config :
|
||
|
\begin{itemize}
|
||
|
\item defaut : read\_write ;
|
||
|
\item mode : ajoute les modes supérieurs au mode courant ;
|
||
|
%FIXME je ne suis pas sur que le mode soit mis par défaut
|
||
|
\item "debug" : active "hidden".
|
||
|
\end{itemize}
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Requires}
|
||
|
\begin{itemize}
|
||
|
\item hidden\_if\_(not\_)in == disabled\_if\_(not\_)in => disabled
|
||
|
\item freeze\_if\_(not\_)in => frozen + hidden + force\_default\_on\_freeze
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Permissives}
|
||
|
\begin{itemize}
|
||
|
\item Pour la Config : basic, normal, expert, hidden ;
|
||
|
\item variable modifiée : basic, normal, expert.
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\section{Performances}
|
||
|
\begin{frame}{Plan}
|
||
|
\small \tableofcontents[currentsection, hideothersubsections]
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Mémoire}
|
||
|
\begin{itemize}
|
||
|
\item UnicodeOption : 620 bytes
|
||
|
\item OptionDescription : 960 bytes (+ cache)
|
||
|
\item Values : 344 bytes
|
||
|
\item Settings : 416 bytes
|
||
|
\item Config : 384 bytes
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Temps}
|
||
|
\begin{itemize}
|
||
|
\item 100 000 UnicodeOptions : 1.460 seconds
|
||
|
\item 100 000 OptionDescriptions : 2.257 seconds
|
||
|
\item 1er Config avec 100 000 UnicodeOptions et 100 000 OptionDescriptions : 0.977 seconds
|
||
|
\item 100 000 Configs : 3.111 seconds
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Cas pratique}
|
||
|
\begin{itemize}
|
||
|
\item Serveur avec 294 variables.
|
||
|
\item 1 variante, 1 serveur :
|
||
|
\begin{itemize}
|
||
|
\item 812 280 bytes
|
||
|
\item 0.061 seconds
|
||
|
\end{itemize}
|
||
|
\item 1 variante * 10 serveurs :
|
||
|
\begin{itemize}
|
||
|
\item 1 155 064 bytes
|
||
|
\item 0.326 seconds
|
||
|
\end{itemize}
|
||
|
\item 10 variantes * 1 serveurs :
|
||
|
\begin{itemize}
|
||
|
\item 4 414 904 bytes
|
||
|
\item 0.598 seconds
|
||
|
\end{itemize}
|
||
|
\item 10 variantes * 100 serveurs :
|
||
|
\begin{itemize}
|
||
|
\item sans eol : 0.8 seconds
|
||
|
\item avec eol : 21 seconds
|
||
|
\end{itemize}
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\section{Conclusion}
|
||
|
\begin{frame}{Plan}
|
||
|
\small \tableofcontents[currentsection, hideothersubsections]
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Conclusion}
|
||
|
\begin{itemize}
|
||
|
\item Créole est un environnement complexe :
|
||
|
\begin{itemize}
|
||
|
\item beaucoup de variables, mais peu de valeurs modifiées ;
|
||
|
\item valeur par défaut provenant de différentes sources (défaut, variante, calcul, ...) ;
|
||
|
\item types de valeur différents ;
|
||
|
\item peut évoluer/être redéfini ;
|
||
|
\item gestion de différents modes (basic, normal, expert) ;
|
||
|
\item valeur obligatoire ;
|
||
|
\item valeur simple/multiple/groupée ;
|
||
|
\item valeur calculée ;
|
||
|
\item valeur inaccessible ;
|
||
|
\item utilisation non arborescente d'une structure arborescente ;
|
||
|
\item ... ;
|
||
|
\end{itemize}
|
||
|
\item Tiramisu est adapté :
|
||
|
\begin{itemize}
|
||
|
\item structure de données volatile (pas besoin de réflecteur) ;
|
||
|
\item rapide/économe en mémoire ;
|
||
|
\item très flexible.
|
||
|
\end{itemize}
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Licence}
|
||
|
Cette œuvre est mise à disposition sous licence \href{http://creativecommons.org/licenses/by-sa/2.0/fr/}{\textsc{cc-by-sa-2.0}}
|
||
|
|
||
|
\begin{itemize}
|
||
|
\item Attribution
|
||
|
\item Partage dans les Mêmes Conditions 2.0
|
||
|
\item France
|
||
|
\end{itemize}
|
||
|
|
||
|
Pour voir une copie de cette licence, visitez
|
||
|
\href{http://creativecommons.org/licenses/by-sa/2.0/fr/}{http://creativecommons.org/licenses/by-sa/2.0/fr/}
|
||
|
ou écrivez à Creative Commons, 444 Castro Street, Suite 900,
|
||
|
Mountain View, California, 94041, USA.
|
||
|
\end{frame}
|
||
|
\end{document}
|