★ INCM Plug-in開発掲示板 ★ TinyGrass Ver0.32a [戻る]
[0376] 01/08/15 08:17 GAE(W2OpfoXL0vE): Re:374)RE: プラグインの作成
> ただ、Delphiで作ったEXE形式のプラグインをエディタで開くと他のプラ
> グインとはリソーステーブルらしきものの位置が違うため、もしかする
> とそれが原因で表示できないのかなと思ったりしました。
ちょっと調べてみましたが、
INCMはコードページが「Unicode(041204b0)」のバージョンリソースを固定で読むようになっていました。
VisualC++ ではバージョンリソースを追加するとデフォルトで
「Unicode」になるのですが、たぶんDelphiでは違うんですね。
Iriaを調べてみるとコードページが「Windows,日本語(041103a4)」になっていました。
読めない原因はこれです。
http://www.gld.mmtr.or.jp/~naofumi/incm/
[0375] 01/08/15 06:48 Buckeye(UnTUYw5MC2c): Re:373)RE: プラグインの作成
☆ しん さん
>>BuckeyeさんがEXE作成時に使われた環境はVCなのでしょうか?
いいえ。なんと、Perlです。
Perlはスクリプト言語なのですが、その実行エンジンを同梱してムリヤリexe形
式にするってことができるのです(ActiveStateのサイトで販売されている)。
スクリプト実行時に関連するPerlモジュールなどを探しに行くパスなども、梱包
したexe内のみに強制的に設定されるらしいです。というわけで、とってもヤク
ザなプラグインなのです(爆)
この方法の欠点は、サイズが大きくなること。基本的な実行エンジンだけで動く
プログラムでも、700KBくらいにはなるようです。私の場合、httpsへのアクセス
など、いろいろなモジュールが必要だったので、全体で1.7MBほどというばかで
かいものなりました。ちなみに、ソースファイルは、現在、126KBです。
Perlプラグインは、ほとんどすべてがソースで提供されています(これなら、サ
イズは小さい)。ただ、私のプラグインは、単なるPerlではなく、別立てでモジ
ュールを落としてきてDOS窓からインストールという作業が必要になります。こ
のプラグインを、「Perlをインターネットから落としてインストールするなんて
難しいことはできないよぉ」ってレベルの人にも使ってもらおうと考えたので、
こういう形態を採用しました。
Best Regards,
Buckeye
[0374] 01/08/15 01:38 しん(nNTQJc5T00A): Re:371)RE: プラグインの作成
こんばんは。一 五明さん。
> コマンドラインに「i」が出力されていたら、自力でINCM_BBS.INIの
>[DIALOG]セクションを書き換えて終了です。どう書きかえるかは.INI
>の中を見れば大体察しは付くと思います。
ダイアログの初期化の意味合いは大体わかりました。
>>書いてないのですが、バージョンや作者が表示されないのはそこを書か
>>ないとダメなんでしょうか?
>
> これは前記の処理では駄目です。
> 確か.exeの場合はリソーステーブルを読んでた…のような話が出てた
>記憶がありますが(うろ覚え)。GAEさんが、exeのプラグイン作った人が
>出てこないと正確には判らないです。
EXE形式のプラグインをエディタで開くとリソーステーブルの位置と思わ
れるあたりに、それらしきものが書かれているのを見つけました。
ただ、Delphiで作ったEXE形式のプラグインをエディタで開くと他のプラ
グインとはリソーステーブルらしきものの位置が違うため、もしかする
とそれが原因で表示できないのかなと思ったりしました。
[0373] 01/08/15 01:38 しん(nNTQJc5T00A): Re:372)RE: プラグインの作成
こんばんは。Buckeyeさん。
>私もよく理解していませんが……exeでは、リソーステーブルかなんかを読んでいるらしいです。で、それがないと落ちるというのが正式公開版のINCMです。私が作ったやくざな(^^;) exeプラグインでも落ちないようにしてもらったので、1.21m以降なら大丈夫になりました。となりのプラグインのバージョンや作者が表示されてしまいますけど。
BuckeyeさんがEXE作成時に使われた環境はVCなのでしょうか?
[0372] 01/08/14 13:21 Buckeye(UnTUYw5MC2c): Re:371)RE: プラグインの作成
☆ 3379:一 五明 さん
>> 確か.exeの場合はリソーステーブルを読んでた…のような話が出てた
>>記憶がありますが(うろ覚え)。GAEさんが、exeのプラグイン作った人が
>>出てこないと正確には判らないです。
私もよく理解していませんが……exeでは、リソーステーブルかなんかを読んでいるらしいです。で、それがないと落ちるというのが正式公開版のINCMです。私が作ったやくざな(^^;) exeプラグインでも落ちないようにしてもらったので、1.21m以降なら大丈夫になりました。となりのプラグインのバージョンや作者が表示されてしまいますけど。
Best Regards,
Buckeye
[0371] 01/08/14 10:50 一 五明(LnlNoig1fTU): Re:370)RE: プラグインの作成
>ただ、ダイアログの初期化は何をしていいかわからなかったので処理を
コマンドラインに「i」が出力されていたら、自力でINCM_BBS.INIの
[DIALOG]セクションを書き換えて終了です。どう書きかえるかは.INI
の中を見れば大体察しは付くと思います。
ただし…
>書いてないのですが、バージョンや作者が表示されないのはそこを書か
>ないとダメなんでしょうか?
これは前記の処理では駄目です。
確か.exeの場合はリソーステーブルを読んでた…のような話が出てた
記憶がありますが(うろ覚え)。GAEさんが、exeのプラグイン作った人が
出てこないと正確には判らないです。
http://kt.sakura.ne.jp/~timeflow/M/
[0370] 01/08/13 22:15 しん(T6FzLU/SKkQ): RE: プラグインの作成
とりあえず、ためしにDelphiで作ってみたところうまく動きました。
ただ、ダイアログの初期化は何をしていいかわからなかったので処理を
書いてないのですが、バージョンや作者が表示されないのはそこを書か
ないとダメなんでしょうか?
[0369] 01/08/12 05:21 一 五明(LnlNoig1fTU): Re:368)RE: プラグインの作成
>プラグインを作ってみようと思っているのですが、Cや
>Delphiで書かれたプラグインのサンプルソースはどこ
>かにないでしょうか?
.exe形式のプラグイン自体数が少ないですから、どうなんでしょうね…?
処理としてはsocketで対象URLを持ってきてCMTに変換して吐き出すだけ
ですから、socket関係のサンプルを探せば役に立つかもしれません。
>それとも、素直にパールを勉強してパールで書いたほう
>がいいのでしょうか?
一概にどちらがいいとも言えませんが、CGIにも使えますから覚えておけば
便利では有りますよ(^^;
http://kt.sakura.ne.jp/~timeflow/M/
[0368] 01/08/11 21:51 しん(nNTQJc5T00A): プラグインの作成
プラグインを作ってみようと思っているのですが、Cや
Delphiで書かれたプラグインのサンプルソースはどこ
かにないでしょうか?
それとも、素直にパールを勉強してパールで書いたほう
がいいのでしょうか?
宜しくお願いします。
[0367] 01/06/21 23:23 ???(u9Gty.sNUEY): typo
# incm-lib.pl Ver0.41 since 2000/02/10 by たかちほ
# at line 601
>> sub httpcliant{
[0366] 01/06/08 22:37 おおさむ(fuwFSOw.PLs): INCM plug-in開発のためのPerl入門 サンプル
一 五明 さん、こんにちは。
「INCM plug-in開発のためのPerl入門 サンプル Ver0.20a 2001/5/7」
をいただきました。
いやー、これは良いですね。Perl音痴の私ですが、お陰様で、
プラグインを一つ(読み取りだけですが)作ることができました。
有り難うございました。
それでは、また(^L^)/。おおさむ
[0365] 01/05/09 11:25 Buckeye(UnTUYw5MC2c): Re:359)RE: URLエンコーディング?
アチコチ読み歩いてみたら、私が書いたコードでは、URLエンコーディングはし
ない形になっていたようです。っつうか、モジュール側でしてくれるのかと思っ
ていました(^^;)
URI::Escapeにあるuri_escape関数を使えばいいってことがわかったんで、まず
は、デフォルトのRFC 2396に規定されているキャラクター全部をエスケープして
みました。ところが、これでは、発言処理自体が認識されない(--;)
Webクライアントプログラミング(オライリー)の巻末付録を参考に、おかしく
なる文字だけをエスケープすることして、トライしてみたところ、「%&+」の3つ
についてのみ、エスケープが必要なことがわかりました。この程度では、モジュ
ールを組み込むほどではないので、「%」→「%25」、「&」→「%26」、「+」→
「%2B」へと単純置換する関数を組んで使うことにしました。
Best Regards,
Buckeye
[0364] 01/05/07 20:37 ???(0g5y5mEUAqI): Re:363)RE: 確か
> if(&httpreq("pos:".$page."=次ページ")){
>
> …じゃないですかね?
> 駄目なら「次ページ」をURLエンコードして下さい。
結果: 出来ました。
有難う御座いました。
[0363] 01/05/04 23:42 一 五明(YMjHyfzdazU): Re:362)確か
><form action="http://host/hogegoge/hoge.cgi" method=POST>
><input type=submit name=pos:60 value=次ページ>
></form>
>if(&httpreq("name=pos:".$page."&value=次ページ")){
if(&httpreq("pos:".$page."=次ページ")){
…じゃないですかね?
駄目なら「次ページ」をURLエンコードして下さい。
http://kt.sakura.ne.jp/~timeflow/M/
[0362] 01/05/04 00:47 かつ(0g5y5mEUAqI): 次のページ
プラグインを作ろうとしてるのですが、次のページを
上手く取得できません。
↓こんなformだったので
<form action="http://host/hogegoge/hoge.cgi" method=POST>
<input type=submit name=pos:60 value=次ページ>
</form>
CMLIB15.PLの httpreq に引数を↓こんな感じでわたしてるのですが
if(&httpreq("name=pos:".$page."&value=次ページ")){
最初と同じページを取得してしまいます。
libraryの使い方が変でしょうか?
宜しくお願いします。
[0361] 01/04/29 13:10 一 五明(YMjHyfzdazU): Re:360)あ、
>>> 全部くっつけてから変換するのがいいかも。
>これは、引数の区切りの&も変換されちゃうから、まずいんじゃないですか?
まずいです(^^;
TGrassでまとめて逆変換やってるので勘違いしてました。
http://kt.sakura.ne.jp/~timeflow/M/
[0360] 01/04/28 13:56 Buckeye(UnTUYw5MC2c): Re:359)RE: URLエンコーディング?
一 五明さん、
名前部分はいいんです。@niftyは、英数字のIDで認証を受けたら、あとは、その
システム側がIDから名前をつけてくれる仕組みです。つまり、こちらからは名前
を送らないので。
>> 全部くっつけてから変換するのがいいかも。
これは、引数の区切りの&も変換されちゃうから、まずいんじゃないですか?
それとも、encodeって、そこも含めてするものなんでしょうか……
>> あと、「+」→「%2b」の変換も要るはずです(でないとスペースに変換され
>>るはず)。
これ、テストしてみました。たしかに、スペースに変換されちゃいます。
Perlモジュールのencodeはどうなってるんだろ……ということで、もう一度、ヘ
ルプを見直してみたんですが、もしかしたら、あのコードでは、encode処理はか
からないのかもしれません。少し調べてみます。
Best Regards,
Buckeye
[0359] 01/04/28 11:10 一 五明(YMjHyfzdazU): Re:356)RE: URLエンコーディング?
>ということなので、「&」のかわりに「%26」としてみたところ、これでうまくい
>くようです。本文部分(タイトルも、かな)にある半角&を、ぜんぶ「%26」に
念のために名前もですね(^^;
全部くっつけてから変換するのがいいかも。
あと、「+」→「%2b」の変換も要るはずです(でないとスペースに変換されるはず)。
URLエンコードの仕組み自体は「URLに含めてはならない文字を %xx (xxは16進数の
キャラコード)に変換、ただし例外としてスペースは+に変換」だったと思います。
http://kt.sakura.ne.jp/~timeflow/M/
[0358] 01/04/28 11:10 一 五明(YMjHyfzdazU): Re:357)RE: URLエンコーディング?
>httpで通らないコードとかあるんですかね。
http自体はバイナリデーターをPOSTすることも可能です。
(実際お絵描き掲示板やファイル添付系掲示板はそうです)
ただ…
>biglobeに設置したInterNetCockはうまくいくのに、
>mmtrに設置したInterNetCockにはうまくいかないという問題がおこりました。
>漢字とかいろいろS-JISコードそのまま送ってました。
サーバーが厳しく?チェックしてるとこうなるんですね。
(最低限の変換にすれば普通にURLエンコードするより転送量が減っていい
かなと思ったんですが)
Content-typeがurlencodedの時のみのチェックだとしたら、octet-stream
は通る気もしますが、これはCGIの側で弾かれることが有ります。
http://kt.sakura.ne.jp/~timeflow/M/
[0357] 01/04/27 21:22 GAE(Kb8yjU9ajnI): Re:355)RE: URLエンコーディング?
> エンコードは、一応、かけてるんです。Perlモジュールを使っているので中
> 身がどうなっているか、細かいことはわからないのですが、
> 「application/x-www-form-urlencoded」形式になってるハズです。
エンコード後のデータをファイルにおとせばわかりそうですが、
使い方が間違ってるとか日本特有の問題とか。
そういえば2年前くらい、
INCMのたたき台(cgiにpostするだけ)を作ってたとき、
biglobeに設置したInterNetCockはうまくいくのに、
mmtrに設置したInterNetCockにはうまくいかないという問題がおこりました。
このときURLエンコーディングのことを知らなかったので
漢字とかいろいろS-JISコードそのまま送ってました。
httpで通らないコードとかあるんですかね。
↑程度が低くてすみません(笑)
GAE@1分10円環境
http://www.gld.mmtr.or.jp/~naofumi/incm/
[0356] 01/04/27 16:25 Buckeye(UnTUYw5MC2c): Re:354)RE: URLエンコーディング?
うーん、今もよくわかんないんですが……
>>& は %26 を送ります。
ということなので、「&」のかわりに「%26」としてみたところ、これでうまくい
くようです。本文部分(タイトルも、かな)にある半角&を、ぜんぶ「%26」に
しておけばよさそうです。
Best Regards,
Buckeye
[0355] 01/04/27 11:17 Buckeye(UnTUYw5MC2c): Re:354)RE: URLエンコーディング?
GAEさん、GETWILD'74さん、
エンコードは、一応、かけてるんです。Perlモジュールを使っているので中
身がどうなっているか、細かいことはわからないのですが、
「application/x-www-form-urlencoded」形式になってるハズです。
うーん、なにがおかしいんだろ。
Best Regards,
Buckeye
[0354] 01/04/26 17:51 GAE(GCDDVPb8PCc): Re:352)URLエンコーディング?
GAE@ようやく電話が開通 です。
↓「そんなことはわかってるよ」と思われたらすみません…。
> cmwファイルに書き出してもらって、プラグイン側で発言処理をする場合につい
> てです。発言中に半角の&があると、そこで、発言が切れてしまいます。これは、
> cgi側が、半角&を引数間の区切りと誤解してしまうことから起きているものと
> 思われます。
& は %26 を送ります。
Webで「URLエンコーディング」を調べると細かい仕様が出るかもしれません。
ある範囲の文字コード以外のコードを送るときは
基本的にこのエンコードが必要になるはずです。
「ある範囲」については適当でもいいような気がします。(とりあえず)
ほとんどCGIは、&で分割したのちに、デコードしているからです。
http://www.gld.mmtr.or.jp/~naofumi/incm/
[0353] 01/04/24 16:52 GETWILD'74(Qk25uvB38zc): Re:352)Re: 発言時の半角&の処理
encodeとかは使えないですかね。
[0352] 01/04/22 17:00 Buckeye(UnTUYw5MC2c): 発言時の半角&の処理
みなさん、ご無沙汰しております。
4ヶ月を超えた怒濤のシュラバが一段落ついたので、@niftyインターウェイプラ
グインのメンテを始めました。で、ちょっとお知恵を借りたいことがあります。
cmwファイルに書き出してもらって、プラグイン側で発言処理をする場合につい
てです。発言中に半角の&があると、そこで、発言が切れてしまいます。これは、
cgi側が、半角&を引数間の区切りと誤解してしまうことから起きているものと
思われます。
同じcgiにブラウザで書き込むと、ちゃんと、半角&が出るので、なにか、前処
理する方法があるハズなんですが……どなたか、ご存じありませんか?
htmlでの表記法でいけるかと思ったら、あれ、みんな、頭に半角&がつくんです
ね(^^;)
最悪、全角&に置換してから発言するって方法もありますけど(--;)
Best Regards,
Buckeye
[次のページ]