[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 09:27 / Filesize : 208 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Rubyについて Part 30



1 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 11:47:53 ]
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

Ruby Home Page
www.ruby-lang.org/ja/

= 前スレ
Rubyについて Part 29
pc11.2ch.net/test/read.cgi/tech/1193668038/

過去スレ・関連スレは >>2-


231 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 23:44:08 ]
>>228
なった

232 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 23:53:55 ]
>>231
拡張モジュールでRubyのスレッド以外から、RubyのAPIじっこうしても
大丈夫?

233 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 07:49:12 ]
>>230
だからそれを標準でやってくれよという話ダロ
よくよめ

234 名前:230 mailto:sage [2008/02/02(土) 10:43:38 ]
>>233
標準でやるべきというのに異論はないが

>>229みたいな条件分岐がたくさんあって面倒だというなら、
自前で拡張するのも手段としてはありじゃないの?


235 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:24:40 ]
だから“クソ仕様”だって。
matzも名前大事とか言いながらこれだからな。どうしようも無いな。

236 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 14:30:33 ]
>>235
ERBのresultもto_sであるベッキー?


237 名前:235 mailto:sage [2008/02/02(土) 15:55:20 ]
erb使ってないからシラネ。
erb自体がクソな感じがするので触ってない。自分でテンプレートエンジンでっちあげたし。

ただ、
・プロパティ的/定数的: to_sが良い
・メソッド的/手続き的: resultとかでいいんじゃね?
とは思う。


238 名前:デフォルトの名無しさん [2008/02/02(土) 22:34:57 ]
to_sとか便利だよねぇ。びっくりした

239 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 23:38:17 ]
>>229
CGI 自体が半ば deprecated 気味だからね。代替ないから残ってるけど。
改良して貢献すれば喜ばれると思うよ。

ちなみ俺はこうしてる。これで Tempfile と StringIO の分岐はいらない。
@cgi.multipart? ? @cgi[key].read : @cgi[key]



240 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 23:46:25 ]
>>217
>IO#stringもないので、そんなことが理由になるわけがない。

IO#string(またはIO#to_s)に何をして欲しいと思ってる?

241 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 23:50:12 ]
よくわからんが、すでにあるし、またディープに組み込まれているto_sという名前を
使わなかった点を言ってるんじゃないのか?>>202

242 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 23:56:21 ]
>>240
>IO#string(またはIO#to_s)に何をして欲しいと思ってる?
文字列を返す。それだけ。
おまえは何が言いたいんだ?

243 名前:240 mailto:sage [2008/02/03(日) 00:00:56 ]
>>242
どういう文字列を返して欲しいと思ってるかが重要なんだよ。
Stringのインスタンスならなんでもいいの?

244 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:01:59 ]
>242
ふむ。
じゃあ無条件に""を返してもいいんだな? Stringオブジェクトには違いないぞ。
それが嫌なら「IOが返すべき文字列」ってのを定義してみな。

245 名前:244 mailto:sage [2008/02/03(日) 00:02:44 ]
……煽りでケコーンするなんて何という恥
死のう 舌を噛んで死のう

246 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:04:07 ]
IOをくださ〜いおぅおう
IOをくださ〜い

247 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:07:45 ]
IOの話じゃねーだろ馬鹿

248 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:08:03 ]
>>243,244
なんでIOになるんだ?今はStringIOの話だろ。
StringIO#string の名前は String#to_s にすべきだったという話をしてるのに、
to_sは空文字を返してもいいとかバカじゃねーの。>>202をまず読めや。

249 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:10:23 ]
>>243
>どういう文字列を返して欲しいと思ってるかが重要なんだよ。
そんなもの、StringIO#stringと同じ文字列に決まってるだろ。
これだからゆとりは。



250 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:14:03 ]
to_sってのは型の変換に用いるもんでしょ。つまり、(Integerインスタンス).to_sとか

StringIOってのはストリングのIO化なんだから、IOをto_sしちゃったらおかしいでしょ。

251 名前:240 mailto:sage [2008/02/03(日) 00:14:44 ]
>>248,249
落ち着け、おれはオサーンだ。

StringIO#stringは確かにto_sでもいいかもしれない。だが、
お前が言ってるようにto_sはとても広く使われているメソッドだ。
StringIO#to_sがあるならIO#to_sもあるのが自然だと考える人も
多い。>>215はそれを言ってる。本当にmatzがそう考えたかどうかは
知らないけどね。

