トップページ⇒tech
1001コメント323KB

Ruby初心者質問スレPart2

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん05/02/08 03:02:27
オブジェクト指向スクリプト言語Rubyについての質問スレッドです。
Ruby Home Page
http://www.ruby-lang.org/ja/

前スレ
Ruby初心者質問スレPart1
http://pc5.2ch.net/test/read.cgi/tech/1100534824/

本スレ
Rubyについて Part 14
http://pc5.2ch.net/test/read.cgi/tech/1103997158/

0002デフォルトの名無しさん05/02/08 03:03:17
= 関連スレ
: 【Ruby】RubyでCGI
 http://pc5.2ch.net/test/read.cgi/php/988948655/
: 【最高言語】 Rubyist Magazine創刊 【ルビま!】
 http://pc5.2ch.net/test/read.cgi/tech/1094825807/
= 関連スレ?
: RUBYの宿題教えてください。
 http://pc5.2ch.net/test/read.cgi/tech/1106572657/


= 関連リンク
: リファレンス
 http://www.ruby-lang.org/ja/man/
: Ruby Weekly News @ Ruby Garden
 http://www.rubygarden.org/rurl/html/
: ruby-cvs
 http://rrr.jin.gr.jp/rwiki?cmd=view;name=ruby-cvs
: Ruby hotlinks 五月雨版
 http://rrr.jin.gr.jp/~znz/samidare/
: 日本Rubyの会
 http://jp.rubyist.net/
: Rubyist Magazine
 http://jp.rubyist.net/magazine/
: <rubyXML/>
 http://www.rubyxml.com/
: Matzにっき
 http://www.rubyist.net/~matz/
0003デフォルトの名無しさん05/02/08 03:22:39
Thread.new乙
0004デフォルトの名無しさん05/02/08 03:26:23
Rubyの会のサイトはIEで表示がおかしくなる貴重なサイトだな
0005デフォルトの名無しさん05/02/08 03:55:35
スレ統合するんじゃなかったっけ
0006デフォルトの名無しさん05/02/08 10:18:01
無職なんですがRuby覚えたらご飯食べれるようになりますか?
0007 ◆m7YeytgDFE 05/02/08 10:29:46
>>6
可能性がわずかにはあるかも。開発にRubyを使う案件って稀みたいです。
C++など他の言語で開発する際に、支援ツールをさくっと作るには便利ですよ。
私もそれでかなり重宝してます。
0008デフォルトの名無しさん05/02/08 12:03:30
>>5
実質的に統合されるなら削除依頼出します。
0009デフォルトの名無しさん05/02/09 07:08:10
こっちはこっちで需要あるから
別に統合しなくても良いと思うよ
0010デフォルトの名無しさん05/02/09 14:03:12
同感。
前スレも3ヶ月で1スレ消費程度に需要があったし。
……MW 祭りやらスクリプト爆撃の影響が、かなりある気がするけど。
0011デフォルトの名無しさん05/02/09 15:07:28
>>10
MW版Rubyの進捗状況が気になって同氏のWikiを拝見しようと思ったら、
サーバが落ちてました...。一時的なダウンなのかな?
0012デフォルトの名無しさん05/02/09 16:48:49
割と頻繁に落ちてますね。
なお、進捗なんてないのでいちいち見る必要はなさそうです。
0013デフォルトの名無しさん05/02/09 20:44:56
本人が落ちてます。
0014デフォルトの名無しさん05/02/10 09:24:15
だから 2ch のカキコが止まったのか。
0015デフォルトの名無しさん05/02/11 14:07:47
ここで暴れてるようでつhttp://pc5.2ch.net/test/read.cgi/tech/1103997158/
0016デフォルトの名無しさん05/02/13 08:38:33
長文ですみませんが、教えてください。

文字列を外からあたえて、それに応じてインスタンスを
作成する方法に関してです。以下では、簡単のために、
ClassAと ClassB の二つにして説明します。
class ClassA
 def initialize
  end
 def out
  puts 'AAAA'
 end
end
class ClassB
 def initialize
 end
 def out
  puts 'BBBB'
 end
end
(1)引数で ClassA もしくは ClassB という文字列を与えて、
 二つを使いわけることを考えます。
 もちろん、場合分けして明示的に書けば可能です。
(次の記事に続きます)
0017デフォルトの名無しさん05/02/13 08:39:15
(2)しかし、場合分けせずに、そのままやろうとすれば、
以下のようにeval を使うことになります。
(ここももっと良い方法があれば教えてください。)

str = ARGV.shift  # 引数として ClassA を与える
eval('x = ' + str +'.new')
eval('x.out' )   # << ==== (*)

(3) 質問は(*)の行に関してですが、
(Q1) evalを使わないとエラーになるのは何故でしょうか。
(Q2) x を使った作業が以下に延々と続くとした場合、
  逐一evalを使用するのがうっとおしい。
  何か回避策があるでしょうか。

以上です。よろしくお願いします。
0018デフォルトの名無しさん05/02/13 09:49:45
x = (Module::const_get("ClassA")).new
x.out

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/40021
からのスレッドが参考になると思う。
0019デフォルトの名無しさん05/02/13 10:55:08
おお、ありがとうございました。助かりました。
結城さんのデザインパターン本(Javaによる)を読みながら
rubyに引きなおして考えています。そのなかでの疑問でした。
教えていただいたスレッドによると、FAQのようですが、
かずひこさんもすぐには思い付かなかった様子ですので、
サンデープログラマとしてはちょっと安心もしてます。<grin>
勉強になりました、感謝します。
(Q1)の関係でbindingというのも知りました。
0020デフォルトの名無しさん05/02/13 16:06:51
>>17
クラス名があらかじめ列挙できるなら
hash = { "ClassA" => ClassA, "ClassB" => ClassB, }
klass = hash[ARGV.shift]
obj = klass.new if klass
クラス名があらかじめわからない場合は、この方法は使えないけど。
0021デフォルトの名無しさん05/02/13 17:28:56
Ruby製2chブラウザのエンジン部分ってない?
0022デフォルトの名無しさん05/02/13 20:47:33
使ったことないからハズしてるかもしれないけど
goRua <ttp://www.unixuser.org/~haruyama/software/goRua/> とか
0023デフォルトの名無しさん05/02/18 19:25:18
Windows だと MySQL/Ruby も Ruby/MySQL も
/tmp/mysql.sock がなくて経由できなくて使えないのだが、そういうものなの?
0024デフォルトの名無しさん05/02/18 20:33:42
>>23
ttp://kobe.cool.ne.jp/matsut/ruby_mysql.html
ttp://www.mysql.gr.jp/mysqlml/mysql/msg/9811
00252305/02/18 21:00:23
>>24
ありがとん。
つか、普通に 127.0.0.1 で逝けたのね orz
ちゃんと設定すれば hostname でも可能なのかもしれない。
Ruby/MySQL の方は MySQL の方のバージョンが高くて駄目ぽ。
あとは地道におぼえていこう......
0026デフォルトの名無しさん05/02/25 01:56:52
'Ruby' -> ['Ru', 'ub', 'by']
みたいに String を bigram に分割したいのですが、
どう書くのが普通なんでしょうか。

下のメソッドみたいな1文字ずつに分割しといて後で2つくっつける方法よりも、
2文字マッチさせて1文字ずらす方法の方が効率よさそうに思うのですが
うまくコードが書けません。

def bigram(str)
prev = nil
str.scan(/./).inject([]) do |result,ch|
result << prev+ch if prev
prev = ch
result
end
end
0027デフォルトの名無しさん05/02/25 02:21:18
s="ruby"
(0..(s.size-2)).collect{|i| s[i..i+1]}
#=> ["ru", "ub", "by"]
0028デフォルトの名無しさん05/02/25 04:14:35
s="るびぃ"
0029デフォルトの名無しさん05/02/27 00:36:12
下のコードだと、"."や".."がディレクトリということで、
「File.openできません」と言われます。ensureではだめなの
でしょうか?

dir = Dir.open(".")
begin
dir.collect{|f| [f]}.each do |fname|
begin
file = File.open(@dir + fname, "w")
while line = file.gets
print line
end
file.close
rescue
file.close
raise
end

end
ensure
dir.close
end
0030デフォルトの名無しさん05/02/27 02:07:02
通常ファイルだけ open すれば。

Dir.foreach('.') do |fname|
next unless FileTest::file?(|fname|)
fp = File.open(@dir + |fname|, "w")
...
end
0031デフォルトの名無しさん05/02/27 02:08:34
ミスった。
Dir.foreach('.') do |fname|
  next unless FileTest::file?(fname)
  fp = File.open(@dir + fname, "w")
  ...
end
0032デフォルトの名無しさん05/02/27 05:53:06
Dir.entries(".").select{ |fname| /^\.{1,2}$/ !~ fname }
0033デフォルトの名無しさん05/02/27 09:35:41
初心者です。
a[1,2,3,4]
a[1,0] = 6
a == [1,6,2,3,4]
最後の評価がtrueにならないのはなぜですか?
0034デフォルトの名無しさん05/02/27 09:36:25
a = [1,2,3,4]
の誤りですた
0035デフォルトの名無しさん05/02/27 10:18:43
>>30-32
ありがとうございます。nextとFileTestを組み合わせるのが、
私には理解しやすかったです。(まつもとさんのruby本では、
FileTestの記述が少ないですね。)
0036デフォルトの名無しさん05/02/27 11:19:06
obj.eql?をオーバーライドして呼び出すと以下の警告が出てしまいます。

parenthrsize argument(s) for future version.

理由がよくわかりません・・・
0037デフォルトの名無しさん05/02/27 12:46:35
>>33
何がしたいのか分からんが
a = [1,2,3,4]
a[1,0] = 6
p a
0038デフォルトの名無しさん05/02/27 15:07:17
>>36
将来問題が出る可能性のある書き方をしているから。
というか、実際のコードを出さない理由がよくわかりません・・・
0039デフォルトの名無しさん05/02/27 15:15:50
関数の引数を括弧で括るとか
0040デフォルトの名無しさん05/02/27 16:11:31
>>38
失礼しますた。

class Point
attr_reader :x,:y

def initialize(x,y)
@x = x
@y = y
end

def eql? other
self.class == other.class and
@x == other.x and
@y == other.y
end
end

p1 = Point.new(1,1)
p2 = Point.new(2,3)


p1.eql? p2 # 警告
p1.eql?(p2)
00414005/02/27 16:14:09
>>39
なぜ括弧で括ると警告が出ないのですか?
0042デフォルトの名無しさん05/02/27 16:39:48
>>41
構文解釈の問題だ
0043デフォルトの名無しさん05/02/27 17:08:56
>>40 をコピペしても警告出ないんだけど、それはともかく
括弧の省略が重なった時に出るんじゃないの?

$ ruby -e 'p p 0, 1'
-e:1: warning: parenthesize argument(s) for future version
0
1
nil

p(p(0,1)) なのか p(p(0),1) なのか曖昧なので、
(今のところ前者と解釈してるけど)今後はこの書き方はやめようね、と。
00444005/02/27 17:27:56
>>43
puts p1.eql? p2
とやってました。
puts(p1.eql?,p2)とputs p1.eql?(p2)
が近い将来曖昧になりえるということですね。
どうもありがとうございました。

0045デフォルトの名無しさん05/02/27 17:30:34
SJISの文字コードのテキストファイルの中身を全てコンソールに表示する
プログラムを書く場合エンコードの指定とかってできますか?
0046デフォルトの名無しさん05/02/27 17:55:41
1行目を #!/usr/bin/ruby -Ks
もしくは $KCODE = 's' を指定する

で、駄目?
0047デフォルトの名無しさん05/02/27 19:01:22
>>44
> puts(p1.eql?,p2)とputs p1.eql?(p2)
> が近い将来曖昧になりえるということですね。
もともと曖昧なので「これからはそういう書き方はヤメロ」といわれてるのだよ。
0048デフォルトの名無しさん05/02/27 19:03:07
>>45
SJISの文字コードのテキストファイルの中身を全てSJISの文字コードのコンソー
ルに表示するだけなら、エンコードの指定って関係ないはずだが。
IO.foreach("inputfile"){|line| print line}
0049デフォルトの名無しさん05/02/28 02:36:27
write(File.read("inputfile")) でいいじゃん。
0050デフォルトの名無しさん05/02/28 05:43:58
良いのか?
print なら解るが。
0051デフォルトの名無しさん05/02/28 08:22:15
>>49
でかいファイルだとメモリが…
0052デフォルトの名無しさん05/02/28 13:43:35
>>50
printとwriteの違いは何?
0053デフォルトの名無しさん05/02/28 14:27:51
>>52
違いっていうか、 Kernel#write ってそもそもあったっけ?
0054デフォルトの名無しさん05/02/28 17:35:48
>>52
ソースを確認してないけど、
print, puts, putc, << ここら辺は内部で write が呼ばれてるんだっけ?
でも、>>45 で「コンソールに表示する」と書かれてるから、
>>49 のままでは使えないと思っただけ。
$stdout.write(File.read("inputfile")) なら解る。
ズレたこと言ったのならゴメンよ。
0055デフォルトの名無しさん05/03/02 05:11:46
print LF->CRLFに変換される
write 変換なし
0056デフォルトの名無しさん05/03/02 14:31:53
改行コードの変換はbinmode次第であって、メソッドによって変わるわけではない。
0057デフォルトの名無しさん05/03/02 14:59:33
で、正解は?
0058デフォルトの名無しさん05/03/02 21:09:27
IO.foreach("inputfile"){|line| print line}
IO.foreach("inputfile", &method(:print))
$stdout.write(File.read("inputfile"))
0059デフォルトの名無しさん05/03/02 23:21:06
STDOUT.print nil
STDOUT.write nil

とか。あとprintは$_、$,、$\を使う、戻り値がprint => nil、write => 出力できたバイト数、とか。
0060デフォルトの名無しさん05/03/03 02:32:32
宿便が出てすっきりした気分
0061デフォルトの名無しさん05/03/03 02:42:04
つまりwriteイラネってこと?
0062デフォルトの名無しさん05/03/03 12:56:48
>>61
>>54
0063デフォルトの名無しさん05/03/04 00:43:30
open("inputfile"){|f| $>.write(f.read(1048575)) until f.eof?}
0064デフォルトの名無しさん05/03/05 06:23:16
C言語のi++はRubyではどう書くの?
0065デフォルトの名無しさん05/03/05 06:39:58
i+=1
0066デフォルトの名無しさん05/03/05 09:37:10
i = i.succ

なんでInteger#succ!がないんだろ
0067デフォルトの名無しさん05/03/05 10:58:59
Fixnumがmutableだから
0068デフォルトの名無しさん05/03/05 14:24:19
>>66
1.succ!ってやったら1==2になっちゃうなんてのはイヤだろ?
0069デフォルトの名無しさん05/03/05 15:08:03
Fixnum が immutable な Ruby があったなら、こんな FAQ が発生することはなかった?
00706705/03/05 15:14:36
X Fixnumがmutableだから
O Fixnumがimmutableだから
00716905/03/05 15:38:52
X Fixnum が immutable な Ruby
O Fixnum が mutable な Ruby

つられて間違ってしまった・・・orz
0072デフォルトの名無しさん05/03/05 22:39:17
mutableかどうかじゃなくてsingletonの話だって言ってるだろ!!!
0073デフォルトの名無しさん05/03/05 22:57:05
バカか。mutableの話だ。

Cで1++ってやったら1==2なんのか?あ?
0074デフォルトの名無しさん05/03/06 00:55:27
バカか。mutableかどうかじゃなくて即値かどうかの話だって言ってるだろ!!!
0075デフォルトの名無しさん05/03/06 03:00:40
もうすっかり春らしくなってきたな
00766405/03/06 04:31:34
>>65
アリガ�d
i.succ!って書いてしまった100万人目の初心者でした
0077デフォルトの名無しさん05/03/09 06:25:27

p "『".gsub!('a','A')

がうちの環境ではnilになるのですがどうしてですか。

コードはEUCです。
0078デフォルトの名無しさん05/03/09 06:37:06
gsub! は破壊的に変更し、変更がなかったら nil を返します。

str = "『"
p str.gsub!('a','A') #=> nil
p str #=> "『"

str = "abc"
p str.gsub!('a','A') #=> "Abc"
p str #=> "Abc"

対して gsub は、変更した文字列を返し(変更されなかったらコピー)、
元の文字列はそのままです。

str = "『"
p str.gsub('a','A') #=> "『"
p str #=> "『"

str = "abc"
p str.gsub('a','A') #=> "Abc"
p str #=> "abc"

0079デフォルトの名無しさん05/03/09 06:45:47
素早い回答、ありがとうございます。
やってみたら、本当ですね。
!のあるなしでかなり違うのですね。
初心者バレバレです。精進します。
0080デフォルトの名無しさん05/03/09 18:55:16
それが人に教えを請う態度かアアン?
仮に漏れがバカだとしてバカでも知っている常識すら知らないことを威張るなよ低能が。
0081デフォルトの名無しさん05/03/09 19:09:44
>>79
!が末尾についているメソッドは、ついていないメソッドと同等の効果があっ
て自身を変更する。戻り値については nil だったりいろいろ。

なので、戻り値は考えないで自分自身を書換える場合は gsub! などを使い、
自分自身を書換えずに戻り値を使いたい場合は gsub を使う、とかいう風に使
いわけるといいよ。

