Rubyについて Part 30at TECH
Rubyについて Part 30 - 暇つぶし2ch1:デフォルトの名無しさん
08/01/12 11:47:53
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

Ruby Home Page
URLリンク(www.ruby-lang.org)

= 前スレ
Rubyについて Part 29
スレリンク(tech板)

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


2:デフォルトの名無しさん
08/01/12 11:49:04
Ruby 初心者スレッド Part 16
スレリンク(tech板)

【ActiveScript】RubyをWindowsで使うスレ【GUI】
スレリンク(tech板)

RUBYの宿題教えてください。
スレリンク(tech板)

Ruby>>>>>Java
スレリンク(tech板)

Rubyは難しすぎ
スレリンク(tech板)

【カルト】Ruby開発者Matz【モルモン】
スレリンク(prog板)

Python厨とRuby厨が仲直りするスレッド
スレリンク(tech板)

3:デフォルトの名無しさん
08/01/12 11:51:27
Rubyリファレンスマニュアル刷新計画
URLリンク(doc.loveruby.net)
ライブラリ一覧
URLリンク(doc.loveruby.net)
RubyExtensionProgrammingGuide
URLリンク(i.loveruby.net)
Ruby Hacking Guide
URLリンク(i.loveruby.net)
Symbol < Stringも止める。
URLリンク(www.rubyist.net)
クラスローカルインスタンス変数
URLリンク(www.rubyist.net)
クラス変数
URLリンク(www.rubyist.net)
ローカル変数
URLリンク(www.rubyist.net)
可視性メモ
URLリンク(www.rubyist.net)
URLリンク(blade.nagaokaut.ac.jp)
URLリンク(blade.nagaokaut.ac.jp)
YARV without 1.9
URLリンク(www.rubyist.net)
URLリンク(www.atdot.net)
URLリンク(i.loveruby.net)
JSON
URLリンク(json.rubyforge.org)
URLリンク(webos-goodies.jp)
URLリンク(webos-goodies.jp)
YAML
URLリンク(www.ruby-lang.org)
URLリンク(jp.rubyist.net)
URLリンク(www.namikilab.tuat.ac.jp)

4:デフォルトの名無しさん
08/01/12 11:55:02

Ruby on Rails
スレリンク(tech板)


5:デフォルトの名無しさん
08/01/12 19:15:14
>>1-4
スレ立て乙です

6:デフォルトの名無しさん
08/01/12 20:22:39

Ruby/Gtk+
URLリンク(www.unixuser.org)
URLリンク(takeposo.sakura.ne.jp)
URLリンク(ruby-gnome.sourceforge.net)
URLリンク(ruby-gnome.sourceforge.net)
URLリンク(ruby-gnome2.sourceforge.jp)
URLリンク(psux1.kek.jp)
URLリンク(www.rubycgi.org)
URLリンク(ruby.gfd-dennou.org)
URLリンク(www.magicianmaster.jp)


7:デフォルトの名無しさん
08/01/12 20:23:17
Ruby on Rails
スレリンク(tech板)
URLリンク(jp.rubyist.net)
URLリンク(www.onlamp.com)
URLリンク(kyotosanga.com)
URLリンク(blog.hacklife.net)
URLリンク(www.metadata.co.jp)
URLリンク(japan.cnet.com)
URLリンク(japan.cnet.com)
URLリンク(journal.mycom.co.jp)
URLリンク(www.atmarkit.co.jp)
URLリンク(www.atmarkit.co.jp)
URLリンク(www-06.ibm.com)
URLリンク(itpro.nikkeibp.co.jp)
URLリンク(itpro.nikkeibp.co.jp)


8:デフォルトの名無しさん
08/01/13 00:09:18
rubyの宿題すれてあるけど、一体誰が出題してるんだ?
職場の先輩かw

9:デフォルトの名無しさん
08/01/13 10:11:03
学校の授業で良く使われるよ
rubyはどんなバカでも理解できる低級言語だから

10:デフォルトの名無しさん
08/01/13 10:20:45
けなしてるように見えて凄いほめ言葉だなw

11:デフォルトの名無しさん
08/01/13 10:39:41
プログラミングで「低級言語」と言うと
「ハードウェアやメモリ等、マシン寄りの言語」ってイメージがある。
マシン語やアセンブリみたいな。

12:デフォルトの名無しさん
08/01/13 14:28:08
たぶんそのうち監獄で出題されましたとかあるんだろうな

13:デフォルトの名無しさん
08/01/13 14:31:50
「低級言語」っていうのは
low level と low class を間違えた
誤訳らしいけどね

14:デフォルトの名無しさん
08/01/13 19:21:20
ほう それぞれどう訳せばいいのかね

15:デフォルトの名無しさん
08/01/13 19:23:40
「下層言語」…の方がしっくり来そう。やっぱいやな響きだけど

16:デフォルトの名無しさん
08/01/13 19:42:00
違う言語を駆使する者同士が共存するのは非常に困難。
わしゃ疲れた・・・。
誰ぞ、画期的な処方を!

17:デフォルトの名無しさん
08/01/13 19:45:18
さあ、これを授けよう・・・これさえあればなんでも実現できるぞよ・・

つ lambda


18:デフォルトの名無しさん
08/01/13 19:48:54
つparrot

19:デフォルトの名無しさん
08/01/13 23:22:34
rubyのlambdaはそこまで万能じゃないような気がする

20:デフォルトの名無しさん
08/01/13 23:45:31
>>17
rubyならラムダはどういうときに活用すればいいでしょうか。

21:デフォルトの名無しさん
08/01/14 19:10:34
つ JVM

22:デフォルトの名無しさん
08/01/14 20:54:16
>>12
以前そういう話があったけど
結局そのプロジェクトは中止になったんじゃなかったっけ?

23:デフォルトの名無しさん
08/01/14 22:44:07
>>20
eachとか使ったことあるなら、既に使ってるはずだが

24:デフォルトの名無しさん
08/01/14 23:25:43
>>23
使ってねーよ叱咤か

25:デフォルトの名無しさん
08/01/14 23:36:45
イテレータは意味的にはラムダ式になってるがな。
それを Ruby 内の用語でラムダと呼ぶかどうかは別として。

26:デフォルトの名無しさん
08/01/14 23:39:40
rubyはしょせんは手続き言語なんでw

27:デフォルトの名無しさん
08/01/14 23:54:40
Amrita2はいつ正式リリースされるのだろう
いい意味でも悪い意味でも楽しみにしてるんだが

28:デフォルトの名無しさん
08/01/15 02:25:32
テンプレートエンジン自体があまり流行りじゃ無いような……
自作するのも良いかもね。

29:デフォルトの名無しさん
08/01/15 02:29:52
今リリースにかかってるって作者の人は言ってるよ。ブログで。

30:デフォルトの名無しさん
08/01/15 10:05:22
>>29
詳しく
gem戦記しか見てなかったから、最新情報が分からないんだ

31:デフォルトの名無しさん
08/01/15 17:23:52
ゲム戦記?

32:デフォルトの名無しさん
08/01/15 20:31:04
>>30
これかな
URLリンク(rmind.g.hatena.ne.jp)

でも初めてAmritaのテンプレート見たけど、ぶっちゃけどう読んでいいのか
わからなかったw

33:デフォルトの名無しさん
08/01/15 21:22:17
>>32
Amrita1 とは別物だねえ。
Amrita1 は id 属性とマッチングさせる仕組で、
テンプレート自体は素の HTML として扱えるものだった。

34:デフォルトの名無しさん
08/01/16 03:31:56
テンプレートは全部自前ならいいんだけど、
第三者が書いたラフな書式のHTMLの加工を考えると
HTMLパーサベースがいいというわけで開発中。

サイボウズなど既存のサイトのデータを
吸い出して加工するとかできたほうがいい。

35:デフォルトの名無しさん
08/01/17 17:32:48
まーたruby-lang.org落ち取る
ruby-lang.orzに変えたらどうだ?

36:デフォルトの名無しさん
08/01/17 17:35:53
g が一瞬ウンチに見えた

37:デフォルトの名無しさん
08/01/17 17:57:15
>>32
あれはAmXMLという専用記述形式
Amrita2は一応XMLも扱える(というかXMLが基本?)

しかしAmXMLは何度見ても読める気がしねえ……

38:デフォルトの名無しさん
08/01/17 17:57:27
>>35
いつものことなのでいちいち落ちてるの報告しなくても良いよ

39:デフォルトの名無しさん
08/01/17 18:00:18
>>38
お前は嫌な奴のようだな

40:デフォルトの名無しさん
08/01/17 18:08:20
>>38
いちいち報告してうざがられる事に意味があるんですよッ
だったら早くなおさんかーい!

41:デフォルトの名無しさん
08/01/17 18:10:38
Googleに無料でスクリプト技術を提供するからと持ちかけて
代わりにホスティングさせればすべて解決。

42:デフォルトの名無しさん
08/01/17 18:13:20
>>41
googleにrubyを?

43:デフォルトの名無しさん
08/01/17 18:22:28
ミラーサイト募集とかはされているのでしょうか?

44:デフォルトの名無しさん
08/01/17 20:40:42
>>41
Shumidt「ジャップがなんかもちかけて来たwww どうするページ」
Larry「Pythonあるしなぁ。俺のボーイングでも掃除させる?」
Guido「哀れRuby・・・人間、そこまで墜ちたくはないものだ」

