***Notes personnelles sur le Mooc de Recherche Reproductible.***
# MODULE 1 : CARNETS DE NOTES ? CAHIER DE LABORATOIRE
## Du fichier texte au langage de balisage léger
EDITEUR DE TEXTE : gedit (linux), notepad (windows)
Les fichiers texte peuvent etre lus par des éditeurs de texte qui sont moins puissants que des traitements de texte, mais sont facilement reproductible et il est possible de les lire même des années plus tard quelque soient les versions </l'éditeurcar sont codés tyiquement en UTF-8 : Universal Character Set Transformation Format-8bits
Il faut le plus possible choisir le format texte UTF-8 a moins d'avoir une bonne raison de ne pas le faire.
Pb : on ne peut pas « traiter « le texte (gras, italique, revision...).
->Creation de langage de balisage (markup langage) :
html
Ils utilisent des fichiers source au format texe , offre un confort de lecture, nécessitent un logiciel « de rendu » dédié (navigateur internet) et parfois un editeur spécialisé.
Langages aux balisages légers :
type de langage de balisage avec syntaxe simple,
conçu pour qu'un fichier dans ce langage soit facile a saisir avec un éditeur de texte simple
facile a lire dans sa forme non formatée (sans logiciel dédié)
→ parfait pour prendre des notes structurées.
Exemple : Markdown, wikitexte (utilisé par wikipedia), Asciidoc, RestructuredText (très employé par programmeurs Python)
Choix de langage de balisage léger importe peu car il existe logiciels qui permettent de passer de l'un a l'autre. De plus possibilité de créer des pdf, word, html (formats plus sophistiqués)...a partir de markdown (via pandoc).
Jupyter et Rstudio utililsent pandoc.
Reference pour aller plus loin en markdon et pandoc :
https://enacit.epfl.ch/cours/markdown-pandoc/
A noter : Gitlab permet de taper du markdown et de voir le rendu html, et de stocker plusieurs version du code. Remarkable est aussi un editeur markdown (sur windows et linux)
## Perennité et evolutivité des notes avec la Gestion de versions :
Plateforme Gitlab créée dans le cours.
Gitlab permet de créer des fichiers et une arborescence et de les partager.
Faire une recherche dans Gitlab :
On se met sur un réperetoire et on fait une recherche du mot que l'on souhaite en haut à gauche : cela affiche tous les repertoires/fichiers/contenu du fichier contenant ce mot.
### Git ; Github, gitlab : l'historique
historique Git : créé pour développer linux : outil open source. N'est pas comme dropbox, car il faut faire des lignes de commandes a chaque fois pour syncroniser, savoir ce qu'on veut syncroniser, comment...
Il y a des interfaces pour ne pas passer par lignes de commandes.
Il faut identifier des « checkpoint » : moments clefs : on utilise **Gitadd** pour conserver les modifis et identifier des « groupes » de modification.
Puis avec **Gitcommit** : on sauve la nouvelle version : ca s'ajouter à la branche.
Si on a créé une version qui nous plait pas on peut repartir de celle d'avant : cela va arreter la branche et en faire partir une autre.
En fait, cela fonctionne pas sur un seul fichier mais sur des projets (plusieurs fichiers).
Chaque version du projet est identifié par un **SHA1**.
Après on pourra comparer des versions : **git diff** avec les SHA1 des deux versions.
**Git check out** : revient à l'état du répertoire quand on était dans la version ?.
Cet historique est local. On peut utiliser la commande Guitpush pour propager ses modifications sur le serveur GuitLab. On ne transfère pas tout sur le serveur Guitlab, on peut choisir.
Quand on travaille a plusieurs : on créé une plateforme sur le serveur Guitlab. Puis chacun fait un guitclone en local. Il propage ses modifications avec **Guitpush**, et récupère les modifications avec **Guit pull**. En général pas possible de faire un Guitpush si historique pas a jour en local, il faut d'abord faire un guitpull.
Possibilité de conflits entre modificaitons, et possibilité correction avec un merge (fusion des modificaitons). Pas obligé de passer par le serveur, on peut passer direct d'un ordi a l'autre.
Avantage : système résilient car tout le monde a une copie en local.
Sur guitlab : acces a historique via la partie Graph
Il vaut mieux eviter les conflits : ne pas avoir de gros fichiers et ne pas les changer dans tous les sens de manière inutile (ajouter des espaces...). Il faut faire des commit différents en modificaiton de forme et de fond (avec guit statut) : on peut faire des git commit de fond, et des guit commit de forme ; faire des petits commits.
**Guit commit -a** : permet de tout commiter sans réfléchir.
Diff et fusion impossible avec des fichiers binaires, il vaut mieux rester en format text.
Commande : **guit log**: donne accès à l'ensemble des modification de l'historique.
***Conclusion : facilite beaucoup le travail collaboratif.***
### Comment met on en place un serveur Guit Lab ? L'ecosysteme Guit.
Guit hub et guitlab sont des plateformes d'hébergement des projets collaboratifs, et fournissent des interfaces web d'accès à l'intégralité du contenu des projets et des historiques.
En plus on peut utiliser markdown et visualiser en html, et on peut éditer....
Ces interface web permet de gérer les permissions sur le projets : on peut gere des utilisateurs avec différents droits (lecture/ecriture...).
C'est une sorte de réseau social des développeurs : peuvent partager des commandes, on peut aussi identifier des bugs. On peut aussi faire de la revue de code : proposer des modificaitons (faire un fork : demander de faire une copie dans espace personnel ; puis proposer les modif : pull request) regarder les modifications proposés, et décider de l'assimiler ou pas.
On peut aussi faire : integration continue : faire des séries de tests apres modifcaitons. Déverser dans les archives ; Zenodo, SWH
Guithub :Logiciel propriétaire : si on veut un projet public, ou si on est étudiant : on peut créer des projets avec hébergement gratuits. Pour les entreprises : c'est payant.
Guitlab : alternative libre : il y a une entreprise (guitlab), il y a une instnce guitlab.com : un peu comme guithub. Il y a deux versions de Guitlab : 1 version de la communauté (gratuite) et une version d'entreprise (en avance de quelques mois).
Il y a aussi plusieurs guitlab : des universtié, de l'Inria.
Si on veut une notorité publique dans le codage : aller vers guithub.
Si projet avec données sensibles (confidentialité) : il vaut mieux un guitlab professionnel.
## Indexation :
Indexation de plusieurs fichiers numériques peuvent être étiquetés (index).
**DocFetcher** est un moteur de recherche de bureau facile d'emploi et fonctionne tres bien.
On peut voir l'intérieur du fichier, et la recherche se fait a l'intérieur des fichiers.
Probleme : il peut y avoir de tres nombreuses occurrences. Poiur éviter cela on peut créer les étiquettes.
Ajouter des étiquettes sur markdown : <!-- étiquette -->
Cela permet d'introduire des series de nombres d'identification sans que cekla ne soit visible.
Sur une image : on peut avoir acces aux métadonnées. On peut ajouter un commentaire avec un mot clef « etiquette1 ».