んで、IOでStringIO#stringと同じような挙動を実現しようとしたら、
何をしなきゃ行けないか考えてみよう。事実上無理なことがわかるから。

252 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:25:20 ]
一応言っておくと>>241>>242は別人だぞ、と
>>251は、:なるほど。でも>>215は端的すぎるんじゃね?とか

253 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 00:50:03 ]
だからIOじゃねーだろアホ

254 名前:240 mailto:sage [2008/02/03(日) 00:52:15 ]
>>252
おれも>>215ではないので、推測なんだけどね。

答えを言っておくと、読み込んだ文字列を全部保存しとかなきゃ
いけなくて、事実上Rubyでサーバとか書けなくなってしまうわけ
です(書いてもいつかNoMemoryErrorになってしまう)。

そもそも、StringIO#stringは特段の事情がなければ使わない方が
いいと思うよ。String"IO"なんだからIOらしくreadとかしとこう。


>>250
その論理でObject#to_sが説明できるのかな。

255 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:01:24 ]
今北産業
誰か三行でまとめて

256 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:28:56 ]
Rubyのto_sは
そもそも定義があいまいなので
おかしいとかおかしくないという以前の問題

257 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:12:17 ]
IOがなんでもto_sできたら怪しいけど、
StringをIO化したIOはto_sできてもいいんじゃね。
まあ、to_sじゃないからダメとは思わんけど。

>>235は「matzどうしようもない」とか言う前に
matzに意見を伝えて議論すべきだな。
政治家や芸能人と違ってMLで直接話せる相手だし。

258 名前:235 mailto:sage [2008/02/03(日) 03:28:32 ]
>251
IO#to_s は IO#readと同一視でも構わん気がする。
どうせmatzもセキュリティとか気にして設計しとらんだろうに。

逆にStringの方にreadを用意してもいいんだけどなぁ……。
matzは変なところばかり手を入れるんだから、ついでにここもやってくんないかな。

>254
>そもそも、StringIO#stringは特段の事情がなければ使わない方が
リファレンスのメソッドの筆頭にstringがあるのよ。
もし使わない方が良いなら、あのクソリファレンスをどうにかしないとな。


良く良く考えてみたら、フィールドによって戻り値がバラバラのCGI#[]の
仕様が腐ってんだよなぁ…………。PHPに文句付けるヒマがあったら
CGIどうにかしろよ。matz。


259 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:54:08 ]
CGI.rb作ったのは違う人だしなあ
ソース見るとわかるが「Ruby学んで超楽しい」時期に書かれたコードだ

てか、作った本人も含めて現行Rubyの癌だとはみんな認識してるはず
置き換えとなるモジュールがないだけの話



260 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 04:17:07 ]
PerlのCGI用モジュールってどんなんなんだろ
参考にならないかな

261 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 04:36:37 ]
>>258
Webrick::CGI

PerlのCGIはcgi.rb以上にカオス

262 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 04:44:33 ]
Webrickはプロクシサーバの作り方しか載ってねえよ

というか、CGI.rbでやってることと対比させた解説ページ誰か作ってくれ
CGI.paramsに該当することが探せなくて挫折した覚えがある

263 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 04:52:36 ]
>259
癌だと判っているのにもかかわらず、放置したままPHPをdisってるからたちが悪い。
1.9で少しはマトモになってると思ったんだけどなぁ。cgiはとっととobsoletedにしてほしい。

>261
Webrick::CGIはドキュメントが……良い感じだとは思うけどね。


264 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 04:55:59 ]
セッション管理が標準でできるようになったらWebrick::CGI使ってあげるよぉ

265 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 05:30:46 ]
>>264
それ以上になると、フレームワークつかえとしか

266 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 05:49:54 ]
セッション管理ごときでなんでフレームワークが必要になるほうがおかしい

267 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 05:56:09 ]
>>250
>to_sってのは型の変換に用いるもんでしょ。つまり、(Integerインスタンス).to_sとか
>StringIOってのはストリングのIO化なんだから、IOをto_sしちゃったらおかしいでしょ。

こいつほんとにバカだな。
StringIOをStringに変換するんだから、to_sで問題ないだろ
今議論してるのはStringIOであってIOじゃないって何回いったらわかるのか
だれもIO#to_sをつくれといってないだろ。IO#to_sなんかいらん、StringIO#to_sの話をしてる

