View Full Version : [Miscellanea] Salvataggio settaggi applicazioni... ...dove farlo?
Ciao a tutti,
mi sono trovato faccia a faccia con un paio di "problemi" inerenti il salvataggio delle impostazioni delle mie applicazioni.
Le domande che mi pongo da un paio di giorni sono:
In che modo posso salvare le impostazioni?
Dove posso salvarle?
Che pregi e che difetti hanno i vari approcci?
Ora, ho individuato un paio di possibili soluzioni, una è la scrittura di queste fottutissime impostazioni in un file (magari un semplice file di testo) e l' altra consiste nell' uso del fottutissimo registro di windows.
...non penso ce ne siano molte altre.
A dire la verità proprio problemi non sono (per questo ho messo le virgolette la prima volta che ho usato coTesta parola), per quanto in un modo o nell' altro il risultato finale è lo stesso, ma ero curioso di sapere quali fossero le vostre idee in merito e i modi che usate voi!
'iao
Ciao a tutti,
mi sono trovato faccia a faccia con un paio di "problemi" inerenti il salvataggio delle impostazioni delle mie applicazioni.
Dipende da tante cose, ad esempio:
- dal tipo di informazioni che vuoi salvare (se stringhe, numeri, dati binari, ecc...).
- se hai bisogno di una struttura ad albero ad n livelli.
- se vuoi una configuraziione portabile tra vari OS.
- se hai bisogno di editare a mano le configurazioni.
Dipende da tante cose, ad esempio:
- dal tipo di informazioni che vuoi salvare (se stringhe, numeri, dati binari, ecc...).
- se hai bisogno di una struttura ad albero ad n livelli.
- se vuoi una configuraziione portabile tra vari OS.
- se hai bisogno di editare a mano le configurazioni.
:doh: effettivamente avevo dato un po' di cose per scontato!
Rimediamo subito:
- mettiamo che siano tutte stringhe;
- struttura ad albero per salvare dei settaggi? :mbe: spiega spiega... :D
- non è prevista portabilità;
- in questo caso basterebbe farsi un tool, ergo indifferente;
'iao
- mettiamo che siano tutte stringhe;In questo caso andrebbero bene sia il registro di Windows che i file ".ini".
- struttura ad albero per salvare dei settaggi? :mbe: spiega spiega... :DIl registro di Windows, ad esempio, è una grossa struttura ad albero. Non hai mai aperto regedit? Una configurazione ad albero consiste in una serie di sezioni (nel registro di Windows sono chiamate chiavi) al cui interno ci possono essere dei valori o altre sezioni annidate. Un po' come nel file system, dove ci sono cartelle con dentro file o altre cartelle.
- non è prevista portabilità;Quindi solo Windows.
- in questo caso basterebbe farsi un tool, ergo indifferente;Su Windows per gestire il registro c'è regedit.
Tieni presente che Microsoft sconsiglia l'uso dei file .ini a favore del registry. Il mio suggerimento è quindi, per il tuo caso, di usare il registro.
Io invece ti consiglio di usare i file .ini. Non insozzare il registro, è già pieno di cose dimenticate da altre applicazioni. Il file ini è comodo perchè: primo, una volta che non ti serve più, lo cancelli e stop; secondo, le impostazioni le puoi copiare molto più facilmente. Se ti metti a maneggiare con il registro, crei chiavi a destra e a manca, di solito poi ne lasci qualcuna perchè te ne dimentichi.
Il registro di Windows, ad esempio, è una grossa struttura ad albero. Non hai mai aperto regedit?
è vero, hai ragione, non ci avevo pensato!
Tieni presente che Microsoft sconsiglia l'uso dei file .ini a favore del registry. Il mio suggerimento è quindi, per il tuo caso, di usare il registro.
già, l'avevo letto da qualche parte, infatti ad esempio in .NET non ci sono classi per la gestione dei file .ini!
io comunque non mi riferivo specificamente ai file .ini, e volevo sentire anche un po' di esperienze personali!
inoltre, aggiungo un'altra domandina: per il salvataggio di dati crittografati (come ad esempio potrebbero essere lo username e la password usati per una connessione ad un db) quai sono le procedure e gli strumenti (che ne so API, classi) che vengono usati?
è cosa buona salvare anche questi nel registro?
'iao
Non insozzare il registro, è già pieno di cose dimenticate da altre applicazioni.
Dai ... insozzatura in più o in meno ;)
Ci sono pure le chiavi legate all'Office con dentro 7000 e passa bytes di roba binaria!!!
Io invece ti consiglio di usare i file .ini. Non insozzare il registro, è già pieno di cose dimenticate da altre applicazioni. Il file ini è comodo perchè: primo, una volta che non ti serve più, lo cancelli e stop; secondo, le impostazioni le puoi copiare molto più facilmente. Se ti metti a maneggiare con il registro, crei chiavi a destra e a manca, di solito poi ne lasci qualcuna perchè te ne dimentichi.
muble, non per fare il guastafeste eh, ma provo a dare delle risposte negative per stimolare la conversazione:
- le entry dimenticate dalle altre applicazioni non mi dovrebbero interessare, non dovrebbe essere affar mio pensare a cosa fanno le altre applicazioni (altrimenti non sarebbe più finita);
- non sto creando un' applicazione commerciale o un' applicazione che avrà larga diffusione, diciamo che è un banco di prova per acquisire esperienza (la cosa che assieme alle buone idee ha più valore di questi tempi);
- non è previsto il salvataggio di millemila settaggi, ergo le chiavi (nel caso usassi il registro) sarebbero poche, ergo i rischi di abbandonare delle entry a se stesse sono pochi;
-che si riducono maggiormente se pensiamo che sotto questa applicazione c'è un minimo di progettazione.
mi raccomando, scrivete gente, scriveteee!
'iao
- le entry dimenticate dalle altre applicazioni non mi dovrebbero interessare, non dovrebbe essere affar mio pensare a cosa fanno le altre applicazioni (altrimenti non sarebbe più finita);
Infatti ... il registry è molto vasto ma ci sono tutta una serie di chiavi standard e convenzioni che vengono (quasi) sempre adottate.
Ad esempio la convenzione di usare la chiave "HKEY_LOCAL_MACHINE\SOFTWARE\nome-produttore\nome-prodotto" per memorizzare i dati globali (a livello di sistema) di un prodotto.
E la chiave "HKEY_CURRENT_USER\Software\nome-produttore\nome-prodotto" per memorizzare i dati (utente per utente) di un prodotto.
Poi ci sono una marea di altre chiavi. Esempio, se devi registrare l'utilizzo di una dll di sistema c'è una chiave apposita, idem per i font. Oppure se devi registrare una estensione di file c'è tutta una struttura sotto HKEY_CLASSES_ROOT.
- non sto creando un' applicazione commerciale o un' applicazione che avrà larga diffusione, diciamo che è un banco di prova per acquisire esperienza (la cosa che assieme alle buone idee ha più valore di questi tempi);
;)
- non è previsto il salvataggio di millemila settaggi, ergo le chiavi (nel caso usassi il registro) sarebbero poche, ergo i rischi di abbandonare delle entry a se stesse sono pochi;
-che si riducono maggiormente se pensiamo che sotto questa applicazione c'è un minimo di progettazione.
Il problema in genere è che molte applicazioni (anche commerciali e di un certo livello) quando vengono disinstallate (con l'apposito sistema di uninstall dal pannello di controllo), si "dimenticano" di cancellare tutte le configurazioni legate al prodotto. Magari cancellano quella indicata sopra in HKEY_LOCAL_MACHINE ma delle altre se ne sbattono. Ed ecco l'insozzatura!
Oceans11
05-12-2005, 14:09
salve a tutti!!!
la discussione mi ha proprio incuriosito...
...se qualcuno ha un pò di esperienza con java...
tutte le piccole e modeste applicazioni che ho scritto si appoggiano a file di testo senza formattazione che per "puro caso" hanno estensione .ini!!!(dico puro caso perchè qualsiasi altro formato o estensione sarebbe andata bene lo stesso...era solo per uniformarmi a windows!!)
...questo anche perchè non ho la minima idea di come si accedi al registro di win con java!!!...
...credo inoltre che anche se sia possibile, occorrano classi non certo della libreria standard...visto che altrimenti la portabilità si "fotterebbe"...
...quindi chiedo:
1) avete mai provato??come gestite le "preferenze" del prog?
2) sapete dell'esistenza di qualche classe che gestisce il reg? sono classi standard o no?
3) se poi avete mai acceduto al reg...come?con qualche metodo nativo??
(non sò magari in c!!!) come si fà??
grazie anche solo per la pazienza di leggere!!!!ciao
...questo anche perchè non ho la minima idea di come si accedi al registro di win con java!!!...
Infatti non si può. Nel senso che essendo una cosa specifica ed esclusiva per Windows, Java non la supporta. Cioè non esistono delle classi nel framework standard di Java per gestire direttamente il registro di Windows.
...credo inoltre che anche se sia possibile, occorrano classi non certo della libreria standard...visto che altrimenti la portabilità si "fotterebbe"...
Certo, basterebbe usare JNI (Java Native Interface) per creare un "ponte" verso le funzioni Win32 denominate RegXXX per la gestione del registro. Ma la portabilità a quel punto ... buonanotte!
Nota: in Java (1.4 e superiore) esiste il package java.util.prefs. Una volta avevo anche provato a farci qualcosa. Se ben mi ricordo la memorizzazione delle configurazioni è system dependent. Cioè su Windows usa il registro e su Linux usa dei file testuali localizzati nella home directory dell'utente.
sottovento
05-12-2005, 15:07
In Java, la cosa migliore per memorizzare delle preferenze e' metterle in un file di properties, che sono del tipo
nome = valore
Per convenzione, i programmatori Java generalmente usano dei nomi "gerarchici", risolvendo quindi alcuni problemi legati al fatto che questo file "e' piatto". Per esempio:
database.url=valore
database.users.normalUser.name=valore
...
La loro lettura/scrittura e' semplicissima, visto che la classe Properties (sotto java.util) si occupa praticamente di tutto.
Ovviamente se hai bisogno di far cose piu' articolate, puoi scrivere un file in formato xml, il quale e' ben supportato da Java. Java, dalla 1.3 in poi, implementa piu' di un parser per xml...
High Flying
Sottovento
Io programmo in java e (principalmente) .NET...
Per le mie esigenze non ho mai usato il registro, ma mi appoggio sempre (anche per pochissime voci) su file .xml, semplicissimi da gestire con il framework.
In .NET ho anche una mia dll di utilità con le cose che si usano stabilmente (gestione file, connessioni a database, crittografia, ...)
Per chi aveva chiesto della crittografia mi sembra (a memoria) che il framework .net ce l'abbia in system.security (e dove se no? :D )
Grazie a tutti delle utilissime risposte che mi avete dato!
riporto, per dovere di cronaca, che ho scoperto che nella versione 2005 hanno introdotto gli application settings (raggiungibili tramite my.settings) che è proprio quello che mi serviva! :read: (http://msdn2.microsoft.com/en-us/library/cftf714c.aspx)
'iao
Hai visual studio 2005?
Ma è uscito in italiano?
siccome sono uno "studente"/sviluppatore indipendente e non ho ingenti finanziamenti sto usando le versioni express! :read: (http://msdn.microsoft.com/vstudio/express/default.aspx)
non penso sia uscita la versione in italiano, ma scusa se sono curioso, perchè la vuoi in italiano?
'iao
Così....
In inglese ce l'ho...siccome visual studio 2003 ce l'ho in italiano...
Non è un problema,ma dovendo scegliere...
capisco capisco, comunque guardando alle novità introdotte tra il 2003 in italiano e il 2005 in inglese, sceglierei il secondo...
...ovvio che poi basta attendere un po' per avere in italiano pure il 2005!
'iao
No,no...
Io ho intsllato al momento sia 2003 in italiano, sia 2005 in inglese...
Era solo per finezza
:D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.