Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
7 changes: 4 additions & 3 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@ version: '2'
name: arfp-io
services:
pages:
build: https://raw.githubusercontent.com/mdevoldere/edu-docker/develop/jekyll/Dockerfile
# build: .
# build: https://raw.githubusercontent.com/mdevoldere/edu-docker/develop/jekyll/Dockerfile
build: .
image: mdevoldere-jekyll-develop
container_name: arfpio
ports:
- 4000:4000
- 35728:35729
volumes:
- ./docs:/srv/jekyll
command: jekyll serve --force_polling --incremental --livereload
command: jekyll serve --force_polling --livereload

5 changes: 5 additions & 0 deletions docs/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,11 @@ defaults:
path: "tp/git"
values:
module: "git"
-
scope:
path: "tp/deploiement"
values:
module: "deploiement"
-
scope:
path: "tp/web"
Expand Down
4 changes: 4 additions & 0 deletions docs/_sass/_code.scss
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ blockquote {
margin: 2rem 1rem;
}

blockquote a {
color: #CC9;
}

.result {
border: 1px solid #aaccaa;
}
Expand Down
15 changes: 15 additions & 0 deletions docs/sitemap.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
---
[
{% for post in site.posts %}
{

"title" : "{{ post.title | escape }}",
"url" : "{{ site.baseurl }}{{ post.url }}",
"category" : "{{ post.category }}",
"tags" : "{{ post.tags | join: ', ' }}",
"date" : "{{ post.date }}"

} {% unless forloop.last %},{% endunless %}
{% endfor %}
]
41 changes: 41 additions & 0 deletions docs/tp/databases/sql/03-faq/correction/01-faq-creation-bdd.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
DROP DATABASE IF EXISTS minifaq;

CREATE DATABASE mini_faq;

USE mini_faq;

CREATE TABLE users(
user_id INT,
user_email VARCHAR(128) NOT NULL,
user_lastname VARCHAR(50) NOT NULL,
user_firstname VARCHAR(50) NOT NULL,
PRIMARY KEY(user_id),
UNIQUE(user_email)
);

CREATE TABLE questions(
question_id INT AUTO_INCREMENT,
question_date DATE NOT NULL,
question_label VARCHAR(255) NOT NULL,
question_response TEXT NOT NULL,
user_id INT NOT NULL,
PRIMARY KEY(question_id),
FOREIGN KEY(user_id) REFERENCES users(user_id)
);

CREATE TABLE categories(
category_name VARCHAR(30),
category_description VARCHAR(255),
category_order TINYINT NOT NULL,
PRIMARY KEY(category_name),
UNIQUE(category_order)
);

CREATE TABLE categories_questions(
question_id INT,
category_name VARCHAR(30),
PRIMARY KEY(question_id, category_name),
FOREIGN KEY(question_id) REFERENCES questions(question_id),
FOREIGN KEY(category_name) REFERENCES categories(category_name)
);

38 changes: 38 additions & 0 deletions docs/tp/databases/sql/03-faq/correction/02-faq-jeu-d-essai.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
use mini_faq;

INSERT INTO users
(user_id, user_email, user_lastname, user_firstname)
VALUES
(1, 'zorb@example.com', 'Rabbit', 'Zora'),
(2, 'patchouli@example.fr', 'Patchouli', 'Édouard'),
(3, 'eva.stt@example.com', 'Satiti', 'Eva');

INSERT INTO questions
(question_date, question_label, question_response, user_id)
VALUES
('2024-11-23', 'Dans MySQL, quel type de données permet de stocker des valeurs numériques dont le maximum est 127 ?', 'Le type TINYINT stocke des valeurs numériques comprises entre -128 et 127', 3),
('2024-11-23', 'Quels sont les principaux serveurs SQL gratuits ?', 'MySQL, MariaDB, PostgreSQL, SQLite', 2),
('2024-11-27', 'Que signifie le sigle SGBDR ?', 'Système de Gestion de Bases de Données Relationnelles', 1),
('2024-12-05', 'Que signifie le sigle SQL ?', 'Structured Query Language !', 2),
('2024-12-05', 'Que signifie le sigle noSQL ?', 'Not Only SQL !', 3);

INSERT INTO categories
(category_name, category_description, category_order)
VALUES
('Bases de données', 'Les questions relatives aux bases de données', 2),
('SQL', 'Les questions sur le langage SQL', 3),
('NoSQL', 'Les questions sur l’approche NoSQL', 4),
('PHP', 'Les questions relatives à PHP', 1);

