<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Bookmark on Melabit</title>
    <link>https://static.233.196.69.159.clients.your-server.de/it/tags/bookmark/</link>
    <description>Recent content in Bookmark on Melabit</description>
    <generator>Hugo</generator>
    <language>it</language>
    <lastBuildDate>Mon, 16 Sep 2019 06:00:00 +0000</lastBuildDate>
    <atom:link href="https://static.233.196.69.159.clients.your-server.de/it/tags/bookmark/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Come riparare i segnalibri di Firefox</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2019/09/16/come-riparare-i-segnalibri-di-firefox/</link>
      <pubDate>Mon, 16 Sep 2019 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2019/09/16/come-riparare-i-segnalibri-di-firefox/</guid>
      <description>&lt;p&gt;Sui miei Mac installo parecchi browser ma poi uso quasi sempre solo Firefox. Un po&amp;rsquo; perché sono fedele, sono passato senza soluzione di continuità &lt;a href=&#34;https://www.mozillaitalia.org/home/tag/storia/&#34;&gt;da Netscape a Mozilla a Firefox&lt;/a&gt; e non ho motivi seri per cambiare. E poi perché Firefox è multipiattaforma e può sincronizzare tutte le impostazioni e i dati personali (segnalibri, storia di navigazione, add-on, schede aperte, volendo anche le password) via cloud, una funzione utilissima quando si usano più Mac o si ha a che fare con computer e sistemi operativi diversi.&lt;/p&gt;&#xA;&lt;p&gt;Certo, anche Google Chrome funziona ovunque, ma volete mettere il rispetto della privacy di quelli di Mozilla (la fondazione che supporta lo sviluppo di Firefox e del client di posta elettronica &lt;a href=&#34;https://www.thunderbird.net/en-US/&#34;&gt;Thunderbird&lt;/a&gt;) con, diciamo così, la &lt;em&gt;curiosità&lt;/em&gt; di Google?&lt;/p&gt;&#xA;&lt;p&gt;Non che Firefox non abbia i suoi problemi. La &lt;a href=&#34;https://hacks.mozilla.org/2017/11/entering-the-quantum-era-how-firefox-got-fast-again-and-where-its-going-to-get-faster/&#34;&gt;ristrutturazione del codice&lt;/a&gt; di due anni fa ha reso il browser molto più veloce, ma purtroppo parecchie estensioni non sono mai state aggiornate per funzionare con il nuovo modello di codice (a me manca moltissimo &lt;a href=&#34;https://en.wikipedia.org/wiki/ScrapBook&#34;&gt;ScrapBook&lt;/a&gt; che usavo per archiviare le pagine web e non sono ancora riuscito a rimpiazzarlo con qualcosa di altrettanto efficace).&lt;/p&gt;&#xA;&lt;p&gt;E poi ci sono i segnalibri (&lt;em&gt;bookmark&lt;/em&gt; per gli anglofili, &lt;em&gt;preferiti&lt;/em&gt; per chi usa Safari). Se come me avete tanti segnalibri, non provate a sincronizzarli tramite il cloud di Firefox: è snervante, basta aggiungerne uno per innescare la sincronizzazione e intanto il browser rallenta in modo evidente. Per molto tempo, ad ogni nuova versione di Firefox ho sperato che ci fossero dei progressi in questo campo, ma poi sono sempre tornato a sincronizzare i miei segnalibri tramite Dropbox; la configurazione iniziale può essere un po&amp;rsquo; fastidiosa, ma dopo va che è un piacere (varrebbe la pena riparlarne, prima o poi).&lt;/p&gt;&#xA;&lt;p&gt;Firefox ha un problema ancora più serio con i segnalibri, che si presenta quando il browser va in crash. Ma prima bisogna fare una premessa.&lt;/p&gt;&#xA;&lt;h4 id=&#34;segnalibri-e-database&#34;&gt;Segnalibri e database&lt;/h4&gt;&#xA;&lt;p&gt;Da moltissimo tempo ormai Firefox salva i segnalibri in &lt;code&gt;places.sqlite&lt;/code&gt;, un database &lt;a href=&#34;https://www.sqlite.org/index.html&#34;&gt;SQLite&lt;/a&gt; che in macOS si trova nella cartella&#xA;&lt;code&gt;~/Library/Application Support/Firefox/Profiles/abcd1234.default/&lt;/code&gt; (come sempre &lt;code&gt;~&lt;/code&gt; rappresenta la &lt;code&gt;Home&lt;/code&gt; dell&amp;rsquo;utente). Questa cartella contiene tutti i file di configurazione e i database del browser, cioè il cosiddetto &lt;code&gt;profilo&lt;/code&gt; dell&amp;rsquo;utente.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&#xA;Il nome &lt;code&gt;abcd1234.default&lt;/code&gt; della cartella del profilo utente è solo un nome generico, il nome reale è costituito da una sequenza casuale di otto lettere e numeri seguiti dalla stringa &lt;code&gt;.default&lt;/code&gt; e viene generato quando usiamo per la prima volta Firefox sul nostro computer, oppure quando lo &lt;a href=&#34;https://support.mozilla.org/it/kb/funzione-ripristino-firefox&#34;&gt;ripristiniamo&lt;/a&gt; per correggere eventuali problemi.&lt;/p&gt;&#xA;&lt;p&gt;Nelle versioni più recenti di Firefox il nome di questa cartella segue un nuovo formato, &lt;code&gt;abcd1234.default-1234567890123&lt;/code&gt; (otto lettere e numeri seguiti dalla stringa &lt;code&gt;.default&lt;/code&gt;, da un trattino &lt;code&gt;-&lt;/code&gt; e da altri 13 numeri), ma il succo del discorso non cambia, per cui nel seguito continuerò ad utilizzare per semplicità il formato più vecchio (e più breve).&lt;/p&gt;&#xA;&lt;p&gt;Il nome della cartella del profilo utente può essere ricavato dal Terminale con il comando&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ ls -al ~/Library/Application\ Support/Firefox/Profiles/&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;In alternativa possiamo selezionare da Firefox la voce di menu &lt;code&gt;Aiuto &amp;amp;#8594; Risoluzione dei problemi&lt;/code&gt; oppure scrivere &lt;code&gt;about:support&lt;/code&gt; nella barra degli indirizzi (Figura 1). Si apre una pagina che contiene parecchie informazioni utili, fra cui il percorso completo alla cartella del profilo, a cui si può accedere dal Finder cliccando sul bottone cerchiato in rosso (Figura 1). Da questa pagina possiamo anche ripristinare il browser o riavviarlo con le estensioni disattivate.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://melabit.files.wordpress.com/2019/08/about-support-1.png&#34; alt=&#34;&#34;&gt;&#xA;&lt;em&gt;Figura 1. Strumento per la risoluzione dei problemi di Firefox.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;&lt;strong&gt;NOTA&lt;/strong&gt; Ricordo che da Windows 7 in poi (in effetti da Vista, ma chi lo usa ancora?), la cartella del profilo di Firefox si trova in &lt;code&gt;C:\Users\&amp;amp;#60;nome utente&amp;amp;#62;\AppData\Roaming\Mozilla\Firefox\Profiles\&lt;/code&gt;, mentre in Windows XP è in &lt;code&gt;C:\Documents and Settings\&amp;amp;#60;nome utente&amp;amp;#62;\Application Data\Mozilla\Firefox\Profiles\&lt;/code&gt;. Su Linux invece la cartella del profilo si trova in &lt;code&gt;~/.mozilla/firefox/&lt;/code&gt;, dove come in macOS &lt;code&gt;~&lt;/code&gt; rappresenta la &lt;code&gt;Home&lt;/code&gt; dell&amp;rsquo;utente.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h4 id=&#34;quando-firefox-va-in-crash&#34;&gt;Quando Firefox va in crash&lt;/h4&gt;&#xA;&lt;p&gt;Usare un database per gestire i segnalibri è molto efficace, soprattutto quando il numero di segnalibri memorizzati è piuttosto grande.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; Inoltre, un database consente di implementare un meccanismo di sicurezza in base al quale tutte le operazioni da effettuare (inserimento di nuovi dati, cancellazioni, spostamenti e così via) vengono prima salvate in un file separato, che in Firefox si chiama &lt;code&gt;places.sqlite-wal&lt;/code&gt;, per essere poi applicate al database principale &lt;code&gt;places.sqlite&lt;/code&gt; solo al momento della chiusura del browser.&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Una volta conclusa l&amp;rsquo;operazione di aggiornamento di &lt;code&gt;places.sqlite&lt;/code&gt;, il file &lt;code&gt;places.sqlite-wal&lt;/code&gt; non serve più e viene cancellato. Quando eseguiamo di nuovo Firefox, il browser crea un nuovo file &lt;code&gt;places.sqlite-wal&lt;/code&gt; in cui salvare le nuove modifiche ai segnalibri e il ciclo ricomincia.&lt;/p&gt;&#xA;&lt;p&gt;Ma se Firefox in crash (ormai succede di rado ma succede), le modifiche contenute nel file &lt;code&gt;wal&lt;/code&gt; non possono essere applicate al database &lt;code&gt;places.sqlite&lt;/code&gt;. In genere non è un problema, al primo riavvio Firefox nota che &lt;code&gt;places.sqlite-wal&lt;/code&gt; è ancora sul disco rigido e lo utilizza per aggiornare il database principale.&lt;/p&gt;&#xA;&lt;p&gt;Purtroppo a volte qualcosa va storto, magari il crash avviene proprio mentre Firefox sta scrivendo nel file &lt;code&gt;wal&lt;/code&gt;, magari Firefox si blocca e dobbiamo forzarne la chiusura, magari ci sono problemi durante la sincronizzazione dei segnalibri via cloud o via Dropbox, magari il file &lt;code&gt;wal&lt;/code&gt; viene cancellato per sbaglio. In tutti i casi, l&amp;rsquo;effetto finale è che il database &lt;code&gt;places.sqlite&lt;/code&gt; si corrompe e ci si ritrova con dei segnalibri scomparsi o con Firefox che fa i capricci. La funzione di &lt;a href=&#34;https://support.mozilla.org/it/kb/funzione-ripristino-firefox&#34;&gt;ripristino del browser&lt;/a&gt; esiste anche per questo, basta usarla e tutto dovrebbe andare a posto, mantenendo inalterate tutte le impostazioni e i dati personali.&lt;/p&gt;&#xA;&lt;p&gt;Ma un (brutto) giorno si lancia Firefox e si scopre di aver perso tutti i segnalibri&amp;hellip;&lt;/p&gt;&#xA;&lt;h4 id=&#34;riparare-il-database&#34;&gt;Riparare il database&lt;/h4&gt;&#xA;&lt;p&gt;È proprio quello che è successo a me qualche settimana fa. Per fortuna Firefox fa periodicamente il backup dei segnalibri sul Mac, per cui possiamo sempre recuperare una versione precedente di &lt;code&gt;places.sqlite&lt;/code&gt; perdendo al massimo le aggiunte degli ultimi giorni. E se per qualche motivo il backup di Firefox non funzionasse, c&amp;rsquo;è sempre la possibilità di recuperare le ultime versioni di &lt;code&gt;places.sqlite&lt;/code&gt; da Time Machine, dall&amp;rsquo;account Dropbox o dal cloud di Firefox (per chi lo usa).&lt;/p&gt;&#xA;&lt;p&gt;Ma che fine hanno fatto i segnalibri scomparsi? Andando a curiosare nella cartella del profilo (come già notato più sopra, lo si può fare dal Terminale con il comando &lt;code&gt;cd ~/Library/Application Support/Firefox/Profiles/abcd1234.default/&lt;/code&gt; seguito da &lt;code&gt;ls -alh places*&lt;/code&gt;, oppure selezionando la voce di menu &lt;code&gt;Aiuto &amp;amp;#8594; Risoluzione dei problemi&lt;/code&gt; e cliccando sul bottone &lt;code&gt;Mostra nel Finder&lt;/code&gt; posto accanto alla voce &lt;code&gt;Cartella del Profilo&lt;/code&gt;, come mostrato in Figura 1), oltre al solito &lt;code&gt;places.sqlite&lt;/code&gt; si trova un altro file piuttosto grande, &lt;code&gt;places.sqlite-corrupt&lt;/code&gt;. La dimensione di &lt;code&gt;places.sqlite&lt;/code&gt; è decisamente piccola, troppo piccola per poter contenere tutto l&amp;rsquo;elenco dei segnalibri. È evidente che i veri segnalibri sono nel secondo file, quello che Firefox considera &amp;ldquo;corrotto&amp;rdquo;, mentre &lt;code&gt;places.sqlite&lt;/code&gt; è solo un database quasi vuoto, generato automaticamente all&amp;rsquo;avvio da Firefox.&lt;/p&gt;&#xA;&lt;p&gt;Quando è successo a me, la prima cosa che ho fatto è stata quella di &lt;a href=&#34;https://support.mozilla.org/it/kb/funzione-ripristino-firefox&#34;&gt;ripristinare il browser&lt;/a&gt; creando un nuovo profilo, sostituendo poi il file &lt;code&gt;places.sqlite&lt;/code&gt; generato automaticamente con la copia più recente che avevo su Dropbox. Firefox ha funzionato senza problemi per un giorno o due, poi ha deciso che &lt;code&gt;places.sqlite&lt;/code&gt; era di nuovo corrotto e mi sono ritrovato di nuovo senza segnalibri. Chiaramente ci voleva una soluzione migliore.&lt;/p&gt;&#xA;&lt;p&gt;La rete ha tutte le risposte, basta solo trovarle (cosa spesso non molto facile, dato il marasma di sciocchezze che si trova in rete). Ne ho lette tante, finché non sono arrivato all&amp;rsquo;articolo, &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Mozilla/Tech/Places/places.sqlite_Database_Troubleshooting&#34;&gt;places.sqlite Database Troubleshooting&lt;/a&gt;, contenuto nel sito ufficiale degli &lt;a href=&#34;https://developer.mozilla.org/en-US/&#34;&gt;sviluppatori di Mozilla&lt;/a&gt;. L&amp;rsquo;articolo è molto chiaro, si vede che è scritto da gente competente, mi è bastato seguire pedissequamente le istruzioni per riparare il file &lt;code&gt;places.sqlite&lt;/code&gt; e risolvere definitivamente il problema.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;articolo però è scritto da sviluppatori per sviluppatori e presuppone che chi lo legge conosca perfettamente (o quasi) i comandi per gestire un database SQLite dal Terminale. In realtà proprio all&amp;rsquo;inizio viene citata una estensione piuttosto nota, &lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/places-maintenance/&#34;&gt;Places Maintenance&lt;/a&gt;, che dovrebbe fare automaticamente quanto descritto nel testo. Ma il link non funziona più e quindi sembra che non ci siano alternative all&amp;rsquo;uso del Terminale.&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ho deciso quindi di riportare le istruzioni presenti nell&amp;rsquo;articolo e di spiegare cosa fa ciascuna di esse, cercando così di rendere fruibile la procedura anche a chi non è molto esperto di Terminale o di database.&lt;/p&gt;&#xA;&lt;h4 id=&#34;le-istruzioni-commentate&#34;&gt;Le istruzioni commentate&lt;/h4&gt;&#xA;&lt;p&gt;Come già detto, per riparare &lt;code&gt;places.sqlite&lt;/code&gt; bisogna usare necessariamente il Terminale. Chi non è pratico, prima di andare avanti farebbe bene a leggere le istruzioni di base per &lt;a href=&#34;https://melabit.wordpress.com/2019/01/30/script-per-tutti-i-giorni-ricapitoliamo/&#34;&gt;usare il Terminale sul Mac&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Prima di iniziare a lavorare è bene chiudere Firefox, in modo da evitare conflitti nel momento in cui ripristineremo la versione riparata del file &lt;code&gt;places.sqlite&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Lanciamo il Terminale (come sanno bene i lettori più affezionati di questo blog, il Terminale si trova nella cartella &lt;code&gt;Applicazioni &amp;amp;#8594; Utility&lt;/code&gt;), creiamo sul Desktop (o dove preferiamo) la cartella di lavoro &lt;code&gt;fixplaces&lt;/code&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ mkdir ~/Desktop/fixplaces&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;e copiamo in questa cartella il file &lt;code&gt;places.sqlite-corrupt&lt;/code&gt; dal nostro profilo Firefox, in modo da lavorare su una copia e non sul file originale&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ cp -p ~/Library/Application Support/Firefox/Profiles/abcd1234.default/places.sqlite-corrupt ~/Desktop/fixplaces&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;(naturalmente nel comando precedente bisogna sostituire a &lt;code&gt;abcd1234.default&lt;/code&gt; il vero nome della cartella contenente il nostro profilo Firefox). Spostiamoci ora nella cartella di lavoro&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ cd ~/Desktop/fixplaces&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;e iniziamo il processo di riparazione del database. In macOS è installato di default il programma &lt;code&gt;sqlite3&lt;/code&gt;, che permette di interagire dal Terminale con un database SQLite. Lanciamo &lt;code&gt;sqlite3&lt;/code&gt;, facendo seguire al nome del programma quello del database su cui deve operare&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ sqlite3 places.sqlite-corrupt&#xA;sqlite&amp;amp;#62;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Il prompt del Terminale diventa &lt;code&gt;sqlite&amp;amp;#62;&lt;/code&gt;, ad indicarci che siamo entrati in una sessione di lavoro SQLite.&lt;/p&gt;&#xA;&lt;p&gt;La prima cosa da fare è controllare l&amp;rsquo;integrità del database contenente i segnalibri &lt;code&gt;places.sqlite-corrupt&lt;/code&gt;, in modo da essere sicuri che ci siano veramente dei problemi&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sqlite&amp;amp;#62; PRAGMA integrity_check;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Attenzione, non dimenticate mai di aggiungere il &lt;code&gt;;&lt;/code&gt; alla fine di ciascuna istruzione SQLite!&lt;/p&gt;&#xA;&lt;p&gt;Se il controllo dell&amp;rsquo;integrità del database non da errori possiamo uscire dalla sessione SQLite con&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sqlite&amp;amp;#62; .exit&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;(un comando SQLite puntato non ha bisogno del &lt;code&gt;;&lt;/code&gt; finale) e chiederci cosa possa essere successo (chissà, magari abbiamo trovato un baco e in quel caso faremmo bene ad &lt;a href=&#34;https://bugzilla.mozilla.org/enter_bug.cgi?product=Toolkit&amp;amp;component=Places&#34;&gt;avvisare gli sviluppatori di Mozilla&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;Ma se Firefox considera corrotto il file &lt;code&gt;places.sqlite-corrupt&lt;/code&gt;, è molto difficile che il controllo di integrità dia un esito positivo, per cui nella stragrande maggioranza dei casi dovremo andare avanti eseguendo&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sqlite&amp;amp;#62; .clone places.sqlite&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;che clona il database corrotto &lt;code&gt;places.sqlite-corrupt&lt;/code&gt; nel nuovo file &lt;code&gt;places.sqlite&lt;/code&gt; e mentre lo fa ripara automaticamente la struttura delle tabelle. Fatto questo eseguiamo un ultimo comando&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sqlite&amp;amp;#62; PRAGMA user_version;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;che ci restituisce un numero intero &lt;code&gt;NN&lt;/code&gt; (nel mio caso era 52) che dobbiamo segnarci da qualche parte perché ci servirà fra poco. Abbiamo finito di lavorare sul database &lt;code&gt;places.sqlite-corrupt&lt;/code&gt; e quindi usciamo dalla sessione SQLite con il comando&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sqlite&amp;amp;#62; .exit&#xA;$&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;che ci fa tornare al solito prompt di &lt;code&gt;bash&lt;/code&gt;. A questo punto dobbiamo eseguire di nuovo il programma &lt;code&gt;sqlite3&lt;/code&gt;, lavorando questa volta sul database clonato &lt;code&gt;places.sqlite&lt;/code&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ sqlite3 places.sqlite&#xA;sqlite&amp;amp;#62;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Ripetiamo il controllo di integrità (la prudenza non è mai troppa),&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sqlite&amp;amp;#62; PRAGMA integrity_check;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;che questa volta dovrebbe dare esito positivo.&lt;/p&gt;&#xA;&lt;p&gt;Siamo a buon punto, ma ci sono ancora dei dettagli da sistemare. Prima di tutto dobbiamo inserire nel database clonato il valore della variabile &lt;code&gt;user_version&lt;/code&gt;, cioè il numero intero &lt;code&gt;NN&lt;/code&gt; che ci siamo segnati poco fa&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sqlite&amp;amp;#62; PRAGMA user_version = NN;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;poi dobbiamo azzerare il file &lt;code&gt;wal&lt;/code&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sqlite&amp;amp;#62; PRAGMA journal_mode = truncate;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;aggiornare la &lt;a href=&#34;http://www.xenialab.it/meo/web/white/oracle/sqliteInt.htm&#34;&gt;dimensione delle &lt;em&gt;pagine&lt;/em&gt;&lt;/a&gt; in cui è suddiviso il file del database&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sqlite&amp;amp;#62; PRAGMA page_size = 32768;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;ripulire definitivamente la struttura del database&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sqlite&amp;amp;#62; VACUUM;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;e infine ripristinare l&amp;rsquo;uso del file &lt;code&gt;wal&lt;/code&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sqlite&amp;amp;#62; PRAGMA journal_mode = wal; &#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Abbiamo finito, per cui possiamo eseguire&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sqlite&amp;amp;#62; .exit&#xA;$&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;e tornare di nuovo a &lt;code&gt;bash&lt;/code&gt;. L&amp;rsquo;ultimissima cosa da fare è copiare il file riparato &lt;code&gt;places.sqlite&lt;/code&gt; dalla cartella di lavoro al nostro profilo Firefox (prima di farlo non dimenticate di controllare che Firefox sia chiuso)&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ cp -p places.sqlite ~/Library/Application Support/Firefox/Profiles/abcd1234.default/&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Finalmente possiamo eseguire di nuovo Firefox e, se non abbiamo fatto errori, ritroveremo di nuovo tutti i segnalibri. Quando siamo sicuri al 100% che tutto funzioni correttamente, possiamo cancellare il file &lt;code&gt;places.sqlite-corrupt&lt;/code&gt; dal profilo di Firefox, tanto non ci serve più (e comunque c&amp;rsquo;è sempre Time Machine).&lt;/p&gt;&#xA;&lt;h4 id=&#34;conclusioni&#34;&gt;Conclusioni&lt;/h4&gt;&#xA;&lt;p&gt;Mettere le mani in un database non è una cosa semplice e mette sempre un po&amp;rsquo; di ansia. Ma queste istruzioni sono davvero a prova di bomba (gli sviluppatori di Mozilla sanno il fatto loro), basta solo seguire le istruzioni con un po&amp;rsquo; di attenzione e di pazienza e tutto dovrebbe andare bene. In caso contrario, segnalatemi i problemi nei commenti e farò il possibile per rispondere.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Per confronto, Safari salva i segnalibri in &lt;code&gt;Bookmarks.plist&lt;/code&gt;, un file XML che si trova in &lt;code&gt;~/Library/Safari/&lt;/code&gt;, mentre Chrome usa un file JSON, &lt;code&gt;Bookmarks&lt;/code&gt;, situato in &lt;code&gt;~/Library/Application Support/Google/Chrome/Default/&lt;/code&gt;.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;Le prime versioni di Firefox &lt;a href=&#34;http://kb.mozillazine.org/Bookmarks.html&#34;&gt;salvavano i segnalibri&lt;/a&gt; in un semplice file HTML, &lt;code&gt;bookmarks.html&lt;/code&gt;. Il passaggio al database &lt;code&gt;places.sqlite&lt;/code&gt; si è dimostrato una scelta azzeccata, ma all&amp;rsquo;inizio era stato accolto con parecchio scetticismo.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;Il suffisso &lt;code&gt;wal&lt;/code&gt; sta per &lt;a href=&#34;https://en.wikipedia.org/wiki/Write-ahead_logging&#34;&gt;write-ahead logging&lt;/a&gt;, un tipo particolare di file di &lt;em&gt;journaling&lt;/em&gt;.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:4&#34;&gt;&#xA;&lt;p&gt;Una volta finito di scrivere l&amp;rsquo;articolo ho scoperto che Places Maintenance è stato &lt;a href=&#34;https://support.mozilla.org/en-US/questions/1209254&#34;&gt;integrato in Firefox&lt;/a&gt; e che per utilizzarlo basta andare quasi in fondo alla pagina &lt;code&gt;about:support&lt;/code&gt; e premere il bottone &lt;code&gt;Verifica integrità&lt;/code&gt; che si trova sotto l&amp;rsquo;intestazione &lt;code&gt;Database Places&lt;/code&gt; (Figure 2 e 3). Avendo già risolto il problema tramite la procedura descritta nell&amp;rsquo;articolo, non ho però potuto verificarne l&amp;rsquo;efficacia.&lt;br&gt;&#xA;&lt;img src=&#34;https://melabit.files.wordpress.com/2019/08/about-support-2.png&#34; alt=&#34;&#34;&gt;&#xA;&lt;em&gt;Figura 2. Verifica dell&amp;rsquo;integrità del database dei segnalibri tramite lo strumento integrato in Firefox.&lt;/em&gt;&#xA;&lt;img src=&#34;https://melabit.files.wordpress.com/2019/08/about-support-3.png&#34; alt=&#34;&#34;&gt;&#xA;&lt;em&gt;Figura 3. Risultato prodotto dallo strumento di verifica dell&amp;rsquo;integrità del database dei segnalibri.&lt;/em&gt;&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
  </channel>
</rss>
