SSブログ

Firefox の sqlite の最適化 [Firefox]

またまた放置してしまいましたが、ぼちぼち生きてます。

2013-02-13頃、書きました。

□ 1. 概要

Firefox が使用する *.sqlite データベースファイルを最適化する手順のメモ。

最近、Firefox の重さに我慢できなくなった。
原因のひとつが SQLiteデータベースにあり、それを最適化すると、改善する場合がある(らしい)。
そして、最適化とは vacuum して reindex する事らしい。(←嘘かもしれません)

それが目的のアドオン、SQLite Optimizer :: Add-ons for Firefox があるのだが、Firefox 17.0/18.0 あたりは未対応のよう。(2013-01-23時点)
このアドオンを展開して、どこかを書き換えれば動くかもしれないけど、今回は別の方法が見つかったので、そっちで。

2013-01-19 片鱗懐古のブログ: sqlite3でfirefoxのプロファイルをvacuum
なるほど、コマンドライン(?)からやれば良いわけですね。ありがとうございます>片鱗懐古のブログさん

この方法での最適化を Linux と Windows でやってみたのでメモしておく。

□ 2. バージョンなどメモ

Linux


- OS: CentOS 5.9
- Firefox: 17.0 i686
- SQLite3: 3.3.6
- Date: 2013-01-23

Windows


- OS: Windows XP pro.
- Firefox: 18.0.2
- SQLite3: 3.7.15.2 (?)
- Date: 2013-02-13

□ 3. SQLite3 の入手

Linux

インストール済みだったので何もしていない。
$ rpm -q sqlite
sqlite-3.3.6-6


Windows

SQLite Download Page から、"sqlite-shell-win32-x86-3071502.zip (266.31 KiB)" をダウンロード。
中身は sqlite3.exe がひとつ入っているだけ。今回は Firefox のプロファイルフォルダに置いた。(これにしか使わないから)

□ 4. 最適化するデータベースファイル

データベースファイルは、プロファイルフォルダにあるみたい。

- プロファイル | Firefox ヘルプ

Linux

ls -l *.sqlite の結果
 -rw-r--r-- 1 myname myname   589824  1月 23 08:34 addons.sqlite
 -rw-r--r-- 1 myname myname   262144  1月 22 08:26 chromeappsstore.sqlite
 -rw-r--r-- 1 myname myname   229376  1月 21 08:43 content-prefs.sqlite
 -rw-r--r-- 1 myname myname   524288 12月 12 17:20 cookies.sqlite
 -rw-r--r-- 1 myname myname    65536  1月 23 08:30 downloads.sqlite
 -rw-r--r-- 1 myname myname   163840  1月 23 08:38 evernote_webclipper.sqlite
 -rw-r--r-- 1 myname myname   524288  1月 23 08:38 extensions.sqlite
 -rw-r--r-- 1 myname myname   851968  1月 23 08:49 formhistory.sqlite
 -rw-r--r-- 1 myname myname   163840  1月 23 08:51 permissions.sqlite
 -rw-r--r-- 1 myname myname 10485760  1月 23 08:49 places.sqlite
 -rw-r--r-- 1 myname myname    65536  8月 27 17:36 search.sqlite
 -rw-r--r-- 1 myname myname   327680  9月  6 10:27 signons.sqlite
 -rw-r--r-- 1 myname myname 57671680 11月 21 10:23 urlclassifier3.sqlite
 -rw-r--r-- 1 myname myname    98304 11月 29  2011 webappsstore.sqlite


Windows

dir *.sqlite の結果
 2013/02/13  09:35           589,824 addons.sqlite
 2013/01/17  08:23           262,144 chromeappsstore.sqlite
 2012/12/12  10:38           229,376 content-prefs.sqlite
 2013/01/21  13:00           524,288 cookies.sqlite
 2013/02/04  10:47            65,536 downloads.sqlite
 2013/02/12  08:31            98,304 evernote_webclipper.sqlite
 2013/02/12  08:31           524,288 extensions.sqlite
 2013/02/13  08:50         4,751,360 formhistory.sqlite
 2013/02/13  09:43            65,536 permissions.sqlite
 2013/02/13  09:43        10,485,760 places.sqlite
 2012/06/22  08:30            65,536 search.sqlite
 2012/09/06  10:17           327,680 signons.sqlite
 2012/11/20  11:05            98,304 webappsstore.sqlite


