[#17017] 標準添付案 — Kazuhiro NISHIYAMA <zn@...>

西山和広です。

21 messages 2002/05/08
[#17019] Re: 標準添付案 — "Akinori MUSHA" <knu@...> 2002/05/08

At Wed, 8 May 2002 19:50:17 +0900,

[#17021] Re: 標準添付案 — GOTO Kentaro <gotoken@...> 2002/05/08

At Wed, 8 May 2002 22:45:06 +0900,

[#17031] double acosh — WATANABE Hirofumi <eban@...>

わたなべです。

25 messages 2002/05/10
[#17032] Re: double acosh — nobu.nakada@... 2002/05/10

なかだです。

[#17033] Re: double acosh — WATANABE Hirofumi <eban@...> 2002/05/10

わたなべです。

[#17036] Re: double acosh — matz@... (Yukihiro Matsumoto) 2002/05/10

まつもと ゆきひろです

[#17039] Re: double acosh — WATANABE Hirofumi <eban@...> 2002/05/10

わたなべです。

[#17134] argv[0] — Tanaka Akira <akr@...17n.org>

ふと ruby インタプリタの C における argv[0] を知りたくなったんですが、

23 messages 2002/05/18
[#17139] Re: argv[0] — matz@... (Yukihiro Matsumoto) 2002/05/18

まつもと ゆきひろです

[#17144] Re: msvcrt — "U.Nakamura" <usa@...>

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

18 messages 2002/05/19

[#17179] コマンドラインオプションの順序制約 — Kazuhiro NISHIYAMA <zn@...>

西山和広です。

13 messages 2002/05/22
[#17181] Re: コマンドラインオプションの順序制約 — matz@... (Yukihiro Matsumoto) 2002/05/22

まつもと ゆきひろです

[#17228] Re: [ruby-list:35305] Re: ((1.2)..(3.4)).to_a — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

28 messages 2002/05/30

[ruby-dev:17253] Re: IO#size

From: Wakou Aoyama <wakou@...>
Date: 2002-05-31 12:57:04 UTC
List: ruby-dev #17253
青山です。

On Fri, May 31, 2002 at 11:32:12AM +0900,
 Tanaka Akira wrote:

> ただ、「本当に欲しい」のは、むろん、Content-Length: に書くべき値なわけ
> で、これは StringIO/Tempfile に貯めてあるものを socket にそのまま垂れ
> 流すようなコードが HTTP server にあるという状況では、IO#size (ないしは
> File#size) のほうが必要なものだと思います。

あ、いえ、少し違います。[ruby-dev:17236] もまだわかりにくかったでしょ
うか。内部的な事ではなく、むしろユーザーとしての話しでした。

cgi = CGI.new
if maxsize <= cgi["upload_file_1"].stat.size
  ...
else
 ...
end
if maxsize <= cgi["upload_file_2"].stat.size
  ...
else
 ...
end

こんな感じですね。

より多くある場面としては、cgi["upload_file"].stat.size を表示させて、
アップされたサイズをユーザーに確認させる、等ですね。これはわりと良くあ
る利用法では無いかと思います。

multipart form では、ファイルのアップロードに使われる、というだけでな
く、複数同時にアップするというのも普通の事なので、全てをあわせたサイズ
である Content-Length はまったく参考になりません。

と、このあたりの話しは Tempfile#size の追加という事でほぼまとまってい
るようですが、なぜ File#size ではなく、Tempfile#size なのか、という疑
問が残る点はいかがでしょうか?

IO#size 無い、File#size 無い、Tempfile#size 無い、StringIO#size 有る。
IO#stat 有る、File#stat 有る、Tempfile#stat 有る、StringIO#stat 無い。

これが、次のようになるわけですね。

IO#size 無い、File#size 無い、Tempfile#size 有る、StringIO#size 有る。
IO#stat 有る、File#stat 有る、Tempfile#stat 有る、StringIO#stat 無い。

私は、次のようになる方が自然だと思ったのですが。

IO#size 無い、File#size 有る、Tempfile#size 有る、StringIO#size 有る。
IO#stat 有る、File#stat 有る、Tempfile#stat 有る、StringIO#stat 無い。

StringIO#size は、String でもあるので #size があってもおかしくは無いで
すし、File#size があれば、Tempfile#size は自然と思われます。

あるいは、いっそ、次のようになるとよりすっきりするかも。

IO#size 無い、File#size 有る、Tempfile#size 有る、StringIO#size 有る。
IO#stat 無い、File#stat 有る、Tempfile#stat 有る、StringIO#stat 無い。

マニュアルの記述から見ても、stat は IO というより File のようですし。

> IO
>     IOクラスは基本的な入出力機能を実装します.
> 
>     stat
>         ファイルのステータスを含むStat 構造体を返します.Stat構造体のメンバは
>         以下の通りです.
> 
>             dev         # デバイス番号(ファイルシステム)
>             ino         # i-node番号
>             mode                # ファイルモード
>             nlink               # ハードリンクの数
>             uid         # オーナーのユーザID
>             gid         # オーナーのグループID
>             rdev                # デバイスタイプ(スペシャルファイルのみ)
>             size                # ファイルサイズ(バイト単位)
>             blksize             # 望ましいI/Oのブロックサイズ
>             blocks              # 割り当てられているブロック数
>             atime               # 最終アクセス時間
>             mtime               # 最終更新時間
>             ctime               # 最終i-node変更時間

ま、それはともかく、とりあえず、Tempfile#size よりは、File#size の方が
自然なような気がします。


-- 
青山 和光 Wakou Aoyama  <wakou@ruby-lang.org>

In This Thread