From 96fbc7822548f6b0dbcc964382e944aab2874232 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= Date: Thu, 9 Oct 2025 19:15:46 +0200 Subject: [PATCH] Obisidian vault auto-backup: 09-10-2025 19:15:46 on . 4 files edited --- .../plugins/obsidian-git/obsidian_askpass.sh | 0 .obsidian/workspace.json | 18 +- ISEN/Other/Appen/Git flow Studysen.md | 94 +++++++ ISEN/Other/TP Class 1.md | 232 +++++++++--------- 4 files changed, 219 insertions(+), 125 deletions(-) mode change 100755 => 100644 .obsidian/plugins/obsidian-git/obsidian_askpass.sh create mode 100644 ISEN/Other/Appen/Git flow Studysen.md diff --git a/.obsidian/plugins/obsidian-git/obsidian_askpass.sh b/.obsidian/plugins/obsidian-git/obsidian_askpass.sh old mode 100755 new mode 100644 diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 20c78cb..3ae9500 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -13,7 +13,7 @@ "state": { "type": "markdown", "state": { - "file": "ISEN/Réunion/CIPA 4/Réunion international.md", + "file": "ISEN/Other/Appen/Git flow Studysen.md", "mode": "source", "source": false, "backlinks": true, @@ -28,7 +28,7 @@ } }, "icon": "lucide-file", - "title": "Réunion international" + "title": "Git flow Studysen" } }, { @@ -254,13 +254,14 @@ }, "active": "d7edff405bbcbd43", "lastOpenFiles": [ - "ISEN/Réunion/CIPA 4/Rentrée 2025-2026.md", - "ISEN/Réunion/CIPA 4/Réunion international.md", - "ISEN/Réunion/CIPA 4/Réunion FHS Rentrée 2025.md", - "ISEN/Réunion/CIPA 4/Délégué 2025-2026.md", + "ISEN/Other/Appen/Git flow Studysen.md", + "ISEN/Other/TP Class 1.md", + "ISEN/Other/Appen", "ISEN/IA/CIPA4/Fiche de révision.md", + "ISEN/Réunion/CIPA 4/Réunion international.md", + "ISEN/IA/CIPA4/TP/TP4/tp4_IA.pdf", "ISEN/IA/CIPA4/TP/TP4/tp4_IA.ipynb", - "ISEN/IA/CIPA4/TP/TP4/tp4_IA (1).ipynb", + "ISEN/IA/CIPA4/TP/TP4", "ISEN/IA/CIPA4/Fiche de révision.pdf", "ISEN/Réseau/CIPA4/TP/Module 3/Enonce du M03 TP 04 - Calcul de sous-reseaux.pdf", "ISEN/Réseau/CIPA4/TP/Module 3/Enonce du M03 TP 03 - Notation CIDR.pdf", @@ -268,9 +269,8 @@ "ISEN/Réseau/CIPA4/TP/Module 3/Enonce du M03 TP 02 - Calcul d'adresses.pdf", "ISEN/Réseau/CIPA4/TP/Module 3/Enonce du M03 TP 01 - Les classes IPv4.pdf", "ISEN/Réseau/CIPA4/Réseau Cours 1.md", - "ISEN/Réseau/CIPA4/TP/Module 3/Enonce du M03 TP 02 - Calcul d'adresses.pdf.sb-9a277a7a-J1JTsg", - "ISEN/Réseau/CIPA4/TP/Module 3/M03-05-TP-Packet-Tracer_Adressage_IPv4.pka", "ISEN/IA/CIPA4/TP/TP3/Compte Rendu TP3 Apprentissage non-supervisé - Réduction de la dimensionnalité.md", + "ISEN/Réunion/CIPA 4/Délégué 2025-2026.md", "src/Pasted image 20240130111505.png", "src/Pasted image 20240123120819.png", "src/Pasted image 20240123120807.png", diff --git a/ISEN/Other/Appen/Git flow Studysen.md b/ISEN/Other/Appen/Git flow Studysen.md new file mode 100644 index 0000000..370b484 --- /dev/null +++ b/ISEN/Other/Appen/Git flow Studysen.md @@ -0,0 +1,94 @@ +# Git Flow : Principe et Intérêt pour la CI/CD + +## 1. Introduction +Le **Git Flow** est un modèle de gestion de branches Git conçu pour structurer le développement logiciel, surtout dans les projets avec des cycles de release bien définis. Il permet de : +- Séparer clairement le code stable (production) du code en développement. +- Faciliter la collaboration entre plusieurs développeurs. +- Automatiser les tests et déploiements (CI/CD). + +## 2. Branches principales + +| Branche | Rôle | Exemple d’utilisation | +|---------|----------------------------------------------------------------------|---------------------------------------------------------------------------------------| +| **main** | Contient le code de production, toujours stable et prêt à être déployé. | Version disponible sur les stores (App Store, Google Play, etc.). | +| **dev** | Intègre les nouvelles fonctionnalités et corrections avant la release. | Branche où tout le développement actif a lieu avant de fusionner vers `main`. | + +--- + +## 3. Branches de support (temporaires) + +### a. Feature branches +- **Origine** : `dev` +- **Préfixe** : `feature/*` (ex: `feature/login-page`) +- **Utilité** : Développer une nouvelle fonctionnalité de manière isolée. +- **Fusion** : Vers `dev` après validation. + +Exemple : +```bash +git checkout -b feature/login-page dev +# Développement... +git checkout dev +git merge --no-ff feature/login-page +git branch -d feature/login-page +``` + +### b. Release branches +- **Origine** : `dev` +- **Préfixe** : `release/*` (ex: `release/1.2.0`) +- **Utilité** : Préparer une nouvelle version (corrections de bugs mineurs, documentation, etc.). +- **Fusion** : Vers `main` (avec un tag de version) et `dev`. + +Exemple : +```bash +git checkout -b release/1.2.0 dev +# Corrections de bugs, tests finaux... +git checkout main +git merge --no-ff release/1.2.0 +git tag -a v1.2.0 +git checkout dev +git merge --no-ff release/1.2.0 +``` + +### c. Hotfix branches +- **Origine** : `main` +- **Préfixe** : `hotfix/*` (ex: `hotfix/critical-bug`) +- **Utilité** : Corriger un bug critique en production sans attendre le cycle de release. +- **Fusion** : Vers `main` (avec un tag) et `dev`. + +Exemple : +```bash +git checkout -b hotfix/critical-bug main +# Correction du bug... +git checkout main +git merge --no-ff hotfix/critical-bug +git tag -a v1.2.1 +git checkout dev +git merge --no-ff hotfix/critical-bug +``` + +## 4. Intérêt pour la CI/CD +- **Automatisation des tests** : Chaque fusion vers `dev` ou `main` peut déclencher des pipelines CI (tests unitaires, intégration, etc.). +- **Déploiement continu** : La branche `main` peut être configurée pour déclencher un déploiement automatique vers la production (compilation et publication sur les store via expo). +- **Isolation des fonctionnalités** : Les `feature branches` permettent de tester une fonctionnalité en isolation avant intégration. +- **Gestion des versions** : Les `release branches` et les tags facilitent le suivi des versions et les rollbacks si nécessaire. + +## 5. Workflow complet +1. Un développeur crée une `feature/login-page` depuis `dev`. +2. Après validation, la feature est mergée dans `dev`. +3. Quand `dev` est stable, une `release/1.2.0` est créée pour les tests finaux. +4. La release est mergée dans `main` (avec un tag) et `dev`. +5. Si un bug critique est détecté en production, un `hotfix` est créé depuis `main`, corrigé, puis mergé dans `main` et `dev`. + +## 6. Schéma visuel simplifié +``` +main ────┬─────────────────┬─────────────────┬───> + │ │ │ + ▼ ▼ ▼ + v1.1.0 v1.2.0 v1.2.1 + │ │ │ +dev ────┴─────┬────────────┴─────┬────────────┴───> + │ │ + ▼ ▼ + feature/* release/* + +``` diff --git a/ISEN/Other/TP Class 1.md b/ISEN/Other/TP Class 1.md index 75fc336..cc08bf5 100644 --- a/ISEN/Other/TP Class 1.md +++ b/ISEN/Other/TP Class 1.md @@ -1,116 +1,116 @@ -# Création d'une classe "Animal" - -## Objectif : Comprendre les bases des classes en Python en créant une classe simple représentant des animaux. - -## Instructions : - -1. Créez une classe appelée "Animal" avec les attributs de base tels que le nom, l'âge, le type d'alimentation, etc. - -2. Ajoutez un constructeur à la classe pour initialiser ces attributs lors de la création d'une instance de la classe. - -3. Ajoutez une méthode à la classe qui affiche les informations de l'animal. - -4. Créez quelques instances de la classe "Animal" avec des informations différentes. - -5. Appelez la méthode d'affichage pour chaque instance pour vérifier que les informations sont correctes. - -# Gestion des attributs avec setters et getters - -## Objectif : Comprendre l'utilisation des méthodes getters et setters pour manipuler les attributs d'une classe en Python. - -## Instructions : - -1. Créez une classe appelée "Personne" avec les attributs de base tels que le nom, l'âge et l'adresse. - -2. Utilisez des méthodes getters pour obtenir les valeurs des attributs. - -3. Utilisez des méthodes setters pour modifier les valeurs des attributs. - -4. Utilisez des fonctions d'entrée utilisateur pour permettre à l'utilisateur de définir les valeurs des attributs lors de la création d'une instance de la classe. - -5. Ajoutez des vérifications dans les setters pour vous assurer que certaines valeurs respectent certaines conditions (par exemple, l'âge ne peut pas être négatif). - -# Gestion avancée des attributs avec setters, getters, méthodes magiques et inputs - -## Objectif : Approfondir la compréhension des classes en Python en utilisant des setters, des getters, des méthodes magiques et des entrées utilisateur pour manipuler les attributs. - -## Instructions : - -1. Créez une classe appelée "Voiture" avec des attributs tels que la marque, le modèle, l'année de fabrication, et le prix. - -2. Utilisez des méthodes getters pour obtenir les valeurs des attributs. - -3. Utilisez des méthodes setters pour modifier les valeurs des attributs. - -4. Utilisez des méthodes magiques pour fournir une représentation sous forme de chaîne de la classe (méthode `__str__`) et pour permettre la comparaison de deux instances basée sur le prix (méthode `__lt__` pour "moins que"). - -5. Utilisez des fonctions d'entrée utilisateur pour permettre à l'utilisateur de définir les valeurs des attributs lors de la création d'une instance de la classe. - -## Jeu de test - -```python -print("\nInformations de la voiture :") -print(voiture1) -``` - -```python -print(f"Marque : {voiture1.get_marque()}") -print(f"Modèle : {voiture1.get_modele()}") -print(f"Année de fabrication : {voiture1.get_annee()}") -print(f"Prix : {voiture1.get_prix()} €") -``` - -```python -voiture1.set_marque("Nouvelle Marque") -print(f"Marque mise à jour : {voiture1.get_marque()}") - -# Essayez de définir un âge négatif (la vérification dans le setter devrait l'empêcher) -voiture1.set_annee(-2022) -print(f"Année après mise à jour : {voiture1.get_annee()}") -``` - -```python -print("Représentation sous forme de chaîne de la première voiture :") -print(voiture1) - -# Comparez les deux voitures et affichez le résultat (la deuxième voiture ayant un prix plus bas) -print("\nComparaison des deux voitures :") -if voiture1 < voiture2: - print("La première voiture est moins chère que la deuxième.") -else: - print("La deuxième voiture est moins chère que la première.") -``` - -# Gestion des étudiants à l'ISEN Nantes - -## Objectif : Créer un système de gestion des étudiants à l'ISEN Nantes en utilisant des classes, des méthodes spéciales, et en mettant l'accent sur l'utilisation de setters et getters. - -## Instructions : - -1. Créez une classe appelée "Personne" avec les attributs de base tels que le nom, le prénom, la date de naissance. - -2. Ajoutez des méthodes getters et setters pour accéder et modifier ces attributs. - -3. Créez une classe "Etudiant" avec des attributs spécifiques tels que le numéro étudiant, le niveau (première année, deuxième année, etc.), la spécialisation et la liste des inscriptions. - -4. Ajoutez des méthodes getters et setters pour les attributs spécifiques de la classe "Etudiant". - -5. Ajoutez une classe "Cours" avec des attributs tels que le nom du cours, le nombre de crédits, et le professeur responsable. - -6. Créez une classe "Inscription" pour représenter l'inscription d'un étudiant à un cours particulier. Cette classe doit contenir des informations telles que l'étudiant, le cours, et la note obtenue. - -7. Utilisez des listes pour stocker les étudiants, les cours et les inscriptions. - -8. Implémentez des méthodes pour ajouter des étudiants, des cours et des inscriptions au système. - -9. Ajoutez des méthodes pour afficher les étudiants, les cours, et les inscriptions. - -10. Implémentez une méthode pour calculer la moyenne des notes d'un étudiant. -11. Implémentez des méthode pour ajouter, soustraire ou vérifier l'égalité de 2 notes. - -```python -# Exemples d'utilisation du code -etudiant1 = Etudiant("Doe", "John", "01/01/2005", "E12345", "A1", "Informatique") -cours1 = Cours("Programmation C", 4, "Leandro Montero") -inscription1 = Inscription(etudiant1, cours1, 18) -``` +# Création d'une classe "Animal" + +## Objectif : Comprendre les bases des classes en Python en créant une classe simple représentant des animaux. + +## Instructions : + +1. Créez une classe appelée "Animal" avec les attributs de base tels que le nom, l'âge, le type d'alimentation, etc. + +2. Ajoutez un constructeur à la classe pour initialiser ces attributs lors de la création d'une instance de la classe. + +3. Ajoutez une méthode à la classe qui affiche les informations de l'animal. + +4. Créez quelques instances de la classe "Animal" avec des informations différentes. + +5. Appelez la méthode d'affichage pour chaque instance pour vérifier que les informations sont correctes. + +# Gestion des attributs avec setters et getters + +## Objectif : Comprendre l'utilisation des méthodes getters et setters pour manipuler les attributs d'une classe en Python. + +## Instructions : + +1. Créez une classe appelée "Personne" avec les attributs de base tels que le nom, l'âge et l'adresse. + +2. Utilisez des méthodes getters pour obtenir les valeurs des attributs. + +3. Utilisez des méthodes setters pour modifier les valeurs des attributs. + +4. Utilisez des fonctions d'entrée utilisateur pour permettre à l'utilisateur de définir les valeurs des attributs lors de la création d'une instance de la classe. + +5. Ajoutez des vérifications dans les setters pour vous assurer que certaines valeurs respectent certaines conditions (par exemple, l'âge ne peut pas être négatif). + +# Gestion avancée des attributs avec setters, getters, méthodes magiques et inputs + +## Objectif : Approfondir la compréhension des classes en Python en utilisant des setters, des getters, des méthodes magiques et des entrées utilisateur pour manipuler les attributs. + +## Instructions : + +1. Créez une classe appelée "Voiture" avec des attributs tels que la marque, le modèle, l'année de fabrication, et le prix. + +2. Utilisez des méthodes getters pour obtenir les valeurs des attributs. + +3. Utilisez des méthodes setters pour modifier les valeurs des attributs. + +4. Utilisez des méthodes magiques pour fournir une représentation sous forme de chaîne de la classe (méthode `__str__`) et pour permettre la comparaison de deux instances basée sur le prix (méthode `__lt__` pour "moins que"). + +5. Utilisez des fonctions d'entrée utilisateur pour permettre à l'utilisateur de définir les valeurs des attributs lors de la création d'une instance de la classe. + +## Jeu de test + +```python +print("\nInformations de la voiture :") +print(voiture1) +``` + +```python +print(f"Marque : {voiture1.get_marque()}") +print(f"Modèle : {voiture1.get_modele()}") +print(f"Année de fabrication : {voiture1.get_annee()}") +print(f"Prix : {voiture1.get_prix()} €") +``` + +```python +voiture1.set_marque("Nouvelle Marque") +print(f"Marque mise à jour : {voiture1.get_marque()}") + +# Essayez de définir un âge négatif (la vérification dans le setter devrait l'empêcher) +voiture1.set_annee(-2022) +print(f"Année après mise à jour : {voiture1.get_annee()}") +``` + +```python +print("Représentation sous forme de chaîne de la première voiture :") +print(voiture1) + +# Comparez les deux voitures et affichez le résultat (la deuxième voiture ayant un prix plus bas) +print("\nComparaison des deux voitures :") +if voiture1 < voiture2: + print("La première voiture est moins chère que la deuxième.") +else: + print("La deuxième voiture est moins chère que la première.") +``` + +# Gestion des étudiants à l'ISEN Nantes + +## Objectif : Créer un système de gestion des étudiants à l'ISEN Nantes en utilisant des classes, des méthodes spéciales, et en mettant l'accent sur l'utilisation de setters et getters. + +## Instructions : + +1. Créez une classe appelée "Personne" avec les attributs de base tels que le nom, le prénom, la date de naissance. + +2. Ajoutez des méthodes getters et setters pour accéder et modifier ces attributs. + +3. Créez une classe "Etudiant" avec des attributs spécifiques tels que le numéro étudiant, le niveau (première année, deuxième année, etc.), la spécialisation et la liste des inscriptions. + +4. Ajoutez des méthodes getters et setters pour les attributs spécifiques de la classe "Etudiant". + +5. Ajoutez une classe "Cours" avec des attributs tels que le nom du cours, le nombre de crédits, et le professeur responsable. + +6. Créez une classe "Inscription" pour représenter l'inscription d'un étudiant à un cours particulier. Cette classe doit contenir des informations telles que l'étudiant, le cours, et la note obtenue. + +7. Utilisez des listes pour stocker les étudiants, les cours et les inscriptions. + +8. Implémentez des méthodes pour ajouter des étudiants, des cours et des inscriptions au système. + +9. Ajoutez des méthodes pour afficher les étudiants, les cours, et les inscriptions. + +10. Implémentez une méthode pour calculer la moyenne des notes d'un étudiant. +11. Implémentez des méthode pour ajouter, soustraire ou vérifier l'égalité de 2 notes. + +```python +# Exemples d'utilisation du code +etudiant1 = Etudiant("Doe", "John", "01/01/2005", "E12345", "A1", "Informatique") +cours1 = Cours("Programmation C", 4, "Leandro Montero") +inscription1 = Inscription(etudiant1, cours1, 18) +```