□ 5. スクリプトを書いた

Firefox のプロファイルフォルダに、ごく簡単なスクリプトを作った。
- どちらもバックアップファイルを作って、最適化する。
- バックアップファイルがある場合はやらない。
- sqlite3 の使い方が、よくわからないので違っているかも。

Linux

Shell Script で。
 $ cat optimize_sqlite.sh
 #!/bin/sh
 while [ "x$1" != "x" ]
 do
         database=$1
         backupfile=$database.backup
         if [ ! -e $backupfile ]
         then
                 cp -p $database $backupfile
                 sqlite3 $database "vacuum;reindex;"
         fi
         shift
 done


Windows

Windows のバッチファイルは、繰り返し処理とか、条件分岐とか・・・独特かつプアで困る。
MS-DOS時代からあまり変わってない。MSさん的には「GUIを使ってね」と、あえてやってないだけだと思けど・・・。
Cygwin を入れたくなるが、それをこらえて 2つのバッチファイルを作った。

for文の引数に複数のコマンドを書く方法もあるらしいけどが、その中で条件分岐ってどうやるのかわからない。
出来たとしても、きっとわけわからん事になるので、2つに分けた。
もっと良いやりかたがありそうだけど・・・。

- optimize_sqlite.bat
 @echo off
 for %%d in (%1) do cmd/c "optimize_sqlite_exec.bat %%d"


- optimize_sqlite_exec.bat
 @echo off
 if "x%1" == "x" goto label_noargs
 
 set database=%1
 set backupfile=%database%.backup
 
 if exist %backupfile% goto label_backup_exist
 
 copy /b /v %database% %backupfile%
 sqlite3 %database% "vacuum;reindex;"
 goto label_exit
 
 :label_noargs
 echo usage: optimize_sqlite_exec sqlite-databse-file
 goto label_exit
 
 :label_backup_exist
 echo %backupfile% is found, ignored
 goto label_exit
 
 :label_exit


□ 6. 最適化してみる

Firefox がデータベースファイルをオープンしているかもしれないので、Firefox を終了して実行。

Linux

 $ sh optimize_sqlite.sh *.sqlite


Windows

 C:\(省略)> optimize_sqlite *.sqlite


□ 7. 結果

リンクをクリックしてページのロードが開始されるまでが、早くなったような気がする。

Linux

サイズが変わったのは以下の4つ。あとは変わらなかった。
places.sqlite が、変わってないのは、Vacuum Places Improved :: Add-ons for Firefox で、お掃除していたからだと思う。

- chromeappsstore.sqlite : 262144 => 98304
- formhistory.sqlite : 851968 => 720896
- permissions.sqlite : 163840 => 131072
- urlclassifier3.sqlite : 57671680 => 43843584

Windows

- chromeappsstore.sqlite: 262144 => 98304
- cookies.sqlite: 524288 => 131072
- formhistory.sqlite: 4751360 => 4816896 (ちょっと増えた?)
- places.sqlite: 10485760 => 4325376

おわり
nice!(1)  コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

BlockSite Plus [Firefox]

□ 概要

Firefox のアドオン、BlockSite Plus を入れてみたお話し。
( Linux 版13.0 がメイン、 Windows版14.0.1 でちょっとだけ検証 )

□ Google検索のブロック機能を補完する(したい)

以前書いた通り、Google検索のブロック機能を使わせてもらっているのだが、若干不満が残る。
( → Googleのブロックしたサイトの管理への要望 )

例えば、次のような問題が起こる。
- 『http://blog.livedoor.jp/dqnplus/ 痛いニュース(ノ∀`)』をブロックするように登録。すると、
- 『http://blog.livedoor.jp/dqnplusminus/ 痛いニュース(ヽ´ω`)』もブロックされてしまう。