45:デフォルトの名無しさん
08/01/17 20:45:54
日本語ドキュメントが多いからRubyを使ってるけど
同じように、英語圏の人間ならPythonを選ばない理由は無いだろうと思う

46:デフォルトの名無しさん
08/01/17 20:55:17
とりあえずruby-lang上でリファレンス読ませちゃあかんなあのサイトは
ダウンロードだけにして本家から切り離した無料webスペースにでも静的ファイルで置いとけって感じ


47:デフォルトの名無しさん
08/01/17 21:49:03
>>46
ぜひやってください
おながいします

Rubyコミュ一同

48:デフォルトの名無しさん
08/01/17 21:56:48
URLリンク(ns103.net)
これなくなっちゃった・・・
だれか保存してたらうpして欲しいんだけども・・・

49:デフォルトの名無しさん
08/01/17 23:49:32
無料webスペース(笑)

50:デフォルトの名無しさん
08/01/18 01:18:11
dmyencoding.cが入ったときからx86-64_linuxでビルド出来なくなったんだけど。

具体的にはminirubyが
abort()
一行で落ちる。エンコーディング回りはまだいじりまくってくるみたいだから
しかたないけどメインプラットフォームのLinuxでビルドできないとかやめてほしいなあ。

あと気づいたけど、Continuationが外部ライブラリになったんで -rdebugしたら
callccがなくて終了しちゃうね。 -rcontinutaion -rdebugとしなきゃだめ。


51:デフォルトの名無しさん
08/01/18 02:31:16
>>50
backtraceくれ。
dmyencoding.cでってのがよくわからんが。


52:デフォルトの名無しさん
08/01/18 02:38:48
(gdb) run -ve 'abort'
Starting program: /home/fugafuga/ruby/miniruby -ve 'abort'
[Thread debugging using libthread_db enabled][New Thread 47622444985680 (LWP 1553)][New Thread 1073756496 (LWP 1556)]
ruby 1.9.0 (2008-01-18 revision 0) [x86_64-linux]
[Thread 1073756496 (LWP 1556) exited]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 47622444985680 (LWP 1553)]
0x000000000078e860 in ?? ()
(gdb) bt
#0 0x000000000078e860 in ?? ()
#1 0x00000000004173a4 in rb_enc_precise_mbclen (p=0x2b4ff604ef50 "status",
e=0x2b4ff604ef56 "", enc=0x785a40) at encoding.c:755
#2 0x00000000004a6037 in coderange_scan (p=0x2b4ff604ef50 "status",
len=<value optimized out>, enc=0x785a40) at string.c:137
#3 0x00000000004a60a7 in rb_enc_str_coderange (str=<value optimized out>)
at string.c:161
#4 0x0000000000418414 in rb_enc_compatible (str1=<value optimized out>,
str2=<value optimized out>) at encoding.c:657
#5 0x00000000004a5da3 in rb_str_cmp (str1=47622429929296, str2=47622429929302)
at string.c:1427
#6 0x00000000004a2055 in st_lookup (table=0x77c710, key=140736226213792,
value=0x7fffb4c53f98) at st.c:294
#7 0x0000000000464390 in rb_intern3 (name=0x4f862d "status", len=6,
enc=0x785a40) at parse.y:8910
#8 0x00000000004bd80c in rb_iv_get (obj=47622429695480,
name=0x2b4ff604ef56 "") at variable.c:1925
#9 0x000000000043113e in sysexit_status (err=47622429929296)
at eval_error.c:229
#10 0x00000000004361ea in ruby_cleanup (ex=1) at eval.c:191
#11 0x0000000000436242 in ruby_run_node (n=0x2b4ff6016000) at eval.c:258
#12 0x0000000000416cfd in main (argc=3, argv=0x7fffb4c54298,
envp=<value optimized out>) at main.c:35

53:デフォルトの名無しさん
08/01/18 02:42:44
こんな感じ。追っかけてみると
miniprelude.cを読んで、abortを読んで、メインスレッドが終了して、
それから正常終了するはずなんだけど、なぜかstatusというのを読もうとして
コアを吐く。ううむ・・

54:デフォルトの名無しさん
08/01/18 13:01:10
>48
作者です

家に帰ったら探してみます
どこにアップすれば良いですか?


55:デフォルトの名無しさん
08/01/18 15:12:05
>>54
恐れ入ります
ここはどうでしょうか?
URLリンク(www11.axfc.net)
# *.gzに対応してるみたいです。

ちなみに元に有った場所に再公開はありませんか?
リンクしているサイトも多いようですし・・・

56:デフォルトの名無しさん
08/01/18 16:06:31


57:デフォルトの名無しさん
08/01/18 16:24:46
>>53
p enc_tableしてみて。
あと環境変数LANGとかLC_ALLとかは?


58:デフォルトの名無しさん
08/01/18 20:22:49
>>57
(gdb) p enc_table
$2 = {list = 0x7d07f0, count = 78, size = 80, names = 0x7d0d00}

LANG=Cにしてるけど、関係ないんじゃないかなあ。
[ruby-dev:33099]の変更でdmyencoding.cが入ったからとにかく
エンコーディングに関係してるのはわかるけど・・・

ちなみに鳥はUbuntu gutsyで、setarch i386してビルドするとちゃんと
出来るんだよね。まったく!

59:デフォルトの名無しさん
08/01/18 21:28:05
win32版ruby1.9だけど
>ruby19 -ve "g=ThreadGroup.new;t=Thread.new{sleep 5};z=0;begin g.add t;z+=1;Thread.pass end until g.list.include?(t);p z"
ruby 1.9.0 (2007-12-25 revision 14709) [i386-mswin32]
6 #こいつは実行するたびに違う、本来なら1で無ければならないはず
スレッドを作ってすぐには、スレッドグループの変更ができない
どう書く?orgの「ワーカスレッドを安全に終了させるまで待機」のお題を1.8で解いたので
1.9でも動かしてみたらさっぱり動かんのでいろいろ試したら ThreadGroup#addが機能してなかった
真にスレッドグループの変更が成功するまでThreadGroup#addを行うと1.9でも動くようになった


60:デフォルトの名無しさん
08/01/18 21:54:22
1.9でネイティブスレッド化したので標準入力からのgetsがキャンセルできるか試してみたら
>ruby19 -rtimeout -ve "s='';timeout(5){s=gets};p s"
ruby 1.9.0 (2007-12-25 revision 14709) [i386-mswin32]
-e:1:in `gets': execution expired (Timeout::Error)
エラーが出るので、自前でやると
>ruby19 -ve "s='';t=Thread.new{s=gets};n=Time.now;Thread.new{sleep 5;puts %!sleep #{Time.now-n}!;t.kill};t.join;p s"
ruby 1.9.0 (2007-12-25 revision 14709) [i386-mswin32]
sleep 0.0
""
いきなり終了してsleep 5が機能していない
時間を計って5秒待つとうまくいく
>ruby19 -ve "s='';t=Thread.new{s=$stdin.gets};Thread.new{n=Time.now;sleep 0.01 while Time.now - n < 5;puts %!sleep #{Time.now-n}!;t.kill};t.join;p s"
ruby 1.9.0 (2007-12-25 revision 14709) [i386-mswin32]
sleep 5.0
""


61:デフォルトの名無しさん
08/01/19 00:00:38
1.9のsprintf
>ruby19 -Ks -ve "p sprintf('%s','ソ').encoding"
ruby 1.9.0 (2007-12-25 revision 14709) [i386-mswin32]
#<Encoding:Shift_JIS>
でも幅を指定すると
>ruby19 -Ks -e "p sprintf('%10s','ソ').encoding"
#<Encoding:ASCII-8BIT>
ん?そして
>ruby19 -Ks -e "p sprintf('%10s%s','ソ','ソ').encoding"
-e:1:in `sprintf': character encodings differ (ArgumentError)
なんでやねん!
しかし、文字の幅もバイト数じゃなくて本当の文字の数で計算されるので
フォーマット文字列の%sの幅指定はあまり使い道がなくなったような…
まあUTF8だともともと使えなかったんだろうけど


62:デフォルトの名無しさん
08/01/19 00:08:25
>>58
> (gdb) p enc_table
> $2 = {list = 0x7d07f0, count = 78, size = 80, names = 0x7d0d00}

>>52をみると#1,#2のencの値が妙に小さいんで、レジスタの最適化で消えちゃっ
てのかと思ったが、enc_tableの中身も同じような感じだな。

ついでに、この#1,#2のencの中身は?

念のために聞くけど、最新版で起きるんだよね。


63:デフォルトの名無しさん
08/01/19 01:20:48
>>62
ども。rb_enc_precise_mbclenにbreakpointを設定して
p enc->name
するとASCII-8BITを返す。
> 念のために聞くけど、最新版で起きるんだよね。
少なくともr15052以降ずっと起きてる

64:デフォルトの名無しさん
08/01/19 07:15:07
>>32
亀レスだけどありがとう、助かりました

65:デフォルトの名無しさん
08/01/19 12:34:02
>>55

アップしました
キーワードはrubytkです

>ちなみに元に有った場所に再公開はありませんか?


確か新年早々にハード故障したとか聞きました
リプレースは済んでるらしいのですがデータは消えたのかも知れません
確かにアクセスできませんね
復旧予定は未定ですスミマセン

しかしこの文書まだ見てる方がいるとは思いませんでした

