Ruby初心者スレッドPart4
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/01/22(日) 20:02:29Ruby Home Page
http://www.ruby-lang.org/ja/
#過去スレ
Ruby初心者質問スレPart1
http://pc5.2ch.net/test/read.cgi/tech/1100534824/
Ruby初心者質問スレPart2
http://pc8.2ch.net/test/read.cgi/tech/1107799347/
Ruby初心者質問スレPart3
http://pc8.2ch.net/test/read.cgi/tech/1125587131/
#本スレ
Rubyについて Part 18
http://pc8.2ch.net/test/read.cgi/tech/1133988248/
#関連スレ
RUBYの宿題教えてください。
http://pc8.2ch.net/test/read.cgi/tech/1106572657/
【最高言語】 Rubyist Magazine創刊 【ルビま!】
http://pc8.2ch.net/test/read.cgi/tech/1094825807/
0002デフォルトの名無しさん
2006/01/22(日) 20:21:24リファレンス
http://www.ruby-lang.org/ja/man/
RAA - Ruby Application Archive
http://raa.ruby-lang.org/
日本Rubyの会 公式Wiki - 日本Rubyの会Wiki
http://jp.rubyist.net/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
Matzにっき
http://www.rubyist.net/~matz/
<rubyXML/>
http://www.rubyxml.com/
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/
0003デフォルトの名無しさん
2006/01/22(日) 20:24:130004デフォルトの名無しさん
2006/01/22(日) 20:30:480005デフォルトの名無しさん
2006/01/22(日) 20:55:52生�`
そして乙
0006デフォルトの名無しさん
2006/01/22(日) 23:42:540007デフォルトの名無しさん
2006/01/23(月) 14:57:52でmycmdが存命中でもリアルタイムにeach_lineのループをまわすことってできないですか?
普通にやるとプロセス終わるまで溜め込んでますよね?
0008デフォルトの名無しさん
2006/01/23(月) 14:58:40無理。
そんなあなたにパイプ処理。
0009デフォルトの名無しさん
2006/01/23(月) 14:59:46popen とか open3 とか。
0010デフォルトの名無しさん
2006/01/23(月) 15:30:33STDIN.gets だとコンソール上に入力内容が表示されてしまいます。
コンソール上に表示させずにキーボードから1行入力してもらうのに
良い方法はないでしょうか?
0011デフォルトの名無しさん
2006/01/23(月) 15:37:19system("stty -echo")
begin
passwd = STDIN.gets.chomp
ensure
print "\n"
system("stty echo")
end
0012デフォルトの名無しさん
2006/01/23(月) 15:59:160013デフォルトの名無しさん
2006/01/23(月) 16:04:41rubyのバージョンは ruby 1.8.4 (2005-12-24) [i386-mswin32] です。
0014デフォルトの名無しさん
2006/01/23(月) 16:11:23RRRWiki自体がなくなってるから、そのruby-cvsへの
リンクは削った方が良さそう。
0015デフォルトの名無しさん
2006/01/23(月) 16:25:13rubyw.exe
0016デフォルトの名無しさん
2006/01/23(月) 16:36:36ありがとう。rubywってこのためのものだったんだ。
0017デフォルトの名無しさん
2006/01/23(月) 18:12:44標準で getpass が欲しいところだな。需要は結構あると思うんだけど。
0018デフォルトの名無しさん
2006/01/23(月) 19:03:34実装よろ。
0019デフォルトの名無しさん
2006/01/23(月) 19:16:12>>11 ので。
0020デフォルトの名無しさん
2006/01/23(月) 19:32:39>>11はWindowsじゃ動かないから標準で欲しい
という流れじゃなかったのか?
0021デフォルトの名無しさん
2006/01/23(月) 19:35:36そーゆー事は試してから書こうな?
0022デフォルトの名無しさん
2006/01/23(月) 19:46:34>>11 のは Windows じゃ動かないですよ。
0023デフォルトの名無しさん
2006/01/23(月) 19:47:13passwd.rb:2:in `system': No such file or directory - stty -echo (Errno::ENOENT)
from passwd.rb:2
password:
C:\>
0024デフォルトの名無しさん
2006/01/23(月) 19:47:37と、入力した文字列が表示されてしまうます。
0025デフォルトの名無しさん
2006/01/23(月) 20:07:05Win9x系だと以下で出来る。
def getpass_win9x
print "\x1b[8m" # 文字を透明にする
k = gets
print "\x1b[0m" # 元に戻す
return k
end
元に戻さないと黒いままになるから
実際は例外処理して元に戻す方が良いかな。
で、Win2000やXPはやり方がさっぱり分からん…
0026デフォルトの名無しさん
2006/01/23(月) 20:10:26Macintosh の場合は EasyDialogs.AskPassword とかいうのを使っているみたいだけど、
俺にはさっぱり意味がわからない。
0027デフォルトの名無しさん
2006/01/23(月) 20:44:09#include <ruby.h>
#include <pwd.h>
#include <unistd.h>
static VALUE rb_getpass(VALUE self, volatile VALUE prompt) {
Check_Type(prompt, T_STRING);
return rb_str_new2(getpass(RSTRING(prompt)->ptr));
}
Init_getpass() {
rb_define_method(rb_mKernel, "getpass", rb_getpass, 1);
}
0028デフォルトの名無しさん
2006/01/24(火) 00:55:47require 'tk'
def anime
@cw.delete("tag")
for i in 0..39
for j in 0..79
if @c[i][j,1] == "*"
TkcRectangle.new(@cw,j*5+100, i*5+100, j*5+104, i*5+104, "fill" => "darkgreen", "tags" => "tag")
end
end
end
for i in 0..39
@d[i] = " "*80
for j in 0..79
end
end
for i in 0.. 39
@c[i] = @d[i]
end
Tk.after(1,proc{anime})
end
@rw = TkRoot.new{title("Lifegame")}
@cw = TkCanvas.new(@rw, "width" => 600, "height" => 400, "background" => "lightpink") {pack}
TkcRectangle.new(@cw, 100, 100, 500, 300, "fill" => "white", "width" => "2")
@c = Array.new; @d = Array.new
for i in 0..39
@c[i] = " "*80
end
0029デフォルトの名無しさん
2006/01/24(火) 00:56:52@c[ 4][0,40] = " * * "
@c[ 5][0,40] = " ** * "
@c[ 6][0,40] = " ** * "
@c[ 7][0,40] = " * *** * "
@c[ 8][0,40] = " ** ** * "
@c[ 9][0,40] = " ** * "
@c[10][0,40] = " * ** "
@c[11][0,40] = " * "
anime
Tk.mainloop
0030デフォルトの名無しさん
2006/01/24(火) 05:27:50http://www.rubygarden.org/ruby?PasswordWithoutEcho
0031デフォルトの名無しさん
2006/01/24(火) 10:02:00真面目に調べさせてしまってなんかスマン。
0032デフォルトの名無しさん
2006/01/24(火) 11:02:00WinXPでmswin32版のrubyでは>>11が動くみたい。
C:\Temp>ruby -v
ruby 1.8.1 (2003-12-25) [i386-mswin32]
C:\Temp>ruby
print "password: "
system("stty -echo")
begin
passwd = STDIN.gets.chomp
ensure
print "\n"
system("stty echo")
end
puts passwd
^D
password: ←ここで"12345678"と入力したが表示されず
12345678
0033デフォルトの名無しさん
2006/01/24(火) 12:14:280034デフォルトの名無しさん
2006/01/24(火) 13:22:500035デフォルトの名無しさん
2006/01/24(火) 13:50:010036デフォルトの名無しさん
2006/01/24(火) 14:01:240037デフォルトの名無しさん
2006/01/24(火) 14:27:24それだとファイルに挿入したことにならないぞ。
シェル上から/path/to/fileにリダイレクトしたらファイル壊れるし。
それにputs使ってしまったらオリジナルファイルにあった改行コードを引き継げない。
0038デフォルトの名無しさん
2006/01/24(火) 14:34:11ruby -ni.bak e 'puts "#$. #$_"' /path/to/file
改行コードをどうこうしたいなら$/をいじりなさい。
0039デフォルトの名無しさん
2006/01/24(火) 15:01:2735です。どうもありがとうございます。
>改行コードをどうこうしたいなら$/をいじりなさい。
勉強してみます。
5桁で0でパディングしたいのですが、これだけ教えて下さい。今のところ、こんな感じでしか書けないので。
while gets
printf("%05d: ", $.)
puts $_
end
0040デフォルトの名無しさん
2006/01/24(火) 15:11:35ruby -ni.bak -e 'puts "%05d #$_" % $.' 10.gp
0041デフォルトの名無しさん
2006/01/24(火) 15:12:08puts じゃなくて print とかにすれば改行コード保存されるよね。
0042デフォルトの名無しさん
2006/01/24(火) 15:12:080043デフォルトの名無しさん
2006/01/24(火) 15:21:350044デフォルトの名無しさん
2006/01/24(火) 15:58:380045デフォルトの名無しさん
2006/01/24(火) 16:00:540046デフォルトの名無しさん
2006/01/24(火) 16:08:23#$とか禁止
0047デフォルトの名無しさん
2006/01/24(火) 16:12:30そう思う人が、非ワンライナで#$とか使わない回答もしてあげればいいだけかと。
0048デフォルトの名無しさん
2006/01/24(火) 16:33:11回答は個々が独立して初心者向けに適当であるべきだと思う。
0049デフォルトの名無しさん
2006/01/24(火) 17:37:270050デフォルトの名無しさん
2006/01/24(火) 17:43:560051デフォルトの名無しさん
2006/01/24(火) 17:47:47なんで不適切なのか、私を含めた初心者のために説明してもらえませんか?
0052デフォルトの名無しさん
2006/01/24(火) 17:49:150053デフォルトの名無しさん
2006/01/24(火) 18:07:38こういうこともあるので、>>47に同意。
0054デフォルトの名無しさん
2006/01/24(火) 21:42:260055デフォルトの名無しさん
2006/01/24(火) 21:53:180056デフォルトの名無しさん
2006/01/24(火) 23:57:57お願いします。lifegameを表示させたいのですが、
まわりの部分しか表示されません。。
どこが悪いのでしょうか??orz
0057デフォルトの名無しさん
2006/01/25(水) 00:31:12どうすればいいですか?
"0x80000000".hex だと 2147483648 になってしまいます。
0058前スレ951
2006/01/25(水) 03:29:03Cookieの受け渡しをCGIクラスを使って行いたいのですが
enctypeをmultipartにすると動作しません
どこが間違っているのでしょうか?
環境:
Windows 2000
ruby 1.8.2 (2004-12-25) [i386-cygwin]
AN HTTP Daemon Version 1.42n
--
require "cgi"
cgi = CGI.new
cookie1 = CGI::Cookie::new({ 'name' => "name", 'value' => ["value"], 'expires' => Time.now + 1000 })
cgi.out({"cookie" => [cookie1]}){""}
print "Content-type: text/html\n\n"
p cgi.cookies['name']
print <<EOF
<html>
<body>
<form action=#{File.basename(__FILE__)} method=post enctype=multipart/form-data>
<input type=submit value=multipart>
</form>
<form action=#{File.basename(__FILE__)} method=post enctype=text/plain>
<input type=submit value=text>
</form>
</body>
</html>
EOF
--
※少し修正
0059デフォルトの名無しさん
2006/01/25(水) 10:02:50cgi.pmがそういうものです。multipartの処理を自分で書き足すか、他使いましょう。
0060デフォルトの名無しさん
2006/01/25(水) 10:22:50str = "0x80000000" とすると、例えば、
[str.hex].pack('l').unpack('l')[0]
とかでどないだ。
0061デフォルトの名無しさん
2006/01/25(水) 13:34:21Rubyでも cgi.pm 使ってるのか? おぬしは。
0062デフォルトの名無しさん
2006/01/25(水) 13:59:140063デフォルトの名無しさん
2006/01/25(水) 15:59:200064デフォルトの名無しさん
2006/01/25(水) 17:23:05全部小文字とか先頭1文字だけ大文字とか統一してくれれば書くの楽なのに。
あるいは大文字小文字関係なくファイル読み込むとか。
0065デフォルトの名無しさん
2006/01/25(水) 19:00:54ファイル名は全て小文字で単語間は '_' 、だと思うけど、どっかで議論されてたっけ?
RoR のファイル名の命名規則がまた変態的だったような。
0066デフォルトの名無しさん
2006/01/25(水) 20:25:110067デフォルトの名無しさん
2006/01/25(水) 20:25:50おぉありがとうございます。uint32としてpackしてsint32として取り出すって
ことですね。
0068デフォルトの名無しさん
2006/01/25(水) 20:58:49sint32としてpackしてsint32として取り出してるんだけどな。
まあ、packする方は32bit幅ならなんでもよくて、unpackするときに決まる。
0069デフォルトの名無しさん
2006/01/25(水) 21:01:50FileUtilsはなんでFileutilsじゃないんだろうと思ったことはある
0070デフォルトの名無しさん
2006/01/25(水) 23:13:28Uは大文字の方がしっくりくるけどなあ。
0071デフォルトの名無しさん
2006/01/26(木) 00:32:560072デフォルトの名無しさん
2006/01/26(木) 00:40:10win32apiとwin32oleはホントなんとかしてほしい。
0073デフォルトの名無しさん
2006/01/26(木) 01:21:32じゃあTempFileとかKConvとかにしろよ!!!!11!!
Cgi.newじゃなくCGI.newじゃないと動かないのもムカつくお年頃な俺をなんとかしてくれ
ERBが全部大文字なのもやだ。お前はERbだろう。
いや最後1文字だけ小文字ってのもそれはそれで統一性がないとか俺は文句言いそうだが(w
0074デフォルトの名無しさん
2006/01/26(木) 03:50:58そう、お前は全く正しい。
さあ、 ruby-list へ Go だ!
007558
2006/01/26(木) 11:26:26ありがとうございます
cgi.rbの代わりでNarf、Rweb、(Nora)があるのがわかりました
バージョンが低いのが気になるけども頑張って勉強してみます
"これが定番だからこれ使っとけ"みたいなのがあったら教えてください
自分で処理を書くのは俺には厳しいです。 ごめんなさい
0076デフォルトの名無しさん
2006/01/26(木) 12:07:52enctype="multipart/form-data; boundary=hoge"
にしたら動いたけど。
0077デフォルトの名無しさん
2006/01/26(木) 21:44:14http://takahr.dhis.portside.net/cgi-bin/rwiki.cgi?cmd=view;name=Ruby%3A%3AWeb%A5%E9%A5%A4%A5%D6%A5%E9%A5%EA
0078デフォルトの名無しさん
2006/01/27(金) 01:44:04installerダウンロード不可能じゃない?
だれかアプロダにミラー頼んます。
0080デフォルトの名無しさん
2006/01/28(土) 01:08:21str.split(/$/) だと、改行文字の前で分割されてしまいました。
str.split(/\n/)だと、改行文字が消えてしまいました。
0081デフォルトの名無しさん
2006/01/28(土) 01:28:38Enumerable#to_a ね.
0082デフォルトの名無しさん
2006/01/28(土) 01:57:38splitを使うなら str.split(/^/) かな。
0083デフォルトの名無しさん
2006/01/28(土) 08:52:34String#to_a、String#split(/^/) のどちらもうまく動作しました。
どうもありがとうございました。
0084デフォルトの名無しさん
2006/01/28(土) 18:38:15下記の方法ではうまくいきませんでした。テキストファイルであれば
問題ない様ですが、画像などのファイルではファイルが壊れて
しまいます。どこが問題か教えていただけないでしょうか。
環境はWinXP、Riby1.8.4 i386-mswin32です。
require 'net/http'
require 'uri'
uri = URI.parse("http://www.google.co.jp/intl/ja_jp/images/logo.gif")
f = File.open('logo.gif', 'w+')
Net::HTTP.start(uri.host, 80) { |http|
http.request_get(uri.path) { |response|
response.read_body { |body|
f.puts body
}}}
f.close
0085デフォルトの名無しさん
2006/01/28(土) 18:44:41Windows環境でバイナリファイルを出力するなら、
File.openの引き数を「'w+b'」にしてバイナリモードにするのでは?
0086デフォルトの名無しさん
2006/01/28(土) 18:54:02'w+'を'w+b'にして実行してみましたが同じでした。
'w+'でも'w+b'でも、IrfanViewなどの壊れた画像ファイルを
表示可能なViewerで見ると、サイズは正しいのですが、絵と
しては壊れたものが表示されます。テキストエディタなどで
無理やり開いてみると、最初のヘッダ(の一部分?)は正しい
様です。
0087デフォルトの名無しさん
2006/01/28(土) 19:10:57008884
2006/01/28(土) 19:28:31'w+'->'w+b'とf.puts->f.writeを両方変更することにより、
うまくいきました(片方だけではだめでした)。
しばらく、この手のプログラミングから離れていたので、
改行文字やテキスト・バイナリの処理の事がすっぽり
抜け落ちていました・・・。
0089デフォルトの名無しさん
2006/01/28(土) 20:11:25しかも、それも誘導されてた記憶がある。
0090デフォルトの名無しさん
2006/01/28(土) 21:56:42「print "〜\n" 使うより puts "〜" のほうがよいっていうか若干マシ」の略なんだと思うが略され方が危険だ
0091デフォルトの名無しさん
2006/01/28(土) 22:32:480092デフォルトの名無しさん
2006/01/28(土) 23:01:53Rubyにありますか?
0093デフォルトの名無しさん
2006/01/28(土) 23:20:38if __FILE__ == $0
じゃね?
0094デフォルトの名無しさん
2006/01/28(土) 23:56:01あぁ、ごめんなさい。
putsを使ってることに気付いてませんでした。
0095デフォルトの名無しさん
2006/01/29(日) 08:56:30以下の例の#2の行で{}まで対応させたいのですがどこが間違ってるでしょうか。
例
text = "
main()
{
}
"
p text.grep(/main\(\).*?/m) # 1
p text.grep(/main\(\).*?\{.*\}/m) # 2
結果
["main()\n"]
[]
0096デフォルトの名無しさん
2006/01/29(日) 11:37:15クする。したがって複数行マッチしようにも出来ない。
ふつうに文字列で正規表現マッチさせるなら match とか scan とかを使うべし。
text.scan(/main\(\).*?\{.*\}/m) # => ["main()\n{\n}"]
0097デフォルトの名無しさん
2006/01/29(日) 13:42:37例えば "String" から Stringクラスオブジェクトを取得するということです。
JavaでいうとClass.forName()にあたるものです。
0098デフォルトの名無しさん
2006/01/29(日) 13:45:46"string".class
0099デフォルトの名無しさん
2006/01/29(日) 13:58:33そうじゃなくて "Array" から Array を、"File" から File を取得するということです。
>>98 だと "Array" からも "File" からも String が取れてしまいます。
0100デフォルトの名無しさん
2006/01/29(日) 14:02:08eval("Array") #=> Array
でよくない?
0101デフォルトの名無しさん
2006/01/29(日) 14:16:360102デフォルトの名無しさん
2006/01/29(日) 14:32:04http://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-list/40021?39947-40194
0103デフォルトの名無しさん
2006/01/29(日) 15:34:45evalはなんでも実行してしまってちょっと危険なので、今回は避けたいです。
>>101
それでいけそうですが、モジュール名も含めた場合はエラーとなりました。
Kernel.const_get("File::Stat") #=> NameError
0104デフォルトの名無しさん
2006/01/29(日) 15:44:19102のリンクから辿ってruby-list:40030を見れ。
"File::Stat".split(/::/).inject(Object){|c,name| c.const_get(name)} # => File::Stat
ちょっと面倒だな。
010595
2006/01/29(日) 15:51:33引き続き質問ですが
gsubも同じことなんですね。
置き換えを行いたいときはどうすればよいでしょうか。
0106デフォルトの名無しさん
2006/01/29(日) 16:09:400107デフォルトの名無しさん
2006/01/29(日) 16:27:56file.each do |line|
a,b,c,d = line.chomp.split( /<>/ )
end
end
ファイルから読み込む際、a,b,c,dそれぞれ配列の形で読み込みたいのですが、
どうしたらいいでしょうか?Arrayをいろいろ試してみたのですがうまく行きません・・・
0108デフォルトの名無しさん
2006/01/29(日) 16:31:22の意味がわからん。
どういう入力ファイルだったらどうなって欲しいという例をキボン
0109デフォルトの名無しさん
2006/01/29(日) 16:40:41a<>..<>..<>..
b<>..<>..<>..
c<>...
とあって、a[0]にa,a[1]にb...となって欲しいのですが・・・
0110sage
2006/01/29(日) 17:12:05Thread.start{
while true
x = x + 1
end
}
gets
print x
期待の動作:
xが無限ループ中で加算され続ける。
コンソールから入力を受けると、その次点でのxの値が表示される。
問題:
xが198以上の値にならない。なぜでしょう?
環境:ruby 1.8.4 (2005-12-24) [i386-mswin32]
ruby -le 'print defined?(Thread)' → constant
0111デフォルトの名無しさん
2006/01/29(日) 17:15:010112デフォルトの名無しさん
2006/01/29(日) 17:53:13つまり、メインスレッドがgetsで待っている間、サブスレッドも停止しているのです。
0113デフォルトの名無しさん
2006/01/29(日) 18:00:30UNIX版を使えば期待した動作をする。
0114デフォルトの名無しさん
2006/01/29(日) 18:21:06そういうことですか。どうもありがとうございます。
inject()はわかりにくいので、愚直にeach()のほうをつかいます。
>>102
「これを思い出した」じゃなくて「これを読め」と書いてあるとうれしいです。
ただのオフトピかと思った。
0115デフォルトの名無しさん
2006/01/29(日) 18:26:41その説明でもわからん。
A1<>A2<>A3<>A4
B1<>B2<>B3<>B4
C1<>C2<>C3<>C4
とあったとき、
arr1 = ['A1', 'B1', 'C1']
arr2 = ['A2', 'B2', 'C2']
arr3 = ['A3', 'B3', 'C3']
arr4 = ['A4', 'B4', 'B4']
にしたいということ?
0116デフォルトの名無しさん
2006/01/29(日) 18:33:03arr[1]=[A1,B1,C1,...]
arr[2]=[A2,B2,C2,...]
arr[3]=[A3,B3,C3,...]
arr[4]=[A4,B4,C4,...]
としたいです。何度もすみません。
0117デフォルトの名無しさん
2006/01/29(日) 18:53:46arr[レス番] = [ 名前, メール欄, 投稿日, レス内容 ]
0118デフォルトの名無しさん
2006/01/29(日) 19:09:220119デフォルトの名無しさん
2006/01/29(日) 19:15:19File.open( "test.dat", "r" ) do |file|
file.each do |line|
arr.push(line.chomp.split(/<>/))
end
end
0120デフォルトの名無しさん
2006/01/29(日) 19:32:170121デフォルトの名無しさん
2006/01/29(日) 21:32:44Rails環境なら、
"File::Stat".constantize
だけでOK
0122110
2006/01/29(日) 22:31:02>>113
ありがとうございます。
windows版はthread関係の動作がunix系と異なるという情報は
持っていましたが、内容を理解していませんでした。
今後は気をつけたいと思います。
0123デフォルトの名無しさん
2006/01/30(月) 14:13:01システムにインストールされているrubyとgemを使って、ホームディレクトリ以下にGemsのパッケージをインストールしようとしています。
http://docs.rubygems.org/read/chapter/11#page56
ここを見て ~/.gemrc を設定し、
% gem install rake
Attempting local installation of 'rake'
Local gem file not found: rake*.gem
Attempting remote installation of 'rake'
Updating Gem source index for: http://gems.rubyforge.org
Successfully installed rake-0.7.0
Installing RDoc documentation for rake-0.7.0...
となり、インストールは正常に終了したようです。
しかしいざrakeを実行するとエラーが出ます。
% ./rake
/usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:204:in `report_activate_error': Could not find RubyGem rake (> 0) (Gem::LoadError)
from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:141:in `activate'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:37:in `require_gem_with_options'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:31:in `require_gem'
from ./rake:17
どうすれば正しく動作しますか ?
% ruby -v
ruby 1.8.2 (2004-12-25) [i386-freebsd6]
% gem -v
0.8.11
0124デフォルトの名無しさん
2006/01/30(月) 16:10:43それ、気持ち悪いなあ。Stringクラスにもたせる機能じゃないだろ。
ふつーにユーティリティ関数じゃだめなんだろうか。
0125デフォルトの名無しさん
2006/01/30(月) 18:01:290126デフォルトの名無しさん
2006/01/31(火) 05:28:38class String
def &(s)
self + s.to_s
end
end
0127デフォルトの名無しさん
2006/01/31(火) 06:24:44組み込みクラスの再定義は、読む側からすると戸惑いのもとになるから
使うなら、きちんと明記しておいた方がよさそう
0128デフォルトの名無しさん
2006/01/31(火) 07:57:29これ、よく言われるけど、グローバルスコープの(Kernelクラスの?)
関数を定義するのと同じことじゃないのかと思うんだけど、
そういう解釈は間違ってる?
0129デフォルトの名無しさん
2006/01/31(火) 12:19:19いいんじゃない?
人に迷惑かからなければ、好きなようにソース書いて。
0130デフォルトの名無しさん
2006/01/31(火) 12:26:20組み込みクラスの再定義が推奨されないのは知っているのだが、
そこだけ取り上げられるのはなんでだ?と。コードの見た目で
言うならObjectクラス(だよね?)のメソッドを定義するのと
似たようなもんじゃないのかと思うんだけど。
こっちも推奨しないって言ってくれた方がすっきりするってこと。
0131デフォルトの名無しさん
2006/01/31(火) 12:31:480132デフォルトの名無しさん
2006/01/31(火) 12:32:57「&」という名前にしなければならない理由は?
もし違う名前でいいなら、そのほうがいいと思う。
0133デフォルトの名無しさん
2006/01/31(火) 13:43:41NUM = "0"
while NUM != "3"
while ASK != ASK.upcase
puts "もっと大きな声で話してくださいな。"
ASK = gets.chomp
end
if ASK == "BYE"
puts "はぁ…?"
NUM = (NUM.to_i + 1).to_s
ASK = gets.chomp
else
puts "いやぁ、"+(1950+rand(22)).to_s+"以来ありませんよ。"
NUM = "0"
ASK = gets.chomp
end
end
puts "ハイさようならー。"
----------------------------
ttp://www1.tf.chiba-u.jp/~shin/tutorial/index.rb?Chapter=06
「BYE」と3回連続で入力しなければ終了できないようにしたいのですが、
「BYE」→「BYE」→「fweajijifuji」→「BYE」→「fweajijifuji」
で終了してしまいます(他のパターンで終了してしまうことも…)。
もしよろしければ助言をいただけないでしょうか。
それと「warning: already initialized constant 〜」
という文面がよく出るのですが、これは仕様なんでしょうか。
0134デフォルトの名無しさん
2006/01/31(火) 13:56:05・「定数」は大文字で始まります。
・「定数」に二度以上代入するとワーニングが出ます
0135デフォルトの名無しさん
2006/01/31(火) 14:34:32STDIN.inject(0) {|num, line|
case line.chomp
when "ASK"
puts "いやー、" + (1950 + rand(22)).to_s + "年以来ないねー!"
0
when "BYE"
if num < 2
puts "はぁ〜?"
num + 1
else
puts "ハイさようならー"
break
end
else
puts "は?! もっと大きな声で話しておくれ、坊や!"
0
end
}
0136デフォルトの名無しさん
2006/01/31(火) 14:44:510137デフォルトの名無しさん
2006/01/31(火) 14:57:570138デフォルトの名無しさん
2006/01/31(火) 15:56:46条件分岐の末端末端でinjectの返り値を書くことが「暗」に求められてるため、
バグを生みだすリスクばかりが大きくなる。
0139デフォルトの名無しさん
2006/01/31(火) 16:25:57というかそのへん含めたただの嫌がらせだろう(w
0140デフォルトの名無しさん
2006/01/31(火) 16:39:430141デフォルトの名無しさん
2006/01/31(火) 18:33:42ファミコン並みか?
ガッコでRuby習ってんだが、全然使えんと思う
0142デフォルトの名無しさん
2006/01/31(火) 18:37:12つhttp://www.enterbrain.co.jp/digifami/products/rpgxp/capt10.gif
0143133
2006/01/31(火) 20:35:41n = [0]
while n[0] != 3
while ask != ask.upcase
puts "もっと大きな声で話してくださいな。"
n[0] = 0
ask = gets.chomp
end
if ask == "BYE"
n[0] = n[0] + 1
if n[0] != 3
puts "はぁ…?"
ask = gets.chomp
end
else
puts "いやぁ、"+(1950+rand(22)).to_s+"以来ありませんよ。"
n[0] = 0
ask = gets.chomp
end
end
puts "やったできたー!"*50
puts "助言ありがとー!"*40
puts "ありがとー"*30
puts "がとー"*20
puts "とー…"*10
puts "変数は小文字じゃなきゃだめとかホント助かりました。"
0144デフォルトの名無しさん
2006/01/31(火) 21:02:53>>143を見たら多分泣くぞ。
0145デフォルトの名無しさん
2006/01/31(火) 21:19:05ask=''
while ask=gets.chomp
if ask == 'BYE'
then
year=(1950+rand(21)).to_s
puts "いやー、"+year+ "年以来ないねー!"
count = count + 1
else
puts "は?! もっと大きな声で話しておくれ、坊や!"
count = 0
end
if count == 3
then
exit
end
end
0146デフォルトの名無しさん
2006/01/31(火) 21:23:030147デフォルトの名無しさん
2006/01/31(火) 21:27:04そこまで書いて
while count < 3
という発想がなぜ出ない
0148デフォルトの名無しさん
2006/01/31(火) 21:33:46この場合、countでループ作るのってなーんか意味違う気しねえ?
0150133
2006/01/31(火) 22:06:370151デフォルトの名無しさん
2006/02/01(水) 00:13:55a = TkText.new{pack}
Thread.start do
while line = gets
a.insert 'end', line
end
end
Tk.mainloop
上のプログラム実行中、Tk のテキストウィジェット内の文字列を
マウスでドラッグして選択すると、それ以降 gets が
入力を取りこぼしてしまうようです。
(普段 state 'disable' しておいて書き込み時のみ 'normal' にしても同じ)
どのように書けばいいでしょうか?
0152127
2006/02/01(水) 00:30:06俺的には両方とも推奨しないけど、それはさておき
トップレベルで関数を定義した場合には、レシーバを省略したメソッドのように
書けるからじゃないかな。この書き方はRubyでは自然な書き方。
>>131
「誰もが分かってる」というほど簡単な話でもないと思うが
なによりここは初心者スレだ
>>141
つRuby/SDL
エロゲ程度なら好きなだけ作れる
0153デフォルトの名無しさん
2006/02/01(水) 03:40:13'hoge' + a.to_s + 'hage' + b.to_s + ...
といった時に
'hoge'&v&'hage'&b&...
と短く書けるかな、と。
記号一文字なら何でも良かったんですが
分かり易い事と、String#&というメソッドが無いようでしたので。
(ruby 1.8.4 (2005-12-24) [i386-mswin32])
…format()やprintf()がしっくりこないだけかも。
0154デフォルトの名無しさん
2006/02/01(水) 03:51:01"hoge#{a}hage#{b}" じゃダメなのか
0155デフォルトの名無しさん
2006/02/01(水) 04:20:24出来ました。式展開て文字列化ちゃんとしてくれるんですねorz
式展開の中にto_s書いてた自分が恥ずかし…
0156デフォルトの名無しさん
2006/02/01(水) 11:43:04ちなみに環境は?
0157151
2006/02/01(水) 12:02:04書き忘れてました。cygwin の ruby1.8.4 と tk8.4 です。
最初は socket から gets していて動作が変だと気付き、
最小の構成があのプログラムになり、再現性100%です。
unix だとそのままで動くのでしょうか…?
GUI のループの中で socket からデータを得る一般的な書き方ってどんなでしょう。
0158デフォルトの名無しさん
2006/02/01(水) 12:58:01select
0159151
2006/02/01(水) 14:07:03よくわからないのでもう少しお願いできますか?
別の Thread としてではなく、Tk のタイマーを使うということでしょうか?
TkAfter のプロセスとして select を指定し、一定時間ごとにタイムアウトありで呼ぶという理解であってるでしょうか。
0160デフォルトの名無しさん
2006/02/01(水) 14:21:51つか、157で
>GUI のループの中で socket からデータを得る一般的な書き方ってどんなでしょう。
と書いてるから、ループの中でsocketに対してselectしときゃいいんじゃ、と思っただけなんだが。
一定時間ごとにタイムアウトありで、というのはその通り。
0161151
2006/02/01(水) 14:42:58なるほどと思ったのですがそのやり方がわからないので、また調べてみます。
現状、Thread を廃止し、タイマーを使って select を試してみたところ 151 の症状は出なくなりました。
どうもありがとうです。
0162デフォルトの名無しさん
2006/02/02(木) 19:21:37という課題が出ました。
互いに素というのは作れるのですが、後半部分ができません。
だれか教えてください。お願いします。
0163デフォルトの名無しさん
2006/02/02(木) 19:24:12#関連スレ
RUBYの宿題教えてください。
http://pc8.2ch.net/test/read.cgi/tech/1106572657/
0164デフォルトの名無しさん
2006/02/03(金) 09:59:56arr.push(arr.delete(obj))
とすると思うんだけど、arr のサイズがかなり大きい場合、
もっと高速に出来る方法が無いかな、と思っているんだけど、どうかな?
細かい条件は、
* arr のサイズはかなり大きくなることを仮定すべき
* arr 中の各オブジェクトには、絶対に重複は無い
* arr 中に obj は必ず存在する
* 結果的に「該当のオブジェクトの順序を最後尾にする」という事が
効率的に、かつ高速に実現できるのなら、単独の Arrayだけでなく、
他の補助用のオブジェクトを併用しても良い
(つまり、そのために補助用に Hashなどを使っても良い)
また、事前に arr にデータを入れる時点(Array#push)で、何かの工夫があってもよい。
という事なんだけれども。
0165デフォルトの名無しさん
2006/02/03(金) 15:30:150166デフォルトの名無しさん
2006/02/03(金) 15:42:00日本語化パッチを探しているのですが、なかなか見つからないので…
0167デフォルトの名無しさん
2006/02/03(金) 15:44:36どこを日本語化したいの?
0168デフォルトの名無しさん
2006/02/03(金) 16:00:49プログラムもほぼ無知な初心者ですみません
とりあえずver1.8.4を落としたのですが、エディタも含めた中身が全て英語だったので何がなにやら…
(初心者インストールガイドの情報が1年前のものなのか、書かれている内容とリンク先のファイルが違ったりしていたので…
今はスレタイにある公式サイトを見ながら進めてます
0169デフォルトの名無しさん
2006/02/03(金) 16:01:14これを見て思い出したんだけど、Array#rotate はどうなったんだよ!
0170デフォルトの名無しさん
2006/02/03(金) 16:01:40「エディタ」って何?
つーか、何を落としたの?
0171デフォルトの名無しさん
2006/02/03(金) 16:07:30ttp://rubyforge.org/frs/?group_id=167&release_id=4153
ここの"1.8.4-16 preview2"というファイルです
エディタは、このファイルに同封されていたSciTEというテキストエディタ?です
0172171
2006/02/03(金) 16:41:43どうもお騒がせしました
0173デフォルトの名無しさん
2006/02/03(金) 16:50:150175デフォルトの名無しさん
2006/02/03(金) 23:37:330176デフォルトの名無しさん
2006/02/04(土) 00:43:500177デフォルトの名無しさん
2006/02/04(土) 01:04:440178デフォルトの名無しさん
2006/02/04(土) 01:05:26ローカルで試せ。
0179デフォルトの名無しさん
2006/02/04(土) 01:14:240180デフォルトの名無しさん
2006/02/04(土) 02:09:05Net::HTTP.version_1_2 # おまじない
word = "test"
Net::HTTP.start('www.google.com', 80) {|http|
response = http.get("/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&num=1&q=#{word}")
response.body =~ /swrnum\=(\d+)/
p $1
}
GoogleのHIT数を取得したいのですが
このスクリプトで取得できる値と実際にブラウザ
0181デフォルトの名無しさん
2006/02/04(土) 02:10:49実際にブラウザ(IE: 6.0.2800.1106)で検索した場合の値が違うのですが
どうすれば同じ値を取得できますか
0182デフォルトの名無しさん
2006/02/04(土) 02:38:57Cookieも一緒に送信したら一緒になったよ。
理由は分からんけど…。
0183175
2006/02/04(土) 02:49:00途中で切れるぞ?
getもマトモにできんとはどういうことだ?何の嫌がらせ?
$ ruby -r nkf -r http-access2 -e '
> url="http://pc8.2ch.net/test/read.cgi/tech/1133988248/"
> html=HTTPAccess2::Client.new.get(url).content
> puts NKF.nkf("-Sex",html).split("\n")[-3..-1]'
<dt>257 :<font color=green><b>デフォルトの名無しさん </b>(略)
<dt>258 :<a href="mailto:sage"><b>デフォルトの名無しさん </b>(略)
<dt>259 :<a href="mailto:sage"><b>デフォルトの名無しさん </b>(略)
0184151
2006/02/04(土) 09:19:13require "tk"
a = TkLabel.new{pack}
TkText.new{pack}
Thread.start do
num = 0
while true
num += 1
a.text = num
end
end
Tk.mainloop
上のプログラム実行中、テキストウィジェット内でマウスをドラッグすると
それ以降、ラベルウィジェットの更新がされなくなります。
(alive? で確かめるとスレッド自体は生きてる模様)
環境は cygwin です。unix な人、上のプログラムが大丈夫か確かめてもらえませんか?
#Tk 使うときはスレッド使うなってこと?もうやだ。
0185デフォルトの名無しさん
2006/02/04(土) 09:55:59arrの要素をキーにして、そのindexを値としたハッシュを使えばいいんじゃね。
・・・と思ったけど、arr.delete(obj)したときに、objより後ろにあるやつのindexをすべて更新しなきゃいけないから、だめだめだな。
思うに、配列を使っている限りはだめなんじゃないか。
arr.delete(obj) をするときに、どうしてもO(N)の時間がかかる(探索にO(N)、削除にO(N))。
Priority Queueとか使えるんだったら、そっちのほうがいいと思う。
これなら探索にO(logN)、削除にO(logN)だからかなり早くなるとは思うよ。
ただし要素間で大小比較ができないといけないから、164の要件にあうかどうかわからんが。
つか、Rubyの話題じゃないな。本スレかMLできけば、学者さんがヒントくれると思う。
0186デフォルトの名無しさん
2006/02/04(土) 11:23:45きちんとしたSSLページをローカルに用意できる人間がこの世にどれだけいるっていうんだ
0187デフォルトの名無しさん
2006/02/04(土) 11:39:51インストールできるだろ?
0188デフォルトの名無しさん
2006/02/04(土) 11:50:52ttp://hunter.campbus.com/
これもっつーか、これ恐ろしいパッケージ。
「Apache, MySQL, PHP + PEAR, Perl, mod_php, mod_perl, mod_ssl, OpenSSL, phpMyAdmin,
Webalizer, Mercury Mail Transport System for Win32 and NetWare Systems v3.32,
JpGraph, FileZilla FTP Server, mcrypt, eAccelerator, SQLite sowie WEB-DAV + mod_auth_mysql.」
ttp://www.apachefriends.org/de/xampp-windows.html
0189デフォルトの名無しさん
2006/02/04(土) 11:58:14https://〜〜〜 なサイトのファイルを取ってきたいってだけなら
標準添付のnet/https.rbでできないかい。
postもできんじゃねーの。やったことないけど。
0190123
2006/02/04(土) 12:32:07みなさんのところではこういう現象はおこらないのでしょうか・・・
0191デフォルトの名無しさん
2006/02/04(土) 19:35:32mechanize でも使え。
http://rubyforge.org/projects/wee/
0193デフォルトの名無しさん
2006/02/04(土) 21:09:28http://www.geoffreyarnold.com/
ここにGEM_PATHがどうのとか書いてるけど,
これじゃない?
0194123
2006/02/04(土) 22:31:34環境変数GEM_HOMEを設定することで動作するようになりました。
設定ファイルはインストール時のみ有効でアプリケーションの実行時には参照されないみたいです。
なんともまぎらわしい仕様ですが、これで先に進めます。
ありがとうございました。
0195デフォルトの名無しさん
2006/02/05(日) 21:23:33-Kオプションはスクリプトの解析段階からの文字コードを変更することになるので
スクリプト自体を、その文字コードで書いておかないといけない。
一方、$KCODEは、スクリプト解析後に影響がでてくるため、
スクリプト自体は、単なる1byteの羅列として認識されている。
正規表現を用いる場合のマッチの仕方、Stringの一部のメソッドのみに影響を与える。
このように理解したのですが、これでいいでしょうか??
で、困っているのは、Railsで$KCODEを"u"に指定しようとして、混乱しています。
$KCODEを"u"にすると、スクリプト中のStringやRegexpをUTF8で書きたいので、
スクリプト全体をUTF8に書き換えようとしましたが
そうすると、StringやRegexp以外のスクリプトの部分のASCII文字が、2bytes単位になってしまうけど
$KCODEで指定しているから、スクリプト解析時はNONEで解釈し、1byte単位で解釈してしまい、
解釈できませんよね。
結局、Rubyにおいて、-Kuでなく、$KCODE="u"とした場合、
1.スクリプトは、どの文字コードで書くのか??
2.スクリプトをShift-JISなどで書いた場合、StringやRegexp部分のみUTF8にしないといけない気がします。
どうなんでしょうか??
よろしくお願いします。
0196デフォルトの名無しさん
2006/02/05(日) 21:58:11ま変わらないよ(KCODEじたいは設定されるので文字列や正規表現に影響を与えるが)。
それと、 UTF-8 の場合、 ASCII 文字に関しては1byteずつなので、別に何ら
問題はない。UTF-16 あたりとごっちゃにしてない?
ただし、 Rails はデフォルトでは UTF-8 を吐こうとするので、きちんと設定
しないと Shift-JIS などの文字列を表示させることはできない。 Rails をや
るという前提であれば、可能ならぜんぶ UTF-8 で書くのが無難。
0197デフォルトの名無しさん
2006/02/06(月) 02:04:29Linux はOK。
One-click ruby installer 1.8.4preview2 + ActiveTcl8.4.12 もOK。
cygwin は手元に環境がないので確認できず。
動かしているバイナリの native-thread サポートはどうなってます?
0198デフォルトの名無しさん
2006/02/06(月) 02:28:54””のほうが美しいのに。
0199デフォルトの名無しさん
2006/02/06(月) 02:38:21今さらという気もするが、Tk.after(1,proc{anime}) を
Tk.after(2000, proc{anime}) として約2秒間隔の繰り返しにすると
原因がわかるのではないかという気が…
(貼ってあるものに間違いがなければだが)
0200デフォルトの名無しさん
2006/02/06(月) 02:40:030201デフォルトの名無しさん
2006/02/06(月) 05:07:11ん?自分では普通に"〜"で囲んでますよ。
'〜'で文字列を囲めることがご不満?
0202デフォルトの名無しさん
2006/02/06(月) 05:17:39意図的にそうして、俺ルールなプラシーボでミス防止とソース見易くしてる。
0203デフォルトの名無しさん
2006/02/06(月) 06:00:03この辺個人の好みが出るよな
どっちをメインに使っても実用では大差ないだけに、特に
ちなみに俺は、ハッシュのキーやファイルパスなんかはたいていダブルクォート
画面に表示する文字列は全部ダブルクォート、で使い分けてる
0204デフォルトの名無しさん
2006/02/06(月) 07:11:47で、どっちがシングルクォートなんだ?
0205デフォルトの名無しさん
2006/02/06(月) 09:11:590206デフォルトの名無しさん
2006/02/06(月) 10:21:430207デフォルトの名無しさん
2006/02/06(月) 10:34:250208デフォルトの名無しさん
2006/02/06(月) 12:58:12なるほど。自分では逆にしてます。原則的にはダブルクォートで、
変数展開やエスケープシーケンスを無効にしたい時だけシングルクォート。
何となく、ダブルクォートの方が文字列っぽい気がして。
0209デフォルトの名無しさん
2006/02/06(月) 13:11:28…お陰で等号を=と書く癖が治りませんorz
0210デフォルトの名無しさん
2006/02/06(月) 13:12:27コメントであるはずの#を流用するのが気に食わんとか。
#{〜}には何でも入るのが結構好みだがやりすぎてワケワカメになること多数
0211デフォルトの名無しさん
2006/02/06(月) 13:22:45なんかプログラミングの方向性として邪道っぽくね?
埋め込まずに + で足していったほうがよくね?
0212デフォルトの名無しさん
2006/02/06(月) 13:30:25自分では多用する方です。好みや慣れによりけりでしょうね。
Perlの変数展開に慣れてる人には違和感が少ないでしょうし。
>>210
確かに程度問題ですよね。
複雑になるようなら>211のように書き方を変えることもあります。
0213デフォルトの名無しさん
2006/02/06(月) 13:38:16+ はto_sの山を築かないか?
0214デフォルトの名無しさん
2006/02/06(月) 13:43:49多分、こんな感じか?
環境が手元にないからテスト出来んが。
def collect
a=[]
self.each{|i|a.push(yield(i))}
a
end
0215デフォルトの名無しさん
2006/02/06(月) 14:05:00文字列と足す時は暗黙の型変換すればよくね?
0216デフォルトの名無しさん
2006/02/06(月) 22:03:15良くない。
0217デフォルトの名無しさん
2006/02/07(火) 01:27:070218デフォルトの名無しさん
2006/02/07(火) 03:24:290220デフォルトの名無しさん
2006/02/07(火) 08:16:41ノ
0221デフォルトの名無しさん
2006/02/07(火) 08:32:13レシーバが「書式に与えるデータ」ではなく
「書式そのもの」を表すのが微妙。
ワンライナでたま〜に使う程度か
0222デフォルトの名無しさん
2006/02/07(火) 13:55:12たいていは sprintf だね。
0223221
2006/02/07(火) 14:25:01みたいな書き方って無いの?
個人的には「データを書式にそって並べる」って書きたい。
0224デフォルトの名無しさん
2006/02/07(火) 14:59:22下記のような書き方はありますね。
'%b %b' % [ 13, 10 ]
自分でメソッドを追加すれば下記のようにも。
class Array
def format( string )
string % self
end
end
[13, 10].format('%b %b')
0225デフォルトの名無しさん
2006/02/07(火) 15:13:05Array#pack と同じような方向性か。
0226デフォルトの名無しさん
2006/02/07(火) 16:45:14あってもいいかも。
0227デフォルトの名無しさん
2006/02/07(火) 17:04:19最近何でもこっちに書き過ぎっぽくね?
本スレがネタ不足に陥り気味な感じだと思うかも
0228デフォルトの名無しさん
2006/02/07(火) 17:12:38なんで無いのかよくわかんない。もしかしてすでにある?
["A", "B", "C"].hoge(puts %3%3%2)
CCB
>>227
「初心者が疑問に思うこと」ではあると思う
0229デフォルトの名無しさん
2006/02/07(火) 17:25:31Enumeratorみたいなやつ?
RubyにはEnumerableモジュールがあるけど
これは「導入先のクラスにeachが定義されていること」を前提に作られてる。
ブロック付きメソッド呼び出しが簡単に出来るRubyは
要素を取り出す部分を各クラス(のeach)に完全に任せられるようになったという事では。
0230デフォルトの名無しさん
2006/02/07(火) 17:28:55ブロックパラメータで処理する意識が強い Ruby だと、
行数に拘らなきゃ、無意識にそっちを使ってしまうな。
いや、んなものイラネとかいう話じゃなくてね。ただのチラシの裏。
0231230
2006/02/07(火) 17:29:440232デフォルトの名無しさん
2006/02/07(火) 18:00:49[["A","B","C"]].each{|arr| print arr[2],arr[2],arr[1]}
CCB
専門用語はよくわからんが、
配列に直接ブロックがくっつくことができるといろいろ便利そうだとは思った。
0233デフォルトの名無しさん
2006/02/07(火) 18:33:10['A', 'B', 'C'].values_at(2, 2, 1).each {|x| print x }
とかじゃね?
0234デフォルトの名無しさん
2006/02/07(火) 19:02:550235デフォルトの名無しさん
2006/02/07(火) 19:07:59"#{|04d|num} #{|-10s|name} : #{|s|data}"
あと、こんなのとかも欲しかったり。
"%{num} %{name} : %{data}" % { :name => "foo", :num => 123, :data => "bar", }
"%{|04d|num} %{|-10s|name} : %{|s|data}" % {
:name => "foo", :num => 123, :data => "bar",
}
0236デフォルトの名無しさん
2006/02/07(火) 19:32:280237デフォルトの名無しさん
2006/02/07(火) 19:40:550238235
2006/02/07(火) 20:06:56リテラルの中にまたリテラルを書くのがちょっと嫌かなあ。
0239デフォルトの名無しさん
2006/02/08(水) 00:37:580240デフォルトの名無しさん
2006/02/08(水) 04:24:07その場合はやっぱし
"%04d %-10s : %s"%[num, name, data] しかないだろ
おれには "#{|04d|num} #{|-10s|name} : #{|s|data}" より見やすく感じる
0241デフォルトの名無しさん
2006/02/08(水) 05:01:15"#{'%04d'%num} #{'%-10s'%name} : #{'%s'%data}"
この例に限っては>240の方が普通だけどね。
0242デフォルトの名無しさん
2006/02/08(水) 05:33:04じゃなくて
string%array
だと見辛いなあ
0243235
2006/02/08(水) 05:35:00引用符の中に引用符がある気持ち悪さと、
#{ } の展開の中でさらに String#% の展開が行われてるという煩わしさが嫌。
あと、 "%04d %-10s : %s"%[num, name, data] は、
見易さよりも変更時の対応付けのミスが気になっていて、
変数が多くなってくると変数の増減があった場合に
どの % がどの変数に対応しているかがワケワカになりそうで嫌。
0244デフォルトの名無しさん
2006/02/08(水) 07:22:530245デフォルトの名無しさん
2006/02/08(水) 08:14:570246デフォルトの名無しさん
2006/02/08(水) 08:53:28Best way to learn Ruby programming language?
http://answers.yahoo.com/question/index;_ylt=AuPhCegaYj1uxuEdXYVnQr5_zqIX?qid=1006020704969
0247デフォルトの名無しさん
2006/02/08(水) 12:27:230248デフォルトの名無しさん
2006/02/08(水) 14:23:560249デフォルトの名無しさん
2006/02/08(水) 14:25:590250デフォルトの名無しさん
2006/02/08(水) 16:00:130251デフォルトの名無しさん
2006/02/08(水) 16:15:54Ruby本体としては日本語と適当なUnicodeの何かが使えればそれでよくね? って感がなくもなく
0252デフォルトの名無しさん
2006/02/08(水) 22:05:41matz自身が未踏ソフトウエアの予算でI18Nを検討したはず。成果物を探したら?
0253デフォルトの名無しさん
2006/02/09(木) 05:32:12File.open("filename").each {|line| 処理}
この直後ファイルは自動的に閉じてくれますか?開きっぱなしですか?
0254デフォルトの名無しさん
2006/02/09(木) 06:13:490255デフォルトの名無しさん
2006/02/09(木) 06:21:440256253
2006/02/09(木) 09:17:54直にブロックをつけてprintしてみたら変なアドレスみたいなのが表示されちゃいました。
>>255
そういうやりかたもあったんですか。
繰り返しが終了した後には"filename"のファイルは閉じられているのですか?開かれたままですか?
0257デフォルトの名無しさん
2006/02/09(木) 09:47:59もしくは、
File.open("filename"{|fio| fio.each{|line| 処理 }}
とか。
254 が言ってるのは後者の方のような用法。
>256
閉じられるよ。
0258デフォルトの名無しさん
2006/02/09(木) 10:35:50回答どうもです!
参考までに聞きたいんですが、
file = File.open("filename")
file.each {|line| 処理1}
file.rewind
file.each {|line| 処理2}
みたいにやった場合どこで閉じられてどこで開かれるのでしょうか?(無意味なコードで恐縮ですが)
もしくはfileという変数に格納したかどうかで変わったりしますか?
0259デフォルトの名無しさん
2006/02/09(木) 10:55:37openをブロック付きで呼んだら
ブロックが終わるときに閉じられる。
openをブロック付けないで呼んでたら
file.closeかgcでfileが回収されたときにファイナライザで閉じられる。
0260デフォルトの名無しさん
2006/02/09(木) 11:03:450262デフォルトの脳無しさん
2006/02/09(木) 15:53:34はげしく期待します。
0263デフォルトの名無しさん
2006/02/09(木) 16:08:12今でもできてるわけだが。
0264デフォルトの名無しさん
2006/02/10(金) 07:19:51はげしく期待します。
読みにくいソースを書けると思うと興奮で眠れません
0265デフォルトの名無しさん
2006/02/10(金) 07:48:080266デフォルトの名無しさん
2006/02/10(金) 21:56:170267デフォルトの名無しさん
2006/02/11(土) 00:20:15コピー元のファイルが Read only だと更新時刻を合わせるときにアクセス違反になってしまいます。
更新時刻を(出来れば属性も)維持したいのですが、簡単に解決できる方法はありますか?
エラーメッセージ
C:/Ruby/lib/ruby/1.8/fileutils.rb:503:in `initialize': Permission denied - def.txt (Errno::EACCES)
環境
Windows2000, ruby 1.8.2 (2004-12-25) [i386-mswin32]
コード
require 'fileutils'
s='abc.txt' # read only file
d='def.txt'
FileUtils.cp s,d,:preserve=>true
0268184
2006/02/11(土) 02:41:39どうやらcygwinのtk8.4がよくないようで、Activetcl1.8.4ならOKでした。
Ruby 自体は cygwinのでもnativeなバイナリのでも問題ないようです。
お返事おそくなりましたが、試してもらってありがとうです。
0269ヽ(´ー`)ノ ◆.ogCuANUcE
2006/02/11(土) 13:47:26outline じゃないが、folding-mode とかはどうよ。
folding-mode-marks-alist を適当な値に設定すれば、多分便利になると思う。
0270デフォルトの名無しさん
2006/02/11(土) 14:29:36xcopy をキックしてみる。
system("echo F | xcopy /Q /Y /X /K #{s} #{d}")
または、コピー前にread only を落として後で戻すとか。
st = File.stat(s)
FileUtils.chmod(0600, s)
begin
FileUtils.cp s,d,:preserve=>true
ensure
FileUtils.chmod(st.mode, s)
FileUtils.chmod(st.mode, d)
end
なんかいまいちだなぁ。
0271267
2006/02/11(土) 19:38:28回答ありがとうございます。
実は私もはじめ xcopy を呼んでいたのですが、2000個くらいコピーすることもあるので
なんとなく効率が悪いような気がして、他に良い方法がないか探しています。
後者の方法を参考にさせて頂きますが、送り元ファイルを弄りたくないのでこうしてみました。
st=File.stat s
FileUtils.cp s,d
FileUtils.chmod(0600, d)
File.utime st.atime,st.mtime,d
FileUtils.chmod(st.mode, d)
これでしばらく運用してみます。ありがとうございました。
0272デフォルトの名無しさん
2006/02/11(土) 19:47:260273デフォルトの名無しさん
2006/02/12(日) 12:59:48といってもまだ確かめてないが。
0274デフォルトの名無しさん
2006/02/13(月) 16:25:59まあ、疑問に思えばruby-devへ。
0275デフォルトの名無しさん
2006/02/13(月) 17:09:29UNIX や Cygwin と同じに挙動になるべき。
0276デフォルトの名無しさん
2006/02/13(月) 18:21:04「Windowsはそういうものだからそれでいい」という解だってありえるでしょ。
0277デフォルトの名無しさん
2006/02/13(月) 18:27:51Windows はそういうものならばそうリファレンスマニュアルを変更すべき。
0278デフォルトの名無しさん
2006/02/13(月) 18:38:570279デフォルトの名無しさん
2006/02/13(月) 18:55:19「システムコール通りの動作」を想定するのは不可能だと思う。
FileUtils のどのメソッドがどこでどのシステムコールを利用しているかなんて
ユーザからはわからないわけだし、
FileUtils は、システムコールレベルの挙動の差異をできる限り隠蔽しているべきだと思う。
0280デフォルトの名無しさん
2006/02/13(月) 19:13:25スクリプト言語の目的の一部には可用性ってのも含まれるだろうしな
0281デフォルトの名無しさん
2006/02/13(月) 19:14:390282デフォルトの名無しさん
2006/02/13(月) 19:41:190283デフォルトの名無しさん
2006/02/13(月) 20:31:450284デフォルトの名無しさん
2006/02/13(月) 20:38:460285デフォルトの名無しさん
2006/02/13(月) 22:51:02ttp://www.meadowy.org/meadow/ticket/97
ソース眺めると Windows のときは SetFileAttributes で read only を落としている。
ttps://www.codeblog.org/gonzui/markup/emacs-21.4/src/fileio.c?q=path%3Aemacs-21.4%2Fsrc%2Ffileio.c+Fcopy_file#l2369
0286デフォルトの名無しさん
2006/02/14(火) 03:50:15>folding-mode とかはどうよ。
thx
亀レス失礼。
結局、 hideshow.elを利用するところで落ち着いた。
http://www.bookshelf.jp/pukiwiki/pukiwiki.php?cmd=read&page=Elisp%2Fhideshow.el
なんでoutline-minorがruby-majorで利用できなかったのか謎。
ついでにhideshow.elでも
(setq hs-minor-mode-prefix "¥C-c¥C-d")
って設定したところで実際に反映されない。
0287デフォルトの名無しさん
2006/02/14(火) 09:56:39rubyでクリップボードを利用したくてwin32-clipboard-0[1].3.1.zipを
落としたんだけど展開したあとどこに置いたらいいの?
どこに置いても↓これ・・・
a.rb:1:in 'require': no such file to load -- win32/clipboard (LoadError)
環境はWinXP,ruby-1.8.4-i386-mswin32です
0288デフォルトの名無しさん
2006/02/14(火) 10:27:12とりあえず、require "c:\full\path\to\win32\clipboard" とでもすれば?
さらにヒントとしては ruby -e "p $:"
0289デフォルトの名無しさん
2006/02/14(火) 10:29:01Cコンパイラある?
あるなら、ruby extconf.rb して (n)make
それとも、バイナリもその名前なのかなあ
0290287
2006/02/14(火) 11:03:05>>288
require "c:\full\path\to\win32\clipboard"にしてみましたが同じような
errorがでました。
ruby -e "p $:" の結果は
C:/Ruby/lib/ruby/site_ruby/1.8
C:/Ruby/lib/ruby/site_ruby/1.8/i386-msvcrt
C:/Ruby/lib/ruby/site_ruby
C:/Ruby/lib/ruby/1.8
C:\Ruby\lib\ruby\1.8/i386-mswin32
・・・↑ここかな?
>>289
nmakeするとエラーになるんでなさそうです・・・すみません
0291デフォルトの名無しさん
2006/02/14(火) 11:27:29個々のファイルのやつはコンパイラがないとインストールできないよ。
インストーラタイプ(win32utils-installer)を実行すれば
Cコンパイラを持ってなくても適当にコンパイルされてインストールされる。
ttp://rubyforge.org/frs/?group_id=85&release_id=1918
…って書いてあるけど試してないからできなくても怒っちゃイヤン
あとクリップボードの以外にも上記のセットが色々入るので留意のこと
0293デフォルトの名無しさん
2006/02/14(火) 11:44:270294デフォルトの名無しさん
2006/02/14(火) 11:48:440295287
2006/02/14(火) 11:59:26できました!!
カスタムでclipboardだけインストール可能で、
C:\Ruby\lib\ruby\site_ruby\1.8\i386-msvcrt\win32\
にclipboard.soが作成されました。
自作プログラムも一応動きました。
require "win32/clipboard"
include Win32
text = Clipboard.data
text = text.gsub(" " , "")
Clipboard.empty
Clipboard.data = text
ありがとうございました。
0296デフォルトの名無しさん
2006/02/16(木) 02:44:25RAAでLibrary/Cryptgraphを検索すると、プロジェクトが20もあり
どれを使うのが適切なのかよく分かりません。
これがオススメ!というものはありますか?
ちなみに暗号化するのはUTF8のテキスト、というかiniファイルで
できれば pure ruby のライブラリが望ましいです。
0297デフォルトの名無しさん
2006/02/16(木) 02:57:36何を何から守るために暗号化するのか、どのくらいの強度が必要かとか、
0298296
2006/02/16(木) 05:53:58試しに導入して Blowfish + CBC を使ってみたのですが
なぜかCBCが3回に2回ぐらいエラーを吐きます。
crypter = Crypt::Blowfish.new('testkey8')
crypter.encrypt_file("test.txt", "test.txt.crypt")
crypter.decrypt_file("test.txt.crypt", "test.txt.decrypt")
CBCを使わずにencrypt_blockを使えば正常に復号できるのですが……
何か勘違いをしているのでしょうか?(バージョンはmswin32の1.8.4です)
>>297
絶対に見られないように暗号化したいわけではなくて
簡単に見られないようにしたい程度なので
強度は特に必要ないです。
ROT13/47にキーが付いたようなものがベスト。
0299デフォルトの名無しさん
2006/02/16(木) 13:12:41そんなわけわからんもんは自分でつくれ。
0300デフォルトの名無しさん
2006/02/16(木) 14:32:58自分で作る暗号プログラム
― あなたのプライバシーを守るために ―
http://www.hyuki.com/cs/
0301デフォルトの名無しさん
2006/02/16(木) 14:36:210302デフォルトの名無しさん
2006/02/16(木) 15:22:42KSの正式な通称が何かしらんけどEUC-KRやKSC5601はできるみたいよ
0304デフォルトの名無しさん
2006/02/16(木) 16:11:560305デフォルトの名無しさん
2006/02/16(木) 17:32:420306デフォルトの名無しさん
2006/02/17(金) 04:00:49irb(main):001:0> 1
=> 1
irb(main):002:0> 2
=> 2
irb(main):003:0> 3
=> 3
irb(main):004:0>
と実行した時、一つ前の結果(3)、二つ前の結果(2)・・・を参照することは出来るでしょうか?
また、mysrc.rbを実行して実行が終了したらメモリの内容をそのままにirbに制御を移すことは出来るでしょうか?
0307デフォルトの名無しさん
2006/02/17(金) 08:45:55OpenSSL::Cipher::Cipher
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=OpenSSL%3A%3ACipher%3A%3ACipher
>>306
irb が定義している変数を使うとできる。
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=irb#a.a5.b7.a5.b9.a5.c6.a5.e0.ca.d1.bf.f4
> そのままにirbに制御を移す
irb(main):001:0> eval(IO.read('mysrc.rb'))
などとやってみてはどうでしょうか。
0308デフォルトの名無しさん
2006/02/17(金) 19:31:38puts "foo"
> irb -r foo
foo
irb(main):001:0>
0309デフォルトの名無しさん
2006/02/18(土) 00:20:19puts "socket"
> irb -r socket
irb(main):001:0>
0310デフォルトの名無しさん
2006/02/18(土) 01:11:41文字列の先頭を常に大文字で書こうとするのってどのくらい変?
0311デフォルトの名無しさん
2006/02/18(土) 01:15:25Omotiくらい変。
0312デフォルトの名無しさん
2006/02/18(土) 01:20:20そばつゆだと思ったらコアップガラナだった
0313デフォルトの名無しさん
2006/02/18(土) 01:20:59Omotiが変って言う奴くらい変。
0314デフォルトの名無しさん
2006/02/18(土) 01:28:15大文字小文字がちょっとでも違ったら読めないんだし。
ハッシュ使うたびにきちんとキーの語句確かめろってのはまあそうなんだけどさ。
クラス名やメソッド名の問題と一緒だろと言われればそれもまあそうなんだけど。
なんでもアンダースコア区分の小文字派な俺。
単語ごとにキャピタライズして書くのは前置詞の扱い悩むので苦手。
Ruby的にはどう書くのが好ましいってことになってるん?
0315デフォルトの名無しさん
2006/02/18(土) 01:57:530316デフォルトの名無しさん
2006/02/18(土) 01:58:430317デフォルトの名無しさん
2006/02/18(土) 02:44:42特定の作法はRubyでは書きにくいから使わなくなっておのずと一本化、ってのはRubyではあんまないと思う
変に癖ついちゃうだけなんじゃないかな
0318デフォルトの名無しさん
2006/02/18(土) 05:37:04ネット上に散見するRubyのコードに引きずられるぐらいかな
公式な推奨記述法ってあるの?
推奨(強制)記述法を普通はなんて言うんだっけ、カタカナで何かあった気がするけど
>>312
北海道民か?
http://shibuya.cool.ne.jp/guarana/coup.htm
0319デフォルトの名無しさん
2006/02/18(土) 08:42:540320デフォルトの名無しさん
2006/02/18(土) 16:21:340321デフォルトの名無しさん
2006/02/18(土) 16:33:330322デフォルトの名無しさん
2006/02/18(土) 18:47:04def shuffle(arr)とか
def decorate(s) "\""+s+"\"" endといった
基本的なArray, Stringといったクラスのユーティリティメソッドを自分で書いたとき
普通どこに定義するもんなんでしょうか。
MyNameモジュールなどにまとめて記述するものでしょうか。
0323デフォルトの名無しさん
2006/02/18(土) 19:02:30ハッシュのキーとして使うなら、文字列ではなくてシンボルを使ったらどうでしょう?
hash = { :one=>1, :two=>2, }
0324デフォルトの名無しさん
2006/02/18(土) 19:21:27断る!
0325デフォルトの名無しさん
2006/02/18(土) 19:32:430326デフォルトの名無しさん
2006/02/18(土) 20:57:07ModuleName
CONSTANT_NAME
variable_or_method_name
って感じ
0327デフォルトの名無しさん
2006/02/18(土) 21:04:310328デフォルトの名無しさん
2006/02/18(土) 21:13:00それだ!
なんでこんな言葉忘れてるんだ俺は orz
0329デフォルトの名無しさん
2006/02/18(土) 23:38:100330デフォルトの名無しさん
2006/02/19(日) 00:04:02ttp://www.google.com/search?num=50&lr=lang_ja&ie=utf8&q=%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%80%E3%83%BC%E3%83%88
0331デフォルトの名無しさん
2006/02/19(日) 00:15:45普通、こうすると思うが……
ttp://www.google.co.jp/search?hl=ja&q=%22coding+standard%22&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
0332デフォルトの名無しさん
2006/02/19(日) 01:01:170333デフォルトの名無しさん
2006/02/19(日) 09:27:51論点ずれてるかもしれんが。
0334デフォルトの名無しさん
2006/02/19(日) 11:50:54>>329をよく読むと意図がわかるかもしれんがどちらにせよ実りはない
0335デフォルトの名無しさん
2006/02/19(日) 17:26:06num = 0
while num < 3
TkButton.new {
text 'button'
command { p num }
}.pack
num += 1
end
Tk.mainloop
上記のプログラムだとどのボタンを押しても「3」が出力されてしまいます。
それぞれ「0」「1」「2」を出力するようにするにはどう書けばいいでしょうか?
0336デフォルトの名無しさん
2006/02/19(日) 17:57:38num = 0
while num < 3
TkButton.new {
text "button#{num}"
command { p text }
}.pack
num += 1
end
Tk.mainloop
とすると、ボタンに応じた内容が出力されたよ。
numのスコープの問題だと推測する。
0337デフォルトの名無しさん
2006/02/19(日) 18:05:143.times do |num|
end
でも良い。
0338デフォルトの名無しさん
2006/02/19(日) 18:39:490339335
2006/02/19(日) 18:41:12実際にはtext項目に別の文字列を指定したいし、
commandももう少し複雑だし、動的にボタンを作りたいので
そこだけ関数形式にしようと思います。
ありがとね。
0340335
2006/02/19(日) 18:43:12def b(x)
TkButton.new {
text 'button'
command { p x }
}.pack
end
num = 0
while num < 3
b(num)
num += 1
end
Tk.mainloop
一応解決策を張っておきます。
0341デフォルトの名無しさん
2006/02/19(日) 20:06:50require 'tk'
num = 0
while num < 3
TkButton.new {
text 'button'
num2 = num
command { p num2 }
}.pack
num += 1
end
Tk.mainloop
つうか
>numのスコープの問題
というRubyのスコープに問題があるかのような書き方すな。
他の言語でも大抵同じ動作だ。
0343デフォルトの名無しさん
2006/02/21(火) 19:05:06うまい方法は、無いでしょうか?
% %w[ a b c ].each { |x|
<%= x %>/
% }
だと、最後に'/'がついてしまいますし、
% a = %w[ a b c ].collect { |x|
% x
% }.join( '/' )
<%= a %>
だと、美しくありません(たとえば、"a.html/b.html/c.html" に変えようと
すると文字列の足し算や"#{x}"が必要になる)。
0344デフォルトの名無しさん
2006/02/21(火) 19:13:270345デフォルトの名無しさん
2006/02/21(火) 21:34:29##!! forのサンプル
for i in 0..10
puts i
##!! timesのサンプル
3.times{|i}
puts i
}
##!! end
とかやって
カーソルがある##!!ではさまれた領域を切り出して実行するエディタマクロ作ったら
サンプルのファイル散らばらなくなってめちゃ快適。
頭良すぎね?
0346デフォルトの名無しさん
2006/02/21(火) 21:46:08天才!!!!!!!!!!!!!!!!!!!!!!!!!!
0347デフォルトの名無しさん
2006/02/21(火) 22:06:28神!!!!!!!!!!!!!!!!!!!!!!!!!!
名前つけようぜ。
「いい感じに」
「Rubyスクリプトを」
「部分実行する」
の頭文字を取って
“irb”
というのはどうだろう
0348デフォルトの名無しさん
2006/02/21(火) 22:13:59それいいな。
0349デフォルトの名無しさん
2006/02/21(火) 22:27:420350デフォルトの名無しさん
2006/02/21(火) 22:39:57KWSK
0351デフォルトの名無しさん
2006/02/21(火) 22:43:42$ for str in 1 2 3 4 5
> do
> echo $str
> done
1
2
3
4
5
$ ← ここでCtrl-P
$ for str in 1 2 3 4 5; do echo $str; done
irb:
irb:0> [1,2,3,4,5].each do |str|
irb:1* puts str
irb:1> end
1
2
3
4
5
=> [1, 2, 3, 4, 5]
irb:0> ← ここでCtrl-P
irb:0> end
このへんがうんこ
0352デフォルトの名無しさん
2006/02/21(火) 22:52:15同意
0353デフォルトの名無しさん
2006/02/22(水) 00:25:070354デフォルトの名無しさん
2006/02/22(水) 00:41:55zshはreadline使ってないよ。独自に実装してる
0355デフォルトの名無しさん
2006/02/22(水) 00:46:34いや、だからどうやってるのかな?と。
0356デフォルトの名無しさん
2006/02/22(水) 01:11:16scroll = TkScrollbar.new {
command proc { |arg| listbox.yview *arg }
pack('side' => 'right', 'fill' => 'y')
}
#listbox.configure('yscrollcommand' => proc { |arg| scroll.set *arg })
listbox.yscrollcommand(proc { |arg| scroll.set *arg })
で
warning: multiple values for a block parameter (2 for 1)
from c:/usr/bin/ruby/lib/ruby/1.8/tk.rb:1089
という警告がでまくるんですがどう書くのが正しいんでしょうか?
0357デフォルトの名無しさん
2006/02/22(水) 01:55:19|*arg|
0358デフォルトの名無しさん
2006/02/22(水) 03:34:50を ruby でワンライナで書くとどうなんの?
input.txt は一行に空白で区切られた 2つの数が入ってるとして。
0359デフォルトの名無しさん
2006/02/22(水) 03:48:080360デフォルトの名無しさん
2006/02/22(水) 04:13:52-a autosplit mode with -n or -p (splits $_ into $F)
-e 'command' one line of script. Several -e's allowed. Omit [programfile]
-Fpattern split() pattern for autosplit (-a)
-l enable line ending processing
-n assume 'while gets(); ... end' loop around your script
-p assume loop like -n but print line also like sed
[tips] $ cat a.tmp
1 2
3 4
5 6
7 8
9 10
11 12
[tips] $ ruby -lane 'print $F[0].to_i + $F[1].to_i' a.tmp
3
7
11
15
19
23
[tips] $
0361デフォルトの名無しさん
2006/02/22(水) 17:52:49カレントディレクトリを別の所に指定して編集中スクリプトを実行するにはどうすればいいの。
0362デフォルトの名無しさん
2006/02/22(水) 20:25:51listbox.yscrollbar(TkScrollbar.new.pack(:side=>:right, :fill=>:y))
0363デフォルトの名無しさん
2006/02/22(水) 21:06:030364デフォルトの名無しさん
2006/02/22(水) 21:07:260365デフォルトの名無しさん
2006/02/22(水) 21:15:020366デフォルトの名無しさん
2006/02/23(木) 00:51:570367デフォルトの名無しさん
2006/02/23(木) 04:13:110368デフォルトの名無しさん
2006/02/23(木) 09:43:300369デフォルトの名無しさん
2006/02/23(木) 10:21:010370デフォルトの名無しさん
2006/02/23(木) 10:22:330371デフォルトの名無しさん
2006/02/23(木) 12:01:57文字化けが原因でundefined local variableうんぬんで起こられちゃう。
調べてみるとBOM付きUTFって形式で保存してあったみたいで、
これをUTF-8Nにしたら通ったわけですが、Rubyって
こういうもんなんですか?
0372デフォルトの名無しさん
2006/02/23(木) 12:08:000373デフォルトの名無しさん
2006/02/23(木) 12:14:08UTF-8(って何)だとエディタが認識しやすいという理由だけでついてるようなもん。
そのエディタ以外でもその文書を使いまわそうと思ったなら、BOMはつけてはいけない。
んだがWindowsのメモ帳でつくんだよなああああああ
0374デフォルトの名無しさん
2006/02/23(木) 12:18:31どうもありがとう。すっきりしました。
0375デフォルトの名無しさん
2006/02/23(木) 12:36:20そのくせBOMるとvbsがエラーを吐くんだよな
0376デフォルトの名無しさん
2006/02/23(木) 12:45:520377デフォルトの名無しさん
2006/02/23(木) 13:21:51久々に笑った
0378デフォルトの名無しさん
2006/02/23(木) 14:36:470379デフォルトの名無しさん
2006/02/23(木) 14:43:11UTF-8とかを理解してるかどうかは知らん。
0380デフォルトの名無しさん
2006/02/23(木) 18:19:28どっちか選ぶとしたら
やはりrubyの方がおすすめでしょうか?
0381デフォルトの名無しさん
2006/02/23(木) 18:21:570382デフォルトの名無しさん
2006/02/23(木) 18:21:59出来ることに大差はないんで
どっちか選んでしっかり覚えとけ。
0383デフォルトの名無しさん
2006/02/23(木) 18:29:320384デフォルトの名無しさん
2006/02/23(木) 19:01:340385デフォルトの名無しさん
2006/02/23(木) 19:02:49みなさんはRubyで何を作ってるんですか?
Rails以外の使い道が知りたいです。
0386デフォルトの名無しさん
2006/02/23(木) 19:10:400387デフォルトの名無しさん
2006/02/23(木) 19:34:51日本人開発の内輪ローカル言語Rubyと
全世界のコミュニティと企業に支持され発展し続けるPythonでは
将来性の点で勝負にならん。何も迷うことはない。
0388デフォルトの名無しさん
2006/02/23(木) 19:37:37ありがとうございます。
0389デフォルトの名無しさん
2006/02/23(木) 19:48:17マジレスすると他の言語じゃなくてこの言語だからできるってのは
今どきのスクリプト言語なら基本的にはない。それは Perl だろうが
Ruby だろうが Python だろうが同じこと。ただ使いたいライブラリが
揃ってるとかアプリにすごく魅力的なものがあるとか、割と日本語の
資料が揃ってるとか、あと書きやすいとか読みやすいとかそういう
理由で選ばれる。個人で使う分には。
仕事の場合は前任者が Perl だったから Perl とか、そんな程度で決まる。
まれに言語のために仕事を変える人が出てくる。そんな感じ。
あと、Ruby 使ってるからって何かを作ってるとは限らないよ。
0390デフォルトの名無しさん
2006/02/23(木) 20:02:12Lispよりは書籍があるのでRubyにした。
Perlよりは…Perlの勉強するとモジュールのへんで眠くなるのでPerl以外を選んだ。
Linuxサーバとか常用してないとスタートダッシュする気起きないだろうなとも思う。
0391デフォルトの名無しさん
2006/02/23(木) 20:02:340392デフォルトの名無しさん
2006/02/23(木) 20:23:130393デフォルトの名無しさん
2006/02/23(木) 21:30:46継承クラスでは使えない??
スーパークラスでは"@ooo"とかでインスタンス変数を使いたいとするじゃん。
んで、initialize関数で初期化したとするよね。
で、継承クラスで、新たにさらに別のクラス変数を初期化するために
initialize内で"@ppp"を初期化したとする。(ここのなかでは@oooは初期化しない)
このとき、継承クラス内だとinitialize関数の再定義を行うことになっちゃって、
スーパークラスで初期化した"@ooo"が使えなくなっちゃう訳で。
スーパークラスで初期化するだけで継承クラスの中でも
同様に初期化された同じクラス変数が使いたい場合、
スマートなRubyプログラマならどう解決するんだろう?
初心者かつ、OOP自体不慣れで悪いが、エスパー回答キボンヌ。
0394デフォルトの名無しさん
2006/02/23(木) 21:35:22super
ちなみに、「クラス変数」と「インスタンス変数」は別物。
0395デフォルトの名無しさん
2006/02/23(木) 21:39:22ここでは
{"クラス変数"=>"インスタンス変数"}
で読み替えてくださいです。まじゴメン。。
0396デフォルトの名無しさん
2006/02/23(木) 21:54:41なるほど、スーパークラスの同名のメソッド呼び出しするsuper使えばいいのか。
…ふむふむ。ということはー。
class A_super
def initialize
@value = "test\n"
end
attr_accessor :value
end
class B_inheritance < A_super
def initialize
@arr = []
end
attr_accessor :arr
end
……どこでsuper使うんだろ…orz
やっぱり分からん、再び教えてたもれ。
実はここちょっとリファレンスとか読んでみてもわかんなかったんです。
0397デフォルトの名無しさん
2006/02/23(木) 21:56:16def initialize
super
@arr = []
end
attr_accessor :arr
end
とか。
0398デフォルトの名無しさん
2006/02/23(木) 22:08:50でもお陰で解決したよ。ありがとう。
0399デフォルトの名無しさん
2006/02/23(木) 23:54:360400デフォルトの名無しさん
2006/02/24(金) 00:26:210401デフォルトの名無しさん
2006/02/24(金) 01:08:31というか、そんなスレなんじゃないの?
0402デフォルトの名無しさん
2006/02/24(金) 10:07:030403デフォルトの名無しさん
2006/02/24(金) 15:22:38http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Dir
ディレクトリ以外を列挙したいんですが。
0404デフォルトの名無しさん
2006/02/24(金) 15:25:43> このフラグを指定することでマッチの挙動を変更することができます。
0405デフォルトの名無しさん
2006/02/24(金) 15:44:34entries に FileTest.directory? で reject すればいいんじゃない?
0406デフォルトの名無しさん
2006/02/24(金) 15:55:49すいません見落としてました・・・
ただそれ以前に
Dir.glob("c:\\*.*").each{|f|
puts f
}
が動きません・・・
0407デフォルトの名無しさん
2006/02/24(金) 15:58:46そういう時は "c:/*.*" にしてみるんだ!
ところで、拡張子つきのファイルしかいらないんじゃなければ、
"c:/*" の方がいいよ。
0408デフォルトの名無しさん
2006/02/24(金) 16:16:27rescueは Interupt が捕捉出来ない仕様になってて、
TimeoutError は Interupt のサブクラスなのね。
補足するにはどうしたらいいの?教えてエライ人。
0409408
2006/02/24(金) 16:42:59error_typeを省略せずに書けば委員ですね。
0410デフォルトの名無しさん
2006/02/24(金) 19:20:02例を見ると依存してなくないですか?
0411デフォルトの名無しさん
2006/02/24(金) 19:44:330412デフォルトの名無しさん
2006/02/25(土) 00:02:14一応調べてみましたが、 [ruby-dev:4327] から [ruby-dev:4599] で eEgG が導入され、
メジャーな環境ではそこそこ互換性があるけど、いまひとつ、って感じでしょうかね。
0413デフォルトの名無しさん
2006/02/25(土) 12:23:320414デフォルトの名無しさん
2006/02/25(土) 18:36:450415デフォルトの名無しさん
2006/02/25(土) 18:41:290416デフォルトの名無しさん
2006/02/25(土) 20:21:250417デフォルトの名無しさん
2006/02/25(土) 20:31:52つ RAA - Library / Graphics
0418デフォルトの名無しさん
2006/02/26(日) 00:25:48できたらPureRubyで画像のリサイズしたいんですが…
0419デフォルトの名無しさん
2006/02/26(日) 00:29:210420デフォルトの名無しさん
2006/02/26(日) 00:41:03PNG なら PureImage があるけど。
http://cappuccino.jp/keisuken/ruby/pureimage/
0421デフォルトの名無しさん
2006/02/26(日) 00:52:22PureRubyの画像掲示板が設置できるじゃん。
それって、なんかいいよなって思ったの。
0422デフォルトの名無しさん
2006/02/26(日) 01:07:010423デフォルトの名無しさん
2006/02/26(日) 01:08:230424デフォルトの名無しさん
2006/02/26(日) 01:50:29WindowsのBMP(DIB)なら何となくコードのイメージは湧く。
作れ言われたら2日くらい掛かりそうだがby毛の生えた素人orz
0425デフォルトの名無しさん
2006/02/26(日) 02:17:260426デフォルトの名無しさん
2006/02/26(日) 02:18:40PureRuby なの?
0427デフォルトの名無しさん
2006/02/26(日) 02:41:29どうなんだろ
0428デフォルトの名無しさん
2006/02/26(日) 03:03:07http://rmagick.rubyforge.org/
0429デフォルトの名無しさん
2006/02/26(日) 03:03:490430デフォルトの名無しさん
2006/02/26(日) 03:09:15Bitmapとかいじり放題なのかね。
0431デフォルトの名無しさん
2006/02/26(日) 06:01:330432デフォルトの名無しさん
2006/02/26(日) 06:39:55http://rmagick.rubyforge.org/
0433デフォルトの名無しさん
2006/02/26(日) 09:09:130434デフォルトの名無しさん
2006/02/26(日) 10:00:25そもそもの処理が重いってことだろうからな
0435デフォルトの名無しさん
2006/02/26(日) 13:40:43ttp://rmagick.rubyforge.org/install-faq.html#win
とりあえず3回は嫁。
0436デフォルトの名無しさん
2006/02/26(日) 19:40:210437デフォルトの名無しさん
2006/02/26(日) 21:12:13http://rmatick.rubyforge.org/
0438デフォルトの名無しさん
2006/02/27(月) 00:21:52なるほどね、RubyからImageMagickマニュピレートするのか。
英語ドキュメンテーション読むのめんどいな。明日にしよっと。�dクシ。
0439デフォルトの名無しさん
2006/02/27(月) 00:39:07入ってなかったら入れれば良いんだし。
日記は自分のブログでやるなり、それ系のスレに移ってくれ。
0440デフォルトの名無しさん
2006/02/27(月) 00:49:080441デフォルトの名無しさん
2006/02/27(月) 19:50:260442デフォルトの名無しさん
2006/02/28(火) 00:24:10どうすればいいんですか?
0443デフォルトの名無しさん
2006/02/28(火) 00:56:300444デフォルトの名無しさん
2006/02/28(火) 13:49:350445デフォルトの名無しさん
2006/03/01(水) 00:28:370446デフォルトの名無しさん
2006/03/01(水) 00:41:06UNIX like な環境なら dd を system か何かで呼べば良いだろうけど、他でも
動くように Ruby で書こうとしたら、素直にファイルを開いて書き込むしか
無いんじゃないか。
0447デフォルトの名無しさん
2006/03/01(水) 01:35:21File::open("hoge", "w") { |f| f.truncate(5_000_000_000) }
0448デフォルトの名無しさん
2006/03/01(水) 01:52:53sparse fileじゃだめ?
0449デフォルトの名無しさん
2006/03/01(水) 05:54:13-----------------
include Amrita
tmpl = TemplateText.new <<END
<table>
<tr id=tr1>
<td id=td1></td>
<td id=td2></td>
</tr>
</table>
END
data = {
:tr1 => [ {:td1=>"1_1", :td2=>"1_2"}, {:td1=>"2_1", :td2=>"2_2"} ]
}
tmpl.expand(STDOUT, data)
-----------------
こんな時に<tr>の属性を条件付で変えていきたい場合は
どうすりゃいいの?
:trに配列を連想してしまってるのでAmrita::aメソッドが使えないよね?
0450デフォルトの名無しさん
2006/03/01(水) 12:12:100451デフォルトの名無しさん
2006/03/01(水) 12:14:57FileUtils::rm_r, FileUtils::rm_rf あたりはどう?
0452デフォルトの名無しさん
2006/03/01(水) 17:19:20Pathname#unlink はどう?
0453デフォルトの名無しさん
2006/03/01(水) 17:33:26x = gets.to_i
puts "y = "
y = gets.to_i
puts "x + y = ", x + y
このようなコードを実行すると、
5 (←入力数値)
5 (←入力数値)
x =
y =
x + y =
10
といった具合に、文字列の出力するタイミングが意図したものにならないんですが・・・。
どうすればいいのでしょうか。
0454デフォルトの名無しさん
2006/03/01(水) 17:37:370455デフォルトの名無しさん
2006/03/01(水) 17:46:00引数ごとに末尾に改行を追加する。したがってこういうケースでは print の方が適切
・getsの前に puts の結果を確実に出力させたければ、 $stdout.flush を差し込むとよい
0456デフォルトの名無しさん
2006/03/01(水) 18:25:31回答ありがとうございます。うまく動いてくれましたー。
0457デフォルトの名無しさん
2006/03/02(木) 00:13:320458デフォルトの名無しさん
2006/03/02(木) 16:45:150459デフォルトの名無しさん
2006/03/02(木) 17:04:370460デフォルトの名無しさん
2006/03/02(木) 17:07:11組み込み関数→catch、throw、raise
0461デフォルトの名無しさん
2006/03/02(木) 17:35:37インタプリタのオーバーヘッド全体から見るとそう重くないのかな
0462デフォルトの名無しさん
2006/03/02(木) 18:09:04そもそもcatch、throwに至っては
リファレンスに多重ループ脱出の例として載ってる程。
多重ループ脱出だけが目的なら基本的にはcatchかな。
0463デフォルトの名無しさん
2006/03/02(木) 19:22:20Ruby の catch, throw は例外処理じゃないぞ
0464デフォルトの名無しさん
2006/03/02(木) 22:35:40++i ができないことに、今日きづきました。
i += 1 と書くの??
++iができないのはどういう宗教的理由からなのん?
0465デフォルトの名無しさん
2006/03/02(木) 22:37:03散々がいしゅつ
++はやらん
0466デフォルトの名無しさん
2006/03/03(金) 00:27:040467デフォルトの名無しさん
2006/03/03(金) 00:30:480468デフォルトの名無しさん
2006/03/03(金) 00:31:420469デフォルトの名無しさん
2006/03/03(金) 00:32:04ループするならRangeクラスとか。 (0..10) のやつ。あれこんな書き方だっけ?
0470デフォルトの名無しさん
2006/03/03(金) 12:11:24RubyEval(const char *scripts, RubyResult *result)
一個ですむようなの。
0471デフォルトの名無しさん
2006/03/03(金) 14:09:09http://takahr.dhis.portside.net/cgi-bin/rwiki.cgi?cmd=edit;name=%C1%C8%A4%DF%B9%FE%A4%DFRuby
0472デフォルトの名無しさん
2006/03/03(金) 15:28:02とかいっちゃ駄目ですか?
0473デフォルトの名無しさん
2006/03/03(金) 15:37:59駄目ではないのですが、言い出しっぺの法則という言葉を御存知でしょうか?
0474デフォルトの名無しさん
2006/03/03(金) 17:52:440475デフォルトの名無しさん
2006/03/03(金) 18:14:38「問題を発見する人 と 問題を解決する人 は 別の場合がほとんど」
って書いてあったぞ。
個人的にも、言いだしっぺの法則はあんまりうまく機能しないと思う。
0476デフォルトの名無しさん
2006/03/03(金) 18:23:090477デフォルトの名無しさん
2006/03/03(金) 18:27:550478デフォルトの名無しさん
2006/03/03(金) 18:33:350479デフォルトの名無しさん
2006/03/03(金) 18:43:43「言い出しっぺの法則」って、言われた人間が言った
人間に及ばないと思っている場合は「できねーやつは
黙ってろ」にしか聞こえないんだよな
まぁ実際黙ってろの意味で使う人もいるんだろうけど
2ch語みたいなもんかねぇ
身内で使ってる分には微笑ましいって感じ
0480デフォルトの名無しさん
2006/03/03(金) 18:57:400481デフォルトの名無しさん
2006/03/03(金) 19:25:53これが、まず無い。
0482デフォルトの名無しさん
2006/03/04(土) 08:36:24風博士に組込まれたとかなんとか噂を聞いたけど。
0483デフォルトの名無しさん
2006/03/04(土) 11:13:16RGSS の方がまだしもメジャーという気がするなあ。
0484デフォルトの名無しさん
2006/03/04(土) 13:12:28Firefox で使えるようになるらしい。
http://itpro.nikkeibp.co.jp/article/NEWS/20060302/231610/
0485デフォルトの名無しさん
2006/03/04(土) 13:14:090486デフォルトの名無しさん
2006/03/04(土) 23:10:42Cの凄いマクロを見ているような印象を受けたんだけど
0487デフォルトの名無しさん
2006/03/05(日) 00:39:20つ [msvcrt-ruby18.dll]
え? 仰せの通りDLLですが何か? w
0488デフォルトの名無しさん
2006/03/05(日) 00:46:550489デフォルトの名無しさん
2006/03/05(日) 01:05:180490デフォルトの名無しさん
2006/03/05(日) 01:07:23そう、それです。
どっかのサイトで使えるっぽい記述見たのですが、
ライブラリらしきものも見当たらないので…。
0491デフォルトの名無しさん
2006/03/05(日) 02:04:39>みんなあんなの書けるようになるの?
Ruby使い続けて早数年経つけど
向上心がないので最低一人は書けまへんw
もともと簡潔に書けるからそんなに気合入れて
文法やライブラリ駆使して詰め込まなくても便利に使えてるよ。
0492デフォルトの名無しさん
2006/03/05(日) 03:06:120493デフォルトの名無しさん
2006/03/05(日) 09:45:03kwsk
0494デフォルトの名無しさん
2006/03/05(日) 10:50:41+rb_eval_string_protect()かな。
0495デフォルトの名無しさん
2006/03/06(月) 00:27:46まずはこれを嫁。
Smalltalkベストプラクティス・パターン
http://www.amazon.co.jp/exec/obidos/ASIN/4894717549/
0496デフォルトの名無しさん
2006/03/06(月) 00:36:23なぜスモールトーク?
0497デフォルトの名無しさん
2006/03/06(月) 06:41:25GPL?
(((( ;゚Д゚)))ガクガクブルブル
0498デフォルトの名無しさん
2006/03/06(月) 07:04:07LEGALみると、regex.[ch]:だけが、LGPLみたいだなあ・・・
0499デフォルトの名無しさん
2006/03/06(月) 07:38:12http://www.ruby-lang.org/ja/LICENSE.txt
を見ると、GPL or 独自ライセンスなのだが、
ruby-mswin32は、GPLになっとる。
配布されているDLL使う場合は、GPLに従わなくてはならないのですかね。
0500デフォルトの名無しさん
2006/03/06(月) 09:48:570501デフォルトの名無しさん
2006/03/06(月) 10:51:500504デフォルトの名無しさん
2006/03/06(月) 11:56:32確保しておけばいいんじゃない?
0505デフォルトの名無しさん
2006/03/06(月) 14:06:08単一のdef foo(*arg)
で個数、タイプによって分岐?
0506デフォルトの名無しさん
2006/03/06(月) 14:16:23うん。
0507デフォルトの名無しさん
2006/03/06(月) 14:27:44def foo
end
def foo(arg)
end
とoverloadを期待して並べてもエラーが出ませんが
これはただの再定義なんですね。
0508デフォルトの名無しさん
2006/03/06(月) 14:31:37うん。
0509デフォルトの名無しさん
2006/03/06(月) 16:09:26超期待
0510497
2006/03/06(月) 18:25:09独自ライセンスはグレーという判断でGPLにしたらしい。
DLLだけ使うなら、鬼車使わなくても、自分でコンパイルすれば、
独自ライセンスが適用できるからおkっぽいです。
ちょっと作ってみようかと思います。
0511486
2006/03/06(月) 20:20:09便利に使えてるか ちょっと安心した
>>495
Smalltalk読めないんだけど勉強してでも読む価値ある?
内容がわからないんだけどイディオム集かな? 言語指定されてるから
0512デフォルトの名無しさん
2006/03/06(月) 22:06:48495 じゃないけど、こんな人も居るよ。
http://www2a.biglobe.ne.jp/~seki/ruby/best_practice.html
0513デフォルトの名無しさん
2006/03/06(月) 23:16:420514497
2006/03/06(月) 23:23:19>独自ライセンスはグレーという判断でGPLにしたらしい。
独自ライセンスは、一部コードでライセンス違反という判断でGPLにしたらしい。
0515デフォルトの名無しさん
2006/03/07(火) 00:37:32面白そうだな、読んでみる。 サンクス。
今読んでるdRuby本読み終わってからだけど
しかしコード添削がCの難解なマクロっぽいと感じることの解決になるのかな
0516デフォルトの名無しさん
2006/03/07(火) 02:31:33個人的には初期値でやる方が好き。
def foo(arg=nil)
if arg then
0517デフォルトの名無しさん
2006/03/07(火) 07:56:46Rubyというより、Unix初心者なのかもしれんが、
Rubyから外部アプリケーションを利用するとき、
io = IO.popen("/usr/bin/hogehoge cmd_option_A cmd_optionB","r")
みたいな感じでIOオブジェクト生成して、
外部コマンドからの戻り値はioに書き込まれるものとして扱うという理解でOKなん?
もしそれでよかったとしてね、
外部コマンドをコマンドリテラルでRubyスクリプトの文脈中に書いてるものを見つけたんだけどさ、
たとえば上の例でこんな感じ。
io = `/usr/bin/hogehoge cmd_option_A cmd_optionB`
問題なく起動するんだけど、
1.上で扱った場合との違い
2.1.とかぶるけどメリットデメリットは?
ってのが疑問なんだけど。
激しく初心者ですまん…
0518デフォルトの名無しさん
2006/03/07(火) 08:53:08前者はパイプだから、コマンドが終了していなくても、パイプに書き込まれればそれを読むことができます。
後者はコマンドの出力結果を受け取っているから、コマンドが終了しないとその出力を受け取ることができません。
コマンドの実行が一瞬でおわる場合は後者でまったく問題ありません。
しかしコマンドがずっと起動しっぱなしのようなものの場合、前者でないとその出力を読むことはできないでしょう。
例えばWebサーバのログを見たい場合、前者のほうがおすすめです。後者ならWebサーバが終了しないと出力を受け取れません。
以上です。お役に立ちましたでしょうか。
0519デフォルトの名無しさん
2006/03/07(火) 10:33:22なるほど。ありがとうございます。
つまりこういうことかな
前者はパイプを開くから、パイプを閉じるか、開いたパイプの先のサブプロセスが終了したらサブプロセスが終了するが、
それまでは出力結果がずっとIOオブジェクトに書き込まれる。
後者は、サブプロセスが閉じるのをずっと待つ。それまでは出力結果が受け取れない。
だからメリット・デメリットは、
サブプロセスを監視したいときは、ちゃんとIOオブジェクトを生成するのが吉
サッと書きたいときは、コマンドリテラルでまとめちゃったほうが楽
でいいのかな。
0520デフォルトの名無しさん
2006/03/07(火) 10:46:33> io = `/usr/bin/hogehoge cmd_option_A cmd_optionB`
ここで返ってくるのは IO オブジェクトじゃなくて文字列データね。
なので、 read したり close したりする手間もかからないのもメリットのひとつかな。
0521デフォルトの名無しさん
2006/03/07(火) 10:47:170522デフォルトの名無しさん
2006/03/07(火) 15:41:34つか、これって IO 関係なくないか?
0523デフォルトの名無しさん
2006/03/07(火) 16:04:540524デフォルトの名無しさん
2006/03/08(水) 11:58:24if $0 == __FILE__
...
end
というコードはifが不成立の時、削除されますか?
0525デフォルトの名無しさん
2006/03/08(水) 12:03:080526デフォルトの名無しさん
2006/03/08(水) 12:37:10もう少し自信を持っていいと思う。
0527デフォルトの名無しさん
2006/03/08(水) 16:12:280528デフォルトの名無しさん
2006/03/08(水) 16:47:050529デフォルトの名無しさん
2006/03/08(水) 18:14:510530デフォルトの名無しさん
2006/03/08(水) 18:37:570531デフォルトの名無しさん
2006/03/08(水) 18:49:270532デフォルトの名無しさん
2006/03/08(水) 18:50:090533デフォルトの名無しさん
2006/03/08(水) 20:37:500534デフォルトの名無しさん
2006/03/08(水) 20:39:16何の話?
0535デフォルトの名無しさん
2006/03/08(水) 20:42:00毎度!横山や!
0536デフォルトの名無しさん
2006/03/08(水) 23:38:300537デフォルトの名無しさん
2006/03/08(水) 23:42:59Dir.glob('*.html') かな。
0538デフォルトの名無しさん
2006/03/08(水) 23:50:53if Wildcard.match("foo*", "foobar") then ...
といった感じで
0539デフォルトの名無しさん
2006/03/09(木) 00:09:430540デフォルトの名無しさん
2006/03/09(木) 00:11:440541デフォルトの名無しさん
2006/03/09(木) 23:28:24またはクラス変数でもよかったのですが、サブクラスで定義しても、他のサブクラスから参照されちゃうので…
0542デフォルトの名無しさん
2006/03/10(金) 02:01:001行目の意味が良く解らん
例えばどんな感じ?コード例を出してみて
0543541
2006/03/10(金) 06:22:42Class Base
…
end
0544541
2006/03/10(金) 06:23:40Class Base
…
end
def
0545デフォルトの名無しさん
2006/03/10(金) 06:37:29class Base
…
def xx ;end
def yy ;end
end
def Base.zz(zz)
…
end
over=Base.zz(abc)
上のようにすると、変数overに下のクラス(Over)が生成されて、
over.newでしたのOverクラスのインスタンスが生成みたいな
感じです。
class Over < Base
Const="abc"
end
別に定数にこだわってるわけじゃないんですが、Baseから複数サブクラス
をつくりそれぞれで同名かつ別の変数を使いたいのでクラス変数ではだめなので…
0546デフォルトの名無しさん
2006/03/10(金) 08:17:08% awk 'BEGIN{a=3;b="3";print a/2,b/2}'
1.5 1.5
% ruby -e "a=3;b='3';puts a/2,b/2"
-e:1: undefined method `/' for "3":String (NoMethodError)
yadamon% ruby -e "a=3;b='3';puts a/2,b.to_i/2" ~/ruby
1
1
つまり「型がない」ってどういうことなの?
ポリモーフしまくればすなわち型がなくなるってことなの?(+メソッドとか)
web上で見られる説明があったら教えて
0547デフォルトの名無しさん
2006/03/10(金) 08:18:40% ruby -e "a=3;b='3';puts a/2,b.to_i/2"
0548デフォルトの名無しさん
2006/03/10(金) 08:28:06ruby -e"a = 1; p a; a = 'hoge'; p a"
0549デフォルトの名無しさん
2006/03/10(金) 10:01:12「型がない」というか「変数には型がない」けど、
オブジェクト自体には型 (というかクラス) がある。
0550デフォルトの名無しさん
2006/03/10(金) 10:21:480551デフォルトの名無しさん
2006/03/10(金) 10:27:30やりたいことがよくわからないんだが……
要するに定数のオーバーライドがしたい、ということ?
それだけならこう書けばいいと思う
class Base
CONST = 10
def getCONST
return CONST
end
end
class Over < Base
CONST = 500
end
ただし Over.new.getCONST で500ではなく10が返ることに注意
どうしても自然にオーバーライドしたいなら定数ではなくメソッドを使うべき
0552デフォルトの名無しさん
2006/03/10(金) 10:33:22そう表現してもいいけど、一般的には「オブジェクトを参照する」っていうんじゃないかな。
0553デフォルトの名無しさん
2006/03/10(金) 10:42:490554デフォルトの名無しさん
2006/03/10(金) 10:49:17スコープがクラス (とサブクラス) とインスタンス、
なクラス変数が欲しいとしょっちゅう思うのは俺だけじゃないはず。
@@@class_instance_variable な感じで Ruby 3.0 あたりでよろしく。> Matz
0555デフォルトの名無しさん
2006/03/10(金) 11:37:23インスタンス複数つくりゃいいだけのような気もするが。あとファクトリ作るとか。
とりあえずなんかデザパタ本でも読んでみれば。
なんかそのまんまttp://d.hatena.ne.jp/sshi/20051111/p1だな。
evalでもできるが。
class Base
def Base.zz1(arg)
eval(<<-DEFCLASS)
class Over1 < self
Const="#{arg.to_s}"
end
DEFCLASS
Over1
end
def Base.zz2(arg)
module_eval(<<-DEFCLASS)
class Over2 < self
Const="#{arg.to_s}"
end
DEFCLASS
Over2
end
end
0556デフォルトの名無しさん
2006/03/10(金) 12:02:30ぜんぜん意味わからん。やりたいことはこれなんだろうけど、
>別に定数にこだわってるわけじゃないんですが、Baseから複数サブクラス
>をつくりそれぞれで同名かつ別の変数を使いたいのでクラス変数ではだめなので…
クラスインスタンス変数じゃだめなのか?これならサブクラス間で違う値になるし、値はクラスごとに1つなので同じクラスに属するインスタンスなら同じ値を共有できる。
class Parent
@value = nil
def self.value
@value
end
def self.value=(v)
@value = v
end
end
class Child1 < Parent
@value = 'foo'
end
class Child2 < Parent
@value = 'bar'
obj
p Child1.value #=> "foo"
p Child2.value #=> "bar"
またインスタンスメソッドから参照するときは self.class.value とself.class.value= で参照できる。
0557デフォルトの名無しさん
2006/03/10(金) 12:28:03これを継承&オーバーライド可能なようにできないかな?
0558デフォルトの名無しさん
2006/03/10(金) 13:13:52puts o?o:"not found"
を↓みたいには書けませんか?
puts o??"not found"
0559デフォルトの名無しさん
2006/03/10(金) 13:17:02○ puts find??"not found"
0560デフォルトの名無しさん
2006/03/10(金) 13:31:15puts find || "not found"
0561デフォルトの名無しさん
2006/03/10(金) 13:38:56まさにそれです。ありがとうございます。
if a or b then
はそういう理屈で動いてたのか・・・
0562デフォルトの名無しさん
2006/03/10(金) 14:04:27#元テキスト
adbasdfasdfa
asdfasdfa
adfafafdadfaf
<AAA>
asdfasdfasdf
asdfasdfas
asdfasdfa
</AAA>
asdfasdfasd
asdfasdfadsfaf
asdfadsafa
#フィルタ後テキスト
adbasdfasdfa
asdfasdfa
adfafafdadfaf
<ol>
<li>asdfasdfasdf
<li>asdfasdfas
<li>asdfasdfa
</ol>
asdfasdfasd
asdfasdfadsfaf
asdfadsafa
上のようなフィルタ処理をスマートに書く方法なんですかね。
if文とフラグをつかった汚いのしか思いつきませんorz
0563デフォルトの名無しさん
2006/03/10(金) 14:17:24s.gsub(%r|<AAA>\n(.*)</AAA>|m){|e| "<ol>\n" + $~[1].gsub(/^/, "<li>") + "</ol>"}
0564デフォルトの名無しさん
2006/03/10(金) 14:37:42そんなの、「if文とフラグ」で悩んでるような初心者がわかるわけないやん。
解説つけるか、初心者でもわかるようなコードにしようや。
input = <<END
adbasdfasdfa
asdfasdfa
adfafafdadfaf
<AAA>
asdfasdfasdf
asdfasdfas
asdfasdfa
</AAA>
asdfasdfasd
asdfasdfadsfaf
asdfadsafa
END
li = ''
input.each_line do |line|
case line
when /^<AAA>$/
puts "<ol>"
li = '<li>'
when /^<¥/AAA>$/
puts "</ol>"
li = ''
else
print li, line
end
end
0565デフォルトの名無しさん
2006/03/10(金) 14:52:39%r|<AAA>\n(.*?)</AAA>|m じゃないかな。
まあ AAA が入れ子になってたらどっちの方法もだめですが。
0566デフォルトの名無しさん
2006/03/10(金) 18:47:39しまっ
カリカリカリカリカリカリ
0567デフォルトの名無しさん
2006/03/10(金) 18:49:28glob /glCb | glQb/
━ 【名】【C】
(クリーム・泥(どろ)などの)かたまり.
0568デフォルトの名無しさん
2006/03/10(金) 23:41:12irbで遊んでると一度はハマる罠
0569デフォルトの名無しさん
2006/03/11(土) 13:07:55モジュールメソッドをそのクラス内部から呼び出すにはどうすればいいのん?
0570デフォルトの名無しさん
2006/03/11(土) 16:04:57逆になぜ呼びだせないのかよくわからないのだが、オマエがどんな状況を
想定しているのかもう少し詳しく教えていただければ光栄に存じます。
0571デフォルトの名無しさん
2006/03/11(土) 16:20:29rb_define_class("Hoge::Fuga", rb_cObject)
と書いてみたんだが、どうも間違っているらしい。
正しくはどうかくの?
0572デフォルトの名無しさん
2006/03/11(土) 17:48:56Hoge クラスかモジュールは定義済?
0573デフォルトの名無しさん
2006/03/11(土) 17:51:23ruby 1.8.4 (2005-12-24) [i386-mswin32]
* xxxx.c
void Init_xxxx(){
VALUE cImg = rb_define_class("Img", rb_cObject);
rb_define_method(cImg, "test", test, 1);
}
static VALUE test(VALUE self, VALUE s) {
FILE *fp;
if (fp = fopen(RSTRING(s)->ptr, "wb")) {
fclose(fp); // <- ここでSEGV
}
return Qtrue;
}
* test.rb
Img.new().test("hogehgoe.txt")
0574デフォルトの名無しさん
2006/03/11(土) 17:56:160575デフォルトの名無しさん
2006/03/11(土) 18:03:10Hogeはクラスで、定義済みです。
わかんないこといっぱいで挫折しそう。
0576デフォルトの名無しさん
2006/03/11(土) 18:19:42fugaClass = rb_define_class_under(hogeModule,"Fuga",rb_cObject);
じゃない?あんま詳しくはしらんけど
0577デフォルトの名無しさん
2006/03/11(土) 18:44:190578569
2006/03/11(土) 18:46:14>577の通りデス…
(´・ω・) HN書き込む前に途中で送ってしまった…
0579デフォルトの名無しさん
2006/03/11(土) 18:51:100580573
2006/03/11(土) 23:19:25#define fclose(f)rb_w32_fclose(f)
#undef fopen
#define fopen(p, m)rb_w32_fopen(p, m)
をコメントアウトしたら普通に動作するようになったんだけどまずいですかね。
0581デフォルトの名無しさん
2006/03/11(土) 23:33:130582デフォルトの名無しさん
2006/03/11(土) 23:48:28fstreamのopenとかと置き換わって、意味不明なエラーでて悩んだよ。
あんなのあんなところに書くなよと。
0583デフォルトの名無しさん
2006/03/12(日) 08:29:20array1.each{|f|
puts f
}
とかでよく見る f って何かの頭文字?
0584デフォルトの名無しさん
2006/03/12(日) 09:04:33単に短すぎる変数名ってだけかと
普通はそれ
File.open( hoge ) { |f|
f.puts
}
って使う例じゃないかな。
Array#each でほんとに f を使ってる
とすると、それは相当ダメだと思う
0585デフォルトの名無しさん
2006/03/12(日) 09:25:12floatのつもりとか。
まあ普通は何かのオブジェクトならx,y,zとか。
インデックスならi,j,k、IO#each_lineだとlとかlineがわかりやすいと思うよ俺は。
0586デフォルトの名無しさん
2006/03/12(日) 09:38:02結合度の違いがあるのは知ってるけど、なぜわざわざ2種類用意する必要があったのでしょうか。
個人的には、最初に do end が用意されていたけど、1行で書くときは見づらいから
あとから { } も使えるようになったのかなと推測してます。正しい?
0587デフォルトの名無しさん
2006/03/12(日) 10:41:06オレはあんまりいい習慣じゃないと思うんだよな。
巷に出回ってる Ruby コードのこの辺の書き方。
まぁ十分にブロックが小さければ見りゃ分かるじゃん
てことなんだろうけどさ。
初心者にはすすめないな。
0588デフォルトの名無しさん
2006/03/12(日) 11:03:25>結合度の違いがあるのは知ってるけど、なぜわざわざ2種類用意する必要があったのでしょうか。
結合度が違うから。&&もandがある。
0589デフォルトの名無しさん
2006/03/12(日) 11:33:54factor(要素)の頭文字。とにかく配列の要素を枚挙して使用するってことね。
プログラムの説明やテストの時に使われることが時々ある。
それ自体は別にいいんだけど、この手の「マジックキャラクタ」は
入門の文書なんかにも平気で使われることがあるのが問題。
本当は手を抜かずにstrとかlineとかもうちょっと内容に即した
具体的な文字列にするように教育したほうがいいと思う。
「中身には文書の行が入るので line にしておきます」とか啓蒙した解説を見たことがない。
f.puts の f は file handle の f かと思われ。
これもせめて io のほうがいいと思うんだけどなあ。
0590デフォルトの名無しさん
2006/03/12(日) 11:37:210591デフォルトの名無しさん
2006/03/12(日) 11:47:51いつもくっついてくれるのは便利だが
いつもくっつかれるのも不便だから
0592デフォルトの名無しさん
2006/03/12(日) 11:52:470593デフォルトの名無しさん
2006/03/12(日) 11:55:38[1,2,3].each{puts i}
0594デフォルトの名無しさん
2006/03/12(日) 12:07:520595デフォルトの名無しさん
2006/03/12(日) 12:33:510596デフォルトの名無しさん
2006/03/12(日) 12:35:090597デフォルトの名無しさん
2006/03/12(日) 13:12:30rubygems-0.8.11.tgz をとってきて
tar xzf rubygems-0.8.11.tgz
cd rubygems-0.8.11
sudo ruby setup.rb
でインストールしました。そのあと
sudo gem install -r rake
とやって、Rakeがインストールされたんですが、
ruby -e 'require "rake"'
とすると
-e:1:in `require': no such file to load -- rake (LoadError)
というエラーがでてきます。rake --help は問題なく実行できるので、Rakeのインストールは成功していると思います。
で、質問なんですが、
・rubygemsのインストールは sudo ruby setup.rb だけでいいの?
・rubygemsでインストールしたライブラリをスクリプトから使うには、requireじゃだめなの?
の2点です。
環境:fedoracore3, ruby1.8.4
どなたかお助けを。
0598597
2006/03/12(日) 13:52:02自己レス。
ruby -r rubygems -e 'require "rake"'
とすればいいみたいです。
・・・が、これだとRakeをsetup.rbでインストールしたときとgem installでインストールしたときとでスクリプトを書き換えなければいけないってことですか?
つまり、rubygemsでインストールされたときはスクリプトに require 'rubygems' を付け加えなければいけないってことになるんでしょうか。
require 'rubygems' # rubygemsでインストールされた場合
require 'rake'
:
:
なんかいやだなあ。みなさんどうされてますか。begin rescue end で囲っちゃうのがいいんでしょうか。
0599デフォルトの名無しさん
2006/03/12(日) 13:53:330600デフォルトの名無しさん
2006/03/12(日) 14:20:56ポリシーとかじゃなくて、
NKF モジュールが何も気にせず nkf のデフォルトを採用しちゃったのが敗因だろうね。
nkf -m0 -x -e とかにすべきだったんだろうけど、
後方互換性でいまさら変えれないのではないかと。
nkf は、ネットワーク上で安全に交換できるような文字列に変換する、
というようなポリシーで作られているのに対し、
Kconv には純粋にエンコーディング変換だけが求められていて、
そのへんの齟齬が問題だよね。
0601デフォルトの名無しさん
2006/03/12(日) 14:21:530602デフォルトの名無しさん
2006/03/12(日) 14:36:27それに気づいてからはKconvは一切使ってない。非推奨と言われようが代わりにNKFを使う。
変換先の文字セットに半角カタカナが無いならともかく、あるのに変換してくれないのはとても困る。
っていうかしばらく気にせずに使ってたところある日データベースに一切半角カタカナが無いのに気づき、
そのときは一次情報も保存してなかったので再変換したくてもできなくてひとりで大笑い。
まあ掲示板のレスだったからよかったけどにゃ。変な仕様だ。
0603デフォルトの名無しさん
2006/03/12(日) 14:52:11……書き直そ orz
0604デフォルトの名無しさん
2006/03/12(日) 15:43:34rubygems は標準で読みにいくサーチパスとは違う独自の場所にインストール
するから(管理を容易にするため)、 rubygems 自身を require するなどの手
段を取らないと無理。
実際問題としては、 gem を使ってる環境では gem が入っている前提で書いちゃ
うし、 gem を使っていない環境で rake とかは使ったことがないので、とく
に気にしたことはないですね。
混在させたいんなら、 LoadError を rescue するしかないと思うけど。
0605デフォルトの名無しさん
2006/03/12(日) 16:50:10gemsで入れたかどうかなんてアプリ側で気にすることじゃない。
0606デフォルトの名無しさん
2006/03/12(日) 16:50:56" foo bar "[\S(.*\S)?]
みたいなの
0607デフォルトの名無しさん
2006/03/12(日) 16:53:26結構有名な問題点だと思ったんだけどなあ。
tDiaryが半角カナ対応してないとか、それにまつわるフレーム?とか。
0608デフォルトの名無しさん
2006/03/12(日) 16:54:01strip
0609デフォルトの名無しさん
2006/03/12(日) 16:59:49絶対に一通り読んでおいたほうがいいな
スクリプト考えるときの効率がぜんぜん違う
0610デフォルトの名無しさん
2006/03/12(日) 17:16:03データ構造とか自作メソッドの役割とかが思いっきり変わっちゃうことがあるよね。
3メソッド計20行くらいあったものが1メソッド5行で書けたりする。
0611デフォルトの名無しさん
2006/03/12(日) 17:44:12gsubを以下のように使うと、
irb(main):021:0> "'aaabbb'".gsub("'","\\'")
=> "aaabbb'aaabbb"
となってしまいます。
何が起こっているのでしょう?
で、どうしたら上手く置き換えられるのでしょうか?
0612デフォルトの名無しさん
2006/03/12(日) 17:58:59gsub第二引数で\を表すために\->\\
つまり、gsub(/'/, "\\\\'")。
または、gsub(/'/){ "\\'"}
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=trap%3A%3A%5C%A4%CE%B1%C6%B6%C1
0613デフォルトの名無しさん
2006/03/12(日) 19:28:350614デフォルトの名無しさん
2006/03/12(日) 19:30:58個人的には sub(pat, rep), sub!(pat, rep), gsub(pat, rep), sub!(pat, rep) は
リファレンスマニュアル上で初心者から見つけにくい場所 (隠しリンクとか) にして欲しい。
0615デフォルトの名無しさん
2006/03/12(日) 19:42:34なんでそんな意地悪するん?
0616デフォルトの名無しさん
2006/03/12(日) 19:49:01Procクラスのインスタンスだけど、それがどうした?
0617デフォルトの名無しさん
2006/03/12(日) 19:56:55ぽかーん
0618デフォルトの名無しさん
2006/03/12(日) 20:08:410619デフォルトの名無しさん
2006/03/12(日) 20:17:19>>611 みたいな罠にはまる人が後を絶たないから。
0620597
2006/03/12(日) 20:23:05どうもありがとうございます。
RUBYOPT='-rubygems' は知りませんでした。
RubyGemsのREADMEにはそんなこと一言も書いてないよー。
0621デフォルトの名無しさん
2006/03/12(日) 20:25:12ちゃんと書かれているものを、読まない奴が悪いだけだろ。
つか、まともな人まで大混乱するし、ぜってーアリエネw
0622デフォルトの名無しさん
2006/03/12(日) 20:26:120623デフォルトの名無しさん
2006/03/12(日) 20:41:59日本語のドキュメントもそんなに数が無いし
Windows9x系だとインストールに苦労するし
0624デフォルトの名無しさん
2006/03/12(日) 21:06:22> ちゃんと書かれているものを、読まない奴が悪いだけだろ。
そんなことはありません。
これだけ同じ質問が何度も繰り返されているのは読まない奴のせいではないはずです。
隠しリンクはもちろん本気では言ってないですが、
そうしてもらいたいと思うくらい同じ質問が繰り返されていてうんざりしているわけです。
ブロック付きしかなくても誰も困りませんし、
まともな人なら混乱しませんよ。
0625デフォルトの名無しさん
2006/03/12(日) 21:06:27「AWKとかで使われてるsub/gsubって便利だよね」って理由だろうからなあ
変換文字列無くしてしまうのはなんかsub/gsubっぽくないっていうか
sub/gsubって名前でなくていいじゃんみたいな
\の問題はよく考えればわかるというか一度ハマれば懲りて避ける(w
0626デフォルトの名無しさん
2006/03/12(日) 21:19:47obsolete にするのは行きすぎかもしれないけど、「第2引数に \ が含まれていたら警告を出す」というのは
悪くない線ではないかと思ったけどどうだろう。
0627デフォルトの名無しさん
2006/03/12(日) 21:21:55ブロックはつねに Proc クラスのインスタンスなわけじゃないぞ。
yield を使うようなブロック引数は Proc じゃなくて構文要素。
0628デフォルトの名無しさん
2006/03/12(日) 21:26:52わかってやってんだよ、って人にはうざいでしょうね。
あと、第2引数がリテラル文字列じゃない場合とか考えるとどうなるんでしょうね?
0629ヽ(´ー`)ノ ◆.ogCuANUcE
2006/03/12(日) 22:28:14まともな人なら注意書きぐらい読むんじゃないの?
http://www.ruby-lang.org/ja/man/?cmd=view;name=String#gsub
注意: 引数 replace の中で $<digits> を使うことはできません。この文字列が評価される時点ではまだマッチが行われていないからです。また replace は \ を 2 重にエスケープしなければなりません(trap::\の影響参照)。
0630デフォルトの名無しさん
2006/03/12(日) 22:29:44もう一度言います。
これだけ同じ質問が何度も繰り返されているのは読まない奴のせいではないはずです。
たとえば、 >>611 に「あなたはまともな人ではない」と言えますか?
0631デフォルトの名無しさん
2006/03/12(日) 22:31:58>>606のような「マニュアル読めば一発」な質問が頻出していることは何かを示唆していないだろうか
0632613
2006/03/12(日) 22:39:04> ブロックはつねに Proc クラスのインスタンスなわけじゃないぞ。
ですよね〜。なんとかブロックをProcにしないで扱えないか、いろいろと
試していたんですが、どうにもエラーの壁に阻まれてできなかったもんですから。
もしや、オブジェクトじゃないんじゃないかなぁ〜と。どうもです。
0633デフォルトの名無しさん
2006/03/12(日) 22:54:28いや、それはそれ、これはこれで違うと思いますよ。
sub, gsub については「以前」から同じ質問を数十回は見てきていますし。
0634デフォルトの名無しさん
2006/03/12(日) 23:00:13その理論だと何でもそうなるよな。
荒らしも犯罪者も戦争も親の金盗むのもダブルドリブルもな。
その為にgsubに注釈付いてるんだろ?
良い案があるなら編集に参加してみなよ。
0635デフォルトの名無しさん
2006/03/12(日) 23:02:11> 良い案があるなら編集に参加してみなよ。
ええと、本当に私が編集に参加して良いと思っていますか?
0636611
2006/03/12(日) 23:03:17初心者スレッドって書いてあったので、FAQを聞いても
許してもらえるかと思ったのですが。
612さんどうもありがとう。
0637デフォルトの名無しさん
2006/03/12(日) 23:05:06世間を知らなすぎるようだから揉まれてみるのも経験だろう
はっきり言って君の考えは机の上以外では意味をなさない
0638デフォルトの名無しさん
2006/03/12(日) 23:06:28Rubyのマニュアルかっこわるくね?気のせいかな?
0639デフォルトの名無しさん
2006/03/12(日) 23:12:41落とし穴を埋めた方が健全だと思うけどなぁ
0640デフォルトの名無しさん
2006/03/12(日) 23:14:10> この流れだとまともな人じゃないことになっちゃうのかな。
そんなことはないですよ。気にする必要はありません。
同じ罠にはまった大勢のうちの一人でしかありません。
0641デフォルトの名無しさん
2006/03/12(日) 23:15:17落とし穴の広さと深さと埋めるために必要なコストを算出して
なおかつコストを負担してくれたならすぐにでも取り掛かると思う
埋められないからこその注意書き
0642デフォルトの名無しさん
2006/03/12(日) 23:16:240643デフォルトの名無しさん
2006/03/12(日) 23:17:300644デフォルトの名無しさん
2006/03/12(日) 23:24:28おどろおどろしい音楽つきでどくろマークつきの警告文が表示されるようにすればよい
0645デフォルトの名無しさん
2006/03/12(日) 23:33:43おきのどくですが じーさぶ1に ばっくすらっしゅがありました
おきのどくですが じーさぶ2に ばっくすらっしゅがありました
おきのどくですが じーさぶ3に ばっくすらっしゅがありました
0646デフォルトの名無しさん
2006/03/12(日) 23:38:300647デフォルトの名無しさん
2006/03/12(日) 23:48:36いや、あなたがどういう状況を想定しているのかわからんけど、メソッド呼出
しにつけられたブロックなら、ふつうにブロック引数で受けることはできると
思うぞ。
def m1
yield()
end
def m2(&b)
b.call()
end
m1 { puts "in m1" }
m2 { puts "in m2" }
どっちもやること自体はいっしょ。ただし前者のケースでは、ブロックはオブ
ジェクトとしては扱われていないってだけ。
何か誤解してそうなので念のため。それとも、もっと何かややこしい状況?
0648デフォルトの名無しさん
2006/03/13(月) 00:52:21新たな落とし穴を作る必要はないだろう。
>>644
どくろマークを表示させるのが難しそうだなぁ。
0649デフォルトの名無しさん
2006/03/13(月) 01:07:21いや、そこは逆転の発想だよ。
ありとあらゆるところに穴を掘れば、最終的に穴は穴じゃなくなるだろ?
0650デフォルトの名無しさん
2006/03/13(月) 01:08:550651デフォルトの名無しさん
2006/03/13(月) 01:31:09要するに,'c;\ruby\bin\ruby.exe' のような文字列を取得したいのです。
0652デフォルトの名無しさん
2006/03/13(月) 01:38:52不満なら、Win32API使ってGetModuleFileNameでも呼んだら。
0654デフォルトの名無しさん
2006/03/13(月) 07:53:32Rubyは赤いのに3倍速くないのは何故ですか?
0655デフォルトの名無しさん
2006/03/13(月) 09:17:353倍速いというのはシャアの戦いぶりを見て恐れた者たちの感想であり
いくらなんでも実際に3倍の速度で動いたらモビルスーツがもちません
0656デフォルトの名無しさん
2006/03/13(月) 11:16:223倍速く動かしても大丈夫なように作ってあるから赤くしてるのかな〜と思った。
初心者が動かしたら3倍遅くなる、と。
0657デフォルトの名無しさん
2006/03/13(月) 11:27:51ニュータイプの存在を信じれば、の話ですが。
0658デフォルトの名無しさん
2006/03/13(月) 11:44:24ところで、Mix-Inで質問。
ClassのInheritはまさに継承するから、superで親クラスの同名メソッド呼び出せるけど、
ModuleのMix-Inは単純にそのメソッドをIncludeされたクラスに追加するだけだから、
同名のメソッドがIncludeされたクラスにあったら、IncludeされたModule内部のメソッドは
オーバーライドされるしかないってことでおk?
0659デフォルトの名無しさん
2006/03/13(月) 11:45:500660デフォルトの名無しさん
2006/03/13(月) 14:03:58やっぱり super で呼び出せるだろ?
0661デフォルトの名無しさん
2006/03/13(月) 16:55:24ancestorsの順に従って、superで親メソッドを呼び出せる。
0662デフォルトの名無しさん
2006/03/13(月) 17:25:480663デフォルトの名無しさん
2006/03/13(月) 19:50:10開発速度が3倍になるんだよきっと
0664デフォルトの名無しさん
2006/03/13(月) 21:06:35新たに別に起動したインタプリタから弄ることはできますか?
0665デフォルトの名無しさん
2006/03/13(月) 21:17:470666デフォルトの名無しさん
2006/03/13(月) 21:55:400667デフォルトの名無しさん
2006/03/13(月) 23:19:29CygwinはEUCでセットアップしてあります。RDEの文字コードもEUC/LFに設定してあります。
この環境で,以下のスクリプトを実行しました。※ gyokuroは文字列を形態素に分解します。
require 'gyokuro/gyokuro'
gyokuro = Gyokuro.new('本日は晴天なり。')
puts gyokuro.collect { |morpheme| morpheme.origin_yomi } #=> ['ホンジツ', 'ハ', 'セイテン', 'ナリ', '。']
結果は,正しく形態素解析されましたが,コンソールウィンドウの出力がはげしく文字化けしてしまいます。
形態素解析はEUCの辞書に基づいて行われているので,正しく分割されているということは
コードはEUCでrubyに引き渡され,EUCでgyokuroで処理され,EUCで出力されたのだと思われますが,
コンソールウィンドウはそれをSJISとして表示しようとするので,文字化けするのではないかと思われます。
試しにputsする文字列を.tosjisしたら,正しく表示されました。
しかしputsのたびにいちいち.tosjisを置くのはわずらわしく思われます。
コンソールウィンドウの表示だけeucをsjisに変換するようなことはできないでしょうか。
0668デフォルトの名無しさん
2006/03/13(月) 23:20:500669デフォルトの名無しさん
2006/03/13(月) 23:35:29または nkf なり何なりにパイプして出力を変換するとか
0670デフォルトの名無しさん
2006/03/13(月) 23:36:580671デフォルトの名無しさん
2006/03/13(月) 23:43:440672デフォルトの名無しさん
2006/03/13(月) 23:50:49回答ありがとうございます。
RDEの文字コードの設定ですが,エディタ部分は設定メニューでEUCに変更できるようですが
コンソールウィンドウの部分は,ひととおりメニューを見た限り,設定することはできないようです。
(見落としていましたらすみません)
nkfを介してコンソールウィンドウに出力できるなら,願ったりですが
なにかいい方法がありますでしょうか
>>670
poderosa, ckというのは,確かいずれもcygwinに接続できるターミナルエミュレータというやつですね
後日ためしてみようと思って,ブックマークだけつけておいたのですが,
実のところ私はUNIXの経験がほとんどなく,telnetもろくに使ったことがなかったり
(というかどういうものなのかもあまりよくわかってなかったり)します。
cygwin版のRubyを使う場合は,RDEなどよりもそうしたツールを使う(覚える)べきなのでしょうか。
0673デフォルトの名無しさん
2006/03/13(月) 23:53:460674デフォルトの名無しさん
2006/03/13(月) 23:55:51module SJIS_OUT
def putss(str)
puts str.tosjis
end
end
$>.extend(SJIS_OUT)
putss "日本語"
みたいなのを考えてみようとしたが、うまくいかないねぇ。
$>.putss "日本語" とすればうまくいくんだけどなんでだろう?
リファレンスの組み込み関数のputsを見るとこれでよさそうだけど。
(Programing Rubyだと、$>じゃなくてSTDOUTとなってるが、これでも同様)。
0675デフォルトの名無しさん
2006/03/14(火) 00:29:000676デフォルトの名無しさん
2006/03/14(火) 00:29:020677デフォルトの名無しさん
2006/03/14(火) 00:30:35そのやり方だと、putssメソッドがSTDOUTにしか定義されてない
0678デフォルトの名無しさん
2006/03/14(火) 00:42:23試してないけど、これはどうかな?
http://disense.org/fhw/?rxvt
0679デフォルトの名無しさん
2006/03/14(火) 01:02:480680667
2006/03/14(火) 01:53:20exec "ruby " + ARGV.join(" ").tr("\\", "/") + "| nkf -s"
というスクリプトをnkfs.rbとか適当な名前で保存して,これをスクリプト登録で
マクロとして使うことによって,出力をsjisに変換してコンソールウィンドウに表示することができました。
でも起動時オプションとかちゃんと引き渡してないから,いろいろ問題が生じるかも。。
あとデバッグするときとかの問題もあるか。
回答してくださったみなさん,ありがとうございました。
今回はRDEからの操作が目的でしたが,どのみち標準のbashの代わりのコンソールは
必要だと思っていたので,教えていただいたものをいろいろためしてみます。
0681デフォルトの名無しさん
2006/03/14(火) 05:00:41別途用意する必要があるのですか?
$ rpm -qa | grep ruby
ruby-libs-1.8.4-1.fc4
ruby-mode-1.8.4-1.fc4
ruby-1.8.4-1.fc4
ruby-devel-1.8.4-1.fc4
0682681
2006/03/14(火) 05:06:55探したらちゃんとirbのパッケージありました。。
irb-1.8.4-1.fc4.i386.rpm
0683658
2006/03/14(火) 06:56:36なるほど、�dクス。
0684デフォルトの名無しさん
2006/03/14(火) 12:54:03ruby-lang.org のインストールのページにも書いてるのに。
0685デフォルトの名無しさん
2006/03/14(火) 13:44:59"abcd axcd"という文字列があったとして
/a.+c/で"abc""axc"とマッチされますが
"axc"だけマッチさせたい場合どのように書けばよいでしょうか?
0686デフォルトの名無しさん
2006/03/14(火) 13:51:54/axc/って書けばよいでしょ。
0687デフォルトの名無しさん
2006/03/14(火) 13:52:22もうちょっと条件を詳しく。
0688デフォルトの名無しさん
2006/03/14(火) 13:52:470689デフォルトの名無しさん
2006/03/14(火) 13:53:42/a.+c/でマッチするのは "abcd axc" だよ
0690674
2006/03/14(火) 13:54:58Programming Rubyの Kernel#puts の説明に
Equivalent to STDOUT.puts(art...) となっているからです。
あれ?ttp:/www.ruby-doc.org/core/classes/Kernel.html#M001993 には
Equivalent to $stdout.puts(art...) となってるなぁ。どっちだろ?
>>677
では、「無印」puts の本体に定義するにはどうしたらいいんでしょうか?
0691デフォルトの名無しさん
2006/03/14(火) 13:59:33わかりづらかったですね。すいません
"あああ〜〜〜いいい〜〜〜ううう" #〜〜〜はなんの文字でも良い
という文字列を抜き出したいんですが
"〜〜〜あああ〜〜〜〜〜〜〜〜〜うううあああ〜〜〜いいい〜〜〜ううう〜〜〜"
という場合最初の"あああ"から最後の"ううう"でマッチしてしまうので
"あああ"と"ううう"の間に"いいい"がある場合だけ!としたいのです
こんな感じなんですが頭悪い説明ですいません・・・
0692デフォルトの名無しさん
2006/03/14(火) 14:00:490693デフォルトの名無しさん
2006/03/14(火) 14:01:46> では、「無印」puts の本体に定義するにはどうしたらいいんでしょうか?
自分で「Kernel#puts の説明に」って答え書いてるじゃん。
Kernel に定義するんだよ。
0694デフォルトの名無しさん
2006/03/14(火) 14:03:34こうしたいのか?
あと後ろが選ばれるためにもひとつ条件いるが
0695デフォルトの名無しさん
2006/03/14(火) 14:03:51一発でマッチしなきゃならんのかい?
2段階に分けて処理することもできるんだけど
0696674
2006/03/14(火) 14:04:59require 'kconv'
module Kernel
def putss(str)
puts str.tosjis
end
end
0697デフォルトの名無しさん
2006/03/14(火) 14:07:53super str.tosjis
end
とかはあえてしないか
0698デフォルトの名無しさん
2006/03/14(火) 14:09:33マッチできれば何段階でも構わないのですが何分初心者なもので
いまいち使い方がピンとこないのです
こういうことができるんだろうなとは思うのですけど・・・
というわけでここまでヒントをいただければ後は自分でできると思います!
ありがとうございました!
0699デフォルトの名無しさん
2006/03/14(火) 14:09:370700デフォルトの名無しさん
2006/03/14(火) 14:19:46いまいちわからん
0701674
2006/03/14(火) 14:22:55str="〜〜〜あああ〜〜〜〜〜〜〜〜〜うううあああ〜〜〜いいい〜〜〜ううう〜〜〜"
str.match(/.*(あああ.*いいい.*ううう)/)
puts $1 # "あああ〜〜〜いいい〜〜〜ううう"
0702デフォルトの名無しさん
2006/03/14(火) 14:34:53それだと
あああ〜ううう〜いいい〜ううう
も拾う。まあ元質問者の意図がわからないからなんとも言えないが
0703デフォルトの名無しさん
2006/03/14(火) 15:41:51初心者だから分けることをオススメするんだがな
複雑な正規表現にいきなり挑戦せずに簡単なこと
だけを組み合わせて処理する方が分かりやすいだろ?
0704デフォルトの名無しさん
2006/03/14(火) 16:26:22あと、リファレンスマニュアルのトップページで、「目次」を上の方にしてくれないかなぁ。
一旦、スクロールするのが面倒だよ。
0705デフォルトの名無しさん
2006/03/14(火) 16:37:58何をするための処理なのか具体的に書いてくれるとそもそももっとマシな方法があったかもしれず。
0706デフォルトの名無しさん
2006/03/14(火) 18:30:28確かに目的を教えてもらったほうがいいな
0707デフォルトの名無しさん
2006/03/14(火) 18:45:190708デフォルトの名無しさん
2006/03/14(火) 19:16:55自分でTOPページつくればどう? Ruby使って静的にでも動的にでも。
0709デフォルトの名無しさん
2006/03/14(火) 19:21:45たぶんね。
.+? と (?=) を使えばたいていなんとかなる。
0710デフォルトの名無しさん
2006/03/14(火) 20:53:370711デフォルトの名無しさん
2006/03/14(火) 21:03:01http://human5.2ch.net/test/read.cgi/ms/1141694640/
8 名前:可愛い奥様[] 投稿日:2006/03/07(火) 11:05:23 ID:8dtluKkp
夫の歯ブラシで洗面所の排水溝掃除。
洗面所をビショビショに汚した罰だ。
20 名前:可愛い奥様[age] 投稿日:2006/03/08(水) 00:40:17 ID:pRrk6A21
前に頭きた時あって
1度だけ歯ブラシで肛門カキカキしちゃった
22 名前:可愛い奥様[] 投稿日:2006/03/08(水) 01:27:12 ID:gU5mHc7J
よかった。どこのお宅も同じようなことしてて。
24 名前:可愛い奥様[] 投稿日:2006/03/08(水) 01:36:35 ID:SSSFsTqE
そうそう、ヘンなモノはダンナのお皿へ直行だよね。
41 名前:可愛い奥様[] 投稿日:2006/03/08(水) 11:55:18 ID:sjj+/60Q
見てるだけで気が晴れるな!
皆さん、頑張ってね!
42 名前:可愛い奥様[sage] 投稿日:2006/03/08(水) 20:33:51 ID:Ju2N1s7+
年金分割が楽しみじゃのう
63 名前:可愛い奥様[] 投稿日:2006/03/10(金) 08:55:20 ID:qLfJYpJR
家族で密かにはぶっている。
男性は肉体が汚く、精神が美しい傾向がある。(気に入らない相手に肉体的攻撃を加える⇒精神的攻撃も加える男は猛者)
女は肉体が美しく、精神が汚い傾向がある。(気に入らない相手に精神的攻撃を加える⇒肉体的攻撃も加える女は猛者)
女は隠れて悪事をする。気に入らない女子を便所でボコったり、便器舐めさせたり、男の友人を使ってレイプ、仲間外れにしたり。陰口、嫉妬。
女は対人関係において、この汚い性格を隠そうとするため、外面が非常によくなる。(猫かぶり)
男性諸君は外面に騙されないように気を付けて下さい。
0712デフォルトの名無しさん
2006/03/14(火) 21:08:32それだと先の "abc" にマッチしちゃうからダメっていう話ではないかと。
0713デフォルトの名無しさん
2006/03/14(火) 21:12:030714デフォルトの名無しさん
2006/03/14(火) 21:14:53strの中に大文字が含まれない時だけ//iを付けたいんだけど、
\[WSDAZBG]とかみたいなメタキャラを誤認しないように
どうしたらいい判定ができるでしょうか。
0715デフォルトの名無しさん
2006/03/14(火) 21:23:50日本語で説明して。
0716デフォルトの名無しさん
2006/03/14(火) 21:31:33こんな感じでどう?
re = Regexp::compile(Regexp::escape(str), !/[[:upper:]]/.match(str))
0717デフォルトの名無しさん
2006/03/14(火) 22:30:02str = "Abc"の場合には/Abc/
としたいのです。
>>716
すいません、違うようです。
0718デフォルトの名無しさん
2006/03/14(火) 22:52:40間違ってんのは、あんたの日本語だと思うが。
Regexp::compile(str, str.include?("\\"))
0719デフォルトの名無しさん
2006/03/14(火) 23:24:320720デフォルトの名無しさん
2006/03/14(火) 23:31:250721デフォルトの名無しさん
2006/03/14(火) 23:40:020722デフォルトの名無しさん
2006/03/14(火) 23:48:500723デフォルトの名無しさん
2006/03/15(水) 00:10:26無理せずそのまま書けば?
if str=="\\Abc"
/\Abc/i
elsif str=="Abc"
/Abc/
end
0724723
2006/03/15(水) 00:11:500725デフォルトの名無しさん
2006/03/15(水) 01:18:01Regexp.escape(string[,kcode])
Regexp.quote(string[,kcode])
あたりが質問者が欲しい回答なんでないの?
0726デフォルトの名無しさん
2006/03/15(水) 01:48:540727デフォルトの名無しさん
2006/03/15(水) 09:15:58ツンデレだよ。
0728デフォルトの名無しさん
2006/03/15(水) 09:22:03なんだ魔美くんか
0729デフォルトの名無しさん
2006/03/15(水) 09:35:20for i in 1..10
if i == 5
begin
puts "i==5"
rescue
puts $!
end
end
0730デフォルトの名無しさん
2006/03/15(水) 09:41:52if i == 5
begin
puts "i==5"
rescue
puts $!
end
end
0731デフォルトの名無しさん
2006/03/15(水) 09:43:12begin〜endは、例外処理をするためのブロックを新規に作ってるってこと。
0732デフォルトの名無しさん
2006/03/15(水) 12:28:18その例なら単に
puts "i==5"
でいいじゃないか。
0733デフォルトの名無しさん
2006/03/15(水) 12:33:060734デフォルトの名無しさん
2006/03/15(水) 12:38:53ここまで的外れなレスは久しぶりに見たな。
0735デフォルトの名無しさん
2006/03/15(水) 13:50:35Delphi な人か?
0736デフォルトの名無しさん
2006/03/15(水) 15:21:51インストーラはどれが良いのか分からん(´A`)
とりあえず何でも良いのかな?
OSはWinXPSP2
0737デフォルトの名無しさん
2006/03/15(水) 15:38:50unixぽい環境で使いたい人はcygwin版を使ってる。
0738デフォルトの名無しさん
2006/03/15(水) 15:39:29インストールムービー見れ。
http://masuidrive.jp/rails/rails_install.html
現在の公式マニュアルはPerlとか知ってないと面倒なのでここ見れ。
http://www.ruby-lang.org/ja/man/?cmd=view;name=%BB%B2%B9%CD%CA%B8%B8%A5%A1%A6%A5%B5%A5%A4%A5%C8
0739デフォルトの名無しさん
2006/03/15(水) 15:39:46http://www.ruby-lang.org/ja/install.cgi?cmd=view;name=mswin32+%28%A5%D0%A5%A4%A5%CA%A5%EA%29
0741デフォルトの名無しさん
2006/03/15(水) 15:54:390742デフォルトの名無しさん
2006/03/15(水) 16:35:070743デフォルトの名無しさん
2006/03/15(水) 16:58:350744デフォルトの名無しさん
2006/03/15(水) 17:21:34どっかいいWikiはないものか。出来ればPukiwikiで。
0745デフォルトの名無しさん
2006/03/15(水) 17:27:45ありがとう
ASRをインストールする事に決めた(ムービーあるし)
まさかインストーラ選びで躓くとは思ってなかったよ・・・orz
>>741
まったくの素人さんでつ
これからガンガリマスヨ(`・ω・´)
0746デフォルトの名無しさん
2006/03/15(水) 19:05:44「できればPukiwikiで」って言いいつつ他のWikiを探すのはなぜ?
それはともかく、FreeStyleWiki等の方がいいのではないだろうか
Pukiwikiの文法はrdと同じくらいかそれ以上に取っつきにくい……と思う
個人的にはWifkyとかHikiとかRevisionistWikiとかオススメ
特にHikiにはRubyソースコードを色つきで表示してくれる機能がある
0747デフォルトの名無しさん
2006/03/15(水) 19:17:350748デフォルトの名無しさん
2006/03/15(水) 19:45:240749デフォルトの名無しさん
2006/03/15(水) 19:58:53pukiwiki の文法がとっつきにくく感じるのはたぶん
ヘルプや整形ルールのページがあまりにうざいからではないか?
0750デフォルトの名無しさん
2006/03/15(水) 20:22:262chのレスをコピペしただけの「マトメ」は読みづらいし検査されないしすぐ時代おくれだから。もうやめて。
ニャー速のVIPまとめみたいにブログに書いてろよ。それよりWikiBooksに書いたほうが役に立つ。
0751デフォルトの名無しさん
2006/03/15(水) 21:02:530752デフォルトの名無しさん
2006/03/15(水) 21:08:10747の言う通りになるのがベストだとは思うが。
0753デフォルトの名無しさん
2006/03/15(水) 21:14:410754デフォルトの名無しさん
2006/03/15(水) 22:40:340755デフォルトの名無しさん
2006/03/15(水) 22:57:080756デフォルトの名無しさん
2006/03/15(水) 23:07:240757デフォルトの名無しさん
2006/03/15(水) 23:11:12>>46はさっさとワンライナ、$を使わない>>35の回答を早く提出するように。
0758755
2006/03/15(水) 23:58:330759デフォルトの名無しさん
2006/03/16(木) 01:56:47しかしCygwinでDartsやChasenやRuby/ChasenやGyokuroを入れる方がはるかにめんどかったという罠
ASRでもWin32API経由でChasen使えるしな
0760デフォルトの名無しさん
2006/03/16(木) 02:20:140761デフォルトの名無しさん
2006/03/16(木) 02:41:30普通に configure && make && make install するだけだったが
# 不要なので DESTDIR で別の場所にインストールして、速攻で捨てたけど
もし足りないものがあっても、cygwin なら簡単にネットインスコで入るだろ。
ChaSen とやらは、Wiki に、ソースからのインストールが丁寧に説明されてるじゃん。
INSTALL や README もあれば、configure --help もちゃんと書かれてるし。
他は面倒なので調べてないが、どう見ても、単に Linux の流儀を知らないだけ。
あれで文句を言ったら、作った人が可哀想過ぎだ。
0762デフォルトの名無しさん
2006/03/16(木) 03:02:54WinでやるならせめてCoLinuxじゃないと。
0763デフォルトの名無しさん
2006/03/16(木) 09:17:39するんで、単に使いたいだけならバイナリのないものには
手を出さない方がいいよ。あれは Linux 知らない人が雰囲気を
味わうためか、仕方なく Windows を使っている人のためにある
0764デフォルトの名無しさん
2006/03/16(木) 12:21:49Dartsは普通にはいる。めんどくさいのはChasenの2.3.0以降だ。
あれをCygwinに入れるのはみんな結構苦労しているようだ。
ttp://wiki.fdiary.net/yarp/?ruby-chasen
ttp://pcweb.mycom.co.jp/column/yetanother/045/
ttp://d.hatena.ne.jp/svnseeds/searchdiary?word=*%5Bcygwin%5D
とりあえずこの辺見て入れたが、そのあとRuby/ChasenやCabochaがちゃんと
動かなくて結局2.2.9にダウングレードした。
あと上のサイトには書いてないけどDarts0.3でメソッド名の変更があったんで
ChaSenのソースのどこだったか書き直したりしなくちゃならない
0765デフォルトの名無しさん
2006/03/16(木) 17:42:26スマートな解法がありませんでしょうか
カレント aaa/bbb/ccc/ddd.txt
ターゲット aaa/www/zzz/yyy.txt
相対パス ../../www/zzz/yyy.txt
なんにもアイデアがうかびませんorz
0766デフォルトの名無しさん
2006/03/16(木) 18:01:22ttp://www.dm4lab.to/~usa/ruby/d/200301c.html#id20030124_P2_4
というのを見つけた。
File.relative_path("aaa/www/zzz/yyy.txt", File.dirname("aaa/bbb/ccc/ddd.txt"))
で求める結果が得られる気がする。
0767ヽ(´ー`)ノ ◆.ogCuANUcE
2006/03/16(木) 18:03:34require 'pathname'
a = Pathname.new('aaa/bbb/ccc/ddd.txt')
b = Pathname.new('aaa/www/zzz/yyy.txt')
puts b.relative_path_from(a.parent)
本スレでも Pathname の話題が出てたが、確かに記述性が悪いなw
0768デフォルトの名無しさん
2006/03/16(木) 18:03:58require "pathname"
Pathname::new("aaa/www/zzz/yyy.txt").relative_path_from Pathname::new("aaa/bbb/ccc/ddd.txt")
0769デフォルトの名無しさん
2006/03/16(木) 18:05:130770ヽ(´ー`)ノ ◆.ogCuANUcE
2006/03/16(木) 18:06:18relative_path_from の引数はディレクトリなので、それだと
../../../www/zzz/yyy.txt になるようだ。
0771デフォルトの名無しさん
2006/03/16(木) 18:09:070772デフォルトの名無しさん
2006/03/16(木) 18:28:59current = "aaa/bbb/ccc/ddd.txt"
target = "aaa/www/zzz/yyy.txt"
relative = [current.reverse.split(/\//), "\003", target.split(/\//)].flatten.join("/").sub(/(.*)\003\1/, "/\003/").gsub(/[^\/]*\/(?=.*\003)/, '../\1').sub(/\/..\/\003/, '')
0773765
2006/03/16(木) 18:34:39relative = [current.split(/\//).reverse, "\003", target.split(/\//)].flatten.join("/").sub(/(.*)\003\1/, "/\003/").gsub(/[^\/]*\/(?=.*\003)/, '../\1').sub(/\/..\/\003/, '')
0774772 = 773 != 765
2006/03/16(木) 18:35:240775デフォルトの名無しさん
2006/03/16(木) 18:39:20にすればいいがなもう
0776デフォルトの名無しさん
2006/03/16(木) 23:15:32良く分からないから、なんか不思議だ。
0777デフォルトの名無しさん
2006/03/17(金) 08:21:43PStore等の引数に与えると正しく扱われないことや
Ruby1.8以上でないと使えないのが割と困る
あとString#to_pathがないのは不自然だと思った
>>776
772-773のことを言ってるのなら、それはPathnameじゃないよ
Pathnameオブジェクトを文字列のように扱うことはできない
Pathname.new('./test.txt').split #=> エラー
Pathname.new('./test.txt').to_s.split #=> ['./test.txt']
0778ヽ(´ー`)ノ ◆.ogCuANUcE
2006/03/17(金) 09:07:17+ の挙動は String に合わせて、/ とかをこの動作にした方がいいと思うけど。
今は、必要なところでは適宜 String にする方がいいかな。
puts Pathname.new('foo/bar') + '.txt'
# => "foo/bar/.txt"
puts 'foo/bar' + '.txt'
# => "foo/bar.txt"
class Pathname
alias append_child +
def + (other)
return self.to_s + other
end
def / (other)
return self.append_child(other)
end
end
puts Pathname.new('foo/bar') + '.txt'
# => "foo/bar.txt"
puts Pathname.new('foo/bar') / '.txt'
# => "foo/bar/.txt"
0779ヽ(´ー`)ノ ◆.ogCuANUcE
2006/03/17(金) 09:12:40スマソ
0780デフォルトの名無しさん
2006/03/17(金) 10:49:29Queueって普通のデータ構造として使っていい物?
0781デフォルトの名無しさん
2006/03/17(金) 10:55:430782デフォルトの名無しさん
2006/03/17(金) 11:02:330783781
2006/03/17(金) 11:07:270784デフォルトの名無しさん
2006/03/17(金) 11:29:44ぐぐったら先頭行に#! ruby -KsとつければOKと書いてある。
#! ruby -Ks
puts 'だめぽ'
puts 'orz'
って事だよね?日本語だけ化ける(´ω`)
WinXP、ASR1.8.4.0で作業してます
低レベルな質問すまん
0785デフォルトの名無しさん
2006/03/17(金) 11:30:34ないけど十分な早さは出るはず
それでも速度が欲しいなら、自分で拡張ライブラリを書くしかない
0786デフォルトの名無しさん
2006/03/17(金) 11:46:29それは shebang で起動する場合にしか有効じゃないと思う
sjis で書いているなら起動を ruby -Ks script.rb にしる
0787デフォルトの名無しさん
2006/03/17(金) 11:53:17んなこたあない。
0788デフォルトの名無しさん
2006/03/17(金) 11:58:07それであってる。786は無視してよろしい。
0789デフォルトの名無しさん
2006/03/17(金) 11:59:45どう設定してどう入力したらどう表示されたの
0790デフォルトの名無しさん
2006/03/17(金) 12:03:40スクリプトの文字コードが Unicode ってことはないよね?
0791784
2006/03/17(金) 13:29:09ありがとん
>>790の言う通り文字コードをUTF8からSJISにしたら直りました・・・
ごめんなさい(ノд`)
どっかの記事を勘違いして
日本語=UTF8で保存するもんだと思ってました・・・orz
おさわがせしました
0792デフォルトの名無しさん
2006/03/17(金) 13:30:31path = "./data/text.txt"
pt = Pathname.new(base) + path
puts pt, pt.cleanpath
base = "c:\\windows\\"
path = ".\\data\\text.txt"
pt = Pathname.new(base) + path
puts pt, pt.cleanpath
なんじゃこりゃー
c:/windows/./data/text.txt
c:/windows/data/text.txt
c:\windows\/.\data\text.txt
c:\windows\/.\data\text.txt
0793デフォルトの名無しさん
2006/03/17(金) 13:46:37base = "c:/windows/"
path = "./data/text.txt"
p File.join(base,path)
"c:/windows/./data/text.txt"
…あれ?
0794デフォルトの名無しさん
2006/03/17(金) 13:51:57リファレンスマニュアルくらい見れ。ちゃんと仕様通りに動いとるやろ。
0795デフォルトの名無しさん
2006/03/17(金) 13:58:08DOSISH 対応ってもそこまであまねく対応してるわけじゃないんでしょ。
"/" で我慢すりゃええやん。
0796デフォルトの名無しさん
2006/03/17(金) 14:03:01「相対パスやドット混じりの文字列でも綺麗なパスに組み立ててくれる」という類の
面倒を引き受けてくれる便利メソッドであろうという期待はあるな、確かに。
まさかほぼ機械的にjoinしてるだけだとはお天道様も気づくめえ。
マニュアル通りだけどな
0797デフォルトの名無しさん
2006/03/17(金) 14:59:41profile取るとこんな感じでとても遅い。
time seconds seconds calls ms/call ms/call name
42.24 13.91 13.91 20503 0.68 2.54 Array#each
17.38 19.64 5.73 1 5726.00 32937.00 Dir#glob
もっと高速なファイルリスト列挙クラスないですか?
0798デフォルトの名無しさん
2006/03/17(金) 15:11:38Find とか Pathname#find あたりとか。
0799デフォルトの名無しさん
2006/03/17(金) 15:20:21索するところじゃないの。内部にリストを作らずにインクリメンタルに実行す
ることはできるけど、それで高速化するわけではないよ。
たとえば Dir#each や Find.find なんかを使えば、内部のリストを構成せず
にイテレータを使える。だがおれの手元の環境では Dir#each の方が遅かった。
0800デフォルトの名無しさん
2006/03/17(金) 15:31:31なんてのはありそうだけどなー。
0801デフォルトの名無しさん
2006/03/17(金) 15:50:01今度はKernel.catch(throw/catchの事か)が浮上してきましたが。
これフラグ等をやりくりして取っ払うと速くなりますかね。
% cumulative self self total
time seconds seconds calls ms/call ms/call name
23.09 12.65 12.65 26691 0.47 2.69 Array#each
19.64 23.41 10.76 13345 0.81 3.96 Kernel.catch
13.31 30.71 7.29 2045 3.57 5.05 Dir#each
0802デフォルトの名無しさん
2006/03/17(金) 15:51:05今ruby 1.8.4で、cgiで受け取ったフォームフィールドのデータとかに、
半角カタカナが含まれた場合、どう扱われるのん?
0803デフォルトの名無しさん
2006/03/17(金) 16:05:480804デフォルトの名無しさん
2006/03/17(金) 16:11:35そして、 WebProg 板へ。
0805デフォルトの名無しさん
2006/03/17(金) 16:29:410806デフォルトの名無しさん
2006/03/17(金) 16:30:500807デフォルトの名無しさん
2006/03/17(金) 16:31:370808デフォルトの名無しさん
2006/03/17(金) 16:31:460809デフォルトの名無しさん
2006/03/17(金) 16:38:38cgiが動的に生成したhtmlは、charset:euc-jp
formから送信されたデータをcgiオブジェクトから取得したとき、
たとえばtextareaに半角カタカナが入力された場合、それを取得するとどうなるんだろう?
が質問。
これで、ちゃんとした質問になってるのかな。
0810デフォルトの名無しさん
2006/03/17(金) 16:41:17それをどうするかは自由
0811デフォルトの名無しさん
2006/03/17(金) 16:45:56いやいやむしろこちらこそ神速レスありが�d
>>810
するってーと、eucjpで半角カタカナってこと?
0812デフォルトの名無しさん
2006/03/17(金) 17:16:390813デフォルトの名無しさん
2006/03/17(金) 17:34:57送られるときのは<FORM enctype="なんとか">の仕事で基本はURLエンコード。
URLエンコードされる前の文字コードは決まってないと思われ。たぶんブラウザ依存。
デコード後の文字列から推測するしかないんじゃないかな。
0814デフォルトの名無しさん
2006/03/17(金) 17:37:590815デフォルトの名無しさん
2006/03/17(金) 18:02:04ヒント:
ttp://www.google.com/search?num=50&hl=ja&inlang=ja&ie=Shift_JIS&q=%B6%C0%B6%C5%82%CD%8Eg%82%ED%82%C8%82%A2%82%C5&lr=lang_ja
0816デフォルトの名無しさん
2006/03/18(土) 00:31:45Windowsってあれか、cygwin動かすのに必要なやつ?
0817デフォルトの名無しさん
2006/03/18(土) 09:22:55やり方がよく分かりません。
クラスIDだのCOMインターフェースだのの話は少しずつ理解してきたんですが
機能を呼び出すことはできても、機能を追加することができない状態です。
どなたかご教授をお願いします……。
あるいは、もしかするとRubyのみを使ったシェルエクステンション作成は不可能?
0818http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 20:14:42もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
0819デフォルトの名無しさん
2006/03/18(土) 20:46:30マルチ + スレ違い乙
0820デフォルトの名無しさん
2006/03/18(土) 21:51:24何ヵ所マルチしてんだよ市ね
0821デフォルトの名無しさん
2006/03/18(土) 22:12:27ググって一個目のを見たけどRubyだけじゃ無理だな。
要はあるインタフェースを持ったDLLを作らなきゃいかんので、Rubyだけでは当面無理。
C++とMFCでやるのが普通な気がする。
0822デフォルトの名無しさん
2006/03/18(土) 22:21:130823デフォルトの名無しさん
2006/03/18(土) 22:34:32そうみたいだね。
正直スマンカッタ
0824デフォルトの名無しさん
2006/03/19(日) 00:19:120825デフォルトの名無しさん
2006/03/19(日) 00:24:120826デフォルトの名無しさん
2006/03/19(日) 16:58:59Class Hoge
def initialize
@hoge = 0
end
def one
@hoge = 1
end
end
これのテストを書くのはどうやればいいの?
hoge = Hoge.new
hoge,oneを実行すると、インスタンス変数の@hogeが1になるけど、
それを確認する為のテストを記述するのは
別のクラス(class HogeTest < Test::Unit::TestCase)だよね?
0827デフォルトの名無しさん
2006/03/19(日) 17:54:120828デフォルトの名無しさん
2006/03/19(日) 18:30:08ここにも書かれていますが,require 'socket' したRubyスクリプトを
Exerb で exe 化すると,実行時にエラーが発生します。
うちの環境では,require 'net/http' とすると,.exeの実行時に
「プロシージャエントリポイント fcntl がダイナミックリンクライブラリ 〜.exe から見つかりませんでした。」
というエラーが発生します。
この問題の解決法はないのでしょうか?
0829デフォルトの名無しさん
2006/03/19(日) 18:32:31んなこたない。
けど、Rubyでprotected/privateなテスト項目は書けない書かないというのはFAQ
0831デフォルトの名無しさん
2006/03/19(日) 18:55:420832デフォルトの名無しさん
2006/03/19(日) 19:00:32instance_evalつかえばok
p hoge.instance_eval('@hoge') #=> 1
あるいは、テストのときだけアクセッサを追加してやるとか。
require 'test/unit'
class Hoge
attr_accessor :hoge
end
class HogeTest < Test::Unit::TestCase
def test
hoge = Hoge.new; hoge.one
assert_equal(1, hoge.hoge)
end
end
0833デフォルトの名無しさん
2006/03/19(日) 19:00:49外から見えないものをチェックする必要はない、という立場も納得できる。
そうでないと、>>826の例だとデータ構造を変えるようなリファクタリングする時に
テストまで書き換えなきゃいけないし本末転倒じゃ? みたいにね。
それはさておき、>>826 の one() をテストしたいなら、
instance_eval でインスタンス変数を覗けばいいんじゃまいか。
0834デフォルトの名無しさん
2006/03/19(日) 19:09:16> Rubyでprotected/privateなテスト項目は書けない書かないというのはFAQ
Ruby に限った話じゃないよね。
C で check 使ってテスト書くけど、泣く泣く static 外しとります・・・
0835デフォルトの名無しさん
2006/03/19(日) 20:15:56>Rubyでprotected/privateなテスト項目は書けない書かないというのはFAQ
そんなうそを書かないでください。おねがいします。
Rubyはなんでも動的なので、protected/privateなメソッドも実行時にpublicに返ることができます。
これをつかえば、テストスクリプト中でだけメソッドをpublicにしてやることができ、テストも問題なく実行できます。
class Hoge
public :foo # fooメソッドをpublicにする
end
>>826 はインスタンス変数にアクセスする場合だからpublic/protected/privateとはあんまし関係ないけど。
0836デフォルトの名無しさん
2006/03/19(日) 20:41:270837デフォルトの名無しさん
2006/03/19(日) 20:42:590838デフォルトの名無しさん
2006/03/19(日) 21:01:04__send__
0839デフォルトの名無しさん
2006/03/19(日) 21:03:30可視性が影響するテストが終わった後に public にすれば良いのではなかろうか。
0840デフォルトの名無しさん
2006/03/20(月) 01:57:28exerbのコアはコンパイルしましたか?
0841828
2006/03/20(月) 02:52:25いえ,普通に exerb-3.3.1.tar.gz から setup.rb でインストールしただけです。
exerbのコアが 1.8.2 で,実行環境が 1.8.4 だから問題が生じているのでしょうか。
ということは,exerbの 1.8.4 コアを作れば解決する可能性があるわけですね。
そのコンパイル手法がまとめてあるサイトなどがありましたらご紹介ください m(__)m
0842828
2006/03/20(月) 02:55:440843デフォルトの名無しさん
2006/03/20(月) 12:26:55>せんせー! 可視性によって動作が変わるようなメソッドだったらどうするんですか!?
どんなメソッドだよ。まったく思い浮かばないから例をあげてみてくれ。
つか、なんでこんなありそうもないものを持ち出すのかね。そこまでして自分が正しいと主張したいのか。
0844デフォルトの名無しさん
2006/03/20(月) 12:37:520845デフォルトの名無しさん
2006/03/20(月) 13:17:21なにムキになってんの?
0846デフォルトの名無しさん
2006/03/20(月) 13:38:060847デフォルトの名無しさん
2006/03/20(月) 14:06:220848デフォルトの名無しさん
2006/03/20(月) 14:07:560849デフォルトの名無しさん
2006/03/20(月) 14:26:42そう思ったら適切に誘導しろよ。
0850デフォルトの名無しさん
2006/03/20(月) 15:14:360851デフォルトの名無しさん
2006/03/21(火) 22:01:17これはどういう仕組みでRubyを高速化するのでしょうか。
一応ググってみたのですが、私にはYARVのHPに書かれている内容が理解できませんでした。
コンパイラーという単語が出てきたのでRubyのプログラムを機械語に置き換えて高速化するのかなと思ったのですが…
将来的にRubyの処理速度がC言語に近づくということなのか非常に気になります。
0852デフォルトの名無しさん
2006/03/21(火) 22:08:16もう少し、何が理解できなかったのか、どういう仕組みか知るためにどんな努力ができるのか具体的に。
どういう説明をすればあなたが満足するのか、あいまいで見えないです。
0853デフォルトの名無しさん
2006/03/21(火) 22:18:03Hash#mergeとHash#updateを
まちがえた
0854デフォルトの名無しさん
2006/03/21(火) 22:20:16インタプリタによる実行と仮想マシンによる実行の違いから入って、
仮想マシンの高速化技術について学んでから読み直してみれば?
0855デフォルトの名無しさん
2006/03/21(火) 22:27:38高速化の理屈は俺もよくわかっていないが
とりあえず「Rubyのプログラムを機械語に置き換えて高速化する」わけではない。
なぜかというと、そもそもruby自体が
スクリプトを読み込むときに内部表現へとコンパイルしているから。
YARVではそのrubyの内部表現を、さらに別のYARV特有の内部表現へと
コンパイルしている、というだけ。
あんま詳しくないので、突っ込みなどあればお願いします>他の方
0856デフォルトの名無しさん
2006/03/21(火) 22:47:15既存の処理系のどこをどう高速化したとかいう話じゃないと。
0857デフォルトの名無しさん
2006/03/21(火) 22:54:25ソースコードのまま、言い方をかえれば抽象度が高い状態で保持するが、
YARVはもっと細かいレベルまで分解し、仮想機械の機械語に変換する。
そのままだと大して速くならないが、ある程度は最適化を施すので、一度変換された
命令は元のrubyよりは高速に実行できる(ことが多い)。
0858デフォルトの名無しさん
2006/03/21(火) 22:57:08逆にそのある程度は最適化施す、ということをやっても大して速くはならないよ。
最適化施すいうても、動的なRubyではやれることは少ないから。
0859851
2006/03/21(火) 23:43:25プログラム初心者なので、Rubyの基本的な用語や使い方を少し知っている程度です。
YARVに書かれていることが理解できないというより
理解する気になれなかったので、基礎学習をある程度終わらせてからリトライしようと考えています。
ただ、素人の私がプログラムを学んで感じたRubyの弱点は処理速度なので
それが改善される可能性があるなら魅力的な話だと思い、概略だけでも知りたいと思ったので質問しました。
YARVによってRubyが
○どういう原理で
○どれほど高速になるのか
それが知りたかったのです。
0860852
2006/03/21(火) 23:54:47>ただ、素人の私がプログラムを学んで感じたRubyの弱点は処理速度なので
素人のあなたが他のどの言語と較べて、どういう処理に関して感じたのですか?
○どういう原理で
残念ながら、自称「初心者」「素人」には理解不能でしょう。
○どれほど高速になるのか
処理によりますが、数倍〜数十倍のオーダーと思われます。
さらにそんな乱暴な概論だけで言うなら、処理によっては遅くなることもありえます。
(っていうのは実装に依存するという意味なので、YARVに関したことじゃないけど。)
0861デフォルトの名無しさん
2006/03/22(水) 00:13:480862デフォルトの名無しさん
2006/03/22(水) 02:38:39なんでなの?
今の Ruby だって、当然、機械語に翻訳してるよね。
VM 用の機械語だと、何で速くなるのか分からないなぁ。
0863デフォルトの名無しさん
2006/03/22(水) 02:46:18>857
あと、
http://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%97%E3%83%AA%E3%82%BF
0864デフォルトの名無しさん
2006/03/22(水) 03:06:54wikipedia を読むに、Ruby は単純な実装なので遅いということ?
0865デフォルトの名無しさん
2006/03/22(水) 07:44:240866デフォルトの名無しさん
2006/03/22(水) 09:18:46今のRubyは機械語に翻訳しているわけではないよ。
スクリプトを解釈して逐次実行している。
で、最適化もなしに、仮想機械の機械語に変換するだけで、
そんなに速くなるとは思えないんだけど、どうなんだろう?
0867デフォルトの名無しさん
2006/03/22(水) 10:08:12YARVで高速になる理由は主に3つあります。
・木構造をやめて命令(バイトコード)の配列にすること・・・
現在のRubyは、プログラムを内部で木構造に変換し、木構造をたどりながら実行します。
YARVは、その木構造を(簡単にいえば)命令の配列に変換して実行します。
基本的には、木構造をたどるよりは配列にアクセスするほうが速いので、YARVのほうが高速になります。
・バイトコードにすると高速化のテクニックを流用できること・・・
C言語などのコンパイラで研究された高速化のための細かなテクニックが、バイトコードインタプリタにも流用できます。
詳しくはコンパイラの本を買って「最適化」に関する章を読んでください。
・CPUのネイティブコードに変換する機能をもっていること・・・
JITやAOTコンパイラを使うことで、Rubyのプログラムの一部をネイティブコードに変換しているようです。
YARVでどこまで実現しているかはよくしらないけど、JVMはJITでかなーり高速化されました。
YARV(というかバイトコードインタプリタ)にして速くなる理由は主にこの3つです。特に前2つは重要。詳しくは、中の人のプレゼン資料を読むとよいでしょう。
http://www.atdot.net/yarv/youth_2004_sasada_final.ppt
ただ、Rubyは最適化しにくい(高速化することをほとんど考慮されていない)言語なので、YARVにしたところでPHPやPythonより速くなるかどうかは微妙です。
ベンチマークではかなり高速化されたという結果がでてますが、それがWebアプリなどでもそのまま反映されるとは限りません。
Rubyを使うなら、ほかの言語との速度比較でもんもんするより、「自分にとって必要な速度(受け入れられる速さ)でうごけばそれでよい」と割り切ることをおすすめします。
個人的には、YARVがネイティブスレッド対応らしいので、高速化よりもそっちのほうに期待です。
あと、1プロセスで複数インスタンスが作成できるようになるようなので、Webアプリではこっちのほうがうれしいと思います。でもCGI環境じゃ使えません。残念。
以上です。お役に立てれば。
0868デフォルトの名無しさん
2006/03/22(水) 11:09:15ほんと?
0869デフォルトの名無しさん
2006/03/22(水) 11:49:50プレゼン資料32ページ目から引用
>AOTコンパイラ
>・RubyプログラムをCプログラムに変換
>・命令記述を変換して貼つけ(テキスト処理)
>・ほぼすべての命令に対応
現在のYARVがどこまでやっているかはしらん
0870デフォルトの名無しさん
2006/03/22(水) 13:35:38input = '\x95\xB6\x8E\x9A\x97\xF1' # Shift-JISでの"文字列"に相当
print unescape(input) # => 文字列
という,unescape という関数を作りたいのですが,今は
def unescape(input)
eval("\"#{input}\"")
end
として使っています。
しかし,これでは,evalを使っているため,
unescape('"; print "hoge"; "')
などとすれば,任意のコードが実行できてしまいます。
もっと安全な代替法があれば教えて下さい。
0871デフォルトの名無しさん
2006/03/22(水) 13:51:380872デフォルトの名無しさん
2006/03/22(水) 13:53:17こんなのはさすがに直球過ぎるか・・・
def unescape(input)
input.gsub(/\\(?:x([0-9A-Fa-f]{2})|(.))/) { ($1) ? [$1].pack("H2") : $2 }
end
0873デフォルトの名無しさん
2006/03/22(水) 17:43:53引数の数が違う同名のメソッドは定義できますか?
できないのであれば、どのように実装したらスマートですかね。
引数のかずでcase文とかしかおもいつかないのですが…
0874デフォルトの名無しさん
2006/03/22(水) 17:50:350875デフォルトの名無しさん
2006/03/22(水) 17:51:470877デフォルトの名無しさん
2006/03/22(水) 20:30:47こういうのはどうよ、とRuby初心者が提案してみるテスト。
def overload(args, pattern)
if pattern.kind_of? Integer
return if args.length != pattern
elsif pattern.kind_of? Array
return if args.length != pattern.length
pattern.each_index do |i|
return if !args[i].kind_of? pattern[i]
end
else
raise ArgumentError, "pattern = Integer | Array"
end
yield *args
end
def hoge(*args)
overload args, [Integer, Integer] do |x,y|
return x + y
end
overload args, [String, String] do |x,y|
return x.to_i + y.to_i
end
overload args, 3 do |x,y,z|
return x + y + z
end
end
0878デフォルトの名無しさん
2006/03/22(水) 20:58:07実装の良し悪しはよくわからんが、メソッドのオーバーロードを支援するモジュールとかがあってもいいな。
と思ったらttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/32846とか。
ttp://mono.kmc.gr.jp/~oxy/hiki.cgi?Library+Syntax
は利用者側のコードは877とほとんど同じだな。
0879デフォルトの名無しさん
2006/03/22(水) 21:05:04高速化が必要になると真っ先に削らなきゃならなくなることが多いので
なんとなく敬遠してしまう。
使い分けるのは脳がもったいないし。
0880デフォルトの名無しさん
2006/03/22(水) 22:10:00ラッパーの実装が相当まずいなら別だけど。
……というのが LL way だと思う。
0881デフォルトの名無しさん
2006/03/22(水) 23:27:31pathnameが気になるほど速度を要求するのなら
拡張ライブラリpathname.soを実装するのが正解だと思う
0882デフォルトの名無しさん
2006/03/22(水) 23:43:520883851
2006/03/22(水) 23:49:00自分の位置付けを明確にしたほうが良いと思ったので
あえて「初心者」と使ったのですが、余計な言葉だったようですね。
それはともかく、返信ありがとうございました。
2D画像の高速描画を試した時に、Rubyの処理速度に対して不満を感じたのですが
実際に他の言語と比較したわけではありません。
あるいは、インタプリタ言語がスクリプトをその都度解釈して実行している、という解説が
私に「Rubyは遅い」という印象を持たせているのかもしれません。
>>867
返信ありがとうございます。リンク先のプレゼン資料も全て見ました。
ほとんど全ての単語を調べながら見ることになったのですが、YARVを理解する良いキッカケができました。
Ruby関連の書籍には意識が向いていたのですが、これからはコンパイラの書籍にも意識を向けようと思います。
「自分にとって必要な速度(受け入れられる速さ)でうごけばそれでよい」
という言葉にモヤモヤが晴れた気がします。本当にありがとうございました。
0884デフォルトの名無しさん
2006/03/22(水) 23:50:28extendのが正しいんじゃないかと思うんだけどどうなってんの
0885デフォルトの名無しさん
2006/03/23(木) 00:18:59このexeファイルの存在するディレクトリパスを
確実に得る方法ってありますか?
(例:c:\ruby\test.exeを実行した場合、カレントディレクトリに関わらずc:\ruby\を得る)
exeファイルと同じ場所にあるファイルをオープンするようにしたいのですが……
0886デフォルトの名無しさん
2006/03/23(木) 00:43:400887デフォルトの名無しさん
2006/03/23(木) 00:55:37わかってるかもしれないけど、 Ruby も含めて最近のスクリプト言語はプログ
ラムをその都度解釈実行してるわけじゃないよ。
0888デフォルトの名無しさん
2006/03/23(木) 01:46:13一般に動画処理やゲームの様なリアルタイムの処理が要求される分野では
Ruby含むスクリプト言語は向かない事が多い。
適材適所。高速処理なら素直にコンパイラ使った方が良いよん。
0889デフォルトの名無しさん
2006/03/23(木) 01:52:35Exerb.filepath
0890デフォルトの名無しさん
2006/03/23(木) 04:37:03Array#reject は無いし。ちょっと、混乱した。
ひょっとして、結構グダグダだったりする?
コピーとってから処理するのが定石なのだろうか。
0891デフォルトの名無しさん
2006/03/23(木) 05:28:421.9 だと enum.max_by{|x| x.some_method}.some_method と出来るみたいですが、
DRY に反するので出来れば避けたいです。
0892デフォルトの名無しさん
2006/03/23(木) 05:57:09inject を使ってゴニョゴニョやれば出来るけど、おとなしく map を使うのがいいと思う。
0893デフォルトの名無しさん
2006/03/23(木) 07:30:12max = 0
enum.each{|e| v = e.some_method; max = v if max < v}
enum.each_with_index {|e,i| v = e.some_method; max = v if i == 0 || max < v; max }
enum.inject(0) {|max,e| max < (v = e.some_method) ? max = v : max }
あんまり簡単にはできないみたいだな。
Enumerableに自分でメソッドを追加したほうがいいかもね。
0894デフォルトの名無しさん
2006/03/23(木) 10:14:10> Array#reject は無いし。
あるよ。
0895デフォルトの名無しさん
2006/03/23(木) 12:00:450896デフォルトの名無しさん
2006/03/23(木) 12:11:580897デフォルトの名無しさん
2006/03/23(木) 13:09:52アピールが足りない
どっちか、あるいは両方が理由じゃないか?
使われないのは
0898デフォルトの名無しさん
2006/03/23(木) 13:14:590899デフォルトの名無しさん
2006/03/23(木) 13:20:370900デフォルトの名無しさん
2006/03/23(木) 13:33:37いろいろあってどれを使えばよいのかわからん。
どれが良いの?
あとインストール方法教えて。
0901デフォルトの名無しさん
2006/03/23(木) 14:38:34ttp://www.ruby-lang.org/ja/man/?cmd=view;name=ReFe
0902885
2006/03/23(木) 15:26:46Dir.pwdで取得できるのはカレントディレクトリなので
別の場所から実行した場合にうまくいかないのです
>>889
ありがとうございました!
というか、doc/class.ja.rdに書いてあったんですねorz
>>896
「コマンドラインが苦手」
「WindowsにはHTML版リファレンスがあるから」も追加で
0903デフォルトの名無しさん
2006/03/23(木) 15:27:51>Singletonってextendじゃなくてinlcudeして利用するんだな
>extendのが正しいんじゃないかと思うんだけどどうなってんの
たしかに。singleton.rbはクラスメソッドを追加するようになっているから、includeよりextendのほうが自然だ。
まあ module_eval とか駆使すれば include でもクラスメソッドを追加できるとは思うけど、なんか直感的じゃないな。
0904デフォルトの名無しさん
2006/03/23(木) 15:51:32ログインするページ → ログイン情報入力 → 会員メニューが表示
(フォーム)
この会員メニューを取得したいのですが、どんなコードを書いたら良いのでしょうか。
たとえば
require 'net/http'
include Net
hobj = HTTP::new(ログインするアドレス)
hobj.start
hobj.post('form.asp', 'userid=xxxx')
hobj.post('form.asp', 'pass=yyyy')
とやればよいのか、その後のページ変移はどうフォローすればよいのかサッパリで。
参考となるコードとか何かありました教えてください。
0905デフォルトの名無しさん
2006/03/23(木) 15:55:15HTML Help って使いにくいと思う
タブブラウザみたいに使えないし
0906デフォルトの名無しさん
2006/03/23(木) 16:07:54君の質問内容はhttpsと全然関係ない。
君の書いてるコードはそもそもhttpsになってない。
POSTの仕方もおそらく間違ってるが、そんな調子ではそもそもPOSTでいいのかどうかも信用できない。
サーバ側でどうセッションを管理するのかわからないから与えられた情報だけでは回答できない。
こんなところか。
とりあえず、ログインページの仕様を明確に説明するとか、セッションがどう管理されるのかを説明するとか、何がどうhttpsなのか説明するとか、そのあたりからだね。
0907デフォルトの名無しさん
2006/03/23(木) 16:14:01勉強不足という事ですね、まぁその通りなんですが。
やりたい事は
フォームにuserid,passwordを入力して、変移した画面を取得したい、
とそれだけなんです。
ですが、ネットワーク関係はさっぱりなのでどんな所から勉強したらよいのか
という基本そのものからわかってないのが現状ですorz
0908デフォルトの名無しさん
2006/03/23(木) 16:30:29まずは「HTTP」から自力で勉強しよう。基本がわかってないなら基本から。
まだRuby系スレに質問するレベルでないことは確かだ。
0909デフォルトの名無しさん
2006/03/23(木) 16:31:160910デフォルトの名無しさん
2006/03/23(木) 17:25:00Rubyの本でなおかつCGIを取り扱ってるものを読むべき
0911デフォルトの名無しさん
2006/03/23(木) 18:43:38よいんじゃまいか
あるのかどうか知らんが
0912デフォルトの名無しさん
2006/03/23(木) 19:03:16late replyだけど、privateなインスタンス変数を参照するには、Object#instance_variable_get というのが使えるよ。
以下、マニュアルから引用:
------------------------------------
instance_variable_get(var)
ruby 1.8 feature
オブジェクトのインスタンス変数の値を取得して返します。
var にはインスタンス変数名を文字列か Symbol で指定しま す。
インスタンス変数が定義されていなければ nil を返します。
class Foo
def initialize
@foo = 1
end
end
obj = Foo.new
p obj.instance_variable_get("@foo") # => 1
p obj.instance_variable_get(:@foo) # => 1
p obj.instance_variable_get(:@bar) # => nil
0913デフォルトの名無しさん
2006/03/23(木) 19:08:47pem作るの面倒だから結局OpenSSL::SSL::VERIFY_NONEでほげほげlきdjf;あぇいj
require 'http-access2'
client = HTTPAccess2::Client.new(nil, 'UserAgent')
client.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE
res = client.get('http://foobar.com/')
p res.header
puts res.content
res = client.post('https://foobar.hoge/login.hoge', {'id'=> 'foo', 'pass' => 'bar'})
0914デフォルトの名無しさん
2006/03/23(木) 19:10:25904>>の質問内容はhttpsと全然関係ない。
0915デフォルトの名無しさん
2006/03/23(木) 19:15:47和書ならほぼ2冊しかないような。そんな限定しなければもっといい本もあるだろう。
>>911
意味わかんね。なぜにRSSリーダ?
0916デフォルトの名無しさん
2006/03/23(木) 19:19:430917デフォルトの名無しさん
2006/03/24(金) 01:10:34というか、認証してすぐの1画面が欲しいだけなら、単純にURLにパラメタひっつけて送信すれば次の画面の内容までは返してくれるだろう。
その先を取りに行くのにはCookieとかは欲しいだろうけど、とりあえずそうではないんだろ?
0918デフォルトの名無しさん
2006/03/24(金) 01:58:37foo.cfgってファイルにして
require "foo.cfg"
ってやるとそんなファイルねーって怒られるんだけど
.rb, .so以外は指定できないんですか?
require "foocfg.rb"
なら問題ないみたいですが。
0919デフォルトの名無しさん
2006/03/24(金) 02:25:32YAML か Marshal を使うのが普通なのかな?
0920デフォルトの名無しさん
2006/03/24(金) 02:30:11できない。 rb や so でない独自のファイルを読み込むときは load を使うのが普通。
0921デフォルトの名無しさん
2006/03/24(金) 02:31:59設定ファイルの読み込みだけなら load 使ったら良いかも。
requireと違って、拡張子の自動補完もしないし
同じファイルでも無条件に読み込む。
扱いにはちょっとだけ注意が必要かもね。
…ただ、設定ファイルを開発者以外が触る場合は
ちゃんと設定ファイル読み込みの処理を書くべき。
Ruby プログラムとして解釈出来るなら文字通り何でも実行出来てしまうからね。
0922デフォルトの名無しさん
2006/03/24(金) 09:01:58どちらかといえばfoocfg.rbにリネームすることをオススメしたい
Rubyスクリプトであるということがはっきりするし
0923デフォルトの名無しさん
2006/03/24(金) 09:44:28それだと、ライブラリとしてのrubyスクリプトと、設定ファイルとしてのrubyスクリプトがごっちゃになってしまう。
だからfoo.cfgにしたんだと思う。PHPだと.php以外の拡張子にするのはよくやってるしね。
とはいってもrubyとPHPでは仕様が違うので、ここはあきらめて foo.cfg.rb に一票。
0924デフォルトの名無しさん
2006/03/24(金) 10:00:400925デフォルトの名無しさん
2006/03/24(金) 11:10:30が、いやなら YAML にしちゃうかな、今なら
速度が気になるなら YAML を読んで Marshal#dump
タイムスタンプを比較して YAML が更新されてたら
そっちを読む
こんな感じか
0926デフォルトの名無しさん
2006/03/24(金) 11:50:140927デフォルトの名無しさん
2006/03/24(金) 12:20:02Winでデバッガに特化したGUIデバッガない?
0928デフォルトの名無しさん
2006/03/24(金) 12:45:33ない。コマンドラインでdebug.rb使うか、RDEのデバッガ機能だけを使う。
RDEは大掛かりっていうほど大掛かりじゃないと思うけどなー。Eclipseなんかと比べると。
0929デフォルトの名無しさん
2006/03/24(金) 13:24:25同意
RDEなんてまさに大掛かりじゃないGUIデバッガが欲しい人のためのツールのように思われる
0930デフォルトの名無しさん
2006/03/24(金) 13:24:560931デフォルトの名無しさん
2006/03/24(金) 14:01:440932デフォルトの名無しさん
2006/03/24(金) 14:04:410933デフォルトの名無しさん
2006/03/24(金) 21:52:44...
end
Ruby って cond が false や nil 以外は true として処理するんですね。
気になる人って結構居そうな気がする。
0934デフォルトの名無しさん
2006/03/24(金) 22:00:260935デフォルトの名無しさん
2006/03/24(金) 22:25:13それはそれである意味合理的だし郷に入ってはで慣れるしかない。
0936デフォルトの名無しさん
2006/03/24(金) 22:25:53nil は bool じゃないと思うが。
0937デフォルトの名無しさん
2006/03/24(金) 22:26:510938デフォルトの名無しさん
2006/03/24(金) 22:27:500939デフォルトの名無しさん
2006/03/24(金) 22:43:50今後のために一時的に蓄えておくこと、
もしくは遊戯や競技のために大量の水をためておく構造物のことです
0940デフォルトの名無しさん
2006/03/24(金) 23:07:33どういう仕様だったらいいと思う?
>>939
おもしろない
0941デフォルトの名無しさん
2006/03/24(金) 23:10:41初心者スレでいちいちこんなレスつけるなよ。
0942デフォルトの名無しさん
2006/03/25(土) 00:30:36たぶん933は、0とか""とかも偽として扱って欲しいんだろう
俺は今の実装のほうが良いと思うが
0943デフォルトの名無しさん
2006/03/25(土) 00:34:21俺は0が偽の方がしっくりくるな
今の実装はどの辺が利点なの?
0944デフォルトの名無しさん
2006/03/25(土) 01:22:180945933
2006/03/25(土) 01:32:28うろ覚えですが、C# や Python だと bool しか受け付けなかったような?
個人的な意見ですが、そちらの方式の方が明瞭でで、
Ruby の方式は便利だけど Perl に近くて少し見通しが悪いかなと感じました。
余談ですが、「プログラミング C#」の P256に以下の様な記述があります。
> C# 言語設計者たちは、あいまいなコードが仕様されることを防止すると共に、
> if ステートメントの基本原則を尊守しようとしていることがわかります。
0946933
2006/03/25(土) 01:39:11non-nil 的な嗜好かな。まぁ、どっちでも良いか。
0947デフォルトの名無しさん
2006/03/25(土) 01:45:57もちろん0も偽にはならない
ってことだよね? いいのかな
0948デフォルトの名無しさん
2006/03/25(土) 01:49:18CがそうだからRubyも倣えという主張があるなら
それには首肯しかねるな。
0949デフォルトの名無しさん
2006/03/25(土) 03:04:24>945-946を見る限り、933はむしろboolean原理主義者に見えるが。
(論理値が期待されるところにはtrueかfalseか、そのいずれか帰着される式以外あってはならない)
0950デフォルトの名無しさん
2006/03/25(土) 03:06:430951>>1は妹に恋をする
2006/03/25(土) 04:17:36元のPerlが0や"0"を偽として扱うことによっていろんな弊害を産んでいたから、
Rubyではfalse,nil以外偽と扱わないようになったんだと覚えてる。
例えばwhile($dest = $src){ .... みたいな制御構文で、
$srcが何かのタイミングで"0"になったらいきなりループ抜けてしまったり、とか。
0952デフォルトの名無しさん
2006/03/25(土) 09:36:360953デフォルトの名無しさん
2006/03/25(土) 09:48:13Perlでも "0" は偽じゃないよ。と、突っ込んでみる。
0954デフォルトの名無しさん
2006/03/25(土) 10:20:24false
0955940
2006/03/25(土) 11:57:28Rubyは、厳密さよりも簡潔さを優先しているから、boolean以外のものも受け付けるようになっている。そっちのほうが簡潔に書けるからね。
あとは慣れの問題じゃないかな。Rubyの仕様に慣れると、if文の条件式にいちいち obj != null とかつけるのがすげー面倒くさく感じるようになる。
Perlだと0や""も偽として扱うようになってるけど、これはちょっと困るよね。C言語はアセンブラみたいなもんだから0を偽とする仕様はわかるけど(ほかに偽となるような適当な値がないので)。
あと「条件式は必ずboolean」という仕様だと、
obj = obj1 || obj2 || obj3
tmpdir = ENV['TEMP'] || ENV['TMP'] || '/tmp'
という記述ができなくなるので、おれ的には反対。
>>941
おもしろくないっていわれたからって、つっかかってくんなよ
0956デフォルトの名無しさん
2006/03/25(土) 12:12:33初心者スレだと予想される答もありきたりでおもしろくなさそうだろうからじゃないか?
0957デフォルトの名無しさん
2006/03/25(土) 12:44:52defined() を使わないといけないところで忘れるというミスを誘発しやすいが。
0958デフォルトの名無しさん
2006/03/25(土) 13:56:350959デフォルトの名無しさん
2006/03/25(土) 19:06:28obj ||= "defaultvalue"
みたいな記述が便利だ
0960デフォルトの名無しさん
2006/03/25(土) 19:44:06PHPでそれやって真偽値になってショボーンってなった。
0961デフォルトの名無しさん
2006/03/25(土) 19:47:110962デフォルトの名無しさん
2006/03/25(土) 23:24:070963デフォルトの名無しさん
2006/03/26(日) 01:56:020964デフォルトの名無しさん
2006/03/26(日) 02:22:35どんな機能なのだろう。
便利であってもへんてこな文法なら導入にはちょっと〜。
0965デフォルトの名無しさん
2006/03/26(日) 03:54:58nil と false を区別したいときなんてほとんど無いからなあ。
0966ヽ(´ー`)ノ ◆.ogCuANUcE
2006/03/26(日) 03:59:165.8.x でも patch 当てたら使えるけど、基本的には Perl6 の機能だからね。
Ruby は Object#nil? あるから要らんよね。
>>964
|| や or は真偽値のチェックをするけど、dor(defined-or) 演算子は
undef (Ruby だと nil) かどうかをチェックする。// と err だな。
$n = some_op() or 5; # some_op() が偽を返したら 5 を代入
$n = some_op() err 5; # some_op() が undef を返したら 5 を代入
0967デフォルトの名無しさん
2006/03/26(日) 10:53:09foo = defined?(bar()) ? bar() : 5
?で終る述語を三項演算子に使うとなんかカッコワルイ...
0968ヽ(´ー`)ノ ◆.ogCuANUcE
2006/03/26(日) 11:36:07うーん、素直に二行に書いた方が良さそうだな。
まぁ何でも一行に詰め込むような言語でもないし、いいんじゃね?
n = some_op()
n = 5 if n.nil?
0969デフォルトの名無しさん
2006/03/26(日) 11:56:23n = (v = some_op()) ||= 5
0970デフォルトの名無しさん
2006/03/26(日) 12:04:37一般的には defined? でテストしないといけない気がしたのだな。
0971デフォルトの名無しさん
2006/03/26(日) 15:33:41個人的には、リンク先とかは2以降に書いて、1には質問するときの諸注意とか、スレのローカルルールみたいなのを書いた方がいいと思う。
あと初心者スレなんで、既出の質問とか似たような質問もOKとしてあげたい。たとえ回答が「XXを読め」だけだとしても。だめかな?
0972デフォルトの名無しさん
2006/03/26(日) 16:01:57良いのでテンプレよろ
0973デフォルトの名無しさん
2006/03/26(日) 17:30:23> あと初心者スレなんで、既出の質問とか似たような質問もOKとしてあげたい。
せめてスレ内検索くらいはして欲しいと思うのだが、そこまで甘やかす必要、ある?
0974デフォルトの名無しさん
2006/03/26(日) 17:32:28とりあえず、テンプレよろ。
0975デフォルトの名無しさん
2006/03/26(日) 17:43:47初心者そっちのけで毎度毎度のループ議論に突入禁止
0976デフォルトの名無しさん
2006/03/26(日) 17:59:410977デフォルトの名無しさん
2006/03/26(日) 18:01:03いいんじゃない?気が向いたやつが「>>999をよめ」とか回答するだけで。
テンプレ、PHP質問スレを参考にしてみた。
---
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
関連スレやURLは2以降。Ruby on Railsの質問はWebProg板のRailsスレで。
■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
・ぐぐる
・マニュアルで探す http://www.ruby-lang.org/ja/man/
・FAQを読む http://ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・エラーメッセージ(なるべくそのままで)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0978デフォルトの名無しさん
2006/03/26(日) 18:02:00---
#本スレ
Rubyについて Part 19
http://pc8.2ch.net/test/read.cgi/tech/1140762419/
#関連スレ
【Agile】Ruby on rails相談所【DRY】
http://pc8.2ch.net/test/read.cgi/php/1118663500/
RUBYの宿題教えてください。
http://pc8.2ch.net/test/read.cgi/tech/1106572657/
【最高言語】 Rubyist Magazine創刊 【ルビま!】
http://pc8.2ch.net/test/read.cgi/tech/1094825807/
#過去スレ
Ruby初心者質問スレPart1
http://pc5.2ch.net/test/read.cgi/tech/1100534824/
Ruby初心者質問スレPart2
http://pc8.2ch.net/test/read.cgi/tech/1107799347/
Ruby初心者質問スレPart3
http://pc8.2ch.net/test/read.cgi/tech/1125587131/
Ruby初心者スレッドPart4
http://pc8.2ch.net/test/read.cgi/tech/1137927749/
0979デフォルトの名無しさん
2006/03/26(日) 18:03:27Ruby Home Page
http://www.ruby-lang.org/ja/
リファレンス
http://www.ruby-lang.org/ja/man/
FAQ
http://ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
RAA - Ruby Application Archive
http://raa.ruby-lang.org/
日本Rubyの会 公式Wiki - 日本Rubyの会Wiki
http://jp.rubyist.net/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
Matzにっき
http://www.rubyist.net/~matz/
<rubyXML/>
http://www.rubyxml.com/
Ruby Weekly News @ Ruby Garden
http://www.rubygarden.org/rurl/html/
Ruby hotlinks 五月雨版
http://rrr.jin.gr.jp/~znz/samidare/
0980デフォルトの名無しさん
2006/03/26(日) 18:38:39> 「>>999をよめ」
p res[999] # => "埋め\n"
0981デフォルトの名無しさん
2006/03/26(日) 18:39:38http://www.ruby-doc.org/
直接こっち側を載せた方が良いかもしれない。
http://www.ruby-doc.org/core/
http://www.ruby-doc.org/docs/ProgrammingRuby/
0982デフォルトの名無しさん
2006/03/26(日) 18:43:05リンク切れてるな。
0983デフォルトの名無しさん
2006/03/26(日) 19:20:42検索してるとときどきアンカーのマウスオーバーで2ちゃんブラウザみたいに
ポップアップが出てくる javascript が仕込んである過去ログサイトもあったりする
ああいうのがないと過去ログ探しにくいかもね
0984デフォルトの名無しさん
2006/03/26(日) 21:14:080985977
2006/03/27(月) 04:41:13>>977
でいいのか?かなり初心者寄りのテンプレにしちゃったんだけど。
>>981
初心者が英語を読むとは思わないが、載せるのは悪くないので追加してみる。
>>982
こっちだな。すまんかった。
http://www.rubyist.net/~kazu/samidare/
0986977
2006/03/27(月) 05:21:55Ruby初心者スレッドPart5
ttp://pc8.2ch.net/test/read.cgi/tech/1143403165/
変更点
・hotlinksのリンク修正
・ProgrammingRubyのリンク追加
・rubydoc.orgのリンク追加
・rubyforge.orgのリンク追加
・Rubyの本一覧のリンク追加
・リンクに簡単な説明を追加
0987デフォルトの名無しさん
2006/03/27(月) 07:48:41http://www.2chdat.net/ ここで頼めば作ってくれるんじゃないかな
0988デフォルトの名無しさん
2006/03/27(月) 10:55:35A. Python使いましょう。
0989デフォルトの名無しさん
2006/03/27(月) 10:58:020990デフォルトの名無しさん
2006/03/27(月) 11:24:140991デフォルトの名無しさん
2006/03/27(月) 12:24:53Rails and/or Ruby業務で使ってるところあるの?
0992デフォルトの名無しさん
2006/03/27(月) 12:33:180993デフォルトの名無しさん
2006/03/27(月) 13:13:51その程度だと最近は釣れないらしいよ
0994デフォルトの名無しさん
2006/03/27(月) 13:56:20くっ。釣られんぞー。
0995デフォルトの名無しさん
2006/03/27(月) 14:11:40ワロタ
0996デフォルトの名無しさん
2006/03/27(月) 15:36:430997デフォルトの名無しさん
2006/03/27(月) 16:10:10strpos()だったか文字列検索で、見つかったら文字の位置を返すんだが、
先頭で見つかって0番目の位置返してくると、if文で偽となるんで難儀した。
見つからなかったときのFALSEと区別つかん・・・
結局、php4で追加された === が使えるようになるまで、いちいち回避してた。
0998デフォルトの名無しさん
2006/03/27(月) 16:27:31乙。GJでした。
0999デフォルトの名無しさん
2006/03/27(月) 16:39:261000デフォルトの名無しさん
2006/03/27(月) 16:40:22ttp://pc8.2ch.net/test/read.cgi/tech/1143403165/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。