普段はあまり気にしていなかったのですが、先日に foobar2000 本体やコンポーネントをアップデートした際に異様に起動が遅い…foobar2000 をインストールしたディレクトリを覗いてみると custominfo_sqlite.db のサイズが 6MB 超えている…
なんでだろうと思い、一旦 foobar2000 を終了し SQLite Database Browser にて custominfo_sqlite.db の中を見てみると、同じ曲の fieldname が PLAYED_TIMESTAMP のレコードがやたらとできてる…多分コレのせいでしょう…
Preferences › Playback Statistics Custom › Playback Statistics Custom Settings の Play Stamp をチェックしていると Playback Statistics Update Timing に合致する度にレコードが挿入されてしまう。要はコレは再生履歴なんですが、foobar2000 じゃこのデータを使う手段や使い道がないのでチェックオフにしておく
で、PLAYED_TIMESTAMP フィールドは UI の中でも使用していないので、このレコードを削除する事にします。SQLite Database Browser で行ってもいいんですが、PHP で以下のような簡易ダイエットスクリプトを作成して実行
- <?php
- $dbf = './custominfo_sqlite.db';
- $dbh = new PDO( 'sqlite:'.$dbf );
- $stmt = $dbh->query( 'DELETE FROM quicktag WHERE fieldname = "PLAYED_TIMESTAMP"' );
- echo 'row count: '.$stmt->rowCount()."\n";
- echo 'error code: '.$stmt->errorCode()."\n";
- $stmt = $dbh->query( 'VACUUM' );
- echo 'error code: '.$stmt->errorCode()."\n";
- ?>
上記スクリプトを実行する事によって、約 25000 レコードが削除され、6.02MB だったファイルが 1.19MB までに小さくなりました。小さくなった custominfo_sqlite.db を foobar2000 のディレクトリに戻し、起動…サックリ起動するようになりました
使用しているフィールド PLAY_COUNT, FIRST_PLAYED_TIMESTAMP, LAST_PLAYED_TIMESTAMP が UI 側で正常に表示される事を確認して終了です
と言っても、0.9.5.1 から 0.9.5.2 へのバージョンアップです…0.9.5.3 から作者が暴走し始めたので、1 0.9.5.2 にしました
取り敢えず、自分が使用しているコンポーネントの覚え書き
コンポーネントもアップデートして、自分が作った UI が動作する事も確認して終了…また、暇をみて UI 弄りでもしましょうかね…
ここのブログシステムに WordPress を使用していることはフッター表示で解ると思いますが、スパムブロックには Akismet という同梱プラグインを使用しています。非常に優秀なプラグインで、ほとんどのスパムをブロックしてくれます…が、しかし、ブロックした後の処理がないので件の様なプラグインを作成しました
以下のようなケースの場合に .htaccess の更新を行うプラグインです
以上のケースの場合に、承認ステータスがスパムとなっているコメントを書き込んだ IP アドレスのリストをアクセス拒否として、.htaccess を更新します
.htaccess の更新内容は # BEGIN written by WordPress plugin - Akismet htaccess writer と # END written by WordPress plugin - Akismet htaccess writer ブロック内で行われます。ブロックが存在しない場合にはファイルの末尾に追加で書き込まれます。以下、サンプルです
- # BEGIN written by WordPress plugin - Akismet htaccess writer
- Order Allow,Deny
- Allow From All
- Deny From aaa.bbb.ccc.ddd
- Deny From eee.fff.ggg.hhh
- .
- .
- .
- Deny From www.xxx.yyy.zzz
- # END written by WordPress plugin - Akismet htaccess writer
.htaccess ファイル名が設定されていない、または書き込み可能ではないと .htaccess ファイルは更新されません。また、.htaccess ファイルを書き込み可能にする場合は、HTTPD プロセスが PHP モジュールを実行する際のユーザーに限定して、ファイル属性の設定を行う事を推奨します
このプラグインに関して、決して Akismet プラグイン作者に連絡は取らないでください
PHP を 5.2.5 から 5.2.6 へアップデートしたので、その時のインストールメモです
extension_dir の指定も忘れずに…
- extension_dir=./ext/
- extension=php_mbstring.dll
- extension=php_exif.dll
- error_log = "C:/logs/php_error.log"
- include_path = ".;C:\PHP\pear;C:\PHP\includes;"
>path C:\php;%path%
>set pathext=.php;%pathext%
>assoc .php=PHP_Script
>ftype PHP_Script="C:\php.exe" "%1" %*
httpd.conf を使っている Apache のバージョンに合わせて編集します
- AddType application/x-httpd-php .php
- Action application/x-httpd-php "/php/php-cgi.exe"
- PHPIniDir "C:/php"
- # for Apache 1.x
- LoadModule php5_module "C:/php/php5apache.dll"
- # for Apache 2.x
- LoadModule php5_module "C:/php/php5apache2.dll"
- # for Apache 2.2.x
- LoadModule php5_module "C:/php/php5apache2_2.dll"
- AddType application/x-httpd-php .php
- PHPIniDir "C:/php"
Apache を再起動、確認して終了です
Pear のセットアップとパッケージのインストール を参照してください
私が解っている範囲で他のシステムと関係のあるファイルを列挙しておきます
日付 | 内容 |
2008/07/10 (木) |
|
OpenSearch maker なるモノを作ったもののマニュアルがないので作成…('A`)
各入力フィールドやチェックボックス、ラジオボタンなどを設定して、generate searchplugin ボタンを押す事によって、OpenSearch に対応している UA で使用できます。以下、各項目について、PHP の関数を検索を行うプラグインを作成する例にならって説明していきます
XML ヘッダーを出力する の項目をチェックする事によって XML ヘッダー が生成されるファイルの先頭に付きます。OpenSearch の仕様では、XML ヘッダー は付きません
- <?xml version="1.0" encoding="UTF-8"?>
必須項目で省略できません。設定した名前が Firefox の検索バーに表示されます
- <ShortName>PHP 関数検索</ShortName>
省略できます。検索エンジンの簡単な説明を記述します
- <Description>PHP 関数を検索</Description>
省略できますが、省略された場合 UTF-8 が使われます。GET および POST メソッドで検索エンジンに対してリクエストされる際のエンコードを指定します。ここで指定するエンコード文字セット名称は IANA Character Set Assignments を参照してください
- <InputEncoding>UTF-8</InputEncoding>
省略できます。検索バーに表示される縦16ドット、横16ドットのアイコンファイルを指定します。base64 をチェックすると、アップロードされたアイコンファイルを Base64 でエンコードします。チェックしないと URL エンコード されます。アップロード処理が何らかの原因でエラーになった場合はサーチプラグインファイルは生成されません
- <Image width="16" height="16">data:image/x-icon;base64,Qk02AwAAAAAAADYAAAAo… (省略)</Image>
必須です。検索エンジンのサイト URL を記述します。実際に検索が行われる URL でなければなりません。URL として正しくない値を入力するとエラーとなり、サーチプラグインファイルは生成されません
GET または POST のいずれかを指定しなければなりません。簡単に説明すると GET メソッドは検索エンジンサイトのホスト名や検索語などのパラメーターを URL としてリクエストします。一方、POST メソッドは URL とは別に検索語などのパラメーターをデータとして送信し、検索エンジンにリクエストします
- <Url type="text/html" method="POST" template="http://www.php.net/search.php">
GET メソッドを指定した場合の例を以下に示します。後述のパラメーターを指定する事によって以下の様に出力します
- <Url type="text/html" method="GET" template="http://blog.alphaziel.info/">
- <Param name="s" value="{searchTerms}"/>
- </Url>
GET メソッドを指定し、パラメーターを指定しなかった場合には以下の様に出力します
- <Url type="text/html" method="GET" template="http://blog.alphaziel.info/?s={searchTerms}" />
メソッドが POST の場合は必須です。検索バーで入力した検索語をサーチプラグインに渡す為のキーワード {searchTerms} は値のどこかに設定しなければ、サーチプラグインに検索語が渡りません。また。記述する名前、値のどちらかが欠けていれば、エラーとなり、サーチプラグインファイルは生成されません
- <Param name="pattern" value="{searchTerms}"/>
- <Param name="lang" value="ja"/>
- <Param name="show" value="quickref"/>
generate searchplugin を押す事によって、サーチプラグインを生成し、ダウンロードダイアログが表示されるのでダウンロードを行います。アップロードされたアイコンファイルや生成されたサーチプラグインはダウンロードの段階で削除されます
ダウンロードしたサーチプラグインファイルを Firefox のプロファイルディレクトリの中の searchplugins ディレクトリにコピーまたは移動し、Firefox を再起動します