Drapeau Français

Funigo

Drapeau Japonais

Météo Paris

Temp: - °C

Nuages: - %

Pluie: - mm

Météo Tokyo

Temp: - °C

Nuages: - %

Pluie: - mm

Taux de Change

1 EUR
    =
- JPY

Heure Paris

--:--

Heure Tokyo

--:--

Modifier ou supprimer un Articles du Blog TECH

Activer l'AUTO_INCREMENT

MariaDB [jap]> desc note_tech; +---------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | type | varchar(50) | YES | | NULL | | | titre | varchar(255) | YES | | NULL | | | contenu | text | YES | | NULL | | | image | varchar(255) | YES | | NULL | | | fichier | varchar(255) | YES | | NULL | | +---------+--------------+------+-----+---------+-------+ 6 rows in set (0.001 sec) MariaDB [jap]> ALTER TABLE note_tech MODIFY id INT(11) NOT NULL AUTO_INCREMENT; Query OK, 26 rows affected (0.049 sec) Records: 26 Duplicates: 0 Warnings: 0 MariaDB [jap]> desc note_tech; +---------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | type | varchar(50) | YES | | NULL | | | titre | varchar(255) | YES | | NULL | | | contenu | text | YES | | NULL | | | image | varchar(255) | YES | | NULL | | | fichier | varchar(255) | YES | | NULL | | +---------+--------------+------+-----+---------+----------------+ 6 rows in set (0.001 sec)

PM2 Surveillance et redémarrage de funigo

PM2 est conçu précisément pour surveiller tes processus et les redémarrer instantanément s'ils crashent, sans avoir besoin d'un script Cron externe. Voici comment configurer cela proprement sur ton Raspberry Pi : 1. La méthode recommandée : PM2 Autostart Au lieu de vérifier toutes les minutes avec Cron, laisse PM2 gérer le redémarrage au boot du Raspberry et la surveillance en temps réel. Lance ton application : Bash cd /var/www/funigo pm2 start server.js --name "funigo" Génère le script de démarrage automatique : Bash pm2 startup Cette commande va t'afficher une ligne de code commençant par sudo env PATH.... Copie et colle cette ligne dans ton terminal et valide. Sauvegarde la configuration actuelle : Bash pm2 save Désormais, si ton app crash, PM2 la relance immédiatement. Si ton Raspberry redémarre, PM2 relance funigo tout seul. Logs d'une application spécifique : pm2 logs <app_name_ou_id> Afficher seulement les dernières lignes (ex: 200) : pm2 logs --lines 200

Compresser fichier JPG

