DB Designer 4 の HTMLReport プラグインの改造

  オープンソースの DB モデリングツール DB Designer にバンドルされている HTMLReport を少し改造してみました.

  改造前の HTMLReport は,出力される HTML ファイルのモデル名が,以下のように強制的に「plugin_tmp.xml」という文字列になります.

  改造前の HTMLReport の出力

  本来ここは,[オプション] - [一般設定] - [モデル名] で指定した文字が入るのが妥当だと思います.
  また,[オプション] - [一般設定] - [コメント] で入力したコメントがどこにも反映されません.

  HTML レポートを出力するたびに,モデル名を書き換えて,さらにコメントを加えるのは大変面倒なので,きちんとモデル名が反映されて,コメントも出力できるように改造してみました.

  改造対象は,日本語化された DB Designer で,ソースコードは日本語化サイトからダウンロードすることができます.

- DBDesigner 4 日本語化サイト
  http://dbdesigner.iimp.jp/

- パッチ
  http://pocari.org/tools/DBDesigner/HTMLReport.diff

--- HTMLReport-orig/Main.pas    2003-09-20 17:10:14.000000000 +0900
+++ HTMLReport/Main.pas    2007-03-31 14:26:59.000000000 +0900
@@ -504,7 +504,10 @@
   try
     aReportFile.LoadFromFile(theFilePath+'ReportHeader.txt');
     theReport:=DMMain.ReplaceText(aReportFile.Text,
-      '<?=$Modelname?>', 'Database Model '+ExtractFileName(EERModel.ModelFilename));
+      '<?=$Modelname?>', EERModel.GetModelName);
+
+    theReport:=DMMain.ReplaceText(theReport,
+      '<?=$ModelComments?>', EERModel.ModelComments);
 
     aReportFile.LoadFromFile(theFilePath+'Report.css');


- パッチを当てたバイナリ (Windows 版)
  http://pocari.org/tools/DBDesigner/DBDplugin_HTMLReport.zip

  (パッチを当てたバイナリは,DB Designer がインストールされたフォルダに上書きコピーしてください.)

  このパッチを適用すると以下のように,モデル名,コメントが反映されるようになります.
  テンプレート変数 $Modelname にモデル名が割り当てられて,$ModelComments にコメントが割り当てられます.

  改造後の HTMLReport の出力

  また,標準で付いているテンプレートを日本語化したファイルも以下に置いておきます.
  DBDesigner\Data\Plugins\HTMLReport 以下にディレクトリごとコピーしてください.

- テンプレートの日本語化
  http://pocari.org/tools/DBDesigner/Standard-ja.zip

  ライセンスは,オリジナルと同じ GPL です.

Solaris 10 に MeCab と Senna と MySQL をインストールする …… 失敗

  まず,MeCab のインストール.
  MeCab 0.8.1 と共存したいので,/usr/local/mecab/0.9 にインストールすることにします.

- MeCab 0.95

$ tar -zxvf mecab-0.95.tar.gz
$ cd mecab-0.95
$ ./configure --prefix=/usr/local/mecab/0.9
$ make
# make install

- ipadic 2.7.0

$ tar -zxvf mecab-ipadic-2.7.0-20060707.tar.gz
$ cd mecab-ipadic-2.7.0-20060707
$ ./configure --prefix=/usr/local/mecab/0.9
$ make
# make install

  ここで MeCab にパスを通しておく

$ export PATH=${PATH}:/usr/local/mecab/0.9/bin
$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/mecab/0.9/lib
$ export LD_RUN_PATH=${LD_LIBRARY_PATH}

  次に Senna のインストール.こちらは /usr/local/senna にインストールします.

- Senna 1.0.2

$ tar -zxvf senna-1.0.2.tar.gz
$ cd senna-1.0.2
$ ./configure --prefix=/usr/local/senna
$ make INCLUDES=-I/usr/local/mecab/0.9/include

  とここで,以下のエラーが出ました.

