---
title: "MOOC RR RMarkdown"
author: "Marc"
date: "02/04/2020"
output:
  html_document: default
  pdf_document: default
  word_document: default
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
# Module 1 : Cahier de notes, cahier de laboratoire

Titre d'une section avec _dièse espace_  
Titre d'une sous-section avec _double dièse espace_  
Conversion en html, PDF ou docx par Pandoc  
Pandoc installé par le site pandoc  
Fichier texte en UTF-8 pour être lu sur tous les ordis et pérenne  
Retour chariot avec double espaces  
italique : _s_ ou *s*  
gras : __s__  
chasse fixe : 's'  
barré : ~~s~~ 
hyperlien : [titre] url entre parenthèse  
Commentaire : <!-- s -->  
image : ![légende] adresse url ou locale entre parenthèse  
Mettre du code dans une ligne : avec des guillemets (Altgr + 7) --> `code`  
Ajouter un bloc de code entre 3 guillemets :  
```
Bloc de code
```

Listes :   
-  
-  
-  

Enumération :  
1.  
2.  
3.  

Imbrication avec tabulation  

## Utilisation Pandoc

Avec la console.  
Se mettre dans le dossier avec cd.  
Conversion en pls formats : pandoc fichier.md -o fichier.extension (html, pdf, docx)  

Utiliser __Emacs__ ou __Vim__ pour passer d'un logiciel à l'autre  

## TEI : texte encoding initiative --> format de balisage standard
Plutôt pour les SHS  

## Git
Git est un logiciel permettant la gestion des versions pérennes.  
### Commandes 
_git add_ --> indiquer les modifs que l'on souhaite conserver pour intégrer les parties de modifications logiques  
_git commit_ --> faire un checkpoint (version)  
_git diff_ --> pour voir la différence entre 2 versions  
_git checkout_ --> revenir à l'état antérieur  

Etape :  
1. Créer un projet sur Gitlab  
2. Commande _git clone_ pour récupérer un historique vierge sur son ordinateur  
3. Travailler avec _git add_ et git commit pour créer pls versions  
4. Commande _git push_ pour propager ses modifs sur le serveur Gitlab  
Uniquement de la branche d'historique principale (sauf si on le spécifie autrement)  
On synchronise des branches en échangeant des morceaux d'historique.  

### Collaborer à pls 
- Si travail séquentiel  
1. Bob fait un _git push_ pour synchroniser sa version master avec le serveur Gitlab  
2. Alice fait _git __pull__ _ pour récupérer du serveur la bonne version master.  
- Si ils travaillent en même temps sur parties différentes  
1. Bob et Alice modifient de parties différentes  
2. Alice fait un _git push_  
3. Bob fait _git push_ --> erreur : d'abord _git pull_ puis _git push_  
--> Fusion des modifications  
- Si ils travaillent en même temps sur parties identiques  
4. Bob va avoir conflit avec son _git pull_ --> gestion du conflit --> _git push_  

### autres sur git
Afficher historique : _git log_  
Merge : _git merge_  

Hébergement Git, interfaces web Github et Gitlab  

Possibilité de déversement vers des archives telle que Zenodo.  

Interfaces graphiques : Jupyter, RStudio, Emacs org-mode  

### Installation de git dans RStudio