66:デフォルトの名無しさん
08/01/19 17:26:45
>>65
アップありがとうございます
1ページに集約してるのが気に入ってよく利用してました

67:デフォルトの名無しさん
08/01/19 18:12:56
URLリンク(builder.japan.zdnet.com)
Rubyヤバス

68:デフォルトの名無しさん
08/01/19 18:29:57
これはRuby公式サイトのリファレンスマニュアルが503ばっかり出すせいだな
そうにちがいないッ


69:デフォルトの名無しさん
08/01/19 18:45:10
ようやくAmrita2.0.0のリリースが来たー!と思ったら
先頭にこんな記述があった

require 'rubygems'
require 'hpricot'

CGIスクリプトから使おうと思ってた俺涙目w

70:デフォルトの名無しさん
08/01/19 18:52:05
自分とこでgems使うんならいいけどライブラリでgems使うとかやめちくれ

71:デフォルトの名無しさん
08/01/19 18:56:53
それぐらい自分で改編しろよ
簡単だろ

72:デフォルトの名無しさん
08/01/19 19:00:03
直書きせずに、ユーザー環境の -rubygems に頼るべき

73:デフォルトの名無しさん
08/01/19 19:13:31
いちいちrequire 'rubygems'なんて書かないといけないのが問題

74:デフォルトの名無しさん
08/01/19 19:25:36
>>> python > ruby
True

75:デフォルトの名無しさん
08/01/19 19:55:06
irb(main):001:0> python > ruby
NameError: undefined local variable or method `python' for main:Object
from (irb):1
from :0

76:デフォルトの名無しさん
08/01/19 19:56:35
irb(main):007:0> puts ["python", "Ruby", "perl", "php"].sort.join(" > ")
Ruby > perl > php > python

77:デフォルトの名無しさん
08/01/19 20:02:23
(;`Д´)・・・・・

78:デフォルトの名無しさん
08/01/19 20:05:30
>>74-76
本すれで下らないからやめてくれる?

79:デフォルトの名無しさん
08/01/19 20:05:58
perl(ruby, python) > php

80:デフォルトの名無しさん
08/01/19 20:07:32
>>78
半年ROMれ

81:デフォルトの名無しさん
08/01/19 20:12:14
>>> {'Ruby':'ruby','Python':'python','Perl':'perl'}
{'Python': 'python', 'Ruby': 'ruby', 'Perl': 'perl'}


82:デフォルトの名無しさん
08/01/19 20:16:59
>>78
たぶんテスト期間の大学生が、ストレス発散しに来てるんだよ
温かい目であぼーんしてあげようぜ

83:デフォルトの名無しさん
08/01/19 21:13:50
>>69-74

俺は以下のようにしてるけど、これなら ok だよね?

begin
 require "hpricot"
rescue LoadError
 require "rubygems"
 require "hpricot"
end

