semaine 4 git
This commit is contained in:
parent
06a0b2134f
commit
a772da306d
339
4CMDivers.md
Normal file
339
4CMDivers.md
Normal file
@ -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).
|
||||
|
||||
|
||||
|
BIN
git_tutorial.pdf
Normal file
BIN
git_tutorial.pdf
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user