>>251
>StringIO#to_sがあるならIO#to_sもあるのが自然だと考える人も
>多い。
そんなのお前だけ。子クラスでメソッドを追加したら親クラスにも追加しなきゃいけないと考えるほうがどうかしてる。
ほんとバカばっかだな。

268 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 06:00:25 ]
>>266
では、自前で組めばいいのでは?

269 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 06:09:34 ]
>>254
>
>答えを言っておくと、読み込んだ文字列を全部保存しとかなきゃ
>いけなくて、事実上Rubyでサーバとか書けなくなってしまうわけ
>です(書いてもいつかNoMemoryErrorになってしまう)。
これなんの話?StringIO#stringと何の関係もないよね。


>そもそも、StringIO#stringは特段の事情がなければ使わない方が
>いいと思うよ。String"IO"なんだからIOらしくreadとかしとこう。
本気でいってるのかね。StringIOはIOに見せかけたStringであって、Stringに見せかけたIOじゃない。
だいたい、seekとか関係なしに文字列を得るためにStringIO#stringがあるのに、
なんでreadとか使わないといけないの?アホか。
sio = StringIO.new
sio.write('foo')
sio.write('bar')
sio.read #=> ""
sio.seek(0)
sio.read #=> "foobar"




270 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 09:55:55 ]
>StringIOはIOに見せかけたStringであって、Stringに見せかけたIOじゃない。

IOに似てるならIOみたいなもんだよ。アヒルのように動いてアヒルのように鳴くなら
そいつはアヒルだ!


271 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 10:03:54 ]
StringIOでreadつかう馬鹿はいないだろ

>>254除いては。

272 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 10:11:16 ]
なるほど問題理解
StringIOのカッコいい使い方指南をすればいいんだな
「StringがIOになりましたって何じゃらほい」という疑問が根底にあると見た

273 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 10:12:04 ]
StringIO#string= なんてのもあるんだな。
アクセサだったのか。

274 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 10:37:18 ]
StringIO#readはIO#readを使ってる場所で代替で使われるものだろ
明示的に使うもんじゃないだろ
ファイルを読み込むプログラムだけど文字列を代入することもできるよという場合とか

275 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:04:06 ]
>>274
明示的に使うものかどうかなんて、今はまったく関係ないだろ
>>202>>229読めや、そこのゆとり

276 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:07:31 ]
「面倒だから。短くかけるから」ってだけ批難してるなら
golfscriptでもやってろよ。一貫性のほうが重要だろ。

自分の理屈も説明できずに受入れられると思ってるニートがいて困るな

277 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:09:53 ]
readメソッドの話をしているということにも気づけないほど何を怒ってるのかわからんな

278 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:16:31 ]
いやもうメーリングリストに書けよ

279 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:19:06 ]
>>276
Tempfileの分岐考えたら>>239の方が短いんじゃ?



280 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:24:54 ]
短いからいいという話をするなという主張なのでは

281 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:28:02 ]
Zlib圧縮データをInflateして返って来たバイナリデータを
StringIOにしてreadしてunpackとかよくやってるなあ
文字列そのままだとファイルポインタが無いから扱いづらいし

282 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:32:27 ]
>>258
> 良く良く考えてみたら、フィールドによって戻り値がバラバラのCGI#[]の
> 仕様が腐ってんだよなぁ…………。PHPに文句付けるヒマがあったら
> CGIどうにかしろよ。matz。

だから使う側が >>229 とか >>239 とかしてて、
その時にメソッド名に「一貫性」が無くて困ってるわけね。

ようやく俺にも状況が見えてきた。

283 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:34:07 ]
意味が違うものに違う名前を割り当てるのは当然。名前重要。

284 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:43:30 ]

Ruby開発者として発言しているとき:Ruby教祖まっつん

個人的なblogで個人的な発言をしているとき:モルモン教徒まっつん

名前重要


285 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:45:41 ]
>>276
>「面倒だから。短くかけるから」ってだけ批難してるなら
だれがそんな非難してるの。だからゆとりなんだよ。

>自分の理屈も説明できずに受入れられると思ってるニートがいて困るな
今までの流れをまったく理解せずに話をすり替えようとしているゆとりがいて困るな


286 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:47:27 ]
>>285
すまん。結局君は何がいいたいのか明示していただけないだろうか?
今まで発言とかしてないんだが、さすがにわけわからなくなってきた

