Merge remote-tracking branch 'refs/remotes/origin/bac2' into bac2
This commit is contained in:
		@ -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}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Reference in New Issue
	
	Block a user