Skip to content

Commit

Permalink
Suite de l'introduction (#5)
Browse files Browse the repository at this point in the history
* Petit mot sur docker

* Des éléments sur git

* Cite la formation travail collaboratif

* Ajout logo git

* configuration pycharm

* ajout image config pycharm

* Attention au credential helper

* modif image git

* oubli du =

* essai avec rawhtml

* ajout shortcode rawhtml

* change dossier

* Griffoner des choses

* ptit mot sur les tests

* quelques mots sur les dépendances

* quelques mots sur les dépendances

* Partager

* tests après

* Topo sur la lisibilité du code

* Met le lien quelque part

* Plus sur la structure

* Elements supplémentaires sur la lisibilité

* change title level

* On verra pour les fonctions imbriquées

* Mot sur sphinx

* Ajout sur les tests et gitignore

* Un peu de détails

* Référence au hitch guide

* Ecnore un mot
  • Loading branch information
linogaliana committed Jul 23, 2020
2 parents b5d9fe7 + 0b4d3d1 commit e0e61ab
Show file tree
Hide file tree
Showing 3 changed files with 523 additions and 23 deletions.
113 changes: 90 additions & 23 deletions content/getting-started/01_installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,6 @@ l'adhésion de la communauté aux outils de versionning (le plus connu étant `g
ayant amené à repenser la manière de traiter des données.


## Exécution dans un environnement temporaire

