This page linked from [ CoverPage | RO_GPS.pm | RO_GPS.pmBBS_2002 | RO_GPS.pmBBS_2003Q1 | RO_GPS.pmBBS_2003Q2 | RO_GPS.pmBBS_2003Q3 | RO_GPS.pmBBS_2003Q4 | RO_GPS.pm開発 | __RO_GPS.pmBBS過去ログ一覧 | rotoold ]

RO_GPS.pmBBS

過去ログ:2002年,2003年Q1,2003年Q2,2003年Q3,2003年Q4,最新



名前 :

名前 : ynakata(2008/01/27 18:11)
エラーというか警告で、まあそのメッセージだけが出てるぶんにはそんなに実害はないのですが
> Use of uninitialized value in string eq at ROTool/Ragpos/Client.pm line 51.

ログが汚れるので嫌だとかはありそうなので折をみて抑止できるようにしてみたいとは思います。
っても自分では既に使ってないのでテスト版作って上げるだけ、とかになりそうですが。


名前 : Kuro(2008/01/27 13:56)
こんにちは、2008年ですがまだ利用しています。
Debian GNU/Linux 4.0 で rotoold-20050506_0 が動作することを確認しました。
rotoold-20051102_0 ですと以下のエラーを返します。
Use of uninitialized value in string eq at ROTool/Ragpos/Client.pm line 51.
VER29=0
Perl のバージョン 5.8.8 built for x86_64-linux-gnu-thread-multi
参考になれば幸いです。


名前 : 通りすがりのもの(2006/11/14 23:06)
↓の書き込みはアカハックURLぽいような。
見ている人がいるのかどうか分かりませんが対処しておいた方がいいかもしれません。


名前 : HI-RO(2006/03/05 15:42)
すみません、こちらのミスでした。
追加しようと思っていたポートがすでに使用済みでした。


名前 : HI-RO(2006/03/04 22:00)
初めまして
オプションで2ポート起動出来るのは知っているのですが、
メッセージキープの時間を変えたた物を同じサーバで起動しようと思い
起動ポートportを別々に設定し起動たのですが
アドレスはすでに使用中ですとのエラーメッセージが帰ってきました。

これを回避する方法はありませんでしょうか?


名前 : ynakata(2005/11/02 16:12)
暫定対応版と称して10/28のnomonomoさんの対応案を取り込んだものをリリースしました。
もう少しエレガントに、rotooldへのRagposモジュールのuse宣言の引数で動作モードを設定するようにしてみました。
rotoold本体の13行目、

use ROTool::Ragpos::Client;

となっている行を

use ROTool::Ragpos::Client 'ver2.9';

と書き換えれば、未認識Ragposクライアントを強制的に2.9系として認識するようになります。


名前 : ynakata(2005/10/29 00:31)
んじゃその一文をコメントとして入れたものでもリリースしますですよ。
必要ならコメントアウトして使ってね、ということで。


名前 : nomonomo(2005/10/28 23:31)
とりあえず、スイッチとかで対応が綺麗なんでしょうけど、めんどくさいので…
ROに繋いでない状態での出力を強制的に2.9系にするパッチということで。

