華和梨のTIPS

OpenKEEPSのkawarirc.kisの冒頭のログファイルやデバッガの設定。
デフォルトでは、

#デバッグ用設定================================================================
# ログファイル作成設定
#loglevel error warning info baseevents rscevents;
#logfile kawari-$(date %H%M%S).log;

# デバッガON/OFF
#debugger on;

のように書かれていて、loglevel&logfileやdebugger onの記述のコメントを外すことでログ出力をしたりデバッガをONにできるのだけど、うっかり、これらのコメントを外したままアップロードしてしまう危険性も。
そして、なによりファイルを編集してコメントをつけたり外したりが面倒くさい。

しかし、実はファイルを編集しなくても、特定の場所にファイルを置くか置かないかでログの出力やデバッガのON/OFFを制御できる方法があります。
その方法とは以下の通り。

# ログファイル作成設定
if $(isexist $(cncpath "kawari_log")) $(
 loglevel error warning info;
 logfile kawari-$(date %Y%m%d)-$(date %H%M%S).log;
);

# デバッガON/OFF
if $(isexist $(cncpath "kawari_debug")) $(
 debugger on;
);

このように記述した場合、shiori.dllと同じフォルダにkawari_logが存在するかしないかでログ出力をするかしないかを、同様に、kawari_debugが存在するかでデバッガをONにする(幸水やだぶるている、らふらんすトークのテストなどができる)かOFFにする(幸水etcが使えない)かを設定できるようになります。

ただ、これでもうっかり、kawari_logやkawari_debugを含めたままアーカイブを作ってしまう可能性があるのでさらに改良。

# ログファイル作成設定
if $(isexist $(cncpath "../../../../kawari_log")) $(
 loglevel error warning info;
 logfile kawari-$(date %Y%m%d)-$(date %H%M%S).log;
);

# デバッガON/OFF
if $(isexist $(cncpath "../../../../kawari_debug")) $(
 debugger on;
);

こうしておけば、開発中のゴーストのshiori.dllがC:\SSP\ghost\ほげほげ\ghost\masterにあるとして、ゴーストのフォルダの外側である C:\SSP フォルダにkawari_logやkawari_debugが存在するかどうかでログやデバッガのON/OFFの設定ができるようになるので、間違ってkawari_logやkawari_debugを含めたアーカイブを作ってしまう危険がなくなります。
ちなみに、これはミドルウェアを問わずにできるのでOpenKEEPS以外のミドルウェアを使っていても利用することができます。

上の話の元ネタ

うっかり大事なことを書き忘れてた。
上の話には元ネタがあって、asさんの2009年12月24日の日記がそれだったりします。
ファイルの有無でネットワーク更新の有無を制御するというのは目からウロコだった。

ネットワーク更新も制御

というわけで、元ネタに立ち返ってネットワーク更新の制御も。
まず、kawarirc.kisの

# OpenKEEPS システム読み込み
load openkeeps\loader.kis;

よりも前あたりに

if $(isexist $(cncpath "../../../../kawari_noupdate")) $(
 .setstr kp.usr.useupdate 0;
) else $(
 .setstr kp.usr.useupdate 1;
);
=end
kp.EntryToProtect : kp.usr.useupdate
=kis

というのを追加します。で、openkeeps.kisの方を

#ネットワーク更新をしない場合、このエントリをOFFにします
kp.config.useupdate : ${kp.usr.useupdate}

としておけば、ファイルの有無でネットワーク更新を制御できます。
ファイルの有無を見て、HomeURL.ghostの値を変えるという手も。
ネットワーク更新できないバグとかdebugger onのままゴーストを出してしまうとかやらかしまくった身としてはとても有難いお話。

ファイル名

あと、kawari_debug、kawari_log、kawari_noupdateのファイル名はどんな名前でもいいので、自分のゴーストだけのユニークなファイル名にしておいてください。kawari_debug_dualnishikiとかみたいに。
そうしておかないと、ゴーストのユーザーさんがたまたま同じようなことしてた場合、そのユーザーさんのところでdebugger onで起動したりログ吐きまくったりネットワーク更新ができなかったりということがありますので。