Avec les dépôts sur `Github` ou `Gitlab`, on dissocie environnement de stockage des codes et
d'exécution de ceux-ci. Sur le
[dépôt github de ce cours](https://github.com/linogaliana/python-datascientist), on peut
Expand All @@ -89,18 +87,27 @@ lancer une instance `Jupyter` en ligne (analogue à celle que vous pouvez
lancer en local en utilisant `Anaconda`) ont émergé. Parmi celles-ci :

* **__Binder__** [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/linogaliana/python-datascientist/master) ;
* [Google collaboratory](https://colab.research.google.com/notebooks/welcome.ipynb) ;
* [Kaggle](https://www.kaggle.com/notebooks) ;
* Il est aussi possible d'exécuter des codes sur les services d'intégration continue de
* **Google collaboratory**
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](http://colab.research.google.com/github/linogaliana/python-datascientist/blob/pandas_intro/static/notebooks/numpy.ipynb)
;


Il est aussi possible d'exécuter des codes sur les services d'intégration continue de
[gitlab (service gitlab CI)](https://medium.com/metro-platform/continuous-integration-for-python-3-in-gitlab-e1b4446be76b)
ou de [github (via travis)](https://docs.travis-ci.com/user/languages/python/). Il s'agit d'une approche
*bash* c'est-à-dire que les scripts sont exécutés par une console à chaque intéraction avec le dépôt
*bash* c'est-à-dire que les scripts sont exécutés par une console à chaque interaction avec le dépôt
distant gitlab/github, sans session ouverte pour les éditer. Cette approche est très appropriée
pour assurer la reproductibilité d'une chaîne de traitement (on peut aller jusq'au
déploiement de visualisations automatiques).
déploiement de visualisations automatiques) mais n'est pas très pratique pour
le griffonnage.

[Kaggle](https://www.kaggle.com/notebooks) propose des compétitions de code mais
donne également la possibilité d'exécuter des notebooks,
comme les solutions précédentes.


Attention, les performances de ces solutions peuvent être variables. Les serveurs publics mis à disposition
ne sont pas forcément des foudres de guerre. Avec les serveurs publics mis à disposition gratuitement,
ne sont pas forcément des foudres de guerre. Avec ceux-ci,
on vérifie plutôt la reproductibilité des scripts avec des jeux d'exemples.
Quand on est dans une entreprise ou administration, qui dispose de serveurs propres,
on peut aller plus loin en utilisant ces outils
Expand All @@ -121,30 +128,74 @@ disposant de toutes les dépendances nécessaires pour ce cours et disposant d'u



### Google collaboratory
### Google collaboratory [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)

Il s'agit d'un mélange de notebook jupyter et de Google docs. Il est possible de connecter les
*notebooks* ouverts à Google Drive ou à
[github](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)),
la deuxième solution étant préférable.
[github](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb),
la deuxième solution étant préférable. L'icone
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
fournit un raccourci pour lancer le notebook dans un environnement dédié.


### Kaggle
### Docker

`Kaggle` n'héberge pas que des compétitions de code mais donne la possibilité d'exécuter des notebooks,
comme les solutions précédentes.
Derrière ces outils pour exécuter de manière simple des scripts Python sur un serveur temporaire se cache
`Docker`. `Docker` est une technologie qui vise à permettre la construction de machines autosuffisantes
(que l'on nomme containeurs) répliquant un environnement contrôlé (que l'on nomme image).

# Installer et configurer git

Interface avec github?
## Pourquoi utiliser la gestion de version ?

## Docker
Nos travaux statistiques évoluent constamment (productions annuelles, nouvelles enquêtes, etc.) et nous travaillons souvent à plusieurs. En outre, le maintien de la qualité de nos chaînes de traitement nécessite un archivage détaillé et facilement accessible.

Tous les statisticiens se sont déjà demandé (ou à leurs collègues) :

* quelle était la bonne version d'un programme
* qui était l'auteur d'un bout de code en particulier
* si un changement était important ou juste un essai
* comment fusionner des programmes
* etc.

Il existe un outil informatique puissant afin de répondre à tous ces besoins : la gestion de version (*version control system* (VCS) en anglais). Ses avantages sont incontestables et permettent de facilement :

* enregistrer l'historique des modifications d'un ensemble de fichiers
* revenir à des versions précédentes d'un ou plusieurs fichiers
* rechercher les modifications qui ont pu créer des erreurs
* partager ses modifications et récupérer celles des autres
* proposer des modifications, les discuter, sans pour autant modifier la dernière version existante
* identifier les auteurs et la date des modifications

En outre, ces outils fonctionnent avec tous les langages informatiques
(texte, R, Python, SAS, $\LaTeX$, Java, etc.) car reposent sur la comparaison des lignes
et des caractères des programmes.

L'intérêt de `git` dépasse le cadre collaboratif. Même dans une utilisation personnelle de `python` utiliser
`git` rend ***

**TODO**

# Installer et configurer git

## git, kesako ?
## git, kesako ? {{< rawhtml >}} <img src="https://www.linuxjournal.com/sites/default/files/styles/360_250/public/nodeimage/story/git-icon.png?itok=w7zB9vuE" width="100"> {{< /rawhtml >}}

`git` est un système de contrôle de version dont la vocation est de permettre de tracer les modifications faites
entre deux versions d'un fichier. Il s'agit d'un outil particulièrement adapté à la programmation puisque `git` permet
un suivi ligne à ligne des modifications faites à un fichier.

Les modifications sont visibles par tout membre d'un projet et de manière très fine. Il est ainsi possible de
visualiser à quel moment chaque ligne d'un fichier a été modifiée:

![Exemple sur la page d'entrée du cours [ici](https://github.com/linogaliana/python-datascientist/blame/master/content/_index.md)](static/pictures/intro/gitblame.png)

Et il est possible de comparer l'évolution de l'état d'un fichier entre deux versions:

![Exemple sur la page d'entrée du cours [ici](https://github.com/linogaliana/python-datascientist/blame/master/content/_index.md)](static/pictures/intro/sidebyside.png)

L'utilisation de `git` devient une norme dans les administrations, les entreprises et le monde académique.
Des éléments supplémentaires, avec exemples via `Rstudio` (très peu de différences avec `Pycharm`),
peuvent être trouvés
[ici](https://linogaliana.gitlab.io/collaboratif/git.html)


Explication sommaire de git

## Installer et tester git bash

Expand All @@ -167,11 +218,27 @@ est `git clone` (on crée un clone local, qu'on est ensuite libre de faire évol
![Récupération d'un dépôt sur github via git bash](./pictures/gitbash2.png)

Le contenu du dépôt est maintenant disponible dans le dossier désiré.

## Configurer jupyter pour utiliser le plugin git

## Configurer pycharm pour utiliser le plugin git

Aller dans `File > Settings > Version Control > Git` pour définir le chemin vers lequel `Pycharm` doit trouver
l'exécutable `git`. Si `git` a été installé dans un chemin standard, `Pycharm` le trouve ; sinon,
il faut lui donner (dans le dossier d'installation `git`, bien choisir l'exécutable présent dans
le sous-dossier `cmd/git.exe`) ^[2]

![Récupération d'un dépôt sur github via git bash](./pictures/vcspycharm2.png)

^[2:] Si la case `Use credential helper` est cochée, il est recommandé de la décocher car en cas
de mot de passe tapé trop vite, les tentatives de connexion au dépôt distant seront
systématiquement refusées


## Configurer jupyter pour utiliser le plugin git

https://github.com/jupyterlab/jupyterlab-git

## Présentation des fonctionalités de github et gitlab

## Pratiquer git

Faire un petit notebook

0 comments on commit e0e61ab

Please sign in to comment.