これは、パス名(ディレクトリ名)以下は指定できず(無視され)、ホスト単位でブロックされる為だろう。
「サイトのブロック管理」機能であるから、言葉的にはそれで正しいのかもしれないけど。

□ BlockSite Plus のインストール

このアドオンを使うと、ハイパーリンクが削除され、クリックしても飛ばなくなるらしい。

- BlockSite Plus :: Add-ons for Firefox

2012-08-08時点で、レビューは6件しかなく、相反する事が書かれてる。
- "Waist of Space" (たぶん Waste of Space の間違い)
- "Doesn't work"
- "exactly what I needed"
- "I love it"

□ BlockSite Plus を使ってみる

# Windows版14.0.1のアドオンマネージャでは、なぜか見つからず。インストールは出来た。

- インストールする(firefoxを再起動しなくて良いらしい)
- 設定画面を開いて、Blacklist に追加

ためしに http://blog.livedoor.jp/dqnplus/ を追加して "痛いニュース" を検索してみる。
もちろん、Google検索から除外する事は出来ないわけだが、
ハイパーリンクが削除され、ただのテキストになる事が確認できた。
これなら一目で「自分が見たくないサイト」であることがわかる。

「痛いニュース(ヽ´ω`)」の方は・・・・結果に表れないのでわからない(^^
"痛いニュース(ヽ´ω`)" で検索してみると、ちゃんとリンクは残っており、大丈夫。
素晴らしい、"exactly what I needed" です。

□ Google検索ブロック済サイトを追加

さらに Googleの検索結果以外のあらゆるページで効くのが良いところ(きっと)。
既にGoogle検索でブロック登録しているサイトも追加しよう。
「Import」というボタンがあるのでインポート出来るはず。

手順。
ブロックしたサイトの管理 で、
『テキスト ファイルとしてダウンロード 』をクリックし、blocked_sites.txt を保存。
ちなみに 2012-08-07現在、 279件ブロックしている。
$ wc -l blocked_sites.txt
279 blocked_sites.txt

この blocked_sites.txt は、ホスト名が並んでいるだけ。
一方、BlockSite Plus の方は、ちゃんと http://hamusoku.com/ のようなURLを指定するようだ。
また、新しく登録した順に並んでいるようなので、ソートする。
さらに先頭行に [BlockSite] が必要らしい。
まとめると、こんな感じ。

$ ( echo [BlockSite] ; sort blocked_sites.txt | sed -e 's/^/http:\/\//' -e 's/$/\//' ) > block_urls.txt

# Windows だとどうするのでしょう? テキストエディタによっては、検索置き換えで、出来るかも?

Import で block_urls.txt を指定して、開く> Append > OK

やり過ぎた。自分のはてぶも表示しなくなってしまった。
その場合は、そのサイトをブラックリストから削除すれはオーケー(だと思います)。

□ Google八分出来ないサイトを追加

あとは、http://blog.livedoor.jp/dqnplus/ のようなサイトを登録してゆけば、オーケーのはず。
これは「ある程度のリスト」を作ってあるので、別のエントリに書くかも。

■ 感想

- ハイパーリンクが削除されるので、
-- 検索結果のページでは、、アクセスしたくないサイトであることが一目でわかる。
-- そうでないページでは、作者がリンクしなかったのか、アドオンが削除したのか、よくわからない。
-- なにか「削除した事を示すマーカー」でもあれば、より良いのかな?

- ディレクトリ名(パス名)の部分も評価してくれるので、
-- Google検索で除外できないサイトにも使える
-- 文句なし

- ブックマーク、リダイレクト、URLを直接入力などでも効くようなので (未確認)
-- 間違ってもアクセスできなくなる。
-- 文句なし

- 登録作業画面、アドオンマネージャからしか行けない?
-- 一度、登録してしまえばあまり触らないから、それでいいのかも。

nice!(1)  コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

CentOS 5.6 で firefox 6.0 を動かす話し [Firefox]

すぐに CentOS 6.0 に出来ないので、CentOS 5.6 に firefox 6.0 を rpm化してインストールした。
基本的には、CentOS 5.5 で firefox-4.0 を動かす話し と同じ。 libstdc++ が問題になるだけ。

