340 lines
12 KiB
Markdown
340 lines
12 KiB
Markdown
|
# Divers outils
|
||
|
|
||
|
Nous allons maintenant (re)voir divers outils utiles pour faire du développement.
|
||
|
|
||
|
## Contrôle de version
|
||
|
|
||
|
Il existe de nombreux outils permettant de
|
||
|
* mémoriser une version antérieure d'un fichier
|
||
|
* partager ce fichier
|
||
|
* revenir à une version antérieure
|
||
|
|
||
|
Pour certains fichiers, il existe un système de suivi de version intégré à l'outil permettant de l'éditer. Par exemple, le suivi de version de word.
|
||
|
|
||
|
Il existe maintenant des clients avec un serveur centralisé de sauveguarde utilisés par le grand public (NextCloud, Dropbox, etc) et des outils plutôt pour les développeurs (subversion, git, etc).
|
||
|
|
||
|
Nous allons nous pencher sur git que vous utilisez depuis quelques mois [diaporama Denis](git_tutorial.pdf).
|
||
|
|
||
|
En TP, nous allons voir git plus en détails, en particulier comment travailler à plusieurs (merge, rebase).
|
||
|
|
||
|
## Mark down
|
||
|
|
||
|
Pour faire des readme, des rapports simples, le mark down fonctionne très bien.
|
||
|
C'est un fichier texte qui est interprété entre autre par le client web des serveurs git pour un rendu assez raisonnable.
|
||
|
|
||
|
Le format n'est pas complètement standardisé toutefois, donc veillez à rester sur des choses universelles pour faciliter le rendu.
|
||
|
|
||
|
## LaTeX
|
||
|
|
||
|
Pour des rapports plus conséquents (à partir de 4 ou 5 pages qu'on voudra imprimer), il vaut mieux utiliser un outil permettant de garantir un résultat typographiquement supérieur ce qui offira une lecture plus confortable.
|
||
|
|
||
|
Par exemple voici mon fichier pour une feuille de TD.
|
||
|
On peut aussi faire des lettres, des posters, des présentations.
|
||
|
|
||
|
```latex
|
||
|
\documentclass[a4paper,12pt]{article}
|
||
|
|
||
|
\usepackage[francais]{babel} %%% ponctuation etc en français
|
||
|
\usepackage[utf8]{inputenc} %%% saisir de l'utf8 dans le texte
|
||
|
\usepackage[T1]{fontenc} %%% chargement d'une police décorée avec les accents
|
||
|
\usepackage{lmodern} %%% je souhaite la police lmodern
|
||
|
\usepackage{graphics,graphicx}%%% pour importer des images
|
||
|
\usepackage{url} %%% pour citer des urls, des adresses mails
|
||
|
\usepackage{hyperref} %%% hyperliens dans le pdf
|
||
|
\usepackage[pdftex,usenames,dvipsnames]{xcolor} %%% gestion des couleurs
|
||
|
%%% decommenter si tikz necessaire
|
||
|
%\usepackage{tikz} %%% dessiner programmatiquement.
|
||
|
%\usetikzlibrary[decorations.pathmorphing]
|
||
|
%\usetikzlibrary[decorations.pathreplacing]
|
||
|
%\usetikzlibrary{backgrounds}
|
||
|
%\usetikzlibrary{positioning}
|
||
|
%\usetikzlibrary{arrows}
|
||
|
%\usetikzlibrary{backgrounds}
|
||
|
|
||
|
|
||
|
\usepackage{tcolorbox} %%% boîtes de couleurs
|
||
|
\tcbset{textmarker/.style={%
|
||
|
% skin=enhancedmiddlejigsaw,breakable,
|
||
|
parbox=false,
|
||
|
boxrule=0mm,leftrule=5mm,rightrule=5mm,boxsep=0mm,arc=0mm,outer arc=0mm,
|
||
|
left=3mm,right=3mm,top=1mm,bottom=1mm,toptitle=1mm,bottomtitle=1mm,oversize}}
|
||
|
\newtcolorbox{yellow}{textmarker,colback=yellow!5!white,colframe=yellow}
|
||
|
\newtcolorbox{orange}{textmarker,colback=DarkOrange!5!white,
|
||
|
colframe=DarkOrange!75!yellow}
|
||
|
\newtcolorbox{red}{textmarker,colback=red!5!white,colframe=red}
|
||
|
\newtcolorbox{blue}{textmarker,colback=DeepSkyBlue!5!white,colframe=DeepSkyBlue}
|
||
|
\newtcolorbox{green}{textmarker,colback=Chartreuse!5!white,colframe=Chartreuse}
|
||
|
\newtcolorbox{rainbow}{textmarker,interior hidden,
|
||
|
frame style={top color=blue,bottom color=red,middle color=green}}
|
||
|
%%%
|
||
|
|
||
|
\usepackage{framed} %%% boîtes permettant de gérer correctement le saut de page.
|
||
|
\usepackage{multicol} %%% plusieurs colonnes
|
||
|
\usepackage[subtle]{savetrees} %%% économiser du papier tout en restant lisible.
|
||
|
%\usepackage[a4paper,width=17cm,height=23cm]{geometry} %%% changer les marges
|
||
|
\usepackage{a4wide} %%% version simple du précédent
|
||
|
\usepackage{paralist} %%%
|
||
|
\usepackage{fancyhdr} %%% haut de page
|
||
|
\usepackage{colortbl} %%% tables de couleur
|
||
|
\usepackage{cancel} %%%
|
||
|
\usepackage{amssymb,amsmath,amsthm} %%% Maths symboles, théorèmes etc
|
||
|
|
||
|
%%% On charge le paquet ifthen pout faire des tests
|
||
|
\usepackage{ifthen}
|
||
|
%%% On définit un compteur numérique pour l'année
|
||
|
\newcounter{theyear}
|
||
|
\setcounter{theyear}{\number\year}
|
||
|
%%% Une macro pour écrire l'année académique automatiquement en
|
||
|
%%% fonction du mois en cours
|
||
|
\newcommand{\academicyear}[0]{
|
||
|
\ifthenelse{\number\month<8}
|
||
|
{\addtocounter{theyear}{-1}\arabic{theyear}\addtocounter{theyear}{-1999}\,-\arabic{theyear}}%
|
||
|
{\arabic{theyear}\addtocounter{theyear}{-1999}\,-\arabic{theyear}}%
|
||
|
}%
|
||
|
|
||
|
%%% mettre les macros à la racine du cours et ajuster en conséquence
|
||
|
%%% pour éviter d'avoir plus d'une copie des macros par cours.
|
||
|
%\input{MyMacros.tex}
|
||
|
|
||
|
%\input{SetColors.tex}
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
%%% Def d'environement de Math (Malika)
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
\theoremstyle{plain}
|
||
|
\newtheorem*{theo}{Théorème}
|
||
|
\newtheorem*{cons}{Conséquence}
|
||
|
\newtheorem*{conss}{Conséquences}
|
||
|
|
||
|
|
||
|
\theoremstyle{definition}
|
||
|
\newtheorem{exo}{Exercice}
|
||
|
\newtheorem*{defi}{Définition}
|
||
|
\newtheorem*{probleme}{Problème}
|
||
|
\newtheorem*{reponse}{Réponse}
|
||
|
|
||
|
|
||
|
\theoremstyle{remark}
|
||
|
\newtheorem*{exemple}{Exemple}
|
||
|
\newtheorem*{remarque}{Remarque}
|
||
|
\newtheorem*{remarques}{Remarques}
|
||
|
\newtheorem*{prop}{Propriété}
|
||
|
\newtheorem*{props}{Propriétés}
|
||
|
|
||
|
%\pagestyle{fancy}
|
||
|
\fancyhf{}
|
||
|
\fancyhead{
|
||
|
\begin{minipage}{16cm}
|
||
|
\hspace{-2cm}
|
||
|
Nom : \fbox{\begin{minipage}{6cm}\hfill\vspace{.7cm}\end{minipage}}
|
||
|
\hfill
|
||
|
Pr\'enom : \fbox{\begin{minipage}{4cm}\hfill\vspace{.7cm}\end{minipage}}
|
||
|
\hfill
|
||
|
Groupe : \fbox{\begin{minipage}{.7cm}\hfill\vspace{.7cm}\end{minipage}}
|
||
|
\end{minipage}
|
||
|
}
|
||
|
\fancyfoot[C]{Page {\large\thepage}}
|
||
|
|
||
|
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
%%% Quelques paquets gérant la correction / espace pour la reponse
|
||
|
%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
\usepackage{comment}
|
||
|
%%% Pour afficher la correction et exclure les boites pour la reponse
|
||
|
% \includecomment{correction}
|
||
|
% \excludecomment{EspaceReponse}
|
||
|
%%% Pour version cachant la correction et incluant l'espace pour la reponse
|
||
|
\excludecomment{correction}
|
||
|
\includecomment{EspaceReponse}
|
||
|
|
||
|
|
||
|
%%%
|
||
|
\begin{document}
|
||
|
|
||
|
\
|
||
|
\vspace{.2cm}
|
||
|
|
||
|
{\small
|
||
|
\noindent IUT Sénart-Fontainebleau, UPEC
|
||
|
\hfill
|
||
|
Florent Madelaine
|
||
|
|
||
|
\noindent DEV 2.3
|
||
|
\hfill
|
||
|
Luc Dartois
|
||
|
|
||
|
\noindent IUT Info 2A \hfill Luc Hernandez
|
||
|
|
||
|
\hfill\noindent\academicyear{}
|
||
|
|
||
|
}
|
||
|
\vspace{.7cm}
|
||
|
|
||
|
\hrule
|
||
|
\vspace{.3cm}
|
||
|
|
||
|
\begin{center}
|
||
|
|
||
|
{\textbf{\Large
|
||
|
Quelques outils
|
||
|
}}
|
||
|
\vspace{.1cm}
|
||
|
|
||
|
\end{center}
|
||
|
\vspace{.3cm}
|
||
|
|
||
|
\hrule
|
||
|
\vspace{.3cm}
|
||
|
|
||
|
\section*{Préambule}
|
||
|
Nous allons survoler certains outils qui sont particulièrement utiles
|
||
|
pour travailler sur un projet.
|
||
|
|
||
|
Je ne vais pas revenir sur les outils de \textbf{gestion de version}. Je
|
||
|
recommande très fortement l'utilisation de git (il y a le serveur
|
||
|
gitea à l'IUT \url{https://dwarves.iut-fbleau.fr/gitiut}).
|
||
|
|
||
|
Il y a des alternatives comme svn, voir pour des choses
|
||
|
simples lorsqu'on ne travaille pas avec des informaticiens, dropbox ou
|
||
|
autre service similaire de cloud.
|
||
|
De manière générale, l'excuse \og mon chat a mangé mon projet ce w.e.,
|
||
|
je ne peux donc pas vous le rendre\fg{} n'est pas acceptable.
|
||
|
|
||
|
Il y a de nombreux outils libres assez pratiques, par exemple framapad
|
||
|
\url{https://framapad.org/fr/} si vous souhaitez partager des idées à
|
||
|
distance sous forme d'un petit texte.
|
||
|
|
||
|
Vous le savez peut-être mais il y a de nombreuses alternatives libres
|
||
|
à des outils bien connus (et propriétaires) qui marchent aussi bien
|
||
|
voir mieux. Voir par exemple ce site:
|
||
|
\url{https://degooglisons-internet.org/fr/} et cette page pour une
|
||
|
liste de service en ligne
|
||
|
\url{https://degooglisons-internet.org/fr/list}.
|
||
|
|
||
|
Aujourd'hui nous allons entrevoir deux outils :
|
||
|
\begin{enumerate}
|
||
|
\item le premier est un outil pour faire du suivi de projet (remplace
|
||
|
le tableau physique du projet agile).
|
||
|
\item le second est un logiciel permettant de rédiger de jolis
|
||
|
rapports, voir de faire des présentations.
|
||
|
\end{enumerate}
|
||
|
|
||
|
|
||
|
\section*{Outil de suivi de projet}
|
||
|
Quand on travaille sur un projet à plusieurs (et même parfois seul),
|
||
|
il est important de pouvoir faire le point sur ce qu'on doit faire.
|
||
|
Il y a un outil non libre qui s'appelle trello que je vous recommande
|
||
|
dans l'immédiat.
|
||
|
|
||
|
Une bonne alternative libre est \url{https://kanboard.org/} mais je ne
|
||
|
trouve plus de serveur accessible gratuitement. En attendant que nous
|
||
|
l'offrons au département, je vous invite à utiliser trello.
|
||
|
|
||
|
L'avantage de kanvoard est qu'il permet de faire des diagrammes de
|
||
|
Gantt, fonctionalité a priori non disponible sur trello.
|
||
|
|
||
|
\section*{\LaTeX}
|
||
|
|
||
|
Il s'agit d'une alternative populaire chez les scientifiques pour
|
||
|
rédiger des documents (lettre, notes de cours, articles de recherche,
|
||
|
rapports, livres) voir même faire des présentations ou des posters.
|
||
|
|
||
|
Le projet initial, \TeX, est initié par Donald Knuth\footnotemark{}
|
||
|
\footnotetext{voir \url{https://en.wikipedia.org/wiki/Donald_Knuth}.}
|
||
|
un pionnier de l'informatique.
|
||
|
|
||
|
Pour l'instant le logiciel n'est pas installé à l'IUT mais vous pouvez
|
||
|
en attendant l'installez chez vous (voir
|
||
|
\url{https://www.tug.org/texlive/acquire-netinstall.html}) ou dans
|
||
|
l'immédiat pour aujourd'hui utiliser un serveur avec une interface web
|
||
|
qui permet même de collaborer sur un même document.
|
||
|
|
||
|
\begin{yellow}
|
||
|
\begin{exo}
|
||
|
\begin{enumerate}
|
||
|
\item
|
||
|
Créez un compte sur \url{https://www.overleaf.com/about}.
|
||
|
\item Créez un nouveau projet (en partant d'un exemple).
|
||
|
\item Générez le pdf.
|
||
|
\end{enumerate}
|
||
|
\end{exo}
|
||
|
\end{yellow}
|
||
|
|
||
|
Dans l'esprit, le \LaTeX ressemble au html.
|
||
|
Le code est compilé pour produire un document (à l'origine du
|
||
|
postcript, maintenant avec pdfLatex, du pdf).
|
||
|
|
||
|
Si vous souhaitez vous former, vous pouvez par exemple regarder ce
|
||
|
wikibook : \url{https://en.wikibooks.org/wiki/LaTeX}.
|
||
|
|
||
|
Avec assez peu d'efforts, il est facile de faire un rapport avec des
|
||
|
sections, un index, quelques images et une bibliographie.
|
||
|
|
||
|
Vous pouvez même faire des présentations de très belle qualité avec
|
||
|
beamer. Le serveur overleaf contient de nombreux template.
|
||
|
Dans l'immédiat je vous invite quand même à utiliser des choses très
|
||
|
simples.
|
||
|
|
||
|
\begin{yellow}
|
||
|
\begin{exo}
|
||
|
Créez un squelette de rapport avec \LaTeX{} comportant un titre,
|
||
|
un résumé, une table des matières, une figure.
|
||
|
|
||
|
Dans un second temps, si ce n'est pas déjà fait, chargez les
|
||
|
paquets avec les bonnes options permettant de rédiger un tete en
|
||
|
Français avec une gestion des accents, de la ponctuation etc.
|
||
|
|
||
|
Ensuite, ajoutez une table des figures et un index (glossaire)
|
||
|
de termes techniques.
|
||
|
|
||
|
Ensuite ajoutez une jolie formule de math (avec des fractions et
|
||
|
des sommes ou des intégrales).
|
||
|
|
||
|
Finalement, changez les fontes par défaut en allant voir le
|
||
|
catalogue ici \url{https://tug.org/FontCatalogue/allfonts.html}.
|
||
|
\end{exo}
|
||
|
\end{yellow}
|
||
|
|
||
|
De manière générale, il ne faut pas chercher à détourner \LaTeX{} de
|
||
|
ce qu'il souhaite faire. Le but de ce logiciel est de faire de la mise
|
||
|
en page automatiquement. Si vous souhaitez faire de la mise en page
|
||
|
très précise (comme dans un journal par exemple) alors \LaTeX{} n'est
|
||
|
pas adapté.
|
||
|
\end{document}
|
||
|
|
||
|
```
|
||
|
|
||
|
## Documenter votre code
|
||
|
|
||
|
Il existe des outils qui fonctionnent pour n'importe quel langage comme [doxygen](https://doxygen.nl/).
|
||
|
|
||
|
Pour java, en général on utilise [javadoc](https://www.oracle.com/technical-resources/articles/java/javadoc-tool.html).
|
||
|
|
||
|
NB : certains éditeurs (par exemple sublimetext) génèrent à la volée une ébauche de documentation pour chaque méthode, chaque classe.
|
||
|
|
||
|
La commande `javadoc -d doc` permet de générer la documentation au format html dans le style de la documentation java que vous utilisez. En paramètre, vous pouvez donner des fichiers java.
|
||
|
|
||
|
## Organisation d'un projet
|
||
|
|
||
|
On va normalement avoir plusieur répertoires.
|
||
|
* `src` pour les sources (les `.java`)
|
||
|
* `doc` pour la documentation
|
||
|
* `test` pour les tests
|
||
|
* `build` pour les exécutables (les `.class`)
|
||
|
|
||
|
À la racine un `README` expliquant brièvement l'architecture du projet et comment déployer / utiliser le travail du projet.
|
||
|
On ajoute aussi normalement une licence, par exemple [creative commons](https://creativecommons.org/about/cclicenses/).
|
||
|
|
||
|
Quand on a beaucoup de fichiers java on va avoir plusieurs paquets.
|
||
|
On verra ça en détail en seconde année.
|
||
|
|
||
|
On propose normalement une méthode pour compiler les sources efficacement et générer un exécutable.
|
||
|
En java souvent on va générer un `jar` (c'est juste une archive zip spéciale contenant les exécutable)
|
||
|
|
||
|
On peut par exemple utiliser `make` ou encore un script en shell.
|
||
|
|
||
|
On verra ceci plus tard, mais il existe aussi des outils plus récents, souvent bien intégrés aux IDE permettant de faire du déploiement continu (maven, gradle).
|
||
|
|
||
|
|
||
|
|