Proudly debugging the system since 1981

Categoria: programmazione (Pagina 1 di 6)

Plugin gradle per la migrazione da javax a jakarta

Il plugin si trova qua : https://plugins.gradle.org/plugin/com.netflix.nebula.jakartaee-migration

La spiegazione su cosa puo fare e come si usa qua : https://github.com/nebula-plugins/gradle-jakartaee-migration-plugin

Lo scenario in cui l’ho utilizzato e’ quando si devono usare due librerie o framework, una con dipendenze “vecchie” sotto javax e una con dipendenze “nuove” sotto jakarta su un application server “nuovo”.

Il plugin aggiorna automaticamente le dipendenze vecchie, al momento della compilazione, rendendo tutto funzionante e interoperabile.

Un sentito ringraziamento a chi ha reso necessario il cambio di nome.

Usare la intelligenza artificiale in locale per rinominare le foto

Questa la devo provare:

https://hackaday.com/2023/12/29/using-local-ai-on-the-command-line-to-rename-images-and-more/

UPDATE: E infatti poi l’ho provata. Ho dovuto fare un po di aggiustamenti per utilizzare il tutto con windows e ho provato a modificare i prompt in italiano.

Le modifiche si limitano ai controlli sulla presenza dei llama-file e sui prompt.

Controllo presenza file:

if ! LLAVA=$(command -v ./llava-v1.5-7b-q4.llamafile.exe); then
  printf '%s\n' "llava-v1.5-7b-q4-main.llamafile: fatal error: update this script with the path of your llava llamafile" >&2
  printf '%s\n' "please download https://huggingface.co/jartine/mistral-7b.llamafile/blob/main/mistral-7b-instruct-v0.1-Q4_K_M.llamafile, rename to llava-v1.5-7b-q4.llamafile.exe, and put it in the same directory of this script" >&2
  abort
fi

if ! MISTRAL=$(command -v ./mistral-7b-instruct-v0.2.Q3_K_L.llamafile.exe); then
  printf '%s\n' "mistral-7b-instruct-v0.1-Q4_K_M-main.llamafile: fatal error: update this script with the path of your mistral llamafile" >&2
  printf '%s\n' "please download https://huggingface.co/jartine/Mistral-7B-Instruct-v0.2-llamafile/blob/main/mistral-7b-instruct-v0.2.Q3_K_L.llamafile, rename to mistral-7b-instruct-v0.2.Q3_K_L.llamafile.exe, and put it in the same directory of this script" >&2
  abort
fi

Prompt italiani:

isgood() {
  "$MISTRAL" \
      --temp 0  \
      --grammar 'root ::= "si" | "no"' \
      -p "[INST]Questo nome file '${1##*/}' è una descrizione comprensibile e corretta in lingua italiana?[/INST]" \
      --silent-prompt 2>/dev/null
}

pickname() {
  "$LLAVA" \
      --image "$1" --temp 0.3  \
      --grammar 'root ::= [a-z]+ (" " [a-z]+)+' -n 15 \
      -p '### User: Questa immagine contiene ...
### Assistant:' \
      --silent-prompt 2>/dev/null
}

Inoltre per mistral ho dovuto scegliere una versione di dimensione non superiore ai 4giga, per limitazioni proprie di windows.

Il comportamento in inglese è buono, mentre l’output in italiano non e’ molto utile e spesso capita qualche parola di spagnolo qua e la.

llamafile v0.6

Mi segno e segnalo questa release che ho trovato impressionate : https://github.com/Mozilla-Ocho/llamafile/releases

Si tratta di un sistema per rendere facilmente accessibili modelli di linguaggio e praticamente funziona su tutti i sistemi operativi (window, linux, mac, etc) sfruttando CPU anche ARM, GPU anche multiple, anche AMD.

Si scarica il modello. Su linux gli si da il permesso di esecuzione, su windows lo si rinomina in .exe e lo si avvia.

Ho scaricato il modello llava e funziona con prestazioni accettabili anche usando solo una CPU non nuovissima (intel i7 11 generazione).

Stime

Impressione: un mix tra incredulità e invidia.

Incredulità perchè riuscire a farsi pagare senza fonire prima una stima affidabile del costo del lavoro mi sembra veramente difficile da credere. Invidia un pò per lo stesso motivo … tipo come sarebbe bello se non dovessi ottenere il consenso per sul costo di uno sviluppo prima di farlo.

Poi però, provando effettivamente ad immaginare questo mirabolante mondo, qualche anomalia emerge. Ovvero anche se tutti gli sviluppi fossero accettati a prescindere dal costo, ha davvero senso farli tutti? L’ efficacia si misura sempre col rapporto tra costi e risultati. E se l’efficacia è valutata solo a posteriori e non stimata anche a priori non c’è forma di protezione preventiva. Uno sviluppo è costato (tanto/poco) ma non serviva. Efficacia 0. Anche se il team è stato bravissimo a implementare una cosa complicata perfettamente e in poco tempo.

Commenti al codice e affini

Altro ritrovamento, datato 2008

E’ strano dirlo ma la semplicità è sempre stata l’arma vincente di qualsiasi prodotto
informatico… non a caso per le operazioni bancarie online basta una USER e un PIN
parcheggiati su una tabella ed eventualmente criptati da algoritmi e procedure che
non devono impedire a uno sviluppatore di sciropparsi una pagina come questa per
eseguire un accesso ad un servizio web. Che sia di lezione a chi verrà dopo di me.
Regola numero 1: la semplicità.

Vue.js, NativeScript e altri esperimenti a tempo perduto

Prima di tutto, secondo tentativo con Vue.js fallito. In settimana non ho tempo. Al weekend il sito e’ imballato, spesso non c’è’ corrispondenza tra quello che viene raccontato e il codice che viene generato… e niente mi sono scocciato.

Potrei aprire una grande parentesi sulla estrema fluidità’ e conseguente inconsistenza di tutto questo mondo javascript/typescript ma diventerei molto turpe.

Cosi ho pensato ritirar fuori un giochino di qualche tempo fa’: NativeScript pensando ingenuamente… quanto tempo ci vorrà per fare uno scanner bluetooth che registri ID, Nome dispositivo, data e ora di rilevazione su un server privato ? Ovvero la buzzword del momento: contact tracing, ma mantenendo pieno controllo dei dati raccolti.

Ovviamente non lo scoprirò mai perché e’ l’ennesima cosa a-tempo-perso che inizio e non finisco. Temo che mi serva essere pagato per portare a termine una cosa…

Ma se ne esce un semilavorato quasi accettabile ve lo farò sapere.

Un primo riferimento potrebbe essere questo articolo: Controlling Robots with NativeScript Bluetooth.

« Articoli meno recenti

© 2024 b0sh.net

Tema di Anders NorenSu ↑