84:デフォルトの名無しさん
08/01/19 21:17:13
vm_opts.hの最適化スイッチを全部onにして-O6でコンパイルしたら
かえって遅くなっちゃった(´・ω・`)

85:デフォルトの名無しさん
08/01/19 21:32:28
hpricotって流行ってるの?
前試したら文法が変態的なのとXPathでエラーも出さずに
とんでもない挙動を示した覚えがあるんだが

86:50
08/01/19 21:39:30
x86-64だと、abort/exitで落ちるバグはakrさんのr15127のコミットで直りますた。
ありがとうありがとう。

ところで、x86-64は青木さんが毎日checkbuildしてたはずなんで参考になるかなと
思って見たんだけど、どうでもいいエラーで止まってて吹いた。
Ruby-Statusのところで結構ビルドしっぱいしてるけど、内容見るとくだらない
ミスなんだよなあ。たまにチェックとかしないんだろうか。


87:デフォルトの名無しさん
08/01/19 21:51:22
>>70-71
rubygemsの方は、自分で書き換えれば何とかなるけれど
hpricotの方はどうしようもないな
速度を考えてhpricotにしたんだろうか

88:デフォルトの名無しさん
08/01/20 00:07:05
Ruby のテストについて質問させてください。

DHCP の設定ファイルを生成するようなプログラムの受け入れテストを書いているんですが、
テストを実行するホストのネットワーク情報に応じて、テスト内容を変えたいと思ってます。

具体的には、dhcpd.conf に書き込む IP アドレス、ゲートウェイアドレス、ネットマスクをテストを
実行するホストと同じにしたい (IP アドレスだけは、ホストと同じネットワークの空いてる IP アドレスを
自動的に割り当てたい) んですが、うまい方法はあるでしょうか。ネットワーク系のテストを簡単に
してくれるような RSpec のプラグインとかがあれば最高なんですが。。。




89:デフォルトの名無しさん
08/01/20 01:22:42
今日Ruby試験だったね。受けた人いる?

90:デフォルトの名無しさん
08/01/20 01:53:17
>>88
NICが何枚も刺さってる場合は?

91:デフォルトの名無しさん
08/01/20 02:32:49
公式サイトのインストールガイド(MacOSX)に平然と1.9を勧めてるのはいかがなものか。
1.9でirbが普通に通るようになったのは嬉しいけど。

92:デフォルトの名無しさん
08/01/20 02:34:19
マカはコードかかねーから無問題
BSD上がりの奴は1.9がなんなのか心得てるだろうしw

93:デフォルトの名無しさん
08/01/20 02:49:35
1.8は最初から入ってるから1.9の紹介してるのかね?



94:デフォルトの名無しさん
08/01/20 02:59:54
rubyはとんだスイーツ言語

95:デフォルトの名無しさん
08/01/20 05:27:10
>>94
syntax sugarがかかってるもんね。おいしいけど。


96:デフォルトの名無しさん
08/01/20 11:24:36
>>95
しかしそんなとこには虫が湧くんだよな。

97:デフォルトの名無しさん
08/01/20 13:03:36
Syntactic sugar causes cancer of the semicolon.
    -- Alan Perlis

98:デフォルトの名無しさん
08/01/20 13:08:13
SICPだっけ?
セミコロンは湧かないけどendがね・・・

99:デフォルトの名無しさん
08/01/20 17:58:04
[ruby-list:44517]
> 503 Service Unavailableで見えないことが多くなっていた
> www.ruby-lang.org/ja/man/ を /ja/man/html/ 以下においた
> 静的HTMLへのリダイレクトに変更しました。

さっそく見に行ってみたけど、本当に軽くなってて感動した
でもこれどうやって編集すればいいんだろう

100:デフォルトの名無しさん
08/01/20 18:26:37
>>99
とりあえずの急場しのぎにはいいんじゃね?
googleでのサイト内検索ボックスくらいつけてほしいけど・・・

503は、人多すぎで出してるんだっけか
サーバー増強千ならんのかねえ

101:デフォルトの名無しさん
08/01/20 18:27:31
どっちにしろミラーサイトはいるな

102:デフォルトの名無しさん
08/01/21 01:51:51
編集リンクだけwikiにしてあとは性的HTMLにすればいいのにね。

103:デフォルトの名無しさん
08/01/21 01:53:20
つまりエロが足りないんですね。

104:デフォルトの名無しさん
08/01/21 02:03:24
ミラーサイト勝手に作ったら怒られる?

105:デフォルトの名無しさん
08/01/21 02:08:35
URLリンク(www.ruby-lang.org)

106:デフォルトの名無しさん
08/01/22 15:21:41
Ruby 1.9のジェネレータって

def fib(max=1000)
a = b = 1
loop {
raise StopIteration if b > max
yield b
a, b = b, a + b
}
end

g = enum_for(:fib)
loop { p g.next }

みたいにメソッド作らないと使えない?
あとend?とかって無くなった?

107:デフォルトの名無しさん
08/01/22 15:23:59
補足
1.8のGeneratorみたいなのが欲しい

108:デフォルトの名無しさん
08/01/22 15:35:54
Rubyのジェネレータってcall/cc使ってて、
1.9ではcall/ccが動くんだかどうだか妖しいらしいという話があった気がするので、
すごく、こわいです。

109:デフォルトの名無しさん
08/01/22 19:00:29
今さっき気づいたんだが
アンサイクロペディアって「Ruby」の項目はないのに「eRuby」の項目はあるのね

110:デフォルトの名無しさん
08/01/22 22:32:00
>>108
伝聞で怖がる暇で確認すりゃいいのに。
動くよ。結局コアから外れたってだけ

111:デフォルトの名無しさん
08/01/23 05:25:55
>>108
1.9はFiberじゃないの?

112:デフォルトの名無しさん
08/01/24 22:45:36
1.9のEnumeratorはFiberを使ってる
そして、Enumeratorにnextとrewindメソッドが追加されて外部イテレータとしても使えるようになった

>あとend?とかって無くなった?
ジェネレータライブラリは1.9でもそのまま残ってるのでそれを使えといいたい所だが
エラーで動かない
1.9付属のジェネレータはcall/ccじゃなくてThreadを使うようになっているが
(YARV化で?)Thread.criticalが無くなったせいで動かなくなったようだ
そのうちFiber化するか、あるいは重複機能となったgenerator.rb自体が消滅するか…
ちなみにcall/ccを使っている1.8付属のジェネレータは1.9でも動く


113:デフォルトの名無しさん
08/01/24 23:37:46
Rubyの拡張モジュール作ってて、Rubyのメインスレッドとは別のスレッド
を複数使ってる。これらのスレッドはシステムコールでブロックすること
がある。

ユーザがたとえばCTRL-C押したり、killしたりしたときに、それぞれの
スレッドのブロックを解除してあげたくて、シグナルを補足して投げて
あげたい。

だけど、あるシグナルのsigactionは他のスレッドで呼ばれるかもしれないし、
どうしたらいいか悩んでます。皆さん、どうしてます?

114:デフォルトの名無しさん
08/01/25 00:33:48
> 1.9のEnumeratorはFiberを使ってる

もしよれければ、その辺の利点をkwsk

Fiberってプリエンティプティブスレッドというか、コルーティンンのことだよね?

115:デフォルトの名無しさん
08/01/25 14:41:38
1.9.1まだあああああああああああああああああああああああああああああああああああ

116:デフォルトの名無しさん
08/01/25 21:44:25
再帰呼び出しを伴うようなアルゴリズムの可視化ってどうやったら良いんでしょうか?

たとえば、バブルソートみたいなループのアルゴリズムを表示する場合だと、

# Model
class Bubble
def sort
# ソートのループを一度だけ実行
end
end

# View
b = Bubble.new([3, 5, 8, 1, ...])
while(not b.finished) do
b.sort
show b # GUI に表示
end

などとできると思うのですが、クイックソートみたいな再帰だと、この仕組みでできますか?
なお、できるだけソートアルゴリズムの方には描画処理を入れたくないので、Model と View に分けてます。


117:デフォルトの名無しさん
08/01/25 22:14:27
>>116
Kernel#set_trace_func を使えば出来ると思うけど
使った事ないんで詳細は自分で調べてくれ

118:デフォルトの名無しさん
08/01/26 00:10:57
ソートにブロック渡せるようにすれば?

119:デフォルトの名無しさん
08/01/26 00:23:47
ネイティブスレッド使えれば、とか
描画イベント用の delegate渡す的なことを思ったけど、

rubyでなら >>118 が楽そうだ

120:デフォルトの名無しさん
08/01/26 02:30:01
>>115
1ヶ月以上バイナリストリングの話をしてるのに出せるわけないだろwww

121:113
08/01/26 22:42:40
自己レスですが、ドライバのclose処理をいじって、システムコールでブロック
しているスレッドを起床させることにしました。

なので、シグナルは補足しないことに。

122:デフォルトの名無しさん
08/01/27 07:52:25
世界的にそこそこ有名な国産プログラミング言語ってrubyだけか?

123:デフォルトの名無しさん
08/01/27 08:05:40
というかほかに、和製のプログラミング言語って存在するのか?
(なでしこ等の日本語プログラミング言語は別として)

124:デフォルトの名無しさん
08/01/27 08:13:21
>>123
activebasicとか

125:デフォルトの名無しさん
08/01/27 08:57:16
>>123
なんで「なでしこ」を別扱いするんだよw

126:デフォルトの名無しさん
08/01/27 09:10:34
HSP(笑)

127:デフォルトの名無しさん
08/01/27 09:19:13
>>125
日本語プログラミング言語は、海外の人が使えるものじゃないだろう

128:デフォルトの名無しさん
08/01/27 09:32:19
>>127
そんなマジレス返ってくると思ってなかった・・・

129:デフォルトの名無しさん
08/01/27 10:58:43
perlで @a = (0..9, 15, 20..29) と書くと「..」を展開した配列が得られますが、rubyで[0..9, 15, 20..29]と書くと「..」の部分はRangeオブジェクトになってしまいます。
これを展開した配列にする、最もシンプルな書き方を教えてください。
自分で考えた範囲では、
[0..9, 15, 20..29].map {|e| e.respond_to?(:to_a) ? e.to_a : e}.flatten
ですが、あまりにもうざい……。

130:デフォルトの名無しさん
08/01/27 12:39:35
>>129
a = [(0..9).to_a, 15, 20, (20..29).to_a].flatten

もしくは

a = (0..9).to_a + [15, 20] + (20..29).to_a

131:129
08/01/27 17:18:57
>>130
やっぱその手の方法しかないですか。
何よりも見た目が美しくないのが気にいらないのですが、仕方がないのかなぁ。


132:デフォルトの名無しさん
08/01/27 17:21:17
要素がRangeなら展開するラッパー書くしか

133:デフォルトの名無しさん
08/01/27 17:42:18
respond_to?(:to_a) で判定してると
[ "hello", 1, 2, 3, 4..5 ] が [ ?h, ?e, ?l, ?l, ?o, 1, 2, 3, 4, 5 ]
になったりせんのかと危惧して試してみたら、
"hello".to_a は [ "hello" ]
なのか。


134:デフォルトの名無しさん
08/01/27 20:04:41
[*0..9, 15, 20, *20..29] こんなのどうでしょう

135:デフォルトの名無しさん
08/01/27 20:16:20
>>134
syntax error

136:デフォルトの名無しさん
08/01/27 20:46:45
>>135
む、すまん、1.9 専用ってことで

137:デフォルトの名無しさん
08/01/27 21:22:19
ruby/tkのサンプル
/ext/tk/sample/tkextlib/treectrl/demo.rb
を実行してみたもののtreectrlがバージョン2に上がったときに切り捨てたオプションがいっぱい使ってあってどうにもならんorz

138:デフォルトの名無しさん
08/01/27 23:16:37
>>114
> Fiberってプリエンティプティブスレッドというか、コルーティンンのことだよね?
*ノン*プリエンティプティブスレッド


139:デフォルトの名無しさん
08/01/27 23:47:21
マイクロスレッドとも言うね。
外部イテレータを実装するなら一番シンプルな解決法だと思う。

140:デフォルトの名無しさん
08/01/27 23:58:44
>>138
うおw ノンつけてなかった、失礼した

141:デフォルトの名無しさん
08/01/28 09:47:20
イテレーターからbreakしたか/しなかったか判別する方法ある?
こんなことしたい

min.upto(max) { |y|
 min.upto(max) { |x|
  return if breaked?(yeild(y, x))
 }


142:デフォルトの名無しさん
08/01/28 09:49:05
例外投げる

143:デフォルトの名無しさん
08/01/28 10:50:25
trunk/ruby/doc以下ってほとんど無意味だよね
rdの文書はなんかさっさと本体に埋め込むべきだし、役に立つ情報は
ほとんどない。リファレンスマニュアルを本家svnで配ればいいのに。

144:デフォルトの名無しさん
08/01/28 11:09:57
>>143
誰かruby-devあたりで提案してみたら?

145:デフォルトの名無しさん
08/01/28 12:41:18
例外って本当にエラーが起こったときだけ使いたい。

146:デフォルトの名無しさん
08/01/28 13:03:40
LANG=ja_JP.UTF-8にしてるとベンチマークの
reverse_complementが遅い遅すぎる。というか、10分くらいたっても終了しない。
sliceに異常に時間がかかってる。LANG=Cとか-Knしておくと10秒くらいなのに。

これは・・・(;´Д`)
ふだんはみんな-KsかEUC-JPで使ってるのかなあ


147:デフォルトの名無しさん
08/01/28 15:54:48
>>141
returnでtrue/falseかなんか返せば。


148:デフォルトの名無しさん
08/01/28 16:43:51
Array#eachって順番保障されてたっけ?

149:デフォルトの名無しさん
08/01/28 17:34:31
されるだろ常考

150:デフォルトの名無しさん
08/01/28 17:46:43
>>148
何か配列にトラウマでもあるのか

151:デフォルトの名無しさん
08/01/28 20:41:00
>>145 じゃ例外じゃない何かを投げる。具体的には throw して catch。

152:デフォルトの名無しさん
08/01/29 03:22:11
というかbreakされたかどうかのyield側の判別機構ってなかったのか。
できればつけて欲しいところだなぁ

153:デフォルトの名無しさん
08/01/29 16:52:27
d言語でrubyのライブラリかける?

154:デフォルトの名無しさん
08/01/29 18:10:50
>>153
みたことないが、Cとリンクできるオブジェクトを作れるならできるはず。
マクロとかがどうなるか疑問だが。

155:デフォルトの名無しさん
08/01/29 18:13:34
>>152
いや、breakされたらそもそもyield側に戻ってこない。


156:デフォルトの名無しさん
08/01/29 20:24:20
Dって共有オブジェクトファイル(.soとか.dll)つくれるの?

157:デフォルトの名無しさん
08/01/29 20:46:14
なぜ Ruby スレで D

158:デフォルトの名無しさん
08/01/29 22:58:18
:D

159:デフォルトの名無しさん
08/01/29 23:22:52
URLリンク(d.hatena.ne.jp)

160:デフォルトの名無しさん
08/01/29 23:27:50
共有オブジェクトがつくれたらrquire "dl"で無理矢理使えるからね。
ところで1.9からdlの仕様がだいぶ変わったんだけど全くドキュメントがなくて
困った。いや、外部のドキュメントよりもrdocで埋め込んでほしい。

161:デフォルトの名無しさん
08/01/30 01:05:01
>>152
そんなの普通は要らないと思うが、どうしてもやりたいなら
できないことはない。おすすめはしない。

def foo
 0.upto(10) do |x|
  begin
   f = true
   yield x
   f = false
  ensure
   return if f
  end
 end
end

foo do |x|
 p x
 break if x == 5
end