必要なもの

■ ~/rpm/SOURCES/firefox-6.0.tar.bz2

これは 次世代ブラウザ Firefox - 各国語版のダウンロード
から日本語版をダウンロードした。

■ ~/rpm/SOURCES/firefox.desktop と ~/rpm/SOURCES/firefox.png

これらは FedoraNEWS.ORG あたりから拾ってきたような気がする。

真ん中あたりに Desktop File - firefox.desktop と Image File - firefox.png がある。たぶんそれだと思う。

■ ~/rpm/SOURCES/libstdc++.so.6

CentOS 5.6 の libstdc++ は、firefox 4.0 以降の要求(libstdc++ 4.3 以上)を満たせない(古い)。

libreoffice3 に丁度良い libstdc++ (libstdc++.so.6) が入っていたのでそれを使っている。
$ cp -p /opt/libreoffice/ure/lib/libstdc++.so.6 ~/rpm/SOURCES

# むしろ、それ以外の要求を辛うじてクリアしている事に感謝すべきかも。

■ ~/rpm/SPECS/firefox-6.0.spec

これは以前に FedoraNEWS.ORG から拾って、
バージョンが変わるたびに修正している。現在の内容は後の方にメモする。

ビルド

$ rpmbuild -bb ~/rpm/SPECS/firefox-6.0.spec

~/rpm/RPMS/i686/firefox-6.0-1.i686.rpm が出来るはず。root でアップデートするだけ。

SPECファイル

Name                 : firefox
Version              : 6.0
Release              : 1
Summary              : Mozilla Firefox Web browser.
Group                : Applications/Internet
License              : MPL
Vendor               : Mozilla Foundation
URL                  : http://www.mozilla.org/products/firefox/
Source0              : %{name}-%{version}.tar.bz2
Source1              : firefox.desktop
Source2              : firefox.png
Source3              : libstdc++.so.6
BuildRoot            : %{_tmppath}/%{name}-%{version}-buildroot
BuildArch            : i686
Requires             : alsa-lib
Requires             : gtk2 >= 2.10
Requires             : glib2 >= 2.12
Requires             : pango >= 1.14
AutoReq              : No
AutoProv             : No

%description    
Mozilla Firefox is an open-source web browser, designed for standards
compliance, performance and portability.

%prep           
rm -rf %{buildroot}

%setup          -c -q

%install
install    -d -m 755 %{buildroot}%{_libdir}
cp -a firefox %{buildroot}%{_libdir}
install    -D -m 644 %{SOURCE1} %{buildroot}%{_datadir}/applications/firefox.desktop
install    -D -m 644 %{SOURCE2} %{buildroot}%{_datadir}/pixmaps/firefox.png
install    -d -m 755 %{buildroot}%{_bindir}
ln -s %{_libdir}/firefox/firefox %{buildroot}%{_bindir}/firefox
ln -s %{_libdir}/firefox/firefox-bin %{buildroot}%{_bindir}/firefox-bin
cp -p %{SOURCE3} %{buildroot}%{_libdir}/firefox

%post           
rm -rf %{_libdir}/firefox/plugins
ln -sf %{_libdir}/mozilla/plugins %{_libdir}/firefox/plugins

%clean          
rm -rf %{buildroot}