287 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 11:48:14 ]
>>285
Rubyについて(アンチ専用) Part002
pc11.2ch.net/test/read.cgi/tech/1200210768/

遊び場はこちら

288 名前:202 mailto:sage [2008/02/03(日) 13:53:00 ]
おお、なんか話が進んどりますな。……グルグル回っている気もするけど。
おいらの結論としては
・フィールドを統一的に扱えないCGIはクソ仕様。
 - kind_of?とかソース記載の条件で分岐するのはオブジェクト指向らしくないとか
  言っときながら、それをせざるを得ない仕様になってるのはどういうことよ。
 - セキュリティとかオーバーフローの関係でTempfileとかを使いたかったら、
  統一的に&安全に扱えるラッパークラスぐらい用意しとけと。
・StringIOはStringとIOの性質を合わせ持つのだから、to_sぐらい用意しておいた方が
 親切だよね。多態もできるし。名前重要とか言ってるクセに、ろくに考えて無いだろ。matz
・IOはオーバーフロー(メモリ消費)のリスクもあるから、to_sの実装に慎重になるのも理解できる。

つまりPHPをdisるヒマがあったらcgi絡みをどうにかしろと。
Webrick::CGI移行でもいいけど、それならドキュメントをどうにかしろよ、と言いたいよな。

289 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:57:11 ]
>>288
>Webrick::CGI移行でもいいけど、それならドキュメントをどうにかしろよ、と言いたいよな。
その前にセッションなんとかしろよ。cgi.rbから移行したくてもできないだろ。



290 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:04:42 ]
>>288
>・IOはオーバーフロー(メモリ消費)のリスクもあるから、to_sの実装に慎重になるのも理解できる。

IOにto_sはいらん。誰もそんなもの必要としてない。いるのはStringIO#to_s。
『StringIO#to_sがいるならIO#to_sも必要』とかほざいてるのはゆとり。

291 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:08:27 ]
ドキュメント上は、StringIOは
IOのように扱えるString(Pseudo I/O on String object.)であって
Stringのように扱えるIOではないようだ。

なら StringIO#to_str (Stringを期待する箇所で呼ぶと規定されているメソッド)が
あるべきだな、と思った。


292 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:10:30 ]
>>276
>「面倒だから。短くかけるから」ってだけ批難してるなら

だれが非難してるの?ねえ誰がどこで非難してるの?

293 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:15:34 ]
>>292
「もしそうなら」という言い方はいわばif文であって、そうかもしれないしそうでないかもしれない言葉を
受けての言い方だから、その質問に対する回答は無いだろう。
そこで回答があったら、絶対に真とわかってる値をわざわざif文で判定するような文を書いていたことになる。

294 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:28:31 ]
>>288
>統一的に&安全に扱えるラッパークラスぐらい用意しとけと。
>>239 で終了してる。マニュアルにも同様のコードが載っている。
ttp://www.ruby-lang.org/ja/man/html/cgi.html#multipart.3f
multipart? とそうでないのを統一的に扱うのはセキュリティ上の問題が
あったような気がするがよく覚えてない。すまん。

>StringIOはStringとIOの性質を合わせ持つのだから、
>to_sぐらい用意しておいた方が親切だよね。
そこは人によって意見の分かれるところ。俺はどっちでもいいと思う。
「to_s であるべき派」は「自分の直感にそぐわない」以外の
合理的な理由を用意した上で、くだまいてないで ML 行って
議論しろ。

295 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:33:28 ]
ここ数スレで最もトンデモぽい流れになってる気がするのは俺だけか

296 名前:240 mailto:sage [2008/02/03(日) 14:35:40 ]
盛り上がってるなあ。おれに当てられたレスに返事だけ。見落としたらスマソ

まず、おれは IO#to_s を実装せずに StringIO#to_s だけ実装するのは
ありだと思ってるよ。
おれは >>217 に「それは無理な話」と言いたかっただけ。

>267
>そんなのお前だけ。子クラスでメソッドを追加したら親クラスにも
>追加しなきゃいけないと考えるほうがどうかしてる。

ちょっと違うんだな。
まず、StringIOは「StringをIOに見せかけるラッパ」であって、
「StringとしてもIOとしても使えるオブジェクト」として設計されてない。
だからIOにto_sがない以上、StringIOでもto_sを実装する理由がなかった。
ゆえに現状のStringIOはto_sがない。という話なんだよ。