ROTool/Ragpos/Client.pm
172行目 $self->{"param"}->{"expperhour"} = 0;
173行目 } else {

となっていますが、
その間に
$self->{"param"}->{"ragpos_version"} = "2.9";
を入れてもらえればうまく行くはずです。


名前 : nomonomo(2005/10/26 03:27)
っと。しばらく見ていませんでした。
大型パッチが当たったので見に来たら…1ヶ月前ですかorz

とりあえず予想としては、ラグナに接続していないので、
ラグポジプロトコルは2.21系か2.9系の区別がつかないので
鯖は2.21系と判断して出力している。ってところですかね。
当方は、あほなびをメインで使ってますので、2.9系をデフォで送るのが嫌なんで…
ちょっと考えさせてください。


名前 : somebody(2005/09/26 23:46)
ご返答ありがとうございます。
RagPos?モジュールの問題で合っていると思います。
プロトコルの互換問題というところですか。
すぐに修正していただかないと困るようなことでもないので、気長に待ちます。


名前 : ynakata(2005/09/26 15:55)
RagPos?モジュールの問題、なのかな?
実際に現象を確認していない&私が作ったモジュールではない、ので断言はできないのですが、
2.21系と2.9系の両対応をしている関係で、誤判別がおきてるんじゃないかと思います。

これ、想像通りだとすると異バージョン共存を考えていないらくぽじプロトコルに起因する問題のような……。
どう対応すんのかが正しいのかわからないのでnomonomoさんの反応待ちかなぁ……。
# しばらく反応ないようでしたら、とりあえず的なインチキ対応を考えてみますけど。


名前 : somebody(2005/09/26 14:54)
はじめまして。
らぐぽじプロトコルで使っているのですが、ちょっと本家のサーバと違う挙動があるので
ご報告したいと思います。
サーバはrotoold-20050506_0版で、クライアントはらぐぽじ 2.97a(最新版)です。

どちらもROを稼動させていない状態で、らぐぽじを接続すると起きます。
発生する違いは
・ログインしているキャラクターの座標表示が全て0,0に固定される
・ログインしているキャラクターのBase/Jobとも時給表示が0のままになっている
です。
これらは本家のサーバではROを起動していなくても正常に表示されました。

ROを動かしていないマシンから、ちょっと時給を見てみたいという場合が時々あるので
修正していただけるとうれしいです。


名前 : nomonomo(2005/05/07 01:33)
>>CVS
いや、今ので問題なければそれで。
あるから使ってみようかなぁ。と思っただけですw

>>同封のRagmap.ini、ragpos_job.txt、server_ip.txtが古い
自分もらぐぽじプロトコルだけを使っているので、必要ないんですよね(ぉ
server_ip.txtは RoAddr?.ini - Upload & MakerのRoAddr?.iniから
CharServers?のところから取ってこれそうです。
http://zerodrive.dip.jp/ragnarok/RoAddr/RoAddr.ini

Ragmap.iniは調べてみましたけど、無さそうですね…

>>ROGPSサーバーとしてROGPSの0.5.2.37+と比較
ある特定のクライアント同士で接続できないだけですから…
どこまでサーバーで考慮するか?っていうのが焦点で。
相性。ですましてもいいかと思いますし。そこら辺は、開発のスタンスですかね。
なので、おまかせします。マニュアルに書いておけば良いかな?とか(ぉ


名前 : ynakata(2005/05/06 15:39)
とりあえずこれから取り込み&リリース作業します。

>>CVS
公開サーバからだとcommitできないようになってると思います。
使う気があるならssh経由でアクセスできるアカウントを発行しますけど、いります?

>>同封のRagmap.ini、ragpos_job.txt、server_ip.txtが古い
なにしろ自分で使ってないからなんも困らんのです(ぉ
固定URIで取れる場所があるなら起動時に確認にいくような仕込みをするのはやってみてもよいのですけど。
えーと、調べるのめどいから情報ぷりーず?

>>ROGPSサーバーとしてROGPSの0.5.2.37+と比較
これ、修正した方がいいんですかね。
rotooldとしては問題がなければ「できるだけなにもしたくない」のですが。


名前 : nomonomo(2005/05/06 11:51)
とりあえず、バグ修正したのをおいておきます。
http://www5.airnet.ne.jp/nomonomo/rotoold/rotoold-20050501.zip

変更点などは
http://www5.airnet.ne.jp/nomonomo/rotoold/
に書いておきました。

CVSを使ってみたかったのですが、上手くいかなかったので<使い方もいまいちですが


---
今回、接続テストをして気がついた点があります。
・ログ出力追加の時のバグかな?
 ROTool.pmの197行のsprintfの中が「'」でくくられているので、
まで表示される
・ROGPSサーバーとしてROGPSの0.5.2.37+と比較
 未接続時にHP、SPなどが「--」でクライアントから送られてきた場合、
 rotooldはそのまま送り出しますが、ROGPSは0に置き換えてます。
・同封のRagmap.ini、ragpos_job.txt、server_ip.txtが古い
 Ragmap.iniとserver_ip.txtはhttp経由で最新のを持ってくる仕組みを作るとか(ぇ
 ragpos_job.txtは、クライアントごとに転生職の表記が違うので、各自やってもらうしかないですね。


--
後者は、一部クライアントで不都合が起こったので調べてみました。

やっぱり、サーバー系ソフトって面倒ですね。クライアントの数だけチェックが必要になって…
らぐぽじプロトコルも正式仕様を出して欲しいものです。


名前 : nomonomo(2005/04/27 01:22)
新フェイヨン実装です。
まぁ、マップ名を追加してください。って感じで。
RO-GPS系って今きちんと動いているのがあるのでしょうか…<よく知らない

で、
>らぐぽじプロトコルの場合、ROを終了した後も、キャラデータがのこるのですが、

ですが…
あれ? らぐぽじサーバーを使ったら、行きますねorz

確認しておきます。GW明けまでには対応したいなぁと思っています。


名前 : ynakata(2005/03/04 18:33)
らぐぽじモジュール作ったの俺じゃないからパス(ぉ
見てたらフォローして頂けると嬉しいです>nomonomoさん


名前 : somebody(2005/03/04 18:15)
こんにちは。質問があり、投稿することにしました。

サーバ:rotoold20050116_0
クライアント:あほなび@83
プロトコル:らぐぽじ

この構成で使用しているのですが、
らぐぽじプロトコルの場合、ROを終了した後も、キャラデータがのこるのですが、
これの解決方法はあるでしょうか。
過去ログをみてもそれらしき解決方法がわからなかったので・・・


名前 : nomonomo(2005/01/27 22:58)
お久しぶりです。

とりあえず、2/15に転生パッチがやってくるそーです。
GPSプロトコル、アコナビプロトコル系は、職業を漢字1文字で送っていましたので…
また、表示がバラバラなんだろうなぁ。

とりあえず、ragpos_job.txtに追加しまくれば動くと思います。

※アコナビ本体、各種GPS本体はメンテされるのかなぁ?


名前 : ynakata(2005/01/16 16:54)
予告よりずいぶん遅くなりましたが、ログの修正とマップ名変換の修正を取り込んだ20050116_0版を作成しました。

>>ログ出力がEUC
すいません。Perl内部処理の都合で内部コードはEUCなので、デフォルトではEUCで出力されます。起動時に '--outcode s' オプションを付けるとSJISで出力されるようになる、はずです。

>>変態プログラム
「クライアントの種別認識→オブジェクトの再bless」をしているあたりが、プログラムの構造として難解になっていると思います。接続時のログ出力とかを探して追いかけていくと、ここでつまづくかな、という自覚アリです(--;
それ以外は自分で読めなくなるのが嫌なので、わりと綺麗に書いてますけどね(昨日の自分の書いたプログラムは、別人の書いたプログラムと思え)。


名前 : (2005/01/15 14:57)
> rotooldは私の趣味の限りを尽くした変態プログラムなので読解できないのは仕様です(ぉ

そうですか?すっきりしていて、読みやすかったですよ。


名前 : somebody(2005/01/06 22:25)
早速の返答ありがとうございました。
実際に作業できるまでに時間がかかってしまって申し訳ありませんでした。

実際に変えてみたところ、しっかりとログにユーザIDが記録されました。
EUCで保存されていて、Windows側からログを見るときにちょっと焦りましたが、
ログ出力が望んでいた形になったので、かなりうれしいです。

まだ変更して10分しかたっていないので、きちんと動作しているかのチェックは微妙ですが、
変更後のチェックも兼ねてしばらく動作させておこうと思います。


名前 : ynakata(2005/01/05 19:37)
rotooldは私の趣味の限りを尽くした変態プログラムなので読解できないのは仕様です(ぉ

という冗談はさておき、質問について。

ということで、例に挙げられた部分でユーザIDを出すのには全体の処理順をいじる必要があるので面倒なことになると思います。

oidやIPアドレスを表示させているのはROTool.pm内のoinfoという関数です。
ここを以下のように書き換えれば、場所によってはGPS側のユーザーIDが出力されるようになると思います。

sub oinfo{
    my $self = shift;
    my $uid;

    # {id} を {name} に置換すればRO内のキャラ名になる
    if($self->{param} && $self->{param}->{id}){
        $uid = sprintf(" : GPS_user_id=%s",$self->{param}->{id});
    }

    return sprintf("oid=%s : %s%s",$self->{oid},$self->{PeerAddr},$uid);
}

接続時にユーザIDを表示する処理を追加するのであれば、上記の修正を施した上で、ROTool.pm内のrecv関数を以下のように修正するのが早いと思います。

sub recv{
    my $self = shift;

    my $sock = $self->{"sock"};
    my $len = $sock->sysread($self->{"buf"},8192,length($self->{"buf"}));
    foreach(&ROTool::typechecker()){
        &ROTool::printlog(2,"  check by $_\n");
        if(&$_($self)){
            $self->{"flag"}->{"noread"} = 1;
            my $ret = $self->recv;
            &ROTool::printlog(1,sprintf(" first readed:[%s]\n",$self->oinfo()));
            return $ret;
        }
    }
    return $len;
}

以上ですが、まだ処置できてないchomp()からの修正と合わせて、要望として取り込みの上で若干直すかもしれません。


名前 : somebody(2005/01/05 18:11)
初めまして。FC1でrotooldを使用させてもらってます。

ふと思ったのですが、ログ出力(rotoold.log)ですが、

Ragposでのログですが、このようになると思います。
このときに接続してきたときのユーザID(ニックネーム?)
も表示させるにはどこをいじるんでしょうか・・・。
人数が増えてくると区別がつかないのですが、
プログラミングがどうも苦手なので、ソース読解仕切れずにいます。


名前 : ynakata(2004/12/26 18:18)
Wikiだと思いやがって勝手に修正してみました。↓の正規表現部分
改行コードの取り扱い部分については、後でchomp()から修正しておきたいと思います。年内には作業予定、のつもり。


名前 : (2004/12/26 18:16)
あーうー。正規表現がくさってまいました。

MapNameConverter??.pmのL12のchompを、

s/[\n\r]*$//; # substitude supported CR+LF for chomp.

こんな風に書き換えました。

上の全角を、半角にして入力してください:D

を、半角で売ってください。


名前 : (2004/12/26 18:11)
おひさです。
すんごい遅レスですが・・・

以前、RagPos?とROGISとの連携で、
RagPos?rotoold(area2name)→ROGIS
はうまく動くけれど、
ROGIS→rotoold(name2area)→RagPos?
がうまく動かない・・・って言ってたことがあると思います。

で、nomonomoさんが言ってた範囲対策以外で、
期待通りの動作をしなかったので少し調べてみました。

答えから言うと簡単でRagMap?.iniがCR+LFになっていて、
perlのchompがCRLFのLFだけを切り取り、nameの後ろのCRが残ってしまっていたからでした。

これはもしかすると処理系によるのかなぁってことで、

MapNameConverter?.pmのL12のchompを、

        s/[\n\r]*$//;           # substitude supported CR+LF for chomp.

こんな風に書き換えました。

これでROGISのPoint.iniと同じものをrotooldが食えば、うまいこと動作します。
このあたりはPerlそのもののコンパイル方法でも異なるのかもしれないですねぇ・・・。
とりあえずFreeBSDとSolaris(でPerlをPackageに頼った形)では無理でした。

それから、これでもPoint.iniと同じではないものを入れているとさみしいので、
Ragpos/Client.pmのL240行付近にある、

$param{"a1"} ||= $self->{"mapconv"}->name2area($param{"area"}) || "unknown";
を、こんな風にしちゃいました。
$param{"a1"} ||= $self->{"mapconv"}->name2area($param{"area"}) || $param{"area"};

すると、name2areaで変換が出来なくても、
MapCode?欄にGPSプロトコル、アコナビプロトコル系から来たマップ名がそのまま記載されます。
人間はこれで一応わかる・・・ってのもあるんですが、
nomonomoさんのほうで、このエリアは他の用途に使っていて・・・・ってこともあるかもしれません。

一応、これで使っていたりするのですが、なにかあってもしりません。
こういう回避も出来なくはないよっってことで・・・ちょっとした、Contriubteを・・・。


名前 : Kuro(2004/11/21 13:27)
こんにちわ。
いつもお世話になりっぱなしもなんなので、インストールマニュアル書いてみました。
Redhat Linux 9 使いの方にしか参考にならないかもしれないです。
http://klog.jp/memo/rotoold.html
リンクはご自由にどうぞ。
それでは。


名前 : ynakata(2004/08/27 12:53)
適当に最新のRagMap?.iniを取り込みました。
ちなみに、いつのまにかaconavi_map.datに代わってRagMap?.iniを利用するようになっています (激遅レス


名前 : 転載(2004/08/26 21:45)
nif_in=ニブルヘイム 室内
yggdrasil01=フベルゲルミルの泉(イグドラシルの幹)
nif_fild02=ギョル渓谷
nif_fild01=秘境の村
niflheim=死者の街ニブルヘイム
valkyrie=ヴァルキリー神殿


名前 : somebody(2004/06/12 04:43)
素朴な疑問なんですが
aconavi_map.datはRagMap?.iniの増分を追加しなくていいんでしょうか?


名前 : ynakata(2004/06/10 13:41)
20040610_0版で以下の修正を取り込みました。


名前 : (2004/06/09 23:57)
どうも、FreeBSD5.1 Perl5.8.0でやると、Warningが耐えないので、
Use of uninitialized value in string eq at ROTool/Ragpos/Client.pm line 254, <TABLE> line 45.
Use of uninitialized value in hash element at ROTool/Ragpos/Client.pm line 230, <TABLE> line 45.
Use of uninitialized value in hash element at ROTool/MapNameConverter?.pm line 31, <TABLE> line 45.

↑これがいっぱいでる。

修正してしまいましたが、ynakataさんが、気分がよいように取り込んでくれると幸いです。

http://www.justplayer.com/~kohju/tmp/ROTool.patch


名前 : (2004/06/09 21:17)
すみません。

問題がありました。

○修正項目1
rotoold.sh restart
ができなかったことを修正。

○修正項目2
stopで、エラーが発生したとき、起動スクリプトの戻り値がエラーになっていなかっ
たのを修正。

○修正項目3
/sbin/nologin
にしたことにより、起動スクリプトを修正した。

以上です。

下記に一時的に置いてあります。
http://www.justplayer.com/~kohju/tmp/rotoold.sh-FreeBSD


名前 : ynakata(2004/06/09 13:39)
以下の変更を加えた20040609_0版をリリースしました。

なにか不具合あったら報告宣しくお願いします>各位


名前 : (2004/06/09 02:55)
スーパーノービスはJOBが23になってますね。
らぐぽじのJOB定義部分、及びrotooldのragpos_jobに「23=超」を
追加すれば通知されました。(RO-GPS互換モードで確認)


名前 : nomonomo(2004/06/09 01:54)
ウンバラパッチが来ましたね

マップファイルを更新してくださいね<調べてません
あと、ROGPSプロトコル。スーパーノービスの表示とかってどうなるんだろうか…
また、クライアントごとに実装が違うんだろうなぁ。


名前 : (2004/06/08 22:30)

そういえば、そうですね。

pwを入れてないからログイン出来ないにしても、シェルもnologinの方がより安全ですね。


名前 : CF(2004/06/08 15:03)
通りがかりのCFと申します
FreeBSD用のインストールメモですが。
rotooldはログインできなくてもよさそうなのでshellは/sbin/nologinとかでも良さそう。
・ユーザ&グループ追加はこのコマンドで一発のはず(4系でしかテストしてませんが)
pw user add rotoold -u 90 -d /usr/local/rotoold -s /sbin/nologin -c 'Ragnarok Tool Daemon'
のあたりが気になりましたが、いかがでしょうか。


名前 : ynakata(2004/06/04 01:27)
RagMap.iniの変更で済むならそれで済ませるのがベターかなあ。
とりあえず、POINT.INIを見てみることにします。


名前 : nomonomo(2004/06/04 00:07)
原因判明しました。
ROGISで使われているマップ名は、ROGIS付属のPOINT.INIを読んでいるようです。
で、それの日本語がRotoold付属のetc/RagMap?.iniと相違しているわけで…

ROGPSプロトコルは、日本語名を送っているので、この手の問題が発生します。
対処方法は…どーしよ(汗)

1.日本語->内部マップ名変換テーブルを追加する。
2.ROGIS使っている人のPOINT.INIをRotoold鯖と一緒にする(逆でも可)
3.ROGPSプロトコルを使わない!

MapNameConverter?.pmの改良ですかね…


名前 : (2004/06/04 00:00)
> 正規表現を駆使して対応するのはhacker的にはアリですけど、配布パッケージとしては望ましくないかなー。

そうですよねぇ。
せいぜい、 「含まれる」程度の当たり障りのない正規表現ぐらいしかできないかな。


名前 : ynakata(2004/06/03 17:29)
ROTool/MapNameConverter.pm を改良 & etc/RagMap.iniを変更すれば、
「マップ名→マップコード」変換はなんとかなると思います。

iniファイルを書き換える人対策は、どうしましょうかね。
正規表現を駆使して対応するのはhacker的にはアリですけど、配布パッケージとしては望ましくないかなー。


名前 : (2004/06/02 14:45)
おや・・・勘違いかな。

うちはROGISを使う人が多くて、現在はROGPSV2プロトコルが多いのだけど、
らぐぽじでROGISの人のMAP名は表示出来ないけれど、
ROGISでらぐぽじの人のMAP名が表示出来たので、
「マップコード→マップ名」変換は可能でも
「マップ名→マップコード」変換はできないのだと思いこんでいました。

たしかに、マップ名送り合うクライアントの人は、マップ名を時々変える人がいるので、
100%はうまくいかないだろうけれど、正規表現を駆使すれば、よほど変な名前にされない限りはなんとかなるのかなぁと、
考えていたり・・・・。


名前 : nomonomo(2004/06/02 01:57)
ROGPS→らぐぽじはダメですか?
試験してはずなんですけど…。適当に(ぉ

両者のクライアントは何を使ってますか?


名前 : (2004/06/02 00:10)
お手数おかけしました。
ご苦労様でした。

現状、らぐぽじ→ROGPSはOKになったのだけども、ROGPS→らぐぽじはNGなんですよねぇ。
正規表現列とか与えないとむりっぽそうですねぇ。


名前 : ynakata(2004/06/01 12:39)
インストールメモとスタートスクリプトを配布物ツリーに取り込みました。


名前 : (2004/06/01 01:42)
どうぞ。

何の問題もありません。よろしく。


名前 : ynakata(2004/05/31 14:27)
スタートスクリプトは、許可が得られれば配布物に同梱してしまいたいと思いますがいかがでしょう?>瀧さん
それから、インストールメモについても要点を抜き出したものを適当に同梱させたいです。


名前 : (2004/05/29 19:18)
FreeBSDで動作報告して以来ですが、お久しぶりです。

らぐぽじ対応の新しいバージョン貰って行きました。

ついでに、FreeBSDのスタートスクリプトとインストール手順メモかいたので、置いておこうと思ったのですが、ファイル上げられなかったので、自分のwebpageに上げておきました。http://www.justplayer.com/~kohju/diary/showpages.php?TIME=20040529190821

っていうことで、5.2.1系で動作チェックしました。


名前 : somebody(2004/05/22 18:34)
ふーむ。
> &printlog("Caught SIGPIPE. But continue..
");
をコメントアウトしちまえばいいのかな。

ついでにserver_ip.txt追加分
Idun=211.13.232.35
Heimdal=211.13.232.67
Eir=211.13.232.99
Tyr=211.13.232.131
Lisa=211.13.232.163
Ses=211.13.232.195
Tiamet=211.13.232.227


名前 : ynakata(2004/05/22 02:39)
えーと、ソース改造してください(ぉ

すいません。昔の名残でちゃんとエラーログとして吐いていないんだと思います。
近いうちに修正版あげます。


名前 : somebody(2004/05/21 23:48)
ログにCaught SIGPIPE. But continue..が大量に出てHDDを圧迫してしまうことがあるんですが、
エラーログを抑制するにはどうしたらいいでしょうか?
ログレベルを低くしていても出てしまいます。
nullに送るという手もありますが他のログは欲しいので…


名前 : somebody(2004/05/07 01:10)
UN*X系で使える…って言うかPerlで作られているので、大変重宝しています。
開発大変でしょうが頑張ってください><b
板汚しですが、1応援者として足跡をば…ぺたぺた。


名前 : ynakata(2004/04/26 13:54)
ログ出力をちょっといじってみたバージョンを作りました(tar.gz / zip)。
元々ファイルの方にはUNIX時刻を出力していたのですが、--verboseオプションの方にも出力するようにしました。ちなみに、rotoold本体の一番最後、printlog関数の中をいじると時刻出力フォーマットは変更できます。(サンプルのコードをコメントアウトしてあります)。


名前 : somebody(2004/04/25 01:50)
いつも使わせてもらっているのですがログ出力のさいにIPや時間も残せないものでしょうか


名前 : ynakata(2004/04/05 02:23)
trial20040405_0版で、nomonomoさん提供の新Ragposモジュールを取り込みました。
一応らぐぽじとの互換性も確保されたバージョンだということです。お試しください。


名前 : somebody(2004/03/10 10:16)
うちでいじっていたときは、確かR=0とR=1の判別加えたぐらい
で2.91でのエラーはなくなったと記憶してますけど・・・
まあ表示はアレでしたが。(汗)
# 適当に手を加えてたからかなり曖昧ですけど。


名前 : ynakata(2004/03/10 02:08)
つーか、そろそろチャットかメッセンジャーを使うべきなのか。


名前 : ynakata(2004/03/10 02:04)
ROTool::UA_list()で取り出した$clientの種別を知りたい、ということでしょうか。
それならば、(perlの標準機構の) isaメソッドを使えば望みのことができると思います。

if($client->isa('ROTool::AcoNavi::Client')){
     print "client is AcoNavi\n";
}

あるいは$self(の接続先)が2.91β以降/以前かを知りたいってことでしょうか。
だとすれば、最初のrecv時以降にバージョン判定して$selfの適当なフィールドに保持しておくべきでしょう。
# 「正しい」のは2.91β以降/以前で別々のモジュールにすることかも。


名前 : nomonomo(2004/03/10 01:40)
>ynakataさん
すいません。質問です。
個々モジュール上のsend内で、現在どのクライアントかを判断する方法は無いでしょうか?
らぐぽじのVer2.91βに対応するために、振り分けがしたいのですが…


名前 : nomonomo(2004/03/10 01:10)
らぐぽじ Ver2.91βを試してみたところ、プロトコルがちょっと変わってますね。
一応、接続が出来るようにはしてみました。
Ver2.91βが接続できなかった理由は、R=0の対応漏れが原因かと。
あと、Ver2.91βのクライアントが落ちる理由は、規定外のデータが来ると落ちるようです。
(今まで、マップ名が入っていたところに、座標情報が入っていて
その次のエリアのマップ名+.pswをらぐぽじ側は使っていて、
あほなび側は、前者を使っているようなので…)


名前 : ynakata(2004/03/09 10:16)
nomonomoさんのrotoold-t-0309.lzhを取り込んだtrial20040309_0版(tar.gz / zip)を作りました。
とりあえずこっち(BBS)からだけリンクしておきます。


名前 : somebody(2004/03/09 08:40)
>のようです。そこの部分、実装をさぼってます。

改造してたときは強引にいくつかのパラメータセットしたあと、
if ($param{"baselv"} eq "--" || $param{"baselv"} eq 0) {
push(@msg_s,"R=0","I=" . $param{"id"},"M=" . $param{"message"});
}
else {
こんなことしてましたけど・・・
今考えるとログイン中とかまずいのかな・・・(汗)


名前 : nomonomo(2004/03/09 07:55)
>らぐぽじへの送信部分ですが、ログインしていないときは
>R=0になるんじゃないでしょうか?(仕様わからない・・・)
のようです。そこの部分、実装をさぼってます。
RO-GPSとあこなびは、ログインしていない時の判断がわからないのですよ。
らぐぽじ同士はきちんとするか…


名前 : somebody(2004/03/09 02:27)
らぐぽじへの送信部分ですが、ログインしていないときは
R=0になるんじゃないでしょうか?(仕様わからない・・・)
2.91ではらぐぽじがエラーで落ちちゃいました。


名前 : nomonomo(2004/03/09 00:55)
trial20040308_0版を元に修正してみました。
変更点だけを固めてみました。Win版のdiffが見つからなかったので。

とりあえず、エラーは出ないはずです。

現状の問題点
・らぐぽじプロトコルのサーバーがわからない(サーバー一覧も持たないといけない?)
・らぐぽじ2.9系は未確認(後日確認してみます)

http://www5.airnet.ne.jp/nomonomo/rotoold/rotoold-t-0309.lzh
以上、よろしくお願いします。


名前 : ynakata(2004/03/08 23:22)
trial20040308_0版で、AcoNavi?モジュールからマップ名変換機構を切り離して、共通モジュール化してみました。


名前 : ynakata(2004/03/08 22:38)
とりあえず、AcoNavi?モジュールの奴を外部化してみます。


名前 : nomonomo(2004/03/08 22:01)
下の報告にあったrogpsモジュール内でのエラー原因は、らぐぽじ側で"area"を指定していないからです。

そこで相談なのですが、アコナビモジュール内でマップ変換モジュールを使用していますが、
らぐぽじモジュール内でも使用したいです。
らぐぽじモジュール内で同じロジックを入れても良いと思いますが、
どうせなら共通モジュールの方がよいかなぁ?とか思ったのですが、どうしましょう?


名前 : nomonomo(2004/03/08 20:31)
こっちで動かしてデバッグしてみます。
で、ふと気がついた点が。
・MRGPSVのJOBテーブルが2−2に対応していない。

あと、さぼっていた点が問題になっているので、そこら辺を実装してみます。
# classが"--"がテーブル変換でなんかエラーを出してます。

あと、らぐぽじ2.9系は、出る項目等が増えているので、
もしかするとフォーマットが変わっているのかも?
こっちも調べてみます。


名前 : ynakata(2004/03/08 12:05)
やっぱ真面目にやらんと駄目っぽいですね。むむむ。
#テストできる環境がないのが厳しい。


名前 : somebody(2004/03/08 11:50)
自分もらぐぽじのところ動かそうといろいろ改造してみたんですが、これって
かなり難しくないですかね・・・
・らぐぽじはマップのコードからマップ名を出している
 アコナビ等はマップ名をやりとりしているので、変換等が必要になる。
 マップ名は他のクライアントでいろいろ違うので、変換するのが大変・・・
・らぐぽじはサーバーはIPでやりとりしている
 アコナビ等は名称でやりとりしているので、変換が必要になる。
 こちらは頑張ればなんとかなるかな・・・
いろいろ手を入れてみたんですが、だんだん面倒になって投げちゃいました。
あとらぐぽじ側になんか不振な動きがあったりして、たまに表示が変になって
たんですが、これも理由がわからず・・・

で、下のエラーですが、全部この仕様の違いというかを吸収すればでなくなる
のではないかと思います。(どこいじったかわからなくなった・・・(汗))


名前 : somebody(2004/03/06 09:09)
trial20040303_0版をFedoraCore?1上で試用してみました。
らぐぽじ2.64で接続すると、(1)のエラーが出ます。(接続はできます)
らぐぽじ2.94betaで接続すると、エラーメッセージは出力されませんが、接続できません。

RO-GPSプロトコルで接続しているクライアントがいるところに、らぐぽじプロトコルを用いて接続すると(1)(2)(3)のエラーが出ます。(接続はできます)
なお、RO-GPSプロトコルのみを使用する場合は上記の問題は発生しません。
とりあえずご報告まで。
---
(1)Use of uninitialized value in hash element at ROTool/Ragpos/Client.pm line 120, <TABLE> line 16.
(2)Use of uninitialized value in substitution (s///) at ROTool/RO_GPS/Client.pm line 78, <TABLE> line 16.
(3)Use of uninitialized value in concatenation (.) or string at ROTool/RO_GPS/Client.pm line 80, <TABLE> line 16.


名前 : ynakata(2004/03/03 16:44)
らぐぽじモジュールを取り込んだtrial20040303_0版を出しました。職業対応も一応実装してみましたが、例によってノーテストなのでよろしくお願いします。
とりあえず、MRGPSV.iniの一部分の情報を切り出したファイルを設定ファイルとして試してます。
最終的にはMRGPSV.iniをそのまま流用できるようにするかもしれません。


名前 : somebody(2004/03/03 13:14)
解説ありがとうございます.そう言えば,情報理論か人工知能論あたりでハッシュって習ったような気がします(←覚えてない)
精進します.


名前 : ynakata(2004/03/03 01:55)
map使ってる部分は配列からハッシュに変換するためのテクニックです。foreachで線形検索(=O(n))するよりはハッシュで検索(=O(1))する方がアルゴリズム的に速いので。rotooldの規模だとどちらを使っても大して変わりませんけど、もうちょっと規模が大きくなると有効な考え方ですね。


名前 : somebody(2004/03/03 00:52)
ありがとうございます.許可するIDを羅列したファイルを読み込んで,@ID_ACCEPT_LISTを作成し,$イdとマッチングを行うことで所望の動作が得られました.
示して頂いたソースは,map関数が理解できなかったので,自己流で書いてみました.perl歴は短く,多分に冗長なソースですが晒しておきます.
http://www.mbspro6uic.com/mbsplink

名前 : ynakata(2004/03/02 13:04)
ROTool.pm中の、UA_regist関数が肝になると思います>登録idのみ許可

rotoold本体のaccept_new_client()は、TCP/IPレベルでのacceptを行うだけです。
この時点では、まだクライアントからの通信を受けていないので、接続先クライアントの種別すら分かっていません。当然idもわかっていません。ですので、accept_new_clientの時点ではidによる判別は不可能です。

クライアントの種別が判明して各種情報も解析されると、ROTool.pmのUA_regist()関数が呼ばれます。
標準のUA_regist()ではidの重複拒否判定を行っていますので、登録idのみ許可したい場合には、この部分に手を加えるとよいと思います。

具体的には、以下のpatchのようになると思います(例によって、ノーテストで書いたシロモノです。適用は自己責任でどうぞ)。

diff -u -r1.15 ROTool.pm
--- ROTool.pm   6 Nov 2003 02:42:15 -0000       1.15
+++ ROTool.pm   2 Mar 2004 04:02:58 -0000
@@ -27,8 +27,15 @@
 my %clients;
 my %sock_to_client;
 
+my(@ACCEPT_ID_LIST) = qw( me friend friend2 friendx );
+my(%ACCEPT_ID_LIST) = map { ($_,1) } @ACCEPT_ID_LIST;
+
 sub UA_regist{
     my($id,$client) = @_; 
+    if(not defined $ACCEPT_ID_LIST{$id}){
+       &ROTool::printlog(1," reject not accept UA[id = $id]\n");
+       return 0;
+    }
     if(not exists $UA{$id}){
        $UA{$id} = $client;
        $client->{UA_registed} = 1;


名前 : somebody(2004/03/02 10:52)
FedoraCore?1上でrotoold-20031110_0安定動作しています.
あらかじめ登録されているIDでの接続のみ受け入れるようにしたいのですが,その方法についてご教授下さい.

●ソース中に,$dummy{"id"}="rotoold";なる行が見あたりますが,dummy以外のidはどの変数に入っているのでしょうか.
●実装にあたっては,accept_new_client関数内でIDのマッチングを行い,
&ROTool::client_regist($client);
の行をスキップしてやるだけで良いのでしょうか.


名前 : somebody(2004/02/20 19:08)
ynakataさんへ
ありがとうございます。無事に接続確認できました。
原因は5963 -> anyがうまくでていませんでした(><;汗)
無事起動中です(嬉)ありがとうございました。


名前 : ynakata(2004/02/20 17:35)
念のため、ファイアウォールで5963 -> anyが通るようになってるかを確かめてから、以下の手順を試してみてください。

これが全部通ったら普通はつながるはず。
ダメだったら、ダメだったときのログを送ってください、宛先はwhite@niu.ne.jpで。


名前 : somebody(2004/02/20 17:03)
早速、設定みてみました。
PORTもちゃんとLISTENにはなってるんですけどね^^
tcp 0 0 0.0.0.0:5963 0.0.0.0:* LISTEN
ipchainも
ACCEPT tcp -y---- anywhere anywhere any -> 5963
となってます。でも、やっぱりつながらない。
何が変なのでしょうか。。(><;汗) 入れ直すかな〜


名前 : somebody(2004/02/20 16:19)
早速のお返事ありがとうございます。
ファイアーウォールの設定でしょうか・・うまくつながりません。。
そのあたりの設定をみてみます。


名前 : ynakata(2004/02/20 16:17)
rotooldは、inetdやxinetdとは関係ありません。
単純に起動させれば、httpdやらsshdやらと同様の独立したサーバプロセスとして動作します。

なお、ipchainsやiptables等のファイアウォール設定には注意してください。