PS C:\Fichiers_Users\funigo\doc\ps1> powershell -ExecutionPolicy Bypass -File .\Optimize-Jpg.ps1 -Path "C:\funigo fichier\photo_jpg_to_webp\Photo-shikoku" param ( [Parameter(Mandatory=$true)] [string]$Path, [int]$Quality = 75 # Qualité par défaut (75 est idéal pour le web) ) # 1. Localisation de ImageMagick (méthode robuste) $magickExe = Get-Command magick -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Source if (-not $magickExe) { $defaultPath = "C:\Program Files\ImageMagick-7.1.2-Q16-HDRI\magick.exe" if (Test-Path $defaultPath) { $magickExe = $defaultPath } } if (-not $magickExe) { Write-Error "ImageMagick n'est pas détecté." return } # 2. Vérification du répertoire if (-not (Test-Path $Path)) { Write-Error "Le répertoire spécifié n'existe pas." return } # 3. Récupérer les fichiers JPG et JPEG $images = Get-ChildItem -Path $Path -File | Where-Object { $_.Extension -match "^\.(jpg|jpeg)$" } if ($images.Count -eq 0) { Write-Host "Aucun fichier .jpg ou .jpeg trouvé dans : $Path" -ForegroundColor Yellow return } Write-Host "Optimisation de $($images.Count) fichiers JPG (Qualité: $Quality%)..." -ForegroundColor Cyan foreach ($img in $images) { Write-Host "Traitement de : $($img.Name)..." -NoNewline # Calcul de la taille avant $oldSize = $img.Length / 1KB # Exécution de l'optimisation # -strip : enlève les métadonnées # -interlace Plane : crée un JPG progressif (mieux pour le web) # -sampling-factor 4:2:0 : standard de compression couleur & $magickExe "$($img.FullName)" -strip -quality $Quality -interlace Plane -sampling-factor 4:2:0 "$($img.FullName)" # Calcul de la taille après $newSize = (Get-Item $img.FullName).Length / 1KB $gain = [Math]::Round($oldSize - $newSize, 2) $percent = [Math]::Round(($gain / $oldSize) * 100, 1) Write-Host " Terminé (Gain: $gain KB / -$percent%)" -ForegroundColor Green } Write-Host "`nOptimisation terminée !" -ForegroundColor Cyan

Compresser photos PNG

PS C:\Fichiers_Users\funigo\doc\ps1> powershell -ExecutionPolicy Bypass -File .\Optimize-Png.ps1 -Path "Nom du répertoire des photos à compresser"

Convertir JPG en webp

PS C:\Users\fredr\Downloads\photo_jpg_to_webp> powershell -ExecutionPolicy Bypass -File .\photo_jpg_to_webp.ps1 -Path "C:\Users\fredr\Downloads\photo_jpg_to_webp" Utilisation de : C:\Program Files\ImageMagick-7.1.2-Q16-HDRI\magick.exe Début de la conversion de 15 images... Conversion : Enoshima.JPG -> Enoshima.webp Conversion : Kamakura.JPG -> Kamakura.webp Conversion : Kobe5.JPG -> Kobe5.webp Conversion : Kyoto.jpg -> Kyoto.webp Conversion : Kyoto1.jpg -> Kyoto1.webp Conversion : Kyoto5.jpg -> Kyoto5.webp Conversion : Kyoto6.jpg -> Kyoto6.webp Conversion : Nara4.JPG -> Nara4.webp Conversion : Nara7.JPG -> Nara7.webp Conversion : Nikko8.JPG -> Nikko8.webp Conversion : Osaka5.JPG -> Osaka5.webp Conversion : Osaka6.JPG -> Osaka6.webp Conversion : sendai3.JPG -> sendai3.webp Conversion : sendai4.JPG -> sendai4.webp Conversion : sendai5.JPG -> sendai5.webp Terminé ! Vos images WebP sont prêtes.

init git

git init hint: Using 'master' as the name for the initial branch. This default branch name hint: is subject to change. To configure the initial branch name to use in all hint: of your new repositories, which will suppress this warning, call: hint: hint: git config --global init.defaultBranch <name> hint: hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and hint: 'development'. The just-created branch can be renamed via this command: hint: hint: git branch -m <name> Initialized empty Git repository in /var/www/funigo/.git/ ls -ltr /var/www/funigo/.git/ total 32 drwxrwxr-x 2 fred fred 4096 Feb 16 17:40 info drwxrwxr-x 2 fred fred 4096 Feb 16 17:40 hooks -rw-rw-r-- 1 fred fred 73 Feb 16 17:40 description drwxrwxr-x 2 fred fred 4096 Feb 16 17:40 branches drwxrwxr-x 4 fred fred 4096 Feb 16 17:40 refs drwxrwxr-x 4 fred fred 4096 Feb 16 17:40 objects -rw-rw-r-- 1 fred fred 23 Feb 16 17:40 HEAD -rw-rw-r-- 1 fred fred 92 Feb 16 17:40 config more /var/www/funigo/.git/config [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = https://github.com/fredrob622/funigo_google_ai.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "main"] remote = origin merge = refs/heads/main git remote -v origin https://github.com/fredrob622/funigo_google_ai.git (fetch) origin https://github.com/fredrob622/funigo_google_ai.git (push) git add * git commit -m "202509141800 avec la documentation mise à jour" git branch -M main git push -u origin main git log --oneline

Installation de ComfyUI

Installation de ComfyUI Étape 1 : Télécharger ComfyUI powershellcd C:\Users\fredr git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI Étape 2 : Installer PyTorch (CPU version) python -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu Étape 3 : Installer les dépendances de ComfyUI python -m pip install -r requirements.txt Étape 4 : Installer torch-directml (pour Intel Arc) python -m pip install torch-directml Étape 5 : Lancer ComfyUI python main.py --directml

Voir le CPU lamémoire et la carte graphic

Voir la mémoire --------------- $os = Get-CimInstance Win32_OperatingSystem [PSCustomObject]@{ 'RAM totale (GB)' = [math]::Round($os.TotalVisibleMemorySize/1MB,2) 'RAM libre (GB)' = [math]::Round($os.FreePhysicalMemory/1MB,2) 'RAM utilisée (%)' = [math]::Round((1 - ($os.FreePhysicalMemory/$os.TotalVisibleMemorySize))*100,2) } Voir le processeur et la mémoire -------------------------------- Get-ComputerInfo | Select-Object CsProcessors, CsTotalPhysicalMemory CsProcessors CsTotalPhysicalMemory ------------ --------------------- {Intel(R) Core(TM) Ultra 9 185H} 33863876608 PS C:\Users\fredr> Get-CimInstance Win32_ComputerSystem | Select-Object Manufacturer, Model Manufacturer Model ------------ ----- GEEKOM GT1 Mega PS C:\Users\fredr> Get-CimInstance Win32_VideoController | Select-Object Name, AdapterRAM Name AdapterRAM ---- ---------- Intel(R) Arc(TM) Graphics 2147479552

PROD nodejsd pm2

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

Sauvegarde funigo sur USB

********************************************************************************** # 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

Apache configuration

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

Supprimer une vue

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)

Mysql configuration du service MYSQL par modification de la clé

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

Ouvrir un fichier dans un onglet

Faire clignoter un élément (ex paramètre)

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; } }

Faire un commit

git add * git commit -m "202509141800 avec la documentation mise à jour" git branch -M main git push -u origin main git log --oneline History

Inserer des données avec un retour à la ligne dans un champ

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');

Voir l'année et le niveau intégré dans la table quiz

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 | +-------+--------+

Insérer des valeurs dans une table

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)

Avoir les caractères japonais sous POWERSHELL

PS C:WINDOWSsystem32> mysql --default-character-set=utf8mb4 -u root -p Enter password: **********

Renuméroter l'index d’une table

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;

Intégrer un fichier csv dans une table après DELETE

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 );

Modifier une colonne en TEXT

ALTER TABLE quiz MODIFY question TEXT;

Importer les données d'un fichier csv dans une table

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;

Effacer les données d'une table

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.

Extraire les données d'une table dans un fichier csv

SELECT * FROM quiz INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/quiz_20250907.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY ' ';

Voir le répertoire autorisé à charger

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)

Avoir UTF8 dans Mysql 8.0 Command Line CLI

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