162:129
08/01/31 01:22:00
>> "abcdef".scan(/(.).(.)/) {|*a| puts a.join(", ")}
a, c
d, f
=> "abcdef"
>> "abcdef".gsub(/(.).(.)/) {|*a| puts a.join(", ")}
abc
def
=> ""
誰だ、こんな腐れ仕様にしたやつは……。gsubもscanと同じと思っておもくそハマったやんけorz

163:デフォルトの名無しさん
08/01/31 01:23:52
しまった、名前欄orz

164:デフォルトの名無しさん
08/01/31 01:34:53
馬鹿自慢か

165:デフォルトの名無しさん
08/01/31 02:15:30
>162
regexオブジェクト使うところは素直にmatchオブジェクトを渡せと言いたいところだよな。
この手の腐れ仕様けっこうあるよね。

166:デフォルトの名無しさん
08/01/31 08:03:00
1.9ってこういう一貫性の欠如は改善するの?

167:デフォルトの名無しさん
08/01/31 08:18:33
$ ./ruby1.9 -e ' %Q|abcdef|.gsub(/(.).(.)/) {|*a| p a}'
["abc"]
["def"]
$ ./ruby1.9 -e ' %Q|abcdef|.scan(/(.).(.)/) {|*a| p a}'
[["a", "c"]]
[["d", "f"]]
だそうだ。

$1, $2しか使ってないから気づかなかったな。
$&は両方"abc", "def"だな。


168:デフォルトの名無しさん
08/01/31 08:22:31
教訓:gsubやscanのブロックパラメータに頼るべきではない

169:デフォルトの名無しさん
08/01/31 08:41:54
これは一貫性がないというより
単にscanがきわめて特殊なメソッドなんだというべきだろう

「matchでいいじゃん」には同意する

170:デフォルトの名無しさん
08/01/31 08:44:03
ドビックリ最大限の法則

171:デフォルトの名無しさん
08/01/31 16:12:41
gsubだけじゃなくてscanもMatchDataにすりゃいいんだ
scanが渡す配列の最初にマッチ全体を入れてさえいれば[n]のアクセスで整合性がとれてたのに
もう1.9からは別物として作り直しちゃえよ

172:デフォルトの名無しさん
08/01/31 17:24:08
1.9からは別物として作っているので、その程度の非互換は問題なかったはずなのだが、
すでに1.9.0をリリースしてしまっているが、
今からでも遅くないから変更してしまえという主張もありだと思うので、
その旨MLでレスするといいと思う

173:デフォルトの名無しさん
08/01/31 17:27:30
いえーい、まっつん見てるー?

174:デフォルトの名無しさん
08/01/31 18:07:12
Rubyは今のまま糞であり続ければいいよ

175:デフォルトの名無しさん
08/01/31 20:21:04
MatzがPHPにけんかを売ってるとのことでこのスレッドに来ました
他のことなぞ気にせず粛々とやりたいことを実装し続けてればいいのに

176:デフォルトの名無しさん
08/01/31 20:31:14
ボロクソに言う=喧嘩を売る、ではないと思うよ。

177:デフォルトの名無しさん
08/01/31 20:55:17
Matz is nice, so we are nice.

178:デフォルトの名無しさん
08/01/31 20:59:25
Matz is nice, we are so nice.

179:デフォルトの名無しさん
08/01/31 21:05:10
RubyはPHPを相手にする程度の言語

180:デフォルトの名無しさん
08/01/31 21:08:22
Rubyについて(アンチ専用) Part002
スレリンク(tech板)

181:デフォルトの名無しさん
08/01/31 21:19:00
ここでいいよ

182:デフォルトの名無しさん
08/01/31 23:09:41
>>171
scanをMatchDataにする場合、全体スキャンした後でイテレートすることになるん?

183:デフォルトの名無しさん
08/01/31 23:18:01
Cアプリへの組み込み用スクリプトとして使おうかと思ってるんだけど、公式ドキュメントにCからの呼び出しについて全く記述がないんだけど、APIリファレンスとかないの?

184:デフォルトの名無しさん
08/01/31 23:20:07
URLリンク(doc.loveruby.net)

185:162
08/01/31 23:56:51
>>182
??? >>171 は単に $~ をブロックパラメータとして渡せと言ってるだけだと思うが。
で、俺もそれに一票。

186:デフォルトの名無しさん
08/01/31 23:57:30
Matz is not nice.

187:デフォルトの名無しさん
08/02/01 00:52:55
うーん、RubyのC-APIってこういうのか。。。
公式ドキュメントとして、組み込みの手順を説明してたりってのはないのか。
例えば Python を組み込むときに使う Py_Initialize を Google で検索すると
リファレンスマニュアルがすぐに見つかるけど、
ruby_init で検索してもドキュメントらしきものは見つからず。日本で生まれたのに、
どうしてこんなにドキュメントが少ないんだろう?
RubyをCに入れるって事がマイナーな事なのか?




188:デフォルトの名無しさん
08/02/01 01:08:09
README.EXT.ja
URLリンク(svn.ruby-lang.org)
URLリンク(www.ync-net.co.jp)
URLリンク(wiki.livedoor.jp)

189:デフォルトの名無しさん
08/02/01 01:10:14
README.EXT.ja は読んだ?

...と思ったら、CにRubyを組み込むほうか。ない。

一応、「オブジェクト指向スクリプト言語Ruby」の 9.9 と、
「プログラミングRuby」の 21.7 が少しは参考になるかと。

190:デフォルトの名無しさん
08/02/01 01:11:56
system("ruby hoge.rb");

191:デフォルトの名無しさん
08/02/01 01:13:36
Rubyの初期化・実行

192:デフォルトの名無しさん
08/02/01 01:16:49
>>187
ドキュメントなんてないよ
そんなのを書くぐらいなら本を書いて売るのがRubyのやり方

193:デフォルトの名無しさん
08/02/01 01:27:48
純粋な質問なのだけど、「CにRubyを組み込む」ってどういうときに
使う?CでRubyを拡張ならよくやるのだけど。いや、CにRubyを
組み込めるのはシッテルガ。いまいち用途がピンとこないのよね。

194:デフォルトの名無しさん
08/02/01 01:29:08
Cで書いてあるアプリのプラグインをRubyで書けるように、とか

195:デフォルトの名無しさん
08/02/01 01:36:00
Ruby じゃなくて Python の例になるけど、
Civilization IV には Python が組み込まれていて、ゲームの進行やルール、チュートリアルの流れはそれで記述してある。
体験版をダウンロードすれば、なかに python の DLL とライブラリ一式が入ってるのが分かる。

3D グラフィックスツールの Blender やベクター画像ツールの Inkscape では
プラグインを Python で書くようになってるよ。
編集中のデータが入ったオブジェクトがプラグイン側の関数に引数として渡されるので、
好きなだけいじくり回してやれば良い。



196:デフォルトの名無しさん
08/02/01 01:52:18
>>187
○○がしたい

ドキュメントない

コードを読んで把握

○○できた

で終わるので。

197:デフォルトの名無しさん
08/02/01 01:56:16
String#s
String#sg
String#sc
ダサさが加速して行く…

198:デフォルトの名無しさん
08/02/01 02:06:46
愕然としたね

199:デフォルトの名無しさん
08/02/01 02:17:48
あんだけ普段、「名前は重要」って言っておいて
これはないだろw

200:デフォルトの名無しさん
08/02/01 02:27:29
袋だたき撤回パターン

201:デフォルトの名無しさん
08/02/01 02:28:16
できないからこそ言ってるんじゃないか

202:デフォルトの名無しさん
08/02/01 02:39:09
何でクソ仕様大会になってんだ。俺にも言わせろ。
StringIO#stringにしたやつ出て来い。何でto_sにしなかったのか100万回説明してもらおう。
Webでmultipart使うとき面倒ったらありゃしない。


203:デフォルトの名無しさん
08/02/01 02:40:36
>>197
え、こんなメソッドできたの?
マジで名前を見ても何をするのか全然分からんぞ。

204:デフォルトの名無しさん
08/02/01 02:41:40
よその言語のこといえないじゃんな

205:デフォルトの名無しさん
08/02/01 02:43:28
いやこれはMatzの釣りかもしれん

206:デフォルトの名無しさん
08/02/01 02:44:05
>>203
URLリンク(blade.nagaokaut.ac.jp)
このことだろ

207:デフォルトの名無しさん
08/02/01 02:45:05
一番痛いのはこいつだけどwww
URLリンク(blade.nagaokaut.ac.jp)

208:デフォルトの名無しさん
08/02/01 02:48:21
Airemixのなるせたんか。
この人も色々あれなんだよなあ。

209:デフォルトの名無しさん
08/02/01 03:59:00
>>202
どういう風に面倒?

210:デフォルトの名無しさん
08/02/01 05:46:09
>>179 は至言

211:デフォルトの名無しさん
08/02/01 07:20:56
そして俺らはRubyを相手にする程度のプログラマか・・・

212:デフォルトの名無しさん
08/02/01 07:36:12
>>187
公式のは見たことないなあ。
昔 C MAGAZINE に載ったのを見たことあるくらい。
URLリンク(shugo.net)
URLリンク(shugo.net)

213:デフォルトの名無しさん
08/02/01 08:19:20
CからRuby呼び出したことあるけど、ドキュメントが必要なほど難しいことでは
なかったな。初期化済んだらそのまんまメソッドの実装を呼ぶだけだったから。


