summaryrefslogtreecommitdiffhomepage
path: root/fr-fr
diff options
context:
space:
mode:
Diffstat (limited to 'fr-fr')
-rw-r--r--fr-fr/git-fr.html.markdown583
-rw-r--r--fr-fr/ruby-ecosystem-fr.html.markdown154
-rw-r--r--fr-fr/tmux-fr.html.markdown261
3 files changed, 998 insertions, 0 deletions
diff --git a/fr-fr/git-fr.html.markdown b/fr-fr/git-fr.html.markdown
new file mode 100644
index 00000000..510459fe
--- /dev/null
+++ b/fr-fr/git-fr.html.markdown
@@ -0,0 +1,583 @@
+---
+category: tool
+tool: git
+contributors:
+ - ["Jake Prather", "http://github.com/JakeHP"]
+ - ["Leo Rudberg" , "http://github.com/LOZORD"]
+ - ["Betsy Lorton" , "http://github.com/schbetsy"]
+ - ["Bruno Volcov", "http://github.com/volcov"]
+translators:
+ - ["Xuan-thi Nguyen", "http://github.com/mellenguyen"]
+filename: LearnGit-fr.txt
+lang: fr-fr
+---
+
+Git est un logiciel de contrôle de versions distribué et un système de gestion
+du code source.
+
+Il effectue sa tâche via des séries d'instantanés (snapshots) du projet, et
+travaille avec ces instantanés afin de fournir les fonctionnalités de gestion
+de version et de code source.
+
+## Concepts du versionnage
+
+### Qu'est ce que le contrôle de version ?
+
+Le contrôle de version est un système qui enregistre les changements faits sur
+un ou plusieurs fichiers au fil du temps.
+
+### Versionnage centralisé VS Versionnage distribué
+
+* Le contrôle de version centralisé se concentre sur la synchronisation, le
+suivi et la sauvegarde des fichiers.
+* Le contrôle de version distribué se focalise sur l'échange des changements.
+Chaque changement a un identifiant unique.
+* Les systèmes distribués n'ont pas de structure définie. Vous pouvez aisément
+avoir un système centralisé de type SVN, avec Git.
+
+[Informations additionnelles](http://git-scm.com/book/fr/v1/D%C3%A9marrage-rapide-%C3%80-propos-de-la-gestion-de-version)
+
+### Pourquoi utiliser Git ?
+
+* Fonctionne hors ligne.
+* Travailler avec les autres devient facile !
+* Ramifier le travail (créer des branches différentes) est facile !
+* Fusionner le travail est facile !
+* Git est rapide.
+* Git est flexible.
+
+## Architecture Git
+
+
+### Dépôt ("repository")
+
+Un ensemble de fichiers, dossiers, historiques de modifications, commits
+(validations de changements) et de heads (état courant, "tête").
+Représentez-vous ceci comme une structure de données de code source, avec la
+particularité que chaque "élement" vous donne, entre autres, accès à son
+historique des révisions.
+
+Un dépôt Git comprend un répertoire .git et "l'arbre de travail" (working tree).
+
+### Répertoire .git (composant du dépôt)
+
+Le répertoire .git contient toutes les configurations, logs (journaux),
+branches, HEAD et plus.
+[Liste détaillée (EN)](http://gitready.com/advanced/2009/03/23/whats-inside-your-git-directory.html)
+
+### Arbre de travail (composant du dépôt)
+
+Il s'agit de l'ensemble des répertoires et fichiers de votre dépôt. Il est
+souvent qualifié de répertoire de travail ("working directory").
+
+### Index (composant du répertoire .git)
+
+L'index est la zone de transit ("staging area") dans Git. Il s'agit d'une couche
+séparant votre arbre de travail de votre dépôt Git. Ceci donne aux développeurs
+plus de pouvoir sur ce qu'ils envoient au dépôt.
+
+### Commit
+
+Un "commit" (validation de changements) est un instantané d'un ensemble de
+modifications de votre arbre de travail. Par exemple, si vous avez rajouté 5
+fichiers et enlevé 2 autres, ces changements seront contenus dans un commit
+(ou "snapshot", instantané). Ce commit peut ensuite être poussé ("pushed") dans
+d'autres dépôts, ou non !
+
+### Branches
+
+Une branche consiste essentiellement en un pointeur vers le dernier commit que
+vous avez fait. Au fur et à mesure de vos commits, ce pointeur se mettra
+automatiquement à jour pour pointer vers le dernier commit.
+
+### Etiquette ("tag")
+
+Une étiquette est une marque sur un point spécifique de l'historique.
+Typiquement, on utilise cette fonctionnalité pour marquer les états de
+publication (v1.0, et ainsi de suite).
+
+### HEAD and head (composant du répertoire .git)
+
+HEAD est un pointeur pointant vers la branche courante. Un dépôt ne peut avoir
+qu'un seul HEAD *actif*.
+head est un pointeur pouvant pointer sur n'importe quel commit. Un dépôt peut
+avoir un nombre illimité de heads.
+
+### Les états dans Git
+* Modifié - Des changements on été faits à un fichier mais ce dernier n'a pas
+encore été rajouté à l'ensemble des fichiers Git
+* Indexé ("staged") - Indique qu'un fichier modifié ira dans le prochain commit
+* Validé ("committed") - Les fichiers ont été validés dans l'ensemble de
+fichiers
+
+### Ressources conceptuelles
+
+* [Git pour les informaticiens (EN)](http://eagain.net/articles/git-for-computer-scientists/)
+* [Git pour les designers (EN)](http://hoth.entp.com/output/git_for_designers.html)
+
+
+## Commandes
+
+
+### init
+
+Créé un dépôt Git vide. Les paramètres du dépôt Git, les informations stockées
+et plus sont dans un répertoire (un dossier) nommé ".git".
+
+```bash
+$ git init
+```
+
+### config
+
+Configuration des paramètres. Que ce soit pour le dépôt, le système lui-même,
+ou la configuration globale (le fichier de configuration globale
+est `~/.gitconfig`).
+
+
+```bash
+# Lit et assigne quelques variables (globales) de configuration de base
+$ git config --global user.email "monEmail@foo.com"
+$ git config --global user.name "Mon nom"
+```
+
+[Apprenez-en plus à propos de git config.](https://git-scm.com/book/fr/v1/Personnalisation-de-Git-Configuration-de-Git)
+
+### help
+
+Vous donne un accès rapide à un guide extrêmement détaillé de chaque commande.
+Ou juste vous donner un rappel rapide de la sémantique.
+
+```bash
+# Vérifie rapidement les commandes disponibles
+$ git help
+
+# Vérifie toutes les commandes disponibles
+$ git help -a
+
+# Aide pour une commande spécifique - manuel utilisateur
+# git help <command_here>
+$ git help add
+$ git help commit
+$ git help init
+# ou git <command_here> --help
+$ git add --help
+$ git commit --help
+$ git init --help
+```
+
+### ignorer des fichiers
+
+Ne plus suivre certains fichiers et dossiers de Git.
+Habituellement fait pour les fichiers privés et temporaires qui seraient,
+autrement, partagés dans le dépôt.
+```bash
+$ echo "temp/" >> .gitignore
+$ echo "cle_privee" >> .gitignore
+```
+
+### status
+
+Montre les différences entre le fichier indexé (typiquement votre copie/dépôt
+de travail) et le HEAD actuel.
+
+
+```bash
+# Affiche la branche, les fichiers non suivis, les changements et autres
+différences
+$ git status
+
+# Pour en apprendre plus sur git status
+$ git help status
+```
+
+### add
+
+Rajoute des fichiers à la zone d'index. Si vous ne faites pas `git add` sur les
+nouveaux fichiers, ils ne seront pas inclus dans les commits !
+
+```bash
+# rajoute un fichier dans votre répertoire de travail actuel
+$ git add HelloWorld.java
+
+# rajoute un fichier dans un répertoire imbriqué
+$ git add /path/to/file/HelloWorld.c
+
+# Gestion des expressions régulières !
+$ git add ./*.java
+```
+
+On ne fait que rajouter des fichiers dans la zone d'index, on ne valide pas
+les changements au répertoire/dépôt de travail.
+
+### branch
+
+Gère vos branches. Vous pouvez voir, éditer, créer et supprimer des branches en
+utilisant cette commande.
+
+```bash
+# Liste les branches existantes et distantes
+$ git branch -a
+
+# Créé une nouvelle branche
+$ git branch maNouvelleBranche
+
+# Supprime une branche
+$ git branch -d maBranche
+
+# Renomme une branche
+# git branch -m <anciennom> <nouveaunom>
+$ git branch -m nomDeMaBranche nouveauNomDeMaBranche
+
+# Edite la description d'une branche
+$ git branch nomDeMaBranche --edit-description
+```
+
+### tag
+
+Gère vos étiquettes
+
+```bash
+# Liste les étiquettes
+$ git tag
+
+# Créé une étiquette annotée
+# L'option -m spécifie un message qui sera stockée dans l'étiquette.
+# Si vous ne spécifiez pas de message pour une étiquette annotée,
+# Git lance votre éditeur pour que vous puissiez le saisir.
+$ git tag -a v2.0 -m 'ma version 2.0'
+
+# Affiche des informations à propos de l'étiquette
+# comprenant des informations sur l'auteur, la date du commit correspondant,
+# et le message d'annotation avant d'afficher les informations du commit.
+$ git show v2.0
+
+# Pousse une seule étiquette dans le dépôt distant
+$ git push origin v2.0
+
+# Pousse beaucoup d'étiquettes dans le dépôt distant
+$ git push origin --tags
+```
+
+### checkout
+
+Met à jour tous les fichiers dans l'arbre de travail afin de correspondre à la
+version de la zone d'index ou de l'arbre spécifié.
+
+```bash
+# Obtenir une copie de travail du dépôt - par défaut on prend la branche master
+$ git checkout
+
+# Bascule vers une branche spéficiée
+$ git checkout nomDeLaBranche
+
+# Créé une nouvelle branche et bascule sur celle-ci
+# Revient à faire "git branch <name>; git checkout <name>"
+$ git checkout -b nouvelleBranche
+```
+
+### clone
+
+Clone (ou copie) un dépôt existant dans un nouveau répertoire. Rajoute
+également les branches distantes pour chaque branche du dépôt clôné, ce qui
+vous permet de pousser vers une branche distante.
+
+```bash
+# Clone learnxinyminutes-docs
+$ git clone https://github.com/adambard/learnxinyminutes-docs.git
+
+# Clone superficiel ("shallow clone") - clone plus rapide qui récupère
+seulement le dernier instantané ("snapshot")
+$ git clone --depth 1 https://github.com/adambard/learnxinyminutes-docs.git
+
+# Clone seulement une branche spécifique
+$ git clone -b master-cn https://github.com/adambard/learnxinyminutes-docs.git --single-branch
+```
+
+### commit
+
+Conserve le contenu actuel de la zone d'index dans un nouveau "commit." Ce
+commit contient les changements faits, accompagnés d'un message écrit par son
+auteur.
+
+```bash
+# Commit avec un message
+$ git commit -m "Ajout de la fonction multiplierNombres() dans HelloWorld.c"
+
+# Rajoute automatiquement dans l'index les fichiers modifiés ou supprimés,
+# à l'exception des nouveaux fichiers, puis commit
+$ git commit -a -m "Modification de foo.php et suppression de bar.php"
+
+# Change le dernier commit (ceci supprime le commit précédent avec un
+# nouveau commit)
+$ git commit --amend -m "Message corrigé"
+```
+
+### diff
+
+Montre les différences entre un fichier dans le répertoire de travail, la zone
+d'index and les commits.
+
+```bash
+# Affiche les différences entre votre répertoire de travail et l'index
+$ git diff
+
+# Affiche les différences entre l'index et le plus récent commit.
+$ git diff --cached
+
+# Affiche les différences entre votre répertoire de travail et le plus récent
+# commit
+$ git diff HEAD
+```
+
+### grep
+
+Permet de faire une recherche rapide dans le dépôt.
+
+Configurations optionnelles :
+
+```bash
+# Merci à Travis Jeffery pour ce qui suit
+# Affiche les numéros des lignes dans les résultats de la recherche grep
+$ git config --global grep.lineNumber true
+
+# Rend les résultats de recherche plus lisibles, en incluant les groupements
+$ git config --global alias.g "grep --break --heading --line-number"
+```
+
+```bash
+# Recherche de "nomDeVariable" dans tous les fichiers java
+$ git grep 'nomDeVariable' -- '*.java'
+
+# Recherche une ligne contenant "nomDeTableau", et "rajouter" ou "enlever"
+$ git grep -e 'nomDeTableau' --and \( -e rajouter -e enlever \)
+```
+
+Google est votre ami; pour plus d'exemples :
+[Git Grep Ninja](http://travisjeffery.com/b/2012/02/search-a-git-repo-like-a-ninja)
+
+### log
+
+Affiche les commits d'un dépôt.
+
+```bash
+# Montre tous les commits
+$ git log
+
+# Montre seulement les messages de commits et leur référence
+$ git log --oneline
+
+# Montre seulement les commits commits des merges (fusions)
+$ git log --merges
+```
+
+### merge
+
+Fusionne les changements provenant de commits externes dans la branche
+courante.
+
+```bash
+# Fusionne la branche spécifiée dans la branche courante.
+$ git merge nomDeBranche
+
+# Génère toujours un commit quand on fusionne
+$ git merge --no-ff branchName
+```
+
+### mv
+
+Renomme ou déplace un fichier
+
+```bash
+# Renomme un fichier
+$ git mv HelloWorld.c HelloNewWorld.c
+
+# Déplace un fichier
+$ git mv HelloWorld.c ./new/path/HelloWorld.c
+
+# Force le renommage ou le déplacement
+# Si "fichierExistant" existe déjà dans le répertoire, il sera écrasé
+$ git mv -f monFichier fichierExistant
+```
+
+### pull
+
+Récupère la version d'un dépôt et la fusionne avec une autre branche.
+
+```bash
+# Met à jour votre dépôt local en y intégrant les changements
+# depuis la branche "master" du dépôt distant "origin".
+# git pull <remote> <branch>
+$ git pull origin master
+
+# Par défaut, git pull mettra à jour votre branche actuelle
+# en y intégrant les nouveaux changements venant de sa branche distante suivie
+$ git pull
+
+# Intègre les changements de la branche distante et "rebase"
+# les commits de la branche dans votre dépôt local, comme ceci:
+#"git pull <remote> <branch>, git rebase <branch>"
+$ git pull origin master --rebase
+```
+
+### push
+
+Pousse et fusionne les changements d'une dépôt local vers une branche distante.
+
+```bash
+# Pousse et fusionne les changements d'un dépôt local vers la branche
+# appelée "master" du dépôt distant "master".
+# git push <remote> <branch>
+$ git push origin master
+
+# Par défaut, git push poussera et fusionnera les changements de la branche
+# courante vers sa branche distante suivie.
+$ git push
+
+# Pour faire le lien entre la branche locale courante et sa branche distante,
+# rajouter l'option -u :
+$ git push -u origin master
+# Dorénavant, à chaque fois que vous voulez pousser depuis cette même branche
+# locale, utilisez ce raccourci :
+$ git push
+```
+
+### stash
+
+Sauvegarde ("stash") l'état actuel de votre espace de travail et le garde dans
+pile de changements non finis que vous pouvez réappliquer n'importe quand.
+
+Supposons que vous avez effectué du travail dans votre dépôt git, mais que vous
+voulez récupérer la version de la branche distante. Depuis que vous avez des
+changements "malpropres" (non commités) à quelques fichiers, vous ne pouvez pas
+faire de `git pull`. A la place, vous pouvez utiliser `git stash` afin de
+sauvegarder votre travail dans la pile !
+
+```bash
+$ git stash
+Saved working directory and index state \
+ "WIP on master: 049d078 added the index file"
+ HEAD is now at 049d078 added the index file
+ (To restore them type "git stash apply")
+```
+
+Vous pouvez maintenant pull !
+
+```bash
+git pull
+```
+`...changes apply...`
+
+Vérifiez maintenant que tout est OK
+
+```bash
+$ git status
+# On branch master
+nothing to commit, working directory clean
+```
+
+Vous pouvez constater quels "morceaux" vous avez stash jusque là en
+utilisant `git stash list`.
+Puisque les changements sont gardés dans une pile Last-In-First-Out, notre
+changement le plus récent sera en premier.
+
+```bash
+$ git stash list
+stash@{0}: WIP on master: 049d078 rajout du fichier index
+stash@{1}: WIP on master: c264051 annulation de "rajout de la taille_fichier"
+stash@{2}: WIP on master: 21d80a5 ajout des chiffres aux logs
+```
+
+Appliquons maintenant les changements en les enlevant de notre pile.
+
+```bash
+$ git stash pop
+# On branch master
+# Changes not staged for commit:
+# (use "git add <file>..." to update what will be committed)
+#
+# modified: index.html
+# modified: lib/simplegit.rb
+#
+```
+
+`git stash apply` effectue le même travail
+
+Vous êtes maintenant prêt à retourner sur vos tâches de travail !
+
+[Lecture additionelle.](https://git-scm.com/book/fr/v1/Utilitaires-Git-Le-remisage)
+
+### rebase (attention)
+
+Prend tous les changements qui ont été commités sur une branche, et les
+ré-applique sur une autre branche.
+*Ne rebasez pas les commits que vous avez poussés sur un dépôt publique*.
+
+```bash
+# Expérimentation d'un rebase dans la branche "master"
+# git rebase <basebranch> <topicbranch>
+$ git rebase master brancheExperience
+```
+
+[Lecture additionelle.](https://git-scm.com/book/fr/v1/Les-branches-avec-Git-Rebaser)
+
+### reset (attention)
+
+Réinitialise le pointeur HEAD courant à l'état spécifié. Ceci vous permet
+d'annuler des fusions, des pulls, commits, ajouts et autres. C'est une commande
+puissante mais également dangereuse si vous ne savez pas ce que vous faites.
+
+```bash
+# Réinitialise la zone d'index afin de correspondre au dernier commit (laisse
+# le répertoire inchangé).
+$ git reset
+
+# Réinitialise la zone d'index afin de correspondre au dernier commit et
+# réécrit le répertoire de travail.
+$ git reset --hard
+
+# Déplace le pointeur de la branche courante au commit spécifié (laisse
+# le répertoire inchangé). Tous les changements existents toujours dans
+# le répertoire.
+$ git reset 31f2bb1
+
+# Déplace le pointeur de la branche courante en arrière, au commit spécifié
+# et fait correspondre le répertoire de travail (supprime les changements
+# non commités et tous les commits après le commit spécifié).
+$ git reset --hard 31f2bb1
+```
+
+### rm
+
+Le contraire de git add, git rm supprime les fichiers de l'arbre de travail
+courant.
+
+```bash
+# Supprime HelloWorld.c
+$ git rm HelloWorld.c
+
+# Enlève un fichier d'un répertoire imbriqué.
+$ git rm /chemin/vers/le/fichier/HelloWorld.c
+```
+
+## Informations complémentaires
+
+* [tryGit - A fun interactive way to learn Git (EN)](http://try.github.io/levels/1/challenges/1)
+
+* [Udemy Git Tutorial: A Comprehensive Guide (EN)](https://blog.udemy.com/git-tutorial-a-comprehensive-guide/)
+
+* [git-scm - Tutoriaux vidéos](http://git-scm.com/videos)
+
+* [git-scm - Documentation](http://git-scm.com/docs)
+
+* [Atlassian Git - Tutoriaux et Workflows](https://www.atlassian.com/git/)
+
+* [SalesForce Cheat Sheet (EN)](https://na1.salesforce.com/help/doc/en/salesforce_git_developer_cheatsheet.pdf)
+
+* [GitGuys (EN)](http://www.gitguys.com/)
+
+* [Git - the simple guide (EN)](http://rogerdudler.github.io/git-guide/index.html)
+
+* [Livre Pro Git](http://www.git-scm.com/book/fr/v1)
+
+* [Une introduction à Git et GitHub pour les débutants (tutoriel) (EN)](http://product.hubspot.com/blog/git-and-github-tutorial-for-beginners)
diff --git a/fr-fr/ruby-ecosystem-fr.html.markdown b/fr-fr/ruby-ecosystem-fr.html.markdown
new file mode 100644
index 00000000..9b52069a
--- /dev/null
+++ b/fr-fr/ruby-ecosystem-fr.html.markdown
@@ -0,0 +1,154 @@
+---
+category: tool
+tool: ruby ecosystem
+contributors:
+ - ["Jon Smock", "http://github.com/jonsmock"]
+ - ["Rafal Chmiel", "http://github.com/rafalchmiel"]
+translators:
+ - ["Xuan-thi Nguyen", "http://github.com/mellenguyen"]
+lang: fr-fr
+
+---
+
+Les gens utilisant Ruby adoptent généralement un gestionnaire pour installer
+différentes versions de Ruby, gérer leurs paquets (ou gems), et gérer les
+dépendances des gems.
+
+## Ruby Managers
+
+Quelques plateformes possèdent Ruby pré-installé ou disponible en tant que
+paquet. La plupart des rubyists ne les utilisent pas, ou si c'est le cas, ne
+les utilise que pour faire démarrer un autre installateur ou implémentation de
+Ruby. Les rubyists tendent plutôt à installer un manager Ruby pour installer
+et changer entre les différentes et nombreuses versions de Ruby et les
+environnements de leurs projets Ruby.
+
+Les gestionnaires d'environnement Ruby les plus populaires sont :
+
+* [RVM](https://rvm.io/) - Installe et navigue entre les rubies. RVM possède
+ églement le concept des gemsets pour isoler les environnements de projets
+ complètement.
+* [ruby-build](https://github.com/sstephenson/ruby-build) - Installe seulement
+ les rubies. Utilisez-le pour un contrôle plus fin des installations des
+ rubies.
+* [rbenv](https://github.com/sstephenson/rbenv) - Navigue seulement entre les
+ rubies. Utilisé avec ruby-build. Utilisez-le pour un contrôle plus fin des
+ chargements des rubies.
+* [chruby](https://github.com/postmodern/chruby) - Navigue seulement entre les
+ rubies. Similaire à rbenv. Neutre sur comment les rubies sont installés.
+
+## Versions de Ruby
+
+Ruby a été créé par Yukihiro "Matz" Matsumoto, qui reste quelque peu un
+[BDFL](https://fr.wikipedia.org/wiki/Benevolent_Dictator_for_Life), bien que
+cela soit récemment en changement. Jusqu'à la standardisation du langage en
+2011, l'implémentation de référence de Ruby était appelé MRI (Matz' Reference
+Implementation).
+
+Les trois versions majeures de Ruby actuellement utilisées sont :
+
+* 2.0.0 - Sortie en février 2013. La plupart des librairies et frameworks
+ gèrent la versions 2.0.0.
+* 1.9.3 - Sortie en octobre 2011. Il s'agit de la version que la majorité des
+ rubyists utilisent actuellement. [Fin de vie](https://www.ruby-lang.org/en/news/2015/02/23/support-for-ruby-1-9-3-has-ended/)
+* 1.8.7 - Sortie en juin 2006. [Fin de vie](http://www.ruby-lang.org/en/news/2013/06/30/we-retire-1-8-7/).
+
+Les changements entre 1.8.7 à 1.9.x sont bien plus grands qu'entre 1.9.3
+jusqu'à 2.0.0. Par exemple, les versions 1.9 ont introduit le support des
+encodages et d'une VM bytecode ([YARV](https://fr.wikipedia.org/wiki/YARV)).
+Il y a toujours des projets sur 1.8.7, mais ils deviennent minoritaires, étant
+donné que la majorité de la communauté a migré vers au moins 1.9.2 ou 1.9.3.
+
+## Implémentations Ruby
+
+L'écosystème Ruby comprend de nombreuses implémentations de Ruby, chacune avec
+des points forts uniques et différents degrés de compatibilité. Les différentes
+implémentations sont écrites dans différents languages.
+Chaque implémentation a des "hooks" et des fonctionnalités spécifiques, elles
+exécutent cependant très bien des fichiers Ruby classiques.
+Par exemple, JRuby est écrit en Java, mais vous n'avez pas besoin de connaître
+le Java pour l'utiliser.
+
+Très mature/compatible:
+
+* [MRI](https://github.com/ruby/ruby) - Ecrite en C, c'est l'implémentation de
+ référence de Ruby. Elle est par définition 100% compatible (avec elle-même).
+ Tous les autres rubies maintiennent la compatibilité avec MRI
+ (voir [RubySpec](#rubyspec) à la suite).
+* [JRuby](http://jruby.org/) - Écrite en Java et Ruby, cette robuste
+ implémentation est assez rapide.
+ La force de JRuby réside surtout sur l'interopérabilité JVM/Java, faisant
+ levier sur des outils JVM, des projets et des langages existants.
+* [Rubinius](http://rubini.us/) - Ecrite principalement en Ruby avec une VM
+ bytecode en C++. Egalement mature et rapide. Etant donné qu'elle est
+ implémentée en Ruby, elle couvre beaucoup de fonctionnalités de la
+ VM dans Ruby.
+
+Mpyennement mature/compatible:
+
+* [Maglev](http://maglev.github.io/) - Basée sur Gemstone, une VM Smalltalk.
+ Smalltalk possède quelques outils impressionnants, et ce projet tente
+ de les apporter dans le développement Ruby.
+* [RubyMotion](http://www.rubymotion.com/) - Ruby pour développement iOS.
+* [Opal](http://opalrb.org/) - Compile le Ruby en Javascript
+
+Les implémentations de Ruby peuvent avoir leurs propres numéros de versions,
+mais elles ciblent toujours une versions spéficique de MRI pour la
+compatibilité.
+Beaucoup d'implémentations ont la capacité d'entrer dans différents modes
+(par exemple, la version 1.8 ou 1.9) afin de spécifier quelle version de MRI
+cibler.
+
+Une liste non exhaustive d'implémentations peut être trouvée [ici (EN)](https://github.com/cogitator/ruby-implementations/wiki/List-of-Ruby-implementations).
+
+## RubySpec
+
+La plupart des implémentations Ruby s'appuient fortement sur [RubySpec](http://rubyspec.org/).
+Ruby n'a pas de spécification officielle, c'est pourquoi la commaunité a écrit
+des spécifications exécutables en Ruby pour tester la compatibilité de leur
+implémentation avec MRI.
+
+## RubyGems
+
+[RubyGems](http://rubygems.org/) est un gestionnaire de paquets communautaire
+pour Ruby.
+RubyGems est livré avec Ruby, il n'y a donc pas besoin de le télécharger
+séparément.
+
+Les paquets Ruby sont appelés des "gems", et peuvent être hébergés par la
+communauté à RubyGems.org. Chaque gem contient son code source et quelques
+métadatas, includant des choses comme la version, les dépendances,
+l(es) auteur(s) et la/les licence(s).
+
+## Bundler
+
+[Bundler](http://bundler.io/) est un résolveur de dépendances des gems. Il
+utilise le Gemfile d'un projet ppur trouver les dépendances, et récupère
+ensuite les dépendances de ces dépendances récursivement. Il déroule cet
+algorithme jusqu'à ce que toutes les dépendances soient résolues et
+téléchargées, ou s'arrête si un conflit est trouvé.
+
+Bundler lèvera une erreur s'il trouve des conflits de dépendances. Par exemple,
+si la gem A recquiert la version 3 ou plus de gem Z, mais que gem B recquiert
+seulement la version 2, Bundler vous notifiera ce conflict. Cela devient
+extrêmement utile, étant donné que beaucoup de gems font référence à d'autres
+gems (qui se réfèrent à d'autres gems), ce qui peut former un large graphe de
+dépendance à résoudre.
+
+# Les tests
+
+Tester fait partie intégrante de la culture Ruby. Ruby fournit son propre
+framework de tests unitaires appelé minitest (ou TestUnit pour Ruby
+version 1.8.x). Il existe beaucoup de librairies de tests avec des buts
+différents.
+
+* [TestUnit](http://ruby-doc.org/stdlib-1.8.7/libdoc/test/unit/rdoc/Test/Unit.html) - Framework de tests intégré de Ruby version 1.8 style "Unit"
+* [minitest](http://ruby-doc.org/stdlib-2.0.0/libdoc/minitest/rdoc/MiniTest.html) - Framework de tests intégré de Ruby version 1.9/2.0
+* [RSpec](http://rspec.info/) - Un framework de tests qui se focalise sur l'expressivité
+* [Cucumber](http://cukes.info/) - Un framework de tests BDD ([behaviour-driven development](https://fr.wikipedia.org/wiki/Behavior_driven_development)) qui parse les tests formatés de Gherkin.
+
+## Soyez gentil
+
+La communauté Ruby est fière d'être une communauté ouverte, riche et
+accueillante. Matz lui-même est extrêmement sociable, et la générosité des
+rubyists est généralement remarquable.
diff --git a/fr-fr/tmux-fr.html.markdown b/fr-fr/tmux-fr.html.markdown
new file mode 100644
index 00000000..d353af3b
--- /dev/null
+++ b/fr-fr/tmux-fr.html.markdown
@@ -0,0 +1,261 @@
+---
+category: tool
+tool: tmux
+contributors:
+ - ["mdln", "https://github.com/mdln"]
+translators:
+ - ["Xuan-thi Nguyen", "https://github.com/mellenguyen"]
+filename: LearnTmux-fr.txt
+lang: fr-fr
+---
+
+
+[Tmux](http://tmux.sourceforge.net) est un multiplexeur de terminal: il permet
+de créer plusieurs terminaux, accédés et contrôlés depuis un seul écran. Tmux
+peut être détaché de l'écran tout en continuant de fonctionner en tâche de
+fond, puis rattaché de nouveau.
+
+
+```
+
+ tmux [command] # Exécute une commande
+ # 'tmux' sans commande créé une nouvelle session
+
+ new # Créé une nouvelle session
+ -s "Session" # Créé une session nommée "Session"
+ -n "Window" # Créé une fenêtre nommée "Window"
+ -c "/dir" # Démarre dans le dossier cible "/dir"
+
+ attach # S'attache à la dernière session ou la session disponible
+ -t "#" # S'attache à la session cible
+ -d # Détache la session des autres instances
+
+ ls # Liste les sessions ouvertes
+ -a # Liste toutes les sessions ouvertes
+
+ lsw # Liste les fenêtres de la session courante
+ -a # Liste toutes les fenêtres
+ -s # Liste toutes les fenêtres en session
+
+ lsp # Liste les panels
+ -a # Liste tous les panels
+ -s # Liste tous les panels en session
+ -t # Liste tous les panels dans la cible
+
+ kill-window # Tue la fenêtre courante
+ -t "#" # Tue la fenêtre cible
+ -a # Tue toutes les fenêtres
+ -a -t "#" # Tue toutes les fenêtres sauf la cible
+
+ kill-session # Tue la session courante
+ -t "#" # Tue la session cible
+ -a # Tue toutes les sessions
+ -a -t "#" # Tue toutes les sessions sauf la cible
+
+```
+
+
+### Raccourcis clavier
+
+Afin de contrôler une session tmux attachée, on utilise une combinaison de
+touches appelées 'Préfixe'. Elle doit être pressée afin d'utiliser les
+raccourcis.
+
+```
+--------------------------------------------------------------------------------
+ (C-b) = Ctrl + b # Combinaison 'Préfixe' requise pour utiliser les raccourcis
+
+ (M-1) = Meta + 1 -ou- Alt + 1
+--------------------------------------------------------------------------------
+
+ ? # Liste tous les raccourcis
+ : # Entre dans l'invite de commande de tmux
+ r # Force la redéfinition du client attaché
+ c # Créé une nouvelle fenêtre
+
+ ! # Sépare le panel courant de sa fenêtre
+ % # Sépare le panel courant en deux, gauche et droite
+ " # Sépare le panel courant en deux, haut et bas
+
+ n # Changer vers la fenêtre suivante
+ p # Changer vers la fenêtre précédente
+ { # Echange le panel courant avec le panel précédent
+ } # Echange le panel courant avec le panel suivant
+
+ s # Sélectionne une nouvelle session pour le client attaché
+ # de manière interactive
+ w # Choisi la fenêtre courante de manière interactive
+ 0 to 9 # Sélectionne la fenêtre de 0 à 9
+
+ d # Détache le client courant
+ D # Choisi un client à détacher
+
+ & # Tue la fenêtre courante
+ x # Tue le panel courant
+
+ Up, Down # Change vers le panel au dessus, en dessous, à gauche
+ Left, Right # ou à droite
+
+ M-1 to M-5 # Arrange les panels:
+ # 1) égaliser sur l'horizontale
+ # 2) égaliser sur la verticale
+ # 3) panel principal en haut et le reste en bas
+ # de gauche à droite
+ # 4) panel principal à gauche et le reste à droite
+ # de haut en bas
+ # 5) "tiled" : égalise les panels
+ # sur la hauteur et la largeur
+
+ C-Up, C-Down # Redimensionne le panel courant par pas de une cellule
+ C-Left, C-Right
+
+ M-Up, M-Down # Redimensionne le panel courant par pas de cinq cellules
+ M-Left, M-Right
+
+```
+
+
+### Configuration de ~/.tmux.conf
+
+tmux.conf peut être utilisé pour fixer les options automatiquement au
+démarrage, comme .vimrc ou init.el.
+
+```
+# Exemple de tmux.conf
+# 2014.10
+
+
+### Général
+###########################################################################
+
+# Active UTF-8
+setw -g utf8 on
+set-option -g status-utf8 on
+
+# Limite de l'historique
+set -g history-limit 2048
+
+# Indice de début du nombre de panels
+set -g base-index 1
+
+# Souris
+set-option -g mouse-select-pane on
+
+# Force le rechargement du fichier de configuration
+unbind r
+bind r source-file ~/.tmux.conf
+
+
+### Raccourcis clavier
+###########################################################################
+
+# Annule C-b en tant que préfixe par défaut
+unbind C-b
+
+# Définit un nouveau préfixe par défaut
+set-option -g prefix `
+
+# Retourne à la fenêtre précédente quand le préfixe est pressé deux fois
+bind C-a last-window
+bind ` last-window
+
+# Permet d'échanger C-a et ` en utilisant F11/F12
+bind F11 set-option -g prefix C-a
+bind F12 set-option -g prefix `
+
+# Préférences de raccourcis clavier
+setw -g mode-keys vi
+set-option -g status-keys vi
+
+# Navigue entre les panels avec les raccourcis clavier de vim
+bind h select-pane -L
+bind j select-pane -D
+bind k select-pane -U
+bind l select-pane -R
+
+# Navigation entre les fenêtres
+bind e previous-window
+bind f next-window
+bind E swap-window -t -1
+bind F swap-window -t +1
+
+# Commandes simples de séparation des panels
+bind = split-window -h
+bind - split-window -v
+unbind '"'
+unbind %
+
+# Active la session la plus imbriquée (en faisant de l'imbrication sous tmux)
+# pour envoyer des commandes
+bind a send-prefix
+
+
+### Thème
+###########################################################################
+
+# Palette de couleurs pour la barre de statuts
+set-option -g status-justify left
+set-option -g status-bg black
+set-option -g status-fg white
+set-option -g status-left-length 40
+set-option -g status-right-length 80
+
+# Palette de couleurs pour les bordures des panels
+set-option -g pane-active-border-fg green
+set-option -g pane-active-border-bg black
+set-option -g pane-border-fg white
+set-option -g pane-border-bg black
+
+# Palette de couleurs pour les messages
+set-option -g message-fg black
+set-option -g message-bg green
+
+# Palette de couleurs pour les fenêtres
+setw -g window-status-bg black
+setw -g window-status-current-fg green
+setw -g window-status-bell-attr default
+setw -g window-status-bell-fg red
+setw -g window-status-content-attr default
+setw -g window-status-content-fg yellow
+setw -g window-status-activity-attr default
+setw -g window-status-activity-fg yellow
+
+
+### UI
+###########################################################################
+
+# Notification
+setw -g monitor-activity on
+set -g visual-activity on
+set-option -g bell-action any
+set-option -g visual-bell off
+
+# Définir automatiquement des titres de fenêtres
+set-option -g set-titles on
+# Numéro de fenêtre, nom du programme, actif (ou non)
+set-option -g set-titles-string '#H:#S.#I.#P #W #T'
+
+# Réglages de la barre de statuts
+set -g status-left "#[fg=red] #H#[fg=green]:#[fg=white]#S#[fg=green] |#[default]"
+
+# Présente des indicateurs de performance dans la barre de statuts
+# Recquiert https://github.com/thewtex/tmux-mem-cpu-load/
+set -g status-interval 4
+set -g status-right "#[fg=green] | #[fg=white]#(tmux-mem-cpu-load)#[fg=green] | #[fg=cyan]%H:%M #[default]"
+
+```
+
+
+### Références
+
+[Tmux | Home](http://tmux.sourceforge.net)
+
+[Page du manuel Tmux](http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/tmux.1?query=tmux)
+
+[Gentoo Wiki](http://wiki.gentoo.org/wiki/Tmux)
+
+[Archlinux Wiki](https://wiki.archlinux.org/index.php/Tmux)
+
+[Montrer le pourcentage CPU/MEM dans la barre de statuts](https://stackoverflow.com/questions/11558907/is-there-a-better-way-to-display-cpu-usage-in-tmux)
+
+[tmuxinator - Gère des sessions tmux complexes](https://github.com/tmuxinator/tmuxinator)