mirror of
https://github.com/BreizhHardware/cours-ISEN-MD.git
synced 2026-03-18 21:50:46 +01:00
Obisidian vault auto-backup: 09-10-2025 19:15:46 on . 4 files edited
This commit is contained in:
0
.obsidian/plugins/obsidian-git/obsidian_askpass.sh
vendored
Executable file → Normal file
0
.obsidian/plugins/obsidian-git/obsidian_askpass.sh
vendored
Executable file → Normal file
18
.obsidian/workspace.json
vendored
18
.obsidian/workspace.json
vendored
@@ -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",
|
||||
|
||||
94
ISEN/Other/Appen/Git flow Studysen.md
Normal file
94
ISEN/Other/Appen/Git flow Studysen.md
Normal 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 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/*
|
||||
|
||||
```
|
||||
@@ -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)
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user