といっても、文法的に決まってたりとかいう事ではぜんぜんないので、そのメ
ソッドが自分自身を本当に破壊的に変更するかどうかはあらかじめ確認しとい
た方がいい(Array#rejectあたりが典型例)。
0082デフォルトの名無しさん05/03/09 20:55:05
質問です。
>>1 のページのチュートリアルは何故あんなにセンスが悪いんすか?
0083デフォルトの名無しさん05/03/09 21:15:43
>>82
m9(^Д^)プギャ-
0084デフォルトの名無しさん05/03/10 01:51:54
foo! は foo とくらべてより破壊的。
だからといって foo が破壊的でないとは限らない。
0085デフォルトの名無しさん05/03/10 18:58:09
もう単なる一山幾らの煽りになっちゃってるな。
喋れば喋るほど知能の低下を如実に現してる。

こーいうのが偉そうに喋ってたのかよw
相手してた奴が恥ずかしいなw
0086デフォルトの名無しさん05/03/10 19:54:41
ある説が「間違っている」というのは、その説の結論が正しくないということではありません。
その説が結論に至る過程が正しくないということです。
ですから、結論を肯定することも否定することもその説が正しいかどうかの検証にはなりません。
理論というものは例で補強されるものではなく理屈で補強されるものです。
例などはなくても考え方の筋道が通っていれば正しいのですし、
逆にいくら例があっても筋道の通っていない考え方は間違いなのです。
なお誤解のないように付け加えておきますが、「例を示す」というのは筋道の通った考え方の一つです。
例を示さなくていいとか例を示してはいけないというわけではありません。
例を示しさえすればいいというのが間違いなのです。
0087デフォルトの名無しさん05/03/10 21:43:56
>>86
完璧に同意。

そして理論というものはトップダウンにかくと分かりやすいものなのだが、
その理論の入り口にいる時にはトップダウンに抵抗を感じるもの。
そのことがマニュアルやチュートリアルをかくことを難しくしているのだと思う。
こういう時は「目的」や「例」などをふんだんに使いながら低い所から登って行くしかない。
0088デフォルトの名無しさん05/03/11 01:11:16
やっぱRuby使うやつって特に変なの多いな。
0089デフォルトの名無しさん05/03/11 01:31:23
目糞鼻糞を哂うとはこのことだな
0090デフォルトの名無しさん05/03/11 18:32:39
String.inspect の挙動が最近変更になったせいで、以下のようなスクリプト
が動かなくなったんですが、良い解決策ありませんか?
「erb使え」ちゅうのは無しで。

str = '"a" = #{a}'
s = "12"
puts eval( str.inspect )

以前の結果、"a" = 12
現在の結果、"a" = #{a}
0091デフォルトの名無しさん05/03/11 18:36:13
>>90
s="12" は、a="12" の間違いです。
0092デフォルトの名無しさん05/03/11 19:17:51
>>90-91
puts eval(str.inspect.gsub(/\\(?=#[$@{])/n, ''))

inspectとevalはできるかぎり逆変換になることが期待されるので、
今のほうが本来意図された動作。
00939205/03/11 19:27:23
ごめん、nオプションはナシ。
0094デフォルトの名無しさん05/03/11 21:22:18
>>92
いや、inspectにはそんなことは期待されてない。
evalしたいならString#dumpを使うのが正しい。
それ以外は92の言ってる通り。
0095デフォルトの名無しさん05/03/11 21:53:07
dumpはStringくらいしかないじゃん。
0096デフォルトの名無しさん05/03/11 22:10:52
>>94
でも inspect にそんなことを期待している人は意外と多い罠。
0097baka05/03/11 22:43:31
TeX2pageで作られたHTMLファイルから元のTeXソースを作りたいのですが、
そんなことできるソフトなさそうなので自分でちゃっちゃっとスクリプト書こうと思っています。
といってもあまりノウハウがないので、なにか参考になるページあったら教えてください。
0098デフォルトの名無しさん05/03/11 23:08:02
TeX2pageのソース。
で、Rubyはどの程度書けるわけ?
0099デフォルトの名無しさん05/03/11 23:33:48
小泉首相が感動するぐらい書けるけどそれが何?

逆に聞くけど、お前はどの程度なわけ?
0100baka05/03/12 00:01:08
Rubyはあまり描けないっす。ってかTeX2pageってCで書かれてますよね?
汎用的なのだと難しいから、ひとまず今変換したいやつだけ変換できれば良いので。

ちょっとRAAを覗いてみます。Rubyコミュニティってなんとなく感じ悪い…
0101デフォルトの名無しさん05/03/12 00:28:48
>>100
ところでTeX2pageってこれ?
http://www.ccs.neu.edu/home/dorai/tex2page/tex2page-doc.html
Schemeとかで動くって書いてあるから多分別物だと思うけど……。
0102デフォルトの名無しさん05/03/12 18:15:10
ソース読まないんだったら、簡単な.のを吐かせてから個別の結果を
調べるのがよいとおもわれ。
0103デフォルトの名無しさん05/03/15 06:33:57
>>100 なんとなくじゃないと思うよ
0104デフォルトの名無しさん05/03/15 12:51:08
>>103
またそういう感じの悪いことを言うんだからもう。
0105デフォルトの名無しさん05/03/16 21:30:01
rubyの cgi.rb, cgi/session.rb 関連で、PEARのAuthのような仕組みを
探しているんですが、googleで "ruby cgi auth", "ruby pear auth"
などと検索してもいまひとつ見つかりません。

どなたかご存知の方は教えてください。
0106デフォルトの名無しさん05/03/17 00:17:54
まず「PEARのAuthのような仕組み」というのを説明してくれると話が早いかも。
010710505/03/17 10:00:48
失礼しました。
PEARというのはPHPの(公式の?)ライブラリで、RUBYで言うと
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=%C5%BA%C9%D5%A5%E9%A5%A4%A5%D6%A5%E9%A5%EA
に相当するものとして認識しています。

PEARのAuthの説明は
ttp://pear.php.net/manual/ja/package.authentication.php
にあります。

CGI用の認証関連のライブラリが、どこかに無いものか。
と探していた次第です。
0108デフォルトの名無しさん05/03/17 10:15:55
ttp://www.ruby-lang.org/ja/man/?cmd=view&name=search&navi=search&key=%C7%A7%BE%DA
ttp://www.google.co.jp/search?hl=ja&q=ruby+pear+%E8%AA%8D%E8%A8%BC&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
ttp://www.google.co.jp/search?hl=ja&q=ruby+cgi+%E8%AA%8D%E8%A8%BC&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0109デフォルトの名無しさん05/03/17 11:41:15
PEAR は RAA だろ
0110デフォルトの名無しさん05/03/17 18:42:59
シリアルキー解析集「ALTEA」
大好評発売中!

http://openuser10.auctions.yahoo.co.jp/jp/user/dancexxx1960?


市販SOFTやオンラインSOFTのパスワード集です。
オークション関係から画像・OS・表計算・CAD・・・・etc
国内・国外のあらゆる分野のSoftを解析済です。


これを初めて手にされた時には、驚愕される事でしょう。
そして・・・手当たり次第にインストールを始める筈ですw
パソコンをご使用の方なら、必ず!満足されると思います。

解析結果のデータベースには15,000点を越えるパスワードが入ってます。
このパスワード集から検索するだけで、登録や制限解除が出来てしまいます。
シェアウェアを購入して、正規登録したのと同じ状態になります。
余りにもデータが多すぎる為、辞書引のようなパスワード検索SOFTで提供します。

シェアウェア以外にもパッケージ版をVectorなどでオンライン販売してるSOFTにも
多数対応しています。これらをダウンロードして無期限に試用する事も可能です(^^;

WindowsXPやOfficeなどのCDキー(プロダクトキー)ジェネレーターを使えば複数のパソコンに
インストールする事も可能です。デスクトップとノートPCなど2台以上持ってる場合は特に有効ですね。

オンラインSOFTを購入した経験は有りますか?
ありとあらゆる分野の優れたSOFTが、数多くありますよね。
しかし、ほとんどが試用期間や機能制限をして、「気に入ったら購入してください」です。

もう少し使いたいが使用期限切れで、削除・・・再インストールを繰り返していませんか?
0111デフォルトの名無しさん05/03/17 20:29:32
>>110
通報しますた
0112デフォルトの名無しさん05/03/19 12:57:23
ttp://mayah.jp/archive/programming/ruby.html

Hello を Hellow と書く人ってよくみるなあ
0113デフォルトの名無しさん05/03/19 19:12:25
hallo効果もよくみかけるな
0114デフォルトの名無しさん05/03/19 19:25:20
名前空間としてのモジュールにどんな名前をつけたらよいか悩んでます。

たとえば、クラスFooを定義したとします。
class Foo
 ...
end
そのあとで、やっぱ名前空間をわけようと思って、モジュールFooを作りました。
module Foo
 class Foo
  ...
 end
end
ここで、モジュール名とクラス名とを同じにしてしまいました。でもちょっと気持ち悪い。
こんなとき、どんなモジュール名(またはクラス名)にしたらいいでしょうか。
よい命名ルールがあれば教えてください。

Javaならパッケージ名には小文字を使うので、悩まなくてすむのですけど。
package foo;
class Foo
 ...
end
0115デフォルトの名無しさん05/03/19 21:24:02
名前空間わけれてねーじゃん
0116デフォルトの名無しさん05/03/20 00:44:13
>>114
機能を表す名前。
0117デフォルトの名無しさん2005/03/21(月) 12:07:05
>>116
機能を表す名前が1つしか思いつかないため、なやんでます。
module Visitor
 class Visitor
  ...
 end
 class FooVisitor < Visitor
  ...
 end
 class BarVisitor < Visitor
  ...
 end
end
0118デフォルトの名無しさん2005/03/21(月) 14:30:40
じゃあそれでいいじゃん
0119デフォルトの名無しさん2005/03/21(月) 21:49:59
混乱しないならそれでいいのでは?
別に気持ち悪くはない。
0120デフォルトの名無しさん2005/03/21(月) 22:40:15
>>117
こういうのはケースバイケースなので、一例として。
> module Visitor
>  class Visitor

外側のmoduleがメインになって内側のclass表にでない、
サブクラスも外部からしか使わないってんなら、
Visitor::BaseとかVisitor::Abstractにして、
class ForFoo < Base; end
class ForBar < Base; end
なんてするかも知れない。

なんとかVisitor,なんとかVisitorと繰り返すのは好みじゃないし。
0121デフォルトの名無しさん2005/03/23(水) 15:21:42
本当些細な事なんですが、Rubyって書き方の自由度が高いためか、
エディタでの色分けが不完全だったりするのが多いですよね。

皆さん何でRubyを書いてるでしょう・・・?
0122デフォルトの名無しさん2005/03/23(水) 16:04:26
普通にemacsとかじゃないのかな。
0123デフォルトの名無しさん2005/03/23(水) 17:25:02
普通にxyzzyとかじゃないのかな。
0124デフォルトの名無しさん2005/03/23(水) 18:37:00
普通にRDEとかじゃないのかな。
0125デフォルトの名無しさん2005/03/23(水) 19:53:05
普通にVimとかじゃないのかな。
0126デフォルトの名無しさん2005/03/23(水) 20:47:22
俺メモ帳
0127デフォルトの名無しさん2005/03/23(水) 20:50:20
hidemaru
0128デフォルトの名無しさん2005/03/23(水) 21:01:06
俺チラシの裏
0129デフォルトの名無しさん2005/03/23(水) 22:54:56
K2EditorとNoEditorを気分もしくは作業環境に応じて。
さらに作業環境が変わるとvimになったりするが。
0130デフォルトの名無しさん2005/03/23(水) 22:55:40
>128
Ruby for チラシの裏うpきぼんぬ
0131デフォルトの名無しさん2005/03/23(水) 23:02:47
>>121
アンケートはそろそろこのへんで終了してよろしいでしょうか?
0132デフォルトの名無しさん2005/03/23(水) 23:47:13
ed
01331212005/03/24(木) 03:35:17
下らない事に付き合ってもらい、ありがとうございました(´-`;)
0134デフォルトの名無しさん2005/03/26(土) 02:09:23
下らないわりにsageとるやんけ。
0135デフォルトの名無しさん2005/03/26(土) 09:52:43
↑sage と書いても別に下がりはしないことも知らない2ch初心者
0136デフォルトの名無しさん2005/03/26(土) 12:27:35
http://jp.rubyist.net/magazine/?c=plugin;plugin=attach_download;p=0001-NoraTutorial;file_name=moonwolf.jpg

ヒィィ!!!
0137デフォルトの名無しさん2005/03/26(土) 23:11:05
もういいですから。
0138デフォルトの名無しさん2005/03/27(日) 23:48:29
>>135
2chに浸り過ぎて読解力なしの厨房
0139デフォルトの名無しさん2005/03/28(月) 02:07:09
>>138
2ちゃんねらに高度な読解力を要求する勘違い
0140デフォルトの名無しさんNGNG
あるディレクトリにあるwavファイルとそれをlameでmp3にしたファイルとの
サイズ比を計算するスクリプトを作ってみた。> ruby a.rb directory
一応目的の結果が得られるのですが、ハッシュのキーソートの部分やら
もっと簡潔に出来ないでしょうか?

wfsize = {}
mfsize = {}
ARGV.each { |dir|
dir = dir.sub(/\\$/, "")
Dir.glob(dir + "/*.{[wW][aA][vV],mp3}") { |f|
bf = File.basename(f, ".*")
if /\.wav$/i =~ f then
wfsize[bf] = File.stat(f).size
else
mfsize[bf] = File.stat(f).size
end
}
}
wfsize.to_a.sort { |a, b|
String(a).upcase <=> String(b).upcase
}.each { |w|
printf "%-40s圧縮率:%3d%%\n", w[0], Integer(mfsize[w[0]]) * 100 / Integer(w[1])
}
0141デフォルトの名無しさんNGNG
>>140
> Dir.glob(dir + "/*.{[wW][aA][vV],mp3}") { |f|
へぇ。こんなんできるんだ。

> wfsize.to_a.sort { |a, b|
> String(a).upcase <=> String(b).upcase
> }.each { |w|
> printf "%-40s圧縮率:%3d%%\n", w[0], Integer(mfsize[w[0]]) * 100 / Integer(w[1])
> }

wfsize.keys.sort_by {|e| e.upcase }.each {|bf|
printf "%-40s圧縮率:%3d%%\n", bf, mfsize[bf] * 100 / wfsize[bf]
}
0142デフォルトの名無しさんNGNG
>wfsize.keys.sort_by {|e| e.upcase }.each {|bf|
>printf "%-40s圧縮率:%3d%%\n", bf, mfsize[bf] * 100 / wfsize[bf]
>}
そうそ、この部分をハッシュのキーそのままで使いたかったんだよね。
試行錯誤しても出来なかった・・・
すごく直感的に処理できている。勉強になりました。ありがと
それとsort_by は1.6では使えないんだね。
0143デフォルトの名無しさん2005/04/02(土) 20:15:23
だいぶ長いこと使っていたのに、こんな初歩的なことがわからなくて愕然。
お願いします、教えてください。

Cygwin上で、ruby 1.8.2 を走らせておりますが、次のような
スクリプトを書いたときの挙動が理解できません。

#!/usr/bin/ruby
p str = 'this'
p "#{str}"
p #{str}

2、3行目では "this" と表示してきますが、4行目は長さゼロの
文字列のようです。これはどうしてですか?素人考えでは、これも
"this" ときていいんじゃないかと思うんですが。どうなんでしょう?
0144デフォルトの名無しさん2005/04/02(土) 20:20:25
ちょっと待って、それコメントだから
0145デフォルトの名無しさん2005/04/02(土) 20:27:40
>143 の男デス。
問題を簡潔に書こうとしすぎて、スクリプトを削っていったらコメントになっちゃった。
すいません。

実はこれを、正規表現の中に埋め込んで、/#{str}/ と書いていたんだけど、
どういうわけか、マッチするはずの文字列にマッチしてくれない(すっごい簡単な
文字列だから、絶対マッチするはずなんですけど)。

というようなことでした。うーん、もう一回スクリプトを検討してみますが。
0146デフォルトの名無しさん2005/04/02(土) 22:15:56
>>145
メタ文字をエスケープしていないとか。
0147デフォルトの名無しさん2005/04/02(土) 22:46:23
>>145
ゴメン、女なら教えたんだが。
0148デフォルトの名無しさん2005/04/03(日) 15:06:26
長いURLをコンパクトにしてくれるサービス
http://www.rubyurl.com/
0149デフォルトの名無しさん2005/04/04(月) 13:55:45
初歩的な質問なんですが、以下のようなことがしたいです

ar = ["a", "b", "c"]
ar.each {|x| print x, "は配列arの添え字", XXXX, "の要素 " }

#=> aは配列arの添え字0の要素 bは配列arの添え字1の要素 ...

ブロック内で今処理されている配列の添え字を知りたいのですが、
良い方法はないでしょうか。for i in 0...ar.size を使えば目的は達成
できるのですが、あんまりきれいじゃないと思ったので。
0150 ◆m7YeytgDFE 2005/04/04(月) 14:04:17
>>149
そういう時にはeach_with_indexをどうぞ。
01511492005/04/04(月) 14:32:26
>>150
ar.each_with_index {|x, i| print x, "は配列arの添え字", i, "の要素 " }

で、できました。Mix-inとかあまり分かってないのでリファレンスきちんと読んでみます
ありがとうございました。
0152デフォルトの名無しさん2005/04/05(火) 23:13:48
visualu rubyを使っています。
コモンダイアログで、ファイルを複数開きたいのですが、

def open_clicked
fn=SWin::CommonDialog::openFilename(self,[ ["ログファイル","*.txt"]])
end

みたいな感じですが、これだと一個しか開けません。

OFN_ALLOWMULTISELECTを指定するらしい、ということまではわかったのですが、
どのように書けばよいのでしょうか?
0153デフォルトの名無しさん2005/04/06(水) 18:15:31
>>152
その辺はswin/vrubyでは定数宣言されてないようだ。

まともなサンプルではないが

require 'vr/vruby'
require "swin"
RFactory=SWin::LWFactory.new SWin::Application.hInstance
mw=RFactory.newwindow(nil)
fn=SWin::CommonDialog::openFilename(mw,[ ["ログファイル","*.txt"]], 0x80000 | 512)

とりあえずOFN_EXPLORER | OFN_ALLOWMULTISELECTと同意。
MinGWのcommdlg.hから値をとりました。

vrubyみたいにWStructというモジュールを定義してその中で定数宣言しとけば良い。
0154デフォルトの名無しさん2005/04/07(木) 17:04:31
ruby/Gtkをやり始めたが、サンプルがGtk用でGtk2用でない。
しかもAPIがごそごそ変わっています。
情報があまりないので、苦労しています。
たとえば、
Gdk::LINE_SOLID
がGtkでは、使えていたのにGtk2では、
Gdk::GC::LINE_SOLID
でないとだめになった。こんなことどこにも書いていない。
どこかに、Gtk2の(特にGdk)のAPIがまとめてないでしょうか。
0155デフォルトの名無しさん2005/04/07(木) 17:21:03
ここら辺とか、役に立つか?
http://ruby-gnome2.sourceforge.jp/
0156デフォルトの名無しさん2005/04/07(木) 18:42:03
>>155
ご教示ありがとうございます。
そこも、見ましたが、ドキュメントがまだ整備されていません。
初心者なので、整備に参加することも出来ず手をこまねいています。
APIもGtk2のみです。ソースを見てもわからずお手上げです。
0157デフォルトの名無しさん2005/04/07(木) 19:32:16
> APIもGtk2のみです
いや、英語の方ね (一応)
Gtk2 のみじゃなくて、Gdk を含む他のもあると思ったが、
見事に Gdk::GC の部分のドキュメントは未整備だな orz
http://ruby-gnome2.sourceforge.jp/hiki.cgi?Ruby%2FGDK
0158デフォルトの名無しさん2005/04/09(土) 16:57:46
まったくの初心者ですが変なとこで詰まりました。お教えください。
実は、2重ループをしたくて、

j=0;k=0
while k<5
while j<3
p j,k
j=j+1
end
k=k+1
 p k
end

というようなプログラムでwhileを2つ使ったのですが
内側のループが一回しか実行されません。
rubyでは、ゆるされない表現なのでしょうか。
0159デフォルトの名無しさん2005/04/09(土) 17:02:16
>>158
ゆるされる表現だと思いますがjの初期化位置が違うのではないでしょうか
0160デフォルトの名無しさん2005/04/09(土) 17:06:08
>>159
ありがとうございます。
恥ずかしい限りです。
0161デフォルトの名無しさん2005/04/20(水) 15:04:30
ちょっとスレッドを試していたのですが
挙動がわかんないのでご教授願いたく・・・

require 'net/http'
target = "localhost"
path = "/"
h = Net::HTTP::new(host=target)
p h
p h.get(path)
Thread.start{
h = Net::HTTP::new(host=target)
p h
p h.get(path)
}

このコードで一回目はちゃんと200で帰ってくるのですが
スレッドの中のは結果をとってきてくれません。
スレッド中で例外が発生した場合はそのスレッドは死んじゃうとの記述があったので
p h.get(path) rescue p $!
にしてもどうも補足してくれなくて・・・
ちなみに環境はruby 1.8.1 (2003-12-25) [i386-cygwin]です
0162デフォルトの名無しさん2005/04/20(水) 15:25:27
>>161
Thread.start{
h = Net::HTTP::new(host=target)
p h
p h.get(path)
}.join

ということでなくて?
これならスレッドが終わるまえにスクリプトが終わってる
0163デフォルトの名無しさん2005/04/20(水) 15:47:23
>>162
・・・なるほど
joinしないと作ったスレッドが終わる前にメインスレッドが
終わってしまうということですね。
ありがとうございました。
0164デフォルトの名無しさん2005/04/25(月) 00:03:03
/^/と/\A/ の違いがよくわからないです。
0165デフォルトの名無しさん2005/04/25(月) 00:39:26
>>164
リファレンスマニュアル見てもわからんの?
前者は行頭に、後者は文字列の先頭にマッチ。
たとえば "a\nb\nc\n" なら、
前者は "a" の前と "b" の前と "c" の前にマッチするが、
後者は "a" の前にしかマッチしない。
0166デフォルトの名無しさん2005/04/25(月) 23:35:33
>>165
どうもありがとうございました
0167デフォルトの名無しさん2005/04/27(水) 00:06:13
Rubyではどんなに大きな数字でも扱えるってホントですか?
0168デフォルトの名無しさん2005/04/27(水) 00:23:18
嘘です
0169デフォルトの名無しさん2005/04/27(水) 08:33:13
ほんとです

$ ruby -e 'p 1.0/0.0'
Infinity
0170 ◆m7YeytgDFE 2005/04/27(水) 11:38:51
>>167
下記のリファレンスマニュアルでは、メモリサイズの制約だけとありますね。
ttp://www.expansys.jp/product.asp?code=120505
0171デフォルトの名無しさん2005/04/27(水) 19:42:50
∞は数字じゃないと思います。
0172デフォルトの名無しさん2005/04/28(木) 20:47:22
最大の数字であるところの 9 は普通に扱えます。
0173デフォルトの名無しさん2005/04/28(木) 21:24:15
恋するプログラム買った。
0174デフォルトの名無しさん2005/04/28(木) 22:32:42
コクったりしてくれますか。
0175 ◆m7YeytgDFE 2005/04/28(木) 22:53:10
>>173
お。どんな感じです?近所の書店には未入荷でして。
ネットで予約した方が早かったかな?
0176デフォルトの名無しさん2005/04/28(木) 23:12:09
>>175
今37ページでオブジェクトの解説してます。
ruby初めてだけど、他の言語知ってるなら
充分理解できるようにわかりやすくかかれている感じ。
それより先は読んでないからまだ何とも言えないです。

所で、実行ファイルってrb形式のヤツですよね?
実行するとアクセスが拒否されましたってダイアログが出て実行できないんだけど
これは何故なのか…
0177 ◆m7YeytgDFE 2005/04/28(木) 23:21:35
>>176
付属のCD-ROMの収録内容かな?実行環境はLinux?Windows?
Windowsなら、拡張子でRubyインタプリタを関連付いてますか?
あとは文字通りで、何かのアクセス権がないから?
手元にあれば試してみるんだけどなぁ。
0178デフォルトの名無しさん2005/04/29(金) 00:08:29
これってMargarine?それとも柳葉魚?
0179デフォルトの名無しさん2005/04/29(金) 00:12:04
>>177
winです。
付属のサンプルもですけど、多分ruby全体がダメだと思います。
なんなんだろうか…
アンインストールして入れ直してみるかな
0180デフォルトの名無しさん2005/04/29(金) 09:21:54
「恋するプログラム 〜Rubyでつくる人工無脳」
という本か。SSTP とか懐しいな。
面白そうだ、俺も買ってみよう。
0181デフォルトの名無しさん2005/04/29(金) 13:41:21
>>176
ファイルのプロパティを開いて 読み取り専用のチェックを外す

とよひとおもふ
0182デフォルトの名無しさん2005/04/29(金) 13:46:03
まさかCD-ROM上のファイルを実行しようとしてないよな
HDDにCPしてから>>181 で、初めて実行可能になるきがするが
0183デフォルトの名無しさん2005/04/29(金) 16:54:43
そういえば最近恋してないなぁ。
0184デフォルトの名無しさん2005/04/29(金) 20:25:07
二次元でならいつも恋してる

……あ、最近ギャルゲもエロゲもあんまりやらなくなったなぁ´`,、(´∀`)´`,、
0185デフォルトの名無しさん2005/04/29(金) 21:16:39
俺は三次元だぜ!
まきまきかわいいよまきまき。
0186デフォルトの名無しさん2005/04/29(金) 21:42:49
なにこのキモスレ…
0187デフォルトの名無しさん2005/04/29(金) 22:54:32
rubyistはみんな キモイのさへ(へ´∀`)へ
0188デフォルトの名無しさん2005/04/29(金) 23:10:45
rubyでレジストリの操作って出来ますか?
windowsの表示をクラシックモードにしたりをrubyでやりたいのですが
出来ますでしょうか?
0189デフォルトの名無しさん2005/04/29(金) 23:57:59
>188
http://www.ruby-lang.org/ja/man/?cmd=view;name=win32%2Fregistry.rb
これで何とかならん?
0190デフォルトの名無しさん2005/04/30(土) 11:08:53
ruby/tkに関して質問があります。
例えば、次のようなスクリプトを実行したとします。
rubyのバージョンは1.8.2, Tkのバージョンは8.3.5, OSはLinuxです。

--- ここから ---
#!/usr/local/bin/ruby -Ke

require 'tk'

font = TkFont.new({'size' => '12'})

scr = TkScrollbar.new.pack('fill' => 'y', 'side' => 'right')
txt = TkText.new('font' => font).pack('expand' => 'true', 'fill' => 'both', 'side' => 'right')
txt.yscrollbar(scr)

Tk.mainloop
--- ここまで ---

このとき、TkTextウィジェット内での日本語入力は可能で、同じTkText内でのコピペも問題ありません。
しかし、例えばこのプログラムをふたつ立ち上げて、一方のTkText内の日本語を他方にコピペすると
文字化けしてしまいます。

なにか解決方法はないでしょうか。よろしくお願いします。
0191 ◆m7YeytgDFE 2005/04/30(土) 13:39:09
>>190
Linux上のruby 1.8.2、tk 8.4.9で試したところ、
プログラム間でのコピー&ペーストで文字化けしません。

他のプログラムとの間でも同様に文字化けするのでしょうか?
クリップボードを監視変更するようなプログラムが動作していませんか?
01921902005/04/30(土) 15:06:52
>>191

>他のプログラムとの間でも同様に文字化けするのでしょうか?

問題となっているプログラムを仮にAと呼ぶと
mlterm -> mlterm: OK
mlterm -> A: NG
A -> mlterm: NG
A -> A : OK
ただし、別の新しいプロセスとして立ち上げたものをA'とすると
A -> A': NG
です。

>クリップボードを監視変更するようなプログラムが動作していませんか?

XfceのClipboard Managerが動いていましたが、
これを落としても文字化けしました。
0193デフォルトの名無しさん2005/04/30(土) 18:19:29

print '能'

このプログラムで"が閉じられていないというエラーが出ます。
ちなみにlinuxでは動作しますが、win32だと駄目です。
KCODEの設定をしても駄目みたいです。

こういうことって結構あるのですか?
0194デフォルトの名無しさん2005/04/30(土) 19:04:59
スレ違いかもしれませんが、質問させて下さい。

rdindex (1.2.2) を使いたいと思っているのですが、
インストールに失敗します。

$ ruby setup.rb config

とすると、~/.rdindex がないと言われるので、
{package_root}/dot.rdindex をコピーして続行しました。

$ ruby setup.rb setup

とすると、
{package_root}/rdindex-1.2.2/bin/rdindex/rdindex:2:in `require': No such file to load -- rdindex (LoadError)
と怒られます。

どうやらパッケージ内にこのファイルが無いようにも思えます。
({package_root}/setup/rdindex.rb はインストール用?)

正常に使用できるようにするには、どの様にすれば良いでしょうか?
0195デフォルトの名無しさん2005/04/30(土) 19:25:19
>>193
print "能\"
とでもしてください。

多分、
print "ソ"
print "表"
あたりでも同じ事が起こると思う。文字コードの問題かと。
01961902005/04/30(土) 20:34:33
>>191
tcl/tk-8.4.9をインストールしてrubyもリビルドして試したところ
文字化けしませんでした。
8.3.5に拘る理由もないので、この機会にバージョンアップすることにします。
ありがとうございました。
0197デフォルトの名無しさん2005/04/30(土) 22:37:47
>>193

$KCODEは実行の際に関係する設定だから。
その問題はパースの際の問題なので
Rubyの引数に-Ksするかスクリプトの一番上に#! ruby -Ks
として解決。
0198デフォルトの名無しさん2005/05/01(日) 01:43:23
>>195
>>197
サンクスです
0199デフォルトの名無しさん2005/05/01(日) 02:58:06
ローカル変数を作るにはどうすればいいですか。
例えば下のブロックの中に tmp というローカル変数を作りたいのですが
どのように書けば良いでしょうか。

tmp = 1
… {
    # ここ
}
print tmp
0200デフォルトの名無しさん2005/05/01(日) 10:10:13
ブロック外で初めてローカル変数を使ったら、
当然、そのスコープでのローカル変数になるから、
素直に、ブロック外かブロック内のどちらかの変数名を変更するか、
別の種類の変数などを利用していく方が、自然じゃないかな。
# for はちょっと特殊なので気をつけよう
0201デフォルトの名無しさん2005/05/01(日) 18:57:35
もうrubyは全部グローバル変数と思って変数名を管理しとかないと
悲惨な結果になるような気がしてきた。
0202デフォルトの名無しさん2005/05/01(日) 19:38:14
>>199
Rubyの仕様上、ムリ。違う変数名にしろ。
というか、こんなことできる言語って他にあるか?
0203 ◆m7YeytgDFE 2005/05/01(日) 19:48:04
>>202
C++だとネストしたブロック内で同名の別変数を使えますね。
そういう言語に慣れてると混乱するかも。
今回の事例だと、変数名を変えるのが無難かも。
あるいは、該当部分を別のメソッドに分割するとか。
0204デフォルトの名無しさん2005/05/01(日) 20:23:43
似たような言語のperlも、 { } と my宣言を使って
名前に関係なく自由に変数のスコープを記述できるな。
0205デフォルトの名無しさん2005/05/01(日) 20:59:10
class A
def initialize
@x = "xxx"
end
class B
def initialize
p @x
end
end
end

A::B.new

class A の @x を class B のメソッドから参照するには、どうすれば
0206 ◆m7YeytgDFE 2005/05/01(日) 22:21:53
>>205
Rubyリファレンスマニュアルの下記ページには以下の記述があります。
http://www.ruby-lang.org/ja/man/?cmd=view;name=%A5%AF%A5%E9%A5%B9%A1%BF%A5%E1%A5%BD%A5%C3%A5%C9%A4%CE%C4%EA%B5%C1
> クラス定義はネスト(入れ子)にして定義できます。
> 以下の例で入れ子の外側のクラス Foo と内側のクラス Bar の間には
> (定数 Bar が Foo の中の定数 Foo::Bar であること以外には)
> 継承関係などの機能的な関連はまったくありません。

205のスクリプトの「A::B.new」ではA#initializeを実行することが無く、
そもそもクラスAの@xが存在しません。
普通にAとBのクラスを定義する場合と同じなので、Aの@xを参照するなら、
まずAのインスタンスを作る必要があります。
そして、Aでは「attr_reader( :x )」のようにして参照用のメソッドを
用意しておきます。

もしかして、本来の意図は「class B < A」といった継承関係でしょうか?
0207デフォルトの名無しさん2005/05/02(月) 13:20:19
["a=1" "b=2" "c=3"]
こういうオブジェクトを e = {"a" => "1", "b" => "2", "c" => "3"}
みたいなハッシュに変換したいんですが
どう書けばいいんでしょ?

3時間ほど悩んでます
0208 ◆m7YeytgDFE 2005/05/02(月) 13:32:44
>>207
とりあえず、こんな感じ?つっこみ歓迎。

def to_hash( array )
hash = Hash.new
array.each do | x |
if /(.+)=(.+)$/ =~ x
hash[ $1 ] = $2
end
end
return hash
end

x = ["a=1", "b=2", "c=3"]
p to_hash( x )
0209デフォルトの名無しさん2005/05/02(月) 13:37:06
>>207
p ["a=1", "b=2", "c=3"].inject({}) { |r,e| k,v = e.split(/=/, 2); r[k] = v; r }
0210デフォルトの名無しさん2005/05/02(月) 13:45:09
あ、もうちょっと短くできるかな。
p ["a=1", "b=2", "c=3"].inject({}) { |r,e| r.store(*e.split(/=/, 2)); r }
02112072005/05/02(月) 13:46:51
ども
両案とも、あっさりうまくいってしまいました
>>208
正規表現使う案はさすがに思いつかなかったです(わら

>>209, 210
injectは知らなかったです、勉強になりました。


ありがとう
0212 ◆m7YeytgDFE 2005/05/02(月) 14:17:14
>>209
うぁ、injectを忘れてました。まだ頭が1.6系...。
それにsplitで十分かつすっきりしますね。ううむ、まだまだだなぁ。
0213デフォルトの名無しさん2005/05/03(火) 00:21:03
私も恋するプログラム買いました。人口無脳を作ってどんどん機能を
追加していくという流れで、配列、条件分岐から、正規表現、GUI、
webサービス、マルコフ辞書までと幅広い内容です。
ひとつ気になる点としては、作者が死んじゃってることくらいです。

0214 ◆m7YeytgDFE 2005/05/03(火) 07:05:24
>>213
遺稿になっちゃったんですね。
こういう書籍を書ける人が...もったいないなぁ。
0215デフォルトの名無しさん2005/05/03(火) 09:39:26
Rubyで、BASICのEND文と同じことができる命令ってありませんか?
プログラムの実行を強制的に終了させる命令。
それが無理なら、せめてプログラムの末尾にGOTOさせたいんだけど、そんな命令もない。

まったく不便な世の中になったもんだ。
0216デフォルトの名無しさん2005/05/03(火) 09:53:13
exit
0217 ◆m7YeytgDFE 2005/05/03(火) 13:04:34
>>215
何のために強制終了させたいのか、GOTOが欲しいのかが分かりませんが、
まずは216の通りにexitでしょうねぇ。異常終了を表すならabortというのも。
プログラムの末尾にジャンプさせるということであれば、例外を使う方法もありかも。

begin
何かの処理
if 終了条件 == true
raise
end
rescue
例外処理(あるいは何もしない。)
end

exitなどの詳細はリファレンスマニュアルを参照してみてください。
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=%C1%C8%A4%DF%B9%FE%A4%DF%B4%D8%BF%F4#exit
0218デフォルトの名無しさん2005/05/03(火) 15:48:19
今日から始めたのですが、大量ファイルからの入力 → 抽出データのリスト化出力
などのサンプル | リファレンス が載ってるところはないでしょうか
02192152005/05/03(火) 18:24:10
>>216-217
ありが�d(涙)
CGIの書き込みチェックに使いたかったんです。
raiseでムリヤリ例外を発生させてrescue節に飛ばす方がなんとなくRubyらしくてイイですね。
exitは初めて知りました・・・まだまだ知らないことばかりです;
0220デフォルトの名無しさん2005/05/04(水) 09:56:20
慣れると、以前は GOTO しか無かった不便な世の中だったもんだ、と思えるようになるよ。
02212182005/05/04(水) 13:59:58
リファレンスの添付ライブラリに色々ありました。
スレ汚してすいませんでした。
0222デフォルトの名無しさん2005/05/04(水) 22:21:07
すいません、おまいらはソースの編集はどうしてるのですか?
秀丸とかterapadとかrdeとかいろいろあるけど、
どれでやってますか?
0223デフォルトの名無しさん2005/05/04(水) 22:24:15
WZ
0224デフォルトの名無しさん2005/05/04(水) 22:38:26
xyzzy
ごくまれにviとcat
0225デフォルトの名無しさん2005/05/04(水) 22:51:36
またアンケートかよ >>121
0226デフォルトの名無しさん2005/05/04(水) 22:58:12
xyzzyのrubymodeみつかんね
0227 ◆m7YeytgDFE 2005/05/04(水) 23:45:37
>>222
xemacsのruby-mode。
0228デフォルトの名無しさん2005/05/05(木) 11:09:18
>>222
vim
0229デフォルトの名無しさん2005/05/05(木) 12:48:29
>>121-133 >>222 >>223 >>224 >>227 >>228
おまいら、「Ruby でエディタ何使ってますか?」スレ立ててそこでやれ。
0230デフォルトの名無しさん2005/05/05(木) 12:53:09
>>222
Visual Studio
0231デフォルトの名無しさん2005/05/06(金) 08:11:49
乱数の分布をとるようにしたいのですが、

a = Array.new(10, 0)
for i in 1..100
case rand(10)
when 0; a[0] += 1
when 1; a[1] += 1
when 2; a[2] += 1
when 3; a[3] += 1
when 4; a[4] += 1
when 5; a[5] += 1
when 6; a[6] += 1
when 7; a[7] += 1
when 8; a[8] += 1
when 9; a[9] += 1
end
end

このやり方だとrand(100)とかrand(1000)にすると、
when 0; a[0] += 1 をたくさん書かないといけません
何かスマートな方法がないでしょうか?
よろしくお願いします
0232デフォルトの名無しさん2005/05/06(金) 08:16:15
randから返ってきた値を添字にしないのは何故?
0233デフォルトの名無しさん2005/05/06(金) 08:21:10
>>232
そんなレス付ける暇があったらコードで示してやればいいのに。
性格悪い奴だな。
0234デフォルトの名無しさん2005/05/06(金) 08:35:42
a[rand(10)]+=1
0235デフォルトの名無しさん2005/05/06(金) 08:56:16
>>222
RDE
0236デフォルトの名無しさん2005/05/06(金) 13:33:39
Perl の tarball 眺めてたら、 t/japh/ なんてのを見つけた。
Ruby にも test/jarh.rb きぼんぬ。
0237デフォルトの名無しさん2005/05/06(金) 17:17:11
>>236
ttp://jarp.does.notwork.org/ruby/jarh.rb ←これを入れてもらう?
test/ よりも sample/ の方がいいかもしれない。

sample/ 以下って2年以上変更されてないファイルがほとんどだけど変更しない方針なのかな。
0238デフォルトの名無しさん2005/05/06(金) 17:33:07
>>232-234
こんなソッコーで回答してもらえるとは
ありがとうございました
0239デフォルトの名無しさん2005/05/06(金) 22:56:54
>>237
どの言語でもsampleの中って骨董品ばかりじゃない?
0240デフォルトの名無しさん2005/05/06(金) 23:31:45
>>233
そんなレス付ける暇があったらコードで示してやればいいのに。
性格悪い奴だな。
0241デフォルトの名無しさん2005/05/08(日) 12:48:04
ふと Test::Unit でもはじめてみようかと試したのですが、
Rubyって拡張子が cgi だと require できないのでしょうか。
もしそうなのであれば、拡張子が cgi のファイルをテストするいい方法はどのようなものでしょうか。
0242デフォルトの名無しさん2005/05/08(日) 13:11:40
ていうかphpみたいに拡張子.rbにしてもうちょっと自己主張すればいいのに。
0243デフォルトの名無しさん2005/05/08(日) 13:13:15
>>241
require "hoge.cgi"
でいけない?
0244デフォルトの名無しさん2005/05/08(日) 13:32:36
シングルクォーテーションもダブルコォーテーションもだめでした。
現在は、ファイルをコピーして拡張子を rb にのものに置き換える処理のあとに require しています。

もうひとつ質問なのですが、
コンソールでは動くテストケースなのですが、
eclipse の RDT で動かそうとすると、

"起動中" 中に内部エラーが発生しました。
java.lang.RuntimeException: Unable to execute interpreter: -I "C:\data\workspace\ws1\calendar" -I "testunit" -- "No file specified in configuration" testunit/test_calendar.rb 6789 false TCMyCalendar

というエラーが出て、実行されません。
6789 という数字に覚えがないのですが、このエラーを回避するにはどうしたらよいのでしょうか。
0245デフォルトの名無しさん2005/05/08(日) 13:44:10
6789行目?
0246デフォルトの名無しさん2005/05/08(日) 13:52:41
テストしたいだけなら、外部呼び出しの exec 等で良いんじゃない?
*.cgi って Ruby 以外なんでもアリなんだから、
ライブラリをロードする require が *.rb, *.so 限定な方が自然だろう。

> ていうかphpみたいに拡張子.rbにしてもうちょっと自己主張すればいいのに。
どゆいみ?
勘違いじゃなければ、httpd 側の設定の話な気がする。
0247デフォルトの名無しさん2005/05/08(日) 14:03:03
配列の処理で
「ある条件を満たす要素以降の要素」に対して
処理をしたい時はどうすればよいのでしょう?

Cで書くなら↓のような感じなのですが
eachを使うと条件を満たした行しか得られないようなので・・

for(i=0; i<MAX-1; i++){
  if(array[i] == 条件)
    for(j=i; j<MAX-1; j++){
      したい処理
    }
  }
}
0248デフォルトの名無しさん2005/05/08(日) 14:21:55
>247
泥臭くやると
array[ array.index(条件) ... array.length].each { |e|
# eに対して「したい処理」
}

かな。だれかエレガントな解キボンヌ
0249デフォルトの名無しさん2005/05/08(日) 14:37:13
start = array.index(条件)
end = array.length

for x in start..end do
したい処理
end

もしくは、

array[start, end].each do |item|
したい処理
edn

とか?
0250デフォルトの名無しさん2005/05/08(日) 14:41:02
あ、すまん edn > end

あと end = array.length にて end 使ったらマズい悪寒 orz
ブロックの終端以外の end は fin にでも書き換えてくれ
02512472005/05/08(日) 14:45:18
>>248-250
ありがとうございます。試してみます。
02522472005/05/08(日) 14:45:44
sage忘れスマソ
0253デフォルトの名無しさん2005/05/08(日) 17:00:20
あるクラスのインスタンスメソッドから、
同じクラスのクラスメソッドを呼ぶときってどうしていますか?

・AruClass.classmethod()
・self.class.classmethod()

これ以外の方法はあるのでしょうか?
0254デフォルトの名無しさん2005/05/08(日) 17:02:28
オブジェクトのリファレンスか別名を作る方法はないでしょうか?
例えば hash[:a][:b][:c] に x という別名を作って、
x にvalueを代入すると hash[:a][:b][:c] にも代入される、みたいな事を
したいのですが。
02552542005/05/08(日) 18:16:18
= で出来ました。
0256デフォルトの名無しさん2005/05/08(日) 22:55:45
>>253
なぜそれ以外の方法が必要なのか述べよ(250字)
0257デフォルトの名無しさん2005/05/09(月) 01:31:37
>>256
クラス名を書くのはクラス名が変わったとき(あってはならないが)めんどい。
self.class だと長い。

せめて class って直接書いて構文エラーにならなければいいのになぁ。
0258デフォルトの名無しさん2005/05/09(月) 08:36:38
>>257
> せめて class って直接書いて構文エラーにならなければいいのになぁ。
予約語だしなぁ。
それにclassを認めるとdefもifもwhileも…とか出てきそうでイヤ。
0259デフォルトの名無しさん2005/05/10(火) 00:20:04
rubyは変数に型宣言が無く、ミッスクインをサポートしてるのに
なぜ継承があるのでしょうか?
0260デフォルトの名無しさん2005/05/10(火) 09:46:46
型宣言の有無と継承の有無はほとんど無関係じゃないかな?

mix-inがあれば継承がなくても実装の共有は可能になるが、通常の親子関係が
コーディングの助けになる場面もあるわけで(kind_of?)、無理に継承を排除する
必要もないということかと。
0261デフォルトの名無しさん2005/05/11(水) 11:07:20
継承がないと、mix-inも各インスタンスごとにいちいちextendしなきゃならな
いわけだが。
0262デフォルトの名無しさん2005/05/11(水) 14:14:26
>>244
requireだと拡張子.rbや.soを補おうとしているからと思われ。
load "hoge.cgi"してみるとか。
0263デフォルトの名無しさん2005/05/13(金) 06:47:55
class Person
def name
return @name
end
def name=(name)
@name = name
end
def hello
print "俺は" + @name + "だ"
end
end

alex = Person.new
alex.name = "アレックス"
alex.hello

ツクールXPに入ってるRubyのマニュアルの
インスタンス変数の項目の例文なんですが、
5行目の(name)が
変数としてのnameなのか関数としてのnameなのか教えてもらえないでしょうか?

02642632005/05/13(金) 06:52:31
連レスですいません。

プログラム自体初心者なもので、自分の質問が的確な質問かどうかも
わからない状態です。
的外れな事を質問していたらすみません。
0265デフォルトの名無しさん2005/05/13(金) 07:35:07
RGSS ネタはアレそうだ (汗
変数でも関数でもなく引数かな。よーするに変数か。
(name) 内の name は "アレックス" を受けている。

ここら辺を参考に
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=FAQ%3A%3A%A5%E1%A5%BD%A5%C3%A5%C9#a5.2e2.20.2b.a4.e4-.a4.cf.b1.e9.bb.bb.bb.d2.a4.c7.a4.b9.a4.ab

たぶん、代入する感じでインスタンス変数にアクセスする手法だと思う (よく知らない)
普通に書くと以下の感じになるか? # というか attr_write を使う

class Person
def name
return @name
end
def instans_write(arg) # def name=(name)
@name = arg # @name = name
end # end
def hello
print "俺は" + @name + "だ"
end
end

alex = Person.new
alex.instans_write("アレックス") #a lex.name = "アレックス"
alex.hello
0266デフォルトの名無しさん2005/05/13(金) 07:51:13
instans って何だよ instance だろ。attr_writer だろ orz
寝惚けとる

1.8.3 の preview は何まで出るんだろうか……
02672632005/05/13(金) 08:04:20
>>265
レスありがとうございます!

class Person
def name
return @name
end
def name=(name)
@name = name
end
def hello
print "俺は" + @name + "だ"
end
end

alex = Person.new
alex.name = "アレックス"
alex.hello

(name)内のnameが変数としてのnameなら、234段目のnameメソッドはなんの為にあるんでしょうか?
234段目を消しても、ちゃんと動くので、もう混乱してしまって・・・

以下マニュアルより転載。
>この例では @name というインスタンス変数を用意し、name、name= というメソッドを使って
>オブジェクトの外からアクセスできるようにしています。このようなメソッドをアクセサと呼びます。

無知な質問を何度もすみません;;
0268デフォルトの名無しさん2005/05/13(金) 08:17:00
>>265
参考URL先で理解できました。
ありがとうございました、後スレ汚し失礼しました。
0269デフォルトの名無しさん2005/05/22(日) 09:21:17
>>267のname=メソッドがどんな処理をしてるのか、どなたか詳しく解説して頂けないでしょうか?
0270デフォルトの名無しさん2005/05/22(日) 09:54:09
>>269
下の alex.name = "アレックス" が実はメソッド呼出しになっている。name
と = の間に空白があるが、実は ``name='' メソッドを呼出しており、その引
数が "アレックス" になってる。

このメソッドの仮引数は name で @name = name なんだから、仮引数 name の
値をインスタンス変数である @name に渡してるっつーこと。ようはセッター。
なので、 alex.name = "アレックス" なら、 alex のインスタンス変数@name
に "アレックス" が入るという寸法。

あとは、
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=FAQ%3A%3A%A5%E1%A5%BD%A5%C3%A5%C9
の 5.4 を読め。
0271デフォルトの名無しさん2005/05/22(日) 10:12:02
>>270
うはぁ・・・めちゃくちゃわかりやすい・・・
理解できたと思いますTДT)大感謝です。
name = の空白は関係なかったんですね。
迷惑ついでに答え合わせしていただけるとありがたいのですが
処理の流れとしては、

Personクラスを作成、@nameを定義。
Personのインスタンスalexを作成。
"アレックス"を引数に指定してname=を呼び出し。
仮引数nameに"アレックス"を受けてそのまま@nameに代入。
helloを呼び出して、表示。

・・・という感じであってるでしょうか?
0272デフォルトの名無しさん2005/05/22(日) 11:09:49
`@nameを定義' ってのが、ちょっと違和感があるな。
initialize 内で初期化してるなら、まだ解るけど。
p alex.name を追加してみれば解ると思うが、
name メソッドを使用した時に @name が返り値となるように設定している。
全然利用されてないけど、その本の別の場所で使ってるのかな?
正直、その例文だけみると、初心者だと少し混乱するものしょうがない駄目サンプルな気がする。
# >>265 で、かなりヒントを込めたつもりだったんだけどなぁ orz
0273デフォルトの名無しさん2005/05/22(日) 11:16:58
本スレが新スレに移行。

Rubyについて Part 16
http://pc8.2ch.net/test/read.cgi/tech/1116667484/
0274デフォルトの名無しさん2005/05/22(日) 17:24:14
>>272
む、
def name
return @name
end
はこの例文ではやっぱり使われてなかったのですね。
この部分だけ消しても動いたので、どういうモノなのか微妙で
恐らく return @name と書くだけでnameメソッドを呼び出さなくても@nameが定義されるんだろうと解釈してました。

丁寧でわかりやすく、本当にありがとうございました。
もっと勉強してなるべく人に頼らないで済むよう頑張ります!
0275デフォルトの名無しさん2005/05/25(水) 10:26:03
誰かrasp知っている方いませんか??
0276デフォルトの名無しさん2005/05/25(水) 20:14:50
raspって↓これ? 宿題ですか?
http://www.cyber.sccs.chukyo-u.ac.jp/sirai/classes/BasicsComp/
0277デフォルトの名無しさん2005/05/25(水) 20:48:22
宿題です
0278デフォルトの名無しさん2005/05/25(水) 20:57:19
おまけにマルチです
0279デフォルトの名無しさん2005/05/25(水) 22:23:11
おそらく同じ学科の別の人ですね
0280デフォルトの名無しさん2005/05/26(木) 16:33:05
いったい何%の人がそんな戯言を信じると思う?
0281デフォルトの名無しさん2005/05/26(木) 20:58:59
RUBYの宿題教えてください。
http://pc8.2ch.net/test/read.cgi/tech/1106572657/l50
0282デフォルトの名無しさん2005/05/28(土) 06:12:13
質問:
あるディレクトリのなかの、
 すべてのファイルの名前、
 すべてのディレクトリの名前を出力するには
Rubyでならどう書く?
0283デフォルトの名無しさん2005/05/28(土) 07:06:56
`ls -a`
0284デフォルトの名無しさん2005/05/28(土) 07:09:10
標準のLoggerとLog4Rとどっちがいいですか?
xmlで出力先とかレベルとか設定できますか?
0285デフォルトの名無しさん2005/05/28(土) 08:33:30
282が言ってるのが「ディレクトリの下のファイルをすべて再帰的に」なのか
「1段だけ(ディレクトリがあってもその中を見ない)」なのかわからんが、
前者なら
require 'find'
Find.find('/path/to/directory') { |f| puts f }
後者なら単に
puts Dir.entries('path')
0286デフォルトの名無しさん2005/05/28(土) 08:35:13
>>282
Dir.foreach(path) do |each_file|
puts each_file
end

>>284
Logger の方が使い方は楽。
ログのローテーションや YAML/XML で設定ファイルを書きたいなら log4r。
詳しくはサイト読めばわかるけど、例としてはこんなん。

require 'log4r'
require 'log4r/configurator'
Log4r::Configurator.load_xml_string(DATA.read)
logger = Log4r::Logger['bar']
logger.debug('test')
__END__
<log4r_config>
<outputter name="file" type="FileOutputter">
<filename>foo.log</filename>
</outputter>
<logger name="bar" level="DEBUG" trace="true">
<additive>false</additive>
<outputter>file</outputter>
</logger>
</log4r_config>
0287デフォルトの名無しさん2005/05/28(土) 09:01:43
<code>
ゴミ箱.捨てる(path)
</code>

のように、
消去したいディレクトリのパスだけ入力すれば、そのディレクトリの中味を全部消し去ってくれるようなモジュールって、ある?
0288デフォルトの名無しさん2005/05/28(土) 09:25:08
>>287
FileUtils::rm_r とか?
0289デフォルトの名無しさん 2005/05/28(土) 09:30:38
rubyって、Cから呼び出したりCを呼び出したりできますか?
例えばC側をコンパイルしなおさずに、
外部のrubyスクリプトを書き換えてC内の変数を弄る、とか
逆にCからrubyスクリプトで書いた関数を実行する、とか。
0290デフォルトの名無しさん2005/05/28(土) 09:39:08
>>289
前者: Ruby で扱えるようにした変数であればできる。
要は C で拡張ライブラリを書くということだが。
int i とか char s[20] とか任意の変数にアクセスするのは無理。

後者: ファイルやスクリプト文字列を与えて実行することはできる。
http://www.google.co.jp/search?q=ruby+%E7%B5%84%E3%81%BF%E8%BE%BC%E3%81%BF
0291デフォルトの名無しさん2005/05/28(土) 09:53:04
>>290
組み込っていうんですか。ありがとうございました。
0292デフォルトの名無しさん2005/05/28(土) 09:56:18
>>286
サンクス
ちょうどlog4rのサンプル探してたのよ
0293デフォルトの名無しさん2005/05/28(土) 10:30:03
>>288
>FileUtils::rm_r
さんきう! いやー似たようなものつくろうとしたけど夜中3時間粘ってやっぱりめんどくさくなった(^^;)

すごいうれしい機能盛りだくさん。おしえてもらえて助かりました!
0294デフォルトの名無しさん2005/05/28(土) 19:18:22
Rubyはprivateメソッドを書けるようにすべき

private def foo
end

これは気持ち悪いでしょ

private
def foo
end

--
def foo
end

private: foo
0295デフォルトの名無しさん2005/05/28(土) 21:15:29
気持ち悪い、という主観的な意見は、なんで気持ち悪いと思うのかを
説明してくれないと、賛同も反対もできないよ?
0296デフォルトの名無しさん2005/05/28(土) 23:28:31
二つ目のはC++と同じスタイルなわけだが。
0297デフォルトの名無しさん2005/05/29(日) 01:11:48
RDindexをLinux Zaurus SL-C300にインストールしようとして
RAAからダウンロードしたものを
$ tar xvzf rdindex-1.2.2.tar.gz
$ cd rdindex
$ cp dot.rdindex ~/.rdindex
$ ruby setup.rb config
とすると
setup.rb:643 warning: parenthesize argument(s) for future version
.....
setup.rb: config done.
となり、警告がちょっと気になりつつ。。
$ ruby setup.rb setup とすると
setup.rb:643 warning: parenthesize argument(s) for future version
...
/home/zaurus/rdindex-1.2.2/bin/rdindex/rdindex:2:in `require': No Such file to load -- rdindex(LoadError)
と言われたのでダメだろうなぁと思いつつ、パスのとおっているところにrdindex-1.2.2のsetupディレクトリにあるrdindex.rbを置いて再度configからやり直すと
setupのあとに
/opt/QtPalmtop/lib/ruby/site_ruby/1.8/rdindex.rb:4: undefined superclass `InstallerHook' (TypeError)
となります。
一応、手順通りに行ったつもりですが、他になにか行うべきことは何でしょうか?
rubyのバージョンは1.8.0(2003-08-04)[arm-linux]です。
0298デフォルトの名無しさん2005/05/29(日) 14:14:08
>>297
> setup.rb:643 warning: parenthesize argument(s) for future version

これはsetup.rbが古いだけなので、新しいsetup.rbで上書きすればOK。
気にする必要はないけど。

> パスのとおっているところにsetupディレクトリにあるrdindex.rbを置いて

それはインストール時に読まれるファイルだから、コピーする必要はない。

> 一応、手順通りに行ったつもりですが、他になにか行うべきことは何でしょうか?
> rubyのバージョンは1.8.0(2003-08-04)[arm-linux]です。

bin/rdindex/rdindexでrequire 'rdindex'してる割には、lib/PATHCONVだけで
lib/rdindex.rbがないな。

パッケージングミスだと思う。

02992972005/05/29(日) 15:11:04
>>298
レスありがとうございます。

> パッケージングミスだと思う。

rdindex1.2.2のリリースから一年近くパッケージングミスのままということは
以下のいずれかなのでしょうか…

1.rdindexを使っている方はいない
2.1.2.2より以前のものを使用中
3.rdindexに代わるメソッド名の補完、メソッドの説明をしてくれるものを使用中

昨日、Rubyの256倍魔道編を読んで便利そうだと思い、是非ともEmacsにこんな機能を
と思ったのですが、現在主流と思われるメソッドの補完、説明を行ってくれるemacs-lispが
あれば教えてください。
03002972005/05/30(月) 00:11:53
とりあえずrdindex-1.1.9をダウンロードしてきて使えるようにしてみました。
rdindex.elでエラー出力(警告)を破棄するようにして、
bin/rdindex内でRDの開始を判断するところをいじって、なんとかEmacsから使える
ようになりました。

ただ、結構適当にいじってしまったので余分なものまでインデックスにはいっちゃってる
ような気が…
wc -l ~/ruby/rdindex.dat が
1.6のマニュアルでは2016行、1.8のマニュアルでは4391行となりました。
通常に使える方、このぐらいの量であってるでしょうか?
0301デフォルトの名無しさん2005/05/30(月) 01:17:30
メソッドを定義したいのですが、返値はどこに書けばいいのでしょうか?
0302デフォルトの名無しさん2005/05/30(月) 01:28:25
return で返す。あるいは、最後に評価された式の値。
http://www.ruby-lang.org/ja/man/?cmd=view;name=%A5%AF%A5%E9%A5%B9%A1%BF%A5%E1%A5%BD%A5%C3%A5%C9%A4%CE%C4%EA%B5%C1#a.a5.e1.a5.bd.a5.c3.a5.c9.a4.ce.c9.be.b2.c1

以下は同じ返値。
def foo
return "a"
end

def bar
"a"
end
0303デフォルトの名無しさん2005/05/30(月) 02:16:48
昔はreturnを書かない下の例のほうが高速と言われていたんだけど、最近は違うのかな。
0304デフォルトの名無しさん2005/05/30(月) 08:12:40
1.9だと単純なのは同じになる。

$ ruby -rNodeDump -e 'def foo;return "a";end'
NodeDump V0.9

NODE_DEFN: method 10577 (foo)
NODE_SCOPE:
NODE_BLOCK:
NODE_ARGS: count = 0
additional default values:
NODE_STR: "a"

$ ruby -rNodeDump -e 'def foo;"a";end'
NodeDump V0.9

NODE_DEFN: method 10577 (foo)
NODE_SCOPE:
NODE_BLOCK:
NODE_ARGS: count = 0
additional default values:
NODE_STR: "a"
0305デフォルトの名無しさん2005/05/30(月) 11:59:13
結論としては、JavaかPHPを覚えた方がマシ、と。
0306デフォルトの名無しさん2005/05/30(月) 13:32:13
そんな当たり前のことをいまさら理解されても困る
これだからRuby厨は
0307デフォルトの名無しさん2005/05/30(月) 14:13:52
Python ならまだしも Java か PHP はどうかと思う
0308デフォルトの名無しさん2005/05/30(月) 14:37:42
PHPは最もつぶしが利かないからな
0309デフォルトの名無しさん2005/05/30(月) 14:59:50
タイマーってありますか?

$thread = Thread.new{
Timer.new(5){ $thread.run }
なんか処理

$thread.stop
}

とすると5秒ごとに$threadが実行されるような
0310デフォルトの名無しさん2005/05/30(月) 15:12:58
そのコードでは何をしたいのかまったくわからんけど、

loop {
Thread.new{
なんか処理
}
sleep 5
}

ということ?

それとも、5秒ごとにスレッドをちょっと動かし、ちょっと動かし、としたいのかな?
0311デフォルトの名無しさん2005/05/30(月) 15:57:04
>>310
それだと処理に掛かった時間分5秒からズレます。
0312デフォルトの名無しさん2005/05/30(月) 16:13:01
>>311
ズレないと思うが?
0313デフォルトの名無しさん2005/05/30(月) 17:00:39
厳密に言えば、Threadの生成にかかる時間だけずれるけど、
そういう厳密な話をRubyでやりたいわけもなさそうなので省略。
0314デフォルトの名無しさん2005/05/30(月) 20:19:46
他の言語(例えばC+pthreadとかjavaとか)でやりたい事を軽く書いてもらえる?

310の言う通り、何が望みなのかよくわからない。
0315デフォルトの名無しさん2005/05/30(月) 20:44:27
ひょっとしてタイマ割り込みみたいな感じ?
03163092005/05/30(月) 21:43:05
例えば
5〜10分(不定)掛かる処理を1時間ごと(毎時0分等)に繰り返すとかです。

loop {
$st = Time.now
なんか処理
sleep 60*60 - (Time.now - st)
}
これと同じことをもっとスマートに書けませんか?

>>309は間違えてました。すみません。

$thread = Thread.new{
Timer.new(5){ $thread.run }
loop{
なんか処理
$thread.stop
}
}
0317デフォルトの名無しさん2005/05/30(月) 22:20:18
>310で合っていると思うけど……
0318デフォルトの名無しさん2005/05/30(月) 22:33:53
だよなぁ
>310以外の何を求めているのか。。
0319デフォルトの名無しさん2005/05/30(月) 22:49:25
スマートに、ってのがポイントなのかな。
つまりcrondもどきをrubyで書くってことになるんだろうか。
誰か作ってなかったっけ?
0320デフォルトの名無しさん2005/05/31(火) 00:30:40
HKEY_CURRENT_USER\Control Panel\Desktop 
の中のWallpaperStyleの値を参照したり変更したりを
win32/registryにて試みているのですが、さっぱり出来ません。
どのように書けばいいのでしょうか?
参考までにご教授ください、よろしく願いいたします。
0321デフォルトの名無しさん2005/05/31(火) 08:10:34
今はどう書いてて、何がどうできないの?

参照もできない?
それとも変更しても表示が変わらない?
後者なら更新を通知する必要がありそうな気がするけど。
0322デフォルトの名無しさん2005/05/31(火) 11:02:48
>>309
>>313 の指摘をふまえたうえで、 >>310 のどこが不満か説明きぼんぬ。
0323デフォルトの名無しさん2005/05/31(火) 12:15:17
みんなわかっててとぼけてるんだよな。
まあ面白いからよしw
0324デフォルトの名無しさん2005/05/31(火) 23:22:17
rubyのみでパケット送信時のソースIPアドレスを
嘘つくことは可能?
ネットワークの実験してるんですが
いちいちIPアドレスとMACアドレス変更するのが
面倒なんですが。
出来るのなら何かヒント教えてください。
0325デフォルトの名無しさん2005/06/01(水) 00:45:00
可能
0326デフォルトの名無しさん2005/06/01(水) 01:39:28
ruby初心者です。簡単な数当てゲームを作ろうとしているのですが、
試行回数を記録しようとすると、「undefined method `+' for nil:NilClass」などと言って怒られます。
どうすればよいのでしょうか?

srand
val = rand(100)

callcc{|$input|}
print "値を入れてください> "
$charange += 1
n = gets.to_i

====長いので、下に続きます=========
0327デフォルトの名無しさん2005/06/01(水) 01:39:50
===上の続きです=====

if n > val
puts "もうちょっと小さい値です"
$input.call
elsif n < val
puts "もうちょっと 大きい値です"
$input.call
else
printf "正解です。試行回数: %d回", $charange
end
0328デフォルトの名無しさん2005/06/01(水) 01:41:17
> $charange += 1

$charange が初期化されてないんじゃね?
0329デフォルトの名無しさん2005/06/01(水) 01:45:54
綴りも変だけどな
0330デフォルトの名無しさん2005/06/01(水) 06:38:24
ちゃーらんじ
0331デフォルトの名無しさん2005/06/01(水) 15:02:27
細かいことは気にしないでやろうぜ…
気になるがw
0332デフォルトの名無しさん2005/06/01(水) 20:03:31
質問からレスまで2分かかってないのも気になる
0333デフォルトの名無しさん2005/06/01(水) 20:05:14
うむ
0334デフォルトの名無しさん2005/06/01(水) 23:00:23
バグの原因発見するだけなら2分もかからんだろう
0335デフォルトの名無しさん2005/06/02(木) 00:44:56
>>332から>>333まで2分かかってないのも気になる
0336デフォルトの名無しさん2005/06/04(土) 16:21:42
c/migemoのAPIリファレンスってないの?
0337デフォルトの名無しさん2005/06/04(土) 19:12:34
>>336
C/migemo はただのCのライブラリなんで、このスレはスレ違いかと。

「Ruby の 拡張ライブラリとして C/migemo を使いたい」という話なら
doc/README_j.txt の API リファレンスを参考にどうぞ。
素直にオリジナルの Migemo を使うのが楽だと思うけど。

0338デフォルトの名無しさん2005/06/05(日) 13:55:23
Rubyで書くとき、ひとつのメソッドの行数って平均どのくらい?
ついでにひとつのクラスにどのぐらいメソッド詰め込んでる?

こんな場合はこれぐらいと教えてもらえると、より興味深い。
0339デフォルトの名無しさん2005/06/05(日) 14:45:29
時と場合によります
0340デフォルトの名無しさん2005/06/05(日) 15:11:39
[1,2,3].each{|i|
 print "[", i, "," if i.first?
 print i, "]" if i.last?
 print i, "," if i.middle?
}
結果
[1,2,3]
こんな感じの書き方は出来ないですか?
0341デフォルトの名無しさん2005/06/05(日) 15:19:54
うーん、具体的な用途によっていろいろだと思うけど、その程度なら、
puts "["+[1, 2, 3].join(", ")+"]"
かな。
もう少し具体的に、最初と最後だけ識別したい時は
[1...-1]で真ん中だけ取り出すか、
each_with_indexを使って i==0で判定するか、
をやると思う。
0342デフォルトの名無しさん2005/06/05(日) 20:48:42
[1,2,3].p
0343デフォルトの名無しさん2005/06/06(月) 00:32:53
>>340

sep = "["
[1,2,3].each do |i|
 print sep, i; sep = ","
end
puts "]"

という書きかたも、あることはある。
0344デフォルトの名無しさん2005/06/06(月) 00:44:47
>>340
"[%s]" % [ [1,2,3].join(",") ]
0345デフォルトの名無しさん2005/06/06(月) 04:53:38
>>344
一個だけのときはこうしちゃうなあ。
"[%s]" % [1,2,3].join(",")
0346デフォルトの名無しさん2005/06/06(月) 08:29:59
"#{[1,2,3].join(",")}"
0347デフォルトの名無しさん2005/06/06(月) 08:56:52
>>346
結果の文字列を[と]で挟むのを忘れるぞ。
何のために文字列に入れたんだか。
0348デフォルトの名無しさん2005/06/06(月) 11:17:08
http://www.rubycgi.org/cgi_explanation/2-7.htm

上記URLのサンプルを動かして、適当に書き込んでから
ブラウザで「更新」すると
最後に書き込んだメッセージがもう一度投稿されてしまいます。


これを防ぐ手段として、「#ファイルの書き込み」の一つ下の行を

> if senddata && log[0]!="#{senddata}\n"

のように書き換える方法があると思いますが
幅が利かないので、出来れば log[0] との比較はしたくありません。
そこで input["senddata"] の方を nil にしてしまいたいんですが
その方法を教えてもらえませんか?
0349デフォルトの名無しさん2005/06/06(月) 11:47:48
>>339
ここはメトリクスのないインターネッツですね
0350デフォルトの名無しさん2005/06/06(月) 16:06:47
>>344-345
そんなメソッドあったんだねぇ
0351デフォルトの名無しさん2005/06/06(月) 20:43:23
[1,2,3].inspect
0352デフォルトの名無しさん2005/06/06(月) 22:18:35
>>341
繰り返しの最初なのか最後なのかを判定する方法を用意してくれる言語もあるけど(Velocityとか)、Rubyはそういう方法は用意されてないので、自分で頑張るしかないです。

a = [1, 2, 3]
last = a.length - 1
a.each_with_index do |n, i|
 if i == 0
  print "[", n, ","
 elsif i == last
 print n, "]"
 else
  print n, ","
 end
end

こじんてきには>>343がおすすめ。

>>351
[1,2,3] と表示させる方法を>>341は質問質問しているわけじゃない。それがわかっててそんな回答するのは、いけず。
0353デフォルトの名無しさん2005/06/06(月) 23:18:27
>>344-345
というか、何も表示されないだけど ( % についてのWarningはでる)
03543532005/06/06(月) 23:19:40
ごめん
p とか print つけてなかった orz
0355デフォルトの名無しさん2005/06/07(火) 17:17:40
>>348
> 幅が利かない
ってどういうこと?

> そこで input["senddata"] の方を nil にしてしまいたいんですが
> その方法を教えてもらえませんか?
それってブラウザが勝手にやってることなんじゃないかと思うけど。
tDiaryじゃ一度redirectさせてreloadしても再送しないようにしてるみたい。
0356デフォルトの名無しさん2005/06/08(水) 00:35:03
サービスパックのバージョンを取得するために以下のようなスクリプトを書きました。
とりあえず動いているのですが dwOSVersionInfoSize = 148 の部分と、
最後の szCSDVersion を文字列にする部分をもっときれいに書く方法はないでしょうか。

require "dl/import"
require "dl/struct"

module Kernel32
extend DL::Importable
dlload "kernel32"
typealias("TCHAR", "unsigned short")
OSVERSIONINFO = struct [
"DWORD dwOSVersionInfoSize",
"DWORD dwMajorVersion",
"DWORD dwMinorVersion",
"DWORD dwBuildNumber",
"DWORD dwPlatformId",
"TCHAR szCSDVersion[128]",
]
extern "BOOL GetVersionEx(OSVERSIONINFO*)"
end

ver = Kernel32::OSVERSIONINFO.malloc
ver.dwOSVersionInfoSize = 148
Kernel32::getVersionEx(ver.to_ptr)
puts ver.szCSDVersion.pack("s128").unpack("a128")[0][/^[[:print:]]+/, 0]
03573482005/06/08(水) 12:21:37
>>355
>幅が利かない
このソース、「掲示板」ってことになってますが
これを実用レベルの掲示板にするには、発言以外にも、
名前やら時刻やらを一緒にログファイルへ保存する必要が出てきますよね?

2005/06/08 12:00 山田 > よう!
   ↑
こんな形で。

こうなると単純に != しただけでは判定できなくなるし、
かと言って、名前(山田)と発言(よう!)で部分検索しても

2005/06/08 12:05 山本 > 『山田 > よう!』って随分軽いな!

というような、一部コピペの発言も拒否してしまうし・・・。


ってことで、あまり幅が利かなさそうだなあと思いました。

>input["senddata"]
仰るように、ブラウザの仕業みたいです。
クッキー使えばどうとでもなるんでしょうが、まったく分からないので、
二重投稿防止のためだけにもう一つ別のログファイルを用意して、
それで何とか対処することにしました。

正しいかどうかわかりませんが redirect って言うのは、
bbs.cgi→a.html→bbs.cgi みたいに一旦別のページに飛ばすって意味であってますか?
0358デフォルトの名無しさん2005/06/08(水) 12:53:07
【幅が利・く】勢力や発言力がある。はぶりがよい。「町内で―・く人」
0359デフォルトの名無しさん2005/06/08(水) 15:29:37
>>357
CGI特有の質問はWebProg板へGO!

http://pc8.2ch.net/test/read.cgi/php/988948655/
【Ruby】RubyでCGI
0360デフォルトの名無しさん2005/06/08(水) 18:57:02
RubyのDoxygenに対応するツール(フォーマット?)はRDでいいんですか?
ちょっと調べてみたんですが書式の説明はあっても実際のクラスやメソッドにどう説明をつけて
どうドキュメントを生成すればいいのかがよく分かりません。
そのあたりの説明が載っているサイトがあったら紹介してもらえないでしょうか。
0361デフォルトの名無しさん2005/06/08(水) 19:38:29
rdoc
0362デフォルトの名無しさん2005/06/08(水) 21:22:25
MF
0363デフォルトの名無しさん2005/06/08(水) 21:51:42
>>360
http://www.ruby-doc.org/stdlib/libdoc/rdoc/rdoc/index.html
0364デフォルトの名無しさん2005/06/09(木) 02:58:20
ここで質問していいのかわからないのですが、ActiveRecordについて質問です。


次の1.と2.の手順は、重複しているような気がします。

1.MySQLでデータベースを作っているとき、
subarticle_id INTEGER REFERENCES SUBARTICLES (id),
こういう風にカラムを作成することで、subarticle_idという外部キーとsubarticlesデータベースのidを関連づけられますよね。

2.また、ActiveRecord::Baseを継承してクラスを作るとき、belongs_toや、has_manyなどを使って、改めて関連についてのメソッドを追加しますよね。

これって、重複していますよね。
これはつまり、MySQLレベルでのREFERENCES以降の文は、必要ないということになるのでしょうか??(あるいは、書いてはいけない??)
MySQLレベルでは、別に二つのtebleを関連づけなくても、ActiveRecordレベルで関連づけさえすればいいということでしょうか??

ちょっと、SQL初心者で言ってることがわかりにくいかもしれませんが、よろしくお願いします。
03653572005/06/09(木) 06:02:09
>>359
ありがとうございます。
そっちも参考にしてみます。
0366デフォルトの名無しさん2005/06/09(木) 10:20:52
関連付けは制約だからなあ・・・
0367デフォルトの名無しさん2005/06/09(木) 20:41:29
Win32API全部宣言したWindowsモジュールクレクレ
0368デフォルトの名無しさん2005/06/09(木) 21:00:42
>>364
MySQLって制約はただ書ける(シンタックスエラーにならない)だけで
実際には機能しないんじゃなかったっけ?
0369デフォルトの名無しさん2005/06/11(土) 00:41:28
Rubyの機能に関して、意見を言うには、メーリングリストに入るしかないのでしょうか??
ちょっとしたことなので、メーリングリストでいうほどでもないようなことなのですが。。
0370デフォルトの名無しさん2005/06/11(土) 00:52:08
変更を取り込んで欲しいなら、MLでいうのが一番確実。
日記とかこことかで言ったことが採用されることもないじゃないが、
大体は一度MLで議論されることになる。
0371デフォルトの名無しさん2005/06/11(土) 02:19:55
外部コマンドで、tar -zxvf hoge.tgz として、
その展開したディレクトリを保存するっていうのを、Rubyから行うには
どうすればいいでしょうか??
0372デフォルトの名無しさん2005/06/11(土) 08:08:35
>>371
tarを実行するには `tar -xzvf #{filename}`
展開したディレクトリを保存するというのは、なんのことかよくわからん。
0373デフォルトの名無しさん2005/06/11(土) 12:19:51
実行するだけなら
system("tar -zxvf hoge.tgz") とか
system(%w"tar -zxvf hoge.tgz") とか
終了を待たないなら
spawn(%w"tar -zxvf hoge.tgz") とか
出力一行ごとになんかするなら
IO.foreach("|tar -zxvf hoge.tgz")とか
IO.popen(%w"tar -zxvf hoge.tgz") do |tar|
 tar.each do |line|
 end
end
とか、やりたいことに応じてやり方もいろいろあるわけだが。

展開した時点で保存されているものだと思う。普通は。
03743722005/06/11(土) 15:19:58
なるほど。 system("tar -zxvf hoge.tgz") なら、
コマンドを実行されて、その終了も待ってくれるんですね。
ありがとうございます。
0375デフォルトの名無しさん2005/06/11(土) 21:37:08
Ruby/tk でさ、バインドしたメソッドの引数の与え方を
任意に変えたいんだけど、どうするのがいいのかな?

例えば、Canvasに点を打ちたい場合に、
Canvasにフォーカスされてたらマウス入力から
Entrybノフォーカスさb黷スらx,y入力からとか
詳細はしょりますが

$focus = TkVariable.new

canvas.bind('FocusIn', proc{$focus.value = 'canvas'})
entry.bind('FocusIn', proc{$focus.value = 'entry'})

button(:command=>proc{$focus.wait; create_point})
def create_point
if $focus == 'canvas'
...
else if $focus == 'entry'
...
end
end

みたいなやり方しかないのでしょうか?

Ruby/Tkというか、Ruby初心者なので、良い方法あったら教えてくださいませ
0376デフォルトの名無しさん2005/06/11(土) 22:57:11
Ruby/Tkは詳しくないんだけど、こういうのはどう?

create_point = proc{}
by_mouse = proc{...}
by_entry = proc{...}

canvas.bind('FocusIn', proc{create_point = by_mouse})
entry.bind('FocusIn', proc{create_point = by_entry})

button(:command=>proc{create_point.call})
0377デフォルトの名無しさん2005/06/11(土) 23:17:09
>>376

おお!
サブルーチンへのリファレンス(Ruby的にはなんて言うのかな)
を使うんですね

この方が美しいですね

Thx!

0378デフォルトの名無しさん2005/06/12(日) 00:12:28
>377
>サブルーチンへのリファレンス(Ruby的にはなんて言うのかな)
Ruby的にはProcオブジェクトでつ。多分
0379デフォルトの名無しさん2005/06/12(日) 00:55:03
イテレータ?
03803752005/06/12(日) 01:57:00
>>378
Procオブジェクトへのcallメソッド呼び出しってことで
納得デス

この3日間Rubyでアプリのプロト作ってますが
よいツールですね、マジで
型が無いのとスコープがわかりづらいのに初めはちょっと
違和感がありましたが
感動しきり
Ruby本買って真面目に取り組みマス

0381デフォルトの名無しさん2005/06/12(日) 02:54:45
UDPの送信ポート固定したいんすけど
Ipv4ならバインドすれば出来るんですが
#!ruby -Ks
require 'socket'
include Socket::Constants
udp = UDPsocket.open()
udp.bind("192.168.1.23",2323)
udp.send( "test", 0, '192.168.0.3', 2323 )

Ipv6だと要求したアドレスのコンテキストが無効です。
っていわれます。指定の仕方が間違ってると思うんすけど
わかりません。教えてください。OSはXPです。

#!ruby -Ks
require 'socket'
include Socket::Constants
u = UDPsocket.open(AF_INET6)
u.bind("fe80::820:5dff:4e86:fb41",2323)
u.send("test", 0, "ff3e::1", 2323)
0382デフォルトの名無しさん2005/06/12(日) 04:03:32
>>380
感動するのは最初のうちだけ
限界が見えてくると色々と不満も(ry
0383デフォルトの名無しさん2005/06/12(日) 07:56:54
mswin版でファイルを実行してその終了を待たずに次の処理に進むにはどうすればいいでしょうか?

startでは一瞬プロンプトが出て気持ち悪いです。
0384 ◆m7YeytgDFE 2005/06/12(日) 08:56:12
>>383
ruby.exeと同じディレクトリにrubyw.exeってのがありませんか?
rubyw.exeを使えば、コマンドプロンプトを表示することなく実行できますよ。
但し、標準入出力が必要なスクリプトには使えませんので、ご注意を。
03853812005/06/12(日) 09:09:57
どのインターフェースからでていくか指定したら
いけた。
u.bind("<Ipv6アドレス>%6",2323)
0386デフォルトの名無しさん2005/06/12(日) 15:56:49
Rubyしか知らないmacユーザーからの質問です。
書いたプログラムと、その出力結果をみなさんどのように確認されながら作業されていますか?

私は、いつもmiというエディタをつかって作業をしています。
www.mimikaki.net
Rubyの実行結果をショートカット1つで出力・表示できるところが、とても気に入っています。カスタマイズによってはPerlもHTMLもおなじように出力できます。

しかし、そういったことができるエディタというのは他にもあるのでしょうか?
寡聞にして知らず、お伺いをたてる次第です。

是非ご意見を。
0387デフォルトの名無しさん2005/06/12(日) 18:05:40
Windowsしか知らないRubyユーザーの俺では全く力になれんな!
0388デフォルトの名無しさん2005/06/12(日) 18:47:38
気に入ってるんならそれ使ってればいいんじゃ?
0389デフォルトの名無しさん2005/06/12(日) 18:54:24
>>386
Mac板で聞いたら。つかマクロ組めるエディタならなんだって出来るだろ。
Winにはfreeride,sciteつうのがrubyのインストール時に勝手についてきたが。
0390デフォルトの名無しさん2005/06/12(日) 22:26:27
RubyつかってるRPGXPって仕様ではムービー(mpegとか)の再生ができないんですけどシステムいじくってなんとかしてムービーを再生するという方法はないでしょうか。
RPGをプレイするウインドウに表示できなくても別窓に表示して再生が終了するとムービーの窓が消えるとか。

とにかくRPGXPでムービーを再生する
0391デフォルトの名無しさん2005/06/12(日) 22:56:41
>>386
ruby-mode.el
0392デフォルトの名無しさん2005/06/12(日) 22:58:42
>>390
普通に出来ますが?
0393デフォルトの名無しさん2005/06/13(月) 16:43:09
>>392
イベント一覧にはないし、enterbrainのFAQにもそのイベント項目は2003まであったけどXPにはない
とあります
そこをRGSSで・・・・
0394デフォルトの名無しさん2005/06/13(月) 17:02:34
自己解決しました
0395デフォルトの名無しさん2005/06/13(月) 17:07:55
なんでうまくいかなくて、どうやったら解決したのか、を書いてほしいなあ。
0396デフォルトの名無しさん2005/06/13(月) 17:17:22
wmv形式のやつを拡張子を無理やりwmaにして、BGMとして読み込ませたらできました。
以下どう読むとどうなるか

BGM→繰り返し再生
ME→いったっきりで繰り返さない
SE→繰り返さない、mapのBGMはとまらない
0397デフォルトの名無しさん2005/06/13(月) 20:18:42
>393
もう解決したんだからアレだけど、2003っていつからXPより古くなったんだ。
0398デフォルトの名無しさん2005/06/13(月) 20:32:23
2000→2003→XPじゃないの?
0399デフォルトの名無しさん2005/06/13(月) 20:56:15
http://pc8.2ch.net/test/read.cgi/php/1118663500/l50
↑WebProg板に、Ruby on Railsのスレたてました。
こっちもよろしく。
0400デフォルトの名無しさん2005/06/13(月) 21:34:14
あれ? 確か
2000   →     XP
    2000 Server →  Server 2003
だったと思ってたが。
ttp://www.microsoft.com/japan/windowsserver2003/howtobuy/licensing/default.mspx にも
>Windows Server 2003 の発売日に Windows XP Professional のライセンスを保有するユーザーは、
とあるけど……漏れのカンチガイ(・∀・)?
0401デフォルトの名無しさん2005/06/13(月) 21:39:44
>>399
ツクール厨のためにRGSSスレも立ててくれよ
もうこんなやりとりうんざりだ
0402デフォルトの名無しさん2005/06/13(月) 22:30:58
>>400
あってるから安心しる
0403デフォルトの名無しさん2005/06/13(月) 23:48:25
>>401
RPGツクールXP買ったけどインスコしてない俺に言わせれば、分割するまでもない。
別にレス多くないし。
0404デフォルトの名無しさん2005/06/14(火) 00:35:14
>>401
初心者スレなんだからガマンせい。ガマンしたくないなら
0405デフォルトの名無しさん2005/06/14(火) 00:35:52
ひとりでもツクール厨の上陸を許したらひどいことになるよ。
こういうのは水際で防がないと駄目。
0406デフォルトの名無しさん2005/06/14(火) 01:01:55
ツクール房がなぜ、ツクール房と呼ばれるのかというと、
彼らは、Rubyスクリプトレベルの質問と、ツクールAPIレベルの質問の区別がつかず、
同じ場所で聞いているからだ。

ツクールスレをゲーム製作の板にたてるべきだな。
0407デフォルトの名無しさん2005/06/14(火) 01:05:32
お前らウザいけど見逃してやるから
今のうちにちゃんとローカルルールを決めて
それを徹底させて二度とこのネタで議論しないように。
というわけで言いっぱなしで逃げずにちゃんとまとめとけ。
0408デフォルトの名無しさん2005/06/14(火) 01:24:45
>>407
お前が一番言いっぱなしな件について。
0409デフォルトの名無しさん2005/06/14(火) 02:10:42
>>408
なにを訳の分からんことを言ってるんだ?
0410デフォルトの名無しさん2005/06/14(火) 10:00:34
なんかすぐ話が逸れるな。

どうせどうわけても駄目な奴は駄目なので、ツクール厨が来て馬鹿なこと
聞くたびに思う存分叩けばいいんじゃないの?
0411デフォルトの名無しさん2005/06/14(火) 23:53:49
>>406
たしかあったはずだが。
dat落ちしたか?
0412デフォルトの名無しさん2005/06/16(木) 15:53:29
「Rubyではじめるオブジェクト指向プログラミング入門」みたいなのってある?
0413 ◆m7YeytgDFE 2005/06/16(木) 15:59:00
>>412
"恋するプログラム〜Rubyでつくる人工無脳"はいかが?
好みによりけりですが、序盤は入門編といった内容です。
0414デフォルトの名無しさん2005/06/16(木) 18:47:52
>>413

あの本の著者ってもう死んでるらしいね

内容もあんまし良くなかったな
0415デフォルトの名無しさん2005/06/16(木) 20:19:17
初犯の著者紹介で死去というのは
壮絶なデビューだな
0416デフォルトの名無しさん2005/06/16(木) 20:40:15
遺稿を出版するなんてそんなに特異なことでもないような。
0417デフォルトの名無しさん2005/06/17(金) 00:06:03
ruby1.6でtimeが1970年以前は使えないみたいだけど
これは1.8からtime.c持ってきて、とかいうような単純な方法では無理?
0418デフォルトの名無しさん2005/06/17(金) 01:44:05
なぜ1.8そのものを持ってこない?
0419デフォルトの名無しさん2005/06/17(金) 02:10:26
>>412
さすがに「恋する〜」は、入門書、オブジェクト指向の学習書としてはオススメしかねる。
人工無脳という目的に偏りすぎていて、カバーしている内容が偏っているし内容も薄い。
実用例、他人のソースを見てみたい人にっていうなら、まだわかるけど。

俺は「Rubyプログラミング入門」から入った。
http://www.linux.or.jp/bookreview/BR44.html
0420デフォルトの名無しさん2005/06/17(金) 03:22:46
俺は「Rubyソースコード完全解説」から入った。
ttp://i.loveruby.net/ja/rhg/
ttp://www.amazon.co.jp/exec/obidos/ASIN/4844317210/
0421デフォルトの名無しさん2005/06/17(金) 14:30:49
>>417
それはOSとかの話になる。

TimeはOSなどとのやりとりに使うtime_tのラッパーであって、time_tは
1970/1/1 00:00:00 GMTを基準にすることになってるので、負の値を許す環境
でないと無理。

外部の日付とかをちゃんと扱いたいならDateとかDateTimeを使うべき。
0422デフォルトの名無しさん2005/06/17(金) 14:38:03
すいません。質問があります。

20AB年C月は何日あるか
って調べる関数とかないのでしょうか?
0423デフォルトの名無しさん2005/06/17(金) 14:45:09
ruby -rdate -e 'p Date.at(20AB, C, -1).day'
0424デフォルトの名無しさん2005/06/17(金) 14:52:59
>>423
atじゃなくてnewかcivil
0425デフォルトの名無しさん2005/06/17(金) 15:12:36
ああごめん、書き間違えた。
0426デフォルトの名無しさん2005/06/17(金) 17:15:04
2000年って閏年だったんだよね?
0427デフォルトの名無しさん2005/06/17(金) 17:21:42
>>426
ん? >>423-424 のでちゃんと 29 って出てくるよね?
0428デフォルトの名無しさん2005/06/18(土) 01:51:46
これからrubyを使っていこうと思っていますので、
宜しくお願いいたします。
0429デフォルトの名無しさん2005/06/18(土) 02:00:42
>>426
原則4で割り切れる年はうるう年
ただし100で割り切れて400で割り切れない年はうるう年ではない
0430デフォルトの名無しさん2005/06/18(土) 02:02:50
そんなの誰が決めたんだよ
適当なこと言うな
0431デフォルトの名無しさん2005/06/18(土) 02:07:42
てきとう(‥タウ)【適当】
(形動)
ある状態・目的・要求などにうまくあうこと。ほどよくあてはまるさま。ふさわしいさま。相当。「適当な大きさにきざむ」
0432デフォルトの名無しさん2005/06/18(土) 02:41:43
(2)その場を何とかつくろう程度であること。いい加減なこと。また、そのさま。
「―にはぐらかす」「―なことを言う」
0433デフォルトの名無しさん2005/06/18(土) 03:06:02
>>429-430
その場合、誤差はどれくらい?
0434デフォルトの名無しさん2005/06/18(土) 07:05:06
閏年
http://www.echizenya.co.jp/mini/colum/uruudosi.htm
0435デフォルトの名無しさん2005/06/18(土) 12:08:47
>>430
ローマ法王グレゴリウス13世
0436デフォルトの名無しさん2005/06/18(土) 12:11:48
Ruby2.0ではleapyear?の標準サポートが望まれる
0437デフォルトの名無しさん2005/06/18(土) 12:20:10
$ ruby -rdate -e 'p Date.today.leap?'
false
$ ruby -rdate -e 'p Date.new(2000,1,1).leap?'
true
0438デフォルトの名無しさん2005/06/18(土) 13:12:05
>>430
( ゚,_ゝ゚)バカジャネーノ
0439デフォルトの名無しさん2005/06/18(土) 14:44:08
>>437
Ruby2.0 では Year クラスの標準サポートが望まれる。
0440デフォルトの名無しさん2005/06/18(土) 15:06:56
>>439
何すんだ?それ。
ちなみに、>>437の二つ目の月日は省略可能。
0441デフォルトの名無しさん2005/06/18(土) 15:10:35
newしないと判定できないってかっこわるくね?
0442デフォルトの名無しさん2005/06/18(土) 15:23:20
>>440
いや、 Year::leap?(2005) としたいだけです・・・
0443デフォルトの名無しさん2005/06/18(土) 15:42:04
厨房時代、担任がすっとぼけたことを言って、生徒が突っ込むと
「センセてきとー」→「ふむ、適していて当たっていると」
「センセいいかげーん」→「良い加減だと」
と切り返されっぱなしだったのを思い出したよ>431
0444デフォルトの名無しさん2005/06/18(土) 15:52:35
>>441-442
$ ruby -rdate -e '[2000,2004,2005,2100,2400].each{|y|
puts "#{y} is #{Date.leap?(y) ? "" : "not "}leap year"
}'
2000 is leap year
2004 is leap year
2005 is not leap year
2100 is not leap year
2400 is leap year
0445デフォルトの名無しさん2005/06/18(土) 21:40:15
なんでみんなnewしてんの?
0446デフォルトの名無しさん2005/06/18(土) 22:03:16
新し物好きだから。
0447デフォルトの名無しさん2005/06/18(土) 22:03:31
あたらしいことはいいことだから
0448デフォルトの名無しさん2005/06/18(土) 22:03:53
ケコーン orz
0449デフォルトの名無しさん2005/06/18(土) 22:30:44
訪れた人のIPをひたすらずらずら表示し続けるCGI運用してるサイトってない?
0450デフォルトの名無しさん2005/06/18(土) 22:42:47
ありますよ
0451デフォルトの名無しさん2005/06/18(土) 22:45:54
だったらさっさと教えろよ気がきかねーな
0452デフォルトの名無しさん2005/06/18(土) 22:56:19
名前欄に fushianasan と入れてみ
0453fushianasan2005/06/19(日) 13:49:57
fushianasan
0454デフォルトの名無しさん2005/06/19(日) 18:43:04
Arrayクラスにメソッド(map_with_index)を追加し、Apache + mod_ruby上でそ
れを呼ぶと、`undefined method'と怒られるんですが、これってmod_rubyの制
限ですか?

普通のCGIやコマンドラインではちゃんと実行できるんですが。
04554542005/06/19(日) 19:01:31
すんません。ここに書いてありました。

http://www.modruby.net/doc/faq.ja.jis.html
0456デフォルトの名無しさん2005/06/20(月) 11:52:16
コマンドラインからRubyで以下のことをやりたいです。
あとPerlでもコマンドラインで実行できればお願いします。
Linuxのawkではできたのですが、友人のcygwinで実行できないらしくて


■入力ファイル=1.lst
NAME,TITLE,DT,DD
NAME2,TITLE2,DT2,DD2
NAME3,TITLE3,DT3,DD3

■awkコマンド
awk 'BEGIN{FS=","}{print "<dt title=\"" $2 "\"><a name=\"" $1 "\">" $3 "<\/a><\/dt><dd>" $4 "<
\/dd>"}' 1.lst > 2.lst

■出力ファイル=2.lst
<dt title="TITLE"><a name="NAME">DT</a></dt><dd>DD </dd>
<dt title="TITLE2"><a name="NAME2">DT2</a></dt><dd>DD2 </dd>
<dt title="TITLE3"><a name="NAME3">DT3</a></dt><dd>DD3 </dd>
0457 ◆m7YeytgDFE 2005/06/20(月) 12:19:51
例えばこんな感じでしょうか?Linux版のRuby 1.8でしか確認してませんが。

ruby -F',' -a -p -l -e '$_ = %Q(<dt title="#{$F[1]}"><a name="#{$F[0]}">#{$F[2]}</a></dt><dd>#{$F[3]}</dd>)' 1.lst >2.lst
0458デフォルトの名無しさん2005/06/20(月) 12:49:29
>457
すばやい回答ありがとうございました。大変勉強になりました!
0459デフォルトの名無しさん2005/06/20(月) 17:16:06
http://www.powup.jp/jinken/

6・19人権擁護法案に反対する国民集会の音声ファイル(各20-40MB)
http://www.powup.jp/jinken/20050619/1_hiranuma_furukawa.mp3
http://www.powup.jp/jinken/20050619/2_hirata.mp3
http://www.powup.jp/jinken/20050619/3_otsukotsu.mp3
http://www.powup.jp/jinken/20050619/4_chihougiinn.mp3
3番目は特におもしろい
0460デフォルトの名無しさん2005/06/21(火) 15:11:43
>>247
極めて遅レスだが、自称エレガントな例

f=true #フラグをループの外のスコープで定義
array.delete_if{ |x| f &&= !(条件) }.each do
したい処理
end


delete_unlessがあればいいのに。。。 こっちがわかりやすいよね。
f=false
array.delete_unless{ |x| f ||= (条件) }.each do
したい処理
end
0461デフォルトの名無しさん2005/06/21(火) 15:40:09
delete 系は破壊的なメソッドだから array を壊れちゃうのがまずい。
247のCのはヘンなんだが、最初に条件を満たした要素から
最後まで each で処理するんであれば、248-249 のようにやるべき。
自分なら
array[(array.index(条件)..-1].each { 処理 }
かな。
# filter、take、drop、take_if、drop_if とかいった関数的なメソッドがあればいいんだけど。
04624602005/06/21(火) 15:48:06
なるほど。delete_ifも破壊系なんですね。
それじゃ修正してこれでどうでせう?

f=nil
a.map{ |x| x if (f ||= (条件)) }.compact.each do
したい処理
end


0463デフォルトの名無しさん2005/06/21(火) 23:36:47
a.each do |x|
 if 条件..true
  したい処理
end
end
0464デフォルトの名無しさん2005/06/21(火) 23:43:13
間違えた。
trueじゃなくてfalse。
04654602005/06/22(水) 00:21:13
>>461 の方法も、おおなるほど、と一瞬思いましたが、
array.index(条件)
の (条件) ってどう指定したらいいんでしょう?

>>464
脱帽です。勉強になりました。

0466デフォルトの名無しさん2005/06/22(水) 01:09:03
これからrubyを始めたいのですが、ruby ver1,8,3のインストーラー付き
を配布しているサイトはどこでしょうか?
osはXP home です。お手数かけますがよろしくお願いいたします。
0467デフォルトの名無しさん2005/06/22(水) 01:31:31
公式サイトくらい見てほすぃ…
0468デフォルトの名無しさん2005/06/22(水) 01:34:08
つかそもそも1.8.3はプレビュー版しか出ていないんでは?
ないだろう、1.8.3のインストーラなんて。
0469デフォルトの名無しさん2005/06/22(水) 02:37:27
ごめんなさい。
1,8,2でした。。。
0470 ◆m7YeytgDFE 2005/06/22(水) 06:15:54
>>466 >>469
バージョン番号の区切りはカンマじゃなくてピリオドにしないと。
というのはさておき、Rubyはいいですよぉ。がんばって。
0471デフォルトの名無しさん2005/06/22(水) 08:47:30
One-clickの1.8.3preview1版って出てなかったっけ、まだ。
0472ブチ初心者2005/06/22(水) 09:31:21
テ、テ、テテンポラリファイルって、なにずら?
0473デフォルトの名無しさん2005/06/22(水) 13:48:25
>>472
どういう文脈で出てきたの?
0474デフォルトの名無しさん2005/06/23(木) 00:32:50
Fixnum.new(8)
ってできないんですね。newメソッドがないとサブクラス
作れないんですけど、こうなっているのは
Fixnum(というかNumeric)のサブクラスを作る必要性
がないからってことなんでしょうか?
0475デフォルトの名無しさん2005/06/23(木) 01:03:10
即値として実装されているFixnum,TrueClass,FalseClass,NilClass,Symbolの
サブクラスは作れないが、Numericのサブクラスは作れる。
lib/{complex,matrix,rational}.rbあたりが実例。
0476デフォルトの名無しさん2005/06/23(木) 01:26:21
>457
awkみたいな処理ってこうやって出来るんだ・・・
知らんかった。awkのスクリプト書き直して勉強してみるか・・・
0477 ◆m7YeytgDFE 2005/06/23(木) 07:12:19
>>476
オプションを使えばループや表示を省略できるので、
ワンライナーには便利ですね。
もっとも、凝り始めると目的を忘れて熱中しちゃいますが...。
0478デフォルトの名無しさん2005/06/23(木) 16:37:26
>>475
なんとなくわかったよ。さんくす。
それとこっちの記事が参考になった。
http://www.notwork.org/~gotoken/mag/cmagazine/gokudo/3rd/
0479デフォルトの名無しさん2005/06/23(木) 20:13:12
環境 ActiveScriptRuby
スクリプトが作動するカレントディレクトリより下位のフォルダ
の外部コマンドをディレクトリを移動せずにオプション付きで実行し、
パイプを生成したいのですが、どう書けばよいですか?

スクリプトが動作するフォルダはfoo、外部コマンドはfoo\bar\baz\bin.exe
読み込みファイルはfoo\bar\baz\abc.conf

path = "foo\\bar\\baz\\"
out_p = IO.popen("#{path}bin.exe -option #{path}abc.conf", 'r+')

こんな感じでやってみたんですが、実行できませんでした。
0480デフォルトの名無しさん2005/06/24(金) 00:11:40
コマンドプロンプトから実行したらなんかエラーが出てたりしない?
0481デフォルトの名無しさん2005/06/24(金) 16:04:21
オプションで入力レコードセパレータを指定する【-0数字】なんですが
どの文字がどの数字に対応しているか知りたいです。
コマンドラインで簡単にわかる方法ありませんか?
0482デフォルトの名無しさん2005/06/24(金) 16:36:42
>>481
man ascii とか?
0483デフォルトの名無しさん2005/06/24(金) 16:50:19
>482 知らなかった〜。ありがとうございました!
0484デフォルトの名無しさん2005/06/24(金) 16:52:48
低レベル演算(アセンブラレベルみたいな計算)ってRubyで出来る?
普通に計算すると
 1 - 5 = -4
ってなっちゃうけど
 1 - 5 = 251
みたいに計算したい
0485デフォルトの名無しさん2005/06/24(金) 17:23:04
>>484
1 - 5 = 252 じゃないの? (1 - 5) % 256 で。
0486デフォルトの名無しさん2005/06/24(金) 18:34:23
1の補数?
0487デフォルトの名無しさん2005/06/24(金) 18:36:00
一言でいうとできない
04884842005/06/24(金) 18:36:16
>>485
スマソ。思いっきりボケていました…orz
>(1 - 5) % 256
で出来ました
04894792005/06/24(金) 22:49:28
>>480

スクリプトは下記の方法でバッチファイルにしています
http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Win32%B4%C4%B6%AD%A4%C7ruby%A4%F2%C6%B0%A4%AB%A4%B9

実行時のエラーはこんな感じです
sample.bat:23:in `popen': No such file or directory - \foo\bar\baz\bin.exe -option \foo\bar\baz\abc.conf (Errno::ENOENT) from sample.bat:23
0490デフォルトの名無しさん2005/06/24(金) 23:01:41
実行をn秒停止させるみたいなことを実現させるのに簡単な方法はありますか?
0491デフォルトの名無しさん2005/06/24(金) 23:04:01
sleep
04924902005/06/24(金) 23:20:15
sleepだったのか…
waitで探していた…orz
0493デフォルトの名無しさん2005/06/24(金) 23:44:02
>>489
そのエラーメッセージには、479のコードにはない先頭の\があるように見えるのは気のせいか?
写し間違い?
でないなら、パスが通ってないとか、コマンド名を指定した文字列のミスとかじゃないの。
04944792005/06/25(土) 00:09:35
>>493
>>479は
path = "\\foo\\bar\\baz\\"
の間違いでした

0495デフォルトの名無しさん2005/06/25(土) 00:22:41
>>479
それ全然相対パスじゃないし・・・
ドライブレターがないという意味では相対なのかもしれないが
0496デフォルトの名無しさん2005/06/25(土) 01:08:13
うーん…

irbsh[00:56](main):029:0> p RUBY_PLATFORM
"i386-mingw32"
irbsh[00:56](main):030:0> p RUBY_VERSION
"1.8.3"
irbsh[00:56](main):027:0> IO.popen("\\windows\\system32\\route"){|io|puts io.read}

Manipulates network routing tables.

ROUTE [-f] [-p] [command [destination]
……以下略。……
irbsh[00:58](main):034:0> IO.popen("\\dummypath\\command -opt \\foo\\bar"){|io|puts io.read}
Errno::ENOENT: No such file or directory - \dummypath\command -opt \foo\bar
from (irbsh):34:in `popen'
from (irbsh):34
from :0
irbsh[01:02](main):038:0> IO.popen("c:/windows/system32/route print"){|io|puts io.read}
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface

ということで、コマンドが見つからないせいではないか。
ちゅかバッチファイルにするのはとりあえずやめて、問題を切り分けようよ。
popenしてdirだけするテストとかさ。
そもそも`\foo\bar\baz\bin.exe -option \foo\bar\baz\abc.conf'は動くの?
04974792005/06/25(土) 12:21:17
間違えた>>479は
path = "\\bar\\baz\\"
out_p = IO.popen("#{path}bin.exe -option #{path}abc.conf", 'r+')
こうでした
0498デフォルトの名無しさん2005/06/25(土) 16:50:52
path = "bar\\baz\\" にするだけで動くんじゃないの?
0499デフォルトの名無しさん2005/06/25(土) 18:22:53
初回の質問から内容を間違っていたのでもう一度最初から

環境 ActiveScriptRuby
スクリプトが作動するカレントディレクトリより下位のフォルダ
の外部コマンドを、ディレクトリを移動せずにオプション付きで実行し、
パイプを生成したいのですが、どう書けばよいですか?

スクリプトが動作するフォルダはfoo、外部コマンドはfoo\bar\baz\bin.exe
読み込みファイルはfoo\bar\baz\abc.conf

sample1.rb
---------------------------------------------------------------
path = "bar\\baz\\"
out_p = IO.popen("#{path}bin.exe -option #{path}abc.conf", 'r+')
----------------------------------------------------------------
ruby sample1.rb
sample1.rb:7:in `popen': No such file or directory - bar\baz\bin.exe -option
bar\baz\abc.conf (Errno::ENOENT) from sample1.rb:7

写し間違いがおおくてすいません(これで完璧なはずorz)
0500デフォルトの名無しさん2005/06/25(土) 18:33:03
これ実行するとどうなる?

path = "bar\\baz\\"
p Dir.pwd
p Dir.glob("#{path}bin.exe")
0501デフォルトの名無しさん2005/06/25(土) 18:39:02
あ、わかった。
さては、スクリプトをカレントディレクトリ以外に置いて実行してるな?
で、path はスクリプトからの相対ディレクトリなんだろう?

だとしたら、これでどうだ?

path = File.expand_path("bar/baz", File.dirname(__FILE__))
out_p = IO.popen("#{path}/bin.exe -option #{path}/abc.conf", 'r+')
05024992005/06/25(土) 21:07:44
>>500
ruby sample1.rb
"C:/Documents and Settings/ユーザー名/foo"
[]
です

>>501
この方法で動作しているようです。読み込みファイルが読み込みできない
ようですが、パスにスペースが入っているからだと思います。
0503デフォルトの名無しさん2005/06/25(土) 21:49:18
>>502
スペースか。そりゃ君が悪いよ。

path = "bar\\baz\\"
out_p = IO.popen(%Q("#{path}bin.exe" -option "#{path}abc.conf"), 'r+')
0504デフォルトの名無しさん2005/06/26(日) 01:27:26
IO::popen([cmd, arg1, arg2, arg3], "r+") とかできたらいいのにね。
0505デフォルトの名無しさん2005/06/26(日) 02:09:03
1.9ならできるけど。
0506デフォルトの名無しさん2005/06/27(月) 16:52:12
掲示板をつくってるんですが、ruby には、PHPのstrip_tags みたいなのって
あるんでしょうか。
ないとしたら、正規表現で<....>みたいなのを除去するってことで、ひとまず
セキュリティ的にOKなんでしょうか。
初心者で申し訳ないのですが、アドバイスをお願いします。
0507デフォルトの名無しさん2005/06/27(月) 21:13:07
ここって教えてくん丸出しな質問とかにもまじめに答えて上げた方が良いの?
0508デフォルトの名無しさん2005/06/27(月) 22:42:26
答えたかったら答えりゃいいし、答えたくなかったら放っておけばいい。
好きにしてくれ。
0509 ◆m7YeytgDFE 2005/06/27(月) 22:46:16
>>506
strip_tagsに相当する機能が標準添付のライブラリには無いような。
htmlsplitというライブラリがRAAにありますが、これは該当しないかな?
"<〜>"を単純に除去する程度で良ければ、
String#gsubなどで実装してしまっても良いのではないでしょうか。
あとはCGI::escapeHTMLで記号類を変換しちゃうとか。
0510デフォルトの名無しさん2005/06/27(月) 23:58:54
Rubyにおいて何でもかんでもObjectであることはわかった。
一部を除いて演算子もメソッドであることはわかった。

が、Arrayクラスのhoge[10]とかの
"["と "]"はメソッドなのかがわからない。
メソッドならオーバロードできると思うけど、、
もしかして、Arrayの[]記法は非メソッドですか?
Hushも同様にわからない。
0511デフォルトの名無しさん2005/06/28(火) 00:04:36
>510
リファレンスマニュアルに書いてあるけど
Array#[]もHash#[]もメソッドでつ。

以下、しょーもないサンプル

class Hoge
def [](val)
"#{val} from Hoge"
end
end

hoge = Hoge.new
puts hoge['aaa']
0512デフォルトの名無しさん2005/06/28(火) 00:30:58
ウサギ本見てみると "演算子メソッド" と説明されてた。(18.7.2)
05135102005/06/28(火) 00:43:35
>511
thxxxx!
たしかにリファレンスにメソッドであると明記してありますね。

ただ、オーバロードの仕方が書いてないし、
メソッド定義の記法が独特ですね。覚えにくいし想像しにくい。。

記号で始まるメソッド( + とか - とか ) のメソッド呼び出しは
. を省略できるというルールがあるから、
def +(val)
っていうメソッド定義は納得かつ覚えやすかったけど。。

配列だから[]でアクセスできるのは当然だと思うし、
オーバロードもできちゃうし(あんまり使わないかもしれないけど)、
仕様的には申し分ないです。ってか、rubyおもしろいな。

>512 演算子メソッドって何だよん。。
0514デフォルトの名無しさん2005/06/28(火) 01:43:57
C++知ってるとoperatorうんたらのoperator書かなくてもいいってことか、と、とりあえず納得できる
(とゆーか漏れはそう納得した)んだが
Rubyの演算子メソッドってどこに起源があるんだろう? C++と共通のスーパー言語(って何だw)かな?
0515デフォルトの名無しさん2005/06/28(火) 12:31:30
Smalltalk だともうちょっとメソッドっぽいというか演算子っぽくなくて、
1 + 2 * 3 が 9 になっちゃう (優先順位とか無い) よね。
0516デフォルトの名無しさん2005/06/28(火) 23:14:53
ちょっと特殊なのは単項の+と-かな。
def +@
みたいに書く。
0517デフォルトの名無しさん2005/06/30(木) 02:01:55
$ irb
irb(main):001:0> a=b="a"
=> "a"
irb(main):002:0> b << "b"
=> "ab"
irb(main):003:0> p a
"ab"
=> nil

こういうのってリファレンスマニュアルのどこに説明があるの?
0518デフォルトの名無しさん2005/06/30(木) 03:06:24
何が解らないんだ? irb?

a=b="a" みたいに、連続した表記はちょっと見たかんじでは見当たらないが、
特別に説明するものでも無い気がするし……
<< は、String のところにベタに載ってるし、p は組み込み関数の所に載ってる。
ttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%C1%C8%A4%DF%B9%FE%A4%DF%B4%D8%BF%F4;em=p%28%29

というか、初心者なら適当な本を買った方が良いよ。
学習には、リファレンスマニュアルと学習本では、やっぱり学習に分がある。
0519デフォルトの名無しさん2005/06/30(木) 03:23:25
そもそも、リファレンスマニュアルを補完するツールが irb 。し
0520デフォルトの名無しさん2005/06/30(木) 05:12:23
>>517
$ irb
irb(main):001:0> a=b="a"
=> "a"
irb(main):002:0> b = "b"
=> "b"
irb(main):003:0> p a
"a"
=> nil

との違い。a=b="a"かa << "b"かどちらが作用してるのかがわからなかったから

0521デフォルトの名無しさん2005/06/30(木) 05:13:00
間違えた
>>518
0522デフォルトの名無しさん2005/06/30(木) 06:56:04
>>517 で伝わると思ってたのかw
0523デフォルトの名無しさん2005/06/30(木) 08:59:44
>>517=520
リファレンスマニュアルをよく読めと言いたいところだが、確かにズバリ明記
されているわけではないな。 Ruby の本を読むと大概説明してあるんだが……。

b << "b" は b が参照するオブジェクトを破壊的に変更する。 a = b だから
a と b は参照先のオブジェクトが同じ。ゆえに a も変更される。

b += "b" にしてみたり、 object_id メソッドを使って調べてみたりするといい。
0524デフォルトの名無しさん2005/06/30(木) 09:59:27
>>523
その話を進めると例の「変数とは○○だ」「変数とは○○のようなもの」の話で香ばしくなるのでそれ以上はやめとけ。
というか既に全く同じ話がruby-listにある。スレッドの大本はARGVのfrozenの話だけど。
ttp://www.ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-list/38183
正確にはこっから下。
ttp://www.ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-list/38187

0525デフォルトの名無しさん2005/06/30(木) 17:18:11
HTTPのGETをするときにRefererを送るにはどうしたら良い?
リファレンスのnet/httpの項見てもそれらしい記述無いし…
open-uriで出来るみたいだけどこれだと何故か途中で転送が切れる…orz

 require 'open-uri'
 arc = ''; open('http://hoge.net/foo.dat', 'rb', "Referer" => 'http://hoge.net/'){|f|arc = f.read}
 p arc.size
 # => 2363

foo.datのサイズは6MByteくらいあるんだが…
0526デフォルトの名無しさん2005/06/30(木) 17:45:10
>>525
手元ではそのopen-uriのでできたよ。
サイズも合ってたしApacheにログも残った。
05275252005/06/30(木) 18:45:36
え〜っ!?

require 'open-uri'
require 'net/http'

Net::HTTP.start('pc.watch.impress.co.jp', 80) {|http|
 p http.get('/docs/2005/0630/pana.jpg').body.size
}

arc = ''; open('http://pc.watch.impress.co.jp/docs/2005/0630/pana.jpg', 'rb'){|f|arc = f.read}
p arc.size
# => 32782
   53

どうなっているんだ…il||li ○| ̄|_
05285262005/06/30(木) 18:53:24
>>527
ruby 1.8.2 (2004-12-25) [i686-linux]
32782
32782
05295252005/06/30(木) 19:08:18
あぁぁぁ… 。・゚・(ノД`)・゚・。
ruby 1.8.1 (2003-12-25) [i386-mswin32]
使っていたのが原因ですた
ruby 1.8.2 (2004-12-25) [i386-mingw32]
にしたら正常に動くようになりますた…orz
05305262005/06/30(木) 19:14:29
ついでにnet/httpを使う場合
リファレンスにあるようにヘッダーはハッシュで渡せる。

http.get(path,{'REFERER'=>'http://localhost/'})
0531デフォルトの名無しさん2005/06/30(木) 21:23:00
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=net%2Fhttp.rb#a.a5.ea.a5.c0.a5.a4.a5.ec.a5.af.a5.c8.a4.cb.c2.d0.b1.fe.a4.b9.a4.eb
で使われているget_responseって何ですか?
Net::HTTPのメソッドのようだけど検索しても出てこなくて詳細不明…
0532デフォルトの名無しさん2005/07/01(金) 07:46:02
>>531
URLをGETしてレスポンスにして返してくれるクラスメソッド
0533デフォルトの名無しさん2005/07/01(金) 10:04:46
正規表現で\x00みたいな文字コードもサーチさせるにはどうしたら良い?
/hoge\x00/
とか書いても引っ掛からない
0534 ◆m7YeytgDFE 2005/07/01(金) 10:22:39
>>533
後述の環境で試してみたら下記のような結果になりました。
こういうことではないのかな?

irb(main):002:0> /hoge\x00/ =~ "This is hoge\x00 for test"
=> 8

ruby 1.8.2 (2005-04-11) [i386-linux]
irb 0.9(02/07/03)
05355332005/07/01(金) 13:24:48
あれ?
やってみたら確かに引っ掛かる…何か寝ぼけていたのか…orz
トンクス
0536デフォルトの名無しさん2005/07/01(金) 22:53:00
ファイルをテキストモードで開いてたからうまく読み込めてなかった
とかいうオチはあるっけ?
0537デフォルトの名無しさん2005/07/02(土) 10:58:53
unixenとmsvcrtではそういう違いはないはず。bccwinとdjgppは今わからん。
あとはVMSくらいだが、これはとんでもなく違うんで、その程度の違いじゃ驚かんな。
0538デフォルトの名無しさん2005/07/02(土) 13:33:00
ttp://www.ecs.shimane-u.ac.jp/~nawate/lecture/gairon04r/11-5/rtask11-5.html
ここの問題を練習がてらやっていたのですが、下コードしか思い浮かびません。
もっとスマートなやり方を教えて頂けませんか?

s = Array(10..99)
t = Array(100..999)
print("1st: ", rand(10), ", 2nd: ", s[rand(s.size)], ", 3rd: ", t[rand(t.size)])

低レベルな質問で申し訳ないです…
0539デフォルトの名無しさん2005/07/02(土) 14:01:39
>>538
ベタにはこうか。

print("1st: ", rand(10), ", 2nd: ", 10+rand(90), ", 3rd: ", 100+rand(900), "\n")

あと、個人的にだけど、配列の初期化は(10..99).to_aのほうが直感的な気がする。
0540デフォルトの名無しさん2005/07/02(土) 14:19:31
ruby-mode.elで、%q|hoge#fuga|みたいなのがあると、
method(%q|hoge#fuga|)とかで対応する括弧の移動とか、
M-;のcomment-dwimがうまく働かないっす。
%q||でなく//でも同じ。
0541デフォルトの名無しさん2005/07/02(土) 14:29:55
>>539
なんでこれが思い浮かばなかったんだろうか…
ありがとうございました!
0542デフォルトの名無しさん2005/07/02(土) 20:58:35
cygwin の Ruby を使っています(ruby 1.8.2 (2004-12-25) [i386-cygwin])。
それで、Digest::MD5 クラスを使おうとしているのですが、
require 'digest/md5' とすると、

/usr/lib/ruby/1.8/i386-cygwin/digest/md5.so: dlopen,
Win32 error 126 - /usr/lib/ruby/1.8/i386-cygwin/digest/md5.so (LoadError)
from zzz.rb:2

というエラーが出てしまいます。一方、require 'digest/sha2'だとエラーは出ません。
これは自分の環境だけなのでしょうか…。
0543デフォルトの名無しさん2005/07/03(日) 02:24:08
md5.soはちゃんとそこにあるの?
0544デフォルトの名無しさん2005/07/03(日) 02:31:27
思い出は、いつもそこにあります、けど?
0545デフォルトの名無しさん2005/07/03(日) 09:21:57
古いアルバムの中に隠れてた
0546デフォルトの名無しさん2005/07/03(日) 12:52:39
>>543
はい、あります。どうやら実体は
(cygwinインストールディレクトリ)\lib\ruby\1.8\i386-cygwin\digest
にあるようなのですが(なぜ usr がパスに入っていないのかは謎です。
ls では /usr/lib/ruby/1.8/i386-cygwin/digest でリストできるので
そこであることは間違いないと思います)、そこにある md5.so を消すと、

zzz.rb:1:in `require': No such file to load -- digest/md5 (LoadError)

というものにエラーメッセージが変化します。ですから、ファイルが
ないという問題ではないようです。

ls -l でリストしてみても、
-rwxr-x---+ 1 xxxxx Users 6656 Jan 19 06:21 md5.so*
-rwxr-x---+ 1 xxxxx Users 15360 Jan 19 06:21 sha2.so*
とアクセス権は同じなので、その問題でもないようなのですが…。

cygwin が何かおかしいんでしょうかね…。何回か再インストール
してみたんですけど…もう一回やり直してみようかな…
05475462005/07/03(日) 12:57:28
>(cygwinインストールディレクトリ)\lib\ruby\1.8\i386-cygwin\digest
>にあるようなのですが(なぜ usr がパスに入っていないのかは謎です。

mount -f -s -b "(cygwinインストールディレクトリ)/lib" "/usr/lib"

でマウントされていました。
0548デフォルトの名無しさん2005/07/03(日) 22:16:37
>>542
> Win32 error 126 - /usr/lib/ruby/1.8/i386-cygwin/digest/md5.so (LoadError)

126はERROR_MOD_NOT_FOUNDだな。そのmd5.soが必要としてるdllが見付からないんでは?

objdump -p /usr/lib/ruby/1.8/i386-cygwin/digest/md5.so | grep 'DLL Name'

を試してみ。
05495462005/07/04(月) 01:00:19
>>548
レスありがとうございます。
コマンドを実行してみたところ、

DLL Name: cygruby18.dll
DLL Name: cygcrypto-0.9.7.dll
DLL Name: cygwin1.dll
DLL Name: KERNEL32.dll
DLL Name: cygruby18.dll

と出ました。どうやら /bin ディレクトリが dll 検索パスに入っ
ていなかったのが原因のようです。…で、いったん Windows の環境変数 PATH に
値をセットしてエラーが出なくなるのを確認して、cygwin のサイトを見たら、
なんかデフォルトで PATH がそこに設定されるみたいなことが書いてあったので
Windows の設定から PATH の設定をなくして再度挑戦したら動きました…。

 なぜ何も設定しなくても動くようになったのかはわかりません。
もしかしてcygwin インストール後に Windows 再起動が必要だった
りするのかも…(再度挑戦するまでの間に別の件でWindowsの
再起動をしています。ちなみにOSはXPです)。

 直接的な原因はわからずじまいなのですが、動くようになって助かりました。
ありがとうございました。
05505462005/07/04(月) 23:47:49
 気持ち悪いので、もう一回 Cygwin を再インストールしてみました。すると、

/usr/lib/ruby/1.8/i386-cygwin/digest/md5.so: No such file or directory - /usr/li
b/ruby/1.8/i386-cygwin/digest/md5.so (LoadError)
from zzz.rb:2

 というエラーになりました。調べてみると、
cygcrypto-0.9.7.dll(とKERNEL32.dll)がありませんでした。

 前回と今回でなぜエラーメッセージが変わったのか、前回にはな
ぜ cygcrypto-0.9.7.dll があったのか、それは謎ですが…、いろ
いろで調べていたところ、ruby とは別に openssl のインストール
が必要なことを知りました。そしてそれを入れてみたところ、見事
に動くようになりました。

 お騒がせしてすみませんでした。ありがとうございました。
0551デフォルトの名無しさん2005/07/05(火) 13:06:58
>>540
少なくとも今のEmacs添付のライブラリを使うかぎり、
そこまで対応するのは無理と思われ。
埋め込み式じゃない#は、quote以外ではエスケープすることを勧める。
0552デフォルトの名無しさん2005/07/06(水) 04:14:23
>>550
wINDOWSではなにかあったらとりあえず再起動がデフォです(W

0553デフォルトの名無しさん2005/07/06(水) 04:17:58
二つの文字列の先頭から連続する共通部分を抜き出すにはどうすればいいですか?

"This is a pen", "This is the pen"なら"This is "を返すようなの。
0554デフォルトの名無しさん2005/07/06(水) 07:12:17
一文字ずつ比較するしかないような気が。

str1 = "This is a pen"
str2 = "This is the pen"

i = 0
i += 1 while str1[i] && str1[i] == str2[i]

p str1[0,i] #=> "This is "
0555デフォルトの名無しさん2005/07/06(水) 11:43:51
おー懐しいな。
http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=2%A4%C4%A4%CE%CA%B8%BB%FA%CE%F3%A4%CE%C0%E8%C6%AC%A4%AB%A4%E9%C5%F9%A4%B7%A4%A4%CA%B8%BB%FA%CE%F3%A4%F2%C8%B4%A4%AD%BD%D0%A4%B9;em=2%A4%C4%A4%CE%CA%B8%BB%FA%CE%F3
を参考にするとよろし。
0556デフォルトの名無しさん2005/07/06(水) 12:02:11
rubyのオーバーヘッドをどれだけ減らすかがポイントなのか
0557デフォルトの名無しさん2005/07/07(木) 01:15:26
>>556
rubyじゃ、頑張りすぎないことが大事なんだよ。
0558デフォルトの名無しさん2005/07/07(木) 01:20:04
Rubyでベタなループ書く奴は敗北者
0559デフォルトの名無しさん2005/07/07(木) 01:46:14
1. Rubyで不自然なコードを書く奴は敗北者
1.1 ベタなループを避けるために不自然なコードを書く奴は完全な敗北者
(例外) ネタとして楽しむのが目的な場合はこの限りでない
0560デフォルトの名無しさん2005/07/07(木) 01:51:59
Rubyでカリカリにチューンを楽しむ俺がいる
今時のマシンじゃC/C++の場合ちょっとやそっと非効率な
コード書いても体感できることも少なくなってきている品
0561デフォルトの名無しさん2005/07/07(木) 02:52:10
>>560
そのカリカリにチューンした例、見せてよ。是非!!
0562デフォルトの名無しさん2005/07/07(木) 16:05:08
でかい(数MByte以上)StringオブジェクトをIOオブジェクトに見立てる事って出来ますか?
IO.pipeだとでかい文字列突っ込むとハングる(?)様だし…
ファイルからの読み込みとメモリ上のデータの読み込みのI/Fを一本化したいです
FileオブジェクトをStringオブジェクトに見立てるでも問題ないです

新規にクラスを定義すれば出来るけどもっと簡単な方法がないかなと…
0563デフォルトの名無しさん2005/07/07(木) 16:27:38
>>562
StringIOは?
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=StringIO
05645622005/07/07(木) 16:31:23
>>563
ぐは…書き忘れスマソ
機能的にはまさに求める物ですが外部拡張は出来れば避けたいです…
0565デフォルトの名無しさん2005/07/07(木) 17:10:01
staticにリンクすればいいじゃない
0566デフォルトの名無しさん2005/07/07(木) 17:33:25
「外部拡張」って何?
0567デフォルトの名無しさん2005/07/07(木) 18:35:10
>>564
避けたい理由を書かないと叩かれて終わりなわけだが。
あとStringIOは標準添付の拡張ライブラリなので普通は使えるはず。
0568デフォルトの名無しさん2005/07/07(木) 20:57:07
RGSSか?
0569デフォルトの名無しさん2005/07/07(木) 22:36:02
標準ライブラリ以外は全部糞
0570デフォルトの名無しさん2005/07/07(木) 22:53:23
「標準ライブラリ」って何?
0571デフォルトの名無しさん2005/07/08(金) 15:45:45
>>570
最初から付いてくるライブラリ。require して使えるもの全部。require しなくても使えるのは組み込み。
0572デフォルトの名無しさん2005/07/08(金) 16:27:25
また俺定義か
0573デフォルトの名無しさん2005/07/08(金) 17:44:46
「俺定義」って何?
0574デフォルトの名無しさん2005/07/08(金) 18:22:59
>>573
matz にきいてくれ。
ttp://www.rubyist.net/~matz/20030602.html
0575デフォルトの名無しさん2005/07/08(金) 23:41:06
前もこういう流れがあったなぁ。
0576デフォルトの名無しさん2005/07/09(土) 00:16:22
>>571
> >>570
> 最初から付いてくるライブラリ。
今は「標準添付ライブラリ」と呼ぶのが主流じゃないかな。
0577デフォルトの名無しさん2005/07/09(土) 00:33:49
「俺的標準添付ライブラリ」これで良いだろ
0578デフォルトの名無しさん2005/07/09(土) 01:26:15
んで話をもどすけど >564 にとって StringIO がダメな理由は拡張ライブラリだからなの?

物凄い富豪的な解決法なので実際の運用状況と応相談だが、Fileオブジェクトを read しちゃって String にするという荒技はあるかもしらん。
0579デフォルトの名無しさん2005/07/09(土) 01:56:00
標準ライブラリの基準はそれなりに使えてメンテナが信用できるかどうか。
0580デフォルトの名無しさん2005/07/09(土) 13:35:54
>>578
> 物凄い富豪的な解決法なので実際の運用状況と応相談だが、Fileオブジェクトを read しちゃって String にするという荒技はあるかもしらん。
逆だろ、したいことは。

> IO.pipeだとでかい文字列突っ込むとハングる(?)様だし…
>>562はdeadlockという言葉について小一時間調べてこい。
0581デフォルトの名無しさん2005/07/09(土) 17:44:57
難しい話の最中にすみません。教えてください。
a = 'ああああ12いいいいい345ううう12ええええ3おお'
という全角文字列から全角数字が2つ以上現れる箇所のスタート位置を示す
配列を得たいのです。
このケースでは、[4,11,17] です。文字コードはSJISです。
a.scan(/[0-9]{2,}/)までは判ったのですが、あとが続きません。
教えてください。
0582 ◆m7YeytgDFE 2005/07/09(土) 18:27:19
>>581
こんなのはいかがですか?結果はバイト単位になりますけど。

a = 'ああああ12いいいいい345ううう12ええええ3おお'
positions = Array.new
a.scan( /[0-9]{2,}/ ) { positions << Regexp.last_match.begin( 0 ) }
p positions # => [8, 22, 34]
05835812005/07/09(土) 19:21:36
(1)582さん、ありがとうございます。なるほど、こりゃあいいです。
last_matchですか。勉強になります。
begin(0)はカッコがなくても、マッチの先頭のオフセットを返すんですね。
スタート位置付きのindexを使ってaから直接取ってくるのもあるかと
思ったんですが、なるほどですね。

(2)もひとつ教えてほしいのですが、
a.scan(/./s) do |item|
string_array.push item
end
みたいにして全角文字を含む配列を使おうとしています。
これに対応して、stringクラスで、全角文字を1と数えるような
indexはあるんでしょうか。byte単位で判定するから、そもそも無理ですか。
なにせ日本生まれのrubyですから、ひょっとしてそういうサービスもあるかと
思いまして。
0584デフォルトの名無しさん2005/07/09(土) 21:51:23
RubyGemsってどういうものなのかが分からない……
どこか日本語で、RubyGemsについて解説してくれているサイトとかないだろうか?

>>583
具体的に何がやりたいのかがよく分からないので、何とも言えないが
とりあえずリファレンスでjcode.rb(添付ライブラリ)を調べてみると幸せになれるかも
05855812005/07/09(土) 23:35:31
jcode.rb の紹介ありがとうございます。
(日本語のtrなんかは使ったことありました。)
a.jindex('あ') と言う感じなものはなかったようです。
0586デフォルトの名無しさん2005/07/09(土) 23:59:18
るびまになかったか?<RubyGemsの紹介
05875842005/07/10(日) 00:55:22
>>586
連載記事はあったけれど、開発の経緯しか書かないらしく
初心者向けの解説記事が掲載される気配はありませんでしたorz
0588 ◆m7YeytgDFE 2005/07/10(日) 10:07:08
>>
jcode.rbを使うならこんな感じ?
 a[ 0, a.index( 'あいう' ) ].jsize

jcode.rbを使わない方法も即席で考えてみました。
 a[ 0, a.index( 'あいう' ) ].scan( /./s ).size
0589 ◆m7YeytgDFE 2005/07/10(日) 10:08:06
>>588
ありゃ?アンカーを忘れた。>>583です。
0590デフォルトの名無しさん2005/07/10(日) 18:16:48
>>587
ようやインストール方法を知りたいということ?
それともgemの中身の説明とかがほしい?
具体的に何を知りたいのか書いてもらえますか。
05915872005/07/10(日) 20:29:58
>>590
自分でパッケージを作るにはどうすればいいのか、が知りたいです。
05925812005/07/10(日) 20:45:49
588さん 色々とありがとうございます。勉強になりました。
不明な点がありましたら、また質問させてもらいます。
その節はよろしくお願いします。

gemって自動取り込み装置ですか?
わたしはwindows上でrubyを利用してますが、時々install.rbがうまくいかな
いことがあり、何でも自動でするのも良し悪しだなあと思うことがあります。
何をしているか要点だけ書いたメモが付いていて、代替的な方法があれば、
手でやっても良いなあ、と思うことがあります。
gem とかRailsとかが流行っているみたいですけど、自分の感覚を超えた自動
化って何か落ち着かない感じがあるんじゃないかと思います。出来上がりは
確かに時間はかからないようですけど、その仕掛けを納得するのが難しく、時
間がかかりそうに思います。
すみません、初心者の分際で。
0593デフォルトの名無しさん2005/07/11(月) 02:02:22
WINDOWS上で、RUBYを使用しシリアル通信を行いたいのですが、
どうすればよいでしょうか?
ググッてみたのですが、分かりませんでした。
0594デフォルトの名無しさん2005/07/11(月) 07:43:50
>>593
じゃ、ヤフってみたらどうでしょうか?
0595デフォルトの名無しさん2005/07/11(月) 09:04:02
>>593
http://raa.ruby-lang.org/

RAAも関連リンクに入れといてくれ。>次スレ立てるやつ
0596デフォルトの名無しさん2005/07/11(月) 16:21:53
拡張子が.soとか.dllじゃないライブラリをロードしたいんだけどrequireではダメっぽいので
loadで実験しているんだけどエラーになる

test.rb
 p $:
 load "nkf.so"
#普通のライブラリがロードできないと話にならないのでnkf.soで実験

#=>
[〜, "."]
test.rb:2:in `load': ./nkf.so:1: Invalid char `\220' in expression (SyntaxError)
    from test.rb:2

>dir
〜
2005/07/03 19:18  729,088 msvcrt-ruby18.dll
2005/07/03 19:19  119,808 nkf.so
2005/07/03 19:20  395,154 ruby.exe
〜

>ruby -v
ruby 1.8.2 (2004-12-25) [i386-mingw32]

何で…?
0597デフォルトの名無しさん2005/07/11(月) 17:41:58
>>592
至極もっともな意見だと思う
しかしそれでも、雑多なライブラリをインストールする場合、その手間を省きたい場合はあるわけで。

「代替的な方法」を提示した上で、rubygemsやinstall.rbみたいな自動化にも対応してくれるのがベストかな

>>596
ほんとだ、require "nkf.so"なら正常に出来るのに……
0598デフォルトの名無しさん2005/07/11(月) 17:44:27
load は ruby スクリプトを読み込むので、拡張ライブラリの読み込みは無理。
そのエラーは、拡張ライブラリを無理矢理 ruby スクリプトと解釈しようとしてエラーになっているんだろう。
普通に require 'nkf.so' ってやればできるはずだけど?
05995972005/07/11(月) 18:02:22
なるほど、そういうことか!
596ではないが、疑問が氷解した。ありがとう

あと、今気づいたんだが>>596でrequireではダメっぽいって言ってるのは
もしかして拡張子を指定していないからでは?
requireで補完してくれる拡張子は、.rb/.dll/.soだけだったはず
06005962005/07/11(月) 19:04:54
>>598
そうなのか…
ということは拡張子が.rb/.dll/.so以外の物を読み込むことは不可能か…?

>copy /y nkf.so nkf.foo
>ruby
require "nkf.foo"
^Z
-:1:in `require': No such file to load -- nkf.foo (LoadError)
    from -:1
0601デフォルトの名無しさん2005/07/11(月) 19:11:10
今はもう.dllは探さないし、読み込むのもそれだけ。
0602デフォルトの名無しさん2005/07/11(月) 21:13:32
いまは もう さがさない そのディーエルーエルー
06035932005/07/11(月) 22:30:37
>>595
ありがとうございます。これから試してみます。
0604デフォルトの名無しさん2005/07/11(月) 23:41:08
>>600
何がしたいんだ?

> ということは拡張子が.rb/.dll/.so以外の物を読み込むことは不可能か…?
単にできるかどうか知りたいということだけなら、不可能でFA。

他にやりたいことがあって袋小路に入ってるんなら、本来の目的を書けばもう
ちょっと別の答えがあるかもしれない。
06055962005/07/12(火) 05:06:50
>>604
mingw/mswinのRubyの拡張の実体はDLLということなのでRubyのライブラリ以外の機能も一緒に実装したい
が、ライブラリ以外の機能を利用するアプリが特定の拡張子(.rb/.dll/soどれもNG)じゃないと認識してくれない

それぞれを分ければいい話なのだがファイルの数を出来るだけ増やしたくなかったので一緒に出来ないかと考えた
う〜ん…無理ならあきらめるべきか…どうしても必修な機能ってわけでもないしなぁ…
0606デフォルトの名無しさん2005/07/12(火) 09:17:37
NTFS必須にしてハードリンク。
0607デフォルトの名無しさん2005/07/13(水) 01:07:24
>>605
> が、ライブラリ以外の機能を利用するアプリが特定の拡張子(.rb/.dll/soどれもNG)じゃないと認識してくれない
rubyとそのアプリとどっちがメインになるわけ?

ruby本体まるごとプラグインにするということはできないではない。
Beckrb: http://www.tietew.net/becky/beckrb/
0608デフォルトの名無しさん2005/07/13(水) 01:11:53
というか>>596の話は初心者質問スレ向けとは思えないんで、
本スレに移動したほうがよくはないか?
どうせ答えるやつは同じなんだし。
06095962005/07/13(水) 02:03:58
>>607
まさにそのような感じのことをやっています
それで、Rubyスクリプトのデバッグ用の関数、クラスもプラグインに統合できないかなと
どうしても必要なわけではないので簡単に行かないようならあきらめます
0610デフォルトの名無しさん2005/07/13(水) 02:38:34
>>609
> まさにそのような感じのことをやっています
> それで、Rubyスクリプトのデバッグ用の関数、クラスもプラグインに統合できないかなと
だとしたら>>607のような構成にしない限り↓は不可能だと思うんだが。

> どうしても必要なわけではないので簡単に行かないようならあきらめます

なんか考えてることがずれてる?
0611デフォルトの名無しさん2005/07/13(水) 22:13:41
>>591
gemを作成する手順は以下のページに説明がある。

RubyGems User Guide | RubyGems Manuals
http://docs.rubygems.org/read/chapter/5

* gemspecファイル(foo.gemspec)を作る。
* gem build foo.gemspecを実行する。

gemspecファイルの内容については以下のページに説明がある。

RubyGems GemSpec Reference | RubyGems Manuals
http://docs.rubygems.org/read/chapter/20

RakeやRailsなど、rubygemsでインストールできるパッケージに含まれる
Rakefileなどを読んだりすれば、何とかなりそうな気がする。
と、自分で試してもいないのに書いてみるテスト。
06125912005/07/14(木) 20:24:06
>>611
おかげでgems理解の糸口がつかめた、ありがとう!
いつかちゃんと理解できたら、解説記事でも書いてみたい
0613デフォルトの名無しさん2005/07/16(土) 01:46:11
symbolって、何に使うと有効なんでしょうか?
0614デフォルトの名無しさん2005/07/16(土) 04:04:25
有効かどうかは価値観による
0615デフォルトの名無しさん2005/07/16(土) 04:44:59
613じゃないけど、使用例見たいっす。
0616デフォルトの名無しさん2005/07/16(土) 05:14:21
symbolは文字列より軽いらしいので
文字列の代わりに使えるならどんどん使っていくべきだと思われる
(参考:ttp://i.loveruby.net/w/OptimizingRubyProgram.html)

俺はいつもハッシュのキーとして使ってるよ↓

DIR_PATHS[:data]
DIR_PATHS[:log]
0617デフォルトの名無しさん2005/07/16(土) 10:33:24
Cでexitのようなプログラムを終了させる関数はあるのでしょうか?
06186172005/07/16(土) 10:42:12
まんまexitでした
0619デフォルトの名無しさん2005/07/16(土) 20:19:01
REXML について質問です。

e = REXML::Element.new( "new_element" )
e.text = "<<"

とすると

e.to_s # => "<<"

となってしまうのはバグですか。それとも仕様ですか。
& は自動的にエスケープしてくれるもんだと思っていましたが。
0620デフォルトの名無しさん2005/07/16(土) 20:20:51
む。

e.text = "&lt;<"

とすると

e.to_s # => "<new_element>&lt;&lt;<new_element>"

の間違いです。すみません
0621デフォルトの名無しさん2005/07/16(土) 21:38:57
http://www.germane-software.com/software/rexml_doc/classes/REXML/Text.html
0622デフォルトの名無しさん2005/07/16(土) 21:46:49
>>621
new メソッドの引数 raw であいまいさを回避することはできました。
それでも 620 で書いた現象は腑に落ちませんが…。
どうもありがとうございました。
0623デフォルトの名無しさん2005/07/20(水) 14:32:44
rtagsってもうないの? irb-toolsもRAAからなくなってるし。
0624でふぉるとぺーぺー2005/07/20(水) 22:59:05
IPを文字位置から指定して、指定した文字数を表示させたいんですが、その手法が見つかりません。
だから配列を使って、以下のようにやってみました。"."で区切るってことをやりたいのですが、

Str = ("123.456.789")#IPと思って
array = Str(/"."/)
でarrayの[2]の中身を抽出したいんですけど(789の部分)、この書き方間違ってます?
789って文字を表示させたいんですよねー。
これで
print array[2]
ってやってもERRORでるし。
どうやったらいいのでしょう?
0625デフォルトの名無しさん2005/07/20(水) 23:02:57
>>624
array = str.split "."
でどう?
0626& ◆1nX/btnIr6 2005/07/20(水) 23:21:59
>>625
できましたー!!ありがとうございます!
d(゚Д゚)☆スペシャルサンクス☆( ゚Д゚)b

でもなんでダブルクォーテーションだけで良かったんですか?
仕様でしょうか?
0627デフォルトの名無しさん2005/07/20(水) 23:40:14
正規表現リテラルとか
0628デフォルトの名無しさん2005/07/20(水) 23:54:19
>>626
splitの第1引数(区切り)には文字列も指定できる。
詳しくは↓のsplitを参照
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=String
0629デフォルトの名無しさん2005/07/21(木) 00:15:56
>>628
(・∀・)ほう
わかりました。ありがとうございます。(TдT)
0630デフォルトの名無しさん2005/07/21(木) 01:54:30
ドウモ〜〜〜ッ!!お〜o(⌒0⌒)oは〜♪ハジメマシテ〜〜〜ッ☆☆(*⌒ヮ⌒*)
私は27歳のOLしてるのぉ〜〜〜っ♪(#⌒〇⌒#)キャハ
うーんとー、私メル友がすっごくすっごく欲しくってー、\(⌒∇⌒)/
探してたら(◎_◎)なんとっ!☆彡(ノ^^)ノ☆彡ヘ(^^ヘ)☆彡(ノ^^)ノ☆彡
素敵な掲示板♪を発見!!!!(^o^)//""" パチパチパチ
あやしい所とか…{{ (>_<;) }} ブルブルすごい数の掲示板がありますけど、
これ全部1人の方が管理しているんですか?(@@;)すごすぎ …
てなわけで、ついつい書いちゃったのらー(o^v^o) エヘヘφ(`∇´)φカキコカキコ♪
メル友に、なってくれるよねっ。(*^-^*) お・ね・が・い♪(* ̄・ ̄)ちゅ♪ッ
え?くれないのぉ〜?(;¬_¬)そんなのいやいや〜〜、ガ━━━*ワ)━━━ン
なってくれなかったら、( `_)乂(_´ ) 勝負! \(^o^)/
☆○(゜ο゜)o ぱ〜んち、☆(゜o(○=(゜ο゜)o バコ〜ン!!("※)=◯)`ο)・;'パーンチ
(>_<) いてっ!ダメ!! ゛o(≧◇≦*)oo(*≧◇≦)o″ダメ!!
(☆o☆)きゃ〜〜(@_@;)やられた〜〜(o_ _)o ドテッ ガ━━〔Ё;)━━ン!
(+_+) 気絶
0631デフォルトの名無しさん2005/07/21(木) 11:22:03
threadで
Thread.start {
fh = open("| ping ***.**.***.***")
count = 0
while !fh.eof
if count <= 3 then
print fh.gets
count = count + 1
else
exit
end
fh.close
}
を実行したいのですけど、最後の"}"がsyntax errorになります。
何が間違っているのでしょうか??
0632デフォルトの名無しさん2005/07/21(木) 11:31:39
インデントとかしなよ
0633デフォルトの名無しさん2005/07/21(木) 11:58:05
whileに対応するendがないよ。
いや、ifに対応するendがないのかもしれんけど。
0634デフォルトの名無しさん2005/07/21(木) 12:02:57
あ ほんとだw
寝不足が単純ミスにつながったー ( p_q)エ-ン
ありがとうございました。
0635デフォルトの名無しさん2005/07/21(木) 14:30:28
>>632
Navi2ch なんかで読んでると、 >>631 みたいなインデントの方がありがたい。
0636デフォルトの名無しさん2005/07/21(木) 14:43:55
>>635
(゚Д゚)ハァ?
0637デフォルトの名無しさん2005/07/21(木) 14:48:53
インデントはあって、単に通常のブラウザではそれが表示に反映されてないだけなんだよ
0638デフォルトの名無しさん2005/07/21(木) 14:54:37
&nbsp;使っとけ
0639デフォルトの名無しさん2005/07/21(木) 14:57:45
>>636
哀れな >>636 がいるスレはここですか?
0640デフォルトの名無しさん2005/07/21(木) 15:37:52
>>632は適切にインデントすりゃ、すぐに問題解決するよってことだろ。
ここでの見栄えなんか関係なく。
0641デフォルトの名無しさん2005/07/21(木) 15:58:39
適切にインデントしてても気づかない人は気づかない気もする。
0642デフォルトの名無しさん2005/07/21(木) 16:28:06
インデントに8スペースも使ってると一瞬なんの言語だ? と思ってしまう。
0643デフォルトの名無しさん2005/07/21(木) 16:33:16
>>640
いやだから、 Navi2ch なら >>631 が適切にインデントしてたことがわかる、
って言ってるのに。
0644デフォルトの名無しさん2005/07/21(木) 16:35:44
>>641
>>631みたいにまともに改行してる場合にも気付かないという奴は死んだって構わない。
0645デフォルトの名無しさん2005/07/21(木) 16:36:55
>>643
print fh.gets
count = count + 1
あたりはされてない
0646デフォルトの名無しさん2005/07/21(木) 16:50:11
exit
もな。

なんでこんなくだらないネタばっかりレスが付くんだよ。
0647デフォルトの名無しさん2005/07/21(木) 16:50:34
適切に…
Thread.start {
 fh = open("| ping ***.**.***.***")
 count = 0
 while !fh.eof
  if count <= 3 then
   print fh.gets
   count = count + 1
  else
   exit
  (end) <抜けている
 end
 fh.close
}
こんな感じ?
0648デフォルトの名無しさん2005/07/21(木) 17:08:46
>>646
・誰でも参加できる単純なネタだから
・くだらないことに熱くなっちゃう人が紛れ込んでるから
0649デフォルトの名無しさん2005/07/21(木) 17:26:13
インデントスタイル宗教論争がはじまる悪寒。
0650デフォルトの名無しさん2005/07/21(木) 18:44:05
scan(re) の存在に気づかずに自分で

class String
  def indices(arg, &block)
    pos = 0
    while not (pos = index(arg, pos)).nil? do
      yield pos
      pos += 1
    end
  end
end

"hogehogefugagufa".indices(/h./) {|a| p [a, $~] }

みたいなのを作ったんだけど、こう書くと$~が取得できないんだね。
スコープの関係上そうなるのは分かったんだけど、$~に値が入るように
書き換えることもできる?
0651デフォルトの名無しさん2005/07/21(木) 20:03:11
$~ という変数名にこだわる必要がなければ、
yield pos, $~
で良いと思うけど。
06526502005/07/21(木) 21:41:50
>>651
ありがと。やるなら $~ にこだわりたいなぁ。無理なのかな。
自作クラスに正規表現を使ったメソッドつけるときに
ヤな感じになったりしそうなんだけど。
0653デフォルトの名無しさん2005/07/21(木) 21:58:41
このスレの住民がpython使いでなくて本当に良かった・・・
0654デフォルトの名無しさん2005/07/21(木) 23:06:18
俺、兼ねてますが……。
ともに初心者レベルだけど。
0655デフォルトの名無しさん2005/07/21(木) 23:21:30
>>650
class String
  def indices(arg, &block)
    pos = 0
    setter = eval("proc{|m|$~=m}", block)
    while (pos = index(arg, pos)) do
      setter.call($~)
      yield pos
      pos += 1
    end
  end
end
0656デフォルトの名無しさん2005/07/21(木) 23:22:36
文字列関係のユーティリティって
Stringに突っ込むのが一般的なの?
06576502005/07/21(木) 23:48:52
>>655
なるほどねぇ。eval に第二引数とかあったんだ。
あと、nilがfalseで評価されるってのも言われるまで
忘れてた ノ(´д`*)

勉強になりました。
0658デフォルトの名無しさん2005/07/22(金) 09:46:02
あとは、while not とか書かないで until って書こうよ、とも思ったな
0659デフォルトの名無しさん2005/07/22(金) 19:13:19
rubyを初めて弄っていますが、
rubyからC++やJava, Perl, C#を扱うことはできますか?
可能ならサンプルもお願いします
0660デフォルトの名無しさん2005/07/22(金) 19:42:18
>>659
できますが Ruby 初心者がサンプル見たくらいで扱いこなせる代物ではありません。
0661デフォルトの名無しさん2005/07/22(金) 19:43:29
扱うって何だ?具体的に何がしたいんだ。
0662デフォルトの名無しさん2005/07/22(金) 19:49:24
>>659
gonzui の langscan あたりが参考になると思います。

とか言ってみるテスト
0663デフォルトの名無しさん2005/07/22(金) 21:09:53
初心者質問失礼します。
「恋するプログラム」を買ってきてrubyインスコしてrdeをダウンロードしてきて最初のサンプルを打ってみると、
ruby-1.8\bin\ruby.exe: No such file to load -- debug2 (LoadError)と出てしまうのですが、どうすればよいのでしょうか?
0664デフォルトの名無しさん2005/07/22(金) 22:08:12
>>663
どっかからdebug2.rbというファイルを見付けてきて、
ruby -e "puts $:" で出て来るディレクトリのどこかにおく。
0665デフォルトの名無しさん2005/07/22(金) 22:58:35
>>664

ありがとうございます。
0666デフォルトの名無しさん2005/07/23(土) 00:00:16
こないだ、初めてRubyGemsを使ったんだよね。
インストールしたのは RMagick-win32-1.7.0-mswin32 で
Rubyのバージョンは ruby 1.8.3 (2005-05-12) [i386-mswin32]。
インストールが終わって、サンプルスクリプトを実行したんだけど
`require': no such file to load -- RMagick (LoadError)
とエラーがでるんだよね。

ruby\lib\ruby\gems\1.8\gems\RMagick-win32-1.7.0-mswin32\lib を
$: に追加するとエラー出さずに動いてくれたから、RUBYLIB に上の
PATHを追加すればとりあえず正常に動くようになるとは思うんだけど
RubyGemsって、インストールする度にRUBYLIBにPATH追記しないと
いけない仕様なの?
それともインストールが完全に成功してなかったのかな。
0667デフォルトの名無しさん2005/07/23(土) 00:23:46
>>666
他のgemパッケージをインストールしてみて、それもパス追記が必要ならRubyGemsがおかしい。
パス追記が必要でなければ、RMagickのgemパッケージがおかしい(or Windowsでテストしてない。)
0668名無しさん@Linuxザウルス2005/07/23(土) 03:54:46
>>616
>俺はいつもハッシュのキーとして使ってるよ↓

そこで、(出力の時などに)キーでソートしたいときに困る訳ですよ。
結局to_sするはめに..
0669デフォルトの名無しさん2005/07/23(土) 03:58:16
一般的にいうとソートしたくなる時が少ないのでは?
頻繁にソートするとなると、そーときはArrayでも使うだろうし。
0670デフォルトの名無しさん2005/07/23(土) 06:49:52
to_iメソッドをオーバライドして文字列があれば
変換しないようにしたいんだけど、こんなエラーがでるのよ。
`to_i': super: no superclass method `to_i' (NoMethodError)
誰か助けて。

class String
 def to_i
  if /^-?\d+$/ =~ self 
   return super()
  end
  return self
 end
end

foo = "-10"
p foo.to_i
0671デフォルトの名無しさん2005/07/23(土) 08:26:50
エラーメッセージの通りだよ
Stringのスーパークラス(Object)にto_iメソッドは定義されていない

というか、オーバーライドするのなら return self だけで十分じゃないか?
0672デフォルトの名無しさん2005/07/23(土) 10:53:00
class String
 orig_to_i = instance_method(:to_i)
 define_method(:to_i) do
  if /^-?\d+$/ =~ self 
   return orig_to_i.bind(self).call
  end
  return self
 end
end
06736702005/07/23(土) 12:03:59
>>671
ごめん。エラーの意味はわかったんだけど
なんでreturn selfだけで十分なのかわかんない。(´・ω・`)
>>672
ありがとう、あなたは私の恩人です。トム。

わからんメソッドだらけだからリファレンス読んでくる。
06746712005/07/23(土) 12:21:55
ああごめん、俺勘違いしてた
"300".to_iで"300"を返すようにしたいのかと思ったんだ

で、トムこと>>672のコードでも上手くいくけど
こういう書き方もある↓

class String
 alias to_i_original to_i
 def to_i
  if /^-?\d+$/ =~ self 
   return self.to_i_original
  else
   return self
  end
 end
end
0675トム?2005/07/23(土) 20:17:43
そっちのが普通かも知れん。
ただ、aliasはローカルスコープじゃないから
二重三重に定義し直そうとするとはまる。
06766702005/07/24(日) 00:49:10
>>674
なるほどこれだと俺にも詳らかによくわかる。
ありがとう。トム。
0677デフォルトの名無しさん2005/07/24(日) 14:45:11
>>666
オレもgemsはぜんぜん知らないんだけど、 require_gems てのがあるんじゃなかったっけか?
0678デフォルトの名無しさん2005/07/24(日) 22:30:49
set RUBYOPT=rubygems
0679デフォルトの名無しさん2005/07/25(月) 12:37:48
HTMLをツリー構造として扱えるライブラリってありますか?
html.each_childで子要素全てにアクセスできる、みたいな。
(htmlsplit.rbにツリー構成機能を足したような感じ)

REXMLでも同じ事はできるんだけれども、もっと軽くてシンプルなものを探してます。
0680デフォルトの名無しさん2005/07/25(月) 12:49:27
自分で書いてみれば? 別の教えたとしても不満言われそうだしな。

0681デフォルトの名無しさん2005/07/25(月) 13:20:00
htreeは?
0682デフォルトの名無しさん2005/07/25(月) 16:17:22
日本語マニュアルがないから没
0683デフォルトの名無しさん2005/07/25(月) 19:21:25
プログラム走らせているときに、どこの関数で何秒費やしたとか
詳細な情報を出力してくれるライブラリの名前なんだっけ。
前やったことあったきがするのであると思うんだけど。
raaで調べようかと思ったら、落ちてるし。
0684デフォルトの名無しさん2005/07/25(月) 19:45:44
profile
0685デフォルトの名無しさん2005/07/25(月) 19:46:51
おお。めっちゃサンクス。
06866792005/07/27(水) 00:28:20
>>680
「自分で書くよりまず既存の物を探せ」という親からの遺言で

>>681
こんなライブラリがあったんですね
教えていただいてありがとうございます!



結局は自分で書いてしまいましたが
0687デフォルトの名無しさん2005/07/27(水) 01:27:22
>>686
ぜひどこかで公開してください!
0688デフォルトの名無しさん2005/07/27(水) 03:08:47
そんなに難しいものか?
0689デフォルトの名無しさん2005/07/27(水) 04:27:57
いい加減な HTML までフォローしようとすると、結構面倒な気はする。
入れ子がグダグダになってたり、閉じ用のタグが無くても良いものもあったりなどなど。

……というか、ライブラリあったのね。

昔、REXML ではダメポな HTML を処理しようとして、作りかけて投げた。
結局は、決め打ちで処理して良しとした。
06906792005/07/27(水) 11:06:17
>>683-685
時にはRBProf のことも思い出してあげてください

>>687
htmlsplit.rb が必要で
その場しのぎで書いたために、ライブラリですが
それでもよろしければ、参考にどうぞ。

ttp://scl.littlestar.jp/revwiki/view.cgi?HTMLScanner

06916792005/07/27(水) 11:08:54
すいません、途中で送信してしまったために文章がおかしくなってます。
正しくは
「htmlsplit.rb の機能に頼っているうえ
その場しのぎで書いたために、使い勝手に欠けるライブラリですが... 」
です。
0692デフォルトの名無しさん2005/07/27(水) 14:39:05
>>688
他の人のソースコードを読むと参考になることが多いので。

>>690
多謝です。拝見いたします。
0693デフォルトの名無しさん2005/07/27(水) 15:03:55
shugo さんの ruby-prof もドゾ-

ttp://shugo.net/archive/ruby-prof/
ttp://svn.shugo.net/src/ruby-prof/trunk/
0694デフォルトの名無しさん2005/07/27(水) 15:45:01
画像を定期的にWEBからダウンロードして指定のファイル名で保存するという
ツールを探していたところ
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1374332
>ruby -r "net/http" -e "Net::HTTP.get_print 'hostname','/yyy.mda'" > yyy.mda.savefile
という記載を見つけrubyをインストールして上記スクリプトを実行するところまで
辿り付きました。っが、ダウンロードする画像がすべて壊れてしまいます。
まだrubyについてこれから勉強していく前段階なので
自分の環境がおかしいのかこのスクリプトに何か足りないのかも分かりません。
お手数ですが、誰かこのスクリプト確認していただけませんでしょうか
ruby -r "net/http" -e "Net::HTTP.get_print 'ca.c.yimg.jp','/weather/1122445680/weather.yahoo.co.jp/weather/jp/images/satellite/img/jp_1.jpg'" > jp_1.jpg
0695デフォルトの名無しさん2005/07/27(水) 16:02:34
>>694
ひょっとしてWindows?
だとしたら、Net::HTTP.get_print 〜 の前に、$stdout.binmode を入れてみて。
0696デフォルトの名無しさん2005/07/27(水) 18:34:36
tagiter ってみんな使わないの?
0697デフォルトの名無しさん2005/07/27(水) 23:45:07
>>696
試しにマニュアル読んでみたけど、使い方が今ひとつはっきりしなかった
0698Omoti輸卒@特殊投機強襲部隊 ◆rzOmotimAo 2005/07/28(木) 06:32:58
RPG ツクールXP付属の
RGSSで、
外部プログラムである、IEをゲーム中から
起動するのはどうかけばいいですか?
0699Omoti輸卒@特殊投機強襲部隊 ◆rzOmotimAo 2005/07/28(木) 06:36:57
あげ
0700デフォルトの名無しさん2005/07/28(木) 10:48:52
とりあえず、大した必要もないのにスレをageず
きちんとsageてください
話はそれからです

というか、RGSSからIEを起動して何に使うんだ
0701Omoti輸卒@特殊投機強襲部隊 ◆rzOmotimAo 2005/07/28(木) 12:00:13
>>700
こちらの希望のページを開かせようとおもって
あげ
execなんとか、をつかえばいいのか
0702デフォルトの名無しさん2005/07/28(木) 12:01:38
夏真っ盛り
0703デフォルトの名無しさん2005/07/28(木) 12:17:18
質問の仕方から覚えた方が良いな。
俺は RGSS だからといって冷たく当たる気は無いけど。
別スレ立てろと言ってた人の気持が、ちょっと分かった。
0704Omoti輸卒@特殊投機強襲部隊 ◆rzOmotimAo 2005/07/28(木) 13:22:47
【RGSS】
●RPGツクールXPの付属スクリプト
●Rubyを元にしている
●規約でリバースエンジニアリング不可なので
外部ライブラリ等を作成困難
●RGSSそのものもクローズドソースなのでユーザーが
発展させることは困難

体験版ダウンロード
http://www.enterbrain.co.jp/digifami/products/rpgxp/download.html
Google検索
「RGSS」
http://www.google.co.jp/search?hl=ja&q=RGSS&lr=
0705デフォルトの名無しさん2005/07/28(木) 13:32:09
↓さて、次の質問の方どうぞー
0706デフォルトの名無しさん2005/07/28(木) 13:45:29
{ '192.168.10.3', '192.168.2.1', '192.168.10.10', '192.168.9.100'}
というようなIPアドレスを格納した配列があるのですが、
これを昇順に並べて返すよい方法はないでしょうか? 上の例だと
{ '192.168.2.1', '192.168.10.3', '192.168.10.10', '192.168.9.100'}
となれば言いのですが。 一旦12ケタの数字に直すのが一番でしょうか?
0707デフォルトの名無しさん2005/07/28(木) 14:02:01
1番がどうかと言われてもなぁ、好きにやったら良いかと。それで良いんじゃない?
他には 8bit ずつ処理するとか、2進数に戻すなど。
0708デフォルトの名無しさん2005/07/28(木) 14:22:12
>>704
メールアドレス欄には「sage」とだけ書くこと。
余分な物を書くとageと同じ扱いになる。

>>706
splitなんかで12桁に戻すのがベストだと思う
他にいい方法もないだろうし
0709デフォルトの名無しさん2005/07/28(木) 14:56:11
何故に split ……
0710デフォルトの名無しさん2005/07/28(木) 15:32:18
>>708
うそつき。
0711デフォルトの名無しさん2005/07/28(木) 15:51:48
>>706
並べ替え後の順序が間違ってない?

require "ipaddr"
ipaddr_list = ['192.168.10.3', '192.168.2.1', '192.168.10.10', '192.168.9.100']
p ipaddr_list.sort { |a, b| IPAddr::new(a).to_i <=> IPAddr::new(b).to_i }
0712デフォルトの名無しさん2005/07/28(木) 16:26:00
>>709
>>710
ギャースマンカッタ
0713デフォルトの名無しさん2005/07/28(木) 22:02:53
>>711
sort_by使えよ。
0714デフォルトの名無しさん2005/07/28(木) 22:17:07
>>713
ギャースマンカッタ (真似)
0715デフォルトの名無しさん2005/07/28(木) 22:21:58
というわけで早速既存のコードを全部 sort_by 使って書き直してみようと思ったけど、
Enumerable#sort_by! って無いのね?
0716デフォルトの名無しさん2005/07/28(木) 22:42:05
Enumerable#sort! もないけどな。
0717デフォルトの名無しさん2005/07/28(木) 22:56:32
あ、そういえばそうだね。
まあそっちは Array#sort! があるからあまり気にならないけど。
0718デフォルトの名無しさん2005/07/28(木) 23:47:22
moduleに定義したメソッドは、includeするとインスタンスメソッドとして使用できますが、これをクラスメソッドにするにはどうしたらいいんだっけ?
なんかclass_evalとかinstance_evalとかを駆使した方法を見た覚えがあるのだが。。
0719デフォルトの名無しさん2005/07/29(金) 00:39:49
>>718
evalなしでも実現できる。includeでなくextendを使えばいい
0720デフォルトの名無しさん2005/07/29(金) 07:00:41
eclipse + rdt(eclipse rubyプラグイン) + cygwin rubyで開発してる人いる?
0721デフォルトの名無しさん2005/07/29(金) 13:33:39
>>718
module_function
0722Omoti輸卒@特殊投機強襲部隊 ◆rzOmotimAo 2005/07/29(金) 14:57:49
http://www.tkool.net/faq_bbs/index.php?mode=normal&log_no=443

RGSSでIEをゲーム中に起動して
特定のURLを表示する方法、わかりました!
0723デフォルトの名無しさん2005/07/29(金) 22:33:03
そうか、よかったな
0724デフォルトの名無しさん2005/07/30(土) 15:28:54
pっていう変数に代入したくないな。
0725デフォルトの名無しさん2005/08/01(月) 01:14:15
ディレクトリを指定して、ファイルの生成を行うシンプルな方法ってないだしょうか。
いまだ
File.open(file_name,"w").write(contents_body)
FileUtils.mv(file_name,dir_path)
みたいに作ったファイルをわざわざ一度移動させるのが、
なんかもっさりしとってめんどくさい。
0726 ◆m7YeytgDFE 2005/08/01(月) 01:18:26
>>725
下記のような方法じゃ駄目ですか?

File.open(dir_path + "/" + file_name,"w").write(contents_body)
0727デフォルトの名無しさん2005/08/01(月) 01:18:40
`touch #{dir_path}/#{file_name}`
0728デフォルトの名無しさん2005/08/01(月) 09:44:23
>>725
それ専用のメソッドを作るのが良いと思うよ

>>726
その方法だとディレクトリが存在しないときにエラーが出てしまう
0729デフォルトの名無しさん2005/08/01(月) 12:39:25
>>728
>その方法だとディレクトリが存在しないときにエラーが出てしまう
・・・存在しなければ自動的に作ってしまうメソッドを組むしかないか。

でも、そんなメソッドがあると、コードのなかで混乱しそうだ。
「突然」作成されるディレクトリ。

やはり一度作成されたことを、明示的にコードのなかで記述しておいたほうが良さそう。
0730デフォルトの名無しさん2005/08/01(月) 13:12:55
>>729
>やはり一度作成されたことを、明示的にコードのなかで記述しておいたほうが良さそう。

多少冗長でも、わかりやすいプログラム、
「プレゼンテーションとしてのコーディング」を意識する、ってとこでしょうか?
0731デフォルトの名無しさん2005/08/01(月) 13:34:16
>>726
closeしないとまずいだろ。

>>729
FileUtils
0732デフォルトの名無しさん2005/08/01(月) 14:06:55
>>726-727
みなさん File::join はお嫌いですか?
0733 ◆m7YeytgDFE 2005/08/01(月) 14:24:42
>>731
ごもっとも。ファイルの所在のことだけを示してたんで、
書き込んだ後のことは考慮してませんでした。
自分ではopenにブロックを渡して自動的にcloseするようにしてます。

>>728
最終的にファイルを配置するディレクトリは存在するものと思ってました。
そのディレクトリが存在しない場合も考慮するのであれば、
そもそものFileUtils.mvでも駄目ですよね?
対象ディレクトリの有無を検査するとかmkdirを実行するとかは、
ファイルを生成する前の処理しておくもんだとばかり...。
0734デフォルトの名無しさん2005/08/01(月) 17:02:19
mvなら勝手にディレクトリ作ってくれるよ
0735デフォルトの名無しさん2005/08/01(月) 17:43:20
>>731
GCのときに勝手にcloseするんでなかったっけ。
明示的に閉じた方が良いってのは分かるけど。
0736 ◆m7YeytgDFE 2005/08/01(月) 18:18:26
>>734
あれ?下記のいずれでもエラーになるんです。
ディレクトリを作らせる指定が必要?

ruby 1.8.2 (2005-04-11) [i386-linux]

FileUtils.mv( 'junk.dat', 'new-dir/junk.dat' )
FileUtils.mv( 'junk.dat', 'new-dir/' )

/usr/lib/ruby/1.8/fileutils.rb:590:in `rename': Not a directory - junk.dat or new-dir/ (Errno::ENOTDIR)
from /usr/lib/ruby/1.8/fileutils.rb:590:in `mv'
from /usr/lib/ruby/1.8/fileutils.rb:579:in `fu_each_src_dest'
from /usr/lib/ruby/1.8/fileutils.rb:861:in `fu_each_src_dest0'
from /usr/lib/ruby/1.8/fileutils.rb:861:in `fu_each_src_dest'
from /usr/lib/ruby/1.8/fileutils.rb:579:in `mv'
from -e:1
0737デフォルトの名無しさん2005/08/02(火) 12:51:02
>>736
こっちで同じスクリプトを実行したら、1.8.1, 1.8.2 共にエラー無く動作したんだが……
もちろんディレクトリも自動で作ってくれた

なぜ
0738デフォルトの名無しさん2005/08/02(火) 16:27:00
libcの仕様が違うんじゃないの、とか適当に勘でいってみる。
0739デフォルトの名無しさん2005/08/02(火) 17:27:55
ビンゴでした。libcを変えてみたら自動で作ってくれるようになりました。ありがとうございました。
0740デフォルトの名無しさん2005/08/02(火) 19:13:06
ということは結局、ちゃんとディレクトリの有無を確認するべきなんだな
0741デフォルトの名無しさん2005/08/02(火) 20:05:28
それか、ルートディレクトリにしかファイルを生成しないようにしちゃうか。
0742デフォルトの名無しさん2005/08/02(火) 20:17:34
これでいいだろ
`ruby -run -e mkdir -- -p #{dir_path}`
`ruby -run -e touch -- #{dir_path}/#{file_name}`
0743デフォルトの名無しさん2005/08/02(火) 21:43:16
FileUtils.mkdir_p でどうでしょ
0744デフォルトの名無しさん2005/08/02(火) 22:30:43
良いと思う。

つーか、元のお題がすっ飛んでる気がするが、気のせいか?
0745デフォルトの名無しさん2005/08/03(水) 12:25:28
すっ飛んでるのはtouchとかいってる約一名。
0746デフォルトの名無しさん2005/08/04(木) 03:08:14
このスレ見て初めてFileUtilsの存在を知ったんだけど
いろいろと便利な機能があるんだなぁ
installとかtouchとかmkpathとか、どことなくステキ
0747デフォルトの名無しさん2005/08/04(木) 08:34:27
cgi.rb でさぁ、フォームフィールトの値を得ようとしてさぁ

cgi = CGI.new
cgi['hoge'].class

としたら String って返ってきたもんでさぁ

cgi['hoge'][2..3] とか cgi['hoge'][2, 2] などやってみたら nil になるワケよ。
むろん、文字列の数は範囲内だし、cgi['hoge'].length はちゃんと文字列数が返ってくる。

ワケワカンネ と思ってマヌアル見直してみたら、配列を返すとある。
もー、意味不明。久々にハマりましたよ。
0748デフォルトの名無しさん2005/08/04(木) 13:03:05
1.8.x 前後の cgi.rb はバージョン毎に微妙に挙動が異なる最悪の仕様
とりあえずここ↓の CGI Adjuster を使うべし
http://www.nslabs.jp/rubycgi-18compat.rhtml

ただし Session::PStore には対応していないことに注意
0749デフォルトの名無しさん2005/08/04(木) 16:00:01
みなさん WEBrick::CGI はお嫌いですか?
0750デフォルトの名無しさん2005/08/04(木) 17:11:46
一目で使い方が把握できるマニュアルがあれば手を出すかも
0751デフォルトの名無しさん2005/08/05(金) 11:49:17
hoge, = cgi['hoge']
っていう書き方がおすすめ。
0752デフォルトの名無しさん2005/08/06(土) 02:15:51
>>749
好き嫌いじゃなくて単に知られていないだけでは。
0753デフォルトの名無しさん2005/08/06(土) 11:27:17
質問ではないんだけれども
ちょっと一つ、このスレで聞きたいことがあるんだ

Ruby関連のドキュメントが不足してるってよく言われるけど
実際、どんなドキュメントが有れば便利なんだろう?
ライブラリの使い方とか?
0754デフォルトの名無しさん2005/08/06(土) 12:26:56
>>753
俺の場合
・リファレンスマニュアルが所々書き方が曖昧なところある
 →試してみないと動作がわからない
・組み込みに関する資料が少ない
・ライブラリの作り方に関して詳しい資料が少ない
0755ruby 1.8.22005/08/06(土) 14:43:00
■ YahooBB! 規制 ■
規制開始日,時,規制解除日,時,備 考
05.8.4,05:32:25,05.8.4,16:50:25,YahooBB218128★050804臨時地震アスベスト等マルチポスト報告★2
05.8.3,14:35:09,05.8.3,23:53:22,YahooBB221017★20050728 もてない男性板 嵐商事報告スレ 2
05.8.1,15:16:25,05.8.3,00:48:29,YahooBB218122★20050728 もてない男性板 嵐商事報告スレ 2

この場合、規制開始日時 と 規制解除日時の差をとって、
日時分秒に変換するには、どうすんの?
d1="05.8.4"; t1="05:32:25"
d2="05.8.4"; t2="16:50:25"
dtm1 = Obj.method(d1 + t1); dtm2 = Obj.method(d2 + t2)
sa = dtm2 - dtm1
puts sa.to_readable_format()

こんな感じで、読みやすい出力が欲しいです。
この時間を色々調べて、最長、最短の規制、発生頻度とか調べたい。
文字列から、時間オブジェクトは得られないの?
"2005-08-04 12:34:56".to_time みたいな。
0756デフォルトの名無しさん2005/08/06(土) 15:03:50
require 'time.rb'
a="2005-08-04 12:34:56"
p Time.parse(a)
0757デフォルトの名無しさん2005/08/06(土) 15:18:42
>>754
ライブラリの作り方の資料、あったらいいなぁ
ライブラリ向けのクラス設計のコツとかも知りたい
07587552005/08/06(土) 15:30:56
>>756
ありがとうございました。
0759デフォルトの名無しさん2005/08/06(土) 18:49:47
FreeBSDでCGIライブラリを使ってデバッグするとき
(offline mode: enter name=value pairs on standard input)
を終了するのに何を入力すればいいの?
^Zを送るとOSの処理の方が優先されてRubyがサスペンドしてしまう…(汗
0760デフォルトの名無しさん2005/08/06(土) 19:03:01
^Dじゃなかったけ?
0761デフォルトの名無しさん2005/08/06(土) 19:36:42
>>760
ありがとう。できました。
0762デフォルトの名無しさん2005/08/06(土) 22:00:41
>>753
ドキュメントの数ではない。質だ。わかりにくいドキュメントがたくさんあってもないのと同じ。
あと、リファレンスマニュアルでのクラスの説明では、先頭にメソッド一覧をつけてほしい。
またどんなドキュメントにしたらいいかは、www.php.netを参考にしたらいいかも。PHPユーザから不満を聞いたことがないくらいだし、よくできてると思う。
0763デフォルトの名無しさん2005/08/06(土) 22:56:18
>>762
ttp://www.ruby-doc.org/core/
質に関しては知らないけどな。

単に、誰がコストを払うかの問題だろ。
ユーザを増やさなきゃ、改善される確率は低いままだろね。
あと、Ruby製で良いマニュアル作成ツールを作らないと (w
0764デフォルトの名無しさん2005/08/06(土) 23:47:39
>>753
マニュアルとかっていうより、Rubyをつかったソースをもっと見てみたい。
(マニュアルはttp://www.ruby-lang.org/ja/man/archive/で結構間に合う)

特に、オブジェクトパターンをRubyでやったらどうなるのか。とか。
Javaみたいな回りくどい言語でデザインパターンを解説されるより、Rubyみたいな容赦なくシンプルに綴れる言語の方が、理解が早いと思うんだけれど。

あとはRuby on Railsの邦文資料などなど。

#てめぇで書けって話しだな。
0765デフォルトの名無しさん2005/08/07(日) 02:48:13
cgi.rb でさぁ、フォームフィールドの値を得てさぁ、

cgi = CGI.new
cgi.each_pair{ |k, v| puts k + v }

なんてやってみたら例外発生しちゃうのな。
もー意味不明。Hash で格納してるんだよな?
p cgi してみたら #["hoge"] なんかあるんだが、これのせい?

またまた、ハマりましたよ。
…… WEBrick::CGI を試してみるか orz
0766デフォルトの名無しさん2005/08/07(日) 03:13:16
>>765
CGI.new で生成されるオブジェクトは、あくまで CGI オブジェクトであって Hash ではない
なので each_pair というメソッドは使えない

each_pair を実行したいなら、 cgi.params.each_pair と書くべし。
0767デフォルトの名無しさん2005/08/07(日) 11:40:56
まぁでも CGI#each_pair とかがあるといいのになぁと思うことはあるよね。
07687652005/08/07(日) 12:48:03
ありがとうです
漏れが未熟者でした orz
07697532005/08/07(日) 13:18:27
>>754 >>762-764
みんな意見ありがとう。超☆感謝

ちょっと考えてることがあるので
もし実現できそうになったら、ここで公開したいと思う
0770デフォルトの名無しさん2005/08/07(日) 13:40:42
しかし、cgi.rb は、あらゆるところで、ボロクソ言われているな。
ベテランも使いにくい、初心者にも使いにくい、
いったい、なんだこれ?
0771デフォルトの名無しさん2005/08/07(日) 13:42:18
Ruby2.0で刷新されます



きっと・・・
0772デフォルトの名無しさん2005/08/07(日) 13:49:13
>>771
やめて希望的観測やめて
0773デフォルトの名無しさん2005/08/07(日) 19:06:04
GCもRuby 2.0で刷新…

されるの?
0774デフォルトの名無しさん2005/08/07(日) 23:05:22
Ruby2.0はmatzのライフワーク
0775デフォルトの名無しさん2005/08/08(月) 01:19:59
Rubyを使い始めて3日のものです。質問させていただきます。
サンプルを参考に以下のように

require 'open-uri'
proxy_addr = 'bc-vip.atl2.corp.earthlink.net:8080'
open("http://www.ruby-lang.org", proxy_addr) {|f|
f.each_line {|line| p line }
}

プロクシサーバを介してウェブファイルを取得しようとしているのですが、

invalid access mode bc-vip.atl2.corp.earthlink.net:8080 (URI::HTTP resource is r
ead only.)
c:/program files/ruby/lib/ruby/1.8/open-uri.rb:131:in `open_uri'
Press ENTER to close the window...

などというエラーが発生してしまいます。

どなたかプロクシを介したウェブページの取得方法を教えていただける方はいませんでしょうか。

よろしくお願い致します。
0776デフォルトの名無しさん2005/08/08(月) 01:44:09
>>775
open("http://www.ruby-lang.org", :proxy => proxy_addr) {|f|

じゃね。
http://www.ruby-lang.org/ja/man/?cmd=view;name=open-uri.rb
0777デフォルトの名無しさん2005/08/08(月) 03:10:34
>>776
ありがとうございます。
確かに、そうですね。ただ、それでもうまくいきません。
undefined local variable or method `proxy' for main:Object
D:/My Documents/マイ ノート/Ruby/aa3/untitled1.rb:3
Press ENTER to close the window...

となります。他にご回答はありませんでしょうか?
0778デフォルトの名無しさん2005/08/08(月) 03:14:01
>>777
proxy の前のコロン(:)はちゃんと入ってるか?
0779デフォルトの名無しさん2005/08/08(月) 03:31:28
>>778

コメントありがとうございました。

require 'open-uri'
proxy_addr = 'bc-vip.atl2.corp.earthlink.net:8080'
open("http://www.ruby-lang.org", :proxy => proxy_addr) {|f|
f.each_line {|line| p line }
}

とproxyの前にコロンを入れてみましたが、同じく
undefined method
と出てしまいました。

他に試すべき点はありますでしょうか?

よろしくお願い致します。
0780デフォルトの名無しさん2005/08/08(月) 09:46:14
本当に自分でも考えて試してるのか?
open("http://www.ruby-lang.org", "proxy" => proxy_addr) {|f| ...
とか
proxy_addr = 'http://192.168.11.22:7979'
open("http://www.ruby-lang.org", :proxy => proxy_addr) {|f| ...
とか
open("http://www.ruby-lang.org", {:proxy => proxy_addr}) {|f| ...
とかいろいろ思いつくだろ?
0781デフォルトの名無しさん2005/08/08(月) 10:10:05
夏だな
0782 ◆m7YeytgDFE 2005/08/08(月) 10:12:54
>>779
プロキシの指定は下記のようにしないとまずくありませんか?

proxy_addr = 'http://bc-vip.atl2.corp.earthlink.net:8080/'
0783デフォルトの名無しさん2005/08/08(月) 11:46:34
本当に初歩的な質問ですいません。
手始めに、Linuxでエディタの作るバックアップファイルを削除するスクリプトを
つくろうと思ったのですが、対象ファイル(例えば、#hoge.txt#)を正規表現で補足
してくれません。内容は以下のようなもので、エラーの内容もよく分からないのです。
どなたか原因ご指摘下さい。

irb(main):001:0> str = "#hoge.txt#"
=> "#hoge.txt#"
irb(main):002:0> /^#.+#$/ =~ str
SyntaxError: compile error
(irb):2: unterminated string meets end of file
(irb):2: syntax error
from (irb):2
0784デフォルトの名無しさん2005/08/08(月) 12:12:39
すみません。\エスケープで自己解決しました。
自分でいうのも何ですが、これはもうれっきとした夏です。真夏です
0785デフォルトの名無しさん2005/08/08(月) 12:24:44
$ ruby -e '/#/'
$ ruby -e '/#$/'
-e:1: unterminated string meets end of file
-e:1: syntax error

BUGじゃね?
0786デフォルトの名無しさん2005/08/08(月) 12:41:57
/\#$/
0787デフォルトの名無しさん2005/08/08(月) 12:46:04
>>758
どうなんでしょう…。難しいことは分かりませんが、
下でうまくいきました。#はメタ文字?それとも全く意味が変わってる?
よくは分かりません。

irb(main):001:0> str = "#hoge.txt#"
=> "#hoge.txt#"
irb(main):002:0> /^\#.+\#$/ =~ str
=> 0
0788デフォルトの名無しさん2005/08/08(月) 13:19:06
#は(少なくとも現時点では)正規表現のメタ文字ではないはずなので
エスケープしないとエラーが出るのはおかしい……と思う
多分本体側のバグだろう

とりあえず今のところは>>787の方法でOK
0789デフォルトの名無しさん2005/08/08(月) 13:41:28
仕様だ。#$/は#{$/}と等価。
ほんとに夏だな。すげー夕立もきたし。
0790デフォルトの名無しさん2005/08/08(月) 15:47:35
>>789
こんな仕様があったのか・・知らなかった
0791デフォルトの名無しさん2005/08/08(月) 16:55:14
>>782
>>780

本当にありがとうございました!
やっとうまくいきました。

今まではどこが駄目だったのか検証してみます。
0792デフォルトの名無しさん2005/08/08(月) 23:53:18
質問です。
1.8.3はクリスマスまで出ないのでしょうか?

ruby_1.8の
ext/enumerator 以下が空なのはHEADで移動になったときの
cvs ci のミスなのでしょうか?
0793デフォルトの名無しさん2005/08/09(火) 03:09:37
791です。

また質問させていただきます。

open-uriライブラリを使ってウェブサイトのHTMLを取得しても、カウンターが回らない現象が確認できたのですが、これは何故かどなた説明していただけますでしょうか。

よろしくお願いいたします。
0794デフォルトの名無しさん2005/08/09(火) 03:40:57
open-uriライブラリを使ってウェブサイトのHTMLを取得しても、カウンターが回らないから
0795デフォルトの名無しさん2005/08/09(火) 04:52:43
カウンタは普通、HTMLをそのまま読み込んだだけでは回らないようにできてる
0796デフォルトの名無しさん2005/08/09(火) 05:41:45
>>794
>>795
そうだったんですか、ありがとうございました。
もう少し自分で調べてみますが、カウンターが反応するようにすることへの何かアドバイスがいただければ幸いです。
0797デフォルトの名無しさん2005/08/09(火) 05:46:27
WebProgにRubyなCGIスレがあるよ
0798デフォルトの名無しさん2005/08/09(火) 06:39:46
boostでpythonが組み込めるようですが
rubyも同じように組み込むことが出来るのでしょうか?
導入の手引きなどありましたら紹介してください
0799デフォルトの名無しさん2005/08/09(火) 06:42:52
>>792
> ruby_1.8の
> ext/enumerator 以下が空なのはHEADで移動になったときの
> cvs ci のミスなのでしょうか?
cvs upのミス。-dと-Pをつけれ。
詳しくは cvs -H up
0800デフォルトの名無しさん2005/08/09(火) 12:21:23
>>789
盲点だな
0801デフォルトの名無しさん2005/08/09(火) 13:13:15
>>796
そもそものカウンターの仕組みを考えてみれ。
小学生の夏休みの自由研究にはちょうどいいくらいだろう。
0802デフォルトの名無しさん2005/08/09(火) 13:51:54
>>801
access.logを解析してhtmlをupdateするdaemonが常駐してる
0803デフォルトの名無しさん2005/08/09(火) 14:35:17
最近はSSIって話題にも上らないのか。
0804デフォルトの名無しさん2005/08/09(火) 17:44:52
おまいらがちゃんと面倒見てやらないから ML に変なのが居着いちまったじゃねえかよ!
0805デフォルトの名無しさん2005/08/09(火) 17:54:24
ML の人たち、本当にご苦労様です……
0806デフォルトの名無しさん2005/08/09(火) 19:49:59
いちいち反応するからだよ。
0807デフォルトの名無しさん2005/08/09(火) 20:05:44
>>797
>>801
>>802
ありがとうございました。
WebProgの方でも質問させていただきました。
0808デフォルトの名無しさん2005/08/09(火) 20:14:14
ほんと、MLは丁寧な対応で感心する。
でもきっと内心はどろどろ。
0809デフォルトの名無しさん2005/08/09(火) 22:18:22
とりあえず毎度々々バカみたいなテストメール投げんのだけはヤメレ。
0810デフォルトの名無しさん2005/08/09(火) 22:28:37
こいつか
0811デフォルトの名無しさん2005/08/09(火) 22:30:18
RGSS
http://pc8.2ch.net/test/read.cgi/tech/1122823349/
0812デフォルトの名無しさん2005/08/11(木) 18:23:52
文字コードがEUCか否か判別したいんだけど何か良い方法ありますか?

NKF.guessはイマイチ上手く動かないようだし1.8.1以前と1.8.2以降で挙動が違うみたいだし…orz

>ruby -v
ruby 1.8.2 (2004-12-25) [i386-mingw32]

test.rb(euc-jp)

require 'jcode'
require 'nkf'
$KCODE = 'e'

p NKF.guess('あいうえお')
p NKF.guess1('あいうえお')
p NKF::EUC
p NKF::ASCII
#=>
5
2
2
5
0813デフォルトの名無しさん2005/08/11(木) 18:56:45
よい方法なぞない。
EUCとSJISは絶対に判別不能な組み合わせが存在するから、
自動判別はあてにせず、文字コードを明示的に指定できるように
しておくべき。
0814デフォルトの名無しさん2005/08/11(木) 18:57:45
[ruby-list:41013] では不足ということ?
0815デフォルトの名無しさん2005/08/11(木) 18:59:54
うぅ、かぶった。「完全な方法は無い」けど「よい方法なぞない」はどうかと。
0816デフォルトの名無しさん2005/08/11(木) 20:33:07
The RWiki - たむら::日本語文字コードの自動判定
http://rubyurl.com/EBT3p

を読むとか。

Mconvとかよさげ。
08178122005/08/11(木) 22:37:01
>>813
>自動判別はあてにせず、文字コードを明示的に指定できるように
>しておくべき。
判別機能を使用したいスクリプトはフォームからの入力をうけるCGIなので
入力されるコードを限定することは不可能なんです

イタズラ防止目的でEUC以外のデータが入ってきたらエラーを返すようにしようかと思っているのですが…

>>816
サンクス
NKF.guessってeuc-jpの判別精度はかなり悪いね…(汗
MconvはGPLみたいだし…
他のはどうやってLinux用バイナリを作るかって問題が…<実際動かす鯖はLinuxなので。自分はLinuxマシンはない
どうするか…orz
0818デフォルトの名無しさん2005/08/11(木) 22:44:35
「JIS以外のデータが入ってきたら」「UTF-8以外のデータが入ってきたら」にしたら?
08198122005/08/11(木) 22:55:26
>>818
それだとバイナリデータをぶち込まれた場合に通しちゃいそうな気がしますが…
0820デフォルトの名無しさん2005/08/11(木) 23:46:48
UTF-8とEUCは同じようなもんだろう。
JISのほうが条件はずっと絞られる。
0821デフォルトの名無しさん2005/08/12(金) 01:01:57
EUC-JP で受けると Shift_JIS の半角カナを拾っちゃう。
 "アイ"(sjis) ← "\xb1\xb2" → "渦"(euc)
だから、受け側を EUC-JP にするのは、結構最悪の選択肢だと思う。
(イタズラ防止目的なら特に)

「他の文字コードの入力を誤判定しないように」という目的なら、
受ける文字コードは、
 1. ISO-2022-JP(ESC があるから間違えない)
 2. UTF-8
 3. Shift_JIS(ただし半角カナは捨てる←EUC-JP の入力を拾うから)
上から順番におススメ。

あと、>>819 の「バイナリデータをぶち込まれた場合に通しちゃう」というのが
よく分からない。 文字コードの validate するなら通すはずがないと思うけど。

と、素人考えを書いてみましたよ……。

0822デフォルトの名無しさん2005/08/12(金) 01:03:12
コンストラクタに引数を持つクラスを継承させたいのですが、
うまく作れません。例えば、

class Foo
def initialize(a)
@a = a
end
end

class Bar < Foo
def initialize(a, b)
super(a)
@b = b
end
end

bar = Bar.new("aaa", "bbb")

てな具合にやると「allocator undefined for Bar」と
エラーが出てしまいます。どうすれば良いのでしょうか。
0823デフォルトの名無しさん2005/08/12(金) 01:21:01
>>822
それをそのままコピペして実行したらちゃんと動くけど。
最後に
p bar
をつけたら
#<Bar:0x402a5e30 @a="aaa", @b="bbb">
こうなった。
08248222005/08/12(金) 01:48:31
>>823
ですね。。。
本番プログラムは違う箇所でまちがっているのかな。
ご迷惑をおかけしました。せっかくなので、質問です。
new と initialize メソッドの違いが良く分からないのですが。
>>822 で initialize を new に変えても同じことですか?
0825デフォルトの名無しさん2005/08/12(金) 02:17:08
>>824
オブジェクトの生成は誰がすることになるのか考えてみればどうだろう。
08268122005/08/12(金) 02:29:09
>>820-821
説明不足でスマン
文字コードの範囲内で化ける分には特に問題ないんです

CGIの最終的な出力先はメールなのですが露骨にバイナリなメールが送信されて万が一メーラーが
誤動作したりするのは出来れば避けたいので

def euc?(text)
 text.gsub!(/([\xa1-\xfe][\xa1-\xfe])|(\x8e[\xa1-\xdf])|(\xa4[\xa1-\xf3])|(\xa5[\xa1-\xf6])|(\x8f[\xa1-\xfe][\xa1-\xfe])|([\x20-\x7e])|(\x0d|\x0a)/n, '')
 text.size == 0
end

こんな感じでチェックさせる事にします。これで少なくとも変なコントロールコードとかエスケープコードが
送られるようなことはなくなるはず…
0827デフォルトの名無しさん2005/08/12(金) 02:56:41
>>826
重箱の隅だけど、引数を破壊するのはどうかと。
0828デフォルトの名無しさん2005/08/12(金) 02:57:45
>露骨にバイナリなメールが送信されて
???
0829デフォルトの名無しさん2005/08/12(金) 03:04:42
つーかCGIでしょ?Hiddenで"あ"とかおくりゃーいんじゃないの?
08308122005/08/12(金) 04:08:15
>>827
あ、素で忘れてた…orz
今のコードじゃ問題ないのは確認したけどあとでコード使いまわしたときにはまる可能性はありそうなので
dupしておいた。

>>828
たとえばフォームの内容をJISに変換してsendmailでメールで送信する様なスクリプトの場合
文字コードのチェックを行わない場合フォームにバイナリデータを貼るとかしたらコントロールコードとかが
混じったメールが送信されたりしない?
スクリプトとかからやればバイナリファイルの中身をフォームの値として送り込むことも可能な気がするけど
0831デフォルトの名無しさん2005/08/12(金) 05:12:14
バイナリをベタで送れるのか?
と思って、試しにバイナリ貼ったメールを送ってみようかと思ったが、ヤンクできなかった。
他のメーラをインストールするのマンドクセ。
鯖 postfix だし。
0832デフォルトの名無しさん2005/08/12(金) 08:03:46
>>822
そのコードでは
> てな具合にやると「allocator undefined for Bar」と
このエラーがでるわけはない。
FooがDataのサブクラスとかなんとか、重要なところを書いてない。
0833デフォルトの名無しさん2005/08/12(金) 12:19:11
Rubyって、皆さんどんなエディタ使ってHackしてますか?
0834 ◆m7YeytgDFE 2005/08/12(金) 12:41:06
>>833
emacs+rd-mode。
0835デフォルトの名無しさん2005/08/12(金) 13:14:15
コテハンだけあって、変わった人だな。
0836デフォルトの名無しさん2005/08/12(金) 13:41:37
>>826
文字コード判別じゃなくて、単に EUC-JP かどうかがわかればいいのであれば、
Kconv::iseuc(str) なんてのがありますけど、もう解決しちゃってますかそうですか。
0837デフォルトの名無しさん2005/08/12(金) 13:44:37
>824
newはクラスメソッド
initializeはインスタンスメソッド

クラスがnewでオブジェクトを生成した後オブジェクトは自身をinitializeで初期化する
0838 ◆m7YeytgDFE 2005/08/12(金) 14:04:31
>>835
あぁ、何を書いてるんだ...。>自分
もちろん834はemacs+ruby-modeの間違いでございます。

"el4r - EmacsLisp for Ruby"というプログラムが登場したので、
ますますemacsを使うことになるかも。
0839デフォルトの名無しさん2005/08/12(金) 15:42:33
別に彼を責めるつもりはないが、なんであんな面倒なemacsを使うんだろう?
わたしはマカーだが、miで充分、事足りる。
0840デフォルトの名無しさん2005/08/12(金) 15:46:46
俺はマカーだからこそemacsを使ってる。
UNIX/Linuxはもちろん、Windowsでも同じ使用感を得られるからね。
X11やWinのGUIは使いたくないし。
0841デフォルトの名無しさん2005/08/12(金) 16:12:14
>>840
>俺はマカーだからこそemacsを使ってる。
>UNIX/Linuxはもちろん、Windowsでも同じ使用感を得られるからね。
そんなにいろいろOSを使わないとしたら、まーエディタぐらい好きなのを使えって。
秀丸でRUBYっていうのはあまり聞かないけれど。
0842デフォルトの名無しさん2005/08/12(金) 16:39:16
[POWERBOOK-12:~] ****% ruby /Users/****/Sites/****/****.rb
というように、tcsh上から実行しようとすると、下記のように怒られます。

/Users/****/Sites/****/****.rb:3:in `require': No such file to load -- ****.rb (LoadError)

はて?
0843デフォルトの名無しさん2005/08/12(金) 16:57:48
伏字にするなよ。特に /Users/ の後ろ。

ruby -e "p $:" の結果と LoadError の出ている ****.rb のパスを確認してみれ。
08448422005/08/12(金) 17:21:46
>>843
>伏字にするなよ。特に /Users/ の後ろ。
しつれい。こんな感じ。
---------
/Users/ownerName/Sites/cgi-bin/Ctr_test/logic/test.rb:9:in `require': No such file to load -- tool.rb (LoadError)
---------
tool.rb」は「test.rb」と同じディレクトリ「logic」に入っている。
---------

で、$:をpで確認してみた。あー、この環境変数の中に納められているpathのエントリしか実行しないのか。

---------
tcsh上から
ownerName% setenv RUBYLIB /Users/ownerName/Sites/cgi-bin/Ctr_test/logic

としたところ、無事実行できた。
---------
こんなタコな質問にヒントをありがとう>>843
0845デフォルトの名無しさん2005/08/13(土) 16:59:37
初心者以下な質問で申し訳ないのですが
rubyで日本語を入力するにはどうしたらよいのでしょうかORZ
何かソフトが必要なのでしょうか。
0846デフォルトの名無しさん2005/08/13(土) 17:06:06
さすがに意味不明過ぎだw

もちっと、やりたいことを詳しく説明するか、
とりあえずアルファベットで良いから、サンプルスクリプトを貼ってごらん。
0847デフォルトの名無しさん2005/08/13(土) 17:21:54
845ですが>>846サンは、僕へ結ってくださっていらっさryのですおうか
人工無脳が作ってみたくて「恋するプログラム rubyでつくる人工無脳」という本を購入したのですが
print("ワンツー¥n")という分を練習なのですがその日本語が入力できないです。
半角英数しか表示されないので日本語が入力できません。
インストールもちゃんとできていると思うのですが。
プログラミングは以前にコボルをちょろっとやっていた時はXFERボタンと南下のボタンを押せば日本語に変換できたのですが
いろいろいじってみても日本語にならないです。
もしかして全部半角英数でやるべきなのでしょうか。

具具ってみてのですが見つからなかったと思います。探し方がおかしいでしょうかorz
0848デフォルトの名無しさん2005/08/13(土) 18:57:45
> もしかして全部半角英数でやるべきなのでしょうか。
そんなことはないです。

というか XFER ってことは PC98 使いなのか?
環境が Windows なら南下(何か?)ってのは、大抵 Ctrl だと思うのだが。
FreeBSD かなぁ。それだと IME に依存するんでちと分からない。
そもそも、2ch に日本語で投稿できてるのだから、そういった話じゃないだろうけど。

ちなみに、それはコンソールで `ワンツー' が入力できないということ?
「恋するプログラム」なら irb での話かもしれないかな。
それは Ruby とは別問題の可能性が高いと思う。
一旦エディタでスクリプトを保存して、それを実行してみたら良いと思う。
0849デフォルトの名無しさん2005/08/13(土) 19:26:55
>>848さん
レスありがとうございます。
環境はwinXPです。以前学校でcobolの授業で使ったpcがwin98でしたのでXFERボタンを使いました。言葉足らなくて申し訳ないです。
2ch含め、他のところでは日本語で入力できますが、irbとruby consol使うと言語バーも小さくなってしまって変換の仕方がわからないのですorz

メモ帳で日本語文章打ってコピペしたら入力できました。質問内容スレ違いっぽいかったですね、すみません。
丁寧に教えてくださりどうもありがとうございました。これからしっかり勉強して覚えようと思います○┓ペコリ
0850デフォルトの名無しさん2005/08/13(土) 21:52:33
>>849
コマンドプロンプトって日本語入力できなかったっけ?
とりあえずRDEあたりとか使ってみちゃどうよ。
http://homepage2.nifty.com/sakazuki/rde.html
0851デフォルトの名無しさん2005/08/13(土) 22:00:53
w2kだとALT+漢字で日本語入力できますよ。もっかい漢字キー押すと戻ります。

d:\temp>irb -Ks
irb(main):001:0> a="あいう"
=> "あいう"
irb(main):002:0>
0852デフォルトの名無しさん2005/08/13(土) 22:23:29
学校の PC が PC98 系で Win98 が入っていて、
それを覚えていて、DOS/V 機でそれをしようとしてハマったという感じかな。
コンソールでもメモ帳と同じ方法で日本語モードに変わると思うけど。

しかし、Linux の VT ならまだしも、cmd.exe へコピペという発想が凄いな。
試してみたら、C-v ではなく右クリしたらコピペされた。ちょっとビックリ。
08538452005/08/14(日) 07:45:20
>>850-852さん
レスありがとうございます。
alt+半角/全角でキーで日本語入力できました!!
最後までコピペで乗り切るところでしたorz
紹介sいていただいたRDE使ってみようと思います。
感謝です○┓ペコリ
0854デフォルトの名無しさん2005/08/15(月) 02:44:07
質問です。

Eclipse + RDT(Ruby Development Tools) 環境を準備しようとしているのですが、実行設定の画面で「An error has occurred. See error log for more details.」というエラーが発生してしまいます。しかしerror logがどこにも見当たりません。

DOJA(DoCoMoの携帯端末のエミュレータ)などは問題なくEclipseにインストールすることができました。

どなたかお分かりになる方いらっしゃいましたら解決方法をよろしくお願いします。
08558422005/08/15(月) 02:49:19
>>854
その質問を初心者板に書き込むか。
0856デフォルトの名無しさん2005/08/15(月) 03:30:36
Windowsで簡単に使えるIDE一覧

RDE ついに1.0Release間近!?
http://homepage2.nifty.com/sakazuki/rde.html

FreeRIDE RubyOneClickInstallerでインストールした場合の標準添付
http://rubyforge.org/projects/rubyinstaller/
http://rubyforge.org/frs/?group_id=31

Mondrian Ruby IDE 開発手放したと思いきや、かなり使いやすくなってる。いつの間に!
http://www.mondrian-ide.com/download.html
0857zaqdadc75de.zaq.ne.jp2005/08/15(月) 03:30:53
正規登録
0858デフォルトの名無しさん2005/08/15(月) 03:56:33
854です

>>855
プログラムする以前の問題だったので初心者板が適用かと思ってしまいました(笑)

error logとは「workspaceフォルダ\.medtadata\.log」というファイルだということがわかりました。

Rubyと関係しそうなメッセージは以下のようなものなのですが、
!ENTRY org.eclipse.ui 2 0 2005-08-15 02:33:43.734
!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points.
!SUBENTRY 1 org.eclipse.ui 2 0 2005-08-15 02:33:43.734
!MESSAGE Commands need a name: plug-in='org.rubypeople.rdt.ui', commandId='org.rubypeople.rdt.ui.edit.text.ruby.comment'.
!SUBENTRY 1 org.eclipse.ui 2 0 2005-08-15 02:33:43.734
!MESSAGE Commands need a name: plug-in='org.rubypeople.rdt.ui', commandId='org.rubypeople.rdt.ui.edit.text.ruby.uncomment'.
!SUBENTRY 1 org.eclipse.ui 2 0 2005-08-15 02:33:43.734
!MESSAGE Commands need a name: plug-in='org.rubypeople.rdt.ui', commandId='org.rubypeople.rdt.ui.edit.text.ruby.content.assist.proposals'.

!ENTRY org.eclipse.jface 4 2 2005-08-15 02:36:55.296
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface".
!STACK 0
java.lang.NoClassDefFoundError: org/eclipse/ui/internal/dialogs/ListContentProvider
at org.rubypeople.rdt.internal.debug.ui.launcher.RubyEnvironmentTab.addLoadPathTab(RubyEnvironmentTab.java:65)
at org.rubypeople.rdt.internal.debug.ui.launcher.RubyEnvironmentTab.createControl(RubyEnvironmentTab.java:56)

パッと見わかる方いらっしゃいますか?
0859デフォルトの名無しさん2005/08/15(月) 07:42:06
RDTの作者に聞くか、Eclipseスレで質問したほうがいいと思われ。
0860デフォルトの名無しさん2005/08/15(月) 09:49:11
RDE を遥か昔に試したことがあったけど、また入れみようか。

FreeRIDE と MondrianRubyIDE って、どんな感じなのだろうか。
SS すらないと、面倒でちょっと試してみる気が起きない。
まぁ、ruby-mode で、あまり不満は無いから、使わないだろうけど。
0861デフォルトの名無しさん2005/08/15(月) 10:39:02
あ、でもMondrian、相変わらず日本語使えねぇや。
08628222005/08/15(月) 21:43:42
>>825 さん, >>824 さん、ありがとうございます。
initialize メソッドを使うようにします。
遅くなってしまって申しわけないです。
0863デフォルトの名無しさん2005/08/17(水) 00:44:51
RDE1.00が神ツールになる予感・・
バグ落ちだいぶ減ったし、アイコンオシャレになったし
0864デフォルトの名無しさん2005/08/17(水) 17:35:54
ネタだよな?
RubyWinのが安定してるし、それよかxyzzyのが使いやすい。
0865デフォルトの名無しさん2005/08/17(水) 18:58:32
Meadow + ruby-mode で良いだろ
0866デフォルトの名無しさん2005/08/17(水) 22:46:27
meadowは重い

xyzzyはなにげに印刷が便利
08678632005/08/17(水) 22:49:50
RubyWinにはいくつかの欲しい機能が付いてないし
xyzzyやMeadowは、Windowsに慣れた人間には使いづらい

とはいえ、どちらも個人の好みのレベルではある
0868デフォルトの名無しさん2005/08/18(木) 14:30:03
正規表現マッチの時間を測ってみたら、下記のような結果になったのですが、
以下の仮説は正しいでしょうか。

a. コンパイルしたものを変数に入れたのを参照するよりもリテラルで書いた方が速い
b. 正規表現を定数から参照するよりもローカル変数から参照した方が速い

% /usr/bin/time ruby -e 'str = "hoge"; 1000000.times { /og/ =~ str }'
1.04 real 1.03 user 0.00 sys
% /usr/bin/time ruby -e 'str, re = "hoge", /og/; 1000000.times { re =~ str }'
1.22 real 1.22 user 0.00 sys
% /usr/bin/time ruby -e 'str, RE = "hoge", /og/; 1000000.times { RE =~ str }'
1.39 real 1.39 user 0.00 sys
% ruby -v
ruby 1.8.2 (2004-12-25) [i386-freebsd4]
0869デフォルトの名無しさん2005/08/18(木) 21:35:12
b. は、正規表現関係無しに、ローカル変数の参照と定数の参照の問題に帰結できるんでは。
0870デフォルトの名無しさん2005/08/18(木) 21:53:41
>>869
確かにそうかもしれないですね。

ふと思ったのですが、正規表現に限らず、一般的な話として、
ループなどで頻繁に参照する場合には、定数を直接参照するよりも、
一時的にローカル変数に入れてからそちらを参照する方が良い (速い) のでしょうか?
0871デフォルトの名無しさん2005/08/18(木) 23:41:38
>>870
速いかどうかは詳しく知らないが、気になるのは

速い = 良い

が成り立つかどうかはケースバイケースだということ。

0872デフォルトの名無しさん2005/08/19(金) 11:32:51
では

遅い = 良い 

が成り立つケースを一つ上げてください。
0873デフォルトの名無しさん2005/08/19(金) 11:35:32
>>870
一般に速度は
 String以外のリテラル > メソッドスコープのローカル変数 >
 ブロックスコープのローカル変数 > インスタンス変数 > 定数
グローバル変数はたぶん、メソッドスコープのローカル変数よりやや遅いかも。
0874デフォルトの名無しさん2005/08/19(金) 11:53:01
>>871
それは十分条件だけど、必要条件じゃないな
0875デフォルトの名無しさん2005/08/19(金) 12:53:50
>>874
「それ」ってどういう命題?
0876デフォルトの名無しさん2005/08/19(金) 13:34:22
ごめん、レス番間違った。
0877デフォルトの名無しさん2005/08/20(土) 01:12:04
では

遅い = 良い 

が成り立つケースを一つ上げてください。
0878デフォルトの名無しさん2005/08/20(土) 01:46:11
お手軽に西暦→和暦をする方法があったら教えて下さい
和暦→西暦ならParseDateが使えそうなんですが…
出来れば標準で付いてくるライブラリで出来ると嬉しいです
0879デフォルトの名無しさん2005/08/20(土) 02:04:04
便乗で質問
平成と昭和ってどこで切り替わるの?
0880デフォルトの名無しさん2005/08/20(土) 08:02:15
http://list.room.ne.jp/~lawtext/1989G001.html
0881デフォルトの名無しさん2005/08/20(土) 09:50:51
昭和は最初も最後も一週間づつだけ。
0882デフォルトの名無しさん2005/08/20(土) 14:19:07
可読性を悪くしてまで速くするぐらいなら

遅い=良い(遅い方がマシ)

と言えないだろうか?
細かな速度改善は Ruby のバージョンが変わると役に立たなくなるかもしれない
0883デフォルトの名無しさん2005/08/20(土) 15:12:41
>>881
へぇ
0884デフォルトの名無しさん2005/08/20(土) 20:23:52
遅い方がマシ、なんて思った事ないなあ
0885デフォルトの名無しさん2005/08/20(土) 20:44:07
遅い代わりに良い点があるかどうか、であって、
速度だけしか変わらないのなら速い方がいいに決まってる。

可読性が上がるとか、保守性が高くなるとか、そういうことなら
速度より優先しても良いとは思う。
0886デフォルトの名無しさん2005/08/20(土) 21:20:39
というか>>874がどれと間違えたのかが気になる。
0887デフォルトの名無しさん2005/08/20(土) 22:31:05
さあ、おまえらどうやって知名度を高めればいいか考えようぜ。
0888デフォルトの名無しさん2005/08/20(土) 22:32:02
では

遅い = 良い 

が成り立つケースを一つ上げてください。
0889デフォルトの名無しさん2005/08/20(土) 22:43:08
比べるなら

遅くて使い易い vs 速くて使い難い

だろ。
つか、スレ違い。
比較スレに行くなり、一生全て C でも使ってろよ。
0890デフォルトの名無しさん2005/08/20(土) 23:58:41
仮にRubyが使いやすいとして、
Ruby並に使いやすいCが誕生すればそれでいいわけだよ
0891デフォルトの名無しさん2005/08/21(日) 02:00:37
C並みに早いRubyでもいいんだよね
0892デフォルトの名無しさん2005/08/21(日) 02:35:48
Cより遅いRuby処理系なんて見たことないんだが
0893デフォルトの名無しさん2005/08/21(日) 12:23:46
gcc: 1984年開発開始
Ruby: 1993年開発開始

少なくとも gcc よりも Ruby の方が遅いですね
0894デフォルトの名無しさん2005/08/21(日) 22:20:11
質問です。
ruby-mode.el ,inf-ruby.el,rubydb2x.elで
できるようになるのは何なのでしょう。
またそのキーバインドはどうなっているのでしょうか。
0895デフォルトの名無しさん2005/08/21(日) 23:18:10
現在実行されているソースファイルがあるディレクトリを取得する方法があったら教えて下さい。
0896デフォルトの名無しさん2005/08/21(日) 23:20:31
>>895
File::dirname($0)
でどうでせう
0897デフォルトの名無しさん2005/08/21(日) 23:26:41
>>896
即レスthx
組み込み変数の方だったのか…組み込み定数の方探してた…orz
0898 ◆m7YeytgDFE 2005/08/22(月) 01:17:07
>>894
キーバインドの件は、調べたいモードでdescribe-bindingsをやってみるとか?
0899デフォルトの名無しさん2005/08/23(火) 00:34:10
>>898
おお、こんな便利なコマンドがあったのか。
thx!!!
0900デフォルトの名無しさん2005/08/23(火) 18:11:39
ary = ["foo", "bar", "baz"] を "foo\nbar\nbaz\n" にするにはどうしてますか?
パッと思い付いたのはこんなんですが、なんかイマイチなので。

ary.join("\n") << "\n"
ary.inject("") { |t, l| t << l << "\n" }
0901デフォルトの名無しさん2005/08/23(火) 18:32:16
ary.map{|s| s+"\n"}.join
とかかなあ。
ary.join("\n") だけにしといて、末尾の改行は出力時の puts でやるとかかな。

x = ""; StringIO.new(x).puts ary とかはどうだ。
0902デフォルトの名無しさん2005/08/23(火) 22:24:01
901のはじめのやつか、(ary + [nil]).join("\n") かなぁ
0903デフォルトの名無しさん2005/08/24(水) 00:21:53
StringIOを使うのはputsの仕様(配列は要素ごとに改行される)に
依存しているのが何となく気に入らないけど、カコイイな。

自分でやるなら collect/map してjoinでやるだろうけど。
0904デフォルトの名無しさん2005/08/24(水) 00:26:09
>>900
injectを使うなら、<<のところは+でいい。
0905デフォルトの名無しさん2005/08/24(水) 00:28:53
題意とはズレるけど、
"foo\nbar\nbaz\n" を最終的にどこかに出力するんなら、
その時までずっと ary のまま持ってて puts するという手も。
0906デフォルトの名無しさん2005/08/24(水) 00:40:18
Matzにっきが更新されないのはなぜですか?
0907デフォルトの名無しさん2005/08/24(水) 00:49:30
更新されていないんじゃなくて、日がずれているだけ。
現在は約 12日遅れで更新中。そのうち追いつくでしょう。
0908デフォルトの名無しさん2005/08/24(水) 01:07:31
>>907
よくわかりました
ありがとうございます
0909デフォルトの名無しさん2005/08/24(水) 15:53:40
すいません。質問です。
簡単なスクリプトを作ろうと思っているのですが、例えば禁煙タイマーのようなものを
想定していただければそう遠くありません。
つまり、a時点とb時点を設定し、その間の時間差を求めたいのですが

irb(main):001:0> a = Time.now; b = a + 60 * 60 #a時点1時間後
=> Wed Aug 24 16:51:47 JST 2005
irb(main):002:0> p b-a
3600.0
=> nil

というので、時間差がsecでしか出てきません。これをある程度、月や週などのまとまった
単位を使って求めたいのですが何かよい方法はないのでしょうか?
もちろん、求めるだけなら簡単なのですが、ゴタゴタとコードを書くのが醜いと思ったので
質問とさせてください。
0910デフォルトの名無しさん2005/08/24(水) 16:11:52
Dateは?
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Date
0911デフォルトの名無しさん2005/08/24(水) 16:18:47
>>910
ありがとうございます。むぅ、難しそうなクラスですね。
Time.local(0, 1, 1, 1, 0, 0)時間を設定して経過時間足して、後はstrftimeでうまく
行きそうなことに気づきました。どうも、すみませんでした。ありがとうございました。
0912デフォルトの名無しさん2005/08/24(水) 16:26:51
>>910
自前でメソッド用意すれば良い。そんなに複雑にならないかと。
ちなみに俺は、月変わりの処理などが面倒なので、
一旦、起算時に変えて、計算後また必要な形に戻してる。むしろ sec だらけ。

ちゃんと期待した値が返ってるから良いのかもしれないが、
b = a + 60 * 60 みたいに、Time + Fixnum オブジェクトみたいな形は、
Ruby 的に、かなり気持ち悪いと思うんだが……
0913912 orz2005/08/24(水) 16:28:19
× >>910
○ >>909
0914デフォルトの名無しさん2005/08/24(水) 16:42:39
XML ファイルを出力しようと思うんですが、
テキストを適当にエスケープするのにお手軽な方法があれば教えてください。
エンコーディングは UTF-8 だけに対応で構いません。
0915デフォルトの名無しさん2005/08/24(水) 18:15:13
あえて安直にCGI.escapeElementとかCGI.escapeHTMLを使ってみるとか。
0916デフォルトの名無しさん2005/08/24(水) 18:16:27
テキストを適当にエスケープするってどういう意味?

> → >

みたいなやつ?
それともCDATAセクションとかそーゆー話?
0917デフォルトの名無しさん2005/08/24(水) 18:17:11
ぐは、実体参照書くと置き換えられるのか。
0918デフォルトの名無しさん2005/08/24(水) 18:26:58
いや、 CDATA はいらないです。 #PCDATA というやつですかね。
なるほど、 CGI::escapeHTML とかでも十分そうですね。
そういえばと思って rss/utils.rb を見てみたら、同じようにやってますね。
0919デフォルトの名無しさん2005/08/24(水) 22:49:08
vim を使っている皆さん、タグは利用されていますか?
先日 Exuberant Ctags を試したのですが、いまひとつでした。
Ruby と相性の良いものがあれば、ご教示ください。
0920デフォルトの名無しさん2005/08/25(木) 11:08:21
まつもとさんが

  「Perlの$_を流用したのは失敗だった。」

と言う記述を見かけたのですが、$_の何がまずいのでしょうか?
09219202005/08/25(木) 11:29:37

スラッシュドット ジャパン | まつもとゆきひろ 答える
http://slashdot.jp/article.pl?sid=03/03/14/0258247&topic=86

>Larryはずっと昔から私の尊敬する人物のトップ10には入っていて、
>彼がRubyについて知っているというだけで感激モノです。
>また、Rubyのローカル変数のスコープの点に気がついた彼はやっ
>ぱりとても鋭い人だと思います(古今最高のルネッサンス人かどうか
>は別として)。私自身もこれはRubyの最大の欠点だと思っていて、
>機会があれば直したいと思っているので。

これ↑は>>920の質問と関係しているのでしょうか?
それともまた違う欠点でしょうか?
0922デフォルトの名無しさん2005/08/25(木) 14:04:07
>>920
暗黙の引数かつ戻り値なとこ。
>>921はまた別の話。
09239202005/08/25(木) 15:28:16
>>922
レスありがとうございます。
要するに変数が表に出てこないためソースが読みにくくなるという意味でとらえていいのでしょうか?

>>921の質問は、色々とググって推測しました。
Perlでは局所変数は、myとlocalできちんと宣言するけれども、Rubyではそれがないから
ソースの可読性が落ちるということでしょうか?

my 宣言とレキシカル (lexical) 変数
http://sonic64.hp.infoseek.co.jp/2002-11-01.html
0924デフォルトの名無しさん2005/08/25(木) 16:24:27
>>923
これも参考にどうぞ
ttp://www.rubyist.net/~matz/20031121.html#p02 ← 失敗したと思ってる点
ttp://www.rubyist.net/~matz/20050309.html#p03 ← Ruby 2.0 の仕様
0925デフォルトの名無しさん2005/08/25(木) 16:29:15
$_ がらみはライブラリに括り出すのは無理?

可読性が落ちるから美しくないのは分かるけど、
ワンライナーや短いフィルタだと重宝する時もあるから、廃止はつらい。

ライブラリになって、ワンライナーで毎回 -rxxx って指定するのも面倒っちゃ面倒だけど。
09269202005/08/25(木) 16:52:47
>>924
サンクス。
疑問点全てが氷解しました。
0927デフォルトの名無しさん2005/08/26(金) 00:19:26
>>925
ライブラリに括り出すってのはどういうことをイメージしてる?
メソッドスコープからスレッドローカルのグローバルにして、
あとは勝手にアクセスさせるって話?
0928デフォルトの名無しさん2005/08/26(金) 07:06:39
vrubyを使ってUTF-8のファイルを扱いたいのですが

VRTextやTRTreeviewにテキストを直接渡しただけでは文字化けしてしまいます
VRRichedit なら文字コードを自動判別してくれるようなのですが
Richedit以外のフォームでUTF-8の表示を行うにはどうすればいいのでしょうか?
0929デフォルトの名無しさん2005/08/26(金) 08:20:33
SJISに変換してから渡せば?
NKF.nkf("-Ws", str)
0930デフォルトの名無しさん2005/08/26(金) 15:23:42
>>929
日本語とアクセント記号付きの英字を同時表示させたいので
できればUTF-8のままで扱いたいんです
0931デフォルトの名無しさん2005/08/26(金) 16:17:56
>>930
じゃあUCS2に変換してから渡せば?
NKF.nkf("-Ww16L", str)
09329252005/08/26(金) 18:16:14
>>927
スマン。$_ がメソッドスコープってこと知らなかったよ。

要は Regexp.last_match 関連($&, $1, ...)と同じ扱いなわけね。
そう考えると、別に $_ もそんなに悪くない気がしてきた。

(ユーザじゃなくて)Ruby を実装する側は
 Regexp のマッチ → 本質的には一個のメソッド → 管理が楽
 gets や readline → いろんなところで → 管理が大変
という違いがあるのかな?(StringIO#gets でも $_ は変更されるみたいだし)
0933デフォルトの名無しさん2005/08/26(金) 19:19:30
正規表現の特殊変数もイラネ。
0934デフォルトの名無しさん2005/08/26(金) 20:26:02
>>933 確かにないほうがRubyらしく、すっきりするなぁ。
0935デフォルトの名無しさん2005/08/26(金) 21:44:05
Regexp.last_match[0] は長いよ
標準で、もちっとまからんかのぅ
0936デフォルトの名無しさん2005/08/26(金) 22:32:51
単に match するだけなら
if (match = str.match(/re/)) ...
みたいに MatchData オブジェクトが返ってくるからいいけど、
gsub なんかだと Regexp.last_match 経由しかないもんな。
0937デフォルトの名無しさん2005/08/27(土) 00:10:07
gsubがyieldするものをMatchDataにしちゃえ、って意見もあったが。
あと困るのがwhenでマッチさせたときだな。
0938デフォルトの名無しさん2005/08/27(土) 00:14:52
> gsubがyieldするものをMatchDataに
MatchData#to_str を実装すれば過去のコードも救え……ないわな。やっぱナシか。
0939微妙に初質スレじゃなくなってるが2005/08/27(土) 01:29:52
gsub(/[^\s-~]/) {|s| "%"+s[0].to_s(16)}
みたいのは救えない。
逆にこれを救ってしまうと変える意味がなくなってしまう。
09409282005/08/27(土) 04:13:05
>>931
utf-16の出力オプションをすべて試してみたんですが文字化けしてしまいます
ruby のバージョンは1.8.2(cygwin)です。

とりあえず特殊英字を使わなければsjisで表示ができるので今回はこれで我慢することにします
ありがとうございました。m(_ _)ノシ
0941デフォルトの名無しさん2005/08/27(土) 20:40:14
これ↓って訳本の出版予定はあるのでしょうか?

Programming Ruby: The Pragmatic Programmers' Guide, Second Edition
http://www.amazon.com/exec/obidos/tg/detail/-/0974514055/102-5531784-5437727
0942デフォルトの名無しさん2005/08/27(土) 21:17:10
>>941
Matz が UNIX USER 9月号で、
「邦訳が予定されている」と書いている。
0943デフォルトの名無しさん2005/08/27(土) 21:24:22
>>942
サンクス。
0944デフォルトの名無しさん2005/08/27(土) 23:39:55
訳本は高いんだよな……
1.8 対応のお薦めのリファレンス本みたいなのってあります?
0945デフォルトの名無しさん2005/08/28(日) 08:24:06
>>944
htmlマニュアルを自分で印刷。
0946デフォルトの名無しさん2005/08/28(日) 12:07:47
>>944
Wiki
0947デフォルトの名無しさん2005/08/28(日) 20:50:18
refe
0948デフォルトの名無しさん2005/08/28(日) 22:13:44
訳本は表紙のデザインがしょぼくなる
0949デフォルトの名無しさん2005/08/28(日) 23:24:01
>948
原著も買う→原著の表紙を切り取って(or カラーコピー……これは著作権法の許容範囲……だよね? )
訳書にノリでペタリ→ウマー
0950デフォルトの名無しさん2005/08/29(月) 08:59:59
著作権なんてものは、購入した「自分」が「自分に対して」行う限り、何しても良いのでは。
「自分」が「他者に対して」何かする時は、気をつけるべきだけれども。
0951デフォルトの名無しさん2005/08/29(月) 20:44:45
class A
class B
end
end

とするのと

class A::B
end

とするのって何か違いがあるんでしょうか?
0952デフォルトの名無しさん2005/08/29(月) 21:07:21
後者は class A が既に存在していなければ NameError
0953デフォルトの名無しさん2005/08/29(月) 21:39:52
質問が悪かったようです。後者がこういう場合だと、違いはあるでしょうか?

class A
end
class A::B
end
0954デフォルトの名無しさん2005/08/29(月) 21:48:34
そういうシンプルすぎる例は例にならないと思うが、
>>953はModule Aが既に存在していればエラー。
0955デフォルトの名無しさん2005/08/29(月) 21:49:40
というのは前者もそうか。
0956デフォルトの名無しさん2005/08/29(月) 23:01:30
ソースを見易くするのに役立つとか……
0957デフォルトの名無しさん2005/08/29(月) 23:03:40
Aクラスに後付でA::Bを追加するときは後者になるわな。
最初からA、A::Bの構成が決まってれば前者。

とか云ってみるテスト。
0958デフォルトの名無しさん2005/08/29(月) 23:12:02
>>941
ちょっと原著第2版をめくってみた。
Unitテスト, irb, RDoc, RubyGems あたりの記述がある程度しっかりなされてる感じ。
あと、WEBrickやSOAP、System Hookなんかについてちょろちょろと加筆してある。
組み込みクラスのリファレンスは1.8で追加されたものもしっかり網羅されていていいね。
ただ、標準ライブラリは簡単な例の記述にとどまっているので、過度の期待は禁物。
とはいえ、比較的新しい内容もここまでコンパクトに収まってるのはすごいけど。

翻訳を待つかどうかはともかく、リファレンスになるようなRuby本って最近少ないから、
買い換えても損はないかも。
0959デフォルトの名無しさん2005/08/30(火) 02:46:03
Rubyは、ドキュメントしっかりして欲しい。
標準添付のライブラリに関して。
0960デフォルトの名無しさん2005/08/30(火) 03:08:09
RubyはドキュメントとRubyistが駄目。
0961デフォルトの名無しさん2005/08/30(火) 08:14:13
Rubyとデータベースを使ったCGIプログラミングをしようと思っているんですが、お薦めの書籍はありますか?
「Ruby-DBウェブデザイン」という本はAmazonでものすごく酷評されてましたので避けるとして、
「基礎から学ぶWebデータベースプログラミング」という本は評価が特にありませんでした。
後者の方に関しての感想をお持ちの方や他にお薦めの本があれば教えてください。
0962デフォルトの名無しさん2005/08/30(火) 08:20:40
>>961
今からやるんだったら、ウェブ上で Rails を勉強するのが一番早い。
それ以外で勉強しても、結局 Rails に置き直したくなるだろうし。
0963デフォルトの名無しさん2005/08/30(火) 09:06:56
Railsというと、Rubyist Magazineで連載されてますよね?
読んでさっぱりわからないのですが、難しくはありませんか?
わかりやすい説明をしているサイトや本があれば知りたいのですが。
一応頑張ってみようとは思いますが、難しそうなのでできるかどうかわかりません。
他にお薦めの本などがありましたら引き続きお願いします。
色々検討してみたいと思っています。
0964デフォルトの名無しさん2005/08/30(火) 09:20:53
そこでこれですよ。
Agile Web Development With Rails: A Pragmatic Guide
http://www.amazon.co.jp/exec/obidos/ASIN/097669400X/
0965デフォルトの名無しさん2005/08/30(火) 09:29:39
>>964
翻訳予定ありますか?日本語でなら是非とも読んでみたいです。
0966デフォルトの名無しさん2005/08/30(火) 09:33:06
>>965
出る予定らしいぞ。いつになるかは知らん。
0967デフォルトの名無しさん2005/08/30(火) 09:40:38
>>967
そうですか。早く出ればいいのですが。
0968デフォルトの名無しさん2005/08/30(火) 09:40:41
rubyのアプリケーションについて質問致します。
alexandriaをFC4にインストールしました。
日本語の本のISBNをいれると、本の題名が化けます。
コードは、ja-JP.UTF-8になっているので、メニューは日本語になります。
どこを直せば、日本語の書名が出るのでしょうか。
0969デフォルトの名無しさん2005/08/30(火) 10:40:20
ググると情報が出てくるね。
でも、Ruby製とはいえソフト固有の問題をここで質問するのはどうなんだろ……

ttp://rubyforge.org/tracker/index.php?func=detail&aid=2030&group_id=205&atid=863
ttp://arika.org/diary/20040613#p02
0970デフォルトの名無しさん2005/08/30(火) 11:47:43
RubyのWebアプリで、アプリを使用するユーザを登録するCGIを書いています。
Apache/1.3.26

ユーザを登録した場合、ApacheのDocumentRoot "/var/www/html/"に"/var/www/html/user/ユーザ名"という感じでユーザ名でディレクトリを作成したいのですが、
Apacheのerror.logに
mkdir: cannot create directory `/var/www/html/user/ユーザ名: Permission denied
とでます。

これはどう権限を変更すればいいのでしょうか?
ちなみに、このディレクトリを作成するコマンドはクラスとして、rubyのライブラリ保存ディレクトリに保存しています。
(/var/www/html/に保存しても、結果は同じです。)

ディレクトリを作成するRubyのコードは
ttp://www.openspc2.org/reibun/Ruby/unix/001/
を参考にしました。
0971デフォルトの名無しさん2005/08/30(火) 12:15:43
>>970
まず、CGIを実行しているユーザーを特定しましょう。
OSや設定によって違うけれども、www とか nobody とか、apache とかが多い。
SuExec で、他のユーザーになっているかもしれないけど。

それから、そのユーザーで /var/www/html/user に書き込みが出来るか(ディレクトリが作れるか)
調べてみましょう。
0972デフォルトの名無しさん2005/08/30(火) 12:22:19
>>971
あぁ!そうでした!(;´Д`)すいません。
ユーザ名とグループ名のnobodyが思い出せませんでした。ご迷惑おかけしましたm(_ _"m)ペコリ
0973デフォルトの名無しさん2005/08/30(火) 12:46:14
>>963
まあ、あなたのレベルに拠るからね。

「さっぱり分からない」のは、ruby が分からんのか、CGIの仕組みが分からんのか、
Railsの仕組みが分からんのか、それにも拠るからね。
09749512005/08/30(火) 13:18:18
わかったようなわからないような・・・

ええと、やりたいことは、

class A
 class B
  class C
   ...
  end
 end
end

というコードがあるのですが、インデントが深すぎコードが見づらく書きづらいので、

class A
 class B
 end
end

class A::B::C
 ...
end

と書き換えようと思ったのですが、
このような書き換えを行うと何か副作用が生じたりするでしょうか?
何か思わぬ落し穴や注意すべき点などあれば教えてください。
0975デフォルトの名無しさん2005/08/30(火) 13:59:34
そもそものクラス設計が既に落とし穴にはまっているような気がするな。
なんでそんなにクラスを入れ子にするのよ?
0976デフォルトの名無しさん2005/08/30(火) 14:02:26
>>974
どっかで継承関係を忘れたりしてなければ問題ない。
09779512005/08/30(火) 14:03:40
名前空間が重ならないようにするためです。
具体的に言うと、弊社の名前、部署の名前、プロジェクト名などを付けています。
Company::Division::Project::Klass みたいな。
09789512005/08/30(火) 14:04:56
>>976
なるほど。ありがとうございます。
09799512005/08/30(火) 17:04:51
定数参照がハマりどころでしょうか?

class A
 B = 1
 class C
  def b
   B
  end
 end
end
p A::C::new.b

を、先述のように、
class A::C; def b; B; end; end
のように書き直すと NameError になりますね。
class A::C; def b; A::B; end; end
のようにしないとダメなようです。

このあたり、リファレンスマニュアルを見てもいまいちピンとこないのですが、
定数参照は、モジュールの階層を検索していっているのではなくて、
モジュール定義のネストを検索しているということでしょうか?
0980デフォルトの名無しさん2005/08/30(火) 19:42:59
> 名前空間が重ならないようにするためです。

Javaのパッケージの影響か。。。
名前空間のためだけならモジュール使えば?
'#{弊社の名前}_#{部署の名前}_#{プロジェクト名}' みたいにでもして。
0981デフォルトの名無しさん2005/08/30(火) 19:47:51
>>977
お前んとこは社内でプロジェクト名がかぶるのか。
組織変更とかあったら大変だな。
0982デフォルトの名無しさん2005/08/30(火) 20:26:24
どっちにしても社名が変われば大変
0983デフォルトの名無しさん2005/08/30(火) 21:58:42
職業プログラマって馬鹿なんだね。
09849512005/08/30(火) 22:15:03
標本数 1 で「職業プログラマ」と汎化してしまうのもどうかと思いますが、
社名・部署名を使うかどうかはともかくとして、
モジュールの階層をカテゴリで分類して名前空間の衝突を避ける、
というのは一般的ではないということでしょうかね。
標準添付ライブラリなどでもそういう例がいくつかあるように思うのですが。

いずれにせよ、ここでこれ以上聞いても満足な回答が得られそうにないので、
このへんにしたいと思います。
0985デフォルトの名無しさん2005/08/30(火) 23:25:26
> 社名・部署名を使うかどうかはともかくとして、
いや、社名・部署名を使うことが問題だって言ってるのに、ともかくとされても。
0986デフォルトの名無しさん2005/08/31(水) 00:37:49
典型的な自分は賢いと思い込んで迷走するパターンだな
0987デフォルトの名無しさん2005/08/31(水) 01:36:33
インデント深くしないために soap4r みたいにするのはさすがにみっともないな
0988デフォルトの名無しさん2005/08/31(水) 03:34:16
起動の仕方教えて下さい><
0989デフォルトの名無しさん2005/08/31(水) 03:35:43
ただ規約に従ってるだけの奴をいちいち叩く奴はアフォ
0990デフォルトの名無しさん2005/08/31(水) 04:46:45
起動の仕方教えて下さい
0991デフォルトの名無しさん2005/08/31(水) 05:04:44
>>990
起動って……何のよ? Ruby か?

Windows(NT系) なら "ファイル名を指定して実行" → cmd [OK] して以下をやってみる。

C:\...> ruby --version
C:\...> ruby -e 'puts "Hello, World!"'

既に Ruby スクリプトを書いたのなら、
そのスクリプト(例えばファイル名 sample.rb)があるディレクトリで以下をやってみる。

C:\...> ruby sample.rb

インタプリタなんだから、スクリプトと組み合わせる。
DOS が分からないのなら、まずそこから学習しなきゃならんのかも。
開発環境などによっては、不要かもしれない。
Windows のやつは、ダブルクリックで実行できる様になってたのもあった気がするが。
0992デフォルトの名無しさん2005/08/31(水) 05:32:54
>991
レスありです
ところで迷惑ついでに教えて欲しいんですが
日本産ルビーと外国産ルビーってなんかしら関係あるんですか?
どっちが先?
0993デフォルトの名無しさん2005/08/31(水) 06:04:58
作者はこの人
ttp://www.rubyist.net/~matz/

日本産も外国産もないと思うよ。同一。
基本的には、作者が日本人という関係で、
まず日本で普及して、海外にも普及してったという流れかと。
最近では、海外の方が勢いがありそうだけど。
0994デフォルトの名無しさん2005/08/31(水) 06:15:48
レスどもです
0995デフォルトの名無しさん2005/08/31(水) 06:18:37
>>963
【Agile】Ruby on rails相談所【DRY】
http://pc8.2ch.net/test/read.cgi/php/1118663500/
0996デフォルトの名無しさん2005/08/31(水) 07:21:07
>>992
外国産というとミャンマーのが有名だな。
0997デフォルトの名無しさん2005/08/31(水) 07:22:49
Rubyはアメリカ発だから外国産とは主に日本人向けの処理系をさす
0998デフォルトの名無しさん2005/08/31(水) 08:11:12
>>973
Rubyはわかってると思います。
CGIの仕組みはおぼろげながらもわかってると思います。
Railsの仕組みがさっぱりわかりません。
あとデータベース関係が初歩的な事しかわかりません。
0999デフォルトの名無しさん2005/08/31(水) 12:23:26
>>998
じゃあ、Rails は、

 データベースの情報を元にビュー(テンプレート)やコントローラー、
 モデル用のスクリプトを適当に自動生成して運用する

というのはオッケイ?

「ビュー」「コントローラー」「モデル」で引っかかるの?
1000デフォルトの名無しさん2005/08/31(水) 15:47:04
>>999
そこらへんがやっと理解できてきました。
と言っても、実はWEB+DB PRESS vol.28という本を買ってきました。
丁度Ruby on Railsの特集記事があって丁度そういうような事が書いてありますね。
面白そうです。
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。