Modifier ou supprimer un Articles du Blog TECH
sudo npm install -g pm2 Démarrage: ---------- cd /var/www/funigo pm2 start server.js --name funigo Les commandes ------------- pm2 status pm2 logs funigo pm2 restart funigo pm2 stop funigo
********************************************************************************** # Faire la sauvegarde sur la clé USB ********************************************************************************** Faire le tar compresser ----------------------- cd /var/www timestamp=$(date +%Y%m%d_%H%M%S) && \ sudo tar czf /media/fred/back_funigo/funigo_$timestamp.tgz \ --exclude='./funigo/node_modules' \ funigo Vérification ------------ fred@funigo:/var/www $ ls -lh /media/fred/back_funigo/fu* -rwxr-xr-x 1 root root 283M Feb 2 10:22 /media/fred/back_funigo/funigo_20260202_102234.tgz
fichier /etc/apache2/apache2.conf fred@funigo:~ $ sudo cat /etc/apache2/sites-available/funigo.conf # Redirection de HTTP vers HTTPS <VirtualHost *:80> ServerName www.funigo.fr ServerAlias funigo.fr # On redirige tout vers la version sécurisée Redirect permanent / https://www.funigo.fr/ </VirtualHost> # Configuration principale pour HTTPS (SSL) <VirtualHost *:443> ServerName www.funigo.fr ServerAlias funigo.fr # On adapte vos chemins Windows vers Linux SSLEngine on SSLCertificateFile "/etc/letsencrypt/live/funigo.fr/fullchain.pem" SSLCertificateKeyFile "/etc/letsencrypt/live/funigo.fr/privkey.pem" # Vos headers de sécurité [cite: 81, 82] Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains" <IfModule mod_headers.c> Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'sha256-8AFl6gs2BjOGxU9eZtoVWi4wLFMR4DkrvF+TlMsKORc='; style-src 'self' https://cdnjs.cloudflare.com 'unsafe-inline'; connect-src 'self' https://api.open-meteo.com https://api.exchangerate-api.com https://worldtimeapi.org https://cdn.jsdelivr.net; img-src 'self' data:; font-src 'self' https://cdnjs.cloudflare.com data:;" Header set X-Frame-Options "SAMEORIGIN" Header set X-Content-Type-Options "nosniff" Header set Referrer-Policy "no-referrer-when-downgrade" </IfModule> # Configuration du Reverse Proxy vers Node.js ProxyPass /.well-known ! ProxyPreserveHost On ProxyRequests Off ProxyPass / http://localhost:5000/ ProxyPassReverse / http://localhost:5000/ # Chemins des logs version Linux ErrorLog ${APACHE_LOG_DIR}/funigo-error.log CustomLog ${APACHE_LOG_DIR}/funigo-access.log common </VirtualHost> ******************************************************************************************************************************* Activer les modules Apache ******************************************************************************************************************************* 1. Préparer le terrain : Activer les modules Apache Sur Windows, vous activiez les modules avec des lignes LoadModule directement dans le fichier. Sur Raspberry Pi, c'est bien plus simple ! On utilise des commandes pour "allumer" les options. Ouvrez votre terminal et tapez ces commandes pour activer ce dont votre configuration a besoin: sudo a2enmod ssl (Pour le cadenas vert) sudo a2enmod proxy proxy_http (Pour parler à votre app Node.js) sudo a2enmod headers (Pour la sécurité renforcée) sudo a2enmod rewrite (Pour les redirections) sudo a2enmod ssl sudo a2enmod proxy proxy_http sudo a2enmod headers sudo a2enmod rewrite sudo systemctl restart apache2 fred@funigo:~ $ sudo a2ensite funigo.conf Enabling site funigo. To activate the new configuration, you need to run: systemctl reload apache2 On copie les fichiers .pem de window vers linux sudo cp ~/apache-file/*.pem /etc/letsencrypt/live/funigo.fr fred@funigo:~ $ sudo systemctl reload apache2
MariaDB [jap]> show FULL TABLES where table_type = 'view'; +---------------+------------+ | Tables_in_jap | Table_type | +---------------+------------+ | v_quiz_ora | VIEW | | vue_quiz_2 | VIEW | | vue_quiz_N2 | VIEW | | vue_quiz_N4 | VIEW | | vue_quiz_N5 | VIEW | | vue_quiz_n1 | VIEW | | vue_quiz_n2 | VIEW | | vue_quiz_n3 | VIEW | | vue_quiz_n4 | VIEW | +---------------+------------+ 9 rows in set (0.001 sec) MariaDB [jap]> drop view vue_quiz_N5; Query OK, 0 rows affected (0.006 sec)
Ordinateur\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL ImagePath --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" MySQL
Ouvrir un fichier dans un onglet
Faire clignoter le paragraphe <p style="animation: blink 2s infinite;"><br>Cliquer sur une ligne pour avoir des détails<br></p> Blink est l’identifiant qui permet la définition du keyframe dans le css Dans le css définition de @keyframes blink { 0% { opacity: 1; } 20% { opacity: 0; } 100% { opacity: 1; } }
git add * git commit -m "202509141800 avec la documentation mise à jour" git branch -M main git push -u origin main git log --oneline History
Pour insérer des retours à la ligne dans une colonne texte (comme ARTICLE ou CONTENU) dans MySQL, tu peux utiliser la séquence d’échappement qui représente un saut de ligne. Par exemple : INSERT INTO funigo_blog (TITRE, ARTICLE, DATE_CREAT, DATE_MODIF) VALUES ('Titre de l'article', 'Première ligne Deuxième ligne Troisième ligne', '2025-09-10', '2025-09-10'); Autre méthode avec la fonction CHAR() pour insérer un saut de ligne (code ASCII 10) : INSERT INTO funigo_blog (TITRE, ARTICLE, DATE_CREAT, DATE_MODIF) VALUES ('Titre', CONCAT('Première ligne', CHAR(10), 'Deuxième ligne', CHAR(10), 'Troisième ligne'), '2025-09-10', '2025-09-10');
mysql> SELECT DISTINCT annee, niveau FROM quiz; +-------+-----------+ | annee | niveau | +-------+--------+ | 1991 | N3 | | 1991 | N4 | | 1993 | N4 | | 1992 | N3 | | 1992 | N4 | | 1991 | N2 | | 1993 | N3 | | 1994 | N4 | | 1992 | N2 | +-------+--------+
INSERT INTO vocab_char (niveau, kana, kanji, francais) VALUES ('N5', 'つかう', '使う', 'employer, utiliser'); N5 つかう 使う employer, utiliser select * from vocab_char where kanji = '使う'; mysql> select * from vocab_char where kanji = '使う'; +------------+--------+-----------+--------+------------------------+ | voca_index | niveau | kana | kanji | francais | +------------+--------+-----------+--------+------------------------+ | 26312 | N5 | つかう | 使う | employer, utiliser | +------------+--------+-----------+--------+-------------------------+ 1 row in set (0.00 sec)
PS C:WINDOWSsystem32> mysql --default-character-set=utf8mb4 -u root -p Enter password: **********
Créer une nouvelle table temporaire avec la même structure (sauf l'ID) : Nous allons créer une table temporaire pour y stocker les données avec les nouveaux IDs. CREATE TABLE quiz_new ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, ANNEE INT, NIVEAU VARCHAR(2), TEXTE TEXT, REP_OK TEXT, QUESTION TEXT, REP1 TEXT, REP2 TEXT, REP3 TEXT, REP4 TEXT ); Insérer toutes les données de l'ancienne table dans la nouvelle, en générant de nouveaux IDs consécutifs : C'est ici que nous utilisons une variable utilisateur pour assigner un id consécutif à chaque ligne lors de l'insertion. SET @row_number = 0; -- Initialiser le compteur INSERT INTO quiz_new (ANNEE, NIVEAU, TEXTE, REP_OK, QUESTION, REP1, REP2, REP3, REP4) SELECT ANNEE, NIVEAU, TEXTE, REP_OK, QUESTION, REP1, REP2, REP3, REP4 FROM quiz ORDER BY id; -- Il est important de trier pour que les nouveaux IDs reflètent un ordre logique si désiré Note : Nous ne spécifions pas la colonne id dans l'INSERT de quiz_new, car elle est AUTO_INCREMENT et générera automatiquement les IDs à partir de 1. ORDER BY id est important ici pour s'assurer que si vous aviez des IDs non consécutifs dans l'ancienne table, les nouvelles IDs suivent l'ordre des anciennes IDs. Supprimer l'ancienne table quiz : DROP TABLE quiz; Renommer la nouvelle table quiz_new en quiz : ALTER TABLE quiz_new RENAME TO quiz;
Réinitialiser le compteur sans vider la table (uniquement si la table est déjà vide mais le compteur est élevé) Si vous avez déjà vidé la table avec DELETE FROM mais que le compteur n'a pas été réinitialisé : SQL -- 1. Vérifiez que la table est bien vide : SELECT COUNT(*) FROM quiz; -- Doit retourner 0 -- 2. Réinitialiser le compteur AUTO_INCREMENT à 1 ALTER TABLE quiz AUTO_INCREMENT = 1; -- 3. Ensuite, chargez vos données LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/quiz.csv' INTO TABLE quiz FIELDS TERMINATED BY ',' ENCLOSED BY '"' -- Ajustez cette ligne si vos champs ne sont pas entourés de guillemets LINES TERMINATED BY ' ' IGNORE 1 ROWS -- Ajustez cette ligne si votre CSV n'a pas d'en-tête ( @dummy_id, -- Lit le premier champ du CSV dans une variable temporaire non utilisée ANNEE, NIVEAU, TEXTE, REP_OK, QUESTION, REP1, REP2, REP3, REP4 );
ALTER TABLE quiz MODIFY question TEXT;
LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/quiz.csv' INTO TABLE quiz FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY ' ' IGNORE 1 ROWS;
DELETE FROM quiz; : Supprime toutes les lignes, mais ne réinitialise pas le compteur AUTO_INCREMENT. TRUNCATE TABLE quiz; : Supprime toutes les lignes et réinitialise le compteur AUTO_INCREMENT à sa valeur de départ (généralement 1). C'est beaucoup plus rapide pour vider une table.
SELECT * FROM quiz INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/quiz_20250907.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY ' ';
mysql> SHOW VARIABLES LIKE 'secure_file_priv'; +------------------+------------------------------------------------+ | Variable_name | Value | +------------------+------------------------------------------------+ | secure_file_priv | C:ProgramDataMySQLMySQL Server 8.0Uploads | +------------------+------------------------------------------------+ 1 row in set, 1 warning (0.00 sec)
mysql> SHOW VARIABLES LIKE 'char%'; +--------------------------+---------------------------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------------------------+ | character_set_client | cp850 | | character_set_connection | cp850 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | cp850 | | character_set_server | utf8mb4 | | character_set_system | utf8mb3 | | character_sets_dir | C:Program FilesMySQLMySQL Server 8.0sharecharsets | +--------------------------+---------------------------------------------------------+ 8 rows in set, 1 warning (0.01 sec) Se logger avec powershell Mysql -u root -p --default-character-set=utf8mb4