>269
>StringIOはIOに見せかけたStringであって
だから IO として使えばいいんだよん。

>seekとか関係なしに文字列を得るためにStringIO#stringがあるのに
もちろん、いつでもなんでもStringIO#stringのかわりに
readしろとは言わないよ。今回のcgi.rbではseekする必要ないでしょ。
あと、cgi.rbではTempfileまたはStringIOが得られる。
この両者の特徴は「IOに見せかけている」こと。
なので(今回の例では)IOらしくreadすればいいよ、と。

あと、StringIO#stringは「seekとか関係なしに文字列を得るメソッド」
というより「StringIOの元になっている文字列を得るメソッド」だと思う。

297 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:39:53 ]
>>291
>IOのように扱えるString(Pseudo I/O on String object.)であって
Pseudo I/O on String object はそのまま読めば
「IOのように扱えるString」ではなく「Stringに基づいた疑似IO」だろう。
つまり、StringでもIOでもなく、IOみたいなもの。
to_strが必要な理由にはならないと思うぞ。

298 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:06:44 ]
>294
マニュアルに載ってるよ…………。しかもサイズチェックも無しかよ。
大きなサイズでTempfileを吐き出す意味があまりねぇ。
(サーバー側の制限・バッファオーバーフローを回避できるメリットはあるけど)
ここまで支離滅裂だと嗤うしかないですな。CGI。

>296
どうせ何も考えずに設計しているんだろうけど、StringIO#stringが中途半端すぎるんだよね。
IOとしてしか使わせないならばStringIO#readで統一すべきだし、Stringにもアクセスさせたいの
ならばStringIO#to_sを実装しない根拠が薄くなる。
あと、StringIO#to_sが欲しいのはStringと統一的に扱いたいから。別に一度StringIO#read
でStringにしてやるだけでいいんだけど…………やっぱりクソ仕様だよね、CGI。


299 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:14:43 ]
>>288
それCGI.rbとかWebrickCGIが糞なんじゃなくて
もともとhttpの仕様が糞なんだからどうしようもないじゃん
パラメータ毎に型情報持てないんだよ



300 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 15:41:48 ]
>>298
> IOとしてしか使わせないならばStringIO#readで統一すべきだし、Stringにもアクセスさせたいの
> ならばStringIO#to_sを実装しない根拠が薄くなる。

方針は「IOとして使わせたい」。
StringIO#to_sがない理由は、内部で呼ばれることもあるto_sでは、疑似IOにし
てはStringとの結び付きが強くなりすぎるだろう、ということ。
StrignIO#stringがあるのは、下位層の情報を完全に隠蔽することを目標にして
いるわけじゃないから。IO#filenoのように、必要ならばアクセスすればよい。

> あと、StringIO#to_sが欲しいのはStringと統一的に扱いたいから。

cgi.rbに関しては、Tempfileもある以上StringIOとStringだけ同じにしても無
意味なので、>>239でFAということで。


301 名前:202 mailto:sage [2008/02/03(日) 15:43:51 ]
>299
httpがクソなのはわかるんだけど、役に立たない対策をして使い勝手を落としているのは
cgiがクソだからだと思うけど?
>294 みたいに危険なバッドノウハウをマニュアルに載っけているのなら、そもそも何のために
対策してるのか判らんし。

Webrick::CGIは…………あんまり使ってないからわからん。
ドキュメントをどうにかしてもらわんとなぁ。


302 名前:202 mailto:sage [2008/02/03(日) 15:48:40 ]
>300
真面目にやるんだったら、フィールドを統一的&安全に扱えるラッパークラスを用意するべきだな。
>239だと超巨大ファイルの扱いでちょっと危険。
自分のコードは面倒なんでそこまでやらんけどな……


303 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:01:20 ]
>>302
> >239だと超巨大ファイルの扱いでちょっと危険。
なら、CGI#paramsがStringじゃなくてStringIOを返すようにでもすりゃいいだろ。

class MyCGI < CGI
  def params(*args)
    String===(par=super) ? StringIO.new(par) : par
  end
end

で、無引数のreadは使うな、と。


304 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:04:48 ]
IO#to_sなしでStringIO#to_sだけ作る選択肢はない。
なぜならIO#to_sはすでにあるから。

$ ruby -e 'a, b = IO.pipe; p a.to_s'
"#<IO:0x100300c4>"

