From 0424fbcca65704863ab16a11bca5820f114ea27a Mon Sep 17 00:00:00 2001 From: Anthony Debucquoy Date: Tue, 24 Oct 2023 20:25:22 +0200 Subject: [PATCH 1/2] . --- bac2/os/chap2/ex5.c | 51 ++++++++++++++++++++++-------------------- bac2/os/chap2/ex5.o | Bin 5024 -> 5264 bytes bac2/os/chap2/ex6.c | 53 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 80 insertions(+), 24 deletions(-) create mode 100644 bac2/os/chap2/ex6.c diff --git a/bac2/os/chap2/ex5.c b/bac2/os/chap2/ex5.c index 06af55c..f1c2fad 100644 --- a/bac2/os/chap2/ex5.c +++ b/bac2/os/chap2/ex5.c @@ -1,41 +1,44 @@ -#include #include +#include -struct node{ - struct node* prev; +typedef struct Node* LIFO; + +struct Node{ + struct Node* prev; void* data; }; -typedef struct node* LIFO; - -LIFO* mklifo (); -void push(LIFO* lst , void*); -void* pop(LIFO* lst); +LIFO mklifo(); +void push(LIFO*, void*); +void* pop(LIFO*); int main(void) { - char* t = "test"; - LIFO* lifo = mklifo(); - push(lifo, t); - printf("%s", (char *)pop(lifo)); - + int a = 5; + int b = 12; + LIFO lifo = mklifo(); + + push(&lifo, &a); + push(&lifo, &b); + int *c = pop(&lifo); + int *d = pop(&lifo); + + printf("%d\n", *c); + printf("%d\n", *d); } -LIFO *mklifo (){ - LIFO* ret = malloc(sizeof(struct node)); - return ret; +LIFO mklifo(){ + return calloc(1, sizeof(struct Node)); } -void push(LIFO *lst , void *el){ - LIFO* next = mklifo(); +void push(LIFO* lst, void* el){ + LIFO next = mklifo(); (*lst)->data = el; - (*next)->prev = *lst; - lst = next; + next->prev = *lst; + *lst = next; } -void *pop(LIFO *lst){ - void* el; - (*lst)->data = el; +void *pop(LIFO* lst){ *lst = (*lst)->prev; - return el; + return (*lst)->data; } diff --git a/bac2/os/chap2/ex5.o b/bac2/os/chap2/ex5.o index 77ac7feb44ac7c4ea71e50d79a9924225766e71b..025a4bdcc577aceb00d26f872c5b608d6f939f9c 100644 GIT binary patch literal 5264 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 +#include + + +typedef struct node{ + void* data; + struct node* next; +} NODE; + +//Could be only head but it allows a complexity of O(1) instead of O(n) for insertion (where n would be the size of the chain) +typedef struct { + NODE* head; + NODE* tail; +} FIFO; + +FIFO mkfifo (); +void enqueue(FIFO *lst ,void* el); +void* dequeue(FIFO *lst); + +int main(void) +{ + int a = 5; + int b = 12; + FIFO fifo = mkfifo(); + + enqueue(&fifo, &a); + enqueue(&fifo, &b); + int *c = dequeue(&fifo); + int *d = dequeue(&fifo); + + printf("%d\n", *c); + printf("%d\n", *d); + +} + +FIFO mkfifo (){ + return (FIFO) {NULL, NULL}; +} + +void enqueue(FIFO *lst ,void *el){ + NODE *new = calloc(1, sizeof(NODE)); + new->data = el; + if(lst->tail != NULL) + lst->tail->next = new; + lst->tail = new; + lst->head = lst->head == NULL ? new : lst->head; +} + +void* dequeue(FIFO *lst){ + void* ret = lst->head->data; + lst->head = lst->head->next; + return ret; +} From dabb46879ddb3fe2c646cedab99b078e5a7114fc Mon Sep 17 00:00:00 2001 From: Anthony Debucquoy Date: Tue, 24 Oct 2023 20:28:37 +0200 Subject: [PATCH 2/2] . --- bac2/pgl/detail_ext_indi/ext_indi.tex | 85 +++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 bac2/pgl/detail_ext_indi/ext_indi.tex diff --git a/bac2/pgl/detail_ext_indi/ext_indi.tex b/bac2/pgl/detail_ext_indi/ext_indi.tex new file mode 100644 index 0000000..3501605 --- /dev/null +++ b/bac2/pgl/detail_ext_indi/ext_indi.tex @@ -0,0 +1,85 @@ +\documentclass{article} + +\usepackage[french]{babel} +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} + +\author{Debucquoy Anthony} +\title{Description du choix d'extension individiuelle - Messagerie} +\date{Octobre 2023} + +\begin{document} + +\maketitle +\newpage +\tableofcontents +\newpage + + +\section{Objectifs fixés par le projet} +Les éléments suivants sont ceux imposés par les consignes du projet. +\begin{enumerate} + \item Envois de messages d'étudiants à professeurs pour fixer un rendez-vous + \begin{itemize} + \item Proposition d'une ou plusieurs tranches de temps + \item validation ou refus d'une tranche de temps par le professeur + \item possibilité de laisser une note supplémentaire + \item export au format \verb|.ical| du rendez-vous + \end{itemize} + \item Création d'un forum de discussion lié au cours + \begin{itemize} + \item Abonnement automatique de tous les étudiants + \item Possibilité pour le professeur de poser un message + \item Possibilité de répondre à un message par les étudiants + \end{itemize} + \item Création de groupes de communication entre utilisateurs pour envois de messages +\end{enumerate} + +\section{Objectifs supplémentaires} +Ces éléments sont ceux que je souhaiterais ajouter au projet qui ne sont pas requis. +Cette liste peut évoluer au fil du temps. +Dans ce cas, j'aimerais implémenter ces points ci-dessous au minimum. +\begin{enumerate} + \item Possibilité de générer un poll dans un post sur un forum + \begin{itemize} + \item Multi-choix ou simple-choix + \end{itemize} + \item Réponse à un post par un étudiant en mode 'privé' ou 'public' + \item Chiffrement de messages privés + \item Affichage du statut envoyé/vu/non-vu pour un message et pour un post +\end{enumerate} + +\section{Réalisation} + +\subsection{Rendez-vous} + +Pour prendre un rendez-vous, je souhaite éviter que le planning du professeur soit mis à découvert +par ce système. De ce fait, par défaut, aucune plage horaire ne sera disponible pour un professeur. + +Le professeur doit explicitement mettre ses disponibilités dans le système. +Un étudiant mal intentionné ne pourrait alors pas utiliser la plateforme pour savoir quand le professeur +est dans son bureau où quand il ne l'est pas. + +\subsection{Forum de discussion} + +Il sera possible de répondre à un post d'un professeur en mode 'privé'. Grâce à ça, +un étudiant peut poser des questions à un professeur sans risquer de se faire copier par +les autres utilisateurs + +\subsection{Messages privés} + +Je souhaite que les messages entre utilisateurs ne soient pas lisibles par un potentiel administrateur +système. Le chiffrement des messages de manière robuste (par les standards actuels) est important. +J'apprécierais qu'il soit possible de chiffrer soi-même les messages à l'aide de GPG mais +et que le chiffrement se fasse donc coté client. +Le serveur n'aurait en aucuns cas la possibilité de déchiffrer les messages + +\section{Conclusion} + +Comme vous pouvez le voir à travers mes objectifs, je souhaite que mon extension soit dirigée par un +développement avec la sécurité des utilisateurs et de leurs données en tête +Le but serait qu'un utilisateur ne puisse pas profiter d'une fonctionnalité du site comme une manière +d'obtenir des informations sur un utilisateur que ça soit une personne avec des privilèges (sysadmin) ou non. + +\end{document} +