INSERT INTO categories_questions
(question_id, category_name)
VALUES
(1, 'Bases de données'),
(1, 'SQL'),
(2, 'Bases de données'),
(2, 'SQL'),
(3, 'Bases de données'),
(4, 'Bases de données'),
(4, 'SQL'),
(5, 'Bases de données'),
(5, 'NoSQL');
52 changes: 52 additions & 0 deletions docs/tp/databases/sql/03-faq/correction/03-faq-selects.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
use mini_faq;

-- 1. Sélectionner tous les utilisateurs (identifiant, nom, prénom, email).

SELECT user_id, user_lastname, user_firstname, user_email FROM users;

-- 2. Sélectionner toutes les questions (date, intitulé, réponse, identifiant utilisateur) triées par date de la plus ancienne à la plus récente.

SELECT question_date, question_label, question_response, user_id FROM questions ORDER BY question_date DESC;

-- 3. Sélectionner les questions (identifiant, date, intitulé, réponse) de l’utilisateur n°2.

SELECT question_id, question_date, question_label, question_response FROM questions WHERE user_id = 2;

-- 4. Sélectionner les questions (date, intitulé, réponse, identifiant utilisateur) de l’utilisateur Eva Satiti.

/* Sans jointure */
SELECT question_date, question_label, question_response, questions.user_id
FROM questions,users
WHERE users.user_id = questions.user_id AND users.user_lastname = 'Satiti' AND users.user_firstname = 'Eva';

/* Avec jointure */
SELECT question_date, question_label, question_response, users.user_id
FROM questions
JOIN users ON questions.user_id = users.user_id
WHERE users.user_lastname = 'Satiti' AND users.user_firstname = 'Eva';

-- 5. Sélectionner les questions (identifiant, date, intitulé, réponse, identifiant utilisateur) dont l’intitulé contient “SQL”. Le résultat est trié par le titre et par ordre décroissant.

SELECT question_id, question_date, question_label, question_response
FROM questions
WHERE question_label LIKE '%SQL%'
ORDER BY question_label DESC;

-- 6. Sélectionner les catégories (nom, description) sans question associée.

SELECT categories.category_name, category_description FROM categories
LEFT JOIN categories_questions ON categories.category_name = categories_questions.category_name
WHERE categories_questions.category_name IS NULL;

-- 7. Sélectionner les questions triées par titre (ordre alphabétique) avec le nom et prénom de l’auteur (nécessite une jointure).

SELECT question_id, question_date, question_label, question_response, user_lastname, user_firstname
FROM questions
JOIN users ON users.user_id = questions.user_id;

-- 8. Sélectionner les catégories (nom) avec, pour chaque catégorie le nombre de questions associées (nécessite une jointure).

SELECT categories.category_name, COUNT(categories_questions.question_id) as nb_questions
FROM categories
LEFT JOIN categories_questions ON categories.category_name = categories_questions.category_name
GROUP BY categories.category_name;
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/* SUPPRIMER la base de données "rezo_social" */

DROP DATABASE IF EXISTS rezo_social;

/* CREER la base de données "rezo_social" */

CREATE DATABASE IF NOT EXISTS rezo_social;

/* Sélectionner la base de données */

USE rezo_social;

CREATE TABLE utilisateur
(
id INT PRIMARY KEY,
nom_utilisateur VARCHAR(32) NOT NULL UNIQUE,
email VARCHAR(128) UNIQUE NOT NULL
);

CREATE TABLE aimer
(
id INT,
pub_id INT,
PRIMARY KEY (id, pub_id)
);

CREATE TABLE publication
(
pub_id INT AUTO_INCREMENT PRIMARY KEY,
pub_date DATETIME NOT NULL,
pub_titre VARCHAR(255),
pub_contenu TEXT,
id INT
);

/* Modifier la table publication et y ajouter une clé étrangère */
ALTER TABLE publication ADD FOREIGN KEY (id) REFERENCES utilisateur(id);

ALTER TABLE aimer ADD CONSTRAINT fk_aimer_utilisateur FOREIGN KEY (id) REFERENCES utilisateur(id);

ALTER TABLE aimer ADD CONSTRAINT fk_aimer_publication FOREIGN KEY (pub_id) REFERENCES publication(pub_id);

