Franck Pommereau

updated projets

This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>Projets Python L3 ASR</title>
<style type="text/css">
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
</style>
</head>
<body>
<h1 id="synchronisation-de-répertoires">Synchronisation de répertoires</h1>
<p>Le but du projet est de développer un outil de synchronisation de répertoires entre plusieurs machines. Pour cela on s’appuiera sur un serveur <code>git</code> pour centraliser les fichiers. Il s’agit donc de développer un outil côté client qui réalise les tâches suivantes:</p>
<ul>
......@@ -30,7 +15,7 @@
<li>un clic sur un des sous répertoires permet de “zoomer” dedans pour analyser l’encombrement de ses sous-répertoires</li>
<li>un bouton permet de revenir en arrière au répertoire supérieur</li>
</ul>
<h1 id="tableur-non-interactif">Tableur non interactif</h1>
<h1 id="pris-en-2022-tableur-non-interactif">(pris en 2022) Tableur non interactif</h1>
<p>Le but de ce projet est de développer un outil pour calculer les formules dans un fichier CSV:</p>
<ul>
<li>chaque cellule dont le texte commence par <code>=</code> est une formule pouvant comprendre
......@@ -48,20 +33,20 @@
</ul></li>
<li>puis il doit générer un nouveau fichier CSV dans lequel toutes les formules ont été évaluées</li>
</ul>
<h1 id="un-shell">Un shell</h1>
<h1 id="pris-en-2022-un-shell">(pris en 2022) Un shell</h1>
<p>Il s’agit de développer un shell pouvant être utilisé de façon interactive ou pour exécuter des scripts, les fonctions de bases attendues sont:</p>
<ul>
<li>les commandes internes du shell telles que <code>cd</code>, <code>if</code>, <code>for</code>, etc.</li>
<li>la gestion de variables</li>
<li>l’exécution de programmes externes tels que <code>ls</code>, <code>rm</code>, etc.</li>
</ul>
<h1 id="liste-de-tâches">Liste de tâches</h1>
<h1 id="pris-en-2022-liste-de-tâches">(pris en 2022) Liste de tâches</h1>
<p>Le projet à pour but de réaliser un gestionnaire de tâches à faire (<em>todo list</em>) en ligne de commande. Les tâches ont un titre, une description, une échéance éventuelle, une priorité éventuelle. L’outil permet d’ajouter / supprimer / éditer / terminer une tâche et d’afficher la liste des tâches à faire ordonnées selon la priorité et l’échéance.</p>
<h1 id="gestionnaire-de-mots-de-passe">Gestionnaire de mots de passe</h1>
<h1 id="pris-en-2022-gestionnaire-de-mots-de-passe">(pris en 2022) Gestionnaire de mots de passe</h1>
<p>Il s’agit de réaliser un gestionnaire de mots de passe en ligne de commande, c’est-à-dire un outil stockant de façon sécurisée des mots de passe, chacun étant associé à un identifiant d’utilisateurs et une URL ou description de l’endroit où il est utile. L’outil doit permettre l’ajout / la suppression / l’édition / la recherche / l’affichage des mots de passe. Un mot de passe peut aussi être copié dans le presse-papier. Le stockage doit être sécurisé par une méthode de chiffrement existante et de bonne qualité.</p>
<h1 id="générateur-de-site-web-statique">Générateur de site web statique</h1>
<p>Le projet a pour but de réaliser un outil qui fabrique les fichiers HTML d’un site web statique à partir de pages écrites en Markdown. Chaque page doit inclure un menu pour la navigation dans le site, de sorte que toutes les pages sont accessibles à partir de ce menu.</p>
<h1 id="site-de-dépôt-de-projets">Site de dépôt de projets</h1>
<h1 id="pris-en-2022-site-de-dépôt-de-projets">(pris en 2022) Site de dépôt de projets</h1>
<p>Il s’agit de réaliser un site permettant à des étudiants de rendre leurs projets. Chaque projet est déposé dans une matière en particulier et rattaché à un groupe d’étudiants identifiés. On attend les caractéristiques suivantes:</p>
<ul>
<li>la liste des matières et des étudiants sont donnés dans des fichiers CSV</li>
......@@ -80,7 +65,7 @@
</ul>
<h1 id="supervision-de-parc-informatique">Supervision de parc informatique</h1>
<p>Le projet a pour but de réaliser un outil qui supervise un parc informatique: chaque machine surveillée dispose d’un agent qui se connecte régulièrement au serveur pour lui transmettre des informations sur son état (charge CPU/RAM, espace disque disponible, état de la connexion à Internet, etc.). Le serveur expose une page web affichant un tableau de bord avec l’état du parc, en priorisant les machines avec des anomalies.</p>
<h1 id="gestionnaire-de-dépenses">Gestionnaire de dépenses</h1>
<h1 id="pris-en-2022-gestionnaire-de-dépenses">(pris en 2022) Gestionnaire de dépenses</h1>
<p>Il s’agit de programmer un outil permettant d’enregistrer les dépenses faite par une personne. Chaque dépense est enregistrée avec une somme, un intitulé, et catégorie. Les dépenses négatives sont autorisées pour représenter les rentrées d’argent. La liste des catégories n’est pas fixée à l’avance mais l’outil propose une autocomplétion par rapport à celles déjà utilisées. Les dépenses sont rangées par date dans un fichier CSV, avec la balance totale mise à jour pour chaque dépense.</p>
<h1 id="questionnaires-en-ligne">Questionnaires en ligne</h1>
<p>Il faut réaliser un serveur web permettant de répondre à des questionnaires. Chaque questionnaire est décrit dans un fichier JSON et est accessible via sa propre URL. Chaque question est définie par un intitulé, un texte de description, une clef unique (au sein du questionnaire), son caractère obligatoire ou non, et un type de réponse attendu (liste de valeurs, date, nombre, texte, etc., avec éventuellement des contraintes). Les réponses à chaque questionnaire sont compilées au sein d’un fichier CSV dont les colonnes sont les clefs des questions.</p>
......@@ -129,7 +114,7 @@
<li>possibilité de définir un date d’expiration des URL réduites</li>
<li>statistiques de consultation</li>
</ul>
<h1 id="schéma-de-configuration-réseau">Schéma de configuration réseau</h1>
<h1 id="pris-en-2022-schéma-de-configuration-réseau">(pris en 2022) Schéma de configuration réseau</h1>
<p>Le projet à pour but de générer des schémas de réseaux sous forme d’images. Le programme à réaliser doit lire les caractéristiques d’un réseau où chaque machine comporte :</p>
<ul>
<li>le nom de ses interfaces réseau et les adresses IP associées</li>
......@@ -157,5 +142,10 @@
<li>la possibilité de déplacer des fichiers entre volumes différents</li>
<li>la portabilité entre Windows, Linux, et MacOS</li>
</ul>
</body>
</html>
<h1 id="interpréteur-de-c">``Interpréteur’’ de C</h1>
<p>Le but du projet est de créer un logiciel qui permet de lancer un programme en C à partir de son code source directement. Pour cela, si le programme s’appelle <code>cscript</code> par exemple, on ajoute <code>#!cscript</code> au début du code source et le programme va :</p>
<ol type="1">
<li>Compiler le code source en ignorant cette première ligne</li>
<li>Lancer l’exécutable correspondant en lui passant les arguments de la ligne de commande</li>
</ol>
<p>Des options de compilation pourront être passées après l’appel à l’interpréteur, par exemple <code>#!cscript -lm</code>, il faudra alors différencier les options destinées au compilateur de celles destinées au programme.</p>
......
......@@ -20,7 +20,7 @@ Il s'agit de développer un outil réalisant les tâches suivantes:
* un clic sur un des sous répertoires permet de "zoomer" dedans pour analyser l'encombrement de ses sous-répertoires
* un bouton permet de revenir en arrière au répertoire supérieur
# Tableur non interactif
# (pris en 2022) Tableur non interactif
Le but de ce projet est de développer un outil pour calculer les formules dans un fichier CSV:
......@@ -35,7 +35,7 @@ Le but de ce projet est de développer un outil pour calculer les formules dans
* vérifier la validité des formules
* puis il doit générer un nouveau fichier CSV dans lequel toutes les formules ont été évaluées
# Un shell
# (pris en 2022) Un shell
Il s'agit de développer un shell pouvant être utilisé de façon interactive ou pour exécuter des scripts, les fonctions de bases attendues sont:
......@@ -43,13 +43,13 @@ Il s'agit de développer un shell pouvant être utilisé de façon interactive o
* la gestion de variables
* l'exécution de programmes externes tels que `ls`, `rm`, etc.
# Liste de tâches
# (pris en 2022) Liste de tâches
Le projet à pour but de réaliser un gestionnaire de tâches à faire (_todo list_) en ligne de commande.
Les tâches ont un titre, une description, une échéance éventuelle, une priorité éventuelle.
L'outil permet d'ajouter / supprimer / éditer / terminer une tâche et d'afficher la liste des tâches à faire ordonnées selon la priorité et l'échéance.
# Gestionnaire de mots de passe
# (pris en 2022) Gestionnaire de mots de passe
Il s'agit de réaliser un gestionnaire de mots de passe en ligne de commande, c'est-à-dire un outil stockant de façon sécurisée des mots de passe, chacun étant associé à un identifiant d'utilisateurs et une URL ou description de l'endroit où il est utile.
L'outil doit permettre l'ajout / la suppression / l'édition / la recherche / l'affichage des mots de passe.
......@@ -61,7 +61,7 @@ Le stockage doit être sécurisé par une méthode de chiffrement existante et d
Le projet a pour but de réaliser un outil qui fabrique les fichiers HTML d'un site web statique à partir de pages écrites en Markdown.
Chaque page doit inclure un menu pour la navigation dans le site, de sorte que toutes les pages sont accessibles à partir de ce menu.
# Site de dépôt de projets
# (pris en 2022) Site de dépôt de projets
Il s'agit de réaliser un site permettant à des étudiants de rendre leurs projets.
Chaque projet est déposé dans une matière en particulier et rattaché à un groupe d'étudiants identifiés.
......@@ -82,7 +82,7 @@ On attend les caractéristiques suivantes:
Le projet a pour but de réaliser un outil qui supervise un parc informatique: chaque machine surveillée dispose d'un agent qui se connecte régulièrement au serveur pour lui transmettre des informations sur son état (charge CPU/RAM, espace disque disponible, état de la connexion à Internet, etc.).
Le serveur expose une page web affichant un tableau de bord avec l'état du parc, en priorisant les machines avec des anomalies.
# Gestionnaire de dépenses
# (pris en 2022) Gestionnaire de dépenses
Il s'agit de programmer un outil permettant d'enregistrer les dépenses faite par une personne.
Chaque dépense est enregistrée avec une somme, un intitulé, et catégorie.
......@@ -147,7 +147,7 @@ Le site doit proposer les fonctionnalités suivantes:
* possibilité de définir un date d'expiration des URL réduites
* statistiques de consultation
# Schéma de configuration réseau
# (pris en 2022) Schéma de configuration réseau
Le projet à pour but de générer des schémas de réseaux sous forme d'images.
Le programme à réaliser doit lire les caractéristiques d'un réseau où chaque machine comporte :
......@@ -184,3 +184,13 @@ Ce programme doit proposer :
* la génération d'un script d'annulation
* la possibilité de déplacer des fichiers entre volumes différents
* la portabilité entre Windows, Linux, et MacOS
# ``Interpréteur'' de C
Le but du projet est de créer un logiciel qui permet de lancer un programme en C à partir de son code source directement.
Pour cela, si le programme s'appelle `cscript` par exemple, on ajoute `#!cscript` au début du code source et le programme va :
1. Compiler le code source en ignorant cette première ligne
2. Lancer l'exécutable correspondant en lui passant les arguments de la ligne de commande
Des options de compilation pourront être passées après l'appel à l'interpréteur, par exemple `#!cscript -lm`, il faudra alors différencier les options destinées au compilateur de celles destinées au programme.
......
......@@ -12,10 +12,10 @@ parser.add_argument("-c", "--coucou", type=str, default="coucou",
parser.add_argument("noms", metavar="NOM", type=str, nargs="+",
help="à qui on dit bonjour")
if __name__ == "__main__" :
if __name__ == "__main__":
args = parser.parse_args()
if args.unique :
if args.unique:
print(f"{args.coucou.title()} toute le monde !")
else :
for nom in args.noms :
else:
for nom in args.noms:
print(f"{args.coucou.title()} {nom.title()} !")
......