一括表示

− 野ざらし言 −

[3100] 存在しない変数の処理

としき 2009/01/29(Thu) 23:03
http://www.hinocatv.ne.jp/~toshiki/
出会いだの逆援助だののスパムも多い昨今ですが、今回はそれらに比べれば一般人に後ろ指のさされることの少ない、Vzのマクロネタです。

aja さんの名作、CHK_OPT.DEF を使おうとして気が付いたことです。
これは、マクロ作家が、うまくマクロが動かないというクレームを受けた時に大いに役立つツールですが、それだけにとどまりませ。私の場合だと、メインマシン(PC-98)で動いていたマクロを、ポケ3や DOS/V に持って行ってうまく動かないような場合に使おうと思っていました。幸いにして、今まではこれが必要になるような場面はほとんどありませんでしたが。今回、初めてポケ3上で使おうとして、問題点に気がつきました。
ポケ3では金野版を使っています。これには Sc というオプションはありません。そのせいで、他のマシンで作った OPTION.LST をポケ3に持ってきて実行させると、その部分でマクロが止まってしまいます。
バージョン間での変数の差異はそんなに大きくはないわけですから、現実的な対応としては、その機種毎にマクロそのものを書き換えてもそんなに手間はかかりません。が、それってあんまり美しくないと思っています。

ということで、むりやり一般論に持っていこうとしていますが、存在しない変数だったらパスするようにするには、どのようにマクロを書き換えればよいでしょうか。

[3102] Re: 存在しない変数の処理

めざら 2009/02/01(Sun) 09:39
[3100]へのコメント http://homepage3.nifty.com/mezala/
> 出会いだの逆援助だののスパムも多い昨今ですが、

 まったくこのところすり抜けてくるのが多いのです。すり抜けるというか,もはやこちらの文字列チェックでは対応できないというだけなのですが。新しい版のCGIを導入した上で,根本的なスパム避け対策を施さないと,駄目なようですね。

> ポケ3では金野版を使っています。これには Sc というオプションはありません。

 ここがよく分からないのですが,Scは榊原版のオプションですが,高橋版に移植されていますので,高橋版以降なら有るはずなのですが…。ポケ用にパッチという形で導入されているのでしょうか。

> 実行させると、その部分でマクロが止まってしまいます。

 その場合は,OPT_LST.DEFのようにブロックif文で問題のあるローカルマクロを括るか,問題のある変数ごとにバージョンチェックのブロックif文で括るか,というところではないかと思います。

[3106] Re^2: 存在しない変数の処理

としき 2009/02/02(Mon) 14:51
[3102]へのコメント http://www.hinocatv.ne.jp/~toshiki/
>  まったくこのところすり抜けてくるのが多いのです。

ニフティは大手ですからね。
そもそもの分母であるところのアタック件数そのものが、うちのような場末
のところに比べれば数倍になるのではないでしょうか。
うちは小手先のちょっとした方法でほぼ完璧に抑止できていますが、それも
総アタック件数が少ないからなんとかなっているようなものでしょう。

> 新しい版のCGIを導入した上で,根本的なスパム避け対策を施さないと,駄目なようですね。

キャプチャの導入は、可能であれば避けていただけるとありがたいです。
どうしても、ということであれば仕方ありませんが。
もちろん、もっと過激というか、善良なる一般ユーザを巻き添えにすること
を覚悟で、IPアドレス幅指定で大幅にアクセス禁止にする、という方法も
あるでしょうけど。ログにはそれぞれの発言の書き込み者のIPアドレスが
残っているのですから、過去のまっとうな書き込みのIPアドレスがきちん
と通過できるようにしておけば、だいたい大丈夫なんじゃないかなぁ。

>  ここがよく分からないのですが,Scは榊原版のオプションですが,高橋版に移植されていますので,

あ、ここのところが誤解を招いてしまっていますね。
正確には、ポケ3版の金野パッチ、と呼ぶべきものでしょう。
榊原版以前の部分で分岐が発生していて、それに対して金野さんがいくつか
の機能を盛り込んだ、という構造なので、榊原版の、そして当然、高橋版の
機能はポケ3版にはないのです。

>  その場合は,OPT_LST.DEFのようにブロックif文で問題のあるローカルマクロを括るか,問題のある変数ごとにバージョンチェックのブロックif文で括るか,

そうか、その方法がありましたね。
セットのマクロなのに、そちらの方はごく自然に動いてしまっていたので、
真剣に中を覗いていませんでした。

ほんのちょっとしたヒントですが、大変参考になりました。
どうもありがとうございました。

↑ このページの先頭