Compare commits

...

6 Commits

Author SHA1 Message Date
Valentin Moguérou 42c3e6c49b Ajout des données 2023-12-24 23:45:20 +01:00
Valentin Moguérou db52900ad8 Merge remote-tracking branch 'origin/dev' into dev
# Conflicts:
#	secret_santa.html
2023-12-24 23:43:38 +01:00
Valentin Moguérou 5c8a9e5a02 Merge remote-tracking branch 'origin/dev' into dev
# Conflicts:
#	secret_santa.html
2023-12-24 23:42:20 +01:00
Valentin Moguérou ceb25249e0 Ajout du graphe Secret Santa 2023-12-24 23:41:46 +01:00
Valentin Moguérou b09409711d Ajout du graphe Secret Santa 2023-12-24 18:21:13 +01:00
Valentin Moguérou 7ccd92550b Initial commit 2023-12-24 15:23:45 +01:00
19 changed files with 532 additions and 0 deletions

20
M103/index.html Normal file
View File

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Bienvenue en M103</title>
<style>
body {
background-image: url("/M103/salle.jpg");
background-size: 100%;
background-attachment: scroll;
}
</style>
</head>
<body>
<h1>Bienvenue en M103.</h1>
<a href="/M103/deconnexion">Se déconnecter</a>
</body>
</html>

10
M103/ouvrir.html Normal file
View File

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Ouverture de la porte</title>
</head>
<body>
Bravo, la porte est ouverte.
</body>
</html>

11
M103/recale.html Normal file
View File

@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Porte fermée.</title>
</head>
<body>
<h1>La porte est fermée ! La prochaine fois : lisez les instructions.</h1>
<img src="/res/door_safety.png">
</body>
</html>

BIN
M103/salle.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 481 KiB

1
M103/secret.txt Normal file
View File

@ -0,0 +1 @@
X n'est pas mort.

BIN
favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

55
index.html Normal file
View File

@ -0,0 +1,55 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="/res/navigator.css" rel="stylesheet" type="text/css">
<link href="/res/style.css" rel="stylesheet" type="text/css">
<title>MP2I. vms?</title>
</head>
<body>
<header>
<div class="unified_navigator">
<a class="logo" href="https://mp2i-vms.fr"><img src="https://mp2i-vms.fr/res/icon.png"><strong>mp2i-vms.fr</strong></a>
<div class="link"><a href="https://mp2i-vms.fr/pages.html">Pages personnelles</a></div>
<div class="link"><a href="https://git.mp2i-vms.fr/">Git</a></div>
<div class="link"><a href="https://play.mp2i-vms.fr/">Minecraft</a></div>
</div>
</header>
<main>
<h1>Le site des MP2I. V.M.S ?</h1>
<blockquote>Vous me suivez ? oui, non, peut être ?</blockquote>
<h2>Pourquoi la MP2I est la meilleure filière ?</h2>
<p>Dans la jungle inexplorée de Saint Louis se trouve une classe spéciale, selon certains, ils ne se lavent pas selon d'autres ils ont choisi cette filière dans le seul but d'échapper à la chimie. Rien n'est certain mais il demeure que la M103 est occupée par une espèce bien étrange où cohabitent des espèces étranges qui rédigent leurs systèmes avec des inconnues en UwU ou encore résolvent des équations avec des congruences douteuses qui sait on peut même en trouver qui cherchent a cracker les codes d'un site de prof dans le seul but de voler une mascotte. yay c'est bô</p>
<ol>
<li>Pas de chimie</li>
<li>Pas de chimie</li>
<li>Pas de chimie (<span style="text-decoration:overline;">PCSI</span>)</li>
<li>De l'informatique</li>
<li>Autant de maths que les MPSI, mais mode VMS activé.</li>
</ol>
<p>
$ ssh www.mp2i-vms.fr<br>
(vms)$ cat index.html
</p>
<div class="porte">
<a href="/M103">Entrer en M103.</a>
</div>
</main>
<footer>
&copy; 2023 mp2i-vms.fr
</footer>
</body>
</html>
<!-- normal que tout le monde ai accès au /vms ?-->