store.c: In function `sen_fse_open':
store.c:75: error: `UINT_MAX' undeclared (first use in this function)
store.c:75: error: (Each undeclared identifier is reported only once
store.c:75: error: for each function it appears in.)
make[2]: *** [store.lo] Error 1
make[2]: Leaving directory `/home/suna/workspace/src/senna-1.0.2/lib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/suna/workspace/src/senna-1.0.2'
make: *** [all] Error 2

  どうも UINT_MAX が定義されていないようです.とりあえず,lib/store.c に以下のパッチを当てました.
  #include <limits.h> を付け加えただけです.

--- store.c-orig        2007-03-14 15:48:35.000000000 +0900
+++ store.c     2007-03-15 21:57:30.308187817 +0900
@@ -19,6 +19,7 @@
 #include "inv.h"
 #include "store.h"
 #include <string.h>
+#include <limits.h>

 /* fixed sized elements */


  もう一度 make します.

$ make INCLUDES=-I/usr/local/mecab/0.9/include
# make install

  以下のような warning がたくさん出ましたが,とりあえず make が終了しました.

../config.h:86:1: warning: "_FILE_OFFSET_BITS" redefined

- MySQL 4.1.22

$ tar -zxvf mysql-4.1.22.tar.gz
$ cd mysql-4.1.22

  ここで Senna から提供されている 4.1.20 用のパッチを当てようとしたのですが,2ind パッチでうまく当たらないファイルがあった (sql/item.h) ので 4.1.22 用のパッチを作りました.ついでに 2ind でない方のパッチも 4.1.22 用に新しくしました.

o mysql-4.1.22.senna.diff
o mysql-4.1.22.senna.2ind.diff

$ patch -p1 < ../mysql-4.1.22.senna.diff
$ patch -p1 < ../mysql-4.1.22.senna.2ind.diff (2ind パッチを当てる場合)

  configure を再生成します.
  senna に含まれるドキュメント (doc/INSTALL.JA) には

bison 1.75, autoconf 2.59, automake 1.8(aclocal 1.8)以上が必要です

  のような記載がありますが,実際はこれらに加えて,libtool も必要です.

$ libtoolize -c -f
$ aclocal
$ autoheader
$ automake -c -a -i
$ autoconf
$ touch sql/sql_yacc.yy

  次に configure をします.
  configure の際には,--with-senna と --with-mecab をオプションに追加します.

$ ./configure --prefix=/usr/local/mysql \
              --with-extra-charsets=all \
              --without-readline \
              --enable-assembler \
              --with-low-memory \
              --with-senna=/usr/local/senna \
              --with-mecab=/usr/local/mecab/0.9
$ make
# make install

  ちなみに,MySQL バインディングは Tritonn という別プロジェクトになったみたいです.
  MySQL 5.0.36/5.0.37 の場合は Tritonn からパッチがリリースされています.

- Tritonnプロジェクト ~ MySQL+Sennaによる全文検索 ~ - Tritonnプロジェクト
  http://qwik.jp/tritonn/

  とりあえず,インストールはこれで完了です.
  動作確認はまた後日.

- 追記
  うまくいったと思ったら,MySQL の make でエラーが出てました.

sql_yacc.cc: In function `int yyparse(void*)':
sql_yacc.cc:22272: error: expected primary-expression before "__attribute__"
sql_yacc.cc:22272: error: expected `;' before "__attribute__"

  うーむ.これについてもまた後日調べるとします.

XAMPP に含まれる Apache,MySQL,PHP のバージョンの遷移

  以下の情報は古いものです。最新の情報は、[2007-11-04-1] XAMPP に含まれる Apache,MySQL,PHP のバージョンの遷移にあります。




  約一年ぶりに調査.

XAMPP      リリース日 Apache 2.x MySQL 4.x MySQL 5.x PHP 4.x    PHP 5.x
0.9        2003-07-22 2.0.47      4.0.14                4.3.3 rc2
1.0        2003-09-03 2.0.47      4.0.14                4.3.3     
1.1        2003-10-13 2.0.47      4.0.16                4.3.3     
1.2        2003-11-04 2.0.48      4.0.16                4.3.4     
1.3        2004-02-10 2.0.49      4.0.18                4.3.6     
1.4        2004-03-25 2.0.49      4.0.18                4.3.4     
1.4.2      2004-04-06 2.0.49      4.0.18                4.3.6     
1.4.3      2004-06-12 2.0.49      4.0.20a               4.3.7     
1.4.4      2004-07-03 2.0.50      4.0.20                4.3.7     
1.4.5      2004-07-14 2.0.50      4.0.20                4.3.8      5.0.0
1.4.6      2004-08-16 2.0.50      4.0.20                4.3.8      5.0.1
1.4.7      2004-09-18 2.0.51      4.0.21                4.3.8      5.0.1
1.4.8      2004-09-25 2.0.51      4.0.21                4.3.9      5.0.2
1.4.9      2004-10-02 2.0.52      4.0.21                4.3.9      5.0.2
1.4.10     2004-12-05 2.0.52      4.1.7                 4.3.9      5.0.2
1.4.11     2004-12-25 2.0.52      4.1.8                 4.3.10     5.0.3
1.4.12     2005-02-20 2.0.53      4.1.9                 4.3.10     5.0.3
1.4.13     2005-04-10 2.0.54      4.1.11                4.3.11     5.0.4
1.4.14     2005-06-19 2.0.54      4.1.12                4.3.11     5.0.4
1.4.15     2005-08-14 2.0.54      4.1.13                4.4.0      5.0.4
1.4.16     2005-10-03 2.0.54      4.1.14                4.4.0      5.0.5
1.5.0      2005-11-06 2.0.55                 5.0.15     4.4.1      5.0.5
1.5.0-pl1 2006-01-08 2.0.55                 5.0.15     4.4.1-pl1 5.0.5
1.5.1      2006-01-08 2.2.0                  5.0.18     4.4.1-pl1 5.1.1
1.5.2      2006-04-26 2.2.0                  5.0.20     4.4.2-pl1 5.1.2
1.5.3      2006-05-28 2.2.2                  5.0.21     4.4.2-pl1 5.1.4
1.5.4      2006-09-10 2.2.3                  5.0.24a    4.4.4      5.1.6
1.5.4a     2006-10-04 2.2.3                  5.0.24a    4.4.4      5.1.6
                                                                    
最新版                 2.2.3       4.1.21     5.0.26     4.4.4      5.1.6


  最新版は,2006-10-22 での各プロダクトの最新バージョン.
  調査対象は XAMPP for Windows.

- XAMPP
  http://sourceforge.net/projects/xampp/
  http://www.apachefriends.org/en/xampp.html

オープンソースの DB モデリングツール DB Designer 4 の日本語化

  http://dbdesigner.iimp.jp/

  すばらしいです.DB Designer 4 の日本語化.
  メニューやオプション画面などが日本語化されています.

  また,HTML Report プラグインの不具合も fix されています.

  DB Designer
  DB Designer

  上書きしても,日本語化できない場合は,上記サイトにあるように

C:\Documents and Settings\<USERNAME>\Application Data\DBDesigner4

  の中身を全部削除すればいいけど,設定したオプションが消えてしまう予感がするので,

DBDesigner4_Translations.ini
DBDesigner4_Translations.txt
Language.ini

  だけを消しても OK でした.

- ref.: DBDesigner の HTMLReport
  http://www.siwa32.com/article100


- via: オレンジニュース
  http://secure.ddo.jp/~kaku/tdiary/20060927.html#p05

超・極める! MySQL

  4798112135
  amazon.co.jp 詳細ページへ
  坂井 恵 (著), 志村 和彦 (著), ひろせ まさあき (著), 松信 嘉範 (著)
  翔泳社
  ISBN: 4798112135
  2006/10/4
  1,995 円

  よさげ

拡張され続ける InnoDB のデータファイルのサイズを小さくする方法

  MySQL でトランザクションを可能にするストレージエンジンとして InnoDB があります.
  InnoDB のデータファイルは,MyISAM テーブルと異なって,デフォルトでは ibdata1 というファイルにデータが蓄積されていくとこになります.

MySQL の datadir に自動拡張する 10 MB の ibdata1 ファイルが 1 つと、5 MB の ib_logfile ログファイルが 2 つ作成されます

- 7.5.3. InnoDB 起動オプション
  http://dev.mysql.com/doc/refman/4.1/ja/innodb-start.html

  この ibdata1 は,大量のデータを追加していくと,自動的にサイズを拡張していきます.
  ただし,データが削除されても自動的には縮小されません.

  InnoDB テーブルのデフラグメント化の方法は,

- 7.5.13.3. InnoDB テーブルのデフラグメント化
  http://dev.mysql.com/doc/refman/4.1/ja/innodb-file-defragmenting.html

  にあるように,

ALTER TABLE tablename TYPE=InnoDB


  で行います.ただし,これを行っても,データファイルのサイズ自体は小さくなりません.

# ls -la ibdata1
-rw-rw----   1 mysqld   mysqld   723517440 Jul  6 20:32 ibdata1

# mysql -uroot -p database
mysql> ALTER TABLE FileInfo TYPE=InnoDB;
Query OK, 0 rows affected, 1 warning (3.98 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> quit

# ls -la ibdata1
-rw-rw----   1 mysqld   mysqld   723517440 Jul  6 20:33 ibdata1

  でも,容量不足に陥った場合,これでは困りますよね.
  そこで,データファイルのサイズ自体を小さくしてしまおうというのが本題です.

  InnoDB 関係ののマニュアルを見ていくと以下のような項目があります.

- 7.5.5.3. 複数テーブルスペース - 各テーブルを独自の .ibd ファイルに入れる
  http://dev.mysql.com/doc/refman/4.1/ja/multiple-tablespaces.html

  これは,簡単に言うと,ibdata1 一つに持たせていたデータを,それぞれのテーブルごとに持たせてしまう方法です.
  やり方はいたって簡単で,設定ファイルに innodb_file_per_table を加えてあげるだけです.

[mysqld]
innodb_file_per_table


  これで MySQL を再起動すると,設定が有効になってデータが各テーブルごとにもたれるようになります.
  いままで,tablename.frm というファイルしかなかったのが,tablename.frm に加えて tablename.idb ができました.

  さて,本題ですが,この状態で InnoDB テーブルのデフラグメント化を行ってみます.

# ls -la tablename.ibd
-rw-rw----   1 mysqld   mysqld   754974720 Jul  6 21:01 tablename.ibd

# mysql -uroot -p database
mysql> ALTER TABLE FileInfo TYPE=InnoDB;
Query OK, 0 rows affected, 1 warning (5.65 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> quit

# ls -la tablename.ibd
-rw-rw----   1 mysqld   mysqld   98304 Jul  6 21:04 tablename.ibd

  754974720 バイト (720MB) から 98304 バイト (96KB) に劇的にサイズが縮小されているのが分かると思います.
  
  まとめると

  • ibdata1 ファイルを使用している場合は,InnoDB テーブルのデフラグメント化を行っても,ファイルサイズ自体は小さくならない.
  • innodb_file_per_table オプションで複数テーブルスペースを利用した場合は,InnoDB テーブルのデフラグメント化を行うと,ファイルサイズ自体は小さくなる.

  ということが言えると思います.

  ただし,MySQL 4.1.1 以上からの機能っぽいです.動作確認環境は 4.1.20 on Solaris 10 です.

続・MySQL 4.1.x な環境で phpMyAdmin を EUC-JP で使う方法

  [2006-06-17-1] MySQL 4.1.x な環境で phpMyAdmin を EUC-JP で使う方法 の続き.
  よく考えたら,PHP の設定を変えてあげれば何も問題なくできた.なんてこった.

- phpMyAdmin/.htaccess

php_value mbstring.internal_encoding "UTF-8"
php_value mbstring.http_output       "UTF-8"
php_value mbstring.script_encoding   "UTF-8"
php_value mbstring.http_input        "UTF-8"

MySQL 4.1.x な環境で phpMyAdmin を EUC-JP で使う方法

  MySQL 4.1.x から文字コード関係のトラブルが多いみたい.
  phpMyAdmin を使ってみたら,EUC-JP に設定して,phpMyAdmin の言語を「日本語 - Japanese (euc)」にしても,
  画面は文字化けするし,「MySQL の文字セット」も UTF-8 Unicode (utf8) のままで,データの挿入などが行えない.

  そこで,ちょっと強引に,phpMyAdmin のファイルを書き換えることにする.

- phpMyAdmin/libraries/database_interface.lib.php

function PMA_DBI_postConnect($link, $is_controluser = false)
        :
    /*
    if (PMA_MYSQL_INT_VERSION >= 40100) {
        :
    } else {
        require_once('./libraries/charset_conversion.lib.php');
    }
    */
    require_once('./libraries/charset_conversion.lib.php');
}


  MySQL 4.1 の if 文をごっそりコメントアウトして,./libraries/charset_conversion.lib.php を強制的に読み込ませるようにする.

  phpMyAdmin の言語を「日本語 - Japanese (euc)」にすると「MySQL の文字セット」が「 EUC-JP Japanese (ujis)」になって,
  データの挿入も問題なく行えるようになった.

  ちなみに,config.inc.php の言語関係の設定は以下のようにした.

$cfg['DefaultLang'] = 'ja-euc';
$cfg['DefaultConnectionCollation'] = 'ujis_japanese_ci';
$cfg['DefaultCharset'] = 'ja-euc';


  なお,phpMyAdmin 2.8.0 から設定ファイルの雛形の場所が変更された.
  phpMyAdmin/libraries/config.default.php にあるので,これを phpMyAdmin/config.inc.php にコピーして使うことになる.
  こうすることで,phpMyAdmin 2.8.0 から新しく導入された (分かりにくい) setup.php を使わないで設定ができる.

- 追記

$cfg['Lang'] = 'ja';


  を指定すれば,行けるらしいという情報を頂いたが,Notice が発生してだめですね.

Notice: Undefined index: ja-euc

  ja-euc にしても同じ結果に.

  スマートな方法はないものでしょうか.

- 解決
  [2006-06-26-2] 続・MySQL 4.1.x な環境で phpMyAdmin を EUC-JP で使う方法

リバースプロキシを使って複数のバージョンの PHP,MySQL,Apache を共存させる方法

  PHP 3.x と PHP 4.x は --enable-versioning を configure オプションに加えるだけで,何も考えずに共存できました.
  ただ,PHP 5.x になってから PHP 4.x と共存するのは難しくなっています.

  サーバが一台しかないテスト環境などでは,これでは困る場合もあるわけです.

  そこで,Apache のリバースプロキシを使って複数のバージョンの PHP を共存させます.
  ついでに,複数の MySQL も共存させることにします.

  検証環境は Solaris 10 です.

  今回は php5.example.com にクライアントからアクセスがあったら

- Apache 2.2.2
- PHP 5.1.4
- MySQL 4.1.19

  の環境で動かすとこと,また,php4.example.com にクライアントからアクセスがあったら

- Apache 1.3.36
- PHP 4.2.2
- MySQL 3.23.58

  で動かすということにします.
  MySQL 3.23.58 という古い環境を使うのは,この環境が必要だからなので,適時違うバージョンに読み替えていただけるといいです.

  図にすると以下のようになります.

  共存

  まず,php4.example.com の環境から作ります.インストールはすべてソースから行っています.
  configure のオプションは最低限しかつけていないので,適時環境に合わせてオプションを設定してください.

- Apache 1.3.36

% ./configure --enable-module=most \
              --enable-shared=max
% make
# make install

  でインストールします.ServerRoot は /usr/local/apache になります.
  主な設定は,以下のようですが,ポイントはこの Apache はポート 81 番で動かすことです.

Listen 81
Port 80
ServerName php4.example.com


  Apache 1.3.x の場合は Listen ディレクティブが指定されている場合は,Port ディレクティブはサーバが listen するポートには影響しません.
  ただし,ここで 80 と指定するのは,サーバが自分自身を参照する URL を生成する時に Port ディレクティブを参照するからです.

  この設定をしないで Port 81 などとしてしまうと,http://php4.example.com/foo のように URL の最後に / を付け忘れた場合,サーバは,

http://php4.example.com:81/foo/

  このようににリダイレクト先を返してくるので,リダイレクトの処理がうまくいかないことになります.

- Listen ディレクティブ
  http://httpd.apache.org/docs/1.3/mod/core.html#listen

- Port ディレクティブ
  http://httpd.apache.org/docs/1.3/mod/core.html#port

  また,Apache 2.x の場合は,Port ディレクディブは ServerName ディレクティブに吸収されたので

Listen 81
ServerName php4.example.com:80


  のように指定してあげればいいと思います.

- MySQL 3.23.58

% ./configure --prefix=/usr/local/mysql/3.23
% make
# make install
# ln -s /usr/local/mysql/3.23/bin/mysql /usr/local/bin/mysql3

  MySQL のインストールのポイントは,prefix を /usr/local/mysql/3.23 のようにバージョンをつけていることです.
  これで,他のバージョンをインストールする場合は,/usr/local/mysql/x.x のように分けることができます.
  設定ファイルは,/usr/local/mysql/3.23/var/my.cnf に置くことができます.

  最後に,シンボリックリンクを張っているのは,mysql3 と楽にコマンドを打てるようにです.

- PHP 4.4.2

% ./configure --prefix=/usr/local/php/4.4 \
              --with-apxs=/usr/local/apache/bin/apxs \
              --with-mysql=/usr/local/mysql/3.23
% make
# make install
# ln -s /usr/local/php/4.4/bin/php /usr/local/bin/php4

  PHP も MySQL と同じように prefix をバージョンごとに指定しています.
  使用する MySQL のパスも忘れずに指定します.
  シンボリックリンクも MySQL と同じ理由で /usr/local/bin に張ることにします.

  この場合,php.ini は /usr/local/php/4.4/lib/php.ini になります.

  これで,まず一つ目の環境が完成です.


  次に二つ目の環境を作ります.

- Apache 2.2.2

% ./configure --enable-mods-shared=all \
              --enable-proxy
% make
# make install

  Apache 2.2.2 はこのようにインストールします.ServerRoot は /usr/local/apache2 になります.
  リバースプロキシを利用するので --enable-proxy が必要になります.
  もし,また違うバージョンの Apache が必要な場合は prefix で適当なパスを指定すればいいです.

  設定のポイントは,まずこの Apache はポート 80 番で動かすことです.

Listen 80
ServerName php5.example.com:80


  そして,重要なのは,名前ベースのバーチャルホストとリバースプロキシの設定をすることです.

NameVirtualHost *

<VirtualHost *>
    ServerName php5.example.com
</VirtualHost>

<VirtualHost *>
    ProxyPreserveHost On
    ProxyPass         / http://localhost:81/
    ProxyPassReverse  / http://localhost:81/
    ServerName        php4.example.com
</VirtualHost>


  これで,php5.example.com でアクセスされた場合は,Apache 2.x が処理をして,
  php4.example.com でアクセスされた場合は 81 番ポートで動いている Apache 1.x にわたして処理をさせることができます.

- MySQL 4.1.19

% ./configure --prefix=/usr/local/mysql/4.1 \
              --with-unix-socket-path=/tmp/mysql-4.1.sock \
              --with-tcp-port=3308
% make
# make install
# ln -s /usr/local/mysql/4.1/bin/mysql /usr/local/bin/mysql4

  MySQL のインストールのポイントは,3.23.58 と同様に prefix にバージョンをつけていることです.
  また,UNIX Socket のファイルも /tmp/mysql-4.1.sock のように変更していて,ポート番号も 3308 に変更しています.
  設定ファイルは /usr/local/mysql/4.1/var/my.cnf になります.
  mysql4 としてシンボリックリンクも張っています.

- PHP 5.1.4

% ./configure --prefix=/usr/local/php/5.1 \
              --with-apxs2=/usr/local/apache2/bin/apxs \
              --with-mysql=/usr/local/mysql/4.1 \
              --with-pdo-mysql=/usr/local/mysql/4.1 \
% make
# make install
# ln -s /usr/local/php/5.1/bin/php /usr/local/bin/php5

  これまでと同様に prefix にバージョンに指定しています.
  使用する MySQL のパスも忘れずに指定します.シンボリックリンクも張っています.
  php.ini は /usr/local/php/5.1/lib/php.ini になります.


  テストするためにわざわざ DNS に登録する必要はなく,hosts ファイルに書いてしまえばいいです.
  例えば,サーバの IP アドレスが 192.168.1.2 ならば,クライアントの hosts ファイルに

192.168.1.2    php4.example.com    php5.example.com

  このように書いてあげればすぐ使えるようになります.


  以上のようにして,PHP,MySQL の複数のバージョンが共存する環境を手に入れることができます.
  ちょっと面倒ですが,ひとつのサーバしかなくて困っている場合は有効な手段だと思います.

- <VirtualHost> ディレクティブ
  http://httpd.apache.org/docs/2.2/ja/mod/core.html#virtualhost

- バーチャルホストの例 - Apache HTTP サーバ
  http://httpd.apache.org/docs/2.2/ja/vhosts/examples.html

PHP のデバッグが楽になる?変数の情報を見やすく表示する dBug

  http://dbug.ospinto.com/

  リンク先の説明には var_dump() と比較したみたいに書いてあるが,実際は print_r() を見やすくした感じ.

  以前紹介した PHP 用のデバッグライブラリ Tulpes PHP4 Debug Helper (debuglib.php) と基本的には同じ.
  開発時にはもっぱら debuglib.php のお世話になっているが,dBug も使ってみた.

  サポートされている変数の型は

  • 配列
  • クラス/オブジェクト
  • データベースリソース
  • XML リソース
  • イメージリソース

  実際の表示はどうなるかというと

$variable = array(
    "first"=>"1",
    "second",
    "third"=>array(
        "inner third 1",
        "inner third 2"=>"yeah"),
    "fourth");


  このような配列があった場合

new dBug($variable);


  このように dBug を呼び出すと以下のような表示になる.

  dBug

  便利なのは,上記の画像の場合緑色の部分や薄い緑色の部分をクリックすると,以下のようにその部分が隠れること.
  大きな配列を表示していて目的の部分を見失いそうなときには便利.

  dBug

  また,データベースリソースが扱えるのも便利なところ.
  以下は,mysql_query() の戻り値のリソース型を表示したところ.

  dBug

  大量のデータを扱う場合には向かないと思うがちょっとしたデータを表示したい場合は便利.
  ただし,MySQL のデータベースリソースしかテストしていないようで,SQLite のリソース型は表示できなかった.

  また,PEAR::DB を使った場合はというと,

<?php
require_once 'DB.php';
require_once 'dBug.php';

define('DSN', 'mysql://userid:passwd@localhost/test');

$dbh = DB::connect(DSN);
$sql = 'SELECT * FROM empinfo';
$result = $dbh->query($sql);

new dBug($result->result);
?>


  dBug

  きちんと表示できた.