Merge remote-tracking branch 'refs/remotes/origin/bac2' into bac2

This commit is contained in:
Debucquoy 2023-11-08 09:43:08 +01:00
commit 3b2f4c84d7
Signed by: tonitch
GPG Key ID: A78D6421F083D42E
4 changed files with 165 additions and 24 deletions

View File

@ -1,41 +1,44 @@
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
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();
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;
*lst = (*lst)->prev;
return el;
return (*lst)->data;
}

Binary file not shown.

53
bac2/os/chap2/ex6.c Normal file
View File

@ -0,0 +1,53 @@
#include <stdlib.h>
#include <stdio.h>
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;
}

View File

@ -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}