39
pages.html Normal file
View File

@ -0,0 +1,39 @@
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="/res/navigator.css" rel="stylesheet" type="text/css">
<link href="/res/style.css" rel="stylesheet" type="text/css">
<title>Index des pages personnelles</title>
</head>
<body>
<header>
<div class="unified_navigator">
<a class="logo" href="https://mp2i-vms.fr"><img src="https://mp2i-vms.fr/res/icon.png"><strong>mp2i-vms.fr</strong></a>
<div class="link"><a href="https://mp2i-vms.fr/pages.html">Pages personnelles</a></div>
<div class="link"><a href="https://git.mp2i-vms.fr/">Git</a></div>
<div class="link"><a href="https://play.mp2i-vms.fr/">Minecraft</a></div>
</div>
</header>
<main>
<h1>Index des pages personnelles</h1>
<ul>
<li><a href="/~alexandre/">Alexandre Aboujaib</a></li>
<li><a href="/~arthur/">Arthur Boit</a></li>
<li><a href="/~joseph/">Joseph Daguin</a></li>
<li><a href="/~valentin/">Valentin Moguérou</a></li>
<li><a href="/~matheo/">Matheo Mohellebi</a></li>
<li><a href="/~zaitara/">Corentin Ottavi</a></li>
<li><a href="/~gaetan/">Gaetan Roux</a></li>
<li><a href="/~alexian/">Alexian Ponce</a></li>
<li><a href="/~stacky/">Stacky Stackerman</a></li>
<li><a href="/~benoit/">Benoit Vandroux</a></li>
<li><a href="/~thibaud/">Thibaud Veyssière</a></li>
</ul>
</main>
<footer>
&copy; 2023 mp2i-vms.fr
</footer>
</body>
</html>

