Cette présentation montre plusieurs outils gratuits qui peuvent être utilisés pour gérer plusieurs aspects de la gestion de projets, en particulier informatique, de manière collaborative. On y voit comment versioner son code avec Git, déployer son code avec Heroku, tester son code avec Travis, gérer et planifier son temps et ses tâches avec Trello, FreedCamp et Tom'splanner, comment communiquer avec Slack et comment rédiger sa documentation avec Read the Docs.
Présentation portant sur le système de virtualisation Docker.
Langue : Français.
Auteur : Colin LEVERGER, me@colinleverger.fr, merci de citer vos sources ;)
Sources : Wikipedia / Docker site officiel : https://www.docker.com/
Comment débuter en devops et apprendre à réaliser son premier pipeline. Très facilement et en toute simplicité.
Une formation gratuite pour s'initier au devops.
https://youtu.be/tiSfXCM8VTw
https://gitlab.com/xavki/pipeline-saison-1
Démarche DevOps : présentation des enjeux et des objectifs de l'adaptation des organisations pour l'amélioration de la qualité des produits livré et l'accélération de la mise à disposition des évolutions
Présentation portant sur le système de virtualisation Docker.
Langue : Français.
Auteur : Colin LEVERGER, me@colinleverger.fr, merci de citer vos sources ;)
Sources : Wikipedia / Docker site officiel : https://www.docker.com/
Comment débuter en devops et apprendre à réaliser son premier pipeline. Très facilement et en toute simplicité.
Une formation gratuite pour s'initier au devops.
https://youtu.be/tiSfXCM8VTw
https://gitlab.com/xavki/pipeline-saison-1
Démarche DevOps : présentation des enjeux et des objectifs de l'adaptation des organisations pour l'amélioration de la qualité des produits livré et l'accélération de la mise à disposition des évolutions
ASP.NET est un ensemble de technologies de programmation Web créé par Microsoft. Ce langage est utilisé pour créer des sites Webs dynamiques, des applications web ou des web services XML.
Le développement Web avec ASP.NET est plus facile: les applications Web sont développées comme des applications Windows en utilisant le modèle ASP.net ==> il s'agit d'une insertion du code (codebehind) C# ou VB.net dans des pages HTML (ajouter du JavaScript) est envoyé au client. On dit On dit que le C# et/ou VB.NET sont utilisés pour modifier le HTML
L'objectif de cette introduction est de :
- Comprendre le fonctionnement du Framework .Net
- Comprendre les principes de base de ASP.NET
- Faire la différence entre Page web Classiques et pages ASPX crées avec ASP.NET
Formation complète ici:
http://www.alphorm.com/tutoriel/formation-en-ligne-gns3
Cette formation GNS3 vous permettra de simuler vos équipements Cisco, Juniper et Huawei avec une grande facilité et maîtrise. Vous allez pouvoir préparer vos maquettes de POC ou se préparer à des examens de certifications sans devoir débloquer un budget lourd pour s'acheter les équipements réseaux.
A travers cette formation GNS3 détaillée et complète, vous allez découvrir l'outil GNS3 d'une manière simple, pratique et surtout pédagogique, avec des études de cas avancés sous Windows et Linux : Framerelay point-to-point/multipoint/inverse arp, ATM, Juniper, Huawei, IOU, Etherchannel, VTP, Cisco ASA, VoIP et Kali
Evidemment vous allez apprendre aussi comment installer GNS3 sur Linux et Windows, Configurer les images IOS, découvrir l'interface, gérer les préférences.
La maîtrise de GNS3 est un must si vous souhaitez devenir un expert des réseaux. Donc profitez bien de cette formation GNS3 rare sur Internet.
Support Dot Net avec C#. Ce cours traite les points suivants :
- Architecture .Net
- Les bases de C#
- Objet et Classe
- Héritage
- Encapsulation
- Polymorphisme
- Les exceptions
- Les entrées sorties
- Les interfaces graphiques
- Le multi Threading
- Programmation réseaux (Sockets et DataGram)
- Accès aux bases de données
Maîtrisez Ansible avec mon cours expert : automatisation, gestion système, et déploiement facile. Transformez votre infrastructure informatique dès aujourd'hui.
Présentation pfe - Etude, conception et réalisation d'une application web de ...Ayoub Mkharbach
C'est la présentation de mon projet de fin d'études en licence génie informatique à la faculté des sciences et techniques de settat, le stage a été effectué au sein de l'entreprise Pluralis Consulting.
Slides du cours "JAVA1001 : Introduction à la programmation Java" de la formation "Apprendre Java et la Programmation Orientée-Objets" du learning center de http://www.ukonline.be
Présentation du projet de transmission numérique dans lequel les étudiants sont amenés, en équipes mixtes électroniciens - informaticiens, à développer une application qui, sur base de données collectées par des senseurs, propose une analyse de ces dernières pour fournir un service.
ASP.NET est un ensemble de technologies de programmation Web créé par Microsoft. Ce langage est utilisé pour créer des sites Webs dynamiques, des applications web ou des web services XML.
Le développement Web avec ASP.NET est plus facile: les applications Web sont développées comme des applications Windows en utilisant le modèle ASP.net ==> il s'agit d'une insertion du code (codebehind) C# ou VB.net dans des pages HTML (ajouter du JavaScript) est envoyé au client. On dit On dit que le C# et/ou VB.NET sont utilisés pour modifier le HTML
L'objectif de cette introduction est de :
- Comprendre le fonctionnement du Framework .Net
- Comprendre les principes de base de ASP.NET
- Faire la différence entre Page web Classiques et pages ASPX crées avec ASP.NET
Formation complète ici:
http://www.alphorm.com/tutoriel/formation-en-ligne-gns3
Cette formation GNS3 vous permettra de simuler vos équipements Cisco, Juniper et Huawei avec une grande facilité et maîtrise. Vous allez pouvoir préparer vos maquettes de POC ou se préparer à des examens de certifications sans devoir débloquer un budget lourd pour s'acheter les équipements réseaux.
A travers cette formation GNS3 détaillée et complète, vous allez découvrir l'outil GNS3 d'une manière simple, pratique et surtout pédagogique, avec des études de cas avancés sous Windows et Linux : Framerelay point-to-point/multipoint/inverse arp, ATM, Juniper, Huawei, IOU, Etherchannel, VTP, Cisco ASA, VoIP et Kali
Evidemment vous allez apprendre aussi comment installer GNS3 sur Linux et Windows, Configurer les images IOS, découvrir l'interface, gérer les préférences.
La maîtrise de GNS3 est un must si vous souhaitez devenir un expert des réseaux. Donc profitez bien de cette formation GNS3 rare sur Internet.
Support Dot Net avec C#. Ce cours traite les points suivants :
- Architecture .Net
- Les bases de C#
- Objet et Classe
- Héritage
- Encapsulation
- Polymorphisme
- Les exceptions
- Les entrées sorties
- Les interfaces graphiques
- Le multi Threading
- Programmation réseaux (Sockets et DataGram)
- Accès aux bases de données
Maîtrisez Ansible avec mon cours expert : automatisation, gestion système, et déploiement facile. Transformez votre infrastructure informatique dès aujourd'hui.
Présentation pfe - Etude, conception et réalisation d'une application web de ...Ayoub Mkharbach
C'est la présentation de mon projet de fin d'études en licence génie informatique à la faculté des sciences et techniques de settat, le stage a été effectué au sein de l'entreprise Pluralis Consulting.
Slides du cours "JAVA1001 : Introduction à la programmation Java" de la formation "Apprendre Java et la Programmation Orientée-Objets" du learning center de http://www.ukonline.be
Présentation du projet de transmission numérique dans lequel les étudiants sont amenés, en équipes mixtes électroniciens - informaticiens, à développer une application qui, sur base de données collectées par des senseurs, propose une analyse de ces dernières pour fournir un service.
Ce cours présente la notion de système d'exploitation et en particulier les Linux embarqués qui sont spécialement conçus pour des systèmes embarqués de haut niveau avec des processeurs à usage général (GPP) comme unité de calcul principale. Il explique ensuite comment Linux embarqué démarre, quelles sont les différentes phases et modalités de stockage du système d'exploitation. Enfin, il présente la BeagleBone Black, ses caractéristiques et comment la programmer. Le cours conclut en expliquant la notion de driver de périphérique et comment ils sont conçus sous Linux à l'aide de fichiers.
Cette présentation concerne la mesure des distances entre la Terre et les étoiles. Elle présente notamment la technique du l'écho radar et celle de la parallaxe.
Ce premier cours introduit à plusieurs aspects liés au développement informatique. Le cours présente comment versioner son code avec le système Git et comment le déployer avec Heroku. Il présente ensuite comment débugguer avec le module pdb et comment profiler son code avec les modules timeit et profile. Enfin, le cours termine en présentant le concept de tests unitaires que l'on peut construire avec les modules doctest et unittest.
Ce cours présente le langage UML qui permet notamment de modéliser des logiciels programmés en orienté objet. Ce cours présente les diagrammes de classes qui permettent de décrire la structure d'un logiciel et les diagrammes d'activité qui permettent de décrire les aspects dynamiques de l'exécution.
Ce cours concerne les arbres, structure de données organisant les données de manière hiérarchique dans de nœuds reliés entre eux par une relation parent-enfant. Le cours présente les arbres généraux et ensuite les arbres binaires, où chaque nœud possède 0 ou 2 enfants. Enfin, le cours termine en présentant des algorithmes de recherche et en particulier l'arbre binaire de recherche.
Ce cours concerne la manipulation des chaines de caractères et les expressions régulières. La première partie présente la classe str Python ainsi que les opérations qu'il est possible de faire sur des objets str. La seconde partie concerne les expressions regulières qui permettent de valider des chaines de caractères ou d'en extraire des sous-chaines qui satisfont un motif donné. On y voit finalement comment utiliser le module re Python.
Dans ce cours, on découvre comment lire et écrire des fichiers à l'aide de Python. Il est possible de créer des fichiers texte ou des fichiers binaires. Pour manipuler un fichier, il faut d'abord l'ouvrir, puis on peut faire les opérations et enfin on doit le refermer.
Ce premier cours avancé sur Python concerne les deux structures de données avancées que sont les ensembles et les dictionnaires. Ces derniers sont notamment utilisés pour construire des bases de données orientées document.
Cette présentation concerne le développement piloté par les tests (TDD, Test-Driven Development). Cette méthodologie se base sur des tests unitaires qui testent de manière indépendante des unités de code (module, procédure/fonction, classe...). En particulier, cette présentation utilise la librairie CUnit utilisée pour le langage C.
Git est un logiciel de gestion de versions décentralisé qui vous permettra de gérer la vie d'un code informatique. Il permet une stratégie de backup, de gérer des versions et de stocker tout l'historique des modifications apportées à un projet informatique.
Ce cours aborde la gestion d'erreurs en programmation, c'est-à-dire comment gérer les situations où une erreur se produit. Après avoir présenté le principe des spécifications et de la programmation défensive avec l'instruction assert, ce cours présente l'instruction try/except qui permet de capturer des erreurs. Enfin, le cours termine en présentant comment définir ses propres erreurs et les générer avec l'instruction raise.
Ce cours présente comment réaliser des interfaces graphiques avec Python en utilisant la librairie Kivy. La première partie rappelle les principes de la programmation évènementielle puis présente la séparation interface/comportement à l'aide de fichiers KV et Python. La deuxième partie présente comment réaliser des dessins avec les composants Canvas. On y voit comment dessiner des formes, appliquer des transformations et on termine avec un exemple de composants déplaçables.
Ce cours concerne le polymorphisme, c'est-à-dire la capacité pour une variable de prendre plusieurs types de donnée durant le temps de sa vie. Le cours présente aussi la notion de classe abstraite et d'interface qui est une classe abstraite pure.
Dans ce cours, on découvre comment construire une interface graphique en Python en utilisant la librairie Tk. Après avoir vu les différents composants de base, ce cours présente la programmation évènementielle qui permet d'écrire du code qui réagit à des évènements comme le clic sur un bouton, par exemple.
Ce cours présente les relations de composition et d'agrégation qu'il est possible d'établir entre plusieurs classes et objets. La seconde partie présente la notion d'immuabilité d'objets et montre comment faire des copies d'objets.
Ce cours introduit aux trois langages de programmation du Web que sont l'HTML, le CSS et le Javascript. L'HTML est un langage de balisage qui permet de décrire un document et sa structure. Le CSS est un langage qui permet de définir des règles de style à appliquer à un document. Enfin, Javascript est un langage permettant d'ajouter un aspect dynamique à une page web.
Ce cours introduit à la notion de type abstrait de données (TAD). On commence par y découvrir les principes de complexité temporelle et spatiale permettant d'analyser les performances d'une structure de données et d'algorithmes. Ensuite, le cours présente plusieurs TAD : la pile, la file, le deque et le vecteur. Enfin, il présente comment implémenter des TAD avec des structures chainées.
Introduction à la partie technique de la formation Digitalent mise en place par l'équipe ECAM. Cette formation couvre l'impression 3D, la programmation et l'électronique embarquée.
Paris Web 2015 - Atelier désendettement Javascript legacyFrançois Petitit
par Michael Akbaraly et François Petitit - OCTO Technology
Vous avez récupéré un projet JavaScript de plusieurs milliers de lignes, on vous demande des évolutions et des corrections de bugs, et rien ne va.
Code illisible, régressions en pagaille, structure des répertoires incompréhensibles : vous ne savez pas par où commencer !
Au long des 90 minutes de cet atelier, nous vous proposons de découvrir les techniques et les outils qui vont vous sauver la vie via des travaux pratiques de code JavaScript côté back-end avec NodeJS, et côté front-end avec AngularJS.
Débutants ou ayant déjà une connaissance de ces technologies sont les bienvenus. Les travaux pratiques seront disponibles si vous souhaitez coder vous-mêmes pendant l'atelier.
Comment, dans le cadre de la migration vers Google Cloud Platform, MeilleursAgents a revu ses techniques de déploiements d'applications Python pour garantir des releases fiables, testables et reproductibles.
Symphonie pour PHP industrialisé en agilité majeureJonathan Bonzy
Présentation pour l'Agile Grenoble 2011
Avoir des millions d'amis, comparer des millions d'offres ou publier des millions de news sont autant d’exemples d’applications écrites en PHP. Ce langage de la “programmation pour les nuls”, qui permet tous les écarts, reste pourtant un choix privilégié pour les solutions web. Avec les bons outils et les bonnes pratiques, ce langage est modulable, testable et facilement livrable. Au travers d’une approche technique montrant par l’exemple quels instruments choisir, découvrez comment jouer la partition d’une symphonie pour PHP industrialisé en agilité majeure.
Au programme:
- Dégager un boilerplate d’un projet PHP ou comment ne pas tout jeter à l’arrivée
- Reprendre la main sur leur projet frontend et avoir une stratégie de refactoring par les tests
“Not only working software, but also well-crafted software” - Manifesto for Software Craftsmanship
Ce cours présente ce qu'est l'internet des objets (IoT), un réseau parallèle au web connectant entre eux des dispositifs physiques. Les différences majeures entre l'IoT et le web sont mises en avant, ainsi que les grands défis auxquels le monde de l'IoT est confronté. Le cours présente ensuite brièvement comment on peut gérer un système embarqué à distance, notamment pour la maintenance, le monitoring, le disaster recovery, notamment à l'aide d'un watchdog. Enfin, pour conclure, plusieurs architectures réseaux possibles sont présentées, pour inter-connecter des systèmes embarqués et les relier au web.
Ce cours présente la notion de système embarqué temps-réel et comment il est possible de gérer cela au niveau software avec un Linux embarqué. Plusieurs solutions sont présentées : OS temps-réel, linux préemptif et support hardware. Enfin, le cours présente le PRU-ICSS, dont est dotée la BeagleBone Black, une unité de calcul spécialisée pour les applications temps réel. Le cours présente comment programmer le PRU et notamment comment compiler un code à sa destination à l'aide d'un langage d'assemblage.
Ce cours présente les principaux moyens de communications que l'on peut déployer au sein d'un système embarqué. Après un rappel sur les différents types de communication (série/parallèle, synchrone/asynchrone, half-duplex/full-duplex), le cours présente le port série ainsi que l'implémentation UART. Vient ensuite le bus USB et les deux modes en hôte ou périphérique. Après cela, le cours présente les protocoles I2C et puis SPI. Enfin, il termine avec le simple bus 1-Wire. Tous ces différents moyens de communication sont disponibles sur la BeagleBone Black et le cours illustre comment les manipuler à l'aide du Linux embarqué.
Ce premier cours introduit la notion de système embarqué en commençant par en donner une définition. Il les caractérise ensuite sur base de plusieurs critères : type d'application, de fonction visé, taille, fiabilité, efficacité. Il présente ensuite plusieurs aspects hardware (unité de calcul, architecture matérielle, composants clés) et software (niveau de programmation, processus de développement). Enfin, il conclut en discutant sur ce qu'est un ingénieur en systèmes embarqués.
Cette conférence présente le framework Johnny-Five qui permet de programmer des cartes embarquées à l'aide d'un module Node.js. Après un tour rapide du JavaScript et de son fonctionnement, en particulier la programmation fonctionnelle et l'exécution pilotée par les évènements, la présentation décrit Node.js et aborde rapidement son fonctionnement. La troisième partie présente Johnny-Five et plusieurs exemples simples de contrôle d'une LED et de l'utilisation des entrées/sorties numériques et analogiques.
Cette conférence présente LaTeX, un outil permettant de réaliser des documents de haute qualité typographique et professionnelle. Après avoir présenté quelques règles de typographie de la langue française, la présentation fait découvrir les bases de LaTeX et montre comment réaliser son premier document. Elle présente ensuite plusieurs constructions de base comme les listes, l'inclusion d'images et de tableaux, les mathématiques, les listings de code source. Enfin, elle termine avec des constructions plus avancées, comme la notion de figure et références croisées.
Ce second cours d'algorithmique présente des techniques utilisées en intelligence artificielle pour trouver une solution à un problème de recherche. La première partie définit un problème de recherche : état, action, arbre d'exécution, espace d'états, cout, objectif et formalisation. La deuxième partie présente plusieurs algorithmes de recherche : non informé (BFS, UCS, DFS, DLS, ID-DFS, BS), informé (BFS, A*) et avec adversaire (Minimax, Alpha-Beta Pruning). Enfin, la troisième partie présente deux librairies Python qui implémentent des algorithmes de recherche.
Ce cours introduit à l'intelligence artificielle. La première partie du cours présente et définit ce qu'est l'intelligence et décrit les notions d'agent rationnel et d'environnement et leurs propriétés. Ces deux concepts permettent d'offrir un cadre de réflexion sur l'intelligence. La fin de la première partie présente les neufs formes d'intelligence selon Howard Gardner. La seconde partie du cours présente et définit l'intelligence artificielle, initiée par Marvin Minsky et John McCarthy au MIT. Elle présente également le test de Turing, test permettant de déterminer si une machine peut penser. Cette partie se termine en présentant les six grands domaines de l'intelligence artificielle.
Ce cours présente la programmation fonctionnelle et montre comment il est possible de programmer avec ce paradigme en utilisant Python. La première partie présente la notion d'objet de type fonction, les fonctions lambda, le type callable et les closures. La deuxième partie présente les décorateur et montre comment ajouter du comportement à une fonction à l'aide d'un décorateur. La troisième partie présente les itérateurs et les générateurs qui, grâce à l'instruction yield, génère les données à la demande.
Ce cours présente les techniques que l'on peut utiliser pour effectuer des calculs parallèles avec une machine. La première partie introduit à la notion de parallélisme et de processus. Elle présente ensuite comment lancer et manipuler des processus avec les modules subprocess et multiprocessing. On y voit également comment communiquer entre processus avec des Queue et des Pipe. La deuxième partie présente les threads et leur utilisation avec le module threading. On y voit également comment créer un pool de workers/executors pour exécuter des jobs. Enfin, la dernière partie présente le framework dispy qui permet de facilement faire du calcul distribué et exploiter le parallélisme de données.
Ce cours est le premier en lien avec l'algorithmique présente les algorithmes et fonctions récursives ainsi que le type abstrait de données arbre. La première partie revient sur les notions de problème, algorithhme et spécification. La deuxième partie présente la récursion et de nombreux exemples. Enfin, la troisième partie présente le type abstrait de données arbre qui permet d'organiser des données de manière hiérarchique. Le cours se termine avec une introduction aux notions de backtracking et lookahead.
Ce deuxième cours aborde la programmation réseau, c'est-à-dire le développement d'applications avec plusieurs composants qui communiquent entre eux via la réseau. Après une rapide présentation des protocoles UDP et TCP, le cours aborde la notion de socket et présente le module Python de même nom. Le cours présente deux applications concrètes : une application de chat (basé sur UDP) et une application echo (basé sur TCP). Le cours se termine par la découverte de la notion de protocole de communication et de la définition du format des messages échangés.
Ce cours présente le notion de qualité de code et quels sont les critères et pratiques à adopter pour produire du code de qualité. Il présente les erreurs de programmation les plus fréquentes auprès des apprentis programmeurs. La deuxième partie du cours présente la notion de convention de codage et en particulier le PEP 0008 qui décrit des conventions à adopter lorsqu'on programme en Python.
Ce cours présente la notion de qualité de code et comment il est possible de l'évaluer grâce à des métriques mesurables. Après avoir présenté plusieurs métriques standards, il se concentrer sur des aspects de qualité de code spécifique à l'orienté objet et présente les cinq concepts de l'orienté objet. La deuxième partie du cours présente plusieurs bonnes pratiques à avoir en programmation orientée objet, sur base d'exemples concrets.
Ce cours présente ce qu'est Internet et son fonctionnement. En partant de l'ordinateur personnel ou smartphone connectés en un réseau local, le cours remonte petit à petit vers le fournisseur d'accès et l'Internet complet. Le cours présente ensuite plusieurs protocoles qui assurent le bon fonctionnement d'Internet et des services qu'il permet d'offrir. Enfin, la dernière partie concerne l'internet des objets.
Ce cours présente la notion d'héritage entre classes qui permet de construire une relation de type "is-a". On crée une sous-classe à partir d'une super-classe, pour en hériter une partie de ses membres. On peut ensuite y ajouter des membres spécifiques. Ce cours présente également la redéfinition de méthodes, et comment utiliser les modificateurs de visibilité des membres.
1. Outils de gestion de projets
Sébastien Combéfis
Mercredi 13 avril 2016
2. Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons
Attribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.
3. Contexte
Travail collaboratif sur un projet informatique
Nécessité de coordination entre les développeurs
Utilisation d’outils en ligne de gestion
Pour différents aspects de la gestion de projet
3
5. Source Code Management
Pour tout projet informatique, il faut une stratégie de backup
On ajoute souvent une gestion des versions
Un développeur peut proposer plusieurs révisions par jour
Source Code Manager (SCM)
Version Control System (VCS)
Revision Control System (RCS)
5
6. Buts d’un gestionnaire de versions
Gestion d’un projet de programmation
Garder l’historique de toutes les modifications
Travail en équipe
Support de branches de développement
6
7. Git
Système inventé par Linus Torvalds pour le kernel Linux
Git a vu le jour en avril 2005
Premier commit le 8 avril
Logiciel de gestion de versions décentralisé
Connexion internet uniquement pour les pull et push
7
10. Git avec un serveur central
Accès en écriture pour tous les développeurs
Serveur central
Développeur A Développeur B
push
pull pull
push
9
11. Git décentralisé
Accès en écriture seulement pour les mainteneurs
Les contributeurs font des pull requests
Serveur
Contributeur
Serveur principal
Mainteneur
push
pull
push
pull request
10
12. États des fichiers (1)
Un fichier doit être explicitement ajouté au dépôt Git
Untracked
Modified
Staged Committed
git add git commit
Espace de travail Zone de transit Dépôt Git
11
13. États des fichiers (2)
Untracked/Modified
Nouveaux fichiers ou fichiers modifiés
Pas pris en compte pour le prochain commit
Staged
Fichiers ajoutés, modifiés, supprimés ou déplacés
Pris en compte pour le prochain commit
Unmodified/Committed
Aucune modification pour le prochain commit
12
14. Commandes de base
Ajouter un fichier dans la zone de transit
git add fichier
Obtenir l’état des fichiers
git status
Valider les modifications en créant un commit
git commit -m Titre du commit
Obtenir l’historique des commits
git log
13
15. Le concept de branche
Une branche pointe vers un commit
À chaque nouveau commit, le pointeur de branche avance
Un commit pointe vers le commit parent
82ea19
master
14
16. Le concept de branche
Une branche pointe vers un commit
À chaque nouveau commit, le pointeur de branche avance
Un commit pointe vers le commit parent
82ea19 cd27e1
master
14
17. Le concept de branche
Une branche pointe vers un commit
À chaque nouveau commit, le pointeur de branche avance
Un commit pointe vers le commit parent
82ea19 cd27e1 98173c
master
14
18. Création d’une nouvelle branche
Une nouvelle branche est créée avec « git branch name »
1 $ git branch test
82ea19 cd27e1 98173c
master
test
15
19. Branche courante
La commande « git branch » liste les branches existantes
1 $ git branch
2 * master
3 test
La branche courante est identifiée par HEAD
82ea19 cd27e1 98173c
master
test
HEAD
16
20. Changer de branche
La commande « git checkout name » change de branche
1 $ git checkout test
2 Switched to branch ’test ’
La branche courante est identifiée par HEAD
82ea19 cd27e1 98173c
master
testHEAD
17
21. Commit sur une branche
Un commit va toujours se faire sur la branche courante
1 ...
2 $ git commit ...
3 $ git checkout master
4 ...
5 $ git commit ...
82ea19 cd27e1 98173c
master
testHEAD
18
22. Commit sur une branche
Un commit va toujours se faire sur la branche courante
1 ...
2 $ git commit ...
3 $ git checkout master
4 ...
5 $ git commit ...
82ea19 cd27e1 98173c
ab716e
master
testHEAD
18
23. Commit sur une branche
Un commit va toujours se faire sur la branche courante
1 ...
2 $ git commit ...
3 $ git checkout master
4 ...
5 $ git commit ...
82ea19 cd27e1 98173c
ab716e 716ea4
master
testHEAD
18
24. Commit sur une branche
Un commit va toujours se faire sur la branche courante
1 ...
2 $ git commit ...
3 $ git checkout master
4 ...
5 $ git commit ...
82ea19 cd27e1 98173c
ab716e 716ea4
master
test
HEAD
18
25. Commit sur une branche
Un commit va toujours se faire sur la branche courante
1 ...
2 $ git commit ...
3 $ git checkout master
4 ...
5 $ git commit ...
82ea19 cd27e1 98173c
62eac3
ab716e 716ea4
test
masterHEAD
18
26. Pourquoi des branches ?
Organisation du code ou de l’équipe de développement
Conventions à choisir pour chaque projet
Plusieurs utilisations différentes
Une branche par développeur
Une branche par système d’exploitation supporté
Une branche par version (production, développement...)
Convention spéciale pour la plateforme d’hébergement
19
28. Fusion de branches
Fusionner deux branches pour en combiner les modifications
La fusion se fait vers la branche courante
1 $ git merge test
82ea19 cd27e1 98173c
62eac3
ab716e 716ea4
test
masterHEAD
886ca5
21
29. Dépôts distants (1)
Stockage de références vers des dépôts distants
Identifiant pour chaque référence
1 $ git remote -v
2 charlesvdv https :// github.com/charlesvdv/pythia.git (fetch)
3 charlesvdv https :// github.com/charlesvdv/pythia.git (push)
4 origin https :// github.com/pythia -project/pythia.git (fetch)
5 origin https :// github.com/pythia -project/pythia.git (push)
Récupération de commits d’un dépôt distant
Deux opérations possibles en une fois avec git pull
1 $ git fetch charlesvdv updatekernel
2 $ git merge remotes/charlesvdv/ updatekernel
22
30. Dépôts distants (2)
Envoi de commits vers un dépôt distant
Utilisation de git push
1 $ git push origin master
Assurer la cohérence entre les branches locales et distantes
État ahead/behind du local par rapport au distant
23
31. Autres systèmes de versionnement
Mercurial (https://www.mercurial-scm.org/)
Écrit en Python, commande principale hg
Bazaar (http://bazaar.canonical.com/en/)
Écrit en Python, commande principale bzr
24
32. Plateforme GitHub (1)
Plateforme d’hébergement de dépôts Git
Serveur public permettant le partage de code
Création gratuite d’un compte pour dépôts publics
https://github.com/
25
34. Plateforme Bitbucket
Plateforme d’hébergement de dépôts Git et Mercurial
Serveur public permettant le partage de code
Création gratuite d’un compte pour dépôts publics et privés
https://bitbucket.org/
27
36. Déploiement
Installation, configuration et déploiement automatisé
Sur base d’un dépôt Git, ou tout autre dépôt distant
Configuration de l’environnement d’exécution
Les logiciels prérequis qui doivent être installés
Définition du script de lancement
Commande(s) à exécuter pour lancer le logiciel
Définition de variables d’environnement
Configuration d’options et paramètres au logiciel
29
37. Plateforme Heroku (1)
Plateforme d’hébergement d’applications
Déploiement d’applications web et serveur en ligne
Création gratuite de dynos pour petites applications
https://www.heroku.com
30
39. Exemple d’une app Python
Environnement d’exécution avec runtime.txt
1 python -3.5.1
Script de lancement avec Procfile
1 web: python3 server.py
Prérequis à installer avec requirements.txt
1 bottle ==0.12.9
2 requests ==2.9.1
32
40. Outil Jenkins
Outil d’intégration continue
Déploiement d’applications web et serveur en ligne
Outil open-source installable facilement sur un serveur
https://jenkins.io/
33
42. Testing
Nécessité de tester qu’un programme fait bien ce qu’il faut
Définir ce que le programme doit faire
Écrire un jeu de tests pour vérifier le programme
Impossible de garantir l’exactitude d’un programme
On ne peut pas tester tous les scénarios possibles
Amélioration de la qualité de code
Un jeu de tests bien choisi diminue le nombre de bugs potentiels
35
43. Types de test
Test utilisateur (usability testing)
Évaluer un programme par des tests utilisateurs (ergonomie...)
Test fonctionnel (functional testing)
Assurance qualité (QA) et test black-box sur les spécifications
Test d’intégration (integration testing)
Vérification des performances et de la fiabilité du programme
36
44. Test unitaire
Test individuel d’une unité dans le code
Une fonction, une classe ou une méthode
Définition du test sur base d’une spécification du code
Étant donné les préconditions, vérifier les postconditions
Utilisé notamment en Test-Driven Development (TDD)
Technique de développement de logiciel piloté par les tests
37
45. Cycle TDD
Cycle en trois phases principales
Red–Green–Refactor
Red
Green Refactor
1. Écrire un test qui échoue
2. Faire fonctionner le code 3. Éliminer la redondance
38
46. Plateforme Travis (1)
Plateforme d’exécution automatique de tests
Code automatiquement rapatrié depuis GitHub par exemple
Création gratuite d’un compte pour tester des dépôts publics
https://travis-ci.org/
39
50. Plateforme Trello (1)
Plateforme de gestion de projets
Utilisation du paradigme Kanban de Toyota pour la gestion
Création gratuite d’un compte pour version complète de base
https://trello.com/
43
52. Plateforme FreedCamp (1)
Plateforme de gestion de projets
Paradigme Kanban, liste de todo’s, calendrier...
Création gratuite d’un compte pour version complète de base
https://freedcamp.com/
45
54. Plateforme Slack (1)
Plateforme de communication
Messagerie entre membres d’une équipe
Création gratuite d’un compte pour petites équipes
https://slack.com/
47
56. Plateforme Tom’splanner (1)
Plateforme de planification d’un projet
Réalisation d’un diagramme de Gantt en ligne
Création gratuite d’un compte personnel avec un planning
http://www.tomsplanner.com/
49
59. Plateforme Read the Docs (1)
Plateforme d’hébergement de documentation
Récupération depuis dépôt Git (Markdown ou reStructuredText)
Création gratuite d’un compte
https://readthedocs.org/
52