Installation de _Git_ sur le site web de [Git](https://git-scm.com/downloads).  
Interface graphique par défaut de Git est Notepad++ mais possibilité d'utilisé autre logiciel (comme RStudio).  

### Configuration de Git
Dans le terminal :  
_git config --global user.name "marc.oudart"_  
_git config --global user.email "marc.oudart@college-de-france.fr"_  

### Dans RStudio
1. _Tools --> Global options --> Git_  
2. _OK_  
3. _Create new project_  
4. __Check _Create a git repository for this project_ __  

A droite dans RStudio --> onglet Git.  
Check les fichiers pour stagged (comme _git add_).  
Commit.  
Donner un titre au commit.  

Créer nouveau fichier RMarkdown.  
Commit.  

_Knit_ en html.  
Commit.  

## Etiquetage et indexation
### DocFetcher

Installation de _DocFetcher_ sur internet   [DocFetcher](http://docfetcher.sourceforge.net/fr/download.html)  

- Ajouter des étiquettes en commentaires en Markdown. Le mot sera encadré par des ";" pour ne pas que DocFetcher confonde l'étiquette avec un vrai mot.  
- Utilisation DocFetcher :  
Dire à gauche quel dossier indexer (et préciser si .md et .org sont à considérer comme fichiers textes).  
Puis rechercher un mot clé.  

### ExifTool
Rajouter des étiquettes sur des images ou des fichiers PDF en ligne de commande :
_exiftool -comment: ";étiquette;" (adresse de l'image)  

# Module 2 : Document computationnel avec RStudio

On peut insérer bout de code avec l'onglet _insert_  
Pour du calcul avec variable qui dépend des bouts de codes précédents --> peut créer des incohérences. Solution : onglet _run_ --> _Run all chunks above_  
On peut replier des zones ou des sections avec la petite flèche à gauche de cette zone ou de cette section.  
Onglet _knit_ pour compiler en html.  
Pour que le code ne soit pas exporter il faut changer les paramètres entre accolades à côté des apostrophes de début. Exemple _echo = FALSE_ ne renvoit pas le bloc en export.  
C'est ici que la taille des graphiques peut être changé également.  
  
Pour faire du LaTeX dans RStudio --> fichier --> nouveau ___RSweave___  
  
On peut faire du python avec _insert_ --> _python_. Mais attention ! Pas de persistence entre les blocs de codes ! Une variable définie sera oubliée et ne pourra être rappelée. Besoin de faire un seul bloc python ?  

## Travailler avec les autres  
Le mieux est d'avoir son document computationnel + un document classique qui sera distribuer aux autres.  
S'il y a besoin de modifs --> changement du document computationnel et changement du format classique.  
Partage et publication avec Gitlab. Possibilité de rendre public son dossier mais attention ! Tout l'historique sera public ! Soit on construit son dossier dés le départ sans cette optique. Soit on fait le ménage en utilisant un site compagnon :  
- archivage d'articles : HAL  
- archivage de code et données : figshare, zenodo, dataverse ??

## Comparaison des outils
- Jupyter : pour un TD ou un tutoriel  
- Emacs/Org-mode : Pour un journal, 1 seul auteur, chronologique. Prise de notes !  
Mode d'étiquettage très simple où on peut retrouver facilement des mots clés.  
Egalement pour un cahier de laboratoire avec classement par thèmes et étiquettages.  
Enfin, pour un article reproductible.  
- RStudio : possibilité de faire article et facile d'accès. Navigation limitée.  

## Rendre compte de son activité  

1. Le reporting  
Compte rendu d'activité pour décrire à peu près tout ce qu'on fait pour que le tuteur puisse suivre et aider, pour faire un rapport ou article, pour que les travaux continus, pour la science ouverte.  

2. Logistique  
Avoir un dépot en ligne (Github/Gitlab).  
Rendu public.  
Faire les reporting tant que les infos sont fraiches.  

3. Organisation du CRA  
Structure :  
- Résultats : ref biblio mais PAS ToDo list.  
- Développement : 
- Journal : Reporting.  
  - Travail effectué  
  - Points bloquants et questions. C'est cette partie auquelle le référant peut apporter sa contribution.  
  - Travaux prévus  
- Conclusion : A la fin du stage. Quoi faire ensuite ? Comment j'ai tenu ce journal ? Comment continuer mon travail ?  
  
Comme un cahier de labo, il ne faut pas éditer ce qu'on a déjà écrit ou alors il faut le préciser avec une petite marque __edit__.  

### Templates RMarkdown pour articles scientifiques

```{r}
install.packages("rticles")
```
Ensuite _File_ --> _New file_ --> _RMarkdown_ --> _From template_  

## Suite sur git et Gitlab dans RStudio

Création d'un compte Gitlab. Identifiants : marc-oudart.  
Création d'un nouveau projet.  
Cloner son projet sur son ordi avec _git clone_.  
Créer un nouveau fichier et ajouter au versionnage avec _git add_.  
Commit avec _git commit_.  
Pousser avec _git push_.  
Rentrer ses identifiants et mots de passe.  
On peut sauvegarder ses id et mdp avec :  
```{bash}
git config credential.helper store
```

  
Toutes les opérations au dessus peuvent se faire avec des boutons clickables dans RStudio.  
  
__Problèmes de identifiants et mots de passe :  
Ouvrir un terminal (possible dans RStudio à côté de la console) en mode _administrateur_.  
```{bash}
git config --system --unset credential.helper
```

## Retour en arrière de versions sur Gitlab

Sur Gitlab, aller sur un fichier et dans l'onglet _history_.  
Rechercher le commit antérieur d'intérêt et faire _browse file_.  
_Download_ dans le dossier.  
Repartir de là pour remplacer le fichier.  


<!-- ## R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.

When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

```{r cars}
summary(cars)
```

## Including Plots

You can also embed plots, for example:

```{r pressure, echo=FALSE}
plot(pressure)
```

Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.
-->