%files
%defattr(-,     root, root)
%{_libdir}/firefox/* 
%{_datadir}/applications/firefox.desktop 
%{_datadir}/pixmaps/firefox.png 
%{_bindir}/firefox 
%{_bindir}/firefox-bin 

%changelog      
(changelogは省略)


CentOS 5.5 で firefox-4.0b11 を動かす話し [Firefox]

■ firefox-4.0b11 起動せず

CentOS 5.5 で firefox-4.0b11 を動かそうとすると GLIBCXX_3.4.9 がどうの、って動かない。
(この例では /home/someone/firefox4beta11 にインストールしてある事にしてます)

$ /home/someone/firefox4beta11/firefox -ProfileManager
/home/someone/firefox4beta11/firefox-bin: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /home/someone/firefox4beta11/libxul.so)

ファイルシステム中に /usr/lib/libstdc++.so.6 はあるけど、古いらしい。

$ rpm -qf /usr/lib/libstdc++.so.6
libstdc++-4.1.2-48.el5

■ LibreOffice-3.3 の libstdc++.so.6 を使う

インストールしてあった LibreOffice-3.3 に libstdc++.so.6 が含まれていた。

$ locate libstdc++.so.6
/opt/libreoffice/ure/lib/libstdc++.so.6
/usr/lib/libstdc++.so.6
/usr/lib/libstdc++.so.6.0.8

$ rpm -qf /opt/libreoffice/ure/lib/libstdc++.so.6
libreoffice3-ure-1.7.0-5

$ strings /opt/libreoffice/ure/lib/libstdc++.so.6 | grep GLIBCXX_3.4.9
GLIBCXX_3.4.9

いけそう。

$ LD_LIBRARY_PATH=/opt/libreoffice/ure/lib:$LD_LIBRARY_PATH /home/someone/firefox4beta11/firefox -ProfileManager

起動した♡

■ 起動スクリプト修正

/etc/ld.so.conf に /opt/libreoffice/ure/lib を追加して、/sbin/ldconfig するのは避けたい。
/opt/libreoffice/ure/lib には、他のライブラリもあるので嫌だ。
/home/someone/firefox4beta11/firefox を修正しよう。

2行追加。
#!/bin/sh
export LD_LIBRARY_PATH
LD_LIBRARY_PATH=/opt/libreoffice/ure/lib:$LD_LIBRARY_PATH

■ プラグインが起動できない?

プラグインが起動できないようだ。起動したターミナルにエラーが出る事がある。
/home/someone/firefox4beta11/plugin-container: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /home/someone/firefox4beta11/libxul.so

export LD_LIBRARY_PATH してあるけど効いてないのかな?
よくわからないけど、flash要らないし、面倒なのでプラグインは全部無効に。

■ その後

- アドオンは(自分に必要なものは)だいたい動く。
- (Linux版) firefox 3.6.13 はよく落ちるし、4.0b11 落ちないわ。もう切り換えしても良さそう、と思ってたら落ちた。

- 今後の目標
-- libstdc++.so.6 のアップデート? gcc44-4.4.0-6.el5.src.rpm を後で試す。
-- rpm化してインストール。

■ 関連リンク
- Firefox 4 ベータ版 - 次期バージョンのベータテストにご協力ください
- Home » LibreOffice

Firefox-3.6.6 [Firefox]

先日、Firefox-3.6.4 にしたばかりなのに Firefox-3.6.6 が出ていた。

Firefox-3.6.5 はどうした?
Firefox 3.6.4 がリリースされたと思ったらすぐに 3.6.6 がリリース - スラッシュドット・ジャパン

> 3.6.5 は(省略)デスクトップ版のリリースはスキップされたらしい
> 「応答しなくなってから 10 秒でクラッシュ判定」
> 判定時間を 45 秒にした 3.6.6 がリリースされた

10秒の方が良いな。
なるほど、about:config で dom.ipc.plugins.timeoutSecs の値を修正すれば良い、と。


「プラグインプロセスの分離」の効果はどうだったかと言うと、効果はあった。
ポイントポンの終了で相変わらずブラウザは固まるが、
プラグインプロセスだけを kill する事が出来た。
しかし、kill -9 pid としなければならなかった。
そして、firefox 自体の crash が増えたような気がする。

まぁ、Linux版のflashが安定する事がいちばんなのだが、下記の記事にあるコメントの通りなのかもしれない。

LinuxでFlashは何故上手く動かない? - スラッシュドット・ジャパン

> 俺たちはより速く、そして、より安定させるために、必死でやってる。
> でも、まともなバグレポートが来ねぇ。
> 「不安定だ」とか「よく落ちる」とかっていう、クソの役にも立たない報告はいらねぇ。
> URLをきちんと書いた、再現性のある奴を頼むぜ。

でも、英文のバグレポートを出すのは難しいな。

ブログを作る(無料) powered by SSブログ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。