diff --git a/4CMDivers.md b/4CMDivers.md new file mode 100644 index 0000000..4220396 --- /dev/null +++ b/4CMDivers.md @@ -0,0 +1,339 @@ +# 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). + + + diff --git a/git_tutorial.pdf b/git_tutorial.pdf new file mode 100644 index 0000000..0c322c6 Binary files /dev/null and b/git_tutorial.pdf differ