Skip to content

Instantly share code, notes, and snippets.

@pcreux

pcreux/iut-4.md Secret

Last active December 14, 2015 12:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save pcreux/61d47e1de670cbc9c8fe to your computer and use it in GitHub Desktop.
Save pcreux/61d47e1de670cbc9c8fe to your computer and use it in GitHub Desktop.

BoBot!

Le but de ce TP est de travailler en binome, en TDD et avec Git / Github. Vous allez y construire un robot intelligent répondant au doux nom de "BoBot".

Setup!

Télécharger les fichiers de configuration suivants:

wget https://raw.github.com/pcreux/git_config/master/gitconfig -O ~/.gitconfig
wget https://raw.github.com/pcreux/git_config/master/githelpers -O ~/.githelpers

Dans le fichier ~/.gitconfig, changez votre nom et votre adresse email.

La dernière version de git devrait être installée sur vos machines. git peut désormais enregistrer temporairement votre mot de passe github:

git config --global credential.helper 'cache --timeout=3600'

Forkez!

Commencez par forker le projet BoBot initial:

Cela crée une copie conforme du projet sur votre compte. Pour travailler à deux, je vous conseille de partager le même repository github. N'oubliez pas d'ajouter votre binome comme collaborateur pour qu'il puisse pusher.

Vous pouvez maintenant faire un git clone pour récuperer une copie du repository sur vos machines.

Vous pouvez retrouver les principales commandes git sur cette Cheat Sheet ou dans le TP précédent.

Éclipsez!

Dans Eclipse, importez le repository: File > Import > Maven / Existing Maven Projects, sélectionnez le dossier que vous avez cloné.

Si Maven plante lamentablement:

  • vérifiez que le dossier ~/net-home/.m2 existe
  • vérifiez que votre net-home n'est pas plein
  • au pire, virez le lien symbolique ~/.m2 afin que Maven télécharge les dépendences dans votre ~ en local plutôt que sur ~/net-home.

Prenez le temps de parcourir le code du projet.

Travis-CI

Le README de BoBot affiche ce joli petit badge: Build Status

BoBot est testé automagiquement par Travis-CI, un serveur d'intégration continue en ligne. Chaque fois qu'un nouveau commit est pushé sur le repository github IUTInfoAix/BoBot, Travis-CI execute les tests via Maven.

Mieux, Travis-CI s'intègre avec les Pull Requests et affiche si les tests des pull-requests passent ou non.

Pour enregistrer votre "fork" sur Travis-CI:

  • rendez-vous sur https://travis-ci.org/,
  • connectez-vous avec votre compte Github
  • allez dans votre compte (Account)
  • synchronisez les projets Github (Sync Now)
  • activez Travis-CI pour votre projet (On!)

Vous pouvez ensuite trouver votre projet à l'adresse: https://travis-ci.org/VOTRE_UTILISATEUR_GITHUB/BoBot

Échauffement

Afin de vous échauffer correctement, je vous propose de commencer par les deux tâches suivantes:

  • Lorsque je dis "salut" à BoBot, il me répond "salut".
  • Lorsque je dis "au revoir" à BoBot, il me répond "au revoir".

Prenez une tâche chacun, créez une branche git par tâche. Pour chaque tâche, ajoutez juste une nouvelle SmartCell avec les tests qui vont bien. Lorsque tout est prêt, committez, pushez sur Github et créez une Pull Request. Votre partenaire vérifiera le code et pourra merger la Pull Request.

L'utilisation de SmartCells devrait vous permettre d'éviter (trop de) conflits de merge.

Lorsque Github ne peut merger votre Pull Request, vous devez effectuer le merge à la main.

git co -b NOM_DE_LA_BRANCHE origin/NOM_DE_LA_BRANCHE # copiez la branche
en local
git pull
git co master
git merge NOM_DE_LA_BRANCHE
# Résoudre le conflit de merge...
git commit -a
git push
# Ouf...

À vous!

Je vous propose de rendre BoBot plus malin en ajoutant des SmartCells.

Commencez par celle qui vous botte le plus ou qui vous parait la plus simple. Vous pouvez développer en paire ou chacun de votre coté. Dans tous les cas, faites des branches, des tests et créez des Pull Requests.

Voici les SmartCells que vous pourriez ajouter:

  • Traduire les nombres arabes en nombres romains, et inversement.
  32 en romain?  
  # => XXXII
  XX en nombre arabe?
  # => 20
  • Donner la date du jour.
  Quel jour sommes-nous?
  # => Mercredi 6 Mars 2013
  • Donner les dates relatives.
  Quel jour étions-nous hier?
  # => Mardi 5 Mars 2013
  Et demain?
  Et après-demain?
  • Donner des renseignements sur votre jour de naissance.
  Je suis né le 8 février 1985.
  # => Vous êtes né un Vendredi, aujourd'hui est votre 10253 jour de
vie. Il vous reste environ 20774 jours à vivre.
  • Gérer votre agenda:
  Note: Déjeuner avec Seb le 24 à 12h
  # => Le 24 Mars 2013 à 12:00: Déjeuner avec Seb.

  Quels sont mes rendez-vous?
  # => Le 24 Mars 2013 à 12:00: Déjeuner avec Seb.
  • Et plus! Faites jouer votre imagination! Peut être que Bobot peut gérer votre harem de pokemon, vous conseiller des bons restos, faire de la traduction anglais / francais...

Notes.

Aussi, dans l'esprit TDD, avancez à petit pas. Par exemple, la gestion de l'agenda peut tout d'abord stocker la ligne à noter et l'afficher tel quel.

  Note: Déjeuner avec Seb le 24 à 12h
  # => Déjeuner avec Seb le 24 à 12h

Les tests passent? Committez!

Puis vous pouvez extraire la date du contenu:

  Note: Déjeuner avec Seb le 24 à 12h
  # => 24 à 12h: Déjeuner avec Seb

Les tests passent? Committez!

Puis vous pouvez extraire la date...

Puis vous pouvez extraire l'heure...

C'est tout?

Oui!

Maitriser le TDD, le pair programming, git, github, prend du temps. Alors profitez de ce TP pour vous sentir à l'aise avec tout cela. Vous allez en avoir besoin pour dérouiller du pokemon!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment