2023-06-04 22:58:04 +02:00
|
|
|
\documentclass[usepdftitle=false]{beamer}
|
2023-04-30 00:19:17 +02:00
|
|
|
|
2023-06-05 12:44:43 +02:00
|
|
|
\usepackage[fr,code]{projektor}
|
|
|
|
\usepackage{adforn}
|
2023-04-30 00:19:17 +02:00
|
|
|
|
2023-06-07 10:04:59 +02:00
|
|
|
% Aliases
|
|
|
|
\def\sujetPT{Analyse des conventions de programmation}
|
|
|
|
\def\clf{\texttt{clang-format}}
|
|
|
|
\def\black{\texttt{black}}
|
|
|
|
\def\ruff{\texttt{ruff}}
|
|
|
|
|
2023-06-04 22:58:04 +02:00
|
|
|
\def\st{Implémentation du projet tuteuré}
|
2023-06-07 10:04:59 +02:00
|
|
|
\title[\st]{\sujetPT}
|
2023-06-04 22:58:04 +02:00
|
|
|
\subtitle{\st}
|
|
|
|
\author{
|
|
|
|
\begin{tabular}{@{}l@{\hspace{.5em}}l}
|
|
|
|
\href{mailto:anri.kennel@etud.univ-paris8.fr}{Anri Kennel} &| L3 \\
|
2023-06-07 10:04:59 +02:00
|
|
|
\href{http://www.bocal.cs.univ-paris8.fr/~balmas/}{Françoise Balmas} &| Tutrice
|
2023-06-04 22:58:04 +02:00
|
|
|
\end{tabular}\\
|
|
|
|
}
|
|
|
|
\institute{
|
|
|
|
\href{https://informatique.up8.edu/licence-iv/}{Université Paris 8}
|
|
|
|
$\cdot$ Licence informatique \& vidéoludisme
|
|
|
|
}
|
2023-04-30 00:19:17 +02:00
|
|
|
\date{Année universitaire 2022-2023}
|
|
|
|
|
2023-06-04 22:58:04 +02:00
|
|
|
\hypersetup{
|
|
|
|
pdfauthor={Anri Kennel (étudiant) et Françoise Balmas (tuteur)},
|
|
|
|
pdftitle={\st},
|
|
|
|
}
|
|
|
|
|
2023-04-30 00:19:17 +02:00
|
|
|
\begin{document}
|
|
|
|
|
|
|
|
\maketitle
|
|
|
|
|
2023-05-29 19:40:23 +02:00
|
|
|
\begin{frame}[t, plain]{Plan}
|
2023-06-02 18:32:47 +02:00
|
|
|
\begin{center}
|
|
|
|
\sujetPT
|
|
|
|
\end{center}
|
2023-06-05 12:44:43 +02:00
|
|
|
\tableofcontents
|
2023-04-30 00:19:17 +02:00
|
|
|
\end{frame}
|
|
|
|
|
2023-06-02 18:32:47 +02:00
|
|
|
\def\title{Projet}
|
|
|
|
\section{\title}
|
2023-06-05 12:44:43 +02:00
|
|
|
|
|
|
|
\begin{frame}[fragile]{Conventions de programmation}
|
|
|
|
Qu'est-ce que c'est ?
|
|
|
|
\begin{itemize}
|
|
|
|
\item<2-> \alert<4>{Contraintes imposées} de manière à rendre le code plus lisible et échangeable
|
2023-06-06 23:33:23 +02:00
|
|
|
\begin{itemize}
|
|
|
|
\item<2-> Code source
|
|
|
|
\item<2-> Projet en général (organisation des fichiers, \dots)
|
|
|
|
\end{itemize}
|
2023-06-05 12:44:43 +02:00
|
|
|
\item<3-> Par exemple :
|
|
|
|
\end{itemize}
|
|
|
|
|
|
|
|
\onslide<3->
|
|
|
|
\begin{figure}
|
|
|
|
\begin{minipage}{0.3\textwidth}
|
|
|
|
\begin{minted}[autogobble,frame=lines,rulecolor=\color{gray}]{abnf}
|
|
|
|
IndentWidth: 4
|
|
|
|
\end{minted}
|
|
|
|
\end{minipage}
|
|
|
|
\caption*{Dans \clf, indentation de 4 espaces}
|
|
|
|
\end{figure}
|
|
|
|
|
|
|
|
\only<4>{\frametitle{\dots implémentation ?}}
|
2023-06-02 18:32:47 +02:00
|
|
|
\begin{itemize}
|
2023-06-05 12:44:43 +02:00
|
|
|
\item<4-> Rendre le suivi des conventions moins contraignantes
|
2023-06-02 18:32:47 +02:00
|
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
|
|
|
|
2023-06-05 12:44:43 +02:00
|
|
|
\begin{frame}{\title}
|
|
|
|
Base :
|
|
|
|
\begin{itemize}
|
|
|
|
\item \textbf{Utilisation de \clf.}
|
2023-06-06 23:33:23 +02:00
|
|
|
\begin{itemize}
|
|
|
|
\item<2-> Compatible avec plusieurs langages (C, C++, \dots)
|
|
|
|
\item<2-> Customisation du style de convention suivi
|
|
|
|
\end{itemize}
|
2023-06-05 12:44:43 +02:00
|
|
|
\item<3-> Développé en python
|
|
|
|
\end{itemize}
|
|
|
|
|
|
|
|
\onslide<4->{Projet :}
|
|
|
|
\begin{itemize}
|
|
|
|
\item<4-> Création d'une interface basique pour \clf
|
|
|
|
\item<4-> Utilisation de \clf\ moins rebutante
|
|
|
|
\end{itemize}
|
|
|
|
\end{frame}
|
2023-06-02 18:32:47 +02:00
|
|
|
|
|
|
|
\def\title{Interface}
|
|
|
|
\section{\title}
|
|
|
|
\begin{frame}{\title}
|
|
|
|
\only<5>{
|
|
|
|
\begin{figure}
|
|
|
|
\includegraphics[width=\textwidth]{imgs/regular.png}
|
|
|
|
\caption*{Errsy}
|
|
|
|
\end{figure}
|
|
|
|
}
|
|
|
|
\begin{columns}[onlytextwidth]
|
|
|
|
\column{\dimexpr\linewidth-50mm-5mm} % colonne de gauche
|
|
|
|
\begin{itemize}
|
2023-06-05 12:44:43 +02:00
|
|
|
\item<1-3,6-> Simple (tkinter)
|
|
|
|
\item<2-3,6-> Support dossier complet ou fichier unique
|
|
|
|
\item<3,6-> Rechargement automatique en cas de changement de style/fichier/dossier
|
|
|
|
\item<4,6-> Système de pages
|
|
|
|
\item<6-> Possibilité de cliquer sur les avertissements (détail)
|
2023-06-02 18:32:47 +02:00
|
|
|
\end{itemize}
|
|
|
|
|
|
|
|
\column{50mm} % colonne de droite
|
|
|
|
\only<1-2>{
|
2023-06-02 19:05:47 +02:00
|
|
|
\vspace{2cm}
|
2023-06-02 18:32:47 +02:00
|
|
|
\begin{figure}
|
|
|
|
\def\ecart{-6cm}
|
|
|
|
\hspace{\ecart}
|
|
|
|
\includegraphics[width=10cm]{imgs/main.png}
|
|
|
|
\caption*{\hspace{\ecart}Écran principal}
|
|
|
|
\end{figure}
|
|
|
|
}
|
|
|
|
\only<3>{
|
|
|
|
\begin{figure}
|
|
|
|
\def\ecart{-5mm}
|
|
|
|
\hspace{\ecart}
|
|
|
|
\includegraphics[width=5cm]{imgs/style.png}
|
|
|
|
\caption*{\hspace{\ecart}Sélection des styles}
|
|
|
|
\end{figure}
|
|
|
|
}
|
|
|
|
\only<4>{
|
|
|
|
\begin{figure}
|
|
|
|
\def\ecart{-6cm}
|
|
|
|
\hspace{\ecart}
|
|
|
|
\includegraphics[width=10cm]{imgs/page.png}
|
|
|
|
\caption*{\hspace{\ecart}Menu du bas pour les pages}
|
|
|
|
\end{figure}
|
|
|
|
}
|
|
|
|
\end{columns}
|
2023-06-05 12:44:43 +02:00
|
|
|
\onslide<7>{\centering $\Rightarrow$ Démonstration $\Leftarrow$}
|
2023-06-02 18:32:47 +02:00
|
|
|
\end{frame}
|
|
|
|
|
2023-06-05 12:44:43 +02:00
|
|
|
\section[Suivi de conventions de programmation]{Suivre une convention}
|
|
|
|
\def\title{Outils utilisés - développement du projet}
|
2023-06-02 19:05:47 +02:00
|
|
|
\subsection*{\title}
|
2023-06-02 18:32:47 +02:00
|
|
|
\begin{frame}{\title}
|
2023-06-05 12:44:43 +02:00
|
|
|
Langage du projet : \textbf{Python}
|
|
|
|
\begin{block}<2->{Formatter : \black}
|
2023-06-02 18:49:36 +02:00
|
|
|
Formate le code pour suivre la convention \textit{(convention décidée par les développeurs de l'outil)}
|
|
|
|
\end{block}
|
2023-06-02 19:05:47 +02:00
|
|
|
|
2023-06-05 12:44:43 +02:00
|
|
|
\begin{block}<3->{Linter : \ruff}
|
2023-06-02 18:49:36 +02:00
|
|
|
Complément à \black, formate les importations, préviens de certains bugs en amont
|
|
|
|
\end{block}
|
2023-06-02 19:05:47 +02:00
|
|
|
|
|
|
|
\vspace{5mm}
|
2023-06-05 12:44:43 +02:00
|
|
|
\begin{exampleblock}<4->{Configuration}
|
2023-06-02 19:05:47 +02:00
|
|
|
Les deux outils sont configurés dans un unique fichier \texttt{pyproject.toml}
|
|
|
|
et l'environnement de développement est explicité dans \texttt{requirements.txt}.
|
|
|
|
\end{exampleblock}
|
2023-06-02 18:32:47 +02:00
|
|
|
\end{frame}
|
|
|
|
|
2023-06-02 19:05:47 +02:00
|
|
|
\def\title{Facile d'utilisation}
|
|
|
|
\subsection*{\title}
|
2023-06-02 18:32:47 +02:00
|
|
|
\begin{frame}{\title}
|
2023-06-02 18:49:36 +02:00
|
|
|
\begin{itemize}
|
2023-06-05 12:44:43 +02:00
|
|
|
\item Configuration des IDE \begin{itemize}
|
2023-06-06 23:33:23 +02:00
|
|
|
\item \texttt{EditorConfig} (\texttt{Emacs}, \texttt{Vim}\dots)
|
|
|
|
\item \texttt{VSCode}/\texttt{VSCodium}
|
|
|
|
\end{itemize}
|
2023-06-05 12:44:43 +02:00
|
|
|
\item<2-> Intégration dans Git \begin{itemize}
|
2023-06-06 23:33:23 +02:00
|
|
|
\item hook $\rightarrow$ \texttt{precommit} (vérifie le code avec \black\ et \ruff)
|
|
|
|
\end{itemize}
|
2023-06-02 18:49:36 +02:00
|
|
|
\end{itemize}
|
2023-06-05 12:44:43 +02:00
|
|
|
\onslide<3>{\textbf{Permet de suivre les conventions de programmation plus facilement}}
|
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
\def\title{Conclusion}
|
|
|
|
\section*{\title}
|
|
|
|
\begin{frame}{\title}
|
|
|
|
Conventions de programmation :
|
|
|
|
\begin{itemize}
|
|
|
|
\item Ne dois pas être contraignant
|
|
|
|
\item Il faut être d'accord avec le style choisit
|
|
|
|
\end{itemize}
|
|
|
|
|
|
|
|
\onslide<2>
|
|
|
|
Projet :
|
|
|
|
\begin{itemize}
|
|
|
|
\item Simple
|
|
|
|
\item Suivre une convention, c'est, aussi, simple
|
|
|
|
\end{itemize}
|
2023-04-30 00:19:17 +02:00
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
\appendix
|
2023-06-05 12:44:43 +02:00
|
|
|
\begin{frame}[plain, c]
|
|
|
|
\centering \Large \adforn{21} \textbf{Merci} \adforn{49}
|
|
|
|
\end{frame}
|
2023-04-30 00:19:17 +02:00
|
|
|
|
|
|
|
\end{document}
|