diff --git a/README.md b/README.md index 96e4ad0..896d9cd 100644 --- a/README.md +++ b/README.md @@ -1,129 +1,174 @@ -# Galleria con json-server e protetto con JWT S6J +git clone https://forgit.patachina.it/Fabio/gallery_server_client.git a +cd a + +clear +ls -lh models +ls -lh native/face-knn +ls -lh bin/face_scan +find . -name "*.sqlite" ## Installazione -clonare questa repo e installare tutte le dipendenze con `npm ci` - - -## Start/Stop servers - -| Description | Script | -| ------------------------- | -------------------- | -| Start server senza auth | `npm start-no-auth` | -| Start server con auth | `npm run start` | - -## Tools - -| Description | Script | -| ------------------------------ | ------------------- | -| Generate user hashed passwords | `npm run hash` | - - -[json-server api reference](https://github.com/typicode/json-server) - -## Come usarlo - -clonare e poi installare con - ``` npm ci +node db/init.js +npm start ``` -nel file .env ci sono tutti i dati da modificare -poi inserire in user.json user e password utilizzati per fare il login - -la password da inserire è criptata e viene generata con npm run hash - -il nome viene utilizzato come cartella da scansionare, si trova dentro photos - -es: -``` -name: Fabio - -public/photos -└── Fabio - └── original - └── 2017Irlanda19-29ago - ├── IMG_0092.JPG - ├── IMG_0099.JPG - ├── IMG_0100.JPG -``` -poi dentro Fabio genererà thumbs con tutti i thumbs - -- npm run start -- su IP:4000 ci sarà la galleria e andando su impostazioni si potrà fare lo scan di tutte le foto - -dopo aver fatto lo scan è possibile richiedere il json al server con tutte le informazioni anche senza autorizzazione - -basta farlo partire con npm run start-no-auth e le info si possono vedere con - -ip:4000/photos - -- npm start - - ---- - -#### FIT parse (utilizzo di python) - -Per avere il parse dei fit installare python, pipx e i seguenyi packages +se serve aggiornare i file di face in c++ ``` -sudo apt install pipx -pipx ensurepath -pipx install fitdecode +cd docs/face-scan-source + +make clean +make ``` -usa per sapere dove è installato python +dovrebbe produrre ``` -pipx list -``` -in api_v1/scanner/parsers/parseFit.js va inserito il riferimento - -in questo caso - -``` -async function parseFit(absPath) { - const frames = await new Promise((resolve, reject) => { - execFile( - "/home/orangepi/.local/pipx/venvs/fitdecode/bin/python", - ["api_v1/scanner/parsers/parse_fit.py", absPath], - { maxBuffer: 1024 * 1024 * 50 }, // 50 MB +bin/face_scan +bin/face_recognition ``` -Inspired in this [post](https://www.techiediaries.com/fake-api-jwt-json-server/) by [Techiediaries](https://www.techiediaries.com/) - -#### Interrogazioni manuali - -per vedere il token - ``` -curl -s -X POST https://prova.patachina.it/auth/login \ - -H "Content-Type: application/json" \ - -d '{"email":"fabio@gmail.com","password":"master66"}' +cd docs/face-knn-source + +g++ \ + -std=c++17 \ + -O2 \ + -Wall \ + -Wextra \ + -Wpedantic \ + -Iinclude \ + src/face_knn.cc \ + src/knn_opencl.cc \ + src/knn_opencl_backend.cc \ + -lOpenCL \ + -ldl \ + -lpthread \ + -o bin/face_knn ``` -per salvare il token +### Face Scan (RKNN) -``` -TOKEN=$(curl -s -X POST https://prova.patachina.it/auth/login \ - -H "Content-Type: application/json" \ - -d '{"email":"fabio@gmail.com","password":"master66"}' \ - | jq -r '.token') -``` +Per funzionare servono: -per interrogare le foto +bin/face_scan -``` -curl -s "https://prova.patachina.it/photos/" \ - -H "Authorization: Bearer $TOKEN" -``` -per interrogare le attività +e inoltre: + +models/ +├── SCRFD_500M_KPS_640.rknn +└── face_recognition_sface_2021dec.rknn + + +e: + +lib/ +└── librknnrt.so + +Esempio + +Sul server: + +s190js/ +├── bin/ +│ └── face_scan +├── models/ +│ ├── SCRFD_500M_KPS_640.rknn +│ └── face_recognition_sface_2021dec.rknn +└── lib/ + └── librknnrt.so + +### Face KNN (OpenCL) + +Per funzionare servono: + +native/face-knn/ + + +completa: + +native/face-knn/ +├── bin/ +│ └── face_knn +├── kernels/ +│ └── knn_float4_topk.cl +├── config.json +├── run-face-knn.sh +└── SHA256SUMS + +Copia completa +cp -a \ +docs/face-knn-source/bin/face_knn \ +s190js/native/face-knn/bin/ + +cp -a \ +docs/face-knn-source/kernels \ +s190js/native/face-knn/ + +cp \ +s190js/native/face-knn/config.json \ +s190js/native/face-knn/ + + +In pratica il modo più sicuro è copiare tutta: + +native/face-knn/ + +Per ricompilare in futuro + +Conserverei anche: + +docs/face-scan-source/ +docs/face-knn-source/ + + +perché contengono: + +Face Scan +Makefile +src/ +include/ +models/ +lib/ + +Face KNN +src/ +include/ +kernels/ +original-build/ +COMPILAZIONE_FACE_KNN.md + +Backup completo consigliato + +Se dovessi ripristinare tutto su una macchina nuova io copierei: + +bin/ +models/ +lib/ +native/face-knn/ + +docs/face-scan-source/ +docs/face-knn-source/ + + +Così avresti: + +✅ eseguibili pronti + +✅ modelli .rknn + +✅ runtime RKNN + +✅ kernel OpenCL + +✅ sorgenti + +✅ documentazione di build + +✅ oggetti originali .o -``` -curl -s "https://prova.patachina.it/activities/" \ - -H "Authorization: Bearer $TOKEN" -``` diff --git a/README1.md b/README1.md new file mode 100644 index 0000000..96e4ad0 --- /dev/null +++ b/README1.md @@ -0,0 +1,129 @@ +# Galleria con json-server e protetto con JWT S6J + +## Installazione + +clonare questa repo e installare tutte le dipendenze con `npm ci` + + +## Start/Stop servers + +| Description | Script | +| ------------------------- | -------------------- | +| Start server senza auth | `npm start-no-auth` | +| Start server con auth | `npm run start` | + +## Tools + +| Description | Script | +| ------------------------------ | ------------------- | +| Generate user hashed passwords | `npm run hash` | + + +[json-server api reference](https://github.com/typicode/json-server) + +## Come usarlo + +clonare e poi installare con + +``` +npm ci +``` + +nel file .env ci sono tutti i dati da modificare + +poi inserire in user.json user e password utilizzati per fare il login + +la password da inserire è criptata e viene generata con npm run hash + +il nome viene utilizzato come cartella da scansionare, si trova dentro photos + +es: +``` +name: Fabio + +public/photos +└── Fabio + └── original + └── 2017Irlanda19-29ago + ├── IMG_0092.JPG + ├── IMG_0099.JPG + ├── IMG_0100.JPG +``` +poi dentro Fabio genererà thumbs con tutti i thumbs + +- npm run start +- su IP:4000 ci sarà la galleria e andando su impostazioni si potrà fare lo scan di tutte le foto + +dopo aver fatto lo scan è possibile richiedere il json al server con tutte le informazioni anche senza autorizzazione + +basta farlo partire con npm run start-no-auth e le info si possono vedere con + +ip:4000/photos + +- npm start + + +--- + +#### FIT parse (utilizzo di python) + +Per avere il parse dei fit installare python, pipx e i seguenyi packages + +``` +sudo apt install pipx +pipx ensurepath +pipx install fitdecode +``` + +usa per sapere dove è installato python + +``` +pipx list +``` +in api_v1/scanner/parsers/parseFit.js va inserito il riferimento + +in questo caso + +``` +async function parseFit(absPath) { + const frames = await new Promise((resolve, reject) => { + execFile( + "/home/orangepi/.local/pipx/venvs/fitdecode/bin/python", + ["api_v1/scanner/parsers/parse_fit.py", absPath], + { maxBuffer: 1024 * 1024 * 50 }, // 50 MB +``` + +Inspired in this [post](https://www.techiediaries.com/fake-api-jwt-json-server/) by [Techiediaries](https://www.techiediaries.com/) + +#### Interrogazioni manuali + +per vedere il token + +``` +curl -s -X POST https://prova.patachina.it/auth/login \ + -H "Content-Type: application/json" \ + -d '{"email":"fabio@gmail.com","password":"master66"}' +``` + +per salvare il token + +``` +TOKEN=$(curl -s -X POST https://prova.patachina.it/auth/login \ + -H "Content-Type: application/json" \ + -d '{"email":"fabio@gmail.com","password":"master66"}' \ + | jq -r '.token') +``` + +per interrogare le foto + +``` +curl -s "https://prova.patachina.it/photos/" \ + -H "Authorization: Bearer $TOKEN" +``` + +per interrogare le attività + +``` +curl -s "https://prova.patachina.it/activities/" \ + -H "Authorization: Bearer $TOKEN" +``` diff --git a/docs/face-scan-source/COMPILAZIONE_FACE_SCAN.md b/docs/face-scan-source/COMPILAZIONE_FACE_SCAN.md index d333a80..5b9a53d 100644 --- a/docs/face-scan-source/COMPILAZIONE_FACE_SCAN.md +++ b/docs/face-scan-source/COMPILAZIONE_FACE_SCAN.md @@ -279,3 +279,44 @@ Data documentazione: ```text 2026-10-26 ``` +## Verifica ricompilazione Face Scan + +**Data verifica:** 2026-10-26 + +### Ambiente utilizzato + +Repository: `/home/nvme/dockerdata/prove/a/docs/face-scan-source` + +Comandi eseguiti: + + make clean + make + +### Confronto binari + +| File | SHA256 | +|------|---------| +| Binario compilato | `7b5148ee602f9bb1aa52e3c5c269c584b9dbea05b94296b049d32ec9985c69aa` | +| Binario s190js | `7b5148ee602f9bb1aa52e3c5c269c584b9dbea05b94296b049d32ec9985c69aa` | + +### Esito + +✅ Ricompilazione verificata con successo. + +Il binario generato dalla compilazione dei sorgenti presenti nel repository produce un file identico bit per bit al binario utilizzato in: + +`/home/nvme/dockerdata/prove/s190js/bin/face_scan` + +### Conclusione + +Sono stati verificati: + +- sorgenti +- header +- Makefile +- libreria RKNN +- modelli `.rknn` + +Il repository contiene tutto il necessario per rigenerare il binario `face_scan` senza dipendenze aggiuntive. + +**Riproducibilità confermata.**