Nucleus w/SQLite
2006年4月17日
開発者の方へ
1)Nucleusコアの変更に関して
すべてのMySQL呼び出し関数『mysql_XXXX()』は、『nucleus_mysql_XXXX()』に変更されています。プラグインのインストールの際も、同様の変更が自動的にNP_SQLiteによってなされます。新しいNucleusの公開があった場合は、『extra/sqlite/』フォルダにあるツールでこの変更を行うことができますので、『extra/sqlite/readme-ja.txt』をご覧ください。このツールで将来のすべてのバージョンに関して自動的な変更がエラー無く行えるかどうかは保証できませんが、現在の所 Nucleus ver3.22 と ver2.0 の両方で問題なく変更できることが確認されています。
2)プラグインの作成に関して
Nucleus-SQLite用にプラグインを作成する場合も、MySQL版を作成する場合と全く同じように行えます。別の言い方をすれば、Nucleus-MySQL用に作成したプラグインがそのままNucleus-SQLiteでも使えるということです。従って、プラグインの開発はMySQL版で行い、完成した物をNucleus-SQLiteで試すということをお勧めします。Nucleus-SQLiteでプラグインを作成した場合、それをMySQL版でも使用できるように公開する場合は、『nucleus_mysql_XXXX()』を『mysql_XXXX()』に変更することになるでしょう。もし、SQLiteに特異的なクエリーや関数を用いた場合は、そのプラグインはMySQL版では使用できません。
SQLクエリーで文字列を扱う時のエスケープの仕方も、MySQLの仕様に準じてください。つまり、『sqlite_escape_string()』は用いず、『addslashes()』もしくは、『mysql_escape_string()』(『nucleus_mysql_escape_string()』)を用いてエスケープしてください。もし『sqlite_escape_string()』を用いてプラグインを作成してしまった場合、SQLiteで使用している場合は問題ないのですが、そのプラグインをNucleus-MySQLに用いた場合にSQLインジェクションが可能になるケースが生じます。
3)MySQLとのコンパティビリティーに関して
MySQLに特異的なSQLクエリーのうちどれが使えるかは、『sqlite.php』と『sqlitequeryfunctions.php』のヘッダ部分のコメントに記述してあります。ここに含まれていないものに関しては、要望を出して頂ければ次期バージョンで対応することができるかも知れません。
4)SQLクエリ構文に関して
SQLiteでは、例えば『SELECT i.itime, ....』の様に記述した場合に『itime』が fetch されません。これは、『SELECT i.itime as itime, ....』の様に変更する必要があります。Nucleusコアでは、ver3.22に於いては少なくともBLOG.php, ITEM.php, COMMETS.phpでこのような記述があり、見つけた部分に関しては変更をしてあります。また、幾つかのプラグインで似たような記述があります。
こういったクエリー文に関しては、phpファイルを書き換えることが基本なのですが、SQLiteラッパーに自動的にこれを行わせることが可能です。これを行わせるには、『sqliteconfig.php』で、『$SQLITECONF['DEBUGMODE']=true;』としてください。同時に、『$SQLITECONF['DEBUGREPORT']=true;』とすれば、表示したサイトのソースコードを見ることで、どこで変更を行ったかに関する情報が得られます。その情報に従ってプラグインのphpファイルを変更し、『sqliteconfig.php』の設定を元に戻すことをお勧めします。このデバッグモードがオンになっていると、ブログの表示速度が若干遅くなるかも知れません(私の環境では、オン・オフによる速度の差は無視できるほどのものですが)。
(使用説明に戻る)
1)Nucleusコアの変更に関して
すべてのMySQL呼び出し関数『mysql_XXXX()』は、『nucleus_mysql_XXXX()』に変更されています。プラグインのインストールの際も、同様の変更が自動的にNP_SQLiteによってなされます。新しいNucleusの公開があった場合は、『extra/sqlite/』フォルダにあるツールでこの変更を行うことができますので、『extra/sqlite/readme-ja.txt』をご覧ください。このツールで将来のすべてのバージョンに関して自動的な変更がエラー無く行えるかどうかは保証できませんが、現在の所 Nucleus ver3.22 と ver2.0 の両方で問題なく変更できることが確認されています。
2)プラグインの作成に関して
Nucleus-SQLite用にプラグインを作成する場合も、MySQL版を作成する場合と全く同じように行えます。別の言い方をすれば、Nucleus-MySQL用に作成したプラグインがそのままNucleus-SQLiteでも使えるということです。従って、プラグインの開発はMySQL版で行い、完成した物をNucleus-SQLiteで試すということをお勧めします。Nucleus-SQLiteでプラグインを作成した場合、それをMySQL版でも使用できるように公開する場合は、『nucleus_mysql_XXXX()』を『mysql_XXXX()』に変更することになるでしょう。もし、SQLiteに特異的なクエリーや関数を用いた場合は、そのプラグインはMySQL版では使用できません。
SQLクエリーで文字列を扱う時のエスケープの仕方も、MySQLの仕様に準じてください。つまり、『sqlite_escape_string()』は用いず、『addslashes()』もしくは、『mysql_escape_string()』(『nucleus_mysql_escape_string()』)を用いてエスケープしてください。もし『sqlite_escape_string()』を用いてプラグインを作成してしまった場合、SQLiteで使用している場合は問題ないのですが、そのプラグインをNucleus-MySQLに用いた場合にSQLインジェクションが可能になるケースが生じます。
3)MySQLとのコンパティビリティーに関して
MySQLに特異的なSQLクエリーのうちどれが使えるかは、『sqlite.php』と『sqlitequeryfunctions.php』のヘッダ部分のコメントに記述してあります。ここに含まれていないものに関しては、要望を出して頂ければ次期バージョンで対応することができるかも知れません。
4)SQLクエリ構文に関して
SQLiteでは、例えば『SELECT i.itime, ....』の様に記述した場合に『itime』が fetch されません。これは、『SELECT i.itime as itime, ....』の様に変更する必要があります。Nucleusコアでは、ver3.22に於いては少なくともBLOG.php, ITEM.php, COMMETS.phpでこのような記述があり、見つけた部分に関しては変更をしてあります。また、幾つかのプラグインで似たような記述があります。
こういったクエリー文に関しては、phpファイルを書き換えることが基本なのですが、SQLiteラッパーに自動的にこれを行わせることが可能です。これを行わせるには、『sqliteconfig.php』で、『$SQLITECONF['DEBUGMODE']=true;』としてください。同時に、『$SQLITECONF['DEBUGREPORT']=true;』とすれば、表示したサイトのソースコードを見ることで、どこで変更を行ったかに関する情報が得られます。その情報に従ってプラグインのphpファイルを変更し、『sqliteconfig.php』の設定を元に戻すことをお勧めします。このデバッグモードがオンになっていると、ブログの表示速度が若干遅くなるかも知れません(私の環境では、オン・オフによる速度の差は無視できるほどのものですが)。
(使用説明に戻る)