Sono un membro di un forum Discourse (BlenderArtists.org) e possiedo un monitor 4K che mi permette di visualizzare due pagine del forum affiancate.
A volte, quando intendo scrivere un commento lungo, preparo la mia risposta (con diverse citazioni da un thread corrente lungo) aprendo l’Editor dei messaggi nella pagina di sinistra e navigando nello stesso thread nella pagina di destra.
Tuttavia, quando faccio questo, appare molto spesso questo messaggio:
La bozza sta venendo modificata in un’altra finestra. Si prega di ricaricare questa pagina.
Non sono contrario a questo avviso (sono sicuro che sia utile in alcune circostanze).
Ma sarebbe possibile aggiungere un’opzione nelle preferenze dell’utente per disabilitarlo? O impostare la frequenza di visualizzazione (il timer)?
Questo messaggio di avviso impedisce di scrivere il messaggio in pace.
Grazie per aver preso in considerazione l’aggiunta di questa opzione.
Ci dispiace, ma abbiamo ricevuto troppe richieste di assistenza su questo argomento, quindi l’avviso è intenzionale. Si tratta di un flusso di lavoro molto rischioso e potresti perdere l’intero post.
Proviamo automaticamente ad aprire la bozza per la modifica quando entri in un argomento. Anche se riduci immediatamente il compositore a icona, rimane attivo e in conflitto.
Anche io sono stato colpito dall’apertura automatica delle bozze, ma è peggio di un semplice messaggio di avviso. Ho ripreso a scrivere il mio post e poi è apparso il popup, cercando di indirizzarmi verso un’altra scheda che contiene una bozza più vecchia. A quel punto, se aggiorno la pagina, ottengo solo la versione più vecchia della mia bozza, quindi in questo senso questa funzione non previene davvero ciò che cerca di prevenire.
Non sono sicuro che accada prima di iniziare a scrivere. Ho appena provato a riprodurlo su meta e si è verificato solo quando ho iniziato a scrivere nella seconda scheda. Tendo a innescare questo problema poco dopo aver duplicato la mia scheda per fare riferimento a ciò che sto scrivendo. Perdo il ricordo di quale scheda ho iniziato a usare e, quando per sbaglio inizio a scrivere nella seconda scheda, appare l’avviso.
Sarebbe possibile/ragionevole rilevare se un’altra scheda ha già il compositore aperto per il dato argomento e, in tal caso, non aprire il compositore per la nuova scheda?
È davvero troppo complicato… forse potremmo fare qualcosa con i web worker, ma si tratterebbe di un cambiamento enorme che non vorrei apportare.
Ho bisogno di una riproduzione esatta passo dopo passo; il nostro avviso si attiva molto presto, nel peggiore dei casi perderesti solo alcune parole. Immagino che se sei offline le cose possano diventare strane, ma è un caso limite piuttosto ampio… la soluzione è il copia-incolla.
Ho appena dato un’occhiata all’OP.
Non riesco a riprodurlo, puoi fornire i passaggi esatti che portano a questo messaggio errato? Se non stai modificando, esiste solo un caso limite in cui ottieni questo messaggio, in modo discutibile, in modo errato. Ma è un caso limite molto minore.
Apri la scheda 1 … inizia a scrivere la risposta
Apri la scheda 2 … naviga
Nella scheda 1 … continua a scrivere
Nella scheda 2 … minimizza il compositore (ricevi un messaggio di avviso… ma solo una volta)
Ciò che può accadere e che potrebbe confonderti:
Apri la scheda 1 … inizia a scrivere la risposta
Apri la scheda 2 … per errore citi qualcosa per la risposta
Nella scheda 1 … continua a scrivere … l’avviso è presente … in modo persistente (perché stiamo scartando la citazione da (2))
Non sono sicuro di cosa correggere qui… ho bisogno di riproduzioni.
Ho sicuramente avuto momenti in cui ho perso una quantità significativa di contenuto. Per questo motivo, però, ho fatto attenzione a non attivare questo avviso, quindi al momento non ricordo i passaggi esatti che hanno causato la perdita significativa.
Penso che il problema possa verificarsi se questo salva una bozza, sovrascrivendo ciò che hai fatto nella scheda 1. Se ciò accade, potrebbe comportare una perdita significativa di contenuto. Al momento è solo un’ipotesi, ma cercherò di riprodurre il problema in questo modo e ti farò sapere.
Non può accadere, per favore… ho bisogno di passaggi riproducibili… ogni volta che una bozza viene salvata, viene eseguito un test di rilevamento dei conflitti.
Ho bisogno di una procedura passo dopo passo che riproduca qualsiasi significativa perdita di contenuti.
Capisco che ti servano i passaggi per riprodurre il problema. Ho impostato un promemoria () per darci un’occhiata domani sera. Sarebbe utile sapere (a grandi linee) come funziona il test di conflitto. Viene generato un identificativo univoco al caricamento della pagina o qualcosa di simile?
In sostanza, intendo che se c’è una corsa … e due compositori stanno rispondendo allo stesso argomento per lo stesso utente … ne vince solo uno. Ogni volta che salviamo, viene scelto un proprietario.
Ok @sam, ho i passaggi per riprodurre il problema. Non so se sia correlato al problema originale dell’OP (dato che la conversazione si è un po’ allontanata dall’argomento), ma in ogni caso ecco cosa ho trovato. In sostanza, se apri la scheda 2 ma continui a scrivere nella scheda 1 prima che la scheda 2 sia completamente caricata, la nuova pagina finisce in uno stato errato. Se continui a scrivere nella scheda 1 mentre la scheda 2 è ancora in fase di caricamento, la scheda 2 caricherà la bozza dalla scheda 1 così com’era al momento dell’apertura, ma sarai comunque in grado di modificare nella scheda 2 anche dopo che la scheda 1 ha salvato ulteriori modifiche (sovrapponendo così tali modifiche). Ecco i passaggi per riprodurre il problema:
Apri l’argomento A e inizia a scrivere una risposta.
Smetti di scrivere in modo che la bozza venga salvata.
Apri l’argomento A in una nuova scheda (duplicare la scheda o fare clic con il tasto destro/centrale sul titolo dell’argomento è il modo più semplice per riprodurre il problema, poiché devono eseguire un caricamento completo della pagina e sono quindi più lenti).
Immediatamente continua a scrivere la risposta nella scheda 1, prima che la scheda 2 abbia finito di caricarsi.
Smetti di scrivere in modo che la bozza venga salvata di nuovo (questo avrà successo, come previsto).
Vai alla scheda 2 e scrivi nell’editor.
Smetti di scrivere. La bozza verrà salvata anche se dovrebbe apparire un avviso. Questo sovrascriverà tutte le modifiche aggiuntive apportate nella scheda 1 al passaggio #4. (Se ricevi l’avviso come previsto, probabilmente hai aspettato troppo a lungo per iniziare a scrivere al passaggio #4.) Nota che a questo punto non puoi più scrivere nella scheda 1 senza ricaricare quella scheda.
Nota che al passaggio #4 non è necessario fermarsi a scrivere e salvare una bozza prima che la scheda 2 finisca di caricarsi. Basta iniziare a scrivere per mettere tutto in uno stato errato. In realtà non è irragionevole aprire una scheda duplicata in background per controllare delle cose in seguito e continuare a scrivere nella scheda 1 nel frattempo. Ma farlo troppo velocemente porterà le schede in uno stato errato e ti permetterà di sovrascrivere per errore ciò che hai aggiunto nella scheda 1. Ovviamente, minimizzare l’editor salva anche una bozza, quindi una volta entrati in questo stato errato, minimizzare semplicemente l’editor nella scheda 2 per toglierlo di mezzo sovrascriverà la tua ultima bozza dalla scheda 1.
A questo punto, se torni alla scheda 1 dove stavi originariamente scrivendo il tuo messaggio, non potrai più scrivere e riceverai l’avviso che avrebbe dovuto apparire nella scheda 2. Se ti rendi conto che la tua bozza è andata persa, puoi ovviamente copiare il contenuto dell’editor dalla scheda 1. Ma se non te ne sei accorto e ricarichi la pagina (seguendo le istruzioni dell’avviso), perderai le modifiche apportate e non avrai modo di recuperarli.
Fammi sapere se hai ancora difficoltà a riprodurre il problema con questi passaggi. Posso riprodurre il problema in modo piuttosto coerente seguendo questi passaggi (passando occasionalmente a nuovi argomenti per ottenere bozze fresche), quindi spero che queste informazioni siano sufficienti.
Grazie mille per la riproduzione del problema: è stata spettacolare e mi ha aiutato a isolare rapidamente l’errore.
Ritengo di aver dato una risposta un po’ vaga su come teniamo traccia delle versioni delle bozze; credo che il problema derivi dal fatto di essere stato un po’ troppo ingenuo e sofisticato nel mio algoritmo. Una combinazione letale. Il nuovo algoritmo è molto più semplice da spiegare.
Ogni volta che il client salva una bozza, comunica al server il “numero di sequenza che possiede”
Se il numero di sequenza corrisponde, il server incrementa il numero di sequenza di 1 e lo restituisce al client (il nostro nuovo numero di sequenza)
Se il numero di sequenza non corrisponde, il server informa il client che c’è un conflitto e non salva la bozza
Al ricaricamento o al caricamento della pagina, il server comunica al client il numero di sequenza corrente
La mia implementazione precedente era troppo elaborata: cercava di evitare l’incremento del numero di sequenza in molte condizioni, tenendo traccia del proprietario di una sequenza. Il tuo caso di test ha mostrato quanto fosse problematico e come potesse causare la perdita di contenuti.
Questa soluzione dovrebbe essere attiva su meta; fammi sapere se riesci a individuare altri casi limite in questo sistema.
Questo richiede un bel po’ di lavoro, passando da una scheda all’altra nel browser, ma sì… l’abbandono non sta funzionando come dovrebbe in questo caso, dovremmo risolvere il problema.