[#18186] [req] Marshal — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

14 messages 2002/09/05
[#18190] Re: [req] Marshal — matz@... (Yukihiro Matsumoto) 2002/09/05

まつもと ゆきひろです

[#18229] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

22 messages 2002/09/09
[#18230] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — nobu.nakada@... 2002/09/09

なかだです。

[#18231] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — "U.Nakamura" <usa@...> 2002/09/09

こんにちは、なかむら(う)です。

[#18232] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — nobu.nakada@... 2002/09/09

なかだです。

[#18233] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — "U.Nakamura" <usa@...> 2002/09/09

こんにちは、なかむら(う)です。

[#18234] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — WATANABE Hirofumi <eban@...> 2002/09/09

わたなべです。

[#18236] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — "U.Nakamura" <usa@...> 2002/09/09

こんにちは、なかむら(う)です。

[#18238] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — WATANABE Hirofumi <eban@...> 2002/09/09

わたなべです。

[#18241] Re: [ruby-cvs] rough/ext/stringio: * ruby-stringio.spec: 0.0.7, added changelog. — "U.Nakamura" <usa@...> 2002/09/09

こんにちは、なかむら(う)です。

[#18285] rubicon on EWS4800 — Koji Arai <JCA02266@...>

新井です。

59 messages 2002/09/13
[#18322] Re: rubicon on EWS4800 — Koji Arai <JCA02266@...> 2002/09/21

新井です。

[#18333] Re: rubicon on EWS4800 — kjana@...4lab.to (YANAGAWA Kazuhisa) 2002/09/21

In message <20020921.152641.11483667.JCA02266@nifty.ne.jp>

[#18336] Re: rubicon on EWS4800 — nobu.nakada@... 2002/09/21

なかだです。

[#18337] Re: rubicon on EWS4800 — Tanaka Akira <akr@...17n.org> 2002/09/21

In article <200209211605.g8LG52p04564@sharui.nakada.kanuma.tochigi.jp>,

[#18338] Re: rubicon on EWS4800 — nobu.nakada@... 2002/09/21

なかだです。

[#18341] Re: rubicon on EWS4800 — Tanaka Akira <akr@...17n.org> 2002/09/21

In article <200209211628.g8LGSxp04786@sharui.nakada.kanuma.tochigi.jp>,

[#18342] Re: rubicon on EWS4800 — nobu.nakada@... 2002/09/21

なかだです。

[#18343] Re: rubicon on EWS4800 — Tanaka Akira <akr@...17n.org> 2002/09/21

In article <200209211739.g8LHdKp05495@sharui.nakada.kanuma.tochigi.jp>,

[#18345] Re: rubicon on EWS4800 — nobu.nakada@... 2002/09/22

なかだです。

[#18349] Re: rubicon on EWS4800 — Tanaka Akira <akr@...17n.org> 2002/09/22

In article <200209220415.g8M4Fkp24392@sharui.nakada.kanuma.tochigi.jp>,

[#18374] Re: [ruby-cvs] ruby/ext/tcltklib: * eval.c (ruby_run): should set toplevel visibility again here. — WATANABE Hirofumi <eban@...>

わたなべです。

20 messages 2002/09/25
[#18376] Re: [ruby-cvs] ruby/ext/tcltklib: * eval.c (ruby_run): should set toplevel visibility again here. — matz@... (Yukihiro Matsumoto) 2002/09/25

まつもと ゆきひろです

[#18377] Re: [ruby-cvs] ruby/ext/tcltklib: * eval.c (ruby_run): should set toplevel visibility again here. — nobu.nakada@... 2002/09/25

なかだです。

[#18378] Re: [ruby-cvs] ruby/ext/tcltklib: * eval.c (ruby_run): should set toplevel visibility again here. — WATANABE Hirofumi <eban@...> 2002/09/25

わたなべです。

[ruby-dev:18153] Re: Selection IPv4/IPv6 at TCPSocket

From: GOTO Kentaro <gotoken@...>
Date: 2002-09-02 14:36:38 UTC
List: ruby-dev #18153
At Mon, 2 Sep 2002 20:26:11 +0900,
NISHI Takao wrote:
> > ちょっとした疑問なんですが、IPv4 と IPv6 のどちらを選ぶべきかの情報は
> > 本来どこにあるんでしょう?
> 
> ちゃんと確認したわけではありませんが,現状ではリゾルバとカーネル依存では
> ないかと思います。
> USAGIカーネル+glibc2.2では,DNSにAAAAレコードがあり,カーネルがIPv6に対
> 応していればIPv6を選択するようになっているように見えます。
> FreeBSD 4.3でも同様です。

まあそんな感じですよね。

現行の文書だとRFC2553(Informational)を参考にするのが良いと思
いますが、どのプロトコルを使うかについて、サービス側から教え
てくれる情報についての規定はないようです。

> > なんとなく、本来は DNS にそういう情報があって、自動的に選択されるべき
> > な気がします。で、この話はなんらかの不具合によりそれがうまく動かない場
> > 合に対する手段を提供するというのが目的だと思うんですが、だとすると、そ
> > の手段が IPv4 のハードコードをしやすい形だと、不具合のない環境で動かす
> > のが厄介になりがちな気がします。

ハードコードに反対なのには同意しますが、不具合を避けるのが目
的なんでしょうか。その辺はよく分かりませんでした。例えば、プ
ロトコルによって同じサービス名で異なる内容をサービスを提供す
るサイトもあり得るので、そのような場合にはクライアント側でプ
ロトコルを選択するしかない、というような状況を想定しているの
かと思いました。いずれにせよ特殊な状況だとは思いますが。

> > プログラム本体は本来正しいやりかたで書き、付加的に不具合を避ける方法を
> > Ruby に教えてやるというのがいいんじゃないかという気がするんですが。
> > (たとえば、このホストは IPv4 にしろとか。)

例えば Bind の gethostbyname() などは RES_OPTIONS なる環境変
数で挙動を変更することが出来るようです。これは RFC2133 に載っ
ている RES_USE_INET6 という gethostbyname() のフラグを利用す
る方法なのですが、実は RFC2553 obsoletes RFC2133 で、新版で
ある RFC2553 にはこの方法を載っていません。RFC2133 から 
RFC2553 までの過程の議論を探して読めば、過渡的な運用に関する
考察が得らるのかも知れません。

> 現在のRubyではopen_inet()関数内で hints.ai_family = PF_UNSPEC;と常に自動
> 的にai_familyを選択するような実装がなされています。
> 
> しかしIPv4/IPv6のどちらを使うかを明示できないため,Aレコード,AAAAレコー
> ドを共にもつホスト上で稼動しているものの,実際にはIPv4,IPv6のどちらかで
> しかlistenしていないサービスにアクセスした場合,IPv6で接続に失敗したら
> IPv4で(あるいはその逆で)と言う処理が困難となっています。

実際問題としてそんなに困難でしょうか? [ruby-dev:18133] に書
いたように getaddrinfo() でプロトコルファミリを指定してひい
たアドレスで接続すれば出来ますよね。

ただし、武者さんが resolv.rb 云々といっていたので、
getaddrinfo() が resolv.rb にないことはマルチスレッドにした
いときに困るかも知れません。

> これはIPv4->IPv6移行の過渡期的ならでは現象だと思いますので,田中さんのおっ
> しゃるようにクラス新設という目立った方法ではなく,付加的な情報として扱う
> 方が良いように思えます。

別の理由ですがクラスを分けるのは良くないという結論にいたりま
した。TCPServer<TCPSocket なので TCPSocket6<TCPSocket とする
なら多重継承のないRubyには TCPServer6<TCPSocket6 とは出来な
いということに思い当たったわけです。まぁ、必要なら Socket を
使って TCPSocket4<BasicSocket を書くことも出来るでしょう。

もっとも TCPServer4 や TCPServer6 の必要性は分かりません。例
えば IPv6 のワイルドカードアドレスにバインドしたいときは、
TCPServer.new("::") とすれば良いわけです。

個人的には、過渡期の不具合に対する対処としてはあるライブラリ
を require したときは環境変数なり何なりで TCPSocket.new の動
作を変えることが出来るくらいの方が良いと思います。そうすれば、
その require 以外にはスクリプトの中にプロトコル依存なコード
が入らなくなるのでほとんどプロトコル独立なスクリプトにするこ
とが出来ます。

> 加えて,UDPSocket#newとの対称性の点からも引数でAI_FAMILYを指定できる方が
> うつくしいと思うのですが如何でしょうか?

TCPSocket.new はすでに省略可能なオプションを2つも持っている
ので対称ではないし、これ以上オプションを複雑にするのは美しい
とは思えないばかりか、かなり使いにくいと思います。

> # わたしが投げたパッチはai_family引数のチェックをしていないのでアレです
> # が(^^;

僕のスクリプト [ruby-dev:18133] も実は TCPSocket オブジェク
トしか返さないものでした。一応 TCPSocket.new4 と new6 を定義
したものに書き換えました:
http://www.notwork.org/~gotoken/ruby/p/as-is/tcpsocket-protocol-depend.rb

-- Gotoken

In This Thread