Ti, kdo se šťourají v profilu Firefoxu, vědí, že ukládá svoje data (historie, cookies apod.) do databáze SQLite (soubory s příponou „.sqlite“). Tato databáze má tu nectnost, že „vymazaná“ data fyzicky neodstraňuje, dokud na tabulku (nebo index) nezavoláte SQL příkaz „VACUUM“ (asi něco jako když „smažete“ soubory ve Windows :-)). To má za následek, že soubor databáze časem bobtná (podle toho kolik surfujete, hodně přidávají RSS čtečky) a potenciálně zpomaluje prohlížeč (ne dramaticky – nicméně mně bobtná opravdu hodně :-) – mažu historii a zmenšuju jednou měsíčně – právě kvůli RSS blogů).
Pro její zmenšení můžete použít výborný multiplatformí (postavený na Qt frameworku) program SQLite Database Browser. Stačí otevřít databázi (nejlépe je asociovat příponu .sqlite s tímto programem) a dát File -> Compact database. Má ale chybku v tom, že neumožňuje dávkové zpracování – databází je ve Firefoxu více a navíc i další programy využívají výhod SQLite :-) (schválně zkuste najít na začátku obsahu souborů „SQLite format 3“ – ty ovšem nebobtnají tak rychle, ale někdy je to zajímavé počteníčko ;-)).
Takže jsem si (z lenosti :-)) napsal skriptík, který dávkové zpracování umožňuje. Pro jeho běh budete potřebovat Python (řady 3) (tučňák ho obvykle má v sobě). Pokud máte sklony naučit se programovat, začněte právě Pythonem – snadno se učí a umí opravdu mnoho (právě práce s databází SQLite je strašně snadná a rychlá – proto ho používám; zkuste si napsat jednoduchý program s databází v Javě – vrátil jsem se k Pythonu, nechci tu ale vyvolávat flame).
Fígl pro SQLite
Jedna databáze může obsahovat hodně tabulek a indexů a je příliš pracné psát pro ně příkazy ručně, nehledě na to, že se mohou změnit – název/počet. Fígl je v tom, že každá SQLite databáze obsahuje tabulku sqlite_master, která obsahuje jména všech tabulek a indexů. Stačí tedy jen položit SQL dotaz
SELECT name FROM sqlite_master WHERE type=“table“ (nebo „index“)
a máte jejich seznam :-).
Skriptík
Skripty jsou dva – spouštěcí skript run_shrink.py a skript class_vacuum_databases.py, který obsahuje všechny potřebné funkce (zabalené do třídy).
Soubor run_shrink.py obsahuje 3 následující funkce:
addFolder("C:/Documents and Settings/mojeJmeno/Data aplikací/Mozilla/Firefox/Profiles/nas4iwsa.default/", ".sqlite")
addFolderRecursive("C:/MojeDatabáze/", ".sqlite")
addPath("C:/Databáze.sqlite")
Pro naše potřeby ve funkci addFolder nahraďte „C:/Documents….“ za cestu k Vašemu profilu a soubor uložte (s kódováním utf-8) a spusťte. Skript vyčistí všechny databáze s příponou „.sqlite“ (2. parametr). Skript spusťte.
Skript umí vyčistit i jednotlivý soubor – fce addPath, nebo danou složku projít včetně podsložek – fce addFolderRecursive. Druhý parametr fcí addFolder* je přípona databáze, kterou skript hledá. Jak vidíte, možnosti jsou téměř univerzální.
Upozornění
Programy (např. Firefox), které používají čištěné databáze, by měly být během běhu skriptu vypnuté!!!
P.S. Prosím za prominutí, že má kód skriptu do profesionálního kódu daleko, píšu si je jen tak aby fungovaly – pokud možno bez chyb :-)