\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{pouvoir revenir à un état antérieur cohérent à tout moment}
\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 nécessaire}
\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.

Le standard : 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.

Les 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,\\
et ainsi être intégrées au sein d’un fichier d’automatisation :

\subsubsection{Conversion de documents}

Transformation de documents existants dans un format plus propice
à l’outil d’assemblage retenu pour le processus de fabrication.

Exemples : PanDoc \cite{pandoc}, ImageMagick \cite{imagemagick}.

\subsubsection{Découpe de documents}

Extraction de certaines pages de documents finaux déjà compilés.

La référence : \gls{pdftk} \cite{pdftk}.

\subsubsection{Extraction d’éléments}

Récupération d’une ou plusieurs images spécifiques d’un autre document.

Exemples : Poppler \cite{poppler}, GhostScript \cite{gs}.

\subsubsection{Rotation d’éléments}

Ajustement de l’orientation de pages ou images disponibles.

Exemples : \gls{pdftk} \cite{pdftk}, ImageMagick \cite{imagemagick}.

\subsubsection{Compression d’images}

Réduction du volume de données occupé par des images.

La référence : ImageMagick \cite{imagemagick}.

\subsubsection{Résolution d’impression}

Modification de la taille d’images par rapport au gabarit du document.

La référence : ImageMagick \cite{imagemagick}.

\subsubsection{Compilation}

Production de rendu du document principal, à partir d’un fichier \gls{wysiwym},\\
à l’aide d’un moteur de rendu approprié au format \gls{wysiwym} retenu.

Exemples : \LaTeX \cite{latex}, Sphinx \cite{sphinx}.

\subsubsection{Assemblage de documents}

Quand il est nécessaire pour obtenir un document final de mettre bout à bout\\
des extraits préparés, le document principal compilé et certaines annexes.

La référence : \gls{pdftk} \cite{pdftk}.

\subsubsection{Signature numérique}

Afin de pouvoir vérifier l’authenticité du document,\\
quand il est consulté par des personnes souhaitant s’en assurer.

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 vers plusieurs serveurs, pour une disponibilité à toute épreuve.

Exemple : Rsync \cite{rsync} via une connexion sécurisée \gls{ssh} \cite{ssh}.

\hr
%\pagebreak
