\section{Moyens} L’accent sera ici mis sur l’utilisation de logiciels libres et de l’approche \gls{wysiwym} pour améliorer la fiabilité de la production. Choix d’outils pour l’implémentation de trois grandes phases : \begin{itmz} \item{mettre en place des opérations clés incontournables} \item{automatiser l’exécution de ces tâches maîtresses} \item{étendre le spectre de toutes les tâches automatisables} \end{itmz} %⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ \hr %⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ \subsection{Rationalisation} Au moins deux piliers sont indispensables : \subsubsection{Gestion de configuration distribuée} Utiliser un outil permettant à la fois de : \begin{itmz} \item{garder une trace de toutes les tâches prévues et réalisées} \item{sauvegarder des modifications partielles de document en tant que telles} \item{bénéficier d’un contrôle d’intégrité automatique de ces sauvegardes} \item{travailler séparément sur différents contextes de modifications} \item{intégrer des modifications provenant de divers collaborateurs} \item{répliquer ces sauvegardes sur plusieurs serveurs pour plus de disponibilité} \end{itmz} Les plus connus étant : Git \cite{git}, Mercurial \cite{hg}, Fossil \cite{fossil}, Bazaar \cite{bazaar}. \pagebreak \subsubsection{Processus de fabrication} Définir un cheminement menant à la reproductibilité d’un document. La plupart du temps : \begin{itmz} \item{extractions d’éléments depuis des documents sources} \item{préparations ou conversions d’éléments à intégrer} \item{compilation du document avec intégration de ressources} \item{assemblage final avec d’autres documents si besoin} \item{signature du document, si besoin d’authentification} \item{déploiement du document final vers des hébergements} \end{itmz} %⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ \hr %⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ \subsection{Automatisation} Il s’agit ici d’implémenter et orchestrer le processus de fabrication défini. Deux approches sont possibles : \subsubsection{Fichiers de fabrication} Fichiers textuels très simples, se contentant de lister les différentes étapes, ainsi que toutes les commandes associées à chacune des étapes recensées. Exemple : Make \cite{make}. \subsubsection{Scripts d’assemblage} Fichiers textuels plus ou moins complexes, laissant la liberté à l’auteur de programmer toutes les opérations qu’il souhaite autour des étapes. Le plus courants : \gls{bash} \cite{bash}, Python \cite{py}. \pagebreak \subsection{Opérations automatisables} De multiples étapes peuvent intervenir dans la production d’un document : \subsubsection{Conversion de documents} ImageMagick, PanDoc \cite{pandoc}. \subsubsection{Découpe de documents} Extraction de certaines pages d’un document source déjà existant. \gls{pdftk}. \subsubsection{Extraction d’éléments} Récupération d’une ou plusieurs images spécifiques d’un autre document. Poppler, GhostScript. \subsubsection{Rotation d’éléments} Ajustement de l’orientation de pages ou images disponibles. \gls{pdftk}, ImageMagick. \subsubsection{Compression d’images} Réduction du volume de données occupé par des images. ImageMagick. \subsubsection{Résolution d’impression} Modification de la taille d’images par rapport au gabarit du document. ImageMagick. \subsubsection{Compilation} … \subsubsection{Assemblage de documents} \gls{pdftk}. \subsubsection{Signature numérique} Pouvoir vérifier l’authenticité du document, quand consulté par des personnes. Le standard : \gls{gpg} \cite{gpg},\\ une implémentation libre du standard ouvert \gls{pgp} \cite{pgp}. Signer un document : \begin{lstlisting}[language=sh] gpg --armor # sous forme textuelle --detach-sign # signer dans un fichier séparé 'nom_du_document.pdf' # ce document \end{lstlisting} Vérifier une signature : \begin{lstlisting}[language=sh] gpg --verify # vérifier la validité 'nom_du_document.pdf.asc' # de cette signature 'nom_du_document.pdf' # pour ce document \end{lstlisting} \subsubsection{Réplication de contenus} Répliquer régulièrement à plusieurs endroits, pour une disponibilité constante. \gls{ssh} \cite{ssh} + Rsync. \pagebreak