214:デフォルトの名無しさん
08/02/01 08:21:41
なんかCからRuby呼ぶってすげー逆な気がするんだがそういうニーズも有るんだな

215:デフォルトの名無しさん
08/02/01 08:48:39
>>197
叩くよりもどんな名前がいいのか考えようぜ

>>202
あれはIOにto_sがないのに合わせてるんだろう

216:デフォルトの名無しさん
08/02/01 08:55:41
>>187
vimのrubyインターフェースのソースが参考になったよ。


217:デフォルトの名無しさん
08/02/01 09:03:32
>>215
>あれはIOにto_sがないのに合わせてるんだろう
IO#stringもないので、そんなことが理由になるわけがない。


218:デフォルトの名無しさん
08/02/01 09:04:56
to_matzはありますか?

219:デフォルトの名無しさん
08/02/01 09:50:57
>>197
すげええええええええええええええwww

220:デフォルトの名無しさん
08/02/01 09:59:03
浮気相手の趣味に影響を受けるのはよくある話。
きっと相手はプロゴルファーなんだろう。

221:デフォルトの名無しさん
08/02/01 12:01:18
雲を裂き嵐を呼んで夢を勝ち取る人かな

222:デフォルトの名無しさん
08/02/01 14:31:09
>>202
> Webでmultipart使うとき面倒ったらありゃしない。
StringになったりStringIOになったりすることなんてあったっけ?
TempfileになったりStringIOになったりはあっても。


223:デフォルトの名無しさん
08/02/01 15:31:00
>>193
Rubyなら、RPGツクールXP、VX か
本体でできない拡張に使われてる。
標準でできない、無限スクロールを実装したり、
あげくは、戦闘シーンを標準のものを使わず自前で実装したり。

別の言語だが、組み込みでよくつかわれる Lua なんかは、
FarCryというFPSで使われていた。
メニューなどのUI の 定義や、パラメーターの設定など。

ゲームだと Rubyは聞かないが、組み込み用にスクリプト言語がつかわれることが多い。

224:デフォルトの名無しさん
08/02/01 15:41:24
DelphiにDMonkey(JScript)エンジン組み込んでアプリをユーザーに弄らせるというのはよくやるな。
RubyだとApolloでできるらしいが。
OOoやCivilization4はマクロ言語としてPython搭載だったか。

225:デフォルトの名無しさん
08/02/01 17:57:43
変に独自言語搭載されると覚えるのだるいしな。

226:デフォルトの名無しさん
08/02/01 18:03:40
組み込み系はもうちょっとドキュメント周りを整備して普及に努めたほうがいいかもな。
マクロ書く為に覚えればその延長で使うようになるかもしれないし。

227:デフォルトの名無しさん
08/02/01 18:45:52
>>225
ウィンドウマネージャにlisp構文のスクリプト積むのやめて欲しい

228:デフォルトの名無しさん
08/02/01 20:29:55
そういや1.9からRubyのスレッドってネイティブになった?

229:デフォルトの名無しさん
08/02/01 23:17:28
> >222
multipartとそうじゃないのを同一視して受け取ってます。
こんなことやってるんだけど、他に良い方法あります?
@cgi = CGI.new
@cgi.content_type =~ %r|multipart/form-data| ? @cgi[key].string : @cgi[key].to_s

そういやTempFileの時の分岐もいるわな……

230:デフォルトの名無しさん
08/02/01 23:26:20
StringIOにto_sをつければいいだけじゃねーの?


231:デフォルトの名無しさん
08/02/01 23:44:08
>>228
なった

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

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

234:230
08/02/02 10:43:38
>>233
標準でやるべきというのに異論はないが

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


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

236:デフォルトの名無しさん
08/02/02 14:30:33
>>235
ERBのresultもto_sであるベッキー?


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

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


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

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

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

240:デフォルトの名無しさん
08/02/02 23:46:25
>>217
>IO#stringもないので、そんなことが理由になるわけがない。

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

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

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

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

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

245:244
08/02/03 00:02:44
……煽りでケコーンするなんて何という恥
死のう 舌を噛んで死のう

246:デフォルトの名無しさん
08/02/03 00:04:07
IOをくださ~いおぅおう
IOをくださ~い

247:デフォルトの名無しさん
08/02/03 00:07:45
IOの話じゃねーだろ馬鹿

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

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

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

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

251:240
08/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:デフォルトの名無しさん
08/02/03 00:25:20
一応言っておくと>>241>>242は別人だぞ、と
>>251は、:なるほど。でも>>215は端的すぎるんじゃね?とか

253:デフォルトの名無しさん
08/02/03 00:50:03
だからIOじゃねーだろアホ

254:240
08/02/03 00:52:15
>>252
おれも>>215ではないので、推測なんだけどね。

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

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


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

255:デフォルトの名無しさん
08/02/03 01:01:24
今北産業
誰か三行でまとめて

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

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

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

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

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

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


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


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

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

260:デフォルトの名無しさん
08/02/03 04:17:07
PerlのCGI用モジュールってどんなんなんだろ
参考にならないかな

261:デフォルトの名無しさん
08/02/03 04:36:37
>>258
Webrick::CGI

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

262:デフォルトの名無しさん
08/02/03 04:44:33
Webrickはプロクシサーバの作り方しか載ってねえよ

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

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

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


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

265:デフォルトの名無しさん
08/02/03 05:30:46
>>264
それ以上になると、フレームワークつかえとしか

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

267:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/02/03 06:00:25
>>266
では、自前で組めばいいのでは?

269:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/02/03 09:55:55
>StringIOはIOに見せかけたStringであって、Stringに見せかけたIOじゃない。

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


271:デフォルトの名無しさん
08/02/03 10:03:54
StringIOでreadつかう馬鹿はいないだろ

>>254除いては。

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

273:デフォルトの名無しさん
08/02/03 10:12:04
StringIO#string= なんてのもあるんだな。
アクセサだったのか。

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

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

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

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

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

278:デフォルトの名無しさん
08/02/03 11:16:31
いやもうメーリングリストに書けよ

279:デフォルトの名無しさん
08/02/03 11:19:06
>>276
Tempfileの分岐考えたら>>239の方が短いんじゃ?

280:デフォルトの名無しさん
08/02/03 11:24:54
短いからいいという話をするなという主張なのでは

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

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

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

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

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

284:デフォルトの名無しさん
08/02/03 11:43:30

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

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

名前重要


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

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


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

287:デフォルトの名無しさん
08/02/03 11:48:14
>>285
Rubyについて(アンチ専用) Part002
スレリンク(tech板)

遊び場はこちら

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

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

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

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

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

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

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


292:デフォルトの名無しさん
08/02/03 14:10:30
>>276
>「面倒だから。短くかけるから」ってだけ批難してるなら

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

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

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

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

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

296:240
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/02/03 15:14:43
>>288
それCGI.rbとかWebrickCGIが糞なんじゃなくて
もともとhttpの仕様が糞なんだからどうしようもないじゃん
パラメータ毎に型情報持てないんだよ

300:デフォルトの名無しさん
08/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
08/02/03 15:43:51
>299
httpがクソなのはわかるんだけど、役に立たない対策をして使い勝手を落としているのは
cgiがクソだからだと思うけど?
>294 みたいに危険なバッドノウハウをマニュアルに載っけているのなら、そもそも何のために
対策してるのか判らんし。

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


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


303:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/02/03 16:14:18
別にIOのサブクラスじゃないし

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

307:デフォルトの名無しさん
08/02/03 16:21:04
>>305
Stringのサブクラスでもないな

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


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

310:デフォルトの名無しさん
08/02/03 16:37:29
stringなんて名前にするくらいならto_sでよかったよ

311:デフォルトの名無しさん
08/02/03 16:38:08
URLリンク(anond.hatelabo.jp)
誰だよこんなキモい記事書いたのw

312:デフォルトの名無しさん
08/02/03 16:44:44
うーん。

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

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

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

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

316:デフォルトの名無しさん
08/02/03 16:56:47
現実を見ないという解決策を選択します

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


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

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

320:デフォルトの名無しさん
08/02/03 17:14:27
だめです。

321:デフォルトの名無しさん
08/02/03 17:16:04
Ruby < 信じれば救われる!

322:デフォルトの名無しさん
08/02/03 17:19:07
もっといい言語が他にいくらでもある。

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

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

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

326:デフォルトの名無しさん
08/02/03 17:29:24
>>325
日本語でおk

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

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

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

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


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

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

331:デフォルトの名無しさん
08/02/03 17:51:58
>勝手に型変換すんな。
いや、したくてするんだがw

332:デフォルトの名無しさん
08/02/03 18:02:16
p StringIO.new("abcd") #=> "abcd"
なんてキモすぎだろ。常考

333:デフォルトの名無しさん
08/02/03 18:04:49
それはpやputsがto_sを呼んでるだけなのでは…

334:デフォルトの名無しさん
08/02/03 18:06:11
誰がそんなことを望んでるの?

335:デフォルトの名無しさん
08/02/03 18:06:36
cgi.rb は多少手を入れた程度じゃどうしようもないし、
大きく手を入れるんだったらパッチをつけないと議論できないからなぁ。

336:デフォルトの名無しさん
08/02/03 18:07:34
木を見て森を見ず vs. 森を見て木を見ず

337:デフォルトの名無しさん
08/02/03 18:08:01
>>332
どうしてもやるならStringIO#inspectも定義すべきだね

