Con quale frequenza si dovrebbe salvare su disco un editor di testo che salva automaticamente? [chiuso]

-1

Sto sviluppando un semplice editor di testo e vorrei che l'applicazione salvi automaticamente il testo. In altre parole, l'utente non dovrebbe mai premere un pulsante Salva.

Ho visto altre applicazioni che lo fanno, e mi chiedevo quanto spesso è sicuro scrivere file su disco? Dal punto di vista dell'esperienza utente, sembra che più spesso questo avvenga meglio è, ma sono preoccupato per le prestazioni e la possibile usura del disco (specialmente per le scritture su SSD). Sembra che il caching del disco del sistema operativo possa aiutare a evitare questi problemi, ma non so se è sicuro affidarsi a questo per un'applicazione come questa.

Stavo pensando di scrivere l'intero documento su disco ad ogni salvataggio, ma questo sembra terribilmente inefficiente se il sistema operativo finisce per scriverlo su disco con frequenza, ma affidarsi allo scaricamento del programma può perdere i dati in caso di arresto anomalo.

Qualcuno ha qualche esperienza con questo che potrebbe essere in grado di aiutare?

    
posta lelandmiller 06.06.2014 - 21:21
fonte

4 risposte

3

Ci sono molti fattori che determinano quale frequenza ha senso. Hai già menzionato alcuni di loro. È altamente improbabile che tu possa correggere un singolo valore che ha senso per tutti i casi.

Cosa dovresti fare rendere il valore configurabile. L'applicazione non si cura della frequenza con cui si verifica un salvataggio, solo che ciò accade. Una volta installato, puoi testarlo e provare a mettere a punto il valore. Dato che hai a che fare con l'interazione umana, il ritardo tra il numero richiesto di scritture sul disco sembrerà un'eternità al computer.

Anche dopo che sei arrivato a quello che ritieni sia un buon valore predefinito, dovresti comunque lasciare il valore come configurabile. Potresti avere un utente con una preferenza diversa da te.

    
risposta data 06.06.2014 - 21:50
fonte
1

Non vorrei sovra-analizzare questo punto al punto che ti preoccupi dell'hardware. Un approccio di base sarebbe mantenere una bandiera "modificata". Quindi salvare automaticamente dopo che il programma è inattivo per un certo numero di secondi - ma solo se il testo è stato modificato. Una volta salvato il testo, cancella il flag modificato e ripeti il processo.

    
risposta data 06.06.2014 - 21:46
fonte
1

I was planning on writing the whole document to disk at each save, but this just seems terribly inefficient if the OS ends up writing it to disk to frequently, but relying on program unload may lose data in the case of a crash

Che molti editor (ad esempio Word) stanno semplicemente scrivendo l'intero documento in un'altra posizione temporanea e, una volta che il file è stato scritto sul disco, basta cambiare il nome in quello predefinito. Dopo un arresto anomalo dell'applicazione, se trovo il file temporaneo, posso verificare se è coerente e procedere di conseguenza. Se il file temporaneo è danneggiato, ho ancora quello originale.

Detto questo, l'idea di sovrascrivere la mia versione precedente del documento senza il mio consenso è terribile, IM (ns) HO. Primo, perché non è il comportamento che gli utenti si aspettano. E in secondo luogo, perché impedisce loro di decidere se le modifiche apportate al documento valgono la pena di essere salvate o meno. Nel peggiore dei casi, la funzione di salvataggio automatico verrà eseguita dopo che un utente ha selezionato alcuni (o tutti) del documento per applicare uno stile e "Del" premuto inavvertitamente.

    
risposta data 06.06.2014 - 22:09
fonte
0

Ecco un approccio alternativo: perché non costruire il tuo editor di testo come un database transazionale? Invece di scrivere l'intero documento, fai una copia di backup una volta caricato o salvato un documento (come "documento di riferimento") e crea una transazione log , dove vengono registrati solo i tratti chiave e i comandi di menu. Scrivi questi comandi continuamente sul disco (che può essere fatto rapidamente, immediatamente e in background), quindi in caso di crash del sistema, puoi sempre ricostruire l'ultimo stato di lavoro caricando l'ultimo documento di riferimento e riapplicare tutti i comandi dal registro trans.

    
risposta data 07.06.2014 - 10:04
fonte

Leggi altre domande sui tag