/* ALTER TABLE aimer
ADD CONSTRAINT fk_aimer_utilisateur FOREIGN KEY (id) REFERENCES utilisateur(id),
ADD CONSTRAINT fk_aimer_publication FOREIGN KEY (pub_id) REFERENCES publication(pub_id); */

/* ALTER TABLE aimer DROP CONSTRAINT fk_aimer_utilisateur; */




Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
use rezo_social;

/* AJOUTER DES DONNEES DANS LA TABLE utilisateur */

INSERT INTO utilisateur
(id, nom_utilisateur, email)
VALUES
(1, 'Zorro', 'zorb@example.com'),
(2, 'Patchouli', 'patchouli@example.fr'),
(3, 'Eva', 'eva.stt@example.com');

/* AJOUTER DES DONNEES DANS LA TABLE publication */

INSERT INTO publication
(pub_date, pub_titre, pub_contenu, id)
VALUES
('2024-11-23 14:30', 'Il fait beau', 'Quel beau soleil aujourd’hui !', 1),
('2024-11-23 09:15', 'Les bonbons', "Les bonbons, c’est bon", 2),
('2024-11-27 08:17', 'Super resto', 'J’ai découvert un super restaurant hier soir.', 1),
('2024-12-05 17:52', 'Album disponible', 'Nouvel album de mon groupe préféré !', 2),
('2024-12-15 10:05', 'Aidez-moi', 'Je cherche une recette de gâteau au chocolat.', 3);

INSERT INTO aimer
(id, pub_id)
VALUES
(1, 5),
(2, 4),
(3, 3),
(2, 2),
(1, 1);

/*
SELECT * FROM utilisateur;
SELECT * FROM publication;
SELECT * FROM aimer;
*/
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
use rezo_social;

/* SELECTIONNER TOUTES LES COLONNES ET TOUTES LES LIGNES */
SELECT * FROM utilisateur;
SELECT * FROM publication;
SELECT * FROM aimer;

-- Sélectionner tous les utilisateurs (nom d’utilisateur + email).

SELECT nom_utilisateur, email FROM utilisateur;

-- Sélectionner toutes les publications (titre, date, contenu, id utilisateur)
-- triées par date de la plus récente à la plus ancienne.

SELECT pub_titre, pub_date, pub_contenu, id
FROM publication
ORDER BY pub_date DESC;

-- Sélectionner toutes les publications
-- triées par id utilisateur puis par date de la plus récente à la plus ancienne.

SELECT * FROM publication ORDER BY id ASC, pub_date DESC;

-- Sélectionner les publications (pub_id, date, titre) de l’utilisateur N°2.

SELECT pub_id, pub_date, pub_titre FROM publication
WHERE id = '2';

-- Sélectionner les publications (pub_id, titre, contenu) dont le titre contient la lettre “a”.
-- Le résultat est trié par le titre et par ordre décroissant.

SELECT pub_id, pub_titre, pub_contenu FROM publication
WHERE pub_titre LIKE '%a%'
ORDER BY pub_titre DESC;

-- Sélectionner les publications (pub_id, titre, contenu) dont le titre NE contient PAS la lettre “a”.
-- Le résultat est trié par le titre et par ordre décroissant.

SELECT pub_id, pub_titre, pub_contenu FROM publication
WHERE pub_titre NOT LIKE '%a%'
ORDER BY pub_titre DESC;

-- Sélectionner les utilisateurs (id, nom, email) dont l’adresse email se termine par “com”.

SELECT id, nom_utilisateur, email FROM utilisateur
WHERE email LIKE '%com';

-- Sélectionner les publications triées par titre (ordre alphabétique)
-- avec le nom d’utilisateur de l’auteur (nécessite une jointure).

-- Version sans jointure
SELECT * FROM publication, utilisateur
WHERE publication.id = utilisateur.id
ORDER BY publication.pub_titre;

-- Version avec jointure --> A privilégier pour des raisons de performances
SELECT * FROM publication
INNER JOIN utilisateur ON publication.id = utilisateur.id
ORDER BY publication.pub_titre;
5 changes: 5 additions & 0 deletions docs/tp/deploiement/docker/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
title: "Docker"
serie: "exercices"
index: 3
---
6 changes: 6 additions & 0 deletions docs/tp/deploiement/ftp/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
title: "Déploiement manuel"
serie: "manuel"
index: 1
---

Loading
Loading