Rubyについて Part 5

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

== 前スレ
* ((<Ruby について Part 4|URL:http://pc2.2ch.net/test/read.cgi/tech/1056944114/>))

== 過去スレ
* ((<Ruby について Part 3|URL:http://pc2.2ch.net/test/read.cgi/tech/1042004759/>))
* ((<Rubyについて Part 2|URL:http://pc3.2ch.net/tech/kako/1028/10289/1028906179.html>))
* ((<Rubyについて|URL:http://pc3.2ch.net/tech/kako/1012/10120/1012096319.html>))

= 関連リンク
* ((<Ruby Home Page|URL:http://www.ruby-lang.org/ja/>))
* ((<Matzにっき|URL:http://www.rubyist.net/~matz/>))
* ((<"Ruby Weekly News @ Ruby Garden"|URL:http://www.rubygarden.org/rurl/html/>))
* ((<"<rubyXML/>"|URL:http://www.rubyxml.com/>))


ぐちゃぐちゃになったので貼りなおし

Ruby について Part 4
http://pc2.2ch.net/test/read.cgi/tech/1056944114/
Ruby について Part 3
http://pc2.2ch.net/test/read.cgi/tech/1042004759/
Rubyについて Part 2
http://pc3.2ch.net/tech/kako/1028/10289/1028906179.html
Rubyについて
http://pc3.2ch.net/tech/kako/1012/10120/1012096319.html

Ruby Home Page
http://www.ruby-lang.org/ja/
Matzにっき
http://www.rubyist.net/~matz/
Ruby Weekly News @ Ruby Garden
http://www.rubygarden.org/rurl/html/
<rubyXML/>
http://www.rubyxml.com/
><rubyXML/>
>http://www.rubyxml.com/
これなに?
Matzはなぜかたくなにコンパイルのサポートを拒否するのですか?
のーみそがかたいからです。
>>4
どのMLの話ですか?
Rubyはコンパイルしますが何か?
のーみそこねこねコンパイル
>>8
もうありません……
10デフォルトの名無しさん:03/09/10 15:56
dbi の実行経過は each を使って

res = dbi.execute("select * from foo")

res.each { |r|
p r['a'],r['b']
}

なんて具合に次々と読み込みますが、
この each のブロックに渡す値を、変換したいときゃ

class Wrap
include Enumeration
def initialize(res)
@res = res
end
def each
@res.each { |r|
yield r
}
end
end

なんてクラスをわざわざかかにゃいかんのですか? もっと
ラクに書ける方法はないんでしょーか
http://ftp.ruby-lang.org/pub/ruby/binaries/mingw/1.8/ext/

には Ruby/GD の拡張ライブラリがありますがWindowsのGDの
バイナリが無いのに公開する意味があるのでしょーか
> 11
 わたなべさんの拡張ライブラリのバイナリはライブラリをスタティックリンク
 してると思うが
 # 試してないけどね :)
>>11
ケチつける前に試せ。
>>10
res.extend(Enumerable)
ネタはないのか?
他スレでも書いたけど、Date - Date で分母が1でない Rational が返ってくることはあるの?
17デフォルトの名無しさん:03/09/14 18:48
Perlチックにお気軽にmatchとかsubとかすると変数がnilでエラーでたりして面倒なんですけど
そんなことないですか?
自分は"#{hoge}".sub()とかしてごまかしてるんですが・・・・
もれはあんまりそういうシチュエーションに出くわさないけど、
代入する時に
 hoge = foo || ''
とかやるのかなあ。
>>17
だせ〜
もれはこうかなあ。

begin
hoge.sub(/hoge/, '')
rescue NameError, NoMethodError
end


うそ。

def hoge.method_missing(name, *args)
# empty
end

hoge.sub(...)
tar boll で入れたrubyのアンインストールってどうやるのですか。
rm -rf `ruby -ne'~/\Aprefix = (.*)/ and puts $1' ruby-1.8.0/Makefile`
うわーん、nextっていう変数を使おうとしてparse errorになったよーん。
欝だ…

今書いているスクリプトの中で、変数名が prev, curr(ent) ときて、次は
当然のようにnext を使ってしまった。
他にどんな名前をつかえばいいかわからん。

なぜcontinueじゃなくてnextなんだー!
こんなときはPHPがうらやましい…
PHP使えばいいじゃん。それだけの為に。
mswin32版で動作するlogrotateかexicyclogのRubyの実装ってないですか?
漏れは beg, end で・・・

↓ Ruby の予約語でハマった人の数
>>24
self.next
>>24
nxt

continue 程度で PHP なんぞを使いたいとはたいそうおめでたいですね。
>>24
Perlならnextはもちろん、if, whileといった関数/変数も使えるよ
どーだっていいな。
俺はalias使おうとしてalias_にした
klassなんていうくらいだからariasというのはどうか
インスタンス変数なら使えるんじゃなかったっけ?
>>23
なんで make uninstall がないんですか。
インストールしたら簡単に消させないというmatzの陰毛
パイパンになるのがいやだからです
>>34
逆に make uninstall があるソフトウェアが世の中にどれほどあるのかと小一時間(ry


・・・漏れ、釣られた?
Automake 使うプロジェクトなら、ふつうある。 > make uninstall
Ruby は Automake 使ってない(ライセンスの関係で)。
>>28
なんだ、メソッド名にはnextつかえるやん。
しらんかった。
とりあえず変数名は nxt でもいいや。
>>38
nxt かよ!?

って突っ込む香具師はいないのか?
>>38 より >>29 につっこんであげてくだちい。
nxt
http://nxt.sourceforge.jp/japanese.html
相対性理論の否定の人のトンデモソフト
$ ruby -ve 'p File.split("/foo/bar/baz/")'
ruby 1.6.7 (2002-03-19) [i386-linux]
["/foo/bar/baz", ""]

$ ruby -ve 'p File.split("/foo/bar/baz/")'
ruby 1.8.0 (2003-08-29) [i586-linux]
["/foo/bar", "baz"]

いつのまにか挙動変わってるし。
1.8.0変更点のページにも載ってないし。
File.dirname のからみでしょうか

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/19548
ruby に Python のインタープリターのようなものはありませんか?
>>44
irb のようなもの?
それとも Pythonスクリプトを走らせたいの?
ruby-python ってのはあるが。
>>45
コマンドラインからインタラクティブに実行出来るという意味です。

シェルから
$ ruby -e 'cmd ...'
result
ではなく、、
>>> cmd ...
result
というのを出来ないかと。

irb は知らないので後で見てみます。
>>46
それなら irb
ちなみに .irbrc に
require "irb/completion"
と書いておくと便利。
irbrcとかbashrcのrcってどういう意味?
run command
resource の略かと思ってた・・・
ちなみに、『ハッカーズ大辞典』の rc file の項には
> もともとは 1955年頃の CTSS システムの 'runcom files' から、
> 起動スクリプト /etc/rc を経て
と書いてある。
ラン・コマンドとマンコ・ランドは似ている。
54デフォルトの名無しさん:03/09/17 08:11
例外をrescueしたいのですが、
例外が起こったときにどの例外かってのはどうやって分かりますか?
>>54
begin
 <例外が発生する操作>
rescue Errno::NameError, Errno::SyntaxError
 <例外処理>
end

rescueに引っ掛けたいエラー種別を書く。
みたいな事じゃなくて?
>>54

例外情報は $! に保存される、とかいう話かな?

begin
a
rescue
p $!.class
end

#=> NameError
5754:03/09/17 10:57
ありがとうございます。
例外情報が$!にはいっているのは分かりました。

もうすこし教えていただきたいのですが、通信関係の例外でループが終了しないように
array.each{
 begin
  Net::HTTP.start(host,port){|http|
   処理
  }
 rescue Exception
  例外処理
 end
}
のようなプログラムを書きました。
で、Ctrl-Cで終了したときに終了時の処理をするように
trap(2){終了処理; exit;}
としました。
普通に実行する分には問題ないのですが、
% hoge.rb | piyo
のように標準出力をパイプに流すとError::EPIPEが発生して終了処理が行われず、
ループが続行してしまいます。
適切な例外だけを補足するようにrescueに必要な例外を個別に全て書かなけれ
ばいけないのでしょうか?
こんなんできたら嬉しいのだが・・・

TargetExceptions = [Error1, Error2, Error3, Error4]

begin
rescue TargetExceptions => e
end
>>57
1つのbeginに複数のrescue節を必要に応じて書くとかじゃ足りない?
60デフォルトの名無しさん:03/09/17 18:16
erubyて人気あるのですか?
>>58
rescue *TargetExceptions => e
しまった、できなかった。whenと間違えた。
relative_path '/foo/bar/baz', '/foo/hee'
==> '../bar/baz'
みたいな関数って用意されてないの?
64デフォルトの名無しさん:03/09/18 20:14
win32でrubyを組み込んで、色んなスレッドからrubyを使う事って出来る?
なんか変な動きするんだけど・・・いちお排他制御はしてるんだけど。
>>63
いかにも標準では備わってなさそーな関数だな。
自作おつゆ。
require 'uri' して + とか - とか使え。
Fileあたりにあったような気がしたけど気のせいだったか
>>64
Ruby 自体がスレッドセーフじゃないので(ry
RDって廃れちゃったんですか?
module M1
def foo
"OK"
end
end

module M2
def foo
super if defined? super
end
end

class C
include M1
include M2
end

p C.new.foo #=> "OK" ではなく nil

defined? super が nil になって M1#foo が呼ばれないことに気づかず、
2時間ほどハマらさせて頂きました。
この大驚失色の仕様になっている理由はなんでしょうか?
ぽか〜ん
override と overwrite は違います。
驚きなのは>>70の思考過程の方だな。
>>70
逆に defined? super が nil にならないほうが驚きのような
バグでしょ?報告汁
え、バグなの?
>>70で、
M2でsuperを呼ぶとM1の同名メソッドが呼ばれる

ものなんですか?普通の言語では。
1.6 なら動く
% ruby -ve '
module M1
def foo
"ok"
end
end
module M2
def foo
super if defined? super
end
end
class C
include M1
include M2
end
p C.new.foo'
ruby 1.6.7 (2002-03-19) [i386-linux]
"ok"
どっちが正しいんだ?
常識で考えれば1.6が間違ってる様に思えるが。
それにしても、バージョンアップで基本的な意味まで変えないで欲しいものだな。
>>72
違うから、つまり何でしょう?
C に M1 M2 を順に include したことで、M1 の foo は
M2 の foo に上書きされた。だから foo は一つしか
存在しないと言いたかったのでしょうか。

>>74
その理由は?

>>80
その常識とは?
defined? superが「super が呼べるなら真を返す」ならsuperは呼べるから1.8はバグ
Rubyがうんこに見えてきた
$ ruby -v
ruby 1.8.0 (2003-08-04) [i686-linux]

$ ruby -e 'def hoge; end; p defined?(hoge)'
"method"

$ ruby -e 'def super; end; p defined?(super)'
nil
1.8のバグでFA?
8664:03/09/19 15:31
とりあえず自己解決。
ruby のみのスレッドを起動しておいて、各種イベントにより動かす・・・
って方法にしました。
rb_init()したスレッドならちゃんと動くのかな?ちゃんと確認してないっす。
RHG の読書会、参加してみようかな、、、
>>72 >>74 >>80
匿名掲示板とはいえ、自分の発言にぐらい
責任持ってもいいんじゃねーか?
>>87
参加しなさい。読書会もその後の宴会も(の方がさらに?)楽しいぞ。
9072:03/09/19 20:27
>>88(=81?)
責任とは? ……まあいいや。

1.8 だと「(1)super が使えるのに (2)defined?(super) は nil になる」
のはバグだと思う。(3)マニュアルのバグ、ってことはないよな。

でオレは、(1)がおかしいと考える。その理由は以下の通り。
* C.new.foo が呼んでるメソッドは M2#foo
* M2#foo は M1#foo を override していない。
 (M1 は M2 のスーパークラスではないし、
  M2 が M1 を include してるわけでもない。)
* それなのに M2#foo で super して M1#foo が呼ばれるのは不自然

[参考]
http://www.ruby-lang.org/ja/man-1.6/index.cgi?cmd=view;name=%A5%E1%A5%BD%A5%C3%A5%C9%B8%C6%A4%D3%BD%D0%A4%B7#super
> super は現在のメソッドがオーバーライドしているメソッドを呼び出します。

ttp://www.ruby-lang.org/ja/man-1.6/index.cgi?cmd=view;name=Ruby%CD%D1%B8%EC%BD%B8;em=%A5%AA%A1%BC%A5%D0%A1%BC%A5%E9%A5%A4%A5%C9#Override
> オーバーライド
> Override
>  再定義のこと。スーパークラスまたはincludeしているモジュールで定義
>  されているメソッドと同じ名前のメソッドを定義すること。オーバーライ
>  ドした上位のメソッドは superを使って呼び出すことができる。

91デフォルトの名無しさん:03/09/19 20:49
>>81
> C に M1 M2 を順に include したことで、M1 の foo は
> M2 の foo に上書きされた。だから foo は一つしか存在しない

そういう理屈でもないみたい。

module M1
  def foo
    "OK"
  end
end

module M2
  def foo
    "NO"
  end
end

92デフォルトの名無しさん:03/09/19 20:50
↑のつづき

module M3
  def foo
    super if defined? super
  end
end

class C
  include M1
  include M2
  include M3
end

puts C.new.foo

ruby 1.8.0 (2003-06-23) [i386-mswin32]
=> NO

どうなってんだろう

てゆっかmswin32版では

module M1
def foo
"OK"
end
end

module M2
def foo
super if defined? super
end
end

class C
include M1
include M2
end

p C.new.foo

これでも"OK"だった。真剣にバグなんじゃ?
9491:03/09/19 21:06
ごめん、俺のpreview版だった。

ちゃんとnilになるや。>>81の理屈が正しい。
今から dev に投げます。
話を整理すると


・if 修飾子
式 if 式
右辺の条件が成立する時に、左辺の式を評価してその結果を返します。条件が成立しなければ nil を返します。

・defined? super
super の実行が可能なら真(文字列 "super")を返します。

・include(module ... )
指定されたモジュールの性質(メソッドや定数、クラス変数)を追加します。 self を返します。 include は多重継承の代わりに用いられる Mix-in を実現するために使われます。

・module
http://www.ruby-lang.org/ja/man-1.6/index.cgi?cmd=view;name=Module
93が本当だとするとバグだな
>>94=91
81に理屈は書いてない罠。
疑問しか返せ(さ)ない香具師は不要と思った。
D:\apps\rubywin\bin>ruby -v d:\apps\rubywin\bin\temp.rb
ruby 1.8.0 (2003-04-04) [i386-mswin32]
"OK"

% ruby -v /d/apps/rubywin/bin/temp.rb
ruby 1.8.0 (2003-08-04) [i386-cygwin]
nil
>>98
もちつけ
81=70
だろ
と思ったらReleaseでは変わってた

D:\apps\rubywin\bin>ruby -v temp.rb
ruby 1.8.0 (2003-08-04) [i386-mswin32]
nil
ヤレヤレ
10391:03/09/19 22:07
>>102
すまねぇ・・・

ただ、たしかに1.8リリース版の考えの方がすっきりしててわかりやすいな。
81は質問でばっか返してるけど、

> M1 の foo はM2 の foo に上書きされた。

おれに重要な示唆をくれたぞ。
Mixinの理解が深まった。
>>90
そもそも override と overwrite は違うから >>81 の結果に
なると言いたかったんじゃないのか?

>>90の内容は論点がスリ変わって個人的に ruby の仕様に
不満があるというだけになっている。
〜の理由から >>81 の結果になるというように書かないと話が噛み合わないよ。
105104:03/09/19 22:14
↑「>>81の結果」→「>>70の結果」に訂正。
>>70がnilなのは、そうだろうと思ってたのだが

% ruby -v -e '
module M1; def foo; "NO"; end; end
module M2; def foo; super; end; end
class C; include M1; include M2; end
p C.new.foo'
ruby 1.8.0 (2003-08-04) [i386-cygwin]
"NO"

これを見て、またわけがわからなくなった。
>>103
「M1 の foo は M2 の foo に上書きされる」のが、
「1.8リリース版の考え」だと理解してるのだとすると、それは違う。
基本的なことだけど、>>70 の super if defined? super の部分を
super だけにすれば M1#foo が呼べるんだから。

ついでに言うと、上書きのように見せたかったら
super を呼ばなければいいだけでしょう。
ひょっとしてruby、もうだめですか?
>107
つまり1.6と1.8でdefined? の動きが変わったということかな。
11072:03/09/19 22:53
>>104

本当は、確めもせず「overwrite だから super は使えねーよ」と思って
>>72のレスしたんだ・・・

_| ̄|○ スンマセン >>70

>>107
> ついでに言うと、上書きのように見せたかったら
> super を呼ばなければいいだけでしょう。

そうも行かないかも。class C < SuperClass だったら、
M2#foo の super で SuperClass#foo を呼びたい、なんて。
このへんの話は原先生の本(「Rubyプログラミング入門」)に詳しく書いてあるよ。
「第5章 クラスとモジュール」参照。
Ruby先生に掛かると、こんな微妙なバグ(かどうかもわからない仕様)で
時間を潰すことになるんだね。
驚き最小限は今何処
使用する人間の馬鹿さに驚くなぁ・・・
>>110
107へのレスの意味がちっとも分からないので、
もう少し分かるように書いてくれないか。
説明下手は無能の証拠
ruby -e 'p(defined?(nil)) ; def nil() end ; p(defined?(nil))'
ruby -e 'p(defined?(self)) ; def self() end ; p(defined?(self))'
ruby -e 'p(defined?(super)) ; def super() end ; p(defined?(super))'
何が言いたいのかわからん
rubydotnet の登場はニュース?
私はwindowsの世界にはうといのだけど、
ruby-talk での反応が冷めてるよう見える。
arton さんのとは違うん?
.NET 自体がもう全然ホットじゃないからねえ。
rubyスクリプトから、xtermやDOSプロンプトの画面サイズ(行数とカラム数)を
得るにはどうしたらいい?
>>123
ありがとう。でもDOSプロンプトじゃ使えなさそうだね。

もうひとつ、コンソールをクリアするにはどうしたらいい?
今は system 'clear' なんてしてるけど、いまいちだよね。
これもioctlでできるのかな?
>>124
^[c を出力するってのはどうよ?
"^[" は C-V ESC な
>>125
NT-consoleだと、EscSeqが使えないと思った。
djgpp版なら、cmd.exe内からcommand.comが立ち上がるから使えるけど。
127デフォルトの名無しさん:03/09/23 07:59
getoptlongで複数の引数はとれますか。
test.rb -t 100 test
とやっても
options[:txt2ipa]には100だけ入ります。
-------------------------------------------------------
require 'getoptlong'
parser = GetoptLong.new
parser.set_options(
['--test', '-t', GetoptLong::REQUIRED_ARGUMENT]
)
options = {}
parser.each_option { |name, argument|
options[name.sub(/^--/, '').intern] = argument
}
p options[:test] #=> "100"
Unixの流儀では、それは test.rb (-t 100) test の意味だ。
test -t 100 -t test
とかにすべし。嫌なら自分でARGVを弄る。
>>128
> Unixの流儀では、

勝手に決めんな!
>>129
POSIXって知ってる?
>>130
Unixの流儀とPOSIXを同じにすんなボケ!
POSIX
Portable Operating System Interface for UNIX

流儀

((in))the style ((of)); ((after)) the fashion ((of)).
・昔〜の人 an old-fashioned person.
133デフォルトの名無しさん:03/09/24 17:19
RubyをXPやLinux上で使ってみたいのだが、誰かRubyでこんな便利で面白いことができるってことを教えてくれないか?
Rubyがいい言語なのは分かるが、いまいち、その便利な使い道ってのが具体的に想像できん。
それと、Javaなんかを使う場合との違いというか、メリットってのは何だろう。
Javaの経験は少しあるが、Rubyは初心者なんで、誰か教えてくれよ。
134デフォルトの名無しさん:03/09/24 18:04
>>133

Javaと違うのは、冗長な記述なしにスッキリと書けるとこかしら
>>133
一度 RAA を眺めてみると良いかもね。
http://raa.ruby-lang.org/
>>133
煽りでも何でもなく、その程度の興味しか持てないのなら
無理に触る事もないんじゃないかな。

何に便利かっていう接し方は当然アリだけど、
実用度の判断を保留して面白そうだから触ってみよ、っていう接し方もあるし。
面白みを感じないのなら、その位の縁しかない。

>>134 の言う通り、思考の道具としてちょこっと何かを作るのに
ベターな解ではあると思ってる、俺は。
>>133
TCPSocket とか TCPServer 使って Thread で TCP/IP 使った何かを実装してみるのはどう?
俺は複数クライアントのチャットを,クライアント40行,サーバー70行くらいでできたよ
138デフォルトの名無しさん:03/09/25 18:13
>>136 に付け加えるならば

Rubyのライブラリ構成やソースを読めるようになるだけでも、
なかなかよいと思うよ。

しがらみの無い個人が作ってるだけあって、技術的には最先端だと思う。
139デフォルトの名無しさん:03/09/25 19:03
まぁしかし、将棋や囲碁みたいなもんで、それ自体を楽しむように、
プログラミングを楽しむ人が Ruby を使う。

仕事でしかプログラミングしない職業プログラマに Ruby
を使う香具師は、割と少ない。
140デフォルトの名無しさん:03/09/25 19:18
技術的に最先端なんだ!
すごいね!
> まぁしかし、将棋や囲碁みたいなもんで、それ自体を楽しむように、
> プログラミングを楽しむ人が Ruby を使う。
文章おかしいです。

まぁしかし、将棋や囲碁みたいなもんで、それ自体を楽しむように、
Rubyを楽しむ人が Ruby を使う。

ですね。
>>138
寝言は寝てから言え
K&Rスタイルのスパゲッティコードの何が最先端だ?
>>142 自分で、同等のもの作ってから言え
Ruby のソースは最高に読みやすいと思うのだが? (K&Rは単にMatzの趣味なんだし)
オブジェクト指向なの?それとも普通に構造化プログラミング?
>>144
読みやすい方だとは思うが「最高」ではないな
>>139
仕事じゃ怖くて使えないから
仕事でしかプログラミングしないなら
それでいいんじゃね
wxRubyがやっとcygwinで動いたので記念かきこ。寝る
>>144,146
確かに読みやすいが、最高ではないな。
まあ、perlのソースと比べれば一億倍くらい読みやすいのは事実だ。
pythonと比べてもrubyのが読みやすいと思った。
ary1 : 配列として、
ary1[1] に 1 をいれて、ary1の 0, 2, 3 番目には
配列 ary2 の要素をコピーしたいとき、
どうすればさくっと綺麗に書けるかな。
ary1 = ary2[0..2]
ary1[1,0]=[1]
152150:03/09/27 21:27
なるほど、挿入する訳か。
気づかなかった。
ありがとう。
MD5のハッシュ値抜き出すのってどうやるの?
\s(................)\sだと関係なの間でマッチしちゃうし。
>>153
質問は日本語でお願いします。
I have a dog!
So death car.
>>153
> MD5のハッシュ値抜き出すのってどうやるの?

日本語の部分だけ

require 'digest/md5'
p Digest::MD5.new(File.read("/tmp/empty")).hexdigest

"d41d8cd98f00b204e9800998ecf8427e"

そーいや、こういうサンプルがマニュアルにないから使い方がわかりにくいですね。

> \s(................)\sだと関係なの間でマッチしちゃうし。

こういうことかも知れない・・・

% md5sum /tmp/empty | ruby -ne 'p split(/\s/)[0]'

"d41d8cd98f00b204e9800998ecf8427e"
158デフォルトの名無しさん:03/09/28 15:29
>>147

Ruby って、ビジネスで使おうと思えば使えるものがたくさんあるのに、
できない、やらないっていうのは、結局のところ、やろうとするヒトがいない
からってことでしょうかね。

踏みとどまらせているのは何なのだろう。
>>158
あたりまえといえばあたりまえだけど、
技術の選択基準が枯れてて評価が固まっているかどうかってのはある。
プログラミングだけでなく教育コストや受注の際の優位性とか考えるとね。
あと、品質監査するところが知らない言語は使えなかったりする。
通り一遍なだけでザルみたいな品質監査の癖にね(うちだけかな)。
作者や主な開発陣が日本人だから、ヘンに身近に感じるのも、
業務に使うにはマイナス要因になってそう。

日記に、たまにピントのズレた事を書いてあったりすると
(おいおい、こんなヤツが開発してるモノを使って大丈夫かよ!?)
なんて思ったり。
>>158
MatzのおっさんがRubyを使って金儲けしようとしないから。
>>147

典型的なのが、rwiki, webrick, div あたりで、あそこらへんなんかは最早
初心者無用。チュートリアルとかドキュメント一切なし。
divにはどう動かすかなんて何処にも書いてないし。仕組みは経験豊富な
プログラマだけウェルカム。

そこらへんの意図としては、理想を追いかけるために仕様変更は永久に
避けられない。よって、ドキュメントなんざ書くだけ無駄、自己責任でよろしく。
てなもんだ。
163デフォルトの名無しさん:03/09/28 23:04
>>162

だからといってtomcatだのejbだのdcomだの他じゃどうなのかといえば、
同じように難しいんだから、それなら分かりやすいソースがあるだけ
divがいいんじゃ。
>>162
経験がないと仕組みが分かりにくいのはしょうがないんじゃないの?
165デフォルトの名無しさん:03/09/29 04:37
soap4r 1.5.0のsoap/rpc/cgistub.rbの98行目はバグでしょうか?

すみません。こういう報告とか慣れてないんで・・・
divは絵で仕組みを確認しながらソースを読めばわかりやすいYO
仕事の使ってるもん
ひとりでできるもん
>>165
もう知ってるかもしれんが念のため。
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/38444
Matzの戦略としては、まずは(ほっとけば勝手に広まるくらいに)いいもの作って、
勝手に広まる状況を作ってから原作者の利を活かした事業(わからんが、コード
評価サービスとか、コンサルティング)をやろうってことなんじゃなかろうか。
>>170
まつもと氏がにコンサルは無理そう?

172171:03/09/29 15:59
間違えた。

まつもと氏にコンサルは無理そう。
コンサル→うさんくさいと連想してしまう漏れは負け組ですか?
「サル」という語彙が良くないのだろうか。
Ruby VMってもうできたんだっけ?
CVSの最新をcygwinでコンパイルしてみたら
curses のビルドの直後で止まるのは俺だけ?
>>174

「コン」についてはどうなんだよ
>>177
狐も、狡猾な動物というイメージがあって良くない。
二つのキーに対して、一つの値を対応さしたハッシュを作りたいのだけど
hash[ [a, b] ] = c みたいに配列使うのって良くないかな?
コンサル → 金猿
181金猿:03/09/30 08:32
>>179
条件しだいではご相談に乗りますよ
>>179
可変オブジェクトをキーにするのはよろしくない
matzは身の丈にあったことしかやらないだろう。まあ身の丈が伸びないとは限らないわけだが
>>179
既にそういうのありそうな悪寒だけど、こんなのどう?
# def []=(*key, val); end ってしようとしたんだけどダメなのね。

class Hoge
def initialize
@hash = {}
end
def []=(key1, key2, val)
@hash[key1] = {} unless @hash[key1]
@hash[key1][key2] = val
end
def [](key1, key2)
(@hash[key1]) ? @hash[key1][key2] : nil
end
end

a = Hoge::new
p a[1, 2] = "FOO"
p a[1, 2]
p a[1, 3]
p a[2, 3]


>>184
> # def []=(*key, val); end ってしようとしたんだけどダメなのね。

やりたいのはこういうこと?
class Hoge
  def initialize
    @hash = {}
  end
  def []=(*keys)
    val = keys.pop
    raise ArgumentError, "wrong number of arguments(0 for 1)" if keys.empty?
    ekey = keys.pop
    keys.inject(@hash) {|hash, key| hash[key] ||= {}}[ekey] = val
  end
  def [](*keys)
    keys.inject(@hash) {|hash, key| hash.fetch(key) {return}}
  end
end
金猿の商売あがったり
187デフォルトの名無しさん:03/09/30 20:56
教えてください。
入力された文字列を時間として扱い、現在時刻との大小を比べたくて

Webページなどを参考に以下のものを書いてみたのですが、
ここからどうしてよいかわかりません。時刻型の配列になっているようですが、
当然単純に引き算ではダメなようで・・ここから年月日に分解して数値化し結合して
大小を比べるのなどの作業が必要でしょうか?

# 入力文字列
input_date = "2003-09-30" # 日付
input_hour = "5" # 時
input_minute = "30" # 分

# 比較
input_date_str = input_date + " " + input_hour. + ":" + input_minute
idate = ParseDate.parsedate(input_date_str)
ndate = ParseDate.parsedate((Time.now.utc + 32400).strftime "%Y-%m-%d %X")

どうかよろしくお願いします。もっと簡単な方法がありましたら教えて
いただけるとありがたいです。
>>185
おお、それそれ。 >>179 のお望みのがそれなのかはよくわかんないけど。
require 'time'

input_date = "2003-09-30" # 日付
input_hour = "5" # 時
input_minute = "30" # 分

p idate = Time.parse( input_date + " " + input_hour + ":" + input_minute )

p idate <=> Time.now
丁寧に解答しても187はレスなんか書かないよ。
>>190
> 丁寧に解答しても187はレスなんか書かないよ。

別にいらない

書いてて気が付いたんだけど、Time.parseはエラーを判定できないので入力が
予想できないときは以下の方がマシかもしれない

require 'parsedate'

p Time.local(*ParseDate.parsedate("hogefuga")[0,6])
>>191
いらないとか言って、本当はMLとかで初心者が
返事書かないと直接メールして説教するタイプだろ。
193187:03/10/01 00:09
>>191
ありがとうございました。そのまま使わせていただいております。

しかしながらなんとサーバーのローカルタイムが間違っているようで
直せなかったため、UTCに置き換えてやってみました。

# 入力文字列
input_date = "2003-09-30" # 日付
input_hour = "5" # 時
input_minute = "30" # 分

err_msg = ""
input_date_str = input_date + " " + input_hour. + ":" + input_minute
idate = Time.utc(*ParseDate.parsedate(idate_str)[0,6])
#p idate ,"<=>", Time.now.utc + 32400
if (idate <=> Time.now.utc + 32400) == -1
err_msg += "予約日時は現在時刻より後の日時を入力してください。\n"
err_flag = 1
end
# 俺は返事がないと少しムカっとするタイプだが
>>192
わざわざメールで説教する人って実在するの?
rubyユーザーであるからには例え「解決しました」の一行でも礼儀上レスは必要だよ。
pythonユーザーなら逆に不要だが。
>>195
end
>>195-196
ワロタ
def ccc_binding
ccc = :ccc
binding
end

def ab_c(a_binding)
aaa = :aaa
bbb = :bbb
bd = (({ ローカル変数のaaaとbbbを知っているa_binding }))
eval "[aaa,bbb,ccc]", bd
end

ab_c(ccc_binding) # => [:aaa, :bbb, :ccc]が欲しい

これの
(({ ローカル変数のaaaとbbbを知っているa_binding }))
の部分を書く方法はあるでしょうか。
>>195.sub!(/例え/, "仮令")
>>198
> bd = (({ ローカル変数のaaaとbbbを知っているa_binding }))
だけなら bd = binding だけど、

> ab_c(ccc_binding) # => [:aaa, :bbb, :ccc]が欲しい
Bindingの結合というのはできない。

local_variablesとevalでa_bindingのローカル変数をコピーするというのはできるだろうが、
そもそも何でそんなことをしたいわけ?
>>200
やりたかったのはBindingの結合、それです。できないんだ、残念。

自作のテンプレートライブラリで、繰り返し処理に凝ろうとしたら、
イテレータブロックの中で呼ぶevalにこれをやりたくなるケースが
出てきました。他の方法があればいいんだけどまだ思いつかない。
>>194
かなり昔で何のMLかBBSだったか覚えてないけど実在する。
直接メールで説教されたことを示唆しつつ、非礼を詫びながら
慌てて返事を書く初心者を見たことがある。
また説教した人も気恥ずかしそうに、ちょっと行きすぎたかも
しれないけど分かってくれればいいんだ的な書き込みをしていた。
>>196

PHP使いなんだけど、返事は } でいいのかしらん
あのさあ、もの凄くどうでもいいことなんだけどさ。
イテレータブロックの引数(?)の位置って、

a.each(){ |m| }

より、

a.each() |m| { }

こう書けたほうがかっこよかったよな?
そう?
ブロックパラメタはブロックがないと意味がないわけだから
ブロック内に書くのが自然だと思う
しかも以下を避けるには文法が繁雑になる

a = Object.new
def a.each() self end
def a.|(x) self end
m = nil

a.each() |m| { }
文法を変えていいのなら
str.map { |c by :each_with_index| ...}
for c by :each_with_index in str
みたいなのは禿しくほしい
>>208
どうでもいいけどC#だとmの重複定義で怒られるのにはびっくらこいた。
>>209
何がやりたいのかよくわからない
each以外のイテレータに差し替えたいんだが。
roughにあるのは知ってるが文法で対応した方が簡潔ではないかな。
>>209
それだと each_object に対応できない
>>213
ObjectSpace.find_all { |obj by :each_object| とは書けないってこと?
それは、by を使わずに、
ObjectSpece.extend(Enumerable).instance_eval{alias each each_object}

てかなんでこうなってないのかが分からん。
>>204
ObjectSpaceを使わないように改造。
それとs/marge/merge/g。

def merged_binding(*bindings)
  dst = empty_binding
  bindings.each do |src|
    eval("local_variables",src).each do |var|
      eval("#{var} = nil; proc {|#{var}|}", dst).call(eval(var, src))
    end
  end
  dst
end
216デフォルトの名無しさん:03/10/02 06:52
Rubyの正規表現について質問です。
ruby 1.8.0 (2003-08-04) [i386-mswin32] にて、

cmd=msg.scan(/command #{@name} (.*)/)
case cmd[0][0]
  when /exit/ then exit
end

というようなものを書いたのですが、@nameを全部エスケープしてマッチさせたい場合は
どのようにしたらいいのでしょうか。@nameに]が片方だけ含まれていて、エラーになってしまいます。
Perlで言う \Q$name\E というのをしたいのですが。

>>216
/command #{Regexp.quote(@name)} (.*)/
quote は escape の別名なので escape でも同じ
>>217
ありがとうございます!! うまくいきました。
>>204
サンクス。ほとんど同じ話しをしてる。参考になりました。
221デフォルトの名無しさん:03/10/02 20:19
soap4rでレンタルサーバー上にCGI版SOAPサーバー置いてテストしてるのですが500 Error
が返ってきます。
状況としては、
・ローカルでのテストは問題なし
・必要なライブラリは自前でCGIと同じディレクトリに置き、$:に . をunshift
・PerlでのSOAPはうまくいく
・広告等の問題はなし
・レンタルサーバーのWEBサーバーログは見れない

なんですが、デバッグ方法とかないですか?
222デフォルトの名無しさん:03/10/02 22:16
これなんとかならん?
http://www.tdiary.net/archive/devel/msg00351.html

http://www.dm4lab.to/~genzo-/day2000q4.html
には
>when /\A[^#]/n then "&{$1};" とかなってればいいのかなあ? 
てあるけど
最新版でも
def CGI::escapeHTML(string)
string.gsub(/&/n, '&').gsub(/\"/n, '"').gsub(/>/n, '>').gsub(/</n, '<')
end
だしヽ(`Д´)ノウワァン
何とかすれ
>>221
例外が上がってるのかどうかくらいはHTTPで見えるところへ
devel/logger に吐かせれば分かるんでないの?
>>223
500 Error なら HTTP のセッション見ても詮無いような。
225205:03/10/03 01:34
おお、>>205にレスが。ありがとう
今の漏れのブロックパラメタ(?)のイメージはこんな感じなんだよね
a.each(){ |a,b| }  これを関数定義ぽくすると→ func{ ( a, b ) }

そんでこっち↓の方が関数定義に似ていてかっこいいような気がして。
a.each() |m| { }

激しくどうでもいいですね。
class MyClass < File
 def open(fn)
  super
  p "open:#{fn}"
 end
end

m=MyClass.open("test.rb")

このようなスクリプトを書いたのですが、MyClassのopenが実行されません。
どうしてなのでしょうか、教えてください。
age
>>226 意図したことなのかバグなのか区別か付かない気がする。ここじゃなくて ML で聞いた方がよくないか?
>>226
これでいいじゃん。
m=MyClass.open("test.rb").open("test.rb")
>>226
def self.open(fn) じゃないの?
>>230
それでもファイルオブジェクトは得られない訳だが。
>>231
ハァ?本気で言ってるの?

class MyClass < File
def self.open(fn); p "open: %s" % fn; super; end
end

p m = MyClass.open("x.rb")
p m.read
>>226
それだと MyClass.new.open("test.rb") しかできないよ
実体なしで直接つかうようなメソッドの場合、
メソッド定義時に >>230 か def MyClass.open(fn) とかで定義する必要があるよ。
オブジェクト返せ。superを最後にするかreturnつけろや
>>232とおもったら書いてくれてる
226はインスタンスメソドとクラスメソドの違いをわかってないということですか?
>>230,232が素で必死にレスしているのを
見ると心悲しくなってきます。
だって、どうせ226からのレスはないんだから。
>>226は恥ずかしがり屋
>>222
なんとかって、escapeHTMLしなきゃいいじゃん。
239224:03/10/03 12:55
漏れ、大ボケかましてたな・・・
>>221
soap4rっていうのがなんだかわからないけど
スクリプト1行目のrubyへのパスが間違ってるんじゃないの?
または、perlからsystem("tail /var/log/httpd-error.log")
とかして八苦してみれば?
標準添付になってもその存在を知られていないsoap4r憐れ・・・。なひさん頑張って!
Rubyのライブラリは肥大化の一途を辿るのか
と1.8を見て思った
Ruby に限らず、逆は普通ありえないだろ。と屁理屈を言ってみた。
いやなのか?
文法肥大化よりはまっとうな方向だと思うが。
他に比べたらまだ十分サイズ小さいし、いいんじゃない?
肥大化するのはかまわないけど、テストコード(TestUnit)を充実させて
ほしいな。作り手は面倒かもしれないけど、それによって使い手は安心
できる。それになりより、何をするライブラリなのか見当もつかなくて
困惑してしまう俺なんかでも、テストコードがあると具体的な使い方が
わかって助かるし。
まともなドキュメントとまともなサンプルがあればそれでよし。
テストコードじゃふつーのユーザーはついてこない。
まともなドキュメントとまともなサンプルすらない、ということでは
>>247
テスティングフレームワークを使った経験はあるの?
ドキュメントは結構まともだと思うな。
ちょっと文句をいうと標準関数群の説明を一個のHTMLにまとめないで欲しいな
一個一個のクラスや標準関数につき1個のHTMLにして欲しい。

サンプルに関してはほんとないね。もっと普及してくれ
251222:03/10/03 23:21
>>238
だって
&とかはしてくれないと困るじゃん
逆に実体参照はそのままスルーしてくれないと
252222:03/10/03 23:22
みすた
& → &amp;
253221:03/10/04 00:29
エラーログです。
これをみるとtext/xmlでレスポンスが返ってきてるように見えるのですが。。。
Internal Server Errorでtext/htmlのボディーが返ってきて例外が起こるようです。
検証してもらえませんか?
http://bisdurz.hp.infoseek.co.jp/error.log
>>253
俺には404のエラーに見えます。
255254:03/10/04 00:38
あ、なんかでてきた




・・・・わけわからん
1.8.1もうでるの?
実数→整数にキャストしたいんですが、
自分で計算するや文字列にしてからs.to_iを使う以外に簡単にできる方法ないでしょうか?
258257:03/10/04 01:09
すみません、自己解決しました。
アホか俺('A`)
>>258
どうやって?Integer(100.001) やっぱこう?
同じ悩みにぶつかる奴もいるからちゃんと解決方法も書いてってくれるとうれしい
>>259
その通りです。
foo = 100.001
print Integer(foo)
で、結果が100になることを確認しました。
to_i round truncate floor ceil
262デフォルトの名無しさん:03/10/04 08:08
ttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=TCPServer

これが、Windows版rubyでechoサーバが上下2つとも挙動がおかしいです。
1行目は返信されるけど、2行目以降は返信されません。
Linuxでは動きました。ほかの方はどうですか。どこが悪いのか教えてください。
ろくにテストなんてやってないんだろーなー
>>262
Cygwin上でMingw版を使ってる悪寒
265デフォルトの名無しさん:03/10/04 21:07
クラス変数ってPStoreで保存できないんですか?
下のようなクラスつくったんですが、インスタンス変数は
保存できるんですが、クラス変数は保存できません。
誰か教えてー。

class Music
@@total_plays = 0

def initialize
@plays = 0
end

def play
@@total_plays += 1
@plays += 1
end
end
アフォか(ゲラゲラ
class Music
  @@total_plays = 0
  def initialize
    @plays = 0
  end
  def play
    @@total_plays += 1
    @plays += 1
    print @@total_plays, ", "
  end
end
a = Music.new
a.play
a.play
b = Music.new
b.play
a.play

を実行したら漏れの環境では↓こうなったけど?
#=> 1, 2, 3, 4,
何がしたい?インクリメントされればいいんじゃないの?
>>265を百回読んでからレスしろ。まー265もアフォなんだが(ゲラゲラ
漏れの推測・・265=226
>>269
すげーよ、君すげーよ。
226までさかのぼって最近の流れを思い出して爆笑したYO!
271267:03/10/04 22:38
そうか、PStoreってもんがあるんだな・・・
脊髄反射でレスしちまった。

というわけで >>265 全然わかりません。
272265:03/10/04 22:44
>>267
すみません、説明が不十分でした。
サンプルを載せます。

>>266,268
知ってるなら教えてくれよ、ヽ(`Д´)ノウワァン
そんなコメントじゃ漏れがアフォだということしかわからないじゃないか!!
#まぁ、実際アフォなんだが...(´・ω・`)ショボーン

-- music.rb --
class Music
 @@total_plays = 0
 def initialize
  @plays = 0
 end
 def play
  @@total_plays += 1
  @plays += 1
 end
 def show
  puts "@@total_plays = #{@@total_plays}"
  puts "@plays = #{@plays}"
 end
end

続く
マニュアルよく読めよ
いやごめんごめん、マジレスするよ。

PStoreってのは内部でMarshalを呼んでる。
んで、Marshalってのは、インスタンスをファイルに書き出すんだよ。
つまり、インスタンスに属さないクラスの属性は保存されない。

そのインスタンスを復元すると、当然のことながら、もとのクラスの属性は
復元されない。

ってか、オブジェクトを保存する必要あるの?
ただ単に、データを保存したいんじゃないの?
275265:03/10/04 23:06
>>273
スマソ

>>274
納得しました。ありがとうございます。

オブジェクトとして保存したほうが、いろいろと楽ですよね。
データとし保存するとデータを読み込む処理を書かなきゃいけないし..
オブジェクトとして保存すると、そのオブジェクトにしか復元できないよ。
つまりそのクラスの変更ができなくなる。

データはデータとして保存しといたほうがいいとおもうぞ。
277267:03/10/04 23:41
PStoreっていう変数を外部ファイルに保存してくれるやつがあるんだね。勉強になった。
漏れはデータ保存する場合、読み込みが楽なんでrubyのハッシュのソースはいてeval しますよ。

↓例。こんなファイルを自分で作って
{ 'data1' => 'aaa', 'data2' => 'bbb', 'data3' => 'ccc'}

↓eval とか require で読み込み
data = eval( open('config.rb').read )

rubyのソース作って、読み込ませるのが楽です。
こういうデータファイルを出力するのも結構簡単だし。
>>277
大きなデータを読み書きしないならそれでいいんだろうが、
そんならYAMLにした方が楽なのでは?

require "yaml"
config_rb = "config.rb"
conf = { "data1" => "aaa", "data2" => "bbb", "data3" => "ccc"}
open(config_rb, "w"){|f| f.truncate(0) ; f << conf.to_yaml}
p conf == YAML::load(File.read(config_rb)) #=> true
c = "0"
として、c = "1"にするにはどうしたらいいんでしょう?
Perlの時は、chr(0x01)とかで出来たんですが、これに相当する関数はあるのでしょうか。
>>279
ぜんぜん言いたいことがわからん。なんなんだこのスレは
>>280
えとですね。cに文字として0が入っていた場合のインクリメントの仕方を教えて頂けないかなと…
整数型使えハゲはなしで…
>>279
前半後半でいってることが違うんだが chr(0x01) ってのはRubyの 1.chr だろ?
前半でいってることへの解答は c = "0" ; c.succ! ; p c #=> "1"
>>282
ありがとうございます。
succ!なんて使うなよ
なんで?
succ!なんて意味わかんねえだろ
意味が分からないとは?
まず読み方がわからない
すく?さっく?

意味がわからない
su -> スーパーユーザー
cc -> コンパイラコンパイラ
! -> びっくる!
おれのボキャを漁るとこんなもんさ
ちょっとマジレスすると
!が破壊代入なのはわかった。
これは282の文脈から判断できる。
successorでしょ。
読み方が分からないなんて、じゃあ sprintf はなんて読む
するとsuccは何をするメソッドか?
同じ様に282の文脈から判断して、
文字列を数字と見なし、その数字の値をインクリメントする
と解釈ができる。

ただ、なぜsuccという名前なのか?
これがわからない。
>>290
http://dictionary.goo.ne.jp/search.php?MT=successor&kind=jn&mode=0&ej.x=49&ej.y=11
suc・ces・sor


━━ n. 取って代わるもの ((to, of)); 後任[後継]者 ((to)); 相続人 ((to, of)).


これがなぜ
「文字列を数字と見なし、その数字の値をインクリメントする 破壊代入」(>>289 >>291より)
に意味付けされたのか、それがわからない。
succがsuccessorの略だとすると、まるで意味が通らない。
Rubyのこの用法は誤用としか思えないのである。
今一度名前の見直しが必要だ。
in mathematics or computer science, an object that succeeds another is called
"successor". for example, you find the word "successor" in Peano's axiom:
ttp://mathworld.wolfram.com/PeanosAxioms.html

and, by ruby's convention, if a method replace the receiver as the value of
"foo", then the method is named as "foo!".
別に数字に限らず、「次に相当する文字列」ということでは。
"a".succ は "b" だし、"99".succ は "100" だ。
>>290
>sprintf
string print formatだろう。
sとfは略記されているが、これは文脈でも容易に判断でき、
名前としても的確で意味の想定は常識の範疇の中で行える。
>>294
s/replace/replaces/ だと思われ
298290:03/10/05 00:43
いやいや、あくまで読み方の話のつもりでした。
「すぷりんとふ」とか「えすぷりんとえふ」とか読み方は決まってないでしょう?
>294
そのsuccesorとインクリメントには何の関係もない。
>>281の回答としてsuccを選択したのは間違いである。
>>262
Windows版とCygwin版で試したけどどっちもだめでした。
もしかしたら俺だけなのかなあ。
インクリメントは後者に置き換えること以外の何者でもないんだがな
>>295
>別に数字に限らず、「次に相当する文字列」ということでは。
残念ながら全く見当外れだよ
>>302
むしろ非常に正しいんだが
304デフォルトの名無しさん:03/10/05 00:51
c = "1"
p (c[0] + 1).chr

これはどうさ。
>>301
何を言ってるのかわからないが。

>>303
何をもって正しいと判断したの?
もうわけわかんね
>>305
じゃあインクリメントってどういう操作?
"-1".succはどうなるの?
succeed → succ
predecease → pred

Pascal にもあるよ
>>308
負の数もあるなら c = c.to_i.succ.to_s だろうな
>>308
"-2" だった。

p "2 * 9.9".succ #=> "3 * 0.0"
だった。
successorの意味を知らなくて引っ込みがつかなくなった奴がいるスレはここですか?
>>305
ri String#succ
succがあるのにpredはないのかyo
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=String;em=succ
next
next!
succ
succ!
以下のような次の文字列を返します。

"aa".succ => "ab"
"99".succ => "100"
"a9".succ => "b0"
"Az".succ => "Ba"
"zz".succ => "aaa"

succ!, next! は文字列の内容を破壊的に修正します。
「以下のような」といわれてもなあ。
>>314
非対称性はよろしくないな
じゃあ次のバージョンアップの時には prev を……。
>>312
succの意味を誤解しているrubyを叩いているのでは?
nextがあるのか。
文字列の前者は後者よりもさらに合意がとれないからでは?
ruby-talk では何度か議論されている。
もっとも Integer#pred を否定する材料は特にない。
>>318
まだ言うか(嘲笑
succ!なんて使うなよ
お前ら釣られてる暇があったらサンプルだかドキュメント欠けや
文案書いておいたよ。

アルファベットは26進数、数字は10進数として数えあげを行う。負符号などは考慮されない
文字列がアルファベットや数字を含んでいればそれ以外の文字はそのままになる
p "1.9.9".succ # => # "2.0.0"
アルファベットや数字を含まなければ以下のように次のASCII文字を返す。
p "\0".succ #=> "\001"
p "/".succ #=> "0"

特別に "".succ は "" を返す。またsuccはマルチバイトを認識しない。
riはサンプルが充実してると思うんだけど
perldocみたいに拡張可能なriって作る予定ないの?
現状で効率がいいのはrefe用の文書の増強なのかな。
alias get_next_ero_jpg_num_for_wget succ
>>325
付けたし

String#predはString#succの逆数を返す。

>"a9".succ => "b0"
>"Az".succ => "Ba"
この辺りよくわからないけど。

アルファベットや数字に関しては繰り上がりのある数え上げを行う。
書いておきました日本語変かも
329デフォルトの名無しさん:03/10/05 01:52
webrickでディレクトリ毎アクセス制限する方法教えて下さい。
>>327
> String#predはString#succの逆数を返す。

なんじゃそりゃ。逆関数といいたいのかな。
慣用的な訳語は successor: 後者、 predecessor: 前者。
next も あるから prev も。
http://akademeia.info/main/math_lecturez2/math_gensikinouteki.htm
ここによると
pred zero = zero
らしいですが、何が嬉しいんですか?
前者関数が未定義だと全域関数じゃなくなるからめんどくさい。
てか、この辺へ→ http://science.2ch.net/test/read.cgi/rikei/1046173479/831
>>332
そのページ見れません・・・
Peano算術ネタはもういいだまれうるさい寝る
>>327
逆数と言えば、普通は「n → 1/n」の事だ。
混乱を避ける為にも言葉を選べ。
そういう趣旨の話をしてるのなら尚更に。
プププ
succ信者必死だな
suckされるのは好きです。
you.succ!
yoshida.ei.succ!
342267:03/10/05 14:02
>>278
・・・yamlって。
また、そんなマークアップ言語があるんでつね
漏れまだXMLもわかんないのに・・・。
ありがとう
>>342
おまえは標準添付ライブラリに全て目を通すまでこのスレにレスすんな。
Win98の$:フォルダ内に、ダウソしたhoge.rbを入れたんだけど
別のフォルダで「ruby hoge.rb」しても
No such file or directory -- hoge.rb (LoadError)
ってでるのはそういうもん?
やっぱりhoge.rbのあるフォルダで「ruby 〜」しないとダメなの?
または、実行ファイルみたいにpathを通す必要があるとか?

#なんか我ながらお子ちゃまな質問だけど、聞けるのはこのスレ(サイト)ぐらいしかないので‥‥‥。
ruby -S ?
$:が何か知らずに回答。
>>346
$:ってのはアレじゃね?c: とか d: とかドライブ名を表してんじゃね?
と適当に回答。
348345:03/10/05 17:52
$:っていうのは、ライブラリ?のフォルダらしい。よくわかってない‥‥‥。
「ruby -e "p $:"」してもらえば。

書き忘れたけど、ruby 1.8.0 (2003-08-04) [i386-mswin32]で、試しました。
#cygwinバージョンでも同じ結果だったけど。
>>345
hoge.rb の位置、$: の値、現在のディレクトリが聞きたい。

ruby -rhoge -e ''
copy hoge.rb C:\temp
set RUBYPATH=c:\temp
ruby -S hoge.rb
でうまくいくかも。
ちなみに$:はrequireのサーチパス。
353デフォルトの名無しさん:03/10/05 20:34
WEBrickでHTTPServlet::AbstractServletを実装してServlet作るとき、
POSTデータはどこに入ってますか?
シラネーヨ。
355353:03/10/05 20:47
GETもPOSTもreq.queryに入ってました・・・
回答者のレベルがもうぐだぐだやな。シラネーなら答えなきゃいいのに。
357354:03/10/05 23:23
シラネーからシラネーと言って何が悪い
>>357
お前のことは言ってない。
シラネーのにシラネーと言わずにわざわざ答える香具師のことを言っとる。
>>358
報告・連絡・相談
ほうれん草は社会の義務だろうが!
とくだらない回答。
>>358
香具師って何?まさか奴って意味じゃないよね。
>>360
すまんが、どうレスすりゃいいんだ?マジレスしていいのか?
362360:03/10/06 03:12
>>361
己を信じろ
>>362
んじゃ、お言葉に甘えまして。
おまえは2典Plusに全て目を通すまで2chにレスすんな。
ttp://www.media-k.co.jp/jiten/wiki.cgi?%A1%E3%A4%E4%A1%E4#i13
イタイノイタイノ
トンデケー
>>363
まさか当っているとは思わなかった。
それで奴を香具師と書く必要性ってあるの?
まさか、2ちゃんに精通していることを示唆しようとしたわけじゃないよね。
>>365
うわぁ……イタタタタタタ
367デフォルトの名無しさん:03/10/06 11:57
お前らrubyでなにつくってんだ
ここ最近の流れは何なんだ
>>366
大丈夫か?
痛いとこがあったら病院で早めに見てもらったほうがいいぞ。
>>365 ただ使いたい、それだけのことでしょ。
>>368
いつも通りじゃん。
でも、たまにRubyのこと書く人いて頭に来るけどな。
>>262
今頃言っても遅いかもしれんが、Windows版rubyが悪い。
いまのところそういうものなので、諦めるか、rubyを直してパッチを送るかするとよい。
スクリプトが聞いて呆れるわい
>>363
それで奴を香具師と書く必要性ってあるの?
>>376
それで名前をひらがなで書く必要性ってあるの?
376なまえ:03/10/06 20:04
ん?
>>374
ないよ。で、だから何よ?
ヤシガニは顔だけに汁
>>377
必要性がないなら香具師と書かないほうがいいよね。
香具師と書かない必要性はありますか?
あります。
もうやめろよ。ウザイ。
やめます。
香具師を使う香具師は流行遅れ
>>382
わかったよ。おれも禁煙するから。
つーか、るび使い結構いるんだね。
漏れだけかと思った。安心したよ。
Ruby いいよな!この野郎ども!
>>387
だまされるなよ。このスレ、お前以外は全て自作自演だ。
389デフォルトの名無しさん:03/10/07 16:58
x上で開いているウインドウの一覧を表示するスクリプトをお教え下さい。ruby/tkを使えば出来そうな感じはします。
質問です。
rubyでMySQLを使いたいのですが、どのライブラリを使えばいいのでしょうか。
ruby-mysql,mysql-ruby,ruby-dbi
などと、いろいろあるようなのですが。
m17n は何の略ですか?
>>390
ruby-mysqlかmysql-rubyのどちらか好きなほうを選んで、
それからruby-dbiを入れる。
好きな方って一体どんな選択基準があるんだろう・・・
ちくしょう、荒らされてる。
Ruby と PIC で何か面白い遊び方あるよってひといる?
座標指定して、三角形やら円描いて、
画像に出力できるライブラリとかない?
>>397
GD
Imlib
399397:03/10/08 22:37
あるのかー。
ありがとう。調べてみる。
400デフォルトの名無しさん:03/10/08 23:12
>>396
PICで動くrubyインタプリタを書く(もしかしてもうあったらスマン)
401デフォルトの名無しさん:03/10/09 00:39
あのさ
式 or 式
ってあるけど

"foo" == ("foo" or "bar")
みたいな書き方ってできませんか?
一々左辺を書くのがメンドイっす
"foo" =~ /^(foo|bar)$/
["foo" "bar"].include?("foo")
["foo", "bar"].include?("bar") だと遅くなるかな。
あ、Arrayにコンマが抜けてた。
そうだね。3〜4倍ほど遅くなるね。
cond
要素数によるんではないか?。Array.include?で妥当だと思うが、
本気でやるならSetか?
array & array が思ったほど速くなかった。結果は各自でどぞ

x = 100000
a = ["foo"] * 10 + ["bar"]
b = "bar"; ba = [b]

def elapsed_time
t = Time.now
yield
p Time.now - t
end

elapsed_time {x.times { a.include? b }}

elapsed_time {x.times { a & ba }}

r = Regexp.new('\A' + a.collect {|v| Regexp.escape(v)}.join("|") + '\z')

elapsed_time {x.times { r =~ b }}

require 'set'

s = Set.new(a)

elapsed_time {x.times { s.include? b }}
class Object ; def in?(*set) set.include?(self) end ; end

"foo".in?("foo", "bar")
case "foo" when "foo", "bar";
...
end
irb-historyって標準添付じゃなかったのね
ちょっと迷ってしまった
aclも入ってないね。
>>411
CVS 先端に入ってない?
>>411
% cd cvs/ruby
% find -name \*acl\*
./lib/drb/acl.rb
% cvs log lib/drb/acl.rb | grep date
date: 2003/10/04 17:08:23; author: seki; state: Exp;
414401:03/10/10 00:58
"foo" =~ /^(foo|bar)$/
で行きます!

ありがと〜>402-409
感謝
require 'eregex'
"foo" =~ /^foo$/ | /^bar$/
正規表現の質問です。

文字列のうち '<' から '>' までにマッチする正規表現を書きたい。
ただし、'<' と '>' の中にも他の '<' と '>' が出てくる。
また '<' と '>' は必ずペアとして出現する。

例えば s = 'aa<bb<cc>dd>ee<ff>gg' とあったときに、
'<bb<cc>dd>' や '<ff>' にマッチしてくれるような正規表現を書きたい。

例えば、次の2つはNGです。
s =~ /<.*>/  # $& == "<bb<cc>dd>ee<ff>"
s =~ /<.*?>/  # $& == "<bb<cc>"

次のは一応うまくいくのですが、内側の '<' '>' のネストが深い場合などに
対応できません。
s =~ /<([^<>]*|[^<>]*<[^<>]*>[^<>]*)>/ # $& == "<bb<cc>dd>"

こんなのは正規表現では無理でしょうか?
やっぱり、'<' と '>' の文字数をカウントするような機能が正規表現にないと
難しいとは思うのですが。
>>416
それは正規表現(だけ)では解けない事で有名な問題。
ちょっと質問があります。
(ID、値)というデータが次々に入力されてくるとしますが、IDごとにそれぞれ
入力された順番を考慮して保持したいと考えます。ID番号ごとにqueueを作って、
既存のIDが入力されたらqueueにpushし、新規のIDが来たらそのIDに対応するqueueを
新たに作ってpushするという方法を考えました。
しかしどうやって書いたらいいかわかりません。後でID番号を基にそれぞれの
queueの中身を参照できるようにするには、どのように書いたらいいのでしょう?
C++だと、std::map<ID_type, std::queue<value_type> > のように書くと思うんですけど
同じような機能ってありますか?
>>418
Hash
>>416
素直にスキャナ書いた方が早い悪寒。
パターン共有・参照が実装されれば書けるかも。
もう鬼車に実装されてる?
S式にしてリスト比較
Rubyのキラーアプリってなんもないの?
ないよ。
>>417
どうもありがとうございます。
やっぱりそうですか。
ちなみにこの問題って、正規文法じゃ無理だけど文脈自由文法ならいけるんですかね?
いや、よくわかってないもので。
スキャナを書けば有限オートマトンを実現できるから、文脈自由文法を解釈できるってことなのかな?
>>425
そういうこと。
バランスのとれた括弧からなる文字列の全体はDyck言語と呼ばれ、
正則ではないが文脈自由。オートマトンの教科書には必ず書いてあるはず。
>>425
有限オートマトンの能力(=正規表現の能力)は、
「Rubyの正規表現」の能力に劣りますが?

# 後方参照とかあるのに「正規表現」って名乗るのはうさんくさいよなー。
>>418
class OrderdHash
include Enumerable
def initialize() @data = Hash.new ; @order = Array.new end
def [](key) @data[key] end
def []=(key,val) @data[key] = val ; @order << key end
def each() @order.each do |key| yield(key, @data[key]) end end
end

h = OrderdHash.new
h[10] = "foo"
h[-1] = "bar"
h[13] = "baz"
h[10] = "quux"
h.each{|k,v| printf(" %d -> %s\n",k,v)}

# generates:
# 10 -> quux
# -1 -> bar
# 13 -> baz
# 10 -> quux
>>427
「Rubyの正規表現」で表現できる言語のうち正規言語でない例には何がありますか?
>>429
/(.*)\1/
>>430
証明キボー
>>428

>>418 が欲しいのはこうじゃね?

h = {}
[[key,val], [key,val], ...].each {|key,val|
h[key] ||= []
h[key].push(val)
}
>>432
そうだな。よく読んでなかった。スマソ >>418
>>423
irb
435418:03/10/11 00:53
>>428,432
どうも質問に答えてくださってありがとうございました。
さっそくやってみます。
Ruby のキラーアプリの話と言えば、
ttp://www.loveruby.net/ja/ruby/contrib.html

で、tDiary はどうよ?
ソースやバイナリがダウソされた数とか分かんないの?>中の人
インタプリタの用途は統計的な手法で邪推するしかなさそうだが。
>>437
ミラーのことを考えると数なんてわからない。
Mac OS Xに添付されているのは数えるのか?とかいう問題もある。
まあそうだよな。そうなると、キラーアプリかどうかなんて知りようがないな。
評判なんてあてにならんし。
440デフォルトの名無しさん:03/10/11 11:44
Ruby-GPGMEのインストールに失敗するんですがどうすればいいんでしょう
環境はWin32/Cygwinで、以下のようにコンパイルしたところシンボル未解決エラーが出ました
gcc ./gpgme_n.c -I/usr/local/lib/ruby/1.8/i386-cygwin
441デフォルトの名無しさん:03/10/11 11:44
書き忘れましたが、GnuGPG-ME自体は正常にインストールできています
cygwin版は使い物にならない
なるほど、ありがとうございます。
では現状ではRubyからGPGを呼ぶ場合はパイプ付きopenで直接GPGを呼び出した方が良いということでしょうか?
444デフォルトの名無しさん:03/10/11 12:17
||= この演算子の意味は何?
つーかエラー内容全部書けよ
>>446
強調までしてくれて、ども。
||が斜めになってて、//=もあるのかと思ってしまった。
>>447 ワロタ
> a ||= 1 # a が偽か未定義ならば1を代入
これ見て気付いたんだけど、
a || 1 #=> error
a = a || 1 #=> 1
c = b || 1 #=> error
なんだね。
>>447
スタイルシートを.hilightにfont-style: normal;をつけました。
これで斜体にならなくなったはず。
451440:03/10/11 13:34
詳しくは
GPG1.2.2をCygwinアップデートからバイナリインストール
GPGME0.3.15をソースからインストール

Ruby-GPGMEのディレクトリに降りてMakefile作成
$ ruby extconf.rb
checking for gpgme_check_version() in -lgpgme... no
これでこけて終了するのでgcc直呼びでライブラリ作成を試みたところシンボル未定義のエラーが大量に出た
といった流れです。
gpgmeライブラリも gpgme.hも使える位置におかれているはずなんですが...
>>450
   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´∀`)< オマエダレダー
  (    )  \_____
  | | |
  (__)_)
AC嫌いなゆきひろくんがこんなところに来るとは思えないんだけどなぁ
ttp://znz.s1.xrea.com/t/?date=20031011#p03
> .hilightにfont-style: normal;を追加してみた。
45510/11の日記:03/10/11 19:03
今日は TMail を使ってみた。
TMail::Mail.parts に TMail::Mail を差し込んで、
write_back することで Multi-Part が作れることを知るまで
子一時間悩んだ。

あしたは、添付ファイルの名前の付け方で悩んでみよう。
コンパイルが通っただけでテストもしていないプログラムを
「出来ました」
と言って持ってくる。当然まともに動かない。
「ちゃんとテストをして、初めて出来ましたと言えるんだ」
と言ったら
「あんたが急がせたからテストが出来なかったんだ」
と逆ギレされた。

これを体現したのがconfigureシステム。
すなわちRubyの移植度合いはこれに左右される。
(;´∀`)ハハハ、
configureってアホな仕組みを考えたGNUは逝っていいよな
automakeの使い方が悪いんでは?
まー、あれって移植・保守の妨げになってるよね。どう考えても・・
そもそもソースから起こすって発想の在り方からして問題だよ。
ソースクレ厨の発生源になった。
だってGNUだもん
>>457
GNUはgcc以外世の中に大した貢献もしてないから、
もう不要かもな。
オープンソースとか言って、悪用しかされねーのわかってるのに、
正気でいられるかよ。開発スピードめちゃ遅だし。
これを機にメイン開発プラットフォームをWindowsに移そうぜ。
GNUのせいで、古めかしいUNIX系OSが未だに淘汰されてない。
これは業界のガンと考えて宜しいかと。
この大きな腫瘍を切除するため、ゲイツ帝国が某国等と結託して
RMS一派抹殺計画が発動されるかもしれません。
ストールマンは相変わらず笛吹いてるしな
オプソ計画は、いわば「釣り」なんだよね。
それを勘違いしたアホ企業はみんな破滅してる。
Redhatも焦ってサポート打ち切りやら更新スピードアップ図ってる罠
久しぶりにアンチ GNU、アンチ OSS な人がやってきたな。
Ruby と直接関係ないじゃん。
UNIXべったりなRubyの仕様も再設計すべき時に来ているのかもしれないな。
まあ、ソース公開しないアプリ作者が悪者扱いされたりもするし、
GNUが台頭してきてから変な風潮になってるのは確かかも。
無闇にソース公開ってのはどうかと思うね。
どうせ保守すんのは一部の人間だし。
ココハrubyスレ
>>467
Python 使えばいいんじゃないの?
わかった風な俄かRubyアナリストがMLで暴れたりするから
言語仕様がどんどんクソになっていく
まつもとも、助成金貰ってんだから人雇えよ。
そのための金だろうが。
configureは俺もウザイと思う
>>471
具体例は?

>>472
人雇えるほどもらってたっけ?

>>473
じゃあ代替案は?
本屋でRHG見たときには、(;´ー`)。oO(こいつら馬鹿?)
とオモータよ
>>>473
>じゃあ代替案は?

OS毎に、きちんと動作確認済バイナリをオフィシャルで公開すれ。
OSが何種類あるかすら分かりませんが?
>>476
君がビルダになってくれる?
動かねえとか書き込みあったら、そりゃβ版ですがな、
ってこと度々あるよな。このスレ。
適切なレスが一向に無いのが笑える。
>>479
Mozilla スレからのコピペかな?
>>477
毎回configureよりゃ安心だよ
>>478
ビルダなんて、それこそ審査でもして募ればいいじゃん。
どうしても必要なら環境一式用意するだろ。
使う側からすれば、configure はとても便利だと思いますよ?
むしろ、なかったら切り捨てられる環境が山のようにありそう。

で、なんで configure 話なの?
動作確認が問題なら rubicon の整備をすすめりゃいいのでは。
こんふぃぐれはクソなのれす
486484:03/10/11 22:17
んで、Triple-R も活用しろと。
http://www.rubygarden.org/triple-r/
>>483
>むしろ、なかったら切り捨てられる環境が山のようにありそう。
無いという前提なら、切り捨てておしまいだよ。
それでも別に困る事は無い。
初めから動いたという実績も何もないんだから。
何か configure でいやな目にあったんだろうか、この人。
今までの流れ

configureウザイ

オープンソースが諸悪の根源

GNU撲滅しよう(RMS抹殺計画)

Rubyもソース公開止めてバイナリ配布しよう(GPLも破棄?)

rubicon なんとかしろ
Rubyのキラーアプリは次世代makeツールに決まりますた。
つうわけで作れ>all
裁判でRMSの笛を差し押さえれば問題解決しそうな気がする
まともにWindows対応しろってことでは
configure使えないし。
debianだからソースはどうでもいいや
つーかconfigureがUNIX系でしかマトモに動かない所に問題があるな。
>>494
あれだ、bcc32 や vc が gcc 互換になればいい。
rubyでconfigure作ればいいだけじゃないか。
sh前提って時点でどうかしてる
まだC言語で動かした方が可能性ありそう
どうせC言語使うんだし。
それがsetup.rbなのでは
各種コンパイラで問題なくコンパイルできるコードを生成する
→ すげー大変。つうか死ぬ
→ 中間言語を使おう
→ 言語仕様を決めよう
→ あーだこーだ
→ つうかすでにある sh でいいじゃん
configureがUNIX系以外でマトモに動いたら嫌だな。
>>499
C言語の方が普及してるし、互換性もそれなりに高いじゃん。
それにいざ動かなくても修正楽だ。
shなんてUNIX使わない限り触らないよ。
単体じゃろくなことできないし。
どうしてもsh使うぐらいならperlの方がいいのでは。
結局UNIXならC入ってるし、それもいいか。
そもそも C で書くと ifdef の嵐になって
互換性とるのも大変だから configure ができたんだが。
configureにとって替わるビルドツールをC言語ソースで配布しる

ビルドツールをコンパイルする

ビルドツールがうまく動かなかったら各自修正する(C言語だから簡単)

ビルドツールでRubyをビルド

C言語使えるOSならどこでもRuby!

(゚д゚)ウマー
というシナリオなのだが
結局、UNIX以外に移植するのは大変ってことだよ。
configureなんかいつまでも使ってるから馬鹿にされるんだよ。
誰が馬鹿にしてるんだろうか。あと何を使えば馬鹿にされないんだろうか。
>>504
つーか、初めからバイナリ配布すりゃこんなツールいらねーだろ。
馬鹿か。
今でもバイナリ配布されてるからいいじゃん
>>508
RubyをWindowsで使う奴はアホ。
Pythonとか他の言語にしなさい。
Windows でスクリプトといえば、wsh ってかなりパワフルなのにあんまり使われないよね。
なんでだろう。
うんこ
おいおい、結局うんこかよ。
やめてくれよそういうのは。
どっちかというと切れ痔
Python は公式サイト上で Windows 版インストーラ付きを配布してるんだね。
Perl は AcriveState へのリンクだけど。
>>504
おとなしくshを覚えなさい。
こういった問題には誰も真剣に取り組まない。
結局オープンソースにしても無駄。
Rubyを見てると良くわかる。
configure が嫌いだということ以外
結局どういう問題なのかさっぱり分からないのだが。
結局何が問題なのかもういちど教えてくらさい。よーわからん。
>これを体現したのがconfigureシステム。

なんか変なのが来てるな
現時点で Windows の処理系のうち bcc32、VC++、djgpp、mingw、cygwin でビルドできるようになっている。
そのうち autoconf な configure を使うのは mingw と cygwin で、他は個別に対応している。
主要な処理系は揃っているのだからいいのでは?
それとも、もっと対応環境を増やすというときに対応が大変ってこと?
autoconf の代替物を作っても、結局それを移植するという作業が必要なので
個別対応するか GNU ツールが対応するのを待った方が楽だと思うんだけどなあ。
訂正。djgpp は DOS だった。
どうせ誰も読まないから訂正しないでいいよ
自分が読んでるよ。
環境はWinしかしらねぇ馬鹿が集まるスレですか?
>>456 からのこの流れはいったいなに?
オープン批判って事で、るびべんが紛れ込んでると予想してみるテスト。
>>527
基本的にRubyを使った開発やテスト環境はWinだろ
Unix系のOSはもともとサーバ用途のOSだから
人間とのインタフェースがうんこで使ってられん
|基本的にRubyを使った開発やテスト環境はWinだろ
はつみみです

はっ。思わず void 化してしまった。
死人の悪口はいかんよ…
>>475
>本屋でRHG見たときには、(;´ー`)。oO(こいつら馬鹿?)
RHG買おうかなーと思ってるんだけどどういう点が馬鹿なの?
ところでスラドで大量に煽り書き込みしてるACの一人ってのは多分おごちゃんだと思うんだ俺。
>>532
> 死人の悪口はいかんよ…

そういうことにしたいのですね?:-)
>>528
みんなconfigureに不満持ってるんな〜ってこと。
GNU autotoolsを厄介物あつかいする気持ちはわかるけど、
Winな環境に対応できないからダメって言ってるやつどうかしてるよね。
538デフォルトの名無しさん:03/10/12 04:42
ActiveScriptRuby使えば良いのでは?
オマイラツラレスギ
GNU嫌いな方はBuildtoolをどうぞ
http://buildtool.sourceforge.net/
>>449 ってどんなからくりになってるの?
>>542
あ、右辺に未定義な変数 (b) が出てきたからエラー、か。
     ∧_∧
ピュ.ー ( ´_ゝ`)< フーン
  =〔~∪ ̄ ̄〕
  = ◎――◎
x = y = z = x #=> x,y,z = nil か。
1.8系にあるブロックつきHash.newを1.6系でも使いたかったので作ってみますた。
さすがにHashの挙動を変えちゃうのは怖いので継承してみますた。

class Hash18 < Hash
def initialize(dflt = nil, &block)
super(dflt)
@default_block = block if block_given?
end

def [](k)
@default_block ? @default_block.call(self, k) : super(k)
end

def inspect
"#<Hash18:#{id} @default_block=#{@default_block.inspect}, #{super}>"
end
end

>>546
「みますた」っどういう意味?
>>547
ごめんなさい。typoです。「みました」の誤りですた。
>>546
ブロックが実行されるのは登録されていないキーで参照したとき
550546:03/10/12 18:42
>>549
おー、そうだ。わたしがバカでした。恥ずかしい…

self[k]がnilを返してきたとしても登録されてないとはいえないわけで、
そうするとkeys.include?(k)で判別するしかないのかな。
だとしたら効率悪そう。
>>550
has_key?(key)
include?(key)
key?(key)
member?(key)

ハッシュが key をキーとして持つ時真を返します。
Hashのような組み込みの具象クラスの継承はあんまりしない方がいいと思う。
例えば is_a?(Hash) と判定された時の挙動の責任を持つ必要があるし。
グローバル変数は、事前に代入されていなくてもnilのデフォルト値を持つのね
おれは変数宣言あった方がよかったと思う
>>548
「ですた」ってどういう意味?
変数宣言イラネ
いる。
宣言レスだと、ちょっと複雑なコード書くとき不安じゃね?
複雑に書くな。との御託宣である
>>555
ごめんなさい。typoです。「でした」の誤りでつ。
「でつ」ってどういう意味?
「です」の誤りです。

いいかげんやめろ。
いいかげんやめれ。
「やめれ」ってどういう意味?

とかって続くわけじゃないのね。
スマソ。
もまいら、いい加減にしる!
Arrayで、全部の順列を列挙するにはどうしたらいいでしょうか
こんな感じです

[1, 2, 3, 4].each_perm do |a|
 # a は並べ替えられた配列
end
「しる!」ってどういう(ry
2典(ry
「(ry」ってどういう意味?
>>565
class Array
def each_permutation(&block)
_permutate(self, 0, &block)
end

private
def _permutate(a, k, &block)
n = a.size-1
if n == k
yield(a)
else
(k..n).each do |i|
b = a.dup ; b[k],b[i] = b[i],b[k] ; _permutate(b, k+1, &block)
end
end
end
end
器用なコード書くなぁ。
>>569
ありがとうございます
関数を2つに分ければいいんですね。
2関数に分けない方法
ttp://www.sra.co.jp/people/miyata/algorithm/genperm.txt
から移植

class Array
def genperm4
p = self #.dup

c = Array.new(p.size+1)
(1 .. p.size).each {|i| c[i] = i }

k = 1
while k < p.size
i = (k & 1).zero? ? 0 :c[k]
p[k], p[i] = p[i], p[k]

yield(p)

k = 1
while c[k].zero?
c[k] = k
k += 1
end
c[k] -= 1
end
end
end

[1,2,3].genperm4 {|v| p v}
573デフォルトの名無しさん:03/10/13 11:09
enterキーが入力されたことをわからせるメソッドってありますか?
unless STDIN.getc == ?n; end
575デフォルトの名無しさん:03/10/13 15:51
www.ruby-lang.org にある man-rd-ja.tar.gz は,どうやれば読める HTML にできるの?

% cd rd-man-ja
% rdoc --charset ISO-2022-JP --fmt html *.rd

とやって,doc/index.html を mozilla で見てみたら

%A5%AF%A5%E9%A5%B9%A1%BF%A5%E1%A5%BD%A5%C3%A5%C9%A4%CE%C4%EA%B5%C1.rd
%A5%AF%A5%E9%A5%B9.rd

なのが,リンクとしていっぱい出てきて,クリックしても「そんなファイル見つからん」
と言われてしまいます.
HA HA HA!
>>575
*.rd は rd2 で処理するんでねえの?
HTML版を落とせ。
以前分割 HTML 版配布してたと思うんだけど、1.6.8 / 1.8.0 版は配布してないの?
>>569
たしかに器用なコードだなぁ。おもろい
自分が樹形図を書くときの手順をそのままコードにしただけなんだけどねえ。
582デフォルトの名無しさん:03/10/14 08:45
RDEでデバッグすると、以下の警告がうざいのですが、

C:/ruby/lib/ruby/1.8/debug2.rb:797: warning: multiple values for a block parameter (2 for 1)
from C:/ruby/lib/ruby/1.8/debug2.rb:797
C:/ruby/lib/ruby/1.8/debug2.rb:809: warning: multiple values for a block parameter (2 for 1)
from C:/ruby/lib/ruby/1.8/debug2.rb:809

どう対処するといいでしょうか。
583345:03/10/14 14:24
激しく亀レスでスマソ。

「ruby -S hoge.rb」で動きました。
>>346・351氏に感謝。

>>352
っていうことは、RAAなんかでダウソしたライブラリは、$;の中に入れとけばいいってことか。
>>583
普通、ライブラリ付属のドキュメントの通りにインストールすれば、
何も考えなくても $: の中 (/usr/local/lib/ruby/site_ruby/... など) に
入ってくれるんでないかい?
それともドキュメントは死んでも読まない主義?
>>583
「ダウソ」って何?
>>585
もうその手のは飽きたよ。
>>586
RAAなんかでもうその手のは飽きたライブラリは〜
だとなんか変じゃないか?
>>587
はい。変ですね。
>>588
それならダウソって本当は何なの?
590345:03/10/14 18:49
>>584
 install.rbが付属しているのはそれでいいかもしれないけど、ついてないやつは(既知として)そんなことかかれてないやつが多いから、
試行錯誤してました。
(ドキュメントは必ず目を通してるつもり。)

 っていうか、うちの環境ではinstall.rbが動かずインストールできないことが多いので、むしろ手動の方がありがたかったりする。
# 今日tmail試してるんだけど、「install.rb setup」でmakeがこけて‥‥‥。
#しかもエラーメッセージが文字化けして読めないし‥‥‥。
#make
#Makefile:102: *** ・ソ。シ・イ・テ・ネ・ム・ソ。シ・ャ `%' 、゙、ヌ、、、゙、サ、・ テ貊゚。」
#setup failed
#'system make ' failed
#
#>make -v
#GNU Make version 3.79.1, by Richard Stallman and Roland McGrath.
#Built for i686-pc-cygwin
とりあえず、 make を ruby でラップしちゃうとか。
お手軽に Kconv.tosjis(`make`) とか使えば読めるよ。
>>590
% LANG=C make
>>589
まつもとゆきひろ先生にでも聞いてみたら?知ってるかもしれないよ
>>582
ハッシュを for で回すときは key と val をブロックパラメータに取る。
begin-base64 644 debug2.patch
LS0tIGRlYnVnMi5yYi5vcmlnCTIwMDItMDctMDEgMTY6MTc6MDIuMDAwMDAw
MDAwICswOTAwCisrKyBkZWJ1ZzIucmIJMjAwMy0xMC0xNCAyMzo1OTowMS4w
MDAwMDAwMDAgKzA5MDAKQEAgLTc4Miw1ICs3ODIsNSBAQAogICAgICAgVGhy
ZWFkLmNyaXRpY2FsID0gdHJ1ZQ0KICAgICAgIG1ha2VfdGhyZWFkX2xpc3QN
Ci0gICAgICBmb3IgdGggaW4gQHRocmVhZF9saXN0DQorICAgICAgZm9yIHRo
LCBpbiBAdGhyZWFkX2xpc3QNCiAgICAgICAgIGNvbnRleHQodGhbMF0pLnNl
dF90cmFjZSBhcmcNCiAgICAgICBlbmQNCkBAIC03OTUsNSArNzk1LDUgQEAK
ICAgICAgIFRocmVhZC5jcml0aWNhbCA9IHRydWUNCiAgICAgICBtYWtlX3Ro
cmVhZF9saXN0DQotICAgICAgZm9yIHRoIGluIEB0aHJlYWRfbGlzdA0KKyAg
ICAgIGZvciB0aCwgaW4gQHRocmVhZF9saXN0DQogCW5leHQgaWYgdGhbMF0g
PT0gVGhyZWFkLmN1cnJlbnQNCiAJY29udGV4dCh0aFswXSkuc2V0X3N1c3Bl
bmQNCg==
====
>>593
まつもとゆきひろ先生って誰?
このスレもダメポ。
知障だらけ。
597デフォルトの名無しさん:03/10/15 03:56
WEBrickでサーバが保持するデータをサーブレットに送る、
サーブレットが保持するデータをサーバに送るにはどうしたらいいですか?
>>597
もう少し具体的に。AbstractServletのインスタンス変数に@serverというのはある。
>>595
国語辞典ひいてみなよ。のってるかもしれないよ。
600582:03/10/15 06:42
>>594
lhaplusを入れて、base64decodeをして、以下のpatchを得ました。
------------------------------------------------
--- debug2.rb.orig2002-07-01 16:17:02.000000000 +0900
+++ debug2.rb2003-10-14 23:59:01.000000000 +0900
@@ -782,5 +782,5 @@
Thread.critical = true
make_thread_list
- for th in @thread_list
+ for th, in @thread_list
context(th[0]).set_trace arg
end
@@ -795,5 +795,5 @@
Thread.critical = true
make_thread_list
- for th in @thread_list
+ for th, in @thread_list
next if th[0] == Thread.current
context(th[0]).set_suspend
-------------------------------------------------
以前のファイルをdebug2.rb.origにリネームし、
>patch -p1 < debug2.patch
をしたところ、次のエラーが出て力尽きました。
missing header for unified diff at line 3 of patch
can't find file to patch at input line 3
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|--- debug2.rb.orig2002-07-01 16:17:02.000000000 +0900
|+++ debug2.rb2003-10-14 23:59:01.000000000 +0900
--------------------------
File to patch:

アドバイスもらえますか。
>>601
この程度なら自分の手で修正すればいいでしょう。
なんでファイル名と日付時刻がくっついてんだろ? ってのはさておき、

File to patch: debug2.rb

でいいんじゃないの。
604603:03/10/15 18:23
というか、-p1 はいらないでしょ。
>以前のファイルをdebug2.rb.origにリネーム
なんで?
606345:03/10/15 19:14
 結局dos窓から秀丸にコピー→保存して開きなおしたら見えました。
「Makefile:102: *** ターゲットパターンが `%' を含んでいません. 中止。」
とのことで、できあがったmakefileをよく見直せばコンパイラがclでした。
 cygwinのruby環境があるPCでコンパイルしたら(多分)無事できました。

 重ね重ね、レスくれた方に感謝。
#install.rb使いたかったら、cygwin版にしろってことで。
元凶は秀丸だな。
Cygwin+http-access2でHTTPSのコンテンツを読みたいと思い、簡単なテストをやってみたのですがうまくいきません

#!/usr/bin/env ruby
require "http-access2"
print HTTPAccess2::Client.new.get( "https://www.rsa.com/" ).body.content

$ ./ssltest.rb
at depth 3 - 20: unable to get local issuer certificate
/usr/lib/ruby/site_ruby/1.8/http-access2.rb:807:in `connect': SSL_connect:: cer
ificate verify failed (OpenSSL::SSL::SSLError)
    from /usr/lib/ruby/site_ruby/1.8/http-access2.rb:807:in `ssl_connect'
    from /usr/lib/ruby/site_ruby/1.8/http-access2.rb:1125:in `connect'
...
とエラーが戻ります。OpenSSL自体の設定が必要なのでしょうか?
>>598
なるほどありがとうございます。
bbbbbbyyy
正しいプログラマの方におうかがいいたします。
以下のscript.rbのように設定ファイルconf.txtを反映するのは邪道でしょうか?


conf.txt
---
# 設定ファイル
Mailaddrs = ["[email protected]","[email protected]","[email protected]"]
Datafile = "sample.csv"
Threshold = 2.4
Rang = 1.3
---

script.rb
---
#
# 初期設定ファイル読み込み
f=File.open("conf.txt","r")
f.each{|line|
eval(line)
}
# メイン
・・・・
---
>>611
1行ずつevalすると複数行にまたがってるときにSyntaxErrorになる。
どうしてもevalしたいんなら、eval(File::read("config.txt"))の方がマシ。
定数しかないんなら拡張子を.rbにして、require "config"で十分。
>>611
yaml 使うとかー。
>>612 require より load がいいかもね。
616582:03/10/16 08:22
>>604
>patch < debug2.patch
で、パッチが無事にあたったと思うのですが、今度は次のエラーが出てしまいました。
パッチ、うまくあたってないのかなぁ。

Debug2.rb
Emacs support available.
RDE Extention

C:/ruby/lib/ruby/1.8/debug2.rb:798: warning: do not use Fixnums as Symbols
C:/ruby/lib/ruby/1.8/debug2.rb:798:in `[]': 0 is not a symbol (ArgumentError)
from C:/ruby/lib/ruby/1.8/debug2.rb:798:in `suspend'
from C:/ruby/lib/ruby/1.8/debug2.rb:797:in `each'
from C:/ruby/lib/ruby/1.8/debug2.rb:797:in `suspend'
from C:/ruby/lib/ruby/1.8/debug2.rb:111:in `suspend_all'
from C:/ruby/lib/ruby/1.8/debug2.rb:713:in `trace_func'
from C:/ruby/lib/ruby/1.8/debug2.rb:931
from C:/ruby/lib/ruby/1.8/debug2.rb:930
from C:/work/debugtest.rb:1
Completed(1)
617611:03/10/16 15:55
ありがとうございます。
 初期設定や換算式、評価式はスクリプトの外に出して、ユーザが自由に書き換えられるようにしたいのです。ついでに、作者の手間も省きたかったり。。。

>>612
>>615
 定数の定義だけなら require や load のほうがすっきりしますね。
 複数行にまたがる eval の使い方はとても参考になりました。大きなハッシュや配列がすっきり書けるようになりました。


>>613
 yamlですかー、新しい言葉だ。1.8から使えるみたいですね。勉強してみます。


 で、何でこんなことをお聞きしたかと言いますと、先輩格の同僚に「eval はキモい」とかなんだかんだケチつけられてたんです。
 その人は、スクリプトというものをあまり知らない感じ。ソフトウェアの技術者ではないのですけどね。
>>617
それより、複数行にまたがる文章の書き方を勉強しないと。
やっぱりこれで eval はキモいでしょ
意味不明
rubyのライブラリgoogleで検索するとmlがトップで引っかかるのやめてくれよ。
普通リファレンスが最上位に来るべきだろ。
こういうことやってるからコミュニティが拡大しないんだよ。
もっと工夫してくれ。不便杉。
>>621
どうすると検索結果で上に持って来れるの?
lispのread欲しい?
意味不明
何僻んでるの?>意味不明厨
site: とか -site: やってないから検索結果が拡大するんだよ。
もっと工夫してくれ。
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 君さ、Routes作ったぐらいで浮かれてんじゃねーよ

   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ・∀・)  ∧ ∧ < な、なんですか?あなた・・・
 (  ⊃ )  (゚Д゚;)  \____________
 ̄ ̄ ̄ ̄ ̄ (つ_つ____
 ̄ ̄ ̄日∇ ̄\|Leaf社PC|\
        ̄   =========  \
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ・・・誤爆しちまったよ

   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (;・∀・)  ∧ ∧ < な、なんですか?あなた・・・
 (  ⊃ )  (゚Д゚;)  \____________
 ̄ ̄ ̄ ̄ ̄ (つ_つ____
 ̄ ̄ ̄日∇ ̄\| ム板PC|\
        ̄   =========  \

>>622
メジャーなサイトからリンクを張ってもらいオフィシャルサイトの評価値を高める。

>>626
そんな面倒なことやってられるか。MSを見習え。
\314\265\315\375\244\267\244\306\273\310\244\246\244\312
\223\307\202\335\202\303\202\347\202\242\202\346
633燃料:03/10/18 01:19
勝手にパクったPerlの仕様を「後悔した」とぼやきながら
我の仕様として定着させているRubyは先人に失礼極まりない。

このことを見て見ぬフリしている、いや、見ようともしない人びとに
私は呆れている。
だれかマッチ持ってきてー
粗悪な燃料なので着火しません
>>633
焚きつけてみるテスト。

>我の仕様として定着させている
具体例は?
>>633は無事鎮火しました
>>636
一連の終了ステータスの話しとかかな?
ガソリン持ってきたのだけど、もう遅かったようだ。
Rubyぱくっていい?
どこの方言ですか?意味は?
>>640
いいよ。どうぞ。
>>640
ライセンスをよく読んだ上でどうぞ。
>>640
ハクるっていうか普通みんなソースカスタマイズして使ってるよ。
デフォじゃ使い物にならないからね。
645デフォルトの名無しさん:03/10/18 16:20
rubyでhttpproxyを作りたいのですが、Net::HTTPを使うと、例えばGETメソッドの
場合、データを全て読み込んでからでないとブラウザに転送できないと思うのですが、
逐次ブラウザにデータを転送する方法はないですか?
WEBrickのhttpproxy.rbを見たのですが、Net::HTTPを使っているようです。
自分で実装するしかないのでしょうか?
>>633
$_とか$&とかな。

俺はPerlでは$_はよく使うが、$&(等の正規表現系)は殆ど使わない。
1.8になってようやく代替機能が揃いつつあるようだが、
まつもとはこの仕様を拝借する時何も考えなかったのか?

>>645
リファレンスマニュアルちゃんと読んだ?

> get( path, header = nil ) {|str| .... }
> (中略)
> ブロックとともに呼ばれた時はエンティティボディを少しづつブロックに与えます。
>>647
はぁ・・・
メクラでした。すみません・・・
>>640
elseif rubyでも作るつもりだろう。
Ruby は Post Perl になれるかな。
>>649
いや、新しい言語 emerald を作るとみた
ルビーと同質の鉱石としてはサファイアのほうが適してると思うけどね
druby,eruby,jrubyがあるから残りのrubyを埋めていくのはどうだ?
crubyはpythonみたくmatz版c言語実装のrubyということで残りは22個.
そのうちdjbrubyが出てくる罠
>>654
qrubyは埋まったな
zrubyは補完がすごいとか
>>656
何を補完するんだよw
aruby 玄人向けなRubyです
bruby バイナリ版Rubyです(突っ込み禁止)



fruby フリーなRubyです
gruby グローバルなRubyです
hruby えちぃRubyです
iruby インターナショナルなRubyです

kruby KDE上での動作に特化したRubyです
lruby Rubyのライブラリです
mruby まつもとゆきひろ的Rubydesu
nruby nVidia版Rubyです
oruby オープンなRubyです
pruby PerlライクなRubyです

rruby リモート操作用Rubyです
sruby セキュアなrubyです
truby とみながたけひろ的Rubyです
uruby 利用価値の高いRubyです
vruby Ruby仮想マシンです
wruby RubyRubyです
xruby XなRubyです
yruby 卑猥なRubyです
zruby Ruby-zipです
nVidia版ってなんだよ。
ビデオ制御が強いです
日本発の言語なんだから、「あruby」〜「んruby」も欲しいな。
>>661
あ〜ん萌え
>>661
それだったら「いruby」〜「すruby」っしょ。
酢っぱい。酢っぱい。
かruby
ごruby
       ,,.、 _、、
      /  };;゙  l ))
.      ,i'  /  /        ミッフィーちゃんが666げっとずさー
     ;;゙  ノ  / 
    ,r'     `ヽ、    三
   ,i"        ゙;         三
   !. ・     ・  ,!''"´´';;⌒ヾ,    (⌒;;
 (⌒;;   x   ,::''    |⌒l゙ 三 (⌒  ;;
  `´"''ー-(⌒;;"゙__、、、ノヽ,ノ 
kまでググったら
aruby
bruby
cruby
fruby
gruby
kruby
はあるようだ。つかれたので後はよろしく。
かるび
ぬrupy
         _,. -──=ニヽ、
         /レ'´       `ヽ、
        //● / , ,、 ヽ ヽヽ ト、
      /7O j_ノ_/ハHl、_j l lN
       〈7イ ´|/l/   `ヘノ} jrく)j
     r‐ヶハl  c⌒r─ォ⌒c,ハヽ〉  わはー るby
     Y//,ハ>、j>l、_ノ.イレ1l レ′
        \l l//` ` ̄´ j l レ'
         _>′r。~。ヽ レ'´
      (__ゝ、<ゞニア< |
           \`^^´  l
              `ーr-、ノ
            し′
キレる17歳が落ち着いたかと思えば、
(全世代がキレてるから特に取り上げられないだけだけど)
今度はキレる言語だ。

最近、何かと言語間の問題が目につく。
Rubyに関して言えば、パクリの問題。まぁ、あれは普通に許せない。
あと、二番煎じぽかったり、
オブジェクト指向だったり、それに付加する関数型・イテレータetc...

Rubyはパクリ行為に全力を注いでて、色々反感買ってて、
でも、日本人のRubyに対する態度は落ち着いてて、反感買って。
もうよく分からない。何に頼ればいいのか。少なくともmatzには頼れない。
パクリ犯罪なんてあり得ないと思ってた。あり得てしまった。

言語を設計する野郎がキレてて、それを信者は崇拝し、まるで宗教で・・・。
そんな言語あり得ないと思ってた。あり得てしまった。

いっそRubyなんてなくなればいいと思った。
そうすれば俺を付きまとう様々な痛手も消える。
いやー、しかしそれでもオブジェクト指向のPerlなんつー奇妙な物いじらされるよりは幾分ましだと思わないか?
671ってなんかのコピペっぽいけど実際どうなの?
付きまとう様々な痛手って何?
>>667
だいぶむかしからこんなページがあるわけだが。
ttp://nuance.cc/machine/column/azruby.html
昔からあるせいでcrubyとか載ってない罠
連絡してくれと書いてあるんだから連絡してやれ。
678デフォルトの名無しさん:03/10/19 05:19
なんか、よくわからないところでSegmentation faultが起こります。
毎回毎回違うところです。
スレッド関係でしょうか?
Rubyでは、Ruby自体のバグ意外ではsegvらないと聞いたのですが
>>678
そういうのは ruby-list にソース付きで投げてくれ。
再現できれば誰か直してくれるから。
>>678
おそらくGC関係だね(スレッド関係と言えなくもないが)。

ちゃんとバージョンやプラットフォームの情報をつけた上で、>>679の言うように
MLに投げてくれ。
>>672
幾分ましというか、こっちの方がいい。
オブジェクト指向のPerlなんてPerlじゃないと思うんだけどなぁ

あと>>671がいってるイテレータつーのはイテレータブロックのこと?
あれはパクったの?
LWP並に整備されたネットライブラリが出来たらRubyを本格的に使うつもり
>>679>>680
レスありがとうございます。
WEBrickやらSOAPやらDBやら弄ってて環境がややこしいので、
なるべく小さな再現コード探してるのですが趣味プログラマなんでよくわからんです・・・

バージョンはruby 1.6.7 (2002-03-19) [i386-linux]
protocol.rb:461→rb_mark_tbl
timeout.rb:33→rb_mark_tbl
http-access2.rb:1079→rb_gc_force_recycle
の後でsigactionがおきてます。

やっぱ、ML入ってソース丸々出した方がいいですか?
コランダムってどうよ
>>683
バージョンが古いね。
直ってる可能性があるので、1.6.8 や 1.8.0 で試してみては。
>>685
1.8にしたら問題ありませんでした。
>>681
ってか、ruby厨がありがたがってる機能でrubyならではのものなんてないし。
パクリ元の言語では、ごくあたりまえに使われるがな。どれも。
ってか、matzはパクリって認めてるのに、
無知なマンセー厨が勘違いしてるだけってのも。
matzのおじさんはいいなぁ。
あの田舎からあっちこっち遠出するのが大変だろうけど、
どこに行ってもRubyの作者として称賛されるんだから。
自ら趣味として初めたRubyの開発が今は仕事なんだから。
それを続けてれば人生安泰なんだから。
あー、うらやましい。
>>688
ウザー
むしろかわいそう
IT土方として仕事を嫌々させられ、上司にはどやされ、部下からは馬鹿にされる悲しい中年プログラマの>>688の姿が目に浮かぶようだ。
>>687
みんなパクリって知ってるけど、
それらが全て絶妙なバランス感覚でブレンドされてるのがいいのよ。
便利で有名な機能を、わざわざ外して利便性を損なう理由もない。
awkはsedをパクって、perlはawkをパクったんだとしても、それはそれで便利だからイイじゃん。
パクったって言い方は、なんか悪意を感じてヤだな。
パックンチョ
全ての言語が多言語からの「パクリ」を一切禁止されてたら、
さぞ不便だろうな。つーか、発達してないと思うけれど。
パクリ批判してる人ってどんな言語を使って開発してるんだろ。
brain fuckだろ
unlambda とかじゃない?
699不燃物:03/10/20 14:21
>>693,695
そうそう。誰だよパクったとか言ってRubyを悪者にしてんのは。他の言語の
便利でスタンダードな機能をパクることは、立派な転用術と言えるのですよ。

とはいえ、私憤しているのは、立派に転用しておいて「後悔した」はないだ
ろうということです。堂々と転用すればいいものを「後悔した」と言いだす
から不潔になってくるのです。つまり、後悔しているのならすぐに仕様から
外せばいいのです。というと、おそらく何処の誰かが「Rubyの互換性」を主
張してくるでしょう。しかし、matzのおじさんのいわゆるイエス様の一声で
すべてが決まる世界ですから、いつでもサッサと外せばいいのです。誰も文
句なんか言いません。

にもかかわらず、なぜそうしないのか。そこには二面性があるのです。一方
のまともなRubyユーザーに対しては「本意じゃないんだ。後悔しているけど、
あれだけPerlが広まっているのだから真似するのは仕方なかったんだ。恥じ
ているんだ。本意じゃないんだ。わかるだろ?だから許して」と弁解をしな
がら他方のPerlユーザーには「ほら、$_ もあるから心配ないヨ。Perlなん
か捨ててこっちこいヨ。正直言ってRubyは完全にPerlの上いってんだから。
ほらほらこっちこっち」と、蒔かれた餌を食べようかどうか迷っている小動
物を見守るかのような視線で手招きをするのです。

立派に転用しておいて弁解する。そこからは薄汚い思索が感じられるのです。
まぁRiteで一旦リセットできるからいいんじゃないの?
>>699
そうそう。まで読んだ
javaの構文なんざほぼC++だしな。
既存にある有名な言語の構文を真似るのは、
覚えやすいしいいと思う。
Riteマダ?
>>703
自分で作れば?
そんな暇な奴matzぐらいしか居ないっての
おまえらまったりしすぎ
>>702
C++ は親のコンストラクタ呼ぶのが面倒
708デフォルトの名無しさん:03/10/20 21:28
ハッシュのキーにSymbol(:hogeとか)を使う意味はなんですか?
>>705
もうしばらくしたら、1.8.xはなかださんか誰かに任せちゃって
matz氏は1.9/Riteに専念したらいいのに。
とか思ってる人って他にいないのだろうか。
>>709
賛成。
早速ゆきひろに進言してたもれ
ゆきひろとひろゆきってよく間違うよね
>>712=オリバカ
>>708
Symbol のほうが軽いからかと。
715デフォルトの名無しさん:03/10/20 22:35
>>714
単にそれだけですか?
Symbolはimmutableだし
>>708
・(注意深く扱えば)アクセスが速い
・(注意深く扱えば)メモリが少なくてすむ
・(注意深く扱えば)分かりやすい

不注意に使うと何もかも台無しだがな
Symbolって何で軽いんだっけ?
:symbol.object_id == :symbol.object_id
720デフォルトの名無しさん:03/10/20 23:54
代入 (=) って返り値もってるんですか?

っていうか、メソッドって全部返り値もってるんですか?
全部持ってます
def a
 return
end

p a #=> nil

空の return は nil なのか。

>>720
代入はメソッドじゃ(ry
symbolのidって不変?
これってhash値になるの?
>>723
ガタガタぬかす前にソース読め。
725699:03/10/21 00:54
>>701
全部読んでくれてありがとう。
>>722
def hoge=(arg)
  @hoge=arg
end
こういう奴をいってるんでない?わからんけど。
の前にこれはメソッドに分類される?

>>725
まあな。


いや読んでねえよ
727デフォルトの名無しさん:03/10/21 05:46
>>722 見て思ったけど
メソッドと変数に同じ名前をつかったら、困るな。
>>727
なので、なんか警告出すのはどうか、という意見もある。
どういう条件で出すべきなのかが難しいんだがな。
「同じ名前を付けたらエラー」でいいと思うが…
730デフォルトの名無しさん:03/10/21 14:54
実行する前に、ケアレスミスをチェックしてくれるツールがあると便利なんですが。
そんなのないですかね。

たとえば、まだ作ってない、オブジェクトを使ってる(変な変数がある)だとか
endで閉じてないよ、だとか
スペルミスじゃない?とか
あと、クラス名が大文字で始まってないよだとか。。

あると結構便利だとおもうのですが。
a がメソッドか変数かを見分ける方法はある?
>>730
-cw とか。
つーかいいかげん変数を宣言付きにしてくれよ
脳内宣言で我慢しろよ
/.のコピペですかおめでたいですね
737デフォルトの名無しさん:03/10/21 20:52
'A'..'Z'をランダムに返す関数ってどう書くの?
>>737
こう書くの〜
>>737
(?A+rand(26)).chr
>>737
class Range; def rand; self.to_a[Kernel::rand*self.size]; end; end
>>739
Rubyって全然オブジェクト指向じゃないね。
>>741
(?A..?Z).atRand

…な〜んてねw
5年前から煽りのレベルが進歩しないねー。回答し尽くされてる。
なぜ Ruby は文字リテラルの結合ができない?
irb(main):001:0> { "foo¥n"
irb(main):002:1> "bar" => "baz" }
SyntaxError: compile error
(irb):1: odd number list for Hash
(irb):2: syntax error
"bar" => "baz" }
^
(irb):2: syntax error
"bar" => "baz" }
    ^
    from (irb):2
>>744
\n は ; だと思ってくれ。
"foo\n" のあとで改行入れなければつながりますが何か。
c なんかと違って ruby では改行がある程度意味を持つのに
そんな文句をいうのは筋違い。
747744:03/10/22 23:58
>>745 意味無いじゃん

俺がCで文字リテラルの結合を使うシチュエーションは、間に改行が挟まるときくらいのものなのだが、

printf(
 "This program is free software; you can redistribute it and/or modify¥n"
 "it under the terms of the GNU General Public License as published by¥n"
 "the Free Software Foundation; either version 2 of the License, or¥n"
 "(at your option) any later version.¥n"
);

Ruby はこういう使い方ができないと。
748744:03/10/23 00:04
>>746 たとえば
printf(
 "%s",
 "foo"
);
とかがエラーになるというなら「そういうもんか」と諦めもつくんだがな。
a = "a"
"b"
これの結果 a == "ab" になってもいいなら採用可能かもしれんから
devにでもなげたら?
>>746
できないかどうか聞いているのに、文句をいうのは筋違いというあんたが筋違い。
>>748
何言ってるのかわからん。諦めずにがんばれ。
>>744
たぶん Ruby 使いはそういう場合にはヒアドキュメントを使うんだと思われ。
>>750
文句でない可能性はあっても、できないかどうか聞いていることはありえない。
754744:03/10/23 01:45
>>751 がんばるよ。
「上に書いた二つのprintfのうち片方は通って、片方は通らない。この違いはなぜ発生
するのか?"("の直後で改行可能なら対応する")"まで改行可能でもいいんじゃないの
か?『文が続いてるっぽい所では続いてるとみなす』という方針なら。」
ということが言いたかった。分かりづらくてすまん。

>>753 同意というか、できないかどうかはすでに明らか。
>>753
なぜかを聞いているんだね。結論に変わりはないがスマソ。
756mput ◆mput.861Kw :03/10/23 04:51
ruby-dev に投げました。
"abcd"\
"efgh"

は出来ないっけ?
別に+で足せばいいように思うけど。
漏れも最初のころは、

if condition_a
|| condition_b
|| condtiion_c then

とは書けなくて、

if condition_a ||
condition_b ||
condtiion_c then

みたいに書かなきゃいけないのに違和感おぼえたよ。
「漏れ」ってどういう意味?
恥ずかしながら、文字列リテラルの結合って初めて知った。
漏れと結合しませんか?
ウホッ!
here document使わないの?

ところで、here document内の改行は
\r\nになるの?
\nになるの?
どっち?
ヒアドキュメントがインデントできたらなぁ。
\nらしい
ヒアウイゴーアゲイン
>>765
メチャメチャ強引に

eval <<FOO.gsub!(/^ /, '')
def hoge
puts <<-BAR.gsub!(/^ /, '')
hoge
BAR
end
FOO

hoge
eval呼ぶ時点で糞
>>769
んー、違うよー。eval はただの例示のつもり。
gsub! を使うところが言いたかったところ。
>>759
あー、それ俺も思ったわ。
あと妙に整合性がない所だと、数値リテラルの区切りに '_' が使えるけど、
0x_FFってのは駄目なんだよな。上位桁をはぶんちょしない自動生成でハマった。
中学や高校の数学で、方程式を途中で改行しなけりゃならないときには、
演算子を行末に置かないように、って習ったからかな。
>>772
それは数学論文の組み方とまるっきり逆だぞ。
紙に改行する場合はページを跨ぐこともあるから、
式が続くすることが分かるように演算子は行末に書くもんだ。
行指向言語だな
昔のVBと同じだ
今さら何を>行指向
ぬ、ナナシゲットされた

>>773
演算子の後で切るってのはCのスタイルガイドでもそう。

>>774
今のVBも同じだろ。VBは行末に二項演算子やカンマがあって続きがあることが
明白でも、 _ で行継続しないとエラーになるね。
777デフォルトの名無しさん:03/10/24 00:08
aaa.bbb.ccc.dddがxxx.yyy.zzz.www/pに属するかどうか判定するモジュールとかありますか?
さっぱりわからん
宇宙人ですか?>777
ナナナゲット
>>777笑った
宇宙人キター
782デフォルトの名無しさん:03/10/24 00:15
192.168.10.4が192.168.10.0/24に属するかどうか判定するモジュールとかありますか?
ツッコミまくりな割には誰も知らないんだな
784デフォルトの名無しさん:03/10/24 00:25
Ruby原作者のまつもとさんが、日経バイトの記事の中で、20年後はアスペクト指向だみたいなことを書いているが、
何のことだろう?
誰かアスペクト指向について知ってる人いたら教えてくれ。
何かの本か雑誌に解説がないかな?
require 'ipaddr'
ip = IPAddr.new('192.168.10.4')
net = IPAddr.new('192.168.10.0/24')
p net.include?(ip) #=> true
>>784
AspectJ を調べれ。
>>783
ワラタ。聞く立場の態度じゃねー。
そんな態度だとよほど親切な人じゃないと答えてくれないよ
>>773
だけど改行後に演算子置くのってプログラミングだと便利なんだよね
SQLだと、項目の追加がしやすいよう「改行後⇒カンマ」の記法を良く見かけるし。
でも、まあRubyはこのまんまでいいけど
789デフォルトの名無しさん:03/10/24 01:30
アスペか。。。。。



ウワーン
玄人指向なら知ってるんだが…
エージェントスミス
>>788
逆にRubyの場合は追加しやすいように [a,] や {1=>2,} が合法になったし
数式はクエリと違うんで項を追加したいということがどれほどあるのかはギモン
>>792
おお、Rubyにも{1=>2,} あるんでしか。
つーか、末尾に nil が無駄に入ってしまうってことになるんではないの?

と思って、 p [1,].size, "\n" とやったら1だった。サンクス
>>784
アスペクト指向言語は多数ありますが
日本で有名なのはAspectJとMixJuiceあたりです。

AspectJはコード中の指定条件に一致する所に処理を後付けで追加します。
処理のログ作成などAspectJの仕組みにうまく合う機能を非常に効率的に
実現できます。Eclipse Technology Projectに加わっており世界的に有名です。

AspectJ Tips and Pitfalls
http://www.oucc.org/~tail/aspectj/index_noframe.html
aspectj project (オフイシャル)
http://www.eclipse.org/aspectj/

MixJuiceはメソッド単位の差分プログラミングを行います。
元のソースファイルを一切修正しない条件コンパイルを実現できます。
ソースコードの分岐や複数バージョンの保守など汎用的に役立ちます。
ツールによる自動プログラミングの基盤技術としても活用できるでしょう。
オブジェクト指向を自然な形で強化し有効な場面が多いMixJuiceには
大いに将来性があると考えます。

オブジェクト指向言語は間違っていた!--- 新世紀言語 MixJuice ---
http://www.ogis-ri.co.jp/otc/hiroba/technical/MixJuice/
プログラミング言語 MixJuice (オフイシャル)
http://staff.aist.go.jp/y-ichisugi/ja/mj/
AspectRはまだか?
MixJuiceというと、あのワンダバスタイルな言語か?
RubyのMix-inとどこが違うの?
なんか adviceみたいだな。
>>795
AspectRはあるみたいですが、、、
http://aspectr.sourceforge.net/
複数の人で作るようなでっかいプログラム作るときに便利って事? < アスペクトとかいうの
ノー
いや、普通にべんりだろ。
BeatleJuice, BeatleJuice, BeatleJuice...
西川のりおキタ━━━━━━(゚∀゚)━━━━━━!!!!
グレートチキンパワーズ
807デフォルトの名無しさん:03/10/25 16:25
グサーンキタ━━━━(°∀°)━━━━!!!!
808デフォルトの名無しさん:03/10/25 16:25
どんな印刷やねん。
ところで、>>782>>785で納得したのか?
810782:03/10/25 19:46
なんで答えなきゃいけないんだよバーカ。
そりゃそうだ

黙秘権は正当な権利だよ
>>810
こぉいつぅ。恥ずかしがりおって
質問です。
Linux でファイル所有者の権限で動くよう、rubyのファイルに -rwsr-xr-x を設定して実行したんですが、
Process.euid がファイル所有者の権限では動作してくれません。ログインしたユーザ権限で実行されます。
なにか必要な手順があるのでしょうか?

# ↓uid.rb。ファイルは -rwsr-xr-x で uid は909。
# コレをuid 500の奴が実行するとuid、euidどちらも500で動く。euidだけは909になって欲しい
#!/usr/bin/ruby
print "uid: ", Process.uid, "\n" #=>500
print "euid:", Process.euid, "\n" #=>500

# perlでは同じ状況を作るとできる事を確認
# ファイルは -rwsr-xr-x で uid は909。
#!/usr/bin/perl -U
print "uid :$<\n"; #=>500
print "euid:$>\n"; #=>909
ruby自身がsetuidされてないから無理。
suidruby作るか、他のsuidされた外部コマンド経由で呼ぶか。
>>782!=(>>783=>>810)なんで・・・
>>797
Mix-inとMixJuiceは違うよ。
Mix-inは、Javaでいうと「メソッド定義ができるinterface」というかんじだが
MixJuiceの機能は「Classを分割して定義できる」ことであり、これはRubyでは
あたりまえのようにできること。
Rubyでは既存クラスに対して別ファイルで機能を追加することが簡単にできるけど
これをjavaで可能にしたのがMixJuice。
>>814
マジっすか (;´д`)
たしかにperlもsuidperlとかいうのをインストールしたらできた気がする

ありがとうございます
818817:03/10/26 10:53
あっ、よくよく考えたらsuidruby作るのってrubyのmain関数あたりで
setuid(geteuid());
の行を付け加えるだけ?
簡単そうですな、やってみよ。
>>818
もっと考えた方がいいと思うが、自分だけで使うならいいか。
820デフォルトの名無しさん:03/10/26 15:05
 Cygwin + Apache 1.3.28 + ruby for cygwin 1.6.8 です。
Ruby で CGI を作ったんですが、ローカルとサーバーでの動作が異なって困っています。

 Apache 1.3.28 + rubywin 1.6.8 で、正常に例外捕捉できていたものが、
上記環境とサーバーでは例外捕捉されず、スクリプトが中断してしまいます。

 どうすればよいのでしょうか?
>>820
補足できないのは何の例外?
822デフォルトの名無しさん:03/10/26 15:16
>>820 ちなみに、どこのサーバーなのか教えてくれますか?
823デフォルトの名無しさん:03/10/26 15:17
ruby でのcgi開発って、parse error も表示してもらえるように、

begin
// ライブラリの読み込み処理
rescue Exception
// エラー表示
end


なんてやるのが定番だと思うんですけど、どうでしょう
824820:03/10/26 15:29
>>821-823
 早速のレスありがとうございます。
例外はStandardError以下に自分で例外クラスを決めてraiseしたりしてるんですが、
raiseしたところでストップしてしまうようです。

 サーバーは今レンタルさせていただいている無料サーバーと、
友人が立てている Debian + Apache1.3.28 です。
あと、ローカル(前述の環境)で試しても捕捉されず停止します。

>>823
 そうしてるんですが、捕捉されません。
以前補足できていたときも、paese error は 500 エラーになってました…。
>>824
apache の error ログ
827820:03/10/26 16:21
 apache のエラーログには何も吐き出されません。
関係ないエラー warning: escaped terminator '"' inside string interpolation は出ますが…。
これは "" の中で " を表示させるために \ でエスケープしてるために出るエラーなので、
回避の必要はないと思ってますが、ダメですか?ダメなら %Q とかですか…。
828820:03/10/26 21:09
 解決しました。捕捉側のプログラムミスでした。

 ところでその修正過程で別な問題が出たのですが、
begin / while / for / until などの構文内で定義した変数及びインスタンスは、
その外部からは見えないんですか?代入による書き換えは見えるようですが…。
例えば

--
i, j = [0, 0]
while i < 10
 array[i] = Array.new
 while j < 5
  array[i][j] = " "
  j += 1
 end
 i += 1
end
--

みたいにして多次元配列を作って、外部から

--
array[i].each_index do |num|

end
--

みたいにアクセスすることはできないんですか?
…undefined method `[]' for nil:NilClass エラーになってしまうんです。
array = Array.new(10) { Array.new(5, " ") }
でいいんじゃなかったかな。
830829:03/10/26 21:16
ごめん、>>828てけとーにレスかいてしまった。
ヘルプで変数のスコープのところを読んでみるといい。
ブロック内で定義したら、ブロック抜けたときに初期化されちゃうよ。
831820:03/10/26 21:22
>>830
 個数が起動時によって異なる場合、解決策はないですか?困った…。
W*H の二重配列を作りたいなら、

W=5
H=10

a=Array.new(W){|i| Array.new(H){|j| i*j}}
p a #=> [[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4, 6, 8]]

これでよいのでは?
833832:03/10/26 21:31
例にあげたのは W = 5; H = 10 ではなくて、W=3; H = 5 でしたー。
834820:03/10/26 21:40
for 構文を使うしかないのでしょうか?for 構文はブロックを生成しないんですよね。
835820:03/10/26 21:41
>>832
 なるほど、こんなやり方もあるんですね。ありがとうございます。
Ruby使いはロビイスト
>>834
ブロックの外 (前) で array を初期化しとけば?
838817:03/10/26 23:40
>>819
たしかに。よく考えたら汎用的じゃないんですよね。
しかも、suidruby作ろうにも1行付け足すだけじゃ無理だということがわかりましたし。マンドクセ…

作ってるものがCGIなんで、apache のsu_execに頼ろうかと思ってます。
アドバイスさんくすです
>>818
いや、それじゃダメだろ。
>>838
Cでスクリプトを起動するプログラムを書いて、そいつをset-user-idするのが簡単。
841デフォルトの名無しさん:03/10/27 00:42
1.8(or 1.6)の.chm版ヘルプってないの?
./configure --program-prefix=s でインストールして chmod する方が簡単では?
>>838
「マンドクセ」って何?
>>842
それだけじゃチェックが甘いので、こういうのを使ってる。

----BEGIN BASE64----(sruby.diff.gz)
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
wBSqi1tyAcmQXEPFef0v4pdoEGcaAAA=
----END BASE64----
846817:03/10/28 01:07
>>842 >>844
ruby自体を変えてしまうのはなぁ…。
他のサーバにそのCGI持ってったときにrubyもコンパイルしてねってのがね。

apacheのsuexecはuidが100以下のユーザだと実行できないので却下になりました
>>840の方法でやろうと思います。…マンドクセ
rubyと関係ない話題ですね。以降放置でおながいします。
まあまあ皆さんこんな心温まる話もあるんですよ。
http://www.miche.info/~mi1171/cgi-bin/source/gift0062.htm
うわぁ
まじめに全部読んじゃったじゃんか
>>847
心温まらねえよヽ(`Д´)ノ ウワァァァァーーーーーーン!!!
>>847
読んで、勃起しつつ泣いた。


perlのソースと比べて一億倍読みやすいって本当ですか?

俺がperlのソースを汚いって思うのはどんなことかというと

・正規表現とか文字列内置換とか入り混じっててメタ文字連発でキモい
・変数が型無しなので混乱しやすい
・奇妙な演算子が一杯で覚えるのも大変

なんですが…この辺rubyではどうなってるんでしょうか
>>851
一瞬、インタプリタのソースコードの話かと思った。
確かに、perlのソースコードよりもrubyのソースコードのほうが
一億倍読みやすいな。

そうじゃなくてそれぞれの言語で書かれたスクリプトの読みやすさと
いうことになると、そんなもん書き方次第だろう。
>>851の言ってるようなレベルでは、PerlもRubyも大差ない。

ただ、Perlは読みにくいスクリプトを書いてしまいがちな言語であり、
Rubyは読みやすいスクリプトを書きやすい言語だとは思う。
平均を取って一億倍の差がつくってほどじゃないけどな。
>>852
あーそういう事なら納得です。thx

というか、今調べたら一億倍というのはコードの話でした。すんません
一億倍は嘘だな。
Perlはきれいに書こうと思っても書けないし、それはPerl道からはずれる。
Rubyはきれいに書こうと思えば書ける。Perlのように書こうと思えば書けるがね。
RubyでもJavaでもそうだけど、なんでもかんでもオブジェクトに
してしまうとかなり開発効率落ちない?
標準関数なんかは無理にオブジェクトにしなくたっていいと思うんだが。
C++とかPerlみたいなオブジェクト指向を強制しない言語の方が
安心感があるよ。
あっそう、で?
Rubyはふつうに手続き型言語のように書けるけど?
実行効率はともかく、開発効率が落ちると感じたことは無いなあ。
単にオブジェクト指向が理解できてないだけなんじゃない?
>>859
同意
なんでもかんでもオブジェクトな Smalltalk は
開発効率めちゃくちゃ開発効率が高いですね。
なんでもかんでもオブジェクトなSmalltalkを使う人は日本語めちゃくちゃですね
オブジェクト指向といっても中途半端なオブジェクト指向って逆に使いにくいよな。
C++などの中途半端なオブジェクト指向は最悪
Smalltalkは使ったことないから知らないけど
>>861
なんでもかんでもオブジェクトなのはRubyも一緒。
Smalltalkはなんでもかんでもメッセージ送信なのが特色。
(テンポラリ変数の宣言とグローバル変数以外への代入を除く)
だから開発効率めちゃくちゃ開発効率が高いのさw
まあ、オブジェクト指向が使いやすいと思うかどうかってのは人によるのではないかと。

漏れ的には簡単なプログラムを組むぐらいだったら C とか perl の方が使いやすいし、
ちょっと規模が大きくなるようだと ruby の方が使いやすい。

オブジェクト指向の言語って標準ライブラリ使ってナンボって感じがあるからね。
大きなプログラム書くときでないと、どんなライブラリがあるかなんて調べる気にもならないし。
簡単なプログラム作るときは、頭使わない分 perl とかの方が楽
>>863
C++はマルチパラダイム言語でOOPLを目指したものじゃない。
OOPもできるしそう使うのは勝手だけれど、C++になじまない俺OOPを
勝手にイメージしといて使いづらいと文句をいうのはお門違い。
Javaは文法をC++に模しただけで、中身は別物。
Rubyは作者自らOOPLであると公言してはばからないから
OOPしにくいと感じれば文句はどんどん言えばいい。しかし…
Smalltalkでコードの一片も書けんでよくC++のOOP云々ができるもんだ。
>>865
話が抽象的すぎる。
手続き型言語だと c(b(a())) なのがオブジェクト指向型言語だと a().b().c()。
読みやすい。
オブジェクト指向型でも CLOS なんかはまた別。
(c (b (a)))
がいしゅつな話題を飽きもせずによくもまぁ・・・
>>868
Smalltalk や Objective-C は?
>>870
「がいしゅつ」って?
既出(きしゅつ)の間違いじゃないのかい?
873863:03/10/29 01:38
>>866
>C++になじまない俺OOPを勝手にイメージしといて使いづらいと文句をいうのはお門違い。
この辺りがよくわからないけど、言いたいことはとにかく、
JavaやRubyに比べてC++はOOPしにくいなって話です。ちょっと>>863は言葉が悪かったですね。

まあ、そう思ったのは、
>C++はマルチパラダイム言語でOOPLを目指したものじゃない。
コレを知らなかったわけだからですけど。無知なもんで。
>>871
a b c
ってか、レシーバ指定してないし! ホントにふだんから
オブジェクト指向してるの? >>868
this.a().b().c() か a.b().c() と思ってくれ。
>>873
Rubyなんてしょっぱい言語でOOP分かった気分に浸ってないで、
OOPの変遷や種類を勉強しろって。メッセージパッシングメタファなのか、
手続きによるデータの抽象化手法なのか、型によるデータの抽象化手法なのか
それらを越えた関数型アプローチなのかとか。クラスベースなのか、
インスタンスベースなのか、それらを超越した関数型…(ry
Programming in Logic マンセー
作りたいものを作れれば正直なんでもいい
>>872
皆さんそのことはご存知ですのでお気になさらず
[[a b] c]
(((a))) ; b cは名無し
>>876 は関数型を無闇にありがたがってる臭いがするな。
どのへんが「超越」してるのか説明してみて欲しい。
Programming in Logic マンセー
>>876 の言う関数型言語は Lisp や Scheme の系統なのか
Haskell や Clean の系統なのか
普通のプログラマにとっての思考や常識を超越してるんでない?
文が値を持つのは楽でよい
大体Rubyで大規模なプログラムなんか組まないだろ。
スクリプトってのは書き捨てプログラミングの用途が多いんだから
本格的なOOPはそんなに必要ないのでは?
まーでも大人のおもちゃとしてはいいのだろうな。
>>882 は関数型を無闇にけむたがってる臭いがするな。
どのへんが「超越」してるのか説明してみてやってもいいが、
その前にお前が、OOの何たるかを語るに必須かつ基本の
- message passing metaphor
- abstract data type vs procedural data abstraction
- class-based vs instance-based OO
の3つのレイヤーついてどのくらい理解できているのか端的に語ってみろ。
念のために言っておくが、googleじゃ答えはすぐでてこんぞ。
なんで>>889はこんなに偉そうなの?
>>890>>889を無闇にけむたがってる臭いがするな。
どのへんが「偉そう」なのか説明してみて欲しい。
>>889の馬鹿さ加減が「超越」してるんだろ
さて、それでは、 Ruby の話題に戻ります。

↓どうぞー。
1.8.1まだー
連休中に出るかのぅ。
2.0まだー
1.9ってとばしてもいいんじゃないのかなぁ
普及するかどうか分からないなんて言ってるくらいだし
898882:03/10/29 18:32
>>889
ほとんど理解できていないので拝聴させてください。
>>889,>>898
続きは他所のスレでやってください。
>>899
思考停止した人は黙っていてください。
>>900
関数型言語の話は関数型言語のスレでやればいいでしょ。

>>895
明日ようやくpreview1だ。少なくとも次の連休には出ない。関西O+Fもあるし。

>>896
あと数年待て。
902890:03/10/29 20:16
>>891
「説明してみてやってもいい」「語ってみろ」
というあたりが偉そう。

関数型言語は好きだからけむたくはないが、 >>889 のようにむやみに
偉そうな香具師は確かにけむたい。
実際とっても偉い人なんだよこの愚民
904デフォルトの名無しさん:03/10/29 20:52
プロバイダでruby使えるんです
xmlパーサー使いたいけどモジュールインストールされてません
ファイルをアップロードして requireとか出来ないんでしょうか?
>>901
> あと数年待て。
数年かよ !?
全然けむたくない。
>>904
pure Ruby なパーサなら、どっか適当なディレクトリに設置して、
プログラム側でこんな感じ。

$:<<"設置したどっか適当なディレクトリ"
require "XMLパーサー"
>>889
だからあなたの言う関数型言語はLisp系なのかML系なのか?
Lispです
>>903 は生徒会長
偉いやつは偉ぶれ。
>>908
すぐ分かる違いで型付けの強さがあるからな
>>905
数年どころか十数年、ということにはならない……と信じたい。
十数年先も生き残っているなら言語として成功でしょ。
rubikitch引導渡されてる・・・
グルって言葉は, 日本では例の事件以悪い印象を与える語になってしまい
ましたが, Lisp の guru である Paul Graham 氏のページでの Ruby の取り
上げられ方が面白かったので貼ってしまいました(既出ならスマソ)。
ttp://store.yahoo.com/paulgraham/fix.html
wimpy: ショボい; scary: キョワい; kludge: 取り繕い, 下手なデバッグ, DQNなパッチ
awkward: ぶきっちょな; dialect: 方言
>>904
REXMLなら100% Rubyだから、ファイルをアップロードして
$: にパスを追加してやれば使える。
クールなコードを読むことは, すごい刺激だ。一クロックの無駄もなく, すべての命令が余計でなく, そして何も不足していない, アセンブラのコード。常識をひっくり返すような, 聞いたこともないようなアルゴリズムと, その実装。
心にダイレクトに, びりびりと感じる。それは共感であったり, 嫌悪感であったりする。「俺はここにいる。コードを書いている」プログラマーの叫びが聞こえてくる。彼らのように, 僕はコードで自己を表現したいと思う。
音楽家が音楽で, ダンサーが踊りで, 小説家が小説で, 自己を表現するように。だから, 本当にクールなコードだけしか他人には見せたくない。センスのない, ただ動けばいいというコード。そんなものはクソだ。捨ててしまえ。
何十, 何百という思考をめぐらし, いくつものパターンを試す。いつしか, コードが自分の思考の一部になってくる。そうしてできた, 最高のコードは, まさに自分の脳の一部なのだ。屑であって良いわけがない。
コードを通して自分の思いをぶつけるのだ。
自分の命を削って, コードに注ぎ込むのだ。
>>886
ここでズッコケた。
> そのzの最も大きなものの一つとして私が考えるのが、マクロだ([注5])。
こっちのほうがよっぽど関数型言語の特徴とメリットを表してる。
ttp://www.sampou.org/haskell/article/whyfp.html
>>920
LispとMLは関数型言語の両極端
同一視する方が間違ってる
まぁPaul GrahamはArcをきちんと世に出してからデカイこと言えって感じだ。
死にたい。
がんばれ。
>>924
鬱病にがんばれは逆効果
がんばるな。
がんばらない。あきらめない。
928904:03/10/30 15:45
xmlscanってのを入れてみた。requireできましたありがとう。
REXMLはダウンロードサイトに繋がらなかった・・
そしてXMLを出力したいんだけど オススメのライブラリは?
DOM形式なら慣れてるんだけど 他のでもいいです。
スクリプトをコンパイルしてバイナリ化するのは2.0まで無理か…
業務で使えねーよヽ(`Д´)ノ
[Ruby]1.8.1 preview1予告
[ruby-dev:21747]にある通り、明日30日午後4時ごろにリリースする。要望、注文、文句、バグレポートなどはお早めに。
exerbはコメントすら削らずに内包してしまうので、コメントの多いプログラムだと予めコメント行を削ってからビルドするだけでも結構サイズ変わってくる
>>928
REXML
>>931
でも、実行時にコンパイルするのは Exerb でも変わらんよね?
>934
そう。なんでこれが未踏に採択されてるのか不思議
Rubyのインタプリタとソース・必要なライブラリを全部1ファイルに詰め込んで実行時展開するだけでしょう
>>931>>935
ソースを隠蔽したいならこっち。Exerbと組み合わせも可。
http://bruby.sourceforge.jp/
937憶測:03/10/30 21:08
未踏に採択されたときにはビルド時コンパイルのつもりだったけど、年度が替わるまでにそれが作成できなかったから、しょうがなく実行時コンパイルにした、とか。
* ローディング速度が向上することがあります。
* ファイルサイズが小さくなることがあります。
自信なさげなドキュメントだな・・・未踏に恨みがあるわけじゃないけど、なんでこんなの選んだんだろうってのはやっぱり思う
全ての場合においてファイルサイズが小さくなるわけでないのであれば、
「ファイルサイズが小さくなることがあります」というのは
自身なさげでもなんでもなく、ただ単に事実を言っているだけでは?
>>930
ギャルのパンティおくれ
っていうかおまえだれだ
942333:03/10/30 21:58
a=[[1,2,3],[4,5,6]] のような2重配列を行列と考え、転置させる関数 trans(a) を考えよ。
これできますか??
% ruby -e'p [[1,2,3],[4,5,6]].transpose'
[[1, 4], [2, 5], [3, 6]]

できますかも何も...
944943:03/10/30 22:31
あくまで自分で実装するって事なら
def trans(a); a.inject([[],[],[]) {|r,i| r.inject(i) {|i,a| a << i,shift; i }; r } end
>>938
このプロジェクトに文句を言っていたら、その他の未踏プロジェクトのレベルはどうなるのかと。
946943すまんミスった:03/10/30 22:35
def trans(a); a.inject([[],[],[]]) {|r,i| r.inject(i) {|i,a| a << i.shift; i }; r } end
947333:03/10/30 22:50
ありがとうございます。非常に助かります。
948333:03/10/30 22:56
def msize(a)
b=[]
a.length.times{b << []}
print "aと同じサイズの空行列は、"
p b
print "行列aのサイズは、 "
[a.length, a[0].length]
end
a=[[1,2,3],[4,5,6]]
p msize(a)

こういったパターンでプログラムしてもらいたいんですが??
全くルビーについてわかりません。
すいません。
>>948
宿題?
950333:03/10/30 23:14
はい・・・・
全くわからないんです。
951333:03/10/30 23:24
お願いします。お願いします
つまらん、お前の話はつまらん。
953333:03/10/30 23:29
お願いします
954ひみつの検疫さん:2024/06/24(月) 04:50:07 ID:MarkedRes
汚染を除去しました。
宿題なら全くわからないなんてことはないだろ?
授業で関連することをやったのでは?
956333:03/10/31 03:03
うるせー。さっさと教えろ。
injectってよく分からんな。使えないと勿体無い??
958333:03/10/31 06:32
答えまだ? ガッコ行く前に頼むよ。
学校へ行く時間が分かれば、それまでに書いて……
960333:03/10/31 08:51
お願いします。
961333:03/10/31 08:52
上の二回の書き込みは僕ではありません。
偽物にしろ本物にしろウザかったから書いてあげない。
こーいう行為を認めちゃ今後も続く者があらわれるから。
963333:03/10/31 10:22
>>956,958,960,961は僕ではありません

別になぜそうなるかなんてことはどうでもいいんです・・・・
答えだけ教えてください
みんなだって宿題は自分だけでやるものではないでしょう!!
964333:03/10/31 11:00
ごめんなさい。正直に言います。
宿題じゃなくて博士論文の一部なんです。
教えてくれたら謝辞に書きますんで、どうかお願いします。
954書いたの誰だ!
いちいちAntiVirusが警告出してくるんでウザイよ!
>>964
結局今は何を聞いてるの?
>>964
array.c の rb_ary_transpose() でも読んだら?
>>963>>964
うへぇ。そんなんでよく修士通ったな。
こんなんで通るようじゃダメポ。
つーか答えならもう出てるだろ。あれでわからんようなら中学からやり直せ。
アイカワラズネタニツラレスギデス
会話のネタがないのでつき合ってあげてるんですよ。
最近は授業に Ruby を採用している学校って多いんだろうか?
ゲーム関係の話題はゲーム製作板へどうぞ。
>>968
「ダメポ」って何?
ああ、あのエロゲが原作の糞アニメのことな
「エロゲ」って何?
たぶん、春画を主体とした自慰を支援するためのソフトウエア。

ダメポは知らない。
もうだめぽ:

P2Pのファイル交換ソフトでアプリを交換してタイフォされた男が
2ちゃんに最後に書き残した言葉「もうだめぽ」から。
978もうだめぽの起源:03/10/31 21:29
>>968が「ダメ」ではなく「ダメポ」と書く必要性はあったの?
>>957
漏れもよくわかんないので、inject 使ってるひとを見ると、すげー、と思ってしまう。
>>979

「だめっぽい」って書こうと思って、あわてて書けなかったらしい。
ていうか、もうRubyの話題やめようぜ。
雑談ばっかりしよう
>>971
某大学では、3年次の授業で使ってたなぁ。
でも「obj.to_s()」とか「obj.length()」とか、コードにやたら
カッコが多かった覚えが…
自分の趣味で(その言語における)非標準的な
スタイルを生徒に教え込むのはやめてほしいものデス。
「デス」って半角カタカナにする必要性あるの?
あるのデスタ!
>>980
折れはinjectを、余計な変数を定義せずに再帰的な処理が書ける。
というようなイメージでとらえてる。それが正しいのかどうかわか
らないけど。配列の各要素の和を求める例を考えるとわかりやすいよ。

1から10までの整数の和をeachで書くと

r = 0
(1..10).each { |i| r = r + i }

となるところ、injectだと

(1..10).inject(0) { |r,i| r + i }

rを外で定義する必要がなくなり、代入もなくなりちょっとすっき
りする。lispで再帰を使うときの気持ちよさに通じるものがあるか
もしれぬ。
再帰じゃなくて反復
>>983
漏れも必要性ないと思うデス。使ってるやつはもうダメポ。がいしゅつだったらスマソ
 ノーー    ク   亜
  ==    巴   心   〜〜〜
  メ レ
次スレ、マダァー?
injectってなんだろうって思ったら
std::accumulateみたいなものか
>>990
それはSTLってやつデスか?
「デス」って半角カタカナにする必要性あるの?
ないデス
半角にすることによって鋭さを演出するのデス
それは演出の方法を間違っているな。
もう今後は Ruby スレ要らないよね?
>>992
必要性ないに決まってるデス。あんたくどいデス。くどいあんたダメポ。
lisp とかでよくある foldl/foldr だろ
ふーん、foldrとかって lispで一般的な関数だったのか。
一般的な elispの範囲しか知らない俺は、
さきほどウニ板の emacsスレで書き散らされたコード見て
( ゚д゚)ポカーンとしてたよ。
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。