27
porte.html Normal file
View File

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Entrer en M103</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="/res/style.css" rel="stylesheet" type="text/css">
</head>
<body>
<main class="login">
<h1>Authentification requise.</h1>
<p>(désolé pour les non-MP2I qui veulent faire de l'espionnage, vous vous attaquez à la mauvaise filière.)</p>
<form method="POST" action="/M103/connexion">
<div class="champ">
<label for="username">Nom d'utilisateur :</label>
<input id="username" type="text" name="httpd_username" value="" />
</div>
<div class="champ">
<label for="password">Mot de passe: </label>
<input id="password" type="password" name="httpd_password" value="" />
</div>
<input type="submit" name="login" value="Login" />
</form>
</main>
</body>
</html>

BIN
res/Hack-Bold.ttf Normal file

Binary file not shown.

BIN
res/Hack-BoldItalic.ttf Normal file

Binary file not shown.

BIN
res/Hack-Italic.ttf Normal file

Binary file not shown.

BIN
res/Hack-Regular.ttf Normal file

Binary file not shown.

BIN
res/door_safety.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

BIN
res/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

36
res/navigator.css Normal file
View File

@ -0,0 +1,36 @@
.unified_navigator {
font-family: sans-serif;
font-size: 1em;
padding: 10px 50px;
display: flex;
justify-content: flex-start;
gap: 40px;
background: rgb(42,25,93);
background: linear-gradient(90deg, rgba(42,25,93,1) 8%, rgba(60,11,89,1) 49%, rgba(34,0,71,1) 82%);
color: white;
box-shadow: 0 5px 5px rgba(32,32,32,127);
line-height: 3em;
}
@media screen and (max-size: 800px)
{
.unified_navigator {
flex-direction: column;
}
}
.unified_navigator a:link, .unified_navigator a:visited {
color: #dddddd;
text-decoration: none;
font-weight: 500;
}
.unified_navigator a:hover {
color: #ffffff;
}
.unified_navigator img {
height: 2em;
vertical-align: middle;
margin-right: 1em;
}

118
res/style.css Normal file
View File

@ -0,0 +1,118 @@
/*
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
*/
@font-face {
font-family: Hack;
src: url("/res/Hack-Regular.ttf");
}
@font-face {
font-family: Hack;
font-weight: bold;
src: url("/res/Hack-Bold.ttf");
}
@font-face {
font-family: Hack;
font-style: italic;
src: url("/res/Hack-Italic.ttf");
}
@font-face {
font-family: Hack;
font-weight: bold;
font-style: italic;
src: url("/res/Hack-BoldItalic");
}
body {
background-color: #222;
color: white;
font-family: "Flexi IBM VGA True", monospace;
margin: 0;
}
main {
margin: 20px;
}
footer {
margin-top: 50px;
text-align: center;
}
p, ul, ol {
margin: 20px 0;
}
a:link, a:visited {
color: white;
}
main a:hover {
background-color: green;
}
::selection {
background-color: green;
}
.porte {
display: block;
margin: 15px;
text-align: center;
font: inherit;
}
.porte a:link, .porte a:visited, .login input[type=submit] {
color: white;
padding: 10px;
border: 2px solid white;
font: inherit;
background-color: #222;
}
.porte a:hover {
background-color: #333;
}
main.login {
width: clamp(350px, 50%, 1000px);
margin: auto;
}
main.login h1 {
text-align: center;
}
form {
width: clamp(300px, 40%, 400px);
margin: 50px auto;
text-align: center;
}
form .champ {
margin: 15px 0;
}
form .champ label {
display: block;
margin: 5px 0;
}
input[type=text], input[type=password] {
box-sizing: border-box;
display: block;
padding: 10px;
background-color: #222;
color: white;
width: 100%;
border: 1px solid white;
font-family: inherit;
}

46
santa.csv Normal file
View File

@ -0,0 +1,46 @@
Source,Cible
Matteo,Pierrick
Pierrick,Mathéo
Mathéo,Jérémie
Jérémie,Youssef
Youssef,Roman R
Roman R,Célian
Célian,Thibaud
Thibaud,Anas
Anas,Aurélien
Aurélien,Dany
Dany,Yassine
Yassine,Simon
Simon,Lucas
Lucas,Luan
Luan,Katell
Katell,Grégoire
Grégoire,Mithushan
Mithushan,Marine
Marine,Evelyn
Evelyn,Mihnea
Mihnea,Louis
Louis,Nicolas
Nicolas,Gaëtan
Gaëtan,Mathis
Mathis,Adrien
Adrien,Alexian
Alexian,Matthias
Matthias,Maël
Maël,FG
FG,Amélie
Amélie,Corentin
Corentin,Dylan
Dylan,Joseph
Joseph,Valentin
Valentin,Roman B
Roman B,Jonathan
Jonathan,Hao
Hao,Benoît
Benoît,Gabriel
Gabriel,Lina
Lina,Alexandre
Alexandre,Raphaël
Raphaël,Arthur
Arthur,George
George,Matteo
1 Source Cible
2 Matteo Pierrick
3 Pierrick Mathéo
4 Mathéo Jérémie
5 Jérémie Youssef
6 Youssef Roman R
7 Roman R Célian
8 Célian Thibaud
9 Thibaud Anas
10 Anas Aurélien
11 Aurélien Dany
12 Dany Yassine
13 Yassine Simon
14 Simon Lucas
15 Lucas Luan
16 Luan Katell
17 Katell Grégoire
18 Grégoire Mithushan
19 Mithushan Marine
20 Marine Evelyn
21 Evelyn Mihnea
22 Mihnea Louis
23 Louis Nicolas
24 Nicolas Gaëtan
25 Gaëtan Mathis
26 Mathis Adrien
27 Adrien Alexian
28 Alexian Matthias
29 Matthias Maël
30 Maël FG
31 FG Amélie
32 Amélie Corentin
33 Corentin Dylan
34 Dylan Joseph
35 Joseph Valentin
36 Valentin Roman B
37 Roman B Jonathan
38 Jonathan Hao
39 Hao Benoît
40 Benoît Gabriel
41 Gabriel Lina
42 Lina Alexandre
43 Alexandre Raphaël
44 Raphaël Arthur
45 Arthur George
46 George Matteo

169
secret_santa.html Normal file
View File

@ -0,0 +1,169 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Graphe du Secret Santa</title>
<title>D3.js Interactive Cycle Graph with Alternating Curved Arrows</title>
<script src="https://d3js.org/d3.v5.min.js"></script>
<style>
body, html {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
svg {
display: block;
}
.node {
cursor: pointer;
}
.legend text {
font-size: 10px;
font-family: sans-serif;
text-anchor: start;
}
</style>
</head>
<body>
<script>
// Données du graphe
d3.csv("santa.csv").then(function(data) {
// Dimensions du SVG en plein écran
const width = window.innerWidth;
const height = window.innerHeight;
const uniqueNames = data.map(d => d.Source);
// Création des nœuds avec des positions initiales
const nodes = uniqueNames.map((name, index) => ({id: index, label: name}));
const links = data.map((d, i) => ({
source: i,
target: uniqueNames.indexOf(d.Cible)
}));
links.push({ source: 0, target: 1 });
// Création de la force de simulation avec une force de répulsion plus forte
const simulation = d3.forceSimulation(nodes)
.force("charge", d3.forceManyBody().strength(-300))
.force("link", d3.forceLink(links).distance(100))
.force("center", d3.forceCenter(width / 2, height / 2))
.force("collide", d3.forceCollide().radius(20))
.force("x", d3.forceX().strength(0.1).x(width / 2))
.force("y", d3.forceY().strength(0.1).y(height / 2));
// Création du SVG avec zoom
const svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height)
.call(d3.zoom().on("zoom", function () {
svg.attr("transform", d3.event.transform)
}))
.append("g");
// Ajout des flèches
svg.append("defs").selectAll("marker")
.data(["arrow"])
.enter().append("marker")
.attr("id", function (d) {
return d;
})
.attr("viewBox", "0 -5 10 10")
.attr("refX", 18)
.attr("refY", 0)
.attr("markerWidth", 4)
.attr("markerHeight", 4)
.attr("orient", "auto")
.append("path")
.attr("d", "M0,-5L10,0L0,5")
.attr("class", "arrow-head");
// Ajout des liens
const link = svg.selectAll("path")
.data(links)
.enter().append("path")
.attr("fill", "none")
.attr("stroke", "#ee288b")
.attr("stroke-width", "2")
.attr("marker-end", "url(#arrow)");
// Ajout des nœuds
const node = svg.selectAll(".node")
.data(nodes)
.enter().append("g")
.attr("class", "node")
.call(d3.drag()
.on("start", dragstarted)
.on("drag", dragged)
.on("end", dragended));
node.append("circle")
.attr("r", 3) // Taille des points noirs
.attr("fill", "#000"); // Couleur des points noirs
// Ajout des légendes pour les nœuds
const legend = svg.selectAll(".legend")
.data(nodes)
.enter().append("g")
.attr("class", "legend")
.attr("transform", function (d) {
return "translate(" + (d.x + 10) + "," + (d.y) + ")";
});
legend.append("text")
.text(function (d) {
return d.label;
});
// Met à jour la position des éléments à chaque itération de la simulation
simulation.on("tick", function () {
link.attr("d", function (d) {
const dx = d.target.x - d.source.x,
dy = d.target.y - d.source.y,
dr = Math.sqrt(dx * dx + dy * dy),
sweep = 1;
return "M" + d.source.x + "," + d.source.y +
"A" + dr + "," + dr + " 0 0," + sweep + " " + d.target.x + "," + d.target.y;
});
node.attr("transform", function (d) {
return "translate(" + d.x + "," + d.y + ")";
});
legend.attr("transform", function (d) {
return "translate(" + (d.x + 10) + "," + (d.y) + ")";
});
});
// Fonctions de gestion du glisser-déposer
function dragstarted(d) {
if (!d3.event.active) simulation.alphaTarget(0.3).restart();
d.fx = d.x;
d.fy = d.y;
}
function dragged(d) {
d.fx = d3.event.x;
d.fy = d3.event.y;
}
function dragended(d) {
if (!d3.event.active) simulation.alphaTarget(0);
d.fx = null;
d.fy = null;
}
});
</script>
</body>
</html>