Merge remote-tracking branch 'refs/remotes/origin/bac2' into bac2
This commit is contained in:
commit
3b2f4c84d7
@ -1,41 +1,44 @@
|
|||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
struct node{
|
typedef struct Node* LIFO;
|
||||||
struct node* prev;
|
|
||||||
|
struct Node{
|
||||||
|
struct Node* prev;
|
||||||
void* data;
|
void* data;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct node* LIFO;
|
LIFO mklifo();
|
||||||
|
void push(LIFO*, void*);
|
||||||
LIFO* mklifo ();
|
void* pop(LIFO*);
|
||||||
void push(LIFO* lst , void*);
|
|
||||||
void* pop(LIFO* lst);
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
char* t = "test";
|
int a = 5;
|
||||||
LIFO* lifo = mklifo();
|
int b = 12;
|
||||||
push(lifo, t);
|
LIFO lifo = mklifo();
|
||||||
printf("%s", (char *)pop(lifo));
|
|
||||||
|
|
||||||
|
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 mklifo(){
|
||||||
LIFO* ret = malloc(sizeof(struct node));
|
return calloc(1, sizeof(struct Node));
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void push(LIFO *lst , void *el){
|
void push(LIFO* lst, void* el){
|
||||||
LIFO* next = mklifo();
|
LIFO next = mklifo();
|
||||||
(*lst)->data = el;
|
(*lst)->data = el;
|
||||||
(*next)->prev = *lst;
|
next->prev = *lst;
|
||||||
lst = next;
|
*lst = next;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *pop(LIFO *lst){
|
void *pop(LIFO* lst){
|
||||||
void* el;
|
|
||||||
(*lst)->data = el;
|
|
||||||
*lst = (*lst)->prev;
|
*lst = (*lst)->prev;
|
||||||
return el;
|
return (*lst)->data;
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
53
bac2/os/chap2/ex6.c
Normal file
53
bac2/os/chap2/ex6.c
Normal 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;
|
||||||
|
}
|
85
bac2/pgl/detail_ext_indi/ext_indi.tex
Normal file
85
bac2/pgl/detail_ext_indi/ext_indi.tex
Normal 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}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user