★ INCM Plug-in開発掲示板 ★ TinyGrass Ver0.32a [戻る]
[0201] 00/10/18 03:23 風葉(/Z7FKywOcl2): ユーザキャンセル時のあとかたづけ
巡回時にユーザによって中断されたとき、何らかの終了処理をしようとPerlのシグナル
ハンドラを設定して待ち構えていたのですが、何もシグナルを捕らえられませんでした。
ENDセクションは勿論のこと、$SIG{'DEFAULT'}ですら駄目だったのですが、どのように
すれば宜しいのでしょう。
ツリー形式の掲示板やネットニュースの場合、せめてその時点まで処理したメッセージ
を出力しておきたいのですが。
…こちらの掲示板もスレッド形式の方が便利ですね。
[0200] 00/10/18 03:15 風葉(/Z7FKywOcl2): /robots.txt
●Re: INCM本体のhttps対応
以前、Plug-inのテキスト処理以外は.exeでやらせようと思い、例のWinInet APIを使って
http(s)アクセスを書いたのですが、httpとhttpsの違いが接続時にフラグを加えるだけと
いう手軽さに吸収されていて、ごくあっさりコードを書くことができました。
只、バークレーソケット育ちの人間にはブラックボックス過ぎて使えませんでした。
生のHTTP Responseすら見させてくれないのですから。
現在、http周りをどのように実装されているかは存じませんが、Winsockでhttpsとなると
(試したことはないですが)やはり、OpenSSLを使うことになるのでしょうか。
# httpsだけWinInet APIで繋ぐというのが楽ですね。f(^^
●ロボット
ところで、GAEさんには先日メールにてお伝えしたのですが、巡回という操作は、人間が
行う閲覧とは違い、機械的な処理であるので、Webロボットとしてのマナーに従うべきで
はないかと思うのです。
Plug-inを作成するにあたり、幾つか無作為にソースを眺めさせて頂いたのですが、HTTP
Request中のUser-Agentフィールドの値が例によってMozillaを詐称しているのには驚きを
禁じ得ませんでした。
MSによるIEの主張も強引ですが、Mozilla機能を実装していないクライアントがそれを名
乗るのは問題があると思います。(実装しても名乗るのはまずいですね)
# 実際、こういったクライアントが多くなり、事実上User-Agentフィールドは意味を意
# 義を失っているようです。
少なくともMozillaを名乗ることは止めるべきだと思います。
INCM本体がリクエストを出している訳ではないのですが便宜上、私はPlug-inに――
User-Agent: INCM/1.21g Falcom/2.03
――と、INCMとPlug-inの名前とバージョン(リビジョン)をRFCに準拠した書式で名乗ら
せています。
また、ロボットの場合、/robots.txtやHTMLのMETAタグのRobotsにあるアクセス許可に従
ったり、Fromフィールドにメールアドレスを載せたりと、結構実装することがエチケット
とされる事項があります。
# 他にもRefererを付けるなど。これは必須ではないですが。
最小限の実装でも、サーバのルートディレクトリにある/robots.txtには従うべきかと思
います。
# 私のPlug-inもMETAタグは読んでいません。(^^;
こういったことを考えると、ネットワークアクセスに関してはINCM本体が行う乃至用意す
るか或いは、PerlならばLWPなどのライブラリを使用するなどの規格が必要なのではない
でしょうか。
# でも個人的にはLWPはちょっと…。
長文になりまして申し訳ありません。
更にもう一つお訊きしたいことがありますので、ここで一旦――。
[0199] 00/10/17 17:38 Buckeye(UnTUYw5MC2c): Re:197)サイズ
LHAで圧縮して、1MB弱になりました。
>>がんばります…
>>
>># しかし、今週末も時間があるかどうか怪しい…
まあ、こちらのテストにもう少し時間がかかりますから、あわてず、やってくだ
さいませ。予定表の上の方に書いておいていただければいいですから。
Best Regards,
Buckeye
[0198] 00/10/17 17:37 Buckeye(UnTUYw5MC2c): Re:195)[DIALOG]セクションの書き換えもできました
実行形式なら、やっぱり大丈夫ですね。ちゃんと、[DIALOG]セクションの書き換
えができました。
一応、できたと思うのですが、しばらく、仲間内で使ってみてから公開します。
Best Regards,
Buckeye
[0197] 00/10/17 17:29 GAE(3nxWzOCXjo.): Re:196)RE: INCM本体のhttps対応
1.7MB はデカいですね…。
LZH(lh7) で圧縮してどれくらいになるのでしょうか?
>あとは、INCM本体がhttpsに対応できれば、書き込みまで可能になるはずです。
>よろしくお願いしま〜す>GAEさん
がんばります…
# しかし、今週末も時間があるかどうか怪しい…
[0196] 00/10/17 14:35 Buckeye(UnTUYw5MC2c): Re:195)INCM本体のhttps対応
あとは、INCM本体がhttpsに対応できれば、書き込みまで可能になるはずです。
よろしくお願いしま〜す>GAEさん
Best Regards,
Buckeye
[0195] 00/10/17 14:34 Buckeye(UnTUYw5MC2c): Re:191)実行形式Perl、動作しました
プラグインの実行形態を考えたら、incm_BBS.iniを同じフォルダに放りこんで、
引数なしで単体実行させてもxxx.cm$を吐き出すはずということに気づいて、単
体試験をしてみました。そしたら、xxモジュールから呼んでいるモジュールが
ないと怒られてしまいました。
必要なモジュールを全部まとめてスタンドアローン実行ができるはずなのに、と
思いながら改めてドキュメントを読んでみると、use $modulnameみたいに変数で
ロードするモジュールはロードしないってありました。で、上記のxxモジュー
ルのリストを眺めていると、どうも、変数でuseしているようです。
useなんてダブって宣言してもいいはずだから、必要なモジュールを明示的に
useしてやりゃいいだろって、プラグインの冒頭にuseを書いてみると……別なモ
ジュールが足らんと怒られました。お、少なくとも、さっきのモジュールは「あ
る」と認識されたわけね。というわけで、ひとつひとつ、怒られては、use文を
書き加え、よーわからんところは、関連のありそうなモジュールを絨毯爆撃で追
加してみて……やりましたぁ! 単体実行に成功!!
この実行形式ファイルをPluginsフォルダに入れてみると……ちゃんと巡回する
じゃないですか。
ファイルサイズは、1,755Kとでっかくなりました。
まがりなりにもexeファイルなので、[DIALOG]セクションも書き換えが可能なは
ず……perl単体で動作試験をしてから変換すればいいはずですね。この辺りをク
リアしたら、とりあえず、暫定公開しようと思います>@nifty IW用プラグイン
配布については、ActiveStateのサイトにあるモジュールしか使っていなければ、
実行形式にして配布できるようです。他のところからモジュールを取ってきた場
合には、そのモジュールの配布条件を満たす必要があります。今回は、
ActiveStateのサイトからとってきたモジュールばかりなので、大丈夫でしょう。
Best Regards,
Buckeye
[0194] 00/10/16 21:48 Buckeye(UnTUYw5MC2c): Re:192)実行形式perlの配布
実行形式を作るソフトについては、そのソフトを使って作った実行形式の配布を
制限しないようです。とうぜん、ActivePerlとその標準ライブラリだけなら、実
行形式にして再配布は問題ないようです。
Perlがインストールされていないコンピューターでも実行できる実行形式も
作れることをウリのひとつとして、95ドルの価格でActiveStateが販売して
いるソフトなんですから、この辺りは当然でしょうね。
あとは、組み込むモジュールが再配布を許可していればいいということらしいで
す。細かいことは、添付文書と使用モジュール関連文書をもう少し詳しく読んで
みないとわかりません。
Best Regards,
Buckeye
[0193] 00/10/16 12:00 GAE(3nxWzOCXjo.): Re:192)とりあえず最後の発言に返信
※この掲示板はCMTプラグインで読み書きできます。
このところいろいろ問題山積み状態で、
中途半端な物を作ってしまったり、
発言してしまったりしたなぁと反省したりしてます(汗)
i での起動については、スクリプト内に[DIALOG]の設定が無い場合のみの動作です。
ただし僕の想像の中での話なので、
確認できる暇ができたら実際の動作を確認してみます。
で、ここで話題になってる、いろんなことの解決方法ですが、
新しい動作を定義した方が良いかもしれません。
とかいいつつ、実はよく問題をわかっていなかったり(汗)
問題と解決方法の案をまとめてもらえると嬉しいです。
機能をつぎはぎをしていって、機能を高める方法もありますが、
やっぱり一発で解決できて、感覚的にわかりやすいものが良いですから。
INCMをいじりまわす時間が無いので、提案があっても
実装されるのはいつになるのかさっぱり見当が付かないので申し訳無いのですが…。
[0192] 00/10/15 23:35 風葉(9S9Cv.e3uVg): Re: i
> この方法だと、巡回かけないと書き換えられないという欠点はあります。
そうなのです。先に挙げた標準パラメータの強制設定は、「i」で起動された場合の事項
です。勿論、通常起動時にも同様の処理は行っていますので、巡回/インポートを行えば
設定は有効になります。
詳細設定のようなPlug-in独自のパラメータは「i」の場合にも有効なのですが、やはり
標準のものはINCM本体の介入が否めませんね。
# プロパティの巡回設定タブの設定を全く使わない――というのも何ですし。
> @nifty IW用プラグインをちょこちょこいじりながら、ActivePerlのPDKによる実
> 行形式化(スタンドアローン実行可能形式)もトライしてみました。ところが、
利用していないので詳細が判らず申し訳ありませんが、再配布に際して何らかの制限が
あるなどといった問題はないのですか?
詳しくは判りませんが、(ActivePerlではなく)本家のPerlでは、配布制限はGPL或いは
アーティスティックライセンスのデュアルライセンス形式で、何れかを選択するように
なっているとどこかで斜め読んだ記憶があります。
私のPlug-inは.exeがActivePerlを呼び出すインターフェイス(とINI設定)の役割になっ
ています。これも問題があるかも知れませんが。
[0191] 00/10/15 13:28 Buckeye(UnTUYw5MC2c): Re:186)実行形式プラグインでINCM異常終了
@nifty IW用プラグインをちょこちょこいじりながら、ActivePerlのPDKによる実
行形式化(スタンドアローン実行可能形式)もトライしてみました。ところが、
exeにすると、INCMが異常終了します。
先日から、ダイアログ初期化のところをさんざんいじりたおしていたので、なに
かおかしなことになってしまったのかもしれないと思い、exe形式のプラグイン
を単体でi引数実行してみました。ちゃんと、incm_BBS.iniを処理してくれてい
るようです。
エラーメッセージは、以下のとおり(これから、なにかわかるんでしょうか)
-------------------------------
INCM のページ違反です。
モジュール : INCM.EXE、アドレス : 0137:00426226
Registers:
EAX=00000000 CS=0137 EIP=00426226 EFLGS=00010203
EBX=0000310e SS=013f ESP=0068e8c8 EBP=0068e8f8
ECX=00000c43 DS=013f ESI=00000000 FS=11c7
EDX=7efefeff ES=013f EDI=00bc90a8 GS=0000
Bytes at CS:EIP:
8b 06 03 d0 83 f0 ff 33 c2 8b 16 83 c6 04 a9 00
Stack dump:
0068f200 00008224 0068f1b4 00405d59 00bc90a8 00000000 0000310e 0068ea34 00000414 00bdb66c 0000310e 00000000 0068e904 00405b7d 0068ea34 0068e910
-------------------------------
ちなみに、ファイルサイズはかなり大きくなります。@nifty IW用プラグインの
場合で、23k→1,103kです。比較のためにcm_cmt.plも変換してみたところ、6k→
857kでした。
この異常終了、なんとかならないでしょうか>GAEさん
Best Regards,
Buckeye
[0190] 00/10/15 09:48 Buckeye(UnTUYw5MC2c): Re:189)Re: i
どうも、perl(というか拡張子がpl)などの場合には、i引数での呼び出しはな
くなっているみたいですね。今回の私のプラグインも、最終的には実行可能形式
で配布する予定なので、たぶん、その時点ではi引数による呼び出しが効くよう
になるんじゃないかと思われます。
>>特定のサイトのみのcgiの場合にはURL値、或いはHP値を強制的に設定したいですね。
これは、今でもやれますよ。i引数で呼ばれるのは、ダイアログ初期化のときで
すから。
スクリプトの頭で[BASIC]セクションを読み込んで、必要な項目を強制的に書き
換えます。スクリプトでその値を使った後、最後の終了処理で[BASIC]セクショ
ンを書き換えてしまえばいいのです(というか、サンプルを含め、ほとんどかそ
うなっている)。書き換えなくても、実行上は問題ありませんが、書き換えてお
いた方がユーザフレンドリーですね。
私が今作っているプラグインは、アクセスするurlの欄のタイトルに、「自動入
力(入力不要)」と書いてあります。@niftyだと、必要なのは認証欄とどのフォ
ーラムかの指定だけですから。あとは、プラグイン側で決め打ちします。
この方法だと、巡回かけないと書き換えられないという欠点はあります。
あと、ダイアログボックスに提示する文字(入力欄に入れるものではなく)は、
今のようにi引数で呼ばれなくなっていると、プラグイン側で巡回のたびに書き
換えるなどのことができません(書き換えておいても、人間が確認しようとダイ
アログを開くと元に戻ってしまう。いや〜、丸2日ほど悩みまくりました)。
Best Regards,
Buckeye
[0189] 00/10/14 23:54 風葉(9S9Cv.e3uVg): Re: i
> もしかして既に「Perl なんとか.pl i」形式で呼び出す機能は消し
> てあるのかも知れません。
INCM/1.21[eg]で試してみましたが、何れの場合も.exeでは問題なく呼ばれますが、.pl
では呼ばれていません。スクリプトは読んで調べるだけなのでしょうか。
また.exeであっても、[BASIC]の設定に関しては、INCM標準のパラメータ設定は無視され
ています。
特定のサイトのみのcgiの場合にはURL値、或いはHP値を強制的に設定したいですね。
[0188] 00/10/14 16:51 Buckeye(UnTUYw5MC2c): Re:187)具体的には……
動的というほどのものではありませんが、具体的には、以下のような話なのです。
@niftyのフォーラムは、1つに最大で20の電子会議室があります(私のところは、
サブフォーラム2つがまとまった形なので、最大で40の会議室が設置できます)。
フォルダプロパティの巡回タブで、フォーラムを指定するGOコマンドを入れると
ともに、詳細タブで巡回する会議室と各会議室の未読を設定します(もちろん、
未読値は空欄にしておけば、巡回後に自動的に入力されます)。
この詳細タブの会議室が、いま、MES 1、MES 1の未読値、MES 2、MES 2の未読値
という具合に20セット並んでいます(一番上に全会議室巡回というチェックボッ
クスも作ってありますが)。でも、何番会議室かではなく、その会議室のタイト
ルで覚えている人も多いはずなのです。そういう人は、MES1やMES2がどの会議室
にあたるのか、一覧表とつきあわせないと詳細タブの設定ができません。この設
定が楽になるように、巡回したら、詳細タブが以下のようになるように作りたい
のです。
MES 1: 第一会議室のタイトル
MES 1の未読ポインタ
MES 2: 第二会議室のタイトル
MES 2の未読ポインタ
巡回では会議室一覧のページを読み込むので、そのときついでに、開設されてい
る全会議室のタイトルを取得してしまえば、巡回しているところもしていないと
ころも、会議室タイトルを詳細タブに入力することが可能です。
今は、#TをMES01:第一会議室のタイトルとしてしのいでいます。フォルダビュー
を見れば、どれがどれかわかりますから。いずれにしても、会議室の並び順は番
号順にしたい(開設している側は、番号順に並べて意味のあるグループに分けて
いることが多い)ですしね。
Best Regards,
Buckeye
[0187] 00/10/14 07:33 一 五明(YMjHyfzdazU): Re:185)試してみましたが
もしかして既に「Perl なんとか.pl i」形式で呼び出す機能は消し
てあるのかも知れません。
プラグインにはi呼び出しの痕跡が残っていますが、事実上、かなり
昔(一般公開より数ヶ月前)のバージョンとの互換性のためだけに残
してあったもので、まず使うことは無かった機能です。
>[DIALOG]セクションをperlで書き換えられなくてもプラグインの動作上は問題は
>ありません。ただ、ユーザが使いやすいユーザインターフェースにするために、
>なるべく、perlプラグインから[DIALOG]セクションを書き換えたいのです。
ので、こういうケースがあるとは思いもよらなかったのですが、
もしかして動的に書き換えたいパラメーターが有るのでしょうか?
http://kt.sakura.ne.jp/~timeflow/M/
[0186] 00/10/13 20:14 Buckeye(UnTUYw5MC2c): @nifty IW用プラグイン
最低限のところはできました。
とりあえず、ログインして、未読発言を落として、ログアウトしてくることがで
きます。読む会議室も指定できるし、未読ポインタを戻すと、会議室内に残って
いる発言なら遡って落とせます。
ただ、発言はできません。一応、#Pや#Fも出力していますが、いかんせん、
httpsと認証の壁があるので、現状のINCMでは投稿できません。INCMの投稿ルー
チンをhttps対応にしていただくのって、けっこう難しいのでしょうか>GAEさん
最低限ができたっていっても、コード的には、デバッグ用にアレコレ出力さ
せるルーチンがあっちにもこっちにもくっついているし、変数も整理されて
いないし、無駄なこともずいぶんしていたりします。しばらく、整理とシェ
イプアップをしようと思います。
あと、@niftyの会議室の設定次第で、うまくうごかない可能性もあるので、
その辺りも確認しないといけません。
Best Regards,
Buckeye
[0185] 00/10/13 11:29 Buckeye(UnTUYw5MC2c): Re:98)RE: 詳細設定
#98のGAEさんによると、
>>INCMはプラグインのソース(cm_*.pl)を直接開き、
>>「#[DIALOG]」という行を検索します。
>>これが見つかった場合、ダイアログ初期化のために
>>「Perl なんとか.pl i」というコマンドは実行されません。
>>
>>見つからなかった場合のみ実行されます。
とのことなので、#[DIALOG]を適当に書き換えておき、incm_bbs.iniを書き出す
前に置換して[DIALOG]に戻すようにしてみたんですが……やっぱり、ダイアログ
初期化でperlが起動されていないようです。INCMのバージョンは1.21gです。
[DIALOG]セクションをperlで書き換えられなくてもプラグインの動作上は問題は
ありません。ただ、ユーザが使いやすいユーザインターフェースにするために、
なるべく、perlプラグインから[DIALOG]セクションを書き換えたいのです。
どうすればいいのでしょうか。
Best Regards,
Buckeye
[0184] 00/10/13 05:54 Buckeye(UnTUYw5MC2c): Re:183)Re: [DIALOG]セクション
情報、ありがとうございます。このボードの発言は、2ヶ月ほど前に全部目を通
したんですが、その頃は、まさか自分がプラグインを作ることになるとは夢にも
思っていなかったので(爆)、情報が頭の中を素通りしていたようです。
Best Regards,
Buckeye
[0183] 00/10/13 01:55 風葉(6IPoAT/PYJw): Re: [DIALOG]セクション
> [DIALOG]の初期化では、プラグインがiという引数とともに呼ばれると理解して
> いたのですが、違うのでしょうか。一さんのサンプルプラグインを元に作ってい
「ある形式」の記述があると引数「i」で呼ばれないようです。
詳しくはこの掲示板の[0098]、作者GAEさんの発言辺りを参照されては如何でしょうか。
私も悩んだことがあります。
Perlをその都度起動するとタブ切り替えが重いので、結局今は初期設定は.exeにやらせ
ています。
[0182] 00/10/12 17:52 Buckeye(UnTUYw5MC2c): [DIALOG]セクション
作成している@niftyインターウェイのプラグインで、incm_bbs.iniの[DIALOG]セ
クションを巡回時に書き換えようとしています。詳細設定で第1〜20までの会議
室が並ぶので、巡回時に会議室名が取得できたものは、その会議室もダイアログ
に表示しようと思うのです。
詳細設定の部分は、likeプラグインを参考にしています。詳細設定部分の使
い方って、INCMのヘルプなどにも載っていないように思うんですが、どっか
にあるんですか?
今朝からずいぶんいろいろとトライしているのですが、うまくいきません。
[DIALOG]の初期化では、プラグインがiという引数とともに呼ばれると理解して
いたのですが、違うのでしょうか。一さんのサンプルプラグインを元に作ってい
て、iniサブルーチンの頭で別ファイルに定数文字列や変数の内容を書き出すよ
うにしてみても、巡回やインポート作業を行わないと、この別ファイルへの出力
が行われません。
これから判断すると、フォルダプロパティを開いてダイアログ初期化を行うとき
には、プラグインが実行されていないように思えるのですが……
Best Regards,
Buckeye
[0181] 00/10/11 00:01 まさか(XlhZSp9.Fuk): Re:174)RE: WWWBoard 日本語版
はじめまして。INCMのWWWBoardプラグインを作っている者です。
移転先を探していたところで、情報をいただいて幸いです。
さっそく公開しているWWWBoardプラグインVer.0.04の記述を変更
し、差し替えました。
バージョンそのままだけど、いいのかな?(汗)
---
まさか
[0180] 00/10/10 07:01 一 五明(YMjHyfzdazU): Re:177)RE: 期待通りに動作します
> で、その後、そういうプラグインが出てこないんですね…(^^;
私が作ってなかっただけです(^^;
すみませんでした >てらさん
(他にも居るかも)
http://kt.sakura.ne.jp/~timeflow/M/
[0179] 00/10/10 01:52 てら(reTFQR2yizQ): Re:176)RE: xxx.cm$を複数つくるとどうなる?
> それでは、プラグインから一度の巡回で、「001.cm$」と「002.cm$」というよう
> に、複数のファイルを書き出した場合、INCM側で正しくインポートしてくれるん
> でしょうか。
インポートしてくれます。
KY-VIEW megalopolis 用プラグインでは掲示板のページ単位でcmtファイルを
作っています。
テストで800ページほど取り込んでみたことがあります。フォルダビューの
ところに800個並びました。(^^;
また「001.cm$」「002.cm$」とかだけじゃなくWindowsで認識できるファイル名
ならばなんでもokです。
「FINCM MES( 1).cm$」とかでもOKです。(^◇^:
フォルダビューは名前順にソートされて表示されるのでそれを前提にしてファ
イル名またはヘッダ部タイトルを付けていくといいです。ヘッダ部タイトルが
優先です。
> それから、こういう形にした場合、発言の処理(送信処理)は、全部のcmtファ
> イルに対して行ってくれるんでしょうか。
各cmtファイル毎または各メッセージ毎の投稿パラメータで処理してくれます。
[0178] 00/10/09 15:10 Buckeye(UnTUYw5MC2c): Re:177)やた!
情報、ありがとうございます。これで、安心して作業が進められます。
Perlのモジュールの使い方もよくわからないまま、htmlヘルプを読んでは実験を
繰り返してます。例にあったGETではなく、POSTメソッドでのアクセスがようや
くできるようになり、会議室内のデータを落とすことに成功しました。なぜか、
改行が倍になる(1つの\nが2つになる)というのが、どうにも腑に落ちませんが、
なんか、トンネルの先が見えてきた気がします。
Best Regards,
Buckeye
[0177] 00/10/09 07:18 一 五明(YMjHyfzdazU): Re:176)期待通りに動作します
>それでは、プラグインから一度の巡回で、「001.cm$」と「002.cm$」というよう
>に、複数のファイルを書き出した場合、INCM側で正しくインポートしてくれるん
実際、InterNETCOCKプラグ(一番最初に作られたプラグインです)では、
複数ボードを持っていたため、そういう仕様になってます。
で、その後、そういうプラグインが出てこないんですね…(^^;
実はうぇぶ会議室では、将来の複数ボード対応を考えて作っていました
(cm$のファイル名を001.cm$固定でなく、ボードNo.cm$にしてある)が、
結局対応は放ったらかしになってます(^^;
http://kt.sakura.ne.jp/~timeflow/M/
[次のページ]