[#29700] ruby NKF モジュールの CP932 系エンコーディングパッチ — MORIYAMA Masayuki <moriyama@...>

ミラクルリナックスの森山です。

10 messages 2006/10/27

[#29726] cgi.rbのDoS脆弱性について — MoonWolf <moonwolf@...>

MoonWolfです。

74 messages 2006/10/31
[#29728] Re: cgi.rbのDoS脆弱性について — Yukihiro Matsumoto <matz@...> 2006/11/01

まつもと ゆきひろです

[#29729] Re: cgi.rbのDoS脆弱性について — MoonWolf <moonwolf@...> 2006/11/01

MoonWolfです。

[#29731] Re: cgi.rbのDoS脆弱性について — Yukihiro Matsumoto <matz@...> 2006/11/01

まつもと ゆきひろです

[#29745] Re: cgi.rbのDoS脆弱性について — MoonWolf <moonwolf@...> 2006/11/02

MoonWolfです。

[#29751] Re: cgi.rbのDoS脆弱性について — "U.Nakamura" <usa@...> 2006/11/02

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

[#29753] Re: cgi.rbのDoS脆弱性について — MoonWolf <moonwolf@...> 2006/11/03

MoonWolfです。

[#29754] Re: cgi.rbのDoS脆弱性について — "U.Nakamura" <usa@...> 2006/11/03

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

[#29756] Re: cgi.rbのDoS脆弱性について — MoonWolf <moonwolf@...> 2006/11/03

MoonWolfです。

[#29759] Re: cgi.rbのDoS脆弱性について — "U.Nakamura" <usa@...> 2006/11/03

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

[#29780] Re: cgi.rbのDoS脆弱性について — MoonWolf <moonwolf@...> 2006/11/04

MoonWolfです。

[#29784] Re: cgi.rbのDoS脆弱性について — "U.Nakamura" <usa@...> 2006/11/04

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

[#29786] Re: cgi.rbのDoS脆弱性について — MoonWolf <moonwolf@...> 2006/11/04

MoonWolfです。

[#29791] Re: cgi.rbのDoS脆弱性について — Yukihiro Matsumoto <matz@...> 2006/11/04

まつもと ゆきひろです

[#29811] Re: cgi.rbのDoS脆弱性について — MoonWolf <moonwolf@...> 2006/11/05

MoonWolfです。

[#29818] Re: cgi.rbのDoS脆弱性について — Yukihiro Matsumoto <matz@...> 2006/11/05

まつもと ゆきひろです

[#29826] Re: cgi.rbのDoS脆弱性について — MoonWolf <moonwolf@...> 2006/11/05

MoonWolfです。

[#29761] Re: cgi.rbのDoS脆弱性について — 植田 裕之 <ueda@...> 2006/11/03

植田と申します。

[#29764] Re: cgi.rbのDoS脆弱性について — Yukihiro Matsumoto <matz@...> 2006/11/03

まつもと ゆきひろです

[ruby-dev:29685] Re: Enumerable#each_* and Enumerable#enum_* on 1.9

From: Yukihiro Matsumoto <matz@...>
Date: 2006-10-22 22:04:30 UTC
List: ruby-dev #29685
まつもと ゆきひろです

RubyConfで時間が空いたので古いメールを発掘しました。

In message "Re: [ruby-dev:29246] Enumerable#each_* and Enumerable#enum_* on 1.9"
    on Wed, 9 Aug 2006 23:07:12 +0900, "U.Nakamura" <usa@garbagecollect.jp> writes:

|ちょっと1.9のEnumerableで遊んでいて気付いたのですが、1.9では
|ブロックを伴わないイテレータ呼び出しメソッド呼び出し(何を言っ
|てるのかわかんない)はEnumerable::Enumeratorオブジェクトを返す
|のに、元々enumerator.soにあったイテレータ呼び出しメソッドはそ
|うなっていません。

おっしゃるようにEnumeratorのメソッドがブロックなしで呼ばれる
とEnumerable::Enumeratorを返すわけですが、これはどうしてそう
なってるんでしょうかね。そんなにうれしい局面が思いつきません。
導入されたのは

Fri Jul 15 00:11:36 2005  Nobuyoshi Nakada  <nobu@ruby-lang.org>

	* enum.c (enumeratorize): create new enumerator for current method if
	  no block is given.

	* enumerator.c: moved from ext/enumerator.

なんですが、理由が思い出せません。高橋会長は、私が言い出した
のではないかとのことですが。あきれる記憶力ですね。

まあ、私の記憶力がダメなのは昔からなのでちょっと置いておくと
しても、このことを許すことできるようになることは、たとえば

  enum.find.each{|x| x%2==0}

とか一目では何をやっているのかわかりません。少なくとも、
Eumerableモジュールのメソッドにこの機能を追加しても、あんま
り嬉しくないんではないでしょうか。

一方、たとえば

  String.each_line.map{|x| x*2}

のようなケースは何をやっているのかはっきり分かります。要する
に、要素をひとつずつ与えるようなブロックの使い方をするメソッ
ド(仮にeach系と呼びましょう)以外は、Enumerable::Enumeratorを
返しても全然嬉しくないということです。

|これは、それぞれのイテレータ呼び出しメソッドに対応したenum_な
|んとかメソッドが用意されているからだと思いますが、これは直感
|に反する気がするので、
|
|(1) 各イテレータ呼び出しメソッドがブロックなしで呼び出された
|    場合はEnumerable::Enumeratorオブジェクトを返すようにし、
|(2) それらに対応していたenum_*メソッドは廃止する(または、1.9
|    では廃止しないまでも警告する)
|
|というのはどうでしょうか?

というわけで、enum_*メソッドの廃止には賛成します。ついでに、
each系でないメソッドから

  RETURN_ENUMERATOR(obj, argc, argv);

を取り外してしまうことも提案します。というか、近いうちにやっ
ちゃいますから問題が見つかったら教えてくださいね。

                                まつもと ゆきひろ /:|)

In This Thread