正確にはObject#to_sな。
StringIOの時だけ元の文字列を返すのはキモすぎ。
やるならIO#to_sもあわせて作るべき。無理だが。

305 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:14:18 ]
別にIOのサブクラスじゃないし

306 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:19:49 ]
>フィールドを統一的&安全に扱えるラッパークラス
multipartじゃないときはただの文字列で十分じゃん。
そんな重厚な設計はうざいよ。

307 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:21:04 ]
>>305
Stringのサブクラスでもないな

308 名前:202 mailto:sage [2008/02/03(日) 16:34:41 ]
>306
matzは“Webアプリは危険だ”“「おかしなコードを書くことを助長する言語」”とdisってるんだから、
Webに使うcgiは重厚でも安全な設計にすべきだと思うが?
まあ、matzのダブルスタンダードはいつものことだが。


309 名前:202 mailto:sage [2008/02/03(日) 16:37:06 ]
>304
そんなこと言うと、String#to_sの挙動も否定することになっちゃうけど?
まあ、to_s自体がグダグダなんで、意味付けを追求する意味はないと思うけどね。



310 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:37:29 ]
stringなんて名前にするくらいならto_sでよかったよ

311 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:38:08 ]
anond.hatelabo.jp/20080203092650
誰だよこんなキモい記事書いたのw

312 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:44:44 ]
うーん。

rubyには悪いところもいいところもあって、まだまだ発展途上だなっという気はするが・・・
ただ、どこそかしこで暴れるアンチが非常にキモイな・・・

313 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:48:16 ]
>>312
それ、よく知らずにチラッと見に来た初心者や未経験者が
「ああ、そうなんだあ」とでも思ってくれることを期待して
真逆のことをしれっと書いてるの?

314 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:52:18 ]
>>312
長期にわたりRubyを使用し続けると、アンチになる可能性が高まりますので、
短期の使用をおすすめいたします。

315 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:55:04 ]
そういや[ruby-dev:33564]でcgi見直し提案来てるな。
誰も反応してないけど……

316 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:56:47 ]
現実を見ないという解決策を選択します

317 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:08:08 ]
>>313-314
さて、いまからRubyやろうかっと思ってる一見さんなんだが、Rubyのどういうところが最悪なのかkwsk


318 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:10:28 ]
>>317
これからRubyやろうかと思ってる一見さんが
2chのしかも個人のレスなんかに左右される気満々ではいけません。

319 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:12:55 ]
>>318
・・・
左右される気はないんだが、事前に情報をしっとこうと思ったんだが・・・だめなん?



320 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:14:27 ]
だめです。

321 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:16:04 ]
Ruby < 信じれば救われる!

322 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:19:07 ]
もっといい言語が他にいくらでもある。

323 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:20:29 ]
そのときその瞬間にロクでもないアンチか信者が常駐状態だった、
という悲劇はわりとよくある話。

324 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:21:11 ]
>>309
String は別に Object に似せようとはしていないが
StringIO は IO に似せようとしている、という大前提が違う

325 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:24:58 ]
それはstringがいらないという主張であるが、結局の所、
stringなんて名前にするくらいならto_sでいいじゃんってことになる

326 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:29:24 ]
>>325
日本語でおk

327 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:30:56 ]
IOに似せる→stringなんてメソッドいらない
string気持ち悪い→to_sでいいじゃん

328 名前:デフォルトの名無しさん [2008/02/03(日) 17:41:12 ]
>>308
>Webに使うcgiは重厚でも安全な設計にすべきだと思うが?
安全かつ、簡単なことは簡単にできる設計がベストだろ。
だからこそ、multipartのときはただの文字列で、
multipartの時はIOのようなものが来るようになってる。

要するに、multipartを使う奴は面倒を押しつけてるんだよ。

329 名前:デフォルトの名無しさん [2008/02/03(日) 17:42:34 ]
訂正>>328
×multipartのときはただの文字列で、
○multipartじゃないときはただの文字列で、




330 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:47:04 ]
>>327
>IOに似せる→stringなんてメソッドいらない
あってもいいだろ。File#pathみたいなもんだ。

>string気持ち悪い→to_sでいいじゃん
俺の感覚ではto_sのがキモイ。勝手に型変換すんな。

331 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:51:58 ]
>勝手に型変換すんな。
いや、したくてするんだがw






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<208KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef