Obisidian vault auto-backup: 09-10-2025 19:15:46 on . 4 files edited

This commit is contained in:
2025-10-09 19:15:46 +02:00
parent cf419731c7
commit 96fbc78225
4 changed files with 219 additions and 125 deletions

0
.obsidian/plugins/obsidian-git/obsidian_askpass.sh vendored Executable file → Normal file
View File

View File

@@ -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",

View File

@@ -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 dutilisation |
|---------|----------------------------------------------------------------------|---------------------------------------------------------------------------------------|
| **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/*
```

View File

@@ -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)
```