>>333
to_sはそういう風に使われるものだから下手に定義するなってことだろう

338:デフォルトの名無しさん
08/02/03 18:09:03
inspect定義しちゃいけないのかw

339:デフォルトの名無しさん
08/02/03 18:14:35
>>331
してほしくない人もいるってことだ。
お前は "foo" + 1 を勝手に "foo1" にして欲しい派?
もしそうならお前は今の Ruby に向いてない。

340:デフォルトの名無しさん
08/02/03 18:20:14
ところで、cgi.rbがらみでStringIO#to_sを主張するやつは
なぜTempfile#to_sの方は主張しないの?

341:デフォルトの名無しさん
08/02/03 18:25:24
「勝手に型変換」はto_strじゃないのか

342:202
08/02/03 18:38:19
>340
リファレンス見ると
StringIO: IO と同じインタフェースを持った文字列クラスです。
  --> 本質は文字列クラス
IO: IO クラスは基本的な入出力機能を実装します。
  --> 本当は文字列関係ありません。(なぜかIO#readで文字列を吐き出せるけど)
だけど?

まあ、おいらとしてはcgiクソという結論なんであんまり興味なくなったというのが本音。

343:202
08/02/03 18:42:12
>333
pが呼んでいるのはinspectだと思う。
putsとprintはto_sだね。

344:デフォルトの名無しさん
08/02/03 19:02:17
>>342
>StringIO: IO と同じインタフェースを持った文字列クラスです。
これはマニュアルが間違いだな。
文字列クラスだとしたら、+だのgsubだの何もかもが足りない。
あと、英語ではちゃんと "Pseudo I/O on String object" になってる。

>IO: IO クラスは基本的な入出力機能を実装します。
>  --> 本当は文字列関係ありません。(なぜかIO#readで文字列を吐き出せるけど)
これはさすがにいちゃもんだ。IOは文字列の入出力機能を提供するものだよ。

345:デフォルトの名無しさん
08/02/03 20:07:01
>344
>これはマニュアルが間違いだな。
あいかわらずリファレンスは酷い、つうことか。

>これはさすがにいちゃもんだ。IOは文字列の入出力機能を提供するものだよ。
いや、IOて文字列よりももうちょっと抽象化の進んだものじゃね?
あくまでストリームなんだから、中身は何でも良いはずだよ。
文字列として成立しないバイナリも処理できる訳だし。
#Windowsだとbinmodeを設定する必要あるけど。

346:344
08/02/03 20:32:53
>>345
>あいかわらずリファレンスは酷い、つうことか。
まあでも、中を見ればStringIOがStringに似せようとしてないことくらい
普通はすぐわかるから、些細なことだとは思う。
仕様書じゃないんだから、厳密すぎる表現を使われても読みにくくなるしね。

>あくまでストリームなんだから、中身は何でも良いはずだよ。
入出力が文字列になるストリーム、という意味。
任意のオブジェクトを流せるストリームではないと。
文字列というか、Stringで表現できるもの、と言うべき?

347:デフォルトの名無しさん
08/02/03 21:37:37
ていうか、StringIOの基本コンセプトはシェルでいうところの

LIST=`ls`

だろ
出力を変数に格納する処理

348:デフォルトの名無しさん
08/02/03 22:08:31
StringIO#string= を StringIO#to_s= にしろとな。
キモすぎるぞそれは

349:162
08/02/03 22:18:18
cgi.rb がクソと言うやつは、どのような設計ならば素晴しいか具体的に述べてくれ。
(いや、煽りじゃなくてな。MLあたりで提案しないと状況は動かんとは思うが、それをやれとは言わん)
最近本格的にperlから乗り換え始めたんで、CGI.pm のクソさ加減から劇的に改善されたことしか理解できないのよ。

350:デフォルトの名無しさん
08/02/03 22:22:34
>348
誰もそんなことを言っていないぞよ

351:202
08/02/03 22:25:51
>349
Webrickを見たけど、あっちの方がずいぶんまともな設計じゃない?
使ってないから何ともいえんけど。
でも、あれも更新止まっちまってる感じなんだよなぁ。

352:デフォルトの名無しさん
08/02/03 22:49:43
>>349
URLリンク(www.google.com)

353:デフォルトの名無しさん
08/02/03 22:55:28
Webrick::CGIはちょっとしたCGIでよく使うけどいいよ。
WEBrick::HTTPResponse や WEBrick::HTTPRequest を見ないといけないうえに、
時々ソースまで見ないといけないのがネックだけれど。

354:デフォルトの名無しさん
08/02/03 22:56:31
ソースまで見ないといけないのはRuby全般に当てはまる

355:デフォルトの名無しさん
08/02/03 22:58:04
ネット関係のモジュールはソース見つつ作ると面白いことができるな

356:デフォルトの名無しさん
08/02/03 23:00:02
WEBrickは読みやすいんだけどそれがドキュメントが無い原因の一つなのかも…

357:デフォルトの名無しさん
08/02/03 23:14:45
>>355
初心者スレで見たんだが

require 'net/http'
uri = URI.parse('URLリンク(www.2ch.net)')
response = Net::HTTP.start(uri.host, uri.port){|http|
http.head(uri.path)
}
p response.code_type == Net::HTTPOK
p response.is_a?(Net::HTTPOK)

これ両方ともtrueなんだよな
Net::HTTPOK使うのなんて初めて見たぞ

358:デフォルトの名無しさん
08/02/03 23:19:22
def code_type
self.class
end
なんだな。


359:デフォルトの名無しさん
08/02/03 23:27:44
response.code == '200' という半マジックナンバーよりは見かけ健全だな
初心者スレでは response.code == 200 という比較をして動かないってハマってたが

360:デフォルトの名無しさん
08/02/03 23:33:43
>357
あと、typoをパーザーが見つけてくれるから、response.code == '200'より便利だよ。

361:デフォルトの名無しさん
08/02/04 12:34:05
>>357-358
それは、rdocにあるように、caseでチェックするため。

case response
when Net::HTTPSuccess     then response
when Net::HTTPRedirection then fetch(response['location'], limit - 1)
else
  response.error!
end


362:デフォルトの名無しさん
08/02/04 15:07:30
>>356
どんなドキュメントが欲しい?
リファレンスマニュアルとは別のものかな。

363:デフォルトの名無しさん
08/02/04 15:53:27
>>362
356じゃないが、チュートリアルというか、こういう時はこういう組み合わせでやれ、みたいな感じの物はほしいな。
るびまにproxy作る例があったけど、あんな感じで。

364:デフォルトの名無しさん
08/02/04 15:59:18
WEBrickでプロキシを作る例を読むのはもう飽きたお…

365:デフォルトの名無しさん
08/02/04 20:47:39
レシピブックじゃだめかね。

366:デフォルトの名無しさん
08/02/04 23:59:26
>>362
Webrickのクラスでセッション管理するドキュメント

367:デフォルトの名無しさん
08/02/05 01:29:45
>>366
URLリンク(www.ruby-lang.org)

368:デフォルトの名無しさん
08/02/05 01:34:36
Ramazeってよさそうだけど、あれ試してみた人いる?

369:デフォルトの名無しさん
08/02/05 01:52:18
>>368
最近できたフレームワークですね。

最小限の構成ながら、MVCで、
必須だろうセッション管理やキャッシュ機構もデフォでついてたり、
それでいて、HTTPDやテンプレートやORマッパがすげ替え可能だったり、
よさげではあるな・・・。

てか、OpenID対応とか時代を反映してますな。

Rails はでかいと思う人にはかなりよさげ。
ただ、Railsの次点は Merbだろうし、
使っている人はどれだけいるんだろうか

370:デフォルトの名無しさん
08/02/05 02:12:47
お前ら小さいのがいいならSinatraも忘れないでください。

Sinatra : Classy web-development dressed in a DSL
URLリンク(sinatra.rubyforge.org)

セッション管理がねえ?そんなのカンk(ry

371:デフォルトの名無しさん
08/02/05 03:07:56
だからセッション管理が無いなら標準添付のWebrickでいいんだってば

372:デフォルトの名無しさん
08/02/05 03:12:04
cgi.rb 再構成案

cat > cgi.rb
require 'webrick/cgi'

373:デフォルトの名無しさん
08/02/05 03:21:39
もう1.9.0を出しちゃった以上、インタフェイスレベルでの変更はやめたほうがいいんじゃないの。
デイブトーマスも「開発者は1.9でライブラリ書けよ」って言ってるぐらいだし。それよりはMLで
やってるみたいに実装を高速なものに変更するとかがいい。あるいはCgiAltをcgi2って名前で
取り込むとかね。

でもね、それよりはドキュメントをですね、もうちょっと埋め込むとかなんとかして
irbのhelpがpythonのhelp()並に情報がでるようにしてほしい。Pixaxe本の記述って
ソースコードにコピーしちゃだめなのかな。

374:デフォルトの名無しさん
08/02/05 06:23:10
1.9.0 はただの snapshot だし。

375:デフォルトの名無しさん
08/02/05 07:18:44
俺は StringList が欲しかったが
StringIO がそれなりに望みの動作に近かったので使ってる

俺みたいな奴には to_s が自然なのかもな
IO として使いたい奴には不自然かも知れん

376:デフォルトの名無しさん
08/02/05 08:32:16
>>367
URLリンク(doc.loveruby.net)

377:デフォルトの名無しさん
08/02/05 10:39:12
Rubyの公式MLでいい大人が2ちゃんねるの話題だすなよなー
ここは便所の落書きですぞ?暗黙的に提案すればいいのに。

378:デフォルトの名無しさん
08/02/05 13:51:14
最近の「2ch観」は各人でかなり異なるから、一概には言えないよ。
皆、自分のよく読むもの・よく書くことを中心に2chを捉えてるわけだけど、最近はその内容に凄く個人差があるし、
ブログの影響もあって、今や2ch以外も匿名・暴言の山で、2chだけがどうのって感じではなくなってるしね。

別の板も含めた俺の経験では、「2chに関係することを2chの外で口にすること」について
問答無用で「何てイタイんだ!」みたいに反応する奴は、大抵同じIDで草生やしまくってたりする。
あと、基本的に中傷とかの濃度の濃い場所の住人ほど、そういう傾向がある。
たぶんこれは「鏡にどんな人間が映ってますか?」的な話題なんだろう。

379:デフォルトの名無しさん
08/02/05 13:55:33
>>377-378
気にしなくていいですよ
俺みたいな世代は、2chもネットの掲示板の一つだから
便所の落書きでも、情報源には違いないものです

380:デフォルトの名無しさん
08/02/05 13:56:49
ああ、あと、>>378の後半は余計だと思うがwその辺が2chたる所以かw

381:デフォルトの名無しさん
08/02/05 22:36:07
そういやもう2chが特別な場所である感覚はないね。

382:デフォルトの名無しさん
08/02/05 23:36:27
2chが特別だったのはログとってなかった頃まで

383:デフォルトの名無しさん
08/02/06 00:39:49
お前ら何年いるんだ。

384:デフォルトの名無しさん
08/02/06 00:42:37
7年くらいかな?

385:デフォルトの名無しさん
08/02/06 02:28:44
4・5年くらいの人が今は一番多いんじゃね

386:デフォルトの名無しさん
08/02/06 02:58:54
>>367
WEBRick でのセッション管理はどこに書いてあるんだ?

387:デフォルトの名無しさん
08/02/06 10:27:35
>>386
「自分で書き加えろ」という遠回しなメッセージではないだろうか

388:デフォルトの名無しさん
08/02/06 10:39:57
そんなセッションな~

という駄洒落を思いついた

389:デフォルトの名無しさん
08/02/06 10:40:39
shingichuu

390:デフォルトの名無しさん
08/02/06 12:16:16
【判決】
Segmentation fault

391:デフォルトの名無しさん
08/02/06 13:08:43
その判決はなかったわ

392:デフォルトの名無しさん
08/02/06 16:10:18
マルチプラットフォームで輝き始める“Ruby”
URLリンク(www.itmedia.co.jp)

393:デフォルトの名無しさん
08/02/06 17:44:23
輝き始めるとは失礼だな。
今まで輝いてなかったみたいじゃないか。

394:デフォルトの名無しさん
08/02/06 17:53:49
輝くどころか、各方言で骨肉の争いが

395:デフォルトの名無しさん
08/02/06 19:36:42
輝き始めていると表現できるのは確かだが、
同じような紅い輝きがあちこちにあって統一性が感じられないのはなんでだぜ

396:デフォルトの名無しさん
08/02/06 19:43:32
燃え尽きる直前の煌き

397:デフォルトの名無しさん
08/02/06 23:43:14
def [(key)]=(value); end
みたいに書きたい!
def []=(value, *keys); end
でもいいけど

398:デフォルトの名無しさん
08/02/07 00:01:40
1.9ではrubyが無いとbuildできないのか?
baserubyを指定しろと怒られる。

399:デフォルトの名無しさん
08/02/07 00:26:30
>398
insns.defとかの処理でBASERUBYを使ってるね。
他のマシンで処理しておいて、それを持ってくるって方法もあるけど、
1.8も入れておいた方が無難だと思う。
なお、tarballだと処理したものが入れてあるんじゃないかな。

400:デフォルトの名無しさん
08/02/07 03:17:46
>>387
>「自分で書き加えろ」という遠回しなメッセージではないだろうか
WEBrickにsession機能がないのに、ドキュメント書けるわけないだろアホ

401:デフォルトの名無しさん
08/02/07 03:33:06
そりゃ>>376が何も言わずにリンク先しめすもんだから、勘違いするじゃない
>>400みたいに言ってくれないと

402:デフォルトの名無しさん
08/02/07 09:43:14
いやWEBrick自体にセッション管理機能がないのは周知の上で、
自前でかっこよくセッション機能を組み入れる解説が欲しいのでは
実際問題としてWEBrickの目ぼしい弱点ってそこだけだし

403:デフォルトの名無しさん
08/02/07 09:52:18
WEBrickのプロクシサーバって、アクセス先のデータを一回全部読み込んでるみたいだが、
ちょっとずつ読み込みながら返してくるようにしてほしい。

404:デフォルトの名無しさん
08/02/07 10:03:16
それはあまりRubyっぽい動作ではないな
RubyのIO系はメモリに一気に読み込んでから配列にしたりして1単位ずつ返したりするのが主流

Proxyっぽい動作ではないけどな

405:デフォルトの名無しさん
08/02/07 10:28:21
>>403
ああ、完全に同意。あの動作はクソすぎる。

>>404
メモリに一気に読み込むのを主流だとか馬鹿なことをいうのはやめてくれ。
IO#eachという一番わかりやすいメソッドを見てみろよ。

406:デフォルトの名無しさん
08/02/07 12:35:30
Net::HTTPResponse#read_body{|str| ...} は全部読み込んでから区切ってた気がする

407:デフォルトの名無しさん
08/02/07 23:32:50
煽りじゃなくて、Scheme(or Lisp)に有って、Rubyに無い機能ってある?
あるとしたら、その機能って必要?他の機能で代用可能? いろいろ細かいことも教えて。

(初心者スレから誘導されました。)

408:デフォルトの名無しさん
08/02/07 23:38:23
>>407
マクロ

409:デフォルトの名無しさん
08/02/07 23:42:40
マクロはRubyの他の機能で代用可能ではないの?
あった方が便利?

410:デフォルトの名無しさん
08/02/07 23:46:19
>>409
何したいのか判らんけど代用可能かどうかの判断つかないんなら聞いても意味無くない?

411:デフォルトの名無しさん
08/02/07 23:47:38
代用可能ではないと判断した。けど、詳しい人なら代用方法を知っているかもしれない。だから聞いている。

412:デフォルトの名無しさん
08/02/08 00:22:18
>>402
CGI::Session の移植ならあね。
URLリンク(moonrock.jp)

413:デフォルトの名無しさん
08/02/08 00:23:15
代用というからには用途による。
あらゆる用途で同じように使えるなら、それはその機能そのものだ。

414:デフォルトの名無しさん
08/02/08 00:25:30
こういう用途には代用になる、と言えばいい。
すべてを網羅しなくても思いつくだけ述べてくれて構わない。

415:デフォルトの名無しさん
08/02/08 00:30:04
Schemeのマクロは文法拡張ができる。
Rubyでは文法拡張する方法はない。

でいいの?

416:デフォルトの名無しさん
08/02/08 00:38:31
>>415
それは、例えば新しいif文を定義して、標準のif文と同じように使うことができるようになる、ということ?
それが、Schemeでは出来て、Rubyでは出来ないと。正しい?

417:デフォルトの名無しさん
08/02/08 00:40:22
eval系列の命令でマクロっぽいことはできる。

attr_reader, attr_accessorもそれ

418:デフォルトの名無しさん
08/02/08 00:43:27
>>416
可能だが、どこまで自然になればOKなのかは使う人によるからな・・・

Rubyでも DSLは作られるが、
例えば、brainfu*k を再現するのは無理だろう

419:デフォルトの名無しさん
08/02/08 00:50:38
lispってlispのソース上でbrainfu*kを再現できるの?()は出てこないの?
インタプリタを作るならlispでもRubyでもできるよね。それとは違うの?

420:デフォルトの名無しさん
08/02/08 00:52:42
>>416
普通の関数なら関数を呼び出す時点で引数の評価は完了しているが、
マクロなら引数を評価するタイミングをマクロ側で制御できる。

ruby でオレオレif を作るなら、if/else の本体を Proc で包んで渡すしかない。
じゃないと オレオレif 関数を読んだ時点で if/else の本体が実行さてしまうから。
それか Proc のシンタックスシュガーであるブロックをうまく使ってごまかすか。


このサスペンダーの人の記事も参考に。
URLリンク(blog.livedoor.jp)

421:デフォルトの名無しさん
08/02/08 00:52:43
>>418
my_if(proc { cond }, proc { then_clause }, proc { else_clause })
は「文法拡張した」とはさすがに言えないだろう

422:デフォルトの名無しさん
08/02/08 03:48:53
>>421
いや、だから人によるってば

>>419
インタプリンタつくって、文字列を実行してという話ではなくね。

お得意のマクロとやらでできるんじゃないのかな? > Lisp
DSLをよく作るとか聞いた
いや、おれはLisp詳しくないのだが・・・

ちなみに、Io-language だとかなりそのものに近ずけることができる。マクロなしに

423:デフォルトの名無しさん
08/02/08 09:08:56
>>422
人による、って程度じゃないだろ。
>>421が受け入れられるなら、cond、then_clause、else_clauseを文字列にして
パーサ動かしてもいいってことか。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch