[#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:29690] Re: Enumerable#each_* and Enumerable#enum_* on 1.9

From: Yukihiro Matsumoto <matz@...>
Date: 2006-10-23 07:38:52 UTC
List: ruby-dev #29690
In message "Re: [ruby-dev:29689] Re: Enumerable#each_* and Enumerable#enum_* on 1.9"
    on Mon, 23 Oct 2006 15:10:58 +0900, "U.Nakamura" <usa@garbagecollect.jp> writes:
|
|こんにちは、なかむら(う)です。
|
|In message "[ruby-dev:29688] Re: Enumerable#each_* and Enumerable#enum_* on 1.9"
|    on Oct.23,2006 13:17:39, <matz@ruby-lang.org> wrote:
|| |>   String.each_line.map{|x| x*2}
|| |>
|| |> のようなケースは何をやっているのかはっきり分かります。要する
|| |> に、要素をひとつずつ与えるようなブロックの使い方をするメソッ
|| |> ド(仮にeach系と呼びましょう)以外は、Enumerable::Enumeratorを
|| |> 返しても全然嬉しくないということです。
|| |
|| |enum.map.with_index とか eanum.find.with_index のようにEnumeratorのメ
|| |ソッドと組み合わせて使うもんじゃないでしょうか。
|| 
|| enum.map{}.with_indexとかならともかく、enum.map.with_indexに
|| なんの意味があるのかと。意味的にはenum.to_a.each_with_index
|| と同じわけですから。
|
|いやいや、eachとmapには戻り値が違うという決定的な差があります。
|よって、
|  p enum.map.with_index{|e,i|...}   #(A)
|と書くことができなくなると、同じことを実現するためには、
|  a = []; enum.to_a.each_with_index{|e,i|a<<...}; p a   #(B)
|または
|  p enum.to_enum(:map).with_index{|e,i|...}   #(C)
|という記述が必要になります。
|
|
|そもそも、Enumerable::Enumeratorは、内部的でeachを決めうちで
|使うブロック付きメソッドでeach以外を使ってほしい場合があるか
|ら考案されたものだと理解しています。

同意します。

|つまり、(B)のように書くのがアホみたいだから(C)と書けるように
|した、ということですね。
|そして、1.9の現状の仕様は、(C)といちいち書くより(A)と書けた方
|が嬉しいじゃん、ということだと思っていたのですが...

(B)のように書くのがアホみたい(A)の方が良いというのは分からな
いでもありません。とはいえ、with_indexと言いたいだけのために
mapがEnumeratorを返すようにするってのもなんか変な気がします。
そもそもブロックを省略したmapってなによって話になりますし。

要素そのものをmapする(つまりブロックの省略は{|x|x}と同じ) と
解釈するならば(その解釈は自然だと思いますが)、mapは
Enumeratorを返してはいけない、通常のmapと同じものを返さなく
てはいけません。ブロック付きのmapがEnumeratorを返さない以上、
各要素を返すEnumeratorが欲しくても、その名前は少なくともmap 
ではないと思います。ちょっと考えるとentriesが思いつきますが、
今はto_aの別名ですね。

|| 「便利な場合が思いつかないから廃止しよう」と言ってるわけです
|| から、「便利な場合がある」なら廃止しません。
|
|こんなことに使ったりしてます。便利です。
|http://www.garbagecollect.jp/~usa/d/200608a.html#id20060810_P1

たとえばこういうことですよね。

  ARGF.binmode.each_byte.with_index{|b, i| 
    print '%08x:' % i if i % 16 == 0
    print ' %02x' % b
    puts if i % 16 == 15
  }

こういうのでどうかと思います。

  ARGF.binmode.bytes.with_index{|b, i| 
    print '%08x:' % i if i % 16 == 0
    print ' %02x' % b
    puts if i % 16 == 15
  }

もっと短いし。もっともbytesがなにを返すべきかにはruby-core方
面でもやや異論があるようですが。もうちょっと置き換え可能でな
い例はないかなあ。

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

In This Thread