README.md 6.85 KB
Newer Older
CHAMONT David's avatar
CHAMONT David committed
1
La "piscine", dont le nom est inspiré de certaines pratiques dans les écoles
CHAMONT David's avatar
CHAMONT David committed
2 3 4
d'informatique, se veut une sorte d'atelier collectif ou chacun est autonome et
plonge sur les sujets de son choix, individuellement ou en petits groupes.

CHAMONT David's avatar
CHAMONT David committed
5
Nous vous proposons un [ensemble de plongeons](https://gitlab.in2p3.fr/MaitresNageurs/PiscineJI/tree/master) :
CHAMONT David's avatar
CHAMONT David committed
6
des tutoriels courts (15 à 20 minutes), auto-suffisants, nécessitant le moins
CHAMONT David's avatar
CHAMONT David committed
7 8
d'installation possible, notamment en s'appuyant sur des images Docker ou
VirtualBox. 
CHAMONT David's avatar
CHAMONT David committed
9

10

CHAMONT David's avatar
divers  
CHAMONT David committed
11
# Se préparer à plonger
12 13 14 15

## Instructions générales

Les tutoriels que nous vous proposons devront être exécutés sur vos ordinateurs
16 17 18
portables, par le biais d'images Docker ou de machines virtuelles VirtualBox.

Pour cette raison, nous vous demandons d'installer et de vous familiariser
19
avec Docker et/ou VirtualBox, selon les plongeons que vous voulez essayer.
20 21 22 23 24 25

Vous veillerez à avoir une quantité raisonnable d'espace libre sur vos
ordinateurs portables, car les machines virtuelles sont gourmandes...

## Installation Docker

26 27
Vous trouverez dans les liens ci-dessous des mini-plongeons dédiés aux
différents systèmes d'exploitation.
28 29 30 31 32
* [Installer Docker sous Linux](Docker_00_Linux/README.md)
* [Installer Docker sous MacOSX](Docker_00_Mac/README.md)
* [Installer Docker sous Windows](Docker_00_Windows/README.md)
* [Installer Docker sur du vieux matériel Apple](Docker_00_MacOld/README.md)
* [Installer Docker sur un vieux Windows](Docker_00_WindowsOld/README.md)
33

34
## Installation VirtualBox
35

36
C'est [ici](https://www.virtualbox.org/).
37

38 39
Si vous avez une version ancienne de VirtualBox, merci de la mettre à
jour, sous peine de conflit avec Docker.
40

41 42 43 44 45 46 47
Les utilisateurs de clavier azerty peuvent peiner à faire reconnaitre leur clavier.
Quelques trucs et astuces :
* essayez la commande `loadkeys fr` ; si elle est absente, essayez d'installer le package `kbd`.
* si vous avez lancé votre machine virtuelle en mode graphique et qu'elle
comprend un serveur X11, vous pouvez aussi tenter `setxkbmap fr`.
* sur MacOSX, c'est encore pire... si votre `alt` de gauche ne fonctionne pas,
parfois celui de droite fonctionne.
48 49


50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199
# Contribuer aux plongeons

Nous cherchons à élargir au maximum le champ des propositions
et des technologies. Si vous avez un sujet qui vous tient à coeur ou qui
vous semble important, n'hésitez pas à contribuer. Il ne s'agit pas d'écrire
un document d'expert, mais d'aider vos collègues à se mettre à l'eau. Ci-dessous,
quelques recommandations pour uniformiser les plongeons et faciliter la vie des
nageurs.

## Répertoire et fichiers

Tout ce qui constitue un plongeon doit être placé dans un sous-répertoire
dédié du projet gitlab présent. Par défaut, nommez votre répertoire en
CamelCase, en commencant par un préfixe discirminant ("Cpp", "Ada", ...), de
sorte que les plongeons de même thème apparaitront groupés dans la liste
de répertoires.

L'énoncé sera placé dans un fichier `README.md`. Le répertoire contiendra
également tous les fichiers de données, d'exemples et d'exercices.

Si vous utilisez une image Docker spécifique, vous placerez aussi le(s)
Dockerfile(s) dans ce répertoire, et les images produites dans l'organisation
"piscineri3" de "hub.docker.com".

## Modèle d'énoncé

Nous suggérons d'écrire l'énoncé du plongeon dans le fichier README.md
du sous-répertoire correspondant au plongeon.

En entête, placez ce genre de liste :
* prérequis : connaissance du C++ historique.
* hauteur du plongeoir : 5m.
* préinstallation : Docker, image `piscineri3/gcc6.1:3`.
* fichiers : https://gitlab.in2p3.fr/MaitresNageurs/PiscineJI/tree/master/CppMove
* maître(s) nageur(s) : ...

La difficulté s'exprime en hauteur de plongeoir : 1, 3, 5 ou 10m.

Placez ensuite une section "Vérification de votre environnement de travail",
permettant de s'assurer que tout l'outillage nécessaire sur le poste de
travail est opérationnel, avant d'entrer dans le vif du sujet.

En fin de plongeon, nous suggérons un questionnaire :
```
## Sortie de bain

Merci d'envoyer quelques commentaires à l'auteur :
 * Environnement de travail opérationnel ? oui [ ], non [ ]
 * Vous aviez les pre-requis ? oui [ ], non [ ]
 * Comment jugez-vous la difficulté du plongeon ? trop simple [ ], adapté [ ], trop compliqué [ ]
 * Durée du plongeon ? trop court [ ], 15-20 minutes [ ], trop long [ ]
 * Pourquoi avez-vous choisi ce plongeon ? :
 * Signalement de typos, erreurs, etc : 
 * Commentaires libres :
```

Une section d'URL sur vos sources et références, où des
liens pour aller plus loin.

```
## Sources

 * [What's new in Python 3](https://docs.python.org/3/whatsnew/3.0.html)
 * ...
```

Et un petit copyright :
```
---
© *CNRS 2016*  
*Assemblé et rédigé par Maitre Perus, cette œuvre est mise à disposition selon les termes de la*  
*[Licence Creative Commons - Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International](http://creativecommons.org/licenses/by-nc-sa/4.0/)*   
```

## Conseils divers

### --rm

Si vous utilisez les conteneurs pour des actions ponctuelles, comme
une compilation, n'oubliez pas l'option `--rm` sur votre commande
`docker run`, sans quoi vous allez laisser beaucoup de conteneurs
arrêtés et "invisibles" sur les machines des nageurs.

### différencier les prompts

Quand vous mettez des exemples de commandes dans l'énoncé de votre
plongeon, utilisez des prompts différents selon qu'il s'agit de
commandes à exécuter dans la fenêtre de commandes de la machine hôte,
ou au sein d'un conteneur.

## Faire une image spécifique au plongeon

Ajouter un Dockerfile dans votre répertoire.

J'ai bien aimé cette [présentation sur Dockerfile](http://putaindecode.io/fr/articles/docker/dockerfile/).

Si vous voulez vous protéger des éventuels problèmes de montages de volume
des utilisateurs Windows, vous pouvez intégrer à votre image une copie des
fichiers de votre répertoire, ainsi que des outils d'édition. Par exemple,
pour fabriquer `piscineri3/gcc61` en version 2 :

```
FROM gcc:6.1

RUN apt-get update \
&& apt-get install -y apt-utils \
&& apt-get install -y vim \
&& apt-get install -y x11-apps \
&& apt-get install -y xemacs21 \
&& rm -rf /var/lib/apt/lists/*

ADD . /work
WORKDIR /work
```

Suivi de la commande :

```shell
docker build -t piscineri3/gcc61:2 .
```

Mais ATTENTION : si les nageurs éditent, au sein du conteneur, les fichiers
ainsi fournis dans le répertoire `/work`, et si ils quittent ou tuent le
conteneur, toutes les modifications aux fichiers sont perdues...

## Mettre vos images dans le Hub

1. Demander à être dans l'équipe `owners` de l'organisation `piscineri3`.
1. Redonner un nom adéquat à votre image. En imaginant qu'elle existe déjà
avec le nom `gcc61`, la version `2` et l'id `7d9495d03763` :
```
docker tag 7d9495d03763 piscineri3/gcc61:2
```
1. Se faire reconnaître du Hub :
```
docker login
```
1. Pousser :
```
docker push piscineri3/gcc61:2
```