Ruby初心者スレッド Part 10
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/01/23(火) 17:59:23http://www.ruby-lang.org/ja/man/
Ruby FAQ
http://ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
逆引きRuby
http://www.namaraii.com/rubytips/
Ruby リファレンスマニュアルの Windows HTML Help版
http://elbereth-hp.hp.infoseek.co.jp/ruby.html
Rubyリファレンスマニュアル刷新計画
http://doc.loveruby.net/
前スレ
Ruby初學者スレッド Part 9
http://pc10.2ch.net/test/read.cgi/tech/1164065622/
>>2-10
0002デフォルトの名無しさん
2007/01/23(火) 18:00:16http://pc10.2ch.net/test/read.cgi/tech/1164885714/
【Agile】Ruby on rails相談所 part2【DRY】
http://pc8.2ch.net/test/read.cgi/php/1151254378/
RUBYの宿題教えてください。
http://pc8.2ch.net/test/read.cgi/tech/1106572657/
【最高言語】 Rubyist Magazine創刊 【ルビま!】
http://pc8.2ch.net/test/read.cgi/tech/1094825807/
【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://pc8.2ch.net/test/read.cgi/tech/1155031689/
0003デフォルトの名無しさん
2007/01/23(火) 18:00:51http://pc10.2ch.net/test/read.cgi/tech/1164065622/
Ruby初心者スレッドPart8
http://pc8.2ch.net/test/read.cgi/tech/1159424939/
Ruby初心者スレッドPart7
http://pc8.2ch.net/test/read.cgi/tech/1154077799/
http://makimo.to/2ch/pc8_tech/1154/1154077799.html
Ruby初心者スレッドPart6
http://pc8.2ch.net/test/read.cgi/tech/1147918197/
http://makimo.to/2ch/pc8_tech/1147/1147918197.html
Ruby初心者スレッドPart5
http://pc8.2ch.net/test/read.cgi/tech/1143403165/
http://makimo.to/2ch/pc8_tech/1143/1143403165.html
Ruby初心者スレッドPart4
http://pc8.2ch.net/test/read.cgi/tech/1137927749/
http://makimo.to/2ch/pc8_tech/1137/1137927749.html
Ruby初心者質問スレPart3
http://pc8.2ch.net/test/read.cgi/tech/1125587131/
http://makimo.to/2ch/pc8_tech/1125/1125587131.html
Ruby初心者質問スレPart2
http://pc8.2ch.net/test/read.cgi/tech/1107799347/
http://makimo.to/2ch/pc8_tech/1107/1107799347.html
Ruby初心者質問スレPart1
http://pc5.2ch.net/test/read.cgi/tech/1100534824/
0004デフォルトの名無しさん
2007/01/23(火) 18:01:43http://www.ruby-lang.org/ja/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
日本Rubyの会 公式Wiki - 日本Rubyの会Wiki
http://jp.rubyist.net/
RAA - Ruby Application Archive
http://raa.ruby-lang.org/
RubyForge
http://www.rubyforge.org/
Matzにっき … Ruby作者の日記
http://www.rubyist.net/~matz/
Ruby hotlinks 五月雨版 … Ruby関連の日記やblog
http://www.rubyist.net/~kazu/samidare/
Rubyの本一覧
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Ruby%A4%CB%B4%D8%A4%B9%A4%EB%BD%F1%C0%D2
<rubyXML/>
http://www.rubyxml.com/
Ruby Weekly News @ Ruby Garden
http://www.rubygarden.org/rurl/html/
0005デフォルトの名無しさん
2007/01/23(火) 18:09:12def f
10.times do |i|
yield i * 10
end
end
f do |i|
p i
end
これがPython外部イテレータ+構文糖。
def f():
for i in xrange(10):
yield i * 10
for i in f():
print i
ほとんど変わらない希ガス。
0006デフォルトの名無しさん
2007/01/23(火) 18:30:32for i in range(3): print i, ": ", g.next()
切り出せないって話だろう
俺は困ったことないけど
0007デフォルトの名無しさん
2007/01/23(火) 18:57:12切り出せれば、また別のジェネレータで yield g.next() とか合わせ技ができるじゃん。
0008デフォルトの名無しさん
2007/01/23(火) 19:09:36def f
begin
10.times do |i|
yield i * 10
end
ensure
p "final" # イテレータが中断しても「必ず」実行される
end
end
f do |i|
p i
break # 中断♪
end
Python2.4までは上みたいなのはSyntax Errorだったんだけど、2.5からはできるようになった。
def f():
try:
for i in xrange(10):
yield i * 10
finally:
print "finally"
for i in f():
print i
break
いよいよ、内部イテレータの「切り出せない」という弱点が残った感じ。(何か見落としてる?)
0009デフォルトの名無しさん
2007/01/23(火) 19:16:46call/ccは癌。重いしメモリリークするらしい。
0010デフォルトの名無しさん
2007/01/23(火) 19:45:310011デフォルトの名無しさん
2007/01/23(火) 20:14:37イテレータとして捉える分には、そういう結論でいいんじゃね?
つまり、じゅうぶんなsyntax sugarを用意すれば外部イテレータはそのメリットを生かしたまま内部イテレータ的に定義・利用できる、ということをPythonは証明したわけだな。
ただ、Rubyのイテレータ呼び出しは、それがブロック引数構文として文法に組み込まれてイテレータ以外にも使われてるから、そこをどう評価するか、という話はあるかもしれない。
>>9
前スレの993は、だから組み込みにしろ、って話なんじゃね?
0012デフォルトの名無しさん
2007/01/23(火) 20:40:50一回転してプッ
0013デフォルトの名無しさん
2007/01/23(火) 21:03:46外部イテレータって、自分で実装するのが面倒なんだよな。
Ruby が内部イテレータを採用してるのも、そこら辺を優先したからなんだろうな。
めっちゃ無駄は多いけど、スレッドうまく使えば
内部イテレータから外部イテレータを作れるね。
単方向のみだけど。
0014デフォルトの名無しさん
2007/01/23(火) 21:15:04>外部イテレータって、自分で実装するのが面倒なんだよな。
>Ruby が内部イテレータを採用してるのも、そこら辺を優先したからなんだろうな。
だからジェネレータを使えばRubyとほとんど同じ面倒さで組めると(ry
>めっちゃ無駄は多いけど、スレッドうまく使えば
>内部イテレータから外部イテレータを作れるね。
>単方向のみだけど。
それが1.9のgenerator.rbの実装。それでも重い。
0015デフォルトの名無しさん
2007/01/23(火) 21:16:49Rubyのイテレータはすごいぞ!
Rubyのイテレータはすごいぞ!
ってお題目のように唱えていたのに...
0016デフォルトの名無しさん
2007/01/23(火) 21:26:38前半は >>9 を踏まえての事。
後半は重いのは当たり前やね。
>>11
> つまり、じゅうぶんなsyntax sugarを用意すれば外部イテレータはそのメリットを生かしたまま
> 内部イテレータ的に定義・利用できる、ということをPythonは証明したわけだな。
外部イテレータ使って内部イテレータを実装するのも無駄が多いし、
自分で新しい外部イテレータ作るのも面倒い。
基本的に内部イテレータを提供して、
必要に応じて外部イテレータを内部イテレータとは別個に提供可能にし、
そしてやっつけの時用に相互変換可能な仕組みを用意する、
という流れがベストな気がする。
0017デフォルトの名無しさん
2007/01/23(火) 21:31:160018デフォルトの名無しさん
2007/01/23(火) 21:49:07call/ccはPythonのコルーチンより野心的っつうか、前の時点に「逆戻り」できる。
重かったりリークしたりがそのせいかわからないが、いずれにしても利用者からは
内部実装は見えないので「面倒」なのはインタプリタ実装者だけのはず。
0019デフォルトの名無しさん
2007/01/23(火) 21:49:30>外部イテレータ使って内部イテレータを実装するのも無駄が多いし、
本当に無駄が多いかどうか実証してみないとわかんないよ。
書くときの労力に関しては構文糖でどうにでもなりそうなのはPythonの例の通りだし。
実行効率については、意外と大差ない可能性もある。
処理系側の実装に関しては、元ネタのO氏の日記参照。そんな単純とも思わんが。
>必要に応じて外部イテレータを内部イテレータとは別個に提供可能にし、
>そしてやっつけの時用に相互変換可能な仕組みを用意する、
>という流れがベストな気がする。
これは同意。
というわけで、組み込みgeneratorと相互変換の仕組み希望。
0020デフォルトの名無しさん
2007/01/23(火) 21:51:21というわけでMatz乙☆
0021デフォルトの名無しさん
2007/01/23(火) 21:59:47Python2.5(0.83秒)
import time
def f():
for i in xrange(1000000):
yield i
t1 = time.time()
for i in f():
pass
t2 = time.time()
print t2 - t1
Ruby(3.34秒)
def f
1000000.times do |i|
yield i
end
end
t1 = Time.now
f{|i|}
t2 = Time.now
p t2 - t1
現状ではPythonのほうが早いね。YARVだとどうなのかな?
0022デフォルトの名無しさん
2007/01/23(火) 22:04:15rubyとpythonを比べてもしゃーないだろ。
で、手元だと、python 2.4.3が0.70秒、ruby 1.9.0が0.38秒。
YARVはええ。
002322
2007/01/23(火) 22:05:000024デフォルトの名無しさん
2007/01/23(火) 22:10:05002522
2007/01/23(火) 22:19:29同一環境で、python 2.5は0.36秒。
はええ。
0026デフォルトの名無しさん
2007/01/23(火) 22:23:10#外部イテレータが無駄ってことはどうやらなさそうだね。
0027デフォルトの名無しさん
2007/01/23(火) 22:25:07Python がこれ以上早くならないって前提じゃないのか?
だいたい YARV ベースの Ruby が正式リリースされ
安定するのは一体いつになるやら。
0028デフォルトの名無しさん
2007/01/23(火) 22:28:34JASRACが73歳おじいちゃんに音楽を演奏したんだから840万払えと告訴
判決懲役10月、執行猶予3年(求刑・懲役10月)
日本音楽著作権協会(JASRAC)が、名古屋の飲食店経営のおばちゃんに、
音楽を演奏したんだから1,600万円払え、と告訴し、おばちゃんは逮捕。
プログラマ板などみんなの協力plz
http://ex17.2ch.net/test/read.cgi/news4vip/1169551677/
1.新型山田つくっる
2.ジャスラック登録曲のカバーした映像を見せるサイトを作る
3.サイトには1の山田を張り付ける
4.じゃすらっくがサイトに来る
5.感染
6.流出確認
7.ネトラン等に通報
8.マスコミ反応
9.内部文書が放送され一般に悪行がばれる
一般人に被害が出ないようにjasrac.or.jpのみを振り分けるPerlCGI
#!/usr/bin/perl
print "Content-type: text/html\n";
if ($ENV{'REMOTE_HOST'}=~/jasrac\.or\.jp/){
print "Location:download.html\n\n"
}else{
print "Location:index.html\n\n"
}
ここではlocationで別のページに飛ばしてるだけだが、やろうと思えば不正なcookieをいrうわなにをするやめあせdrftgyふじこlp
0029デフォルトの名無しさん
2007/01/23(火) 22:35:17http://www.aoky.net/articles/why_poignant_guide_to_ruby/
なんだこれww
003026
2007/01/23(火) 22:39:03Python2.5はコンパイラに手が入ったって聞いてたけど、なかなか良いね。
0031デフォルトの名無しさん
2007/01/23(火) 22:44:24それ暇つぶしにいいけどキの人が書いたとしか思えんw
訳すの大変だったろうなぁ
キツネは可愛かった
003222
2007/01/23(火) 22:48:45それぞれ5回ずつやった平均値。
ただし極端に外れた値が出た場合は外部要因とみなして捨てている。
Python 2.4.3 5.01秒
Python 2.5 3.56秒
Ruby 1.8.5 p12 12.12秒
Ruby 1.9.0 3.70秒
matzruby 31.55秒
なんかmatzrubyだけ冗談かと思うくらい遅いな。なんだこりゃ?
003322
2007/01/23(火) 22:50:58Python 2.5はえー。YARVもけっこうはえー。
外部イテレータが遅いかどうかはPythonに内部イテレータを組み込むか、
Rubyに外部イテレータを組み込むかして、Python同士、Ruby同士で見ないと意味ない。
0034デフォルトの名無しさん
2007/01/23(火) 22:51:23Pythonはインタプリタの起動がRubyより遅いけど、どうやって計測してる?
0035デフォルトの名無しさん
2007/01/23(火) 23:01:450036デフォルトの名無しさん
2007/01/23(火) 23:07:56shell?かしらんが、time で計ろうよ
0037デフォルトの名無しさん
2007/01/23(火) 23:12:050038デフォルトの名無しさん
2007/01/23(火) 23:45:160039デフォルトの名無しさん
2007/01/23(火) 23:46:15反則も何も、イテレータの速度を計るのが目的なわけで。
>>37
厳密にはそうだね。
しかし、そこまで厳密である必要もないだろ。
004021
2007/01/23(火) 23:53:13使っていることを明確にするためコードを変えて。
Ruby1.8.5(0:03.418)
YARV (0:01.363)
Python2.5(0:01.014)
若干YARVとPython2.5の差が縮まったが、順位は変わらず。
def f():
a = range(1000)
for i in iter(a):
for j in iter(a):
yield 0
for i in f():
pass
def f
a = Array.new(1000)
a.each do |i|
a.each do |j|
yield 0
end
end
end
f{|i|}
0041デフォルトの名無しさん
2007/01/23(火) 23:54:110042デフォルトの名無しさん
2007/01/23(火) 23:59:460043デフォルトの名無しさん
2007/01/24(水) 00:10:29とする。
def draw():
for x in xrange(100):
for y in xrange(100):
# draw with x,y
こういう場合、draw with x,y の行の後ろにyieldを入れればdraw()はジェネレータに
なるので
it = draw()
Tk.Button(command=it.next)
のようにすればボタンを押すごとに描画する機能が安直に実現できる。
004443
2007/01/24(水) 00:13:41内部イテレータでは、どちらかを全部読み込まないと比較できないが、
外部イテレータでは並列に読み込みながら比較できる。
004543
2007/01/24(水) 00:19:13でもこれも外部イテレータみたいなものだね。
0046デフォルトの名無しさん
2007/01/24(水) 00:28:25の問題Fに0,00,01,10,000,001,010,011,100のような無限に続く数列を
必要とする部分があるんだけど、こういうのもジェネレータを使うとすっきり
書ける。
import itertools
def keys():
for length in itertools.count(1):
for i in xrange((1 << length) - 1):
s = ""
while len(s) < length:
s = str(i & 1) + s
i >>= 1
yield s
もちろん配列を使っても書けなくはないが、外部イテレータがあると便利というのは
得てしてこういう場面。(たくさんあるものから、ひとつずつ小出しにしたい)
0047デフォルトの名無しさん
2007/01/24(水) 01:14:26raise "assert" unless moge == "moge"
こんな感じ?
0048デフォルトの名無しさん
2007/01/24(水) 01:14:51なるほど。確かに便利だな。
0049デフォルトの名無しさん
2007/01/24(水) 01:26:52そんな感じ。
標準ライブラリのrunitも、本来はテストプログラム用のフレームワークだが
require 'runit'
include RUNIT::Assert
して
assert_equal("moge", moge)
みたく普通のプログラムで使うこともできるっちゃできる。
0050デフォルトの名無しさん
2007/01/24(水) 11:45:20YARVはええ!だった。
http://upload.isitex.net/download.php?file=b36d5d1158f177ba3ef8f2b03aeed058
実行時間(秒)クラスあり クラスなし
Ruby1.8.5 1.725 1.215
YARV 1.177 0.909
Python2.5 1.585 0.618
ICPC98のアジア予選の最初の問題。self. VS @ っていうのが書きやすさだけでなく、
最適化にも効いてるんだろうか。
(毎回selfをローカル変数として探すから遅い?yokuwakaran)
005150
2007/01/24(水) 11:53:490052デフォルトの名無しさん
2007/01/24(水) 13:33:310053デフォルトの名無しさん
2007/01/24(水) 13:48:37殆ど変わんないんだ。凄いな。
0054デフォルトの名無しさん
2007/01/24(水) 13:54:30http://upload.isitex.net/download.php?file=3829109c002395e13bb6d77ead4768cb
Python2.5 7.110
YARV 8.664
Ruby1.8.5 15.010
クラス使ってるにもかかわらず、今度はPythonが逆転している。
ま、大きめのスクリプトだから最適化しだいで変わってくるかもだけど、
以外に差がなくて驚いた。
0055デフォルトの名無しさん
2007/01/24(水) 14:14:440056デフォルトの名無しさん
2007/01/24(水) 15:43:170057デフォルトの名無しさん
2007/01/24(水) 16:00:00YARV版Rubyである1.9.1のリリース予定は今年のクリスマス。
0058デフォルトの名無しさん
2007/01/24(水) 16:22:250059デフォルトの名無しさん
2007/01/24(水) 19:41:25処理の実行状態を保存したまま処理を返す必要があるんだから。
0060デフォルトの名無しさん
2007/01/24(水) 19:56:39Pythonの方が速いしね。
0061デフォルトの名無しさん
2007/01/24(水) 19:58:42嘘つき、早ければ今年の6月にアルファ版リリースって書いてある。
ttp://lwn.net/Articles/214931/
また早くなるんじゃないの?
0062デフォルトの名無しさん
2007/01/24(水) 20:19:57いや、「そうでもないかもしれない」だけだって。
同じ処理系内で内部イテレータと外部イテレータをそれぞれ真面目に実装した上で比較しないと、実際の差はわからん、としか言いようがないってば。
Python 2.5の速度から言えることは、「外部イテレータもそれほど遅くはないのではないだろうか」という示唆が得られたというくらい。
>>61
嘘じゃないよ。聞かれたのは「Python 3000の正式リリース」なんだから。
Python 3.0に関しては、来年リリースの予定だね。
0063デフォルトの名無しさん
2007/01/24(水) 20:37:530064デフォルトの名無しさん
2007/01/24(水) 20:42:040065デフォルトの名無しさん
2007/01/24(水) 21:00:09フレームを保存したり色々重い処理を行っているという事実を無視しているな。
0066デフォルトの名無しさん
2007/01/24(水) 21:06:11import time
n = 1000000
def f():
for i in xrange(n):
yield i
def g(f):
for i in xrange(n):
f(i)
t1 = time.time()
for i in f():
pass
t2 = time.time()
print t2 - t1 # 0.861999988556
t1 = time.time()
g(lambda i: None)
t2 = time.time()
print t2 - t1 # 1.04099988937
0067デフォルトの名無しさん
2007/01/24(水) 21:08:560068デフォルトの名無しさん
2007/01/24(水) 23:05:200069デフォルトの名無しさん
2007/01/24(水) 23:31:32普通は、あの言語のああいうところはRubyにも欲しいとか、Rubyのこういうところはイケてないな、とか思いながらも、それでもRubyのどこかに魅力を感じてRubyを使ってるわけだ。
0070デフォルトの名無しさん
2007/01/24(水) 23:51:060071デフォルトの名無しさん
2007/01/25(木) 00:20:010072デフォルトの名無しさん
2007/01/25(木) 01:41:320073デフォルトの名無しさん
2007/01/25(木) 17:02:54Hoge.new.instance_variables
ではなく
Hoge::instance_variables
みたいに
0074デフォルトの名無しさん
2007/01/25(木) 17:23:55無理。
インスタンス変数は文字通りインスタンスに定義されるから。
クラスを定義しただけでは、どんなインスタンス変数が出来るか知りようがない。
0075デフォルトの名無しさん
2007/01/25(木) 17:28:080076デフォルトの名無しさん
2007/01/25(木) 17:40:300077デフォルトの名無しさん
2007/01/25(木) 18:06:310078デフォルトの名無しさん
2007/01/25(木) 18:20:18def initialize
@foo = nil
end
def piyo
@bar = nil
end
end
hoge = Hoge.new
p hoge.instance_variables
=>["@foo"]
hoge.piyo
p hoge.instance_variables
=>["@foo", "@bar"]
0079デフォルトの名無しさん
2007/01/25(木) 23:13:40md5ですか?
0080デフォルトの名無しさん
2007/01/25(木) 23:56:08したいことによる、としか言いようがない。
「md5ですか?」とか言ってるようでは、たぶん自分がしたいことがわかってないっぽいので、暗号化について勉強してくること。
0081デフォルトの名無しさん
2007/01/26(金) 00:15:540082デフォルトの名無しさん
2007/01/26(金) 00:39:49ハッシュ化されたパスワードと入力を比較したいのか、
認証の通信経路を暗号化したいのか、
それ以外か?
0083デフォルトの名無しさん
2007/01/26(金) 05:58:33まずユーザ認証そのものを学んだ方が良いな
0084デフォルトの名無しさん
2007/01/26(金) 11:59:560085デフォルトの名無しさん
2007/01/26(金) 12:00:38world='world'
hw="#{hello} #{world}"←ダブルクォート
print hw #hello world �@
を実行すると�@のような結果になりますが
hello='hello'
world='world'
hw='#{hello} #{world}'←シングルクォート
※
print hw #hello world �A
上のコードで※でhwに何らかの処理をして�Aの結果にする方法ってありますか?
0086デフォルトの名無しさん
2007/01/26(金) 12:20:09ruby 1.8.4 (2005-12-24) [i386-linux]
-e:1: undefined local variable or method `str' for main:Object (NameError)
evalで定義した後は直ぐ使えないんでしょうか?
0087デフォルトの名無しさん
2007/01/26(金) 12:38:320088デフォルトの名無しさん
2007/01/26(金) 13:02:45初心者スレとしては「認証を学べ」
本スレであの質問なら俺はスルーかな
0089デフォルトの名無しさん
2007/01/26(金) 13:30:18うーんどういう意味ですか?
$ ruby -e 'rb="str=\"a\"";eval rb;p str'
でも変わらずです
$ ruby -e '"str=\"a\"" eval;p str'
-e:1: warning: useless use of a literal in void context
-e:1: syntax error, unexpected tIDENTIFIER, expecting $end
0090デフォルトの名無しさん
2007/01/26(金) 13:50:22evalで実行されてるブロックスコープの
ローカル変数になってるってことじゃないかね
0091デフォルトの名無しさん
2007/01/26(金) 14:34:40質問自体が、rubyに限ったことじゃないし
ここで一から説明するには長すぎる。
0092デフォルトの名無しさん
2007/01/26(金) 14:55:04ここはRubyの初心者のスレであって、認証の初心者のスレじゃない。
どうしても答えがほしけりゃ、コテハン付けたうえでとりあえず>>82の確認事項に答えてみ?
0093デフォルトの名無しさん
2007/01/26(金) 16:58:43「str=」*だけ*をevalの前に出してみ。
$ ruby -e 'str = eval "\"a\"";p str'
0094デフォルトの名無しさん
2007/01/26(金) 17:04:120095デフォルトの名無しさん
2007/01/26(金) 17:27:490096デフォルトの名無しさん
2007/01/26(金) 17:33:010097デフォルトの名無しさん
2007/01/26(金) 18:31:02んなレスいちいち書くなよ反吐が出るわ
0098デフォルトの名無しさん
2007/01/26(金) 19:58:510099デフォルトの名無しさん
2007/01/26(金) 20:04:200100デフォルトの名無しさん
2007/01/26(金) 20:26:120101デフォルトの名無しさん
2007/01/26(金) 20:46:34おおお、なるほど。出来ました。
ありがとうございました。
>>90
irb(main):001:0> eval "str1 = \"a\"" ;p str1
NameError: undefined local variable or method `str1' for main:Object
from (irb):1
from :0
irb(main):002:0> eval "str2 = \"a\""
=> "a"
irb(main):003:0> p str2
"a"
=> nil
となるんで、不思議なんですよ。
0102デフォルトの名無しさん
2007/01/26(金) 21:57:35確かにそうなった
これはどうしてだろう俺も知りたい
0103デフォルトの名無しさん
2007/01/26(金) 22:06:58それが起きるのはirbだけ。
0104デフォルトの名無しさん
2007/01/26(金) 22:20:10p foo # => NameError
eval 'bar = 2'
eval 'p bar' # => 2
baz = nil
eval 'baz = 3'
p baz # => 3
ローカル変数が定義されるのはコンパイル時だからだと。
0105デフォルトの名無しさん
2007/01/26(金) 23:05:300106デフォルトの名無しさん
2007/01/26(金) 23:05:440107デフォルトの名無しさん
2007/01/26(金) 23:08:36その辺は勿論おさえてあります。
0108デフォルトの名無しさん
2007/01/26(金) 23:14:05ありがとうございました。
0109デフォルトの名無しさん
2007/01/27(土) 01:57:52Railsが使える環境なら、有用。
そうでないなら、まともな軽量フレームワークがないので、ちょっと残念な状態。
0110デフォルトの名無しさん
2007/01/27(土) 02:45:30【PHP】フレームワークについて語るスレ5【総合】
http://pc10.2ch.net/test/read.cgi/php/1159579507/
0111デフォルトの名無しさん
2007/01/27(土) 13:17:08どれ使ったらいいかわからんJavaと同じ状況とも言える。
その点ほらRubyならRails以外は世間的になかったことになってるので安心。
0112デフォルトの名無しさん
2007/01/27(土) 23:37:03エンターで確定したあと Interrupt が発生します。
これを Ctrl-C を押したらすぐに終了するようにはどうすればいいでしょうか?
require "curses"
begin
Curses::init_screen
Curses::stdscr.addstr("% ")
Curses::stdscr.refresh()
s = Curses::stdscr.getstr()
Curses::stdscr.addstr(">>> %s \n" % s)
Curses::stdscr.refresh()
rescue
Curses::close_screen
end
0113デフォルトの名無しさん
2007/01/28(日) 06:22:10class X
attr_accessor :v
end
x = X.new
p x.instance_variables
y = x.v
p x.instance_variables
x.v = 1
p x.instance_variables
というスクリプトを実行すると結果は
[]
[]
["@v"]
となるのですが(ruby 1.8.5)、インスタンス変数は読み出しただけではまだ存在しないの?
0114デフォルトの名無しさん
2007/01/28(日) 10:27:11attr系のメソッドのことをよく調べてみれ。
0115デフォルトの名無しさん
2007/01/28(日) 10:28:59http://www.is.osaka-kyoiku.ac.jp/~fujii/jkyoiku/index.html
ひそかにapollo入門記事
0116デフォルトの名無しさん
2007/01/28(日) 10:46:50keys=['key1', 'key3', ・・・]
ソート対象の配列
array=[{'key1'=>3, 'key2'=>1, 'key3'=>2, ・・・}, \
{'key1'=>10, 'key2'=>2, 'key3'=>8, ・・・}, \
{'key1'=>3, 'key2'=>5, 'key3'=>1, ・・・}]
があって、
array.sort{|x,y|
key=keys.shift
if((x[key]<=>y[key])==0) then
key=keys.shift
if((x[key]<=>y[key])==0) then
key=keys.shift
・・・
else
x[key]<=>y[key]
end
else
x[key]<=>y[key]
end
}
結果
[{'key1'=>3, 'key2'=>5, 'key3'=>1, ・・・},
{'key1'=>3, 'key2'=>1, 'key3'=>2, ・・・},
{'key1'=>10, 'key2'=>2, 'key3'=>8, ・・・},
みたいなことをしたいんですけど、うまく書く方法はありますか?
0117デフォルトの名無しさん
2007/01/28(日) 10:59:35違いがあったらそこで確定。
等しければ次のキーで比較、なのかな。
array.sort_by {|e| keys.map {|key| e[key]} } だろうか。
0118デフォルトの名無しさん
2007/01/28(日) 16:15:02は
e.values_at(*keys)
と書ける。
0119デフォルトの名無しさん
2007/01/28(日) 16:16:22即座にInterruptで終了したがな。linuxだと。
0120デフォルトの名無しさん
2007/01/28(日) 18:00:58環境を書いてなくてすません。
普段は Cygwin/ck/screen/zsh で使っているのですが
ck でなく cmd 上の bash でやっても同じでした。
ruby は 1.8.5 (2006-08-25) [i386-cygwin] です。
生の Linux 環境はもってないのですが、
Cygwin/ssh や putty で coLinux に ssh しても、
やはり Ctrl-C で終了しませんでした。
Windows の問題なんでしょうか?
0121113
2007/01/28(日) 18:25:56class X
def v()
@v
end
def v=(val)
@v = val
end
end
x = X.new
p x.instance_variables => []
z = x.v
p x.instance_variables => []
x.v = 1
p x.instance_variables => ["@v"]
と書くのと同義だということだというのはわかるのですが、メソッドv()を実
行してインスタンス変数@vを参照している(このときに変数が存在しないとい
うエラーは発生しない)のに、その後でも@vはまだ存在しないのかなあ?とい
うのがちょっと疑問だったのです。
プログラミングRuby第2版言語編p288に、「初期化されていないインスタンス
変数を参照するとnilが返されます」とあるので、未定義なインスタンス変数
を参照してもエラーは発生しない「仕様」だけれども、なにかの値が代入され
るまではインスタンス変数は存在しない、という「仕様」だという理解でよい
のかな?
0122デフォルトの名無しさん
2007/01/28(日) 19:31:140123デフォルトの名無しさん
2007/01/28(日) 20:00:160124デフォルトの名無しさん
2007/01/28(日) 21:04:18初期化 ∈ 代入。
まあ動的言語だし。
はじめっから持ってなきゃダメなら、initializeで
適当に初期化しる。
0125デフォルトの名無しさん
2007/01/28(日) 21:51:36なんかあるんスカ?
0126デフォルトの名無しさん
2007/01/28(日) 23:08:530127デフォルトの名無しさん
2007/01/29(月) 05:46:18こんなにスマートに書けるのか
ありがとう
0128デフォルトの名無しさん
2007/01/29(月) 13:49:23そういうこと。
それをruby -vで実行すれば警告が出る。
0129デフォルトの名無しさん
2007/01/29(月) 16:11:56Rubyのトップレベルは、いったいどういう仕組みなのでしょうか?
selfが"main"という名のObjectクラスのインスタンスだが、どうもklassポイ
ンタはObjectクラスそのものを指しているらしいところまでは分かりました。
だから関数宣言すると、Objectクラスにメソッドが追加されますし、トップレ
ベルでpublicを実行すると、トップレベルで定義した関数をメソッド風にも呼
べます。
public
def hoge; "hoge"; end
Object.new.hoge => "hoge"
分からないのは、インスタンス変数の振る舞いです。
まず、トップレベルでインスタンス変数が使えます。
しかも、クラス定義内での挙動と違い、関数の中からも参照できてしまう。
@hoge = 1
def get_hoge; @hoge; end
get_hoge() => 1
しかも、インスタンス変数を宣言すると、selfが代わってしまうのです。
self ==> main
@hoge = 1
self => #<Object:0x402ae9c0 @hoge=1>
これはいったい何が起こっているのでしょうか?よろしければ参考になるペー
ジ等もお教えいただけたらと思います。
0130デフォルトの名無しさん
2007/01/29(月) 19:02:07こういう式でtrueを得たいのですが
(1 == 0) || (1 == 1) || (1== 2)
としないと期待した評価が来ないのです。
こういうもんなんですかね。
0131デフォルトの名無しさん
2007/01/29(月) 19:14:19だもの。
0132デフォルトの名無しさん
2007/01/29(月) 19:26:39Rubyの0は真。ついでながら、""も[]も真。
0134デフォルトの名無しさん
2007/01/29(月) 20:31:28irb(main):001:0> def multi_equal(x, list0)
irb(main):002:1> list0.each {|i| return true if x == i}
irb(main):003:1> false
irb(main):004:1> end
=> nil
irb(main):005:0> multi_equal(1, [0, 1, 2])
=> true
irb(main):006:0> multi_equal(3, [0, 1, 2])
=> false
0135デフォルトの名無しさん
2007/01/29(月) 20:34:34>>> 1 in [0, 1, 2]
True
>>> 3 in [0, 1, 2]
False
0136デフォルトの名無しさん
2007/01/29(月) 20:46:38irb(main):001:0> [0, 1, 2].index(1)
=> 1
irb(main):002:0> [0, 1, 2].index(3)
=> nil
0138デフォルトの名無しさん
2007/01/29(月) 20:56:14irb(main):001:0> [0, 1, 2].include?(1)
=> true
irb(main):002:0> [0, 1, 2].include?(3)
=> false
0139デフォルトの名無しさん
2007/01/29(月) 21:07:070140135
2007/01/29(月) 21:25:52いや、比較する意図はなかった。自分はRuby初心者なんで、Rubyでの書き方を
知りたかっただけ。しかし、実際に見ると、比較したくなるなあ。
>>138
これはきれいだ。専用の構文を必要としない点では、Rubyに軍配が上がると思う。
しかしPythonの x in y だと、y にイテレータを取ることができる。
だから例えば、ファイル上やネットワーク越しの巨大集合との逐次比較もできる。
メモリ上に巨大なリストを置く必要がない。
そういうのはRubyだとどうなるのかな?
0141デフォルトの名無しさん
2007/01/29(月) 21:35:54たとえばIOクラスのインスタンス(File.openの返値とか)なら
open('hoge').include?("#¥n")
とか。(#のみの行があれば真を返す)
include?は同値比較なのでこの例だと普通は
open('hoge').find {|line| /^#$/ =~ line }
みたく正規表現でfindするけどね。
0142デフォルトの名無しさん
2007/01/29(月) 21:38:41錯覚か
0143デフォルトの名無しさん
2007/01/29(月) 21:41:550144135
2007/01/29(月) 21:45:36なるほど、EnumerableモジュールのMix-inか。
Rubyも上手くできているなあ。
勉強になりました。ありがとう。
>>142-143
既出だったようですまん。その該当箇所も読んでみる。
0145113
2007/01/29(月) 22:59:37なるほど ruby -v で warning が表示されますね(1.8.5 使用)。
同義なはずの attr_accessor 使ったコードだと warning が出ないのは意図的なのかな?
0146129
2007/01/30(火) 01:34:56もしかして、これは高度で難解な答えしかない問いなのでしょうか?
0147デフォルトの名無しさん
2007/01/30(火) 01:43:55p [ self, self.object_id, self.class ]
@x = 100
p [ self, self.object_id, self.class ]
$ ruby test.rb
[main, 107770, Object]
[#<Object:0x349f4 @x=100>, 107770, Object]
とりあえず、同じオブジェクトのままではあるようだ。
あとはちとソース見てみるわ。
0148デフォルトの名無しさん
2007/01/30(火) 01:52:23object.cの
static VALUE
rb_obj_inspect(VALUE obj)
ROBJECT(obj)->iv_tbl->num_entries > 0 ってことは
つまり1つでもインスタンス変数があったら、
<%s:%p, インスタンス変数を再帰的に>
という出力に、そうでなければ、to_sの結果となる。
ただし、トップレベルのselfである main には特異メソッドとして
to_sが"main"を返すように定義されているので、最初は "main" と出る。
0149デフォルトの名無しさん
2007/01/30(火) 02:16:19乙。
mainにもinspectを定義してあった方が親切かもねえ。
0150129
2007/01/30(火) 02:50:15もっとよく調べるべきでした。すみません。
もう一つの疑問
「トップレベルで定義したインスタンス変数は、なぜトップレベルの関数から
アクセスできるのか?」
についてはいかがでしょうか?
クラス定義内のインスタンス変数の場合、特異クラスからのアクセスしかできないの
ですが、(http://www.amazon.co.jp/dp/4274066428 のP336)
トップレベルに限って、そうではないのです。
これは、selfとklassが別のオブジェクトを指しているのが原因なのでしょうか?
また、トップレベルのインスタンス変数は、どのようなスコープを持つと考えら
れるでしょうか?
0151デフォルトの名無しさん
2007/01/30(火) 02:54:02>まず、トップレベルでインスタンス変数が使ゑます。
これって、要は、
class Object
def xxx
@zzz = "ここと同じ挙動なんじゃないの?"
def yyy
p @zzz
end
end
end
xxx; yyy
クラス定義中と同じってのは、何処に書いてあるン?
0152129
2007/01/30(火) 04:02:52申し訳ありません。ちょっと取り込み中で、ご返事が遅れました。
なるほど、クラスではなく、メソッドの内部ですか!
考えてみたら、メソッドの中でもメソッドは定義できますね。盲点でした。
0153129
2007/01/30(火) 12:18:09知人から言われたのですが、
「トップレベルがもしメソッド定義の内部だとしたら、そこではクラスを定義
できないじゃないか」
ということなのです。
def hoge; class Hoge; end; end
確かにこれはエラーになります。
またしてもトップレベルの正体が分からなくなりました。
0154デフォルトの名無しさん
2007/01/30(火) 21:32:31同様の症状になった人いませんか。
0155デフォルトの名無しさん
2007/01/31(水) 00:30:04ホットキーは^tにしてる
0156129
2007/01/31(水) 01:06:18トップレベルについては、
・RHGを読み込んでソースに通暁する
・こういうものだと諦める
この二択しかないということなのかもしれません。
トップレベルのすべてを理解しなくても
・関数の正体はObjectクラスのprivateメソッド
・インスタンス変数の正体は mainオブジェクトのインスタンス変数
・定数はObjectクラスに属するので、すべてのスコープから見える。
http://i.loveruby.net/ja/rhg/book/minimum.html
http://i.loveruby.net/ja/rhg/book/images/ch_minimum_constref.jpg
このぐらいを押さえておけば、コードの挙動は予想できるのかもしれません。
0157デフォルトの名無しさん
2007/01/31(水) 01:46:11> 「トップレベルで定義したインスタンス変数は、なぜトップレベルの関数から
> アクセスできるのか?」
selfがmainのままだからmainのインスタンス変数はアクセスできる。というだけ。
0158デフォルトの名無しさん
2007/01/31(水) 02:09:38Object#inspectが#to_sを元にするようにしてみた。
けど、適当なuploaderってどっかある?
0159129
2007/01/31(水) 02:43:39今、以前読んでわからなかった記事を読み返しています。
Rubyの呼び出し可能オブジェクトの比較 (3) - なんかklassの話
http://idm.s9.xrea.com/ratio/2006/11/29/000558.html
今回は分かったような分からないようなです。もう少し考えてみます。
0160デフォルトの名無しさん
2007/01/31(水) 10:01:380161デフォルトの名無しさん
2007/01/31(水) 12:49:08header("Location: 〜");
をrubyでやるには、どのようにすればいいんでしょうか?
0162デフォルトの名無しさん
2007/01/31(水) 12:52:42Rubyで文字列テンプレートを作るにはどうすればよいのでしょうか?
標準で式展開がありますが、
http://www.ruby-lang.org/ja/man/?cmd=view;name=%A5%EA%A5%C6%A5%E9%A5%EB#a.bc.b0.c5.b8.b3.ab
これは1回限りのもので、テンプレート的使い回しには向いていないようです。
self % args
http://www.ruby-lang.org/ja/man/?cmd=view;name=String#self.20.25.20args
こちらはテンプレートとして使えますが、変数名を埋め込めないので、テンプ
レートが分かりづらいのが欠点だと思います。
Pythonの文字列テンプレートみたいなものがあれば、ありがたいのですが。
http://www.python.jp/doc/2.4/tut/node13.html#SECTION0013200000000000000000
0163デフォルトの名無しさん
2007/01/31(水) 12:55:56"Name: %{name}, Age=%{age}" % { :name => 'AAA', :age => 25 }
0165154
2007/01/31(水) 13:31:24そうですか。ほかに同様の症状になった人いませんか。
>>161
require 'cgi'
cgi = CGI.new
print cgi.header('type'=>'text/html',
'charset'=>'utf-8',
'Location'=>'http://www.example.com')
0167デフォルトの名無しさん
2007/01/31(水) 13:37:11Hello, <%= name %>!
とか書くというのもあるけど、この程度じゃ#{}と大差ないな。
0168デフォルトの名無しさん
2007/01/31(水) 13:38:36eRubyではだめでしょうか。
s = "name: #{name}, age: #{age}"
require 'erb'
erb = ERB.new(s)
name = 'foo'; age = 20
print eval.result(binding())
string.Templateと違って、式だけでなくfor文やif文を埋め込むことができます。
0169デフォルトの名無しさん
2007/01/31(水) 13:40:51うそ、間違えた。
s = "name: <%=name%>, age:<%=age%>"
name = 'foo'; age = 20
require 'erb'
print ERB.new(s).result(binding())
0170162
2007/01/31(水) 15:00:26ありがとうございます。
eRubyは埋め込み用の変数に値を代入する必要があるので、即値を与えられる
Ruby-GetText の方が、自分の用途には使いやすそうな気がします。
0171デフォルトの名無しさん
2007/02/01(木) 12:50:06引数の数を変えても駄目だったのです。
0172デフォルトの名無しさん
2007/02/01(木) 13:12:19でもって、オーバーロード(多重定義)じゃなくてオーバーライド(上書き・再定義)。
0173デフォルトの名無しさん
2007/02/01(木) 13:54:54定義しないでね。
0174デフォルトの名無しさん
2007/02/01(木) 14:31:31そうです。new ではなく intialize を定義したいんです。
継承元クラスの intialize に色々プラスしたものを返したいんです。
具体的にコードを書きますのでよければご教授宜しくお願いします。
引数の文字列で指定されたブラウザを立ち上げたいのです。
class Ole < WIN32OLE
def initialize(browser = 'ie',visible = true)
case browser
when 'ie'
oie = super('InternetExplorer.Application')
oie.Visible = visible
when 'Sleipnir'
sleipnir = super('Sleipnir.API')
nIndex = sleipnir.NewWindow('',visible)
oie = sleipnir.GetWebBrowserObject(nIndex)
end
@oie = oie
return oie
end
end
オーバーライドの方法や、「こうすればもっとスマートに書ける」
等の意見も貰えたらうれしいです。
0175デフォルトの名無しさん
2007/02/01(木) 14:45:23ruby-dev
0176デフォルトの名無しさん
2007/02/01(木) 14:57:21することだけ考えると関数のほうが適当かも
def open_browser(browser = 'ie', visible = true) とか
これから色々機能つけるのなら、継承よりは内部に持った方が安全
0177174
2007/02/01(木) 18:57:32なるほど。ついつい判り始めた継承を使ってしまうのが、
すでに間違いだったんですね。;
また色々組み立てなおしてみます。
ご意見ありがとうございます。
0178デフォルトの名無しさん
2007/02/01(木) 21:15:090179デフォルトの名無しさん
2007/02/02(金) 02:34:240180デフォルトの名無しさん
2007/02/02(金) 08:45:400181デフォルトの名無しさん
2007/02/04(日) 16:49:39注意事項及びヒント:
sortメソッドは使用しないこと
配列を使用した方が並び替え易いと思います
0182デフォルトの名無しさん
2007/02/04(日) 16:53:49来年度は単位が取れるように講義を受けなさいね。
0183デフォルトの名無しさん
2007/02/04(日) 17:20:49array = array.sort_by {|i| i}
0184デフォルトの名無しさん
2007/02/04(日) 20:15:46class Array
alias :narabi_soroeru :sort
end
p array.narabi_soroeru
0185デフォルトの名無しさん
2007/02/04(日) 20:24:27問題良く嫁
0186デフォルトの名無しさん
2007/02/04(日) 20:27:03ちゃんとsortメソッドは使ってないじゃん。
0187デフォルトの名無しさん
2007/02/04(日) 21:52:36バブルソートくらい自分で書け
0188デフォルトの名無しさん
2007/02/04(日) 22:18:49こちらへどうぞ
RUBYの宿題教えてください。
http://pc10.2ch.net/test/read.cgi/tech/1106572657/
0189184
2007/02/04(日) 22:20:01sortメソッドは使ってないぜ。
0190デフォルトの名無しさん
2007/02/04(日) 22:29:56どうしたらエラーを回避できるでしょうか? VC7.1 ではエラーが出ませんでした。
C:/tmp/ruby/win32/mkexports.rb:8: [BUG] Segmentation fault
ruby 1.8.5 (2007-01-31) [i386-mswin32_80]
0191デフォルトの名無しさん
2007/02/05(月) 01:16:200192デフォルトの名無しさん
2007/02/05(月) 18:41:33下のようなイメージで描画したいです。
C
/\
A B
・・・・・・
0193デフォルトの名無しさん
2007/02/05(月) 19:01:08テキスト(AA)として?
何かのGUI部品に?
画像に直接?
0195デフォルトの名無しさん
2007/02/05(月) 19:21:01ないだろうか。それだったらRMagickとかで絵を描けばいいんじゃない?
http://rmagick.rubyforge.org/portfolio3.html
0196デフォルトの名無しさん
2007/02/05(月) 22:41:42Rubyを使えばあまりに簡単すぎる題が多すぎないか?
たま〜にしかコード書いてない俺でさえ、
「おっ」と思うようなのがチラホラとしか無くて
ふざけてんのかと思った。
0197デフォルトの名無しさん
2007/02/05(月) 23:12:52cairo とかどうよ?
linux 向けかもしれないけどさ。
0198デフォルトの名無しさん
2007/02/05(月) 23:33:09たしかに私もレシピブック(旧版)は買ったけど一回も参照したことがない。
でもレシピブックってそもそもそういうものじゃないかなぁ。小さな部品単位
で示す。あんまり特定的・具体的になりすぎず、いろんな局面で使えるコード
例を示す、っていう。
perl cookbook とかもそうじゃない?
で、やり方が微妙に違う場合にそれがどう違うのか、どう使いわけるか、って
いうのがどれだけうまく書いてあるか、ってのがあのテの本のポイントな気が
する。
0199デフォルトの名無しさん
2007/02/05(月) 23:44:240200デフォルトの名無しさん
2007/02/06(火) 00:08:55File.open("/home/hoge/test", 'a') {
;
}
をヲレスクリプトにパクって来たが、空ファイルが作られないのはなぜ?
0201デフォルトの名無しさん
2007/02/06(火) 00:39:59そもそも権限がないんじゃないのか?
0202デフォルトの名無しさん
2007/02/06(火) 01:00:25system("touch /home/hoge/test")
じゃ駄目なん?
0203デフォルトの名無しさん
2007/02/06(火) 01:36:29rubyって自前で空ファイル作れない仕様だっけ?
0204デフォルトの名無しさん
2007/02/06(火) 01:42:271.6.8で問題なく空ファイルできたよ
>>201の言うとおりではないかと
0205デフォルトの名無しさん
2007/02/06(火) 02:44:38perl cookbook もあんな程度なんかな
0206デフォルトの名無しさん
2007/02/06(火) 03:01:13do〜endとかのブロック使う人が大半な中、
レシピブックでは {〜} が使われてるんだな。
紙の上だから対応関係がパッと分かるようにだろうけど。
自分自身そっちのスタイルなのに何故か違和感覚えてしまった。
0207デフォルトの名無しさん
2007/02/06(火) 07:36:47あんな本絶対に買っちゃだめだよ
0208デフォルトの名無しさん
2007/02/06(火) 10:26:02File.open(filename, 'a') {
の前のif文の条件(filenameが無ければ真)が間違ってた。orz
0209デフォルトの名無しさん
2007/02/06(火) 12:48:270210デフォルトの名無しさん
2007/02/06(火) 14:19:300211デフォルトの名無しさん
2007/02/06(火) 18:36:49There's More Than One Way to Do It. な言語にこそ、
定石集であるレシピブックの価値があると思うがなぁ。
実際、忘れっぽい俺はすごく助かってるし。
(レシピブックを参照してばっかだから、いつまで立っても定石を覚えないのか?)
0212192
2007/02/06(火) 18:41:37>C:\workshp>gem install rmagick-1.13.0-win32.gem
>Successfully installed rmagick, version 1.13.0
require RMgickすると
>`require': no such file to load -- RMagick (LoadError)
このエラーメッセージが出てきます。
http://mpl.s59.xrea.com/comp/rmagick.html
このサイトでは、postinstall.rbを実行すれば良いと書いてあるのですが、
postinstall.rbを探してもありません。
また、適当にPathを通してみたのですがどうにも上手くいきません。
どうすればいいでしょうか。
ruby 1.8.5 (2006-08-25) [i386-mswin32]です。
0213デフォルトの名無しさん
2007/02/06(火) 18:51:100215デフォルトの名無しさん
2007/02/07(水) 11:50:29aaa aaaa at3352352
例えばこのような各行があるとき
splitで、aaaaと53と35...をそれぞれ別の変数に格納したいと思います。次の行も同様にaaaとaaaaとat33...と別々に格納したいです。
最初から、タブで区切られてるようではありません。
ff, gg, hh = gyou.split(/\t/).values_at(0,1,2)
ですと、ffに全て格納されてしまいます。ggとhhの中は何もないです。
タブで区切られてないのでできないと思い、(/\s\)でスペースで区切ったのをそれぞれに格納するようにしたところ
ffに最初の列しか格納されていませんでした。
ffにaaaa
ggに53
hhに3535.. を格納するにはどうすればよいのでしょうか?
よろしくお願いします。
0216デフォルトの名無しさん
2007/02/07(水) 11:57:45p gyou
0217デフォルトの名無しさん
2007/02/07(水) 15:31:47いらんことすんな、としか言いようがない。
0218デフォルトの名無しさん
2007/02/07(水) 16:48:11PHPをずっと使ってるんですが、PHPが使えない案件がありましてかわりにRubyどうだろうって話になったんですが。
HTMLの自動生成や動的コンテンツなんかにRubyってどうなんでしょう?
Javaみたいに高度な知識が必要だったりすると手に負えないんですが、本職デザなもので…。
0219デフォルトの名無しさん
2007/02/07(水) 17:05:23普通はperlとかのほうが使えないか?
デザは無理せずに、ウェブプログラマに外注したら?
ウェブプログラマもデザインは外注するし、相互補完したほうが良い。お互いに餌場漁ったら絶滅するよ(w
0220デフォルトの名無しさん
2007/02/07(水) 21:09:17sフレからeフレまでの切り出しや、cフレ目のキャプチャを作成。
みたいなことをしたいのですが。
宜しくお願いします。
0221デフォルトの名無しさん
2007/02/07(水) 22:04:34rmovie is Ruby extension for accessing information in media files. rmovie can access many media formats (mov, avi, mpg, wmv...) and can output movie frames to RMagick. Use http://groups.google.com/group/rmovie for feedback.
Rubyforgeにこんなのがあったが使えるかね?
0222デフォルトの名無しさん
2007/02/08(木) 01:03:19ずいぶんRubyと違ってて困惑気味。
どちらの方式が実用的 or 使い易いもんでしょうか。
0223デフォルトの名無しさん
2007/02/08(木) 02:08:52どちらか片方しか使えないようなプログラマは実用的でない、とは言える。
0224デフォルトの名無しさん
2007/02/08(木) 04:40:00split(/¥s/)だと区切り文字が空白1文字になるので、spaceが連続しているときに困る。
split(/¥s+/)とするか、>>217のようにする。
>>218
PHPがつかえなくてRubyが使えるというのも珍しいけど、Rubyで大丈夫。
>>222
どっちがいいかは慣れまたは好みの問題。どっちにも利点と欠点があるので一概にはいえない。
0225デフォルトの名無しさん
2007/02/08(木) 11:00:150226デフォルトの名無しさん
2007/02/08(木) 12:35:14この辺りまとめたのは、ないかね?
rubyのprivateが、javaのprotected相当というのは、知ってるが
0227デフォルトの名無しさん
2007/02/08(木) 13:03:14ありがとうございます!
かなり目的に合ったライブラリーのようですね。
しかし、gemインストールの時点で躓いてしまいました。
gem install rmovie --remote
を実行するとエラーが出ます。
gemファイルを落として --local でも失敗してしまいます。
rubyにパスは通しており、バージョンは1.8.5です。
どなたか宜しくお願いします。
C:\>gem install rmovie --remote
Building native extensions. This could take a while...
can't find header files for ruby.
ERROR: While executing gem ... (RuntimeError)
ERROR: Failed to build gem native extension.
Gem files will remain installed in C:/ruby-1.8/lib/ruby/gems/1.8/gems/rmovie-0.5
.1 for inspection.
0228デフォルトの名無しさん
2007/02/08(木) 13:16:14gemの失敗した記録が最後のディレクトリの下のどっかに
あるはずなので見てみては?
Windowsだと、cygwinとかないと作れないのかもしれんね。
0229デフォルトの名無しさん
2007/02/08(木) 18:35:400230デフォルトの名無しさん
2007/02/08(木) 18:49:37SELECTした時にsyntax errorと怒られます。対処の仕方ってあるのでしょうか?('A')
MySQL、Ruby、DBIともにUbuntuのパッケージでインスコしました。
MYSQL:mysql Ver 14.7 Distrib 4.1.15, for pc-linux-gnu (i486) using readline 5.1
Ruby:ruby 1.8.4 (2005-12-24) [i486-linux]
0231230
2007/02/08(木) 19:19:33SELECT last_mod, hoge, hoge FROM (ry
から
SELECT * FROM (ry
にしたら読み込めた。直接フィールド名指定すると駄目なんだっけorz
0232デフォルトの名無しさん
2007/02/08(木) 21:28:12今はハプリコットとスクラッピって読んでるんだが。
0233デフォルトの名無しさん
2007/02/09(金) 00:29:560234デフォルトの名無しさん
2007/02/09(金) 01:02:10JASRACの方から来ました^^
0235デフォルトの名無しさん
2007/02/09(金) 05:41:52そんなはずはないのでもっと調べてみて。
0236デフォルトの名無しさん
2007/02/09(金) 11:51:370237デフォルトの名無しさん
2007/02/09(金) 11:52:530238デフォルトの名無しさん
2007/02/09(金) 15:23:120239デフォルトの名無しさん
2007/02/09(金) 15:34:540240デフォルトの名無しさん
2007/02/09(金) 15:42:000241デフォルトの名無しさん
2007/02/09(金) 17:35:440242デフォルトの名無しさん
2007/02/09(金) 18:23:110243デフォルトの名無しさん
2007/02/10(土) 07:34:230244デフォルトの名無しさん
2007/02/10(土) 08:00:410245デフォルトの名無しさん
2007/02/10(土) 08:51:070246デフォルトの名無しさん
2007/02/10(土) 09:38:240247デフォルトの名無しさん
2007/02/10(土) 10:24:460248デフォルトの名無しさん
2007/02/10(土) 11:48:590249デフォルトの名無しさん
2007/02/10(土) 15:41:48それを言うならこれだろ
ruby -pe'' >> test.rb
0250デフォルトの名無しさん
2007/02/10(土) 15:50:41だとうまくいかなくて
ruby -pe ''
ruby -pe0
だとうまくいった。
0251デフォルトの名無しさん
2007/02/10(土) 17:02:08include( Module.new ) ができて include( Class.new )
ができないのはなぜですか?
0252デフォルトの名無しさん
2007/02/10(土) 17:18:400253デフォルトの名無しさん
2007/02/10(土) 17:20:46m.class == Module じゃなきゃダメだろ。
0254デフォルトの名無しさん
2007/02/10(土) 17:28:20マニュアルに書いてある通り、そういう仕様。
> ・inclule による Mix-in ができない
それ許すとクラスとモジュールを分けた意味が無くないか?
だったら始めから多重継承にすればええやん。
仕組みとしては、単に include 内で
Class のインスタンスを弾いているだけだと思われる。
0255デフォルトの名無しさん
2007/02/10(土) 17:34:08実はこんな変態コードが通ったり。
class Moduleson < Module
end
include Moduleson.new
0256デフォルトの名無しさん
2007/02/10(土) 17:50:360257デフォルトの名無しさん
2007/02/10(土) 19:10:310258デフォルトの名無しさん
2007/02/10(土) 20:44:460259デフォルトの名無しさん
2007/02/10(土) 20:55:50riが英語なので日本語にしたいです。
どのような方法があるでしょうか?
0260227
2007/02/10(土) 21:20:14ウィンドウズ環境から利用できる方法はないでしょうか?
cygwin辺りから調べてますがいまだに解決できません。
どなたかヒントだけでもお願いします!
0261ちんこ ◆HEfxsk5e3k
2007/02/10(土) 23:38:28新しくRubyはじめました。こんばんわ
0262デフォルトの名無しさん
2007/02/11(日) 06:47:030263デフォルトの名無しさん
2007/02/11(日) 15:17:35@h=Array.new(9){Array.new(9) {Array.new(2) {0}}}
#p @h
def jouyo()
for i in 1..9
for j in 1..9
@h[i*j%10][j][0]=i*j%10;
@h[i*j%10][j][1]=(i*j-i*j%10)/10;
end
end
end
0264デフォルトの名無しさん
2007/02/11(日) 15:33:56%9
0265デフォルトの名無しさん
2007/02/11(日) 22:10:05のようなことをするにはどうすればいい?
0266電電厨 ◆DdcQHNOL5U
2007/02/11(日) 22:10:50C++しばらくやってないからボケた。
a << cin
の間違いでwwwwwwwwwwww
0267デフォルトの名無しさん
2007/02/11(日) 22:13:210268ちんこ ◆HEfxsk5e3k
2007/02/11(日) 22:15:250269デフォルトの名無しさん
2007/02/11(日) 22:27:13二段ボケとはやるな、お主。
0270ちんこ ◆HEfxsk5e3k
2007/02/11(日) 23:29:50まぁいいやおれはRuby Newbieだ!
erubyについて簡単に教えてくだしあ^^
0271デフォルトの名無しさん
2007/02/12(月) 18:31:120272デフォルトの名無しさん
2007/02/12(月) 19:01:11なので、当人次第。
0273デフォルトの名無しさん
2007/02/13(火) 00:16:151.0.3のgemパッケージでうまくいかなかったので
zip晩の1.0.2を上書きしてsetup.rbを動かしてもうまくいきません.
環境はWinXP SP2
ruby 1.8.4
rjbは1.0.2?です
ruby setup.rb config
---> bin
<--- bin
---> lib
<--- lib
---> ext
D:/ruby/bin/ruby "D:/ruby/lib/ruby/gems/1.8/gems/rjb-1.0.3-mswin32/ext/extconf.r
b"
checking for jni.h... no
*** D:/ruby/lib/ruby/gems/1.8/gems/rjb-1.0.3-mswin32/ext/extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
0274273
2007/02/13(火) 00:16:51Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--srcdir=D:/ruby/lib/ruby/gems/1.8/gems/rjb-1.0.3-mswin32/ext
--curdir
--ruby=D:/ruby/bin/ruby
setup.rb:535:in `command': 'system D:/ruby/bin/ruby "D:/ruby/lib/ruby/gems/1.8/g
ems/rjb-1.0.3-mswin32/ext/extconf.rb" ' failed (RuntimeError)
from setup.rb:1112:in `extconf'
from setup.rb:1107:in `config_dir_ext'
from setup.rb:1321:in `traverse'
from setup.rb:1338:in `dive_into'
from setup.rb:1319:in `traverse'
from setup.rb:1313:in `exec_task_traverse'
from setup.rb:1308:in `exec_task_traverse'
from setup.rb:1097:in `exec_config'
from setup.rb:878:in `exec_config'
from setup.rb:710:in `invoke'
from setup.rb:674:in `invoke'
from setup.rb:1352
0275デフォルトの名無しさん
2007/02/13(火) 00:53:15JDK は?
0276273
2007/02/13(火) 01:23:521.4.2です
0277デフォルトの名無しさん
2007/02/13(火) 11:06:23エラー自体は、Cのヘッダの検索パス上に%JAVA_HOME%\include(だっけ?)がないからjni.hが見付からないというもの。
最近のRjbではJDKのツールの関係上JDK1.5以降しかソースからのコンパイルはサポートされてない(手動で作ればいけるはずだけど)。
Cコンパイラが無いとrjb.soが作れないけどそれはOK?
環境変数JAVA_HOMEは設定してある?
Windowsならgemでリモートインストールしようとした時点でmswin32が選択できて
それにバイナリが入っている(なのでJDK1.4でも動作はするかも)んだけど、それでインストールできなかったってこと?
0278273
2007/02/13(火) 12:39:25JDKを1.6にUPDATEしてgemでもう一度やってみてmswin32版を選択しましたら無事インストールできたような感じだったんですけど
同梱のtest.rbを試した結果以下のように表示されました
これってインストールできてないですよね
start RJB(1.0.3) test
Loaded suite test
Started
EEEEEEEEEEEEEEEEEEEEEEEEEEE
Finished in 0.156 seconds.
1) Error:
test_CallByNullForArraies(TestRjb):
RuntimeError: unknown error
test.rb:11:in `initialize'
test.rb:11:in `setup'
2) Error:
test_CastObjectArray(TestRjb):
RuntimeError: unknown error
test.rb:11:in `initialize'
test.rb:11:in `setup'
中略
27) Error:
test_underscored_constant(TestRjb):
RuntimeError: unknown error
test.rb:11:in `initialize'
test.rb:11:in `setup'
27 tests, 0 assertions, 0 failures, 27 errors
0279デフォルトの名無しさん
2007/02/13(火) 12:54:440280デフォルトの名無しさん
2007/02/13(火) 13:37:35テストが実行できるんだからファイル自体は展開されたと思う。
で「test.rb:5:in `require': no such file to load -- rjb (LoadError)」と言われてないので-rubygemsでもないとすると
Javaのランタイムライブラリが見付からないので実行できていないのではないかと。
Windowsの場合「%JAVA_HOME%/jre/bin/i386/{classic,hotspot,server}/jvm.dll」を見に行くらしいのでJAVA_HOMEは常に設定されていないといけない。
0281ちんこ ◆HEfxsk5e3k
2007/02/13(火) 13:47:52prime = [2]
while (ary) do
prime.each do |p|
ary.delete_if do|i|
i%p == 0
end
prime << ary.first
end
end
p prime
何が違うんでしょうか・・・処理が止まりません。
0282デフォルトの名無しさん
2007/02/13(火) 13:50:49ファイルをオープンして文字列を置換したあと,
元のファイルより小さくなった場合、後ろの方にゴミが残ってしまいます。
flushの事をよく理解していないためだと思いますが宜しくお願いします。
File.open(document,'r+'){|txt|
data = txt.read
txt.rewind
txt.puts data.gsub('nil', '')
}
0283ちんこ ◆HEfxsk5e3k
2007/02/13(火) 13:58:49ary.delete_if do |i|
i%prime.last == 0
end
prime << ary.first
p prime
ary.delete_if do |i|
i%prime.last == 0
end
prime << ary.first
p prime
これなら成功します。aryが尽きるまで繰り返させたいのですがどうすれば?
0284273
2007/02/13(火) 14:00:42gemがエラーをはきませんでした
>>280
JAVA_HOMEは設定してるんですけど
「%JAVA_HOME%/jre/bin/i386/{classic,hotspot,server}/jvm.dll」にjvm.dllが
ないのが問題ですかね?
これって変更できないのですか?
0285ちんこ ◆HEfxsk5e3k
2007/02/13(火) 14:02:44ary.delete_if do |i|
i%prime.last == 0
end
prime << ary.first
p prime
end
なんでだろう。
エラトステネスのふるいってやつをやりたいんだぜ?
0286デフォルトの名無しさん
2007/02/13(火) 14:04:200、0.0、""、[]、{}は真。
0287デフォルトの名無しさん
2007/02/13(火) 14:06:59方法1: 別のファイルに書いてリネームする
方法2: 縮んだ分をtruncateする。
0288ちんこ ◆HEfxsk5e3k
2007/02/13(火) 14:10:02にしたらなんとかなったぜ\(^o^)/
0289ちんこ ◆HEfxsk5e3k
2007/02/13(火) 14:15:04ary.delete_if do |i|
i%prime.last == 0
end
prime << ary.first
p prime
end
[2, 3]
[2, 3, 5]
[2, 3, 5, 7]
[2, 3, 5, 7, 11]
[2, 3, 5, 7, 11, 13]
[2, 3, 5, 7, 11, 13, 17]
[2, 3, 5, 7, 11, 13, 17, 19]
[2, 3, 5, 7, 11, 13, 17, 19, nil]
最後のいらないんだけど、なんでだぜ?
0290デフォルトの名無しさん
2007/02/13(火) 14:18:48def initialize
@@last = self
end
def A.inspect
p @@last
end
end
class B < A
end
とした時、B.new をすると A の @@last まで変更されてしまうのですが、
A, B それぞれのクラス変数を独立した内容にするために
別の変数名にする以外の解法としてはどのようなものがあるでしょうか。
0291デフォルトの名無しさん
2007/02/13(火) 14:25:12あと、while ! に相当するuntil というのもあるぜ。
0292デフォルトの名無しさん
2007/02/13(火) 14:26:41最後にループを回るときは、
delete_ifで空になったaryからfirstを取り出してきてるね。
repeat
until 式
のループにしてみたら?
0293デフォルトの名無しさん
2007/02/13(火) 14:33:19あれ、ごめん間違い。Windowsならi386なんか入らないわ。
DLLの場所を変えたければ、いまのところソース変更してコンパイルし直すしかないなあ。
ttp://java.sun.com/javase/ja/6/webnotes/install/jdk/install-windows.html
を見る限りはRjbはJava Hotspot VM(clientのほう)を見に行ってて、ディレクトリ構造も問題ないと思うんだけど。
まとめて聞くけど
1. Rubyはどこからダウンロードなんていうファイル?
2. JDKはどこにインストールした?
3. JAVA_HOMEには何と書いてある?
4. cmd.exeとかアプリケーションを起動し直さないと環境変数が反映されないけどそれはおk?
5. 実際んとこjvm.dllというファイルはどこにある様子?複数あると思うけど見付かる限り書いてほしい。
0294ちんこ ◆HEfxsk5e3k
2007/02/13(火) 15:20:26食堂でカレー食いながら考えたらfirstだと最後にaryに残ってしまって重複してしまうことが分かった。
あとはメモリをどうするかです。
一気にary = [2...............2**10000]のはたぶんメモリが足りないので小分けにしたいのですが
素数は数が進むほど少なくなるのでどういう感覚でやっていけばいいか迷っています。
無駄な悩みなのかな?
0295ちんこ ◆HEfxsk5e3k
2007/02/13(火) 16:05:48requireとincludeの違いはなんですか?
あとMathとか標準ライブラリはどこに入ってるんですか?
0296デフォルトの名無しさん
2007/02/13(火) 17:07:14>無駄な悩みなのかな?
まずは
自然数nが√nを越えない最大の整数以下の全ての素数で割り切れなければ,nは素数である。
を考慮に入れろ。
0297デフォルトの名無しさん
2007/02/13(火) 17:12:42まず、Rubyにおいては
モジュールとは外部ファイルを指すのではなく
module文で宣言したものであることをお忘れなく。
Rubyの include は外部ファイルの取り込みではなく
モジュールの取り込みだから全然別物。
Math は組み込みモジュールなので
実行された時点で読み込まれている。
モジュールなので include しても良いし
各関数は Math.メソッド名() でも呼べるよう
設計されているので、そう呼んでも良い。
0298ちんこ ◆HEfxsk5e3k
2007/02/13(火) 19:57:47バグぽい・・・しかも小さい数だとアウト
修正出来ますか?
0299デフォルトの名無しさん
2007/02/13(火) 20:18:080300ちんこ ◆HEfxsk5e3k
2007/02/13(火) 20:24:51あれ、素数かけてって+1は素数じゃなかったか?
0301デフォルトの名無しさん
2007/02/13(火) 20:56:012*13+1=27=3*9
0302デフォルトの名無しさん
2007/02/13(火) 20:59:00「素数が無限にあることの証明」にも出てくる、最大と仮定した素数Pn
までの素数の積に+1した数は、P1..Pnまでのいずれで割っても1余るが、
Pnより大きい数で割る場合については何も語ってないと思う。
0303デフォルトの名無しさん
2007/02/13(火) 21:24:27スーパークラスとサブクラスで同名で同様の役割だけど
データは独立した変数ってのは無理なのでしょうか。
0304デフォルトの名無しさん
2007/02/13(火) 21:27:30net/httpのpostメソッドは,文字列しか送れない?
HTMLでいうと
<form enctype="multipart/form-data" action="upload.php" method="post">
<input name="upFile" type="file">
<input type="submit" value="送る">
</form>
のpostをrubyでできる?
0305デフォルトの名無しさん
2007/02/13(火) 21:56:47class A
def initialize
an_a = self
self.class.module_eval do
@last = an_a
end
end
def A.inspect
@last
end
end
B.new
p A
A.new
p A
0306デフォルトの名無しさん
2007/02/13(火) 21:58:50multipart/form-dataのボディを自力で組み立てる必要があったと思う。
0307デフォルトの名無しさん
2007/02/13(火) 22:13:15ありがとうございます。
しかしクラス変数でなくインスタンス変数ってのが
ビミョーにひっかかるような。
ちょっと勉強してきます。
0308デフォルトの名無しさん
2007/02/13(火) 22:14:12ClassクラスのインスタンスであるAやBのインスタンス変数だけど、
不満?
0309デフォルトの名無しさん
2007/02/14(水) 00:15:26としたら,サンプルを知ってますか?
ruby の webクライアント用の情報少なくって
0310デフォルトの名無しさん
2007/02/14(水) 00:43:211.9 ではクラス変数はサブクラスで共有されず、クラスごとに独立になったよ。
0311ちんこ ◆HEfxsk5e3k
2007/02/14(水) 00:50:23そうだった。勘違いしてたよ。
0312デフォルトの名無しさん
2007/02/14(水) 02:30:52えと、まぁ、ちょっと
>>310
わーお
0313デフォルトの名無しさん
2007/02/14(水) 03:02:58それはまた大胆な変更を…。
使う機会はほとんどないけど、ここぞと言うときに使っているんだよなおれ。
困ったな。
0314デフォルトの名無しさん
2007/02/14(水) 10:01:35また変わった。
http://www.rubyist.net/~matz/20070104.html#p03
0315デフォルトの名無しさん
2007/02/14(水) 17:24:59> ファイルを送信するにはどうすればいいですか?
以前に、画像掲示板にファイルを投稿するスクリプトを作ってみたことがあるけど
>multipart/form-dataのボディを自力で組み立てる必要があったと思う。
でした
やはり、multipart/form-dataの形式を理解して、自力で作成するしかないような気が
でも、ググればサンプルはありますよ
http://www.namikilab.tuat.ac.jp/~sasada/diary/200503.html#d22
とか
0316デフォルトの名無しさん
2007/02/15(木) 18:54:56thanks
参考にNet::HTTPクラスを拡張してみたけど`syswrite': Broken pipe (Errno::EPIPE)のエラーが出てしまって,お手上げ。
upload( path, query, files, header = nil)メソッドを追加したつもり。通常のFORMエレメントをHashでqueryに与えて,アップロードするファイルをname => ファイルパスのHashで与えてみました。以下スクリプト。
0317デフォルトの名無しさん
2007/02/15(木) 18:58:16require 'uri'
def upload path, query, files, header = nil
boundary = "-" * 30 + "RUBYMULTIPARTPOST#{Time.now.to_i.to_s}"
data = Array.new
query.each{|key, val|
data << "--#{boundary}"
data << %Q!Content-Disposition: form-data; name="#{URI.encode(key)}"!
data << '' << "#{URI.encode(val)}" << '' }
files.each{|key, file|
data << "--#{boundary}"
data << %!Content-Disposition: form-data; name="#{key}"; filename="#{File.basename(file)}"!
data << 'Content-Type: application/octet-stream'
data << '' << open(file, 'rb').read << '' }
data << "--#{boundary}-- << "\r\n"
header['Content-Type'] = "multipart/form-data; boundary=#{boundary}"
post(path, data.join("\r\n"), header)
end
end
0318デフォルトの名無しさん
2007/02/15(木) 19:09:10昨日はダメだったが今日はできた。理由わからず。
0319デフォルトの名無しさん
2007/02/15(木) 19:40:270320デフォルトの名無しさん
2007/02/16(金) 11:04:38<id>1</id>
<name>ほげたろう</name>
</hoge>
というXMLをパースしてオブジェクトに入れようとしてます。
案1)配列に入れる
hoge[:id]
hoge[:name]
案2)Hogeクラスを定義してattr_accessorでid,hogeを定義
hoge.id
hoge.name
案1のがクラス定義する手間が省けて良さげなんですが
パフォーマンスは案2の方が上ですかね?
スクリプト言語なんでメンバへ入れてアクセスしても大差ないのかな??
0321デフォルトの名無しさん
2007/02/16(金) 11:34:460322320
2007/02/16(金) 11:38:300323デフォルトの名無しさん
2007/02/16(金) 11:49:48Hoge = Struct.new(:id, :name)
hoge = Hoge.new
hoge.id = 1
hoge[:name] = 'ほげたろう'
0324デフォルトの名無しさん
2007/02/16(金) 19:49:426.59s user 0.11s system 6.71s total
$ time ruby1.8.5 -e 'h={:a=>1}; 10_000_000.times{h[:a]}'
7.73s user 0.11s system 7.83s total
0325デフォルトの名無しさん
2007/02/16(金) 20:57:03なるほど、参考になるよ。
つまり Python を使えということだね。
0326デフォルトの名無しさん
2007/02/16(金) 21:30:52Structの方が速い。
% time ruby -e 'class C; attr_accessor :a; end; h=C.new;h.a=1; 10_000_000.times{h.a}'
6.12s user 0.00s system 66% cpu 9.217 total
% time ruby -e 'h={:a=>1}; 10_000_000.times{h[:a]}'
7.02s user 0.01s system 80% cpu 8.763 total
% time ruby -e 'C=Struct.new("C",:a); h=C.new; h.a=1; 10_000_000.times{h.a}'
5.48s user 0.00s system 95% cpu 5.739 total
ちなみに、
% ruby -v
ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-freebsd6]
0327デフォルトの名無しさん
2007/02/16(金) 21:36:08が何番目の要素か、というのを知っているから。
Structは内部的にはデータは配列として蓄えられていて、たとえば326の定義
ならaメソッドは1番目の要素を参照するだけでよく、実際そのような内容のメ
ソッドが定義される。ハッシュ値を考えない分、速い。
もっとも、ふつうのクラス定義より速い理由はよくわからん。
0328320
2007/02/16(金) 23:13:39Structはえーし、クラス定義の手間も省けるし文句なしっすね。
Structでいきます。ありがとう!
0329ちんこ ◆HEfxsk5e3k
2007/02/16(金) 23:30:27HTMLとCSSでホームページは作れますが、XMLにすると何が有利ですか?
0330デフォルトの名無しさん
2007/02/16(金) 23:44:590331デフォルトの名無しさん
2007/02/16(金) 23:49:09とりあえず構造付きのデータを記述できる
出来合いのパーサがあれこれあるので自力でファイル読んでトークンにぶっかいて……という手間が省ける
どっちかっつーと設定ファイル向けだなあ >XML
# ちなみにYAMLってのもあるでよ、と混乱の種をまいてみるテストw
0332デフォルトの名無しさん
2007/02/17(土) 00:16:180333デフォルトの名無しさん
2007/02/17(土) 10:32:15自分でidという名前のメンバ変数を定義するのはよいのかな。
てかrailsのActiveRecordはidメンバ必須だから大丈夫だと思うんだけど・・・
0334デフォルトの名無しさん
2007/02/17(土) 11:07:12現状は注意しながら使え。
ActiveRecordなら問答無用。
というところで。
0335デフォルトの名無しさん
2007/02/18(日) 00:03:07パフォーマンスはあまり違わない。
案2は拡張しやすいけど手間がかかるので、最初は案1でやって、行き詰まったら案2に乗り換えればいいと思う。
0336デフォルトの名無しさん
2007/02/19(月) 00:02:21ttp://www.taiyosha.co.jp/comic/comic0703_han1.html
の発売表の各td内の値を配列に格納したいと思っています。
効率のよい書き方を教えてください。
お願いします。
ruby 1.8.5 (2006-08-25) [powerpc-darwin8.8.0]
0337デフォルトの名無しさん
2007/02/19(月) 00:19:24OpenStruct
倍くらい遅いけどな。
しかし、yarv使うとHashのアクセス速いな。
Structに迫るというか微妙に抜いてるかも。
全体に5〜6倍くらい速くなる。
0338デフォルトの名無しさん
2007/02/19(月) 15:19:32Osaka等幅フォントを指定したいのですが,下記三通り試しましたがうまくいきません。
listbox.configure('font' => 'Osakaレギュラー-等幅')
listbox.configure('font' => 'Osaka等幅')
listbox.configure('font' => 'Osaka-等幅')
日本語の等幅フォントの指定はどのようにしたらよいでしょうか?
環境はMac OS X 10.4 ruby 1.8.2。デフォルトでインストールされたままのrubyです。
よろしく
0339デフォルトの名無しさん
2007/02/19(月) 15:44:40とやると出てくるうちの等幅のほうをコピペで指定してやると出来た。
マイナスなのか全角ダッシュなのかよくわからんがそこらの違いぽい。
ダンプしたら
e2 88 92 e7 ad 89 e5 b9 85
というコードの文字列のようだ。
0340デフォルトの名無しさん
2007/02/19(月) 18:28:510341デフォルトの名無しさん
2007/02/19(月) 19:59:22確かに、お前の使っているチョウセンニホンゴモドキは汚い言語だな。
0342デフォルトの名無しさん
2007/02/19(月) 20:01:46Thanks.
ちょっとしたTIPS参考になりました。
ところで,Osaka等幅の半角スペース(コード\20)なんだけど,TkListbox上ではビミョーに等幅にならないです。空白が連続すると1ピクセルづつぐらいずれていきます。
Aqua/Tkに問題があるのかな?
(TkEntryではことえりで入力できない欠陥があるのでこれが限界かな?)
0343デフォルトの名無しさん
2007/02/19(月) 23:49:33tableが既にある場合に例外でちゃうんですが
これを回避する際の定型コード教えてください
0344デフォルトの名無しさん
2007/02/19(月) 23:59:26require 'sqlite3'
require 'pp'
db = SQLite3::Database.new( 'db/test.db' )
begin
db.execute( 'select * from test' )
rescue
db.execute( 'create table test( id integer primary key, name text, job text );' )
end
pp db.execute( 'select * from test' )
db.close
これか?これでいいのか?
0345デフォルトの名無しさん
2007/02/20(火) 00:02:430346デフォルトの名無しさん
2007/02/20(火) 00:30:14CREATE TABLE文にIF NOT EXISTS指定ができるわけだが。
ttp://www.sqlite.org/lang_createtable.html
0347デフォルトの名無しさん
2007/02/20(火) 00:31:52http://www.igvita.com/blog/2007/02/04/ruby-screen-scraper-in-60-seconds/
0348デフォルトの名無しさん
2007/02/20(火) 00:53:39サンクスコ
0349デフォルトの名無しさん
2007/02/20(火) 01:53:14> begin
> db.execute( 'select * from test' )
> rescue
> db.execute( 'create table test( id integer primary key, name text, job text );' )
> end
存在チェックのためだけに全件検索するのもあまりにもアレだが、
そもそもチェックしてから作成ってのは典型的なrace conditionだろ。
rescueするなら、普通は作成してみてすでにあった場合はエラーを無視。
0350デフォルトの名無しさん
2007/02/20(火) 02:22:02参考になるサイト情報ありがとうございます。
勉強してみます。
0351デフォルトの名無しさん
2007/02/20(火) 08:29:04RubyとMySQLでデータベースアプリを作っています。
下のように、CGI(1)でレコードをUPDATE後、CGI(2)でレコードを
表示しようとするとUPDATE前のレコードが表示されてしまいます。
ここでブラウザの更新ボタンを押して更新すると、UPDATE後のレコードが
表示されるようになります。
どうすれば最新のレコードを表示できるでしょうか?
CGI(1)------------------------------------------
require 'mysql'
my = Mysql.new('localhost',user,pass,database)
my.set_server_option(Mysql::OPTION_MULTI_STATEMENTS_ON)
my.query( <<-EOD
start transaction;
update hoge_table set hoge=hoge where hoge=hoge;
commit;
EOD
)
my.close
cgi(2)へリダイレクト
CGI(2)------------------------------------------
require 'mysql'
my = Mysql.new('localhost',user,pass,database)
my.query("select * from hoge") do |res|
結果をリスト表示
end
my.close
0352デフォルトの名無しさん
2007/02/20(火) 09:27:58Cacheじゃないの?
Cacheしないようにするtipsはググればわんさか見付かるから試してみなよ。
0353デフォルトの名無しさん
2007/02/20(火) 11:35:01データが変更されると、クエリキャッシュの関連するエントリがすべてフラッシュされます。
by
http://dev.mysql.com/doc/refman/4.1/ja/query-cache.html
なんでだろ
0354デフォルトの名無しさん
2007/02/20(火) 11:46:11混乱ループしてしまいどつぼにはまっています。
このようなIF文を書きたいんです。
1|mc = MyClass.new
2|value = 'value'
3|
4|if a.value = /{#value}/
5| puts 'true'
6|end
4行目のどこをエスケープして、どこをevalで囲めば良いのかで困っています。
どうぞよろしくお願いします。
0355デフォルトの名無しさん
2007/02/20(火) 11:55:070356デフォルトの名無しさん
2007/02/20(火) 12:02:19ブラウザのキャッシュ
0357354
2007/02/20(火) 13:09:45メソッド名と変数名がかぶって混乱したという話です。
変数名は変えたくないんです。これだけは譲れなくて。
ちなみに '=' は '=~' です。
0358デフォルトの名無しさん
2007/02/20(火) 13:22:390359354
2007/02/20(火) 14:23:37また例文を書き直そうと思ったら、またしてもわからなくなってきたので
質問を替えます。
a = MyClass.new
value = 'loop'
if a.value =~ /{#value}/
puts 'true'
end
があったとして、IFの行だけを後に動的にしたいんです。
上の例文の場合ではどのようにIF行をevalで表現すればいのでしょうか?
グダグダですいません。
0360デフォルトの名無しさん
2007/02/20(火) 14:44:34何をしたいのかわかんねーよ
0361354
2007/02/20(火) 14:50:120362デフォルトの名無しさん
2007/02/20(火) 14:54:33if a.value =~ /{#value}/
puts 'true'
end
!
0363デフォルトの名無しさん
2007/02/20(火) 16:51:290364デフォルトの名無しさん
2007/02/20(火) 17:02:04で、'loop'は固定でなくいろいろな文字列にしたいと。
0365デフォルトの名無しさん
2007/02/20(火) 17:06:25任意長の全角の数字の文字列を半角にする方法はありますか?
a = "0123"
b = a.hoge #=> "0123"
0366354
2007/02/20(火) 17:19:53あらゆるパターンをひたすら試して解決しました。
if eval("a.#{value} =~ /#{value}/")
puts 'loop'
end
マッチング部のみをevalで生成すると通ることがわかりました。
0367デフォルトの名無しさん
2007/02/20(火) 17:42:11a.__send__(value.to_sym)
で取れるぞ。
0368デフォルトの名無しさん
2007/02/20(火) 17:43:170369デフォルトの名無しさん
2007/02/20(火) 18:45:21CGI(1)のcommitのあとで、select文を発行してデータを確かめてみてはどうだろう。
あるいはCGI(2)へリダイレクトせずにselect文を実行。
0370デフォルトの名無しさん
2007/02/20(火) 19:14:47本当にupdateが成功しているの?
0371ちんこ ◆HEfxsk5e3k
2007/02/20(火) 20:16:46よく偶数か奇数かを調べるには%2を使って0か1で判断しますね。
でも計算機工学で習ったんですけど割り算って超大変
なんで整数型で浮動小数点で表されていなければ最下位ビットが0か1かで判断出来ると思うんです。
そういうメソッドってないですかね?w
0372デフォルトの名無しさん
2007/02/20(火) 20:19:31Ingeter#&
0373デフォルトの名無しさん
2007/02/20(火) 20:20:42(number & 1) == 0
end
def odd?(number)
(number & 1) == 1
end
0374デフォルトの名無しさん
2007/02/20(火) 20:20:540375デフォルトの名無しさん
2007/02/20(火) 20:26:02class Integer
def even?
self & 1 == 0
end
:
end
とかのほうがRubyぽいな。
0376ちんこ ◆HEfxsk5e3k
2007/02/20(火) 20:38:54if (i&1)==0 >= if i%2==0 >>>> defでeven?を使った場合
速度が大事ならC++でやれとでもいいたそうな顔ですね。
どういうコードが早いか研究するのは悪いことですか?
0377デフォルトの名無しさん
2007/02/20(火) 20:41:460378365
2007/02/20(火) 20:51:46それとも不可能ですか?
0379デフォルトの名無しさん
2007/02/20(火) 20:55:49nkfを使え。
0381デフォルトの名無しさん
2007/02/20(火) 21:06:27次のスクリプトだと「ヘブン〜」を適切にリストアップできません。
環境はMac OS X Tiger ruby 1.8です。
Mac 特有の問題らしいですが,きちんと「ヘブン〜」をリストアップする方法はありますか。スクリプト自体はShift-JISでもUTF8でも同じでした。
#!/usr/bin/ruby -Ks
require 'iconv'
d = "ヘル"
doc = Iconv.iconv('utf8','sjis', d)
Dir.glob("#{doc}*"){|fh| puts fh }
d = "ヘブン"
doc = Iconv.iconv('utf8','sjis', d)
Dir.glob("#{doc}*"){|fh| puts fh }
0382デフォルトの名無しさん
2007/02/20(火) 21:10:12NKF.nkf("-Z","01234") # => "01234"
0384デフォルトの名無しさん
2007/02/20(火) 21:41:11濁点の使用をやめる
0385デフォルトの名無しさん
2007/02/20(火) 21:59:15MacOSXのファイルシステムはかなの濁点をUnicode的に分離して保存して
いるので未対応の変換ライブラリで使うためには正規化する必要がある。
Rails(というかActiveSupport)のMultibyteを使って
handler = ActiveSupport::Multibyte::Handlers::UTF8Handler
file_name = handler.normalize(file_name)
とかするといいと思う。
0386デフォルトの名無しさん
2007/02/20(火) 22:04:42分解のほうだから、:dか:kdかな。
0387デフォルトの名無しさん
2007/02/20(火) 22:19:24>でも計算機工学で習ったんですけど割り算って超大変
計算機工学でならったんですけど2の割り算って超簡単
それはいいんだけど、スクリプトを起動したときのrubyのパスって調べることできますか。
$ cat hoge.rb
p RUBY_PATH
$ ruby hoge.rb
"/usr/local/bin"
みたいな感じで。
0388デフォルトの名無しさん
2007/02/20(火) 22:28:26アタマワルッ
0389デフォルトの名無しさん
2007/02/20(火) 22:30:49UPDATEは成功していると思います。
CGI(1)はアップデート専用で、CGI(2)は表示専用なので、
ブラウザの更新ボタンでUPDATE後のレコードが表示されるし、
リダイレクト時にはcgi2.cgiだけでリダイレクトしています。?hoge=xxxはありません。
今、何度も繰り返し再現実験?をしていたら、
UPDATE後のレコードが表示される時と、されない時がありました。
なんだかブラウザのキャッシュのような気がします。
もう少し踏ん張ってみることにします。
0390デフォルトの名無しさん
2007/02/20(火) 22:31:44OSにもよると思ったけど大抵の環境では$0でとれるよ。
0391デフォルトの名無しさん
2007/02/20(火) 22:39:43CGI(2)で、ヘッダに
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
とか出して、ブラウザにキャッシュさせないようにしてみるといいかもよ。
0392ちんこ ◆HEfxsk5e3k
2007/02/20(火) 22:59:112の割り算は簡単なのか。なんか掛け算と割り算はやべえって習ったから。
ブースの乗算アルゴとか習った。うぇwwwうぇwwwってカンジ
おれはRDEでF5ノシなので、パスとかは全く分からない。
そんなの気にしなーい、windowsだから気にしなくてもおk
0393デフォルトの名無しさん
2007/02/20(火) 23:02:25サンクス
Tiger標準はRubyのみだから,ってことはRailsをインストールしなきゃダメってことか。
それか,自分でテーブルを作って変換するか?
ひらかな,カタカナだけの正規化だけなら50パターンだから,インストールより楽かも。
0394デフォルトの名無しさん
2007/02/20(火) 23:12:15$0で出てくるのはスクリプトの名前なのでは。
やりたいのは処理系のパスでしょ。
こんな感じかなー
p `cat /proc/#{$$}/cmdline`.split("\0")[0]
ただ、コマンド行がフルパスでないときにはだめだな。
そういうときはサーチパス(ENV['PATH'])から探索しないといけないのかも。
0395デフォルトの名無しさん
2007/02/20(火) 23:22:38そういえば、LeopardにはRailsも載るらしいな。
0396デフォルトの名無しさん
2007/02/20(火) 23:50:24>$0で出てくるのはスクリプトの名前なのでは。
>やりたいのは処理系のパスでしょ。
その通りです。
ENV['PATH'] を検索する方法だと、絶対パスで指定されたときにアウトだし。
0397デフォルトの名無しさん
2007/02/20(火) 23:55:46"/usr/local/bin"じゃなくて "/usr/local/bin/ruby" だったorz
$ cat hoge.rb
p RUBY_PATH
$ ruby hoge.rb
"/usr/local/bin/ruby"
$ ruby1.9 hoge.rb
"/usr/local/bin/ruby1.9"
$ /usr/local/ruby1.9/bin/ruby hoge.rb
"/usr/local/ruby1.9/bin/ruby"
みたいなことがしたいです。
よろしくお願いします。
0398デフォルトの名無しさん
2007/02/21(水) 00:39:57File.readlink('/proc/self/exe')
Win32ならWin32APIかdl使ってGetModuleFileNameでごにょごにょ。
0399デフォルトの名無しさん
2007/02/21(水) 02:36:37Cプログラム中では rb_argv0 で保持されている。が、それをRubyスクリプトから取り出す手段がない。
大昔に [ruby-list:15843] あたりで話題になったが結局実装されていない。
0400399
2007/02/21(水) 03:54:26=== hoge.c ===
#include <ruby.h>
void Init_hoge()
{
rb_define_global_const("HOGE", rb_argv0);
}
=== extconf.rb ===
require 'mkmf'
create_makefile("hoge")
…の2つのファイルを作っておいて、
ruby ./extconf.rb
make
ruby -r./hoge -e 'p HOGE'
0401デフォルトの名無しさん
2007/02/21(水) 07:49:50そういうことか!
「ブラウザ キャッシュ」で検索したらIEの設定とかがたくさんあったから、
一生懸命ブラウザの設定項目を確認してました。
でもブラウザの設定じゃいけない気がして、悩ましく思っていました。
今日はもう出動する時間なので、今夜試してみます。
ありがとうございます。
0402デフォルトの名無しさん
2007/02/21(水) 09:20:47そもそもargv[0]に正しいパスを渡されているという保証はない。
0403デフォルトの名無しさん
2007/02/21(水) 09:27:04ありがとうございます。あまり簡単にはいかないということですね。
0404デフォルトの名無しさん
2007/02/21(水) 10:46:01こんなんでどう?一度作っちゃえばコピペで何とかなる。
ひらがなだけ
def nfd(str)
require 'jcode'
result = String.new
table = {"が" => "か" + "\xe3\x82\x99","ぎ" => "き" + "\xe3\x82\x99","ぐ" => "く" + "\xe3\x82\x99",...
...中略...
"ば" => "は" + "\xe3\x82\x99","び" => "ひ" + "\xe3\x82\x99","ぶ" => "ふ" + "\xe3\x82\x99"...
...,"ぷ" => "ふ" + "\xe3\x82\x9a","ぺ" => "へ" + "\xe3\x82\x9a","ぽ" => "ほ" + "\xe3\x82\x9a"}
str.each_char{|char|
result.concat(table[char] ? table[char] : char)
}
return result
end
d = "へぶん"
doc = nfd(d)
Dir.glob("#{doc}*"){|fh|
puts fh
}
0405デフォルトの名無しさん
2007/02/21(水) 13:55:37http://pragger.ikejisoft.com/wiki/GetPragger
http://pragger.ikejisoft.com/wiki/UsingPragger
これ通りやってみた所、こんなエラーが出ました
pragger.rb:26:in `inject': no block given (LocalJumpError)
nil from pragger.rb:12:in `load_plugins'
pragger.from pragger.rb:43 no block given (LocalJumpError)
それで pragger.rb の中を見てみたんですが
Dir.glob(File.join(folder, "**/*.rb")).sort.inject({}).each do |plugins,file|
plugins[ file[b.size..-1].to_s.gsub("/","::")[0..-4] ] = Plugin.new(file)
end
この部分がわかりません。
inject(0) {|r,i| r+i} がなんとかわかるレベルなんですが
indjecct({}).each do が何をしてるのか
b.size の b はどこから来たのか の2点が 理解不能で困っています
誰か解説お願いできませんか?
0406デフォルトの名無しさん
2007/02/21(水) 14:11:55# プラグインとして使うファイルの一覧を得る
plugin_files = Dir.glob(File.joinFile.join(folder, "**/*.rb")).sort
# 名前→プラグインの実体のハッシュを生成
plugins = {}
plugin_files.each do |file|
key = fileをいじって生成
plugins[key] = Plugin.new(file)
end
だな。
この部分だけじゃbの出所わからんね。
0407デフォルトの名無しさん
2007/02/22(木) 00:23:56自然対数と常用対数しか組み込みモジュールにないのですが
0408ちんこ ◆HEfxsk5e3k
2007/02/22(木) 00:27:260410デフォルトの名無しさん
2007/02/22(木) 00:40:04えーと、学校で対数を習うときに一緒に習うはずなんだが、
任意の1でない実数a,bに対して、
log a (x) = log b (x) / log b (a)
が成り立つ。
ので、log(x)/log(n) か log10(x)/log10(n) でOK。
0411デフォルトの名無しさん
2007/02/22(木) 00:40:490412デフォルトの名無しさん
2007/02/22(木) 02:52:08「何行目:単語」という形のプログラムを
作ろうとしたのですが、巧く動きません。
hoge.txtに保存してある
aaaa
bbbb
cccc
.
.
.
afff
を読み込んで
001: aaaa
002: bbbb
003: cccc
としたいです。
ですが行数の表示を整えることができないようで
1: aaaa
2: bbbb
3: cccc
となってしまいます。
0413デフォルトの名無しさん
2007/02/22(木) 02:52:52def initialize(line, number)
@line = line
@number = number
end
def show
@line.chomp!
case @number
when /^\d$/ #1桁のときは"00"を加える
print "00#{@number}: #{@line}\n\n"
when /^\d{2}$/ #2桁のときは"0"を加える
print "0#{@number}: #{@line}\n\n"
else #3桁以上のときはそのまま
print "#{@number}: #{@line}\n"
end
end
end
textfile = Dir.glob("**/*.txt") #フォルダ以下のテキストファイルを探し出す
num = 1 #通し番号
textfile.each { |txt|
print "<#{txt}>\n"
infile = open("#{txt}").each { |line|
number = num
line = ShowLine.new(line, number)
line.show
num += 1
}
}
ご教示御願いします。
0414デフォルトの名無しさん
2007/02/22(木) 02:56:05printf "%03d: %s\n", @number, @line
でいいかい?
0415デフォルトの名無しさん
2007/02/22(木) 02:56:18とか
printf "%03d: %s¥n", 行番号, 内容
とか
何行あるかわからないなら何桁必要になるか分からないからもう
一工夫必要になるのだけど、大丈夫?
0416デフォルトの名無しさん
2007/02/22(木) 02:58:190417デフォルトの名無しさん
2007/02/22(木) 03:02:45ありがとうございました。
printfを使えばすんなり行くことを忘れていました。
よろしければ、ツッコミを御願いします。
>>415
想定していたのは100,000行が上限ぐらいの
テキストデータでした。
0418デフォルトの名無しさん
2007/02/22(木) 03:10:05一度読んで行数を知り、rewindして改めて出力するか、最初に読んだとき
に全部配列に入れておく。行数が0でないなら、桁数は
Math.log10(行数).to_i + 1
で求められる。(0だとlog10の定義域エラーになる)
0419デフォルトの名無しさん
2007/02/22(木) 03:12:09上限わかってるんだからifで分岐処理してもいいわな。
0420デフォルトの名無しさん
2007/02/22(木) 03:12:46なるほど、勉強になりました。
ありがとうございます。
0421デフォルトの名無しさん
2007/02/22(木) 03:17:350422デフォルトの名無しさん
2007/02/22(木) 04:19:33> Dir.glob(File.join(folder, "**/*.rb")).sort.inject({}).each do |plugins,file|
inject({}) と each の間の . を消せ。
0423デフォルトの名無しさん
2007/02/22(木) 04:23:46argv[0]は呼び出し側のプログラムで好きなように指定できる。
たとえば、loginは先頭に"-"をつけて渡す。
多くのshではそれを見てログインシェルとして動作する。
また、コマンド名を渡してくる場合でもフルパスかどうかはわからない。
0424デフォルトの名無しさん
2007/02/22(木) 04:47:39.だけじゃなく、.eachをけすんじゃね?
0425351
2007/02/22(木) 06:22:22ブラウザにキャッシュさせないようにしてもダメでした。
>>369 >>370
レコードUPDATE後、すぐにSELECTして表示するスクリプトを作成して、
本当にUPDATEに成功しているのか確認したところ、失敗しているときがありました。
でも1分くらい?待っていれば、アップデート後のレコードが表示されるようになります。
とても奇妙。
で結果的に、一行毎にクエリを実行すると、古いレコードは表示されなくなりました。
my.query( <<-EOD
start transaction;
update hoge_table set hoge=hoge where hoge=hoge;
commit;
EOD
)
↑これではダメで
my.query("start transaction;")
my.query("update hoge_table set hoge=hoge where hoge=hoge;")
my.query("commit;")
↑こうすると問題なく表示されるようになりました。
ちょっと納得できないのですが、こういうモンと自分に言い聞かせることにします。
ありがとうございました。
0426デフォルトの名無しさん
2007/02/22(木) 06:46:10こうなるともうMySQLの問題だね。そっちのスレで聞いてみれば詳しいこと分かるかも。
0427デフォルトの名無しさん
2007/02/22(木) 12:01:110428デフォルトの名無しさん
2007/02/22(木) 17:05:38プログラム自体初心者のおれにはデラキツイ
0429デフォルトの名無しさん
2007/02/22(木) 17:18:50メタ文字は.[](|){}*だけ覚えればいい。他はこれらで実現できることを短く表記するためのものだ(例外あり、ただし使う機会はかなり少ない)。
それに加えて最左最長マッチの原則さえ覚えていれば大体事足りるはずだ。
正規表現はもう一つの別の言語だととらえておいた方がいいよ。
比喩ではなく実際にその通りなんだし。
0430デフォルトの名無しさん
2007/02/22(木) 17:55:270431デフォルトの名無しさん
2007/02/22(木) 18:59:55ラグナロクオンラインのBOT
メールソフト(outlook expressがゴミなので)
2ちゃんビューア
ですがよく考えたらwindowsプログラミングって超むずいんじゃないかっていう
0432デフォルトの名無しさん
2007/02/22(木) 19:20:070433デフォルトの名無しさん
2007/02/22(木) 19:32:39じゃあみなさんは何の為にRubyしてるんですか?
計算速度は遅いし・・・もしやLINUXユーザですか!?
0434デフォルトの名無しさん
2007/02/22(木) 19:38:040435デフォルトの名無しさん
2007/02/22(木) 21:09:03おおっ、わかりやすい!
ありがとうございます。
でもPraggerは動きませんでした…。 orz
injectの直前まではちゃんとディレクトリの一覧が
配列で渡されてますが、injectでやっぱりエラーになってしまいます
bの出所もやっぱりさっぱりわかりません。
ひょっとして1.8.4では動かないんでしょうかこれ
0436デフォルトの名無しさん
2007/02/22(木) 23:28:36今見たらすでに直っている。
とりあえずsvn upしろ。
0437デフォルトの名無しさん
2007/02/22(木) 23:29:51小難しいのはRuby自体の制御構造だの一時的変数だのでフォローだ
data=text.scan(/超複雑な正規表現/) #=> data=[ ['a','b,','c'],['d','e','f'] ...]
は
tmp = text.scan(/大雑把なでかい塊に区切る正規表現/)
tmp.each do |part|
data.push part.scan(/塊を配列に崩す正規表現/).flatten
end
で対応だ
メモリはたくさん積んでくれ
0438デフォルトの名無しさん
2007/02/22(木) 23:33:44あとはgrepとsedか
覚えちゃえば便利だよー
…今はpack/unpackに苦戦中
0439デフォルトの名無しさん
2007/02/22(木) 23:37:46Cのunionみたいなもんって気づいたらあとは楽だった。
0440デフォルトの名無しさん
2007/02/23(金) 06:00:42�dです
0441デフォルトの名無しさん
2007/02/23(金) 06:09:27概念自体は超簡単だな。
任意の大きさにカステラ切り分けたり、切ったカステラ並べるとこでも想像すればいいのでは。
0442デフォルトの名無しさん
2007/02/23(金) 08:12:02趣味で使うんなら大したことないんじゃない?
Windows専用のHSPの方がよっぽど苦労すると思う。
>433
自分はWindowsユーザだけど、よっぽどOS依存の機能
使いたい場合でなければ、お気楽に使えるオブジェクト
指向のスクリプト言語ってかなり楽しい。
0443デフォルトの名無しさん
2007/02/23(金) 08:16:370444ちんこ ◆HEfxsk5e3k
2007/02/23(金) 16:41:52しかしどうすれば四角いウィンドウが出てきてボタンを押すと動いたりするアプリが作れるのかわからない。
0445デフォルトの名無しさん
2007/02/23(金) 16:51:29当たり前になっちゃってるから、そこに至るためには助走が必
要だってのを知らずに始めるとゴールの遠さが堪えそうだな。
0446デフォルトの名無しさん
2007/02/23(金) 17:36:370447デフォルトの名無しさん
2007/02/23(金) 17:57:26require 'nkf'
folded = NKF.nkf("-f#{columns} -W -m0", original)
columnsは桁数。
-Wのとこは出力コードをUTF8に。
-m0はMIMEデコードを抑止。
Unicodeでない場合は$KCODEの値を変え、-Wを他のフラグに。
0448446
2007/02/23(金) 18:25:51死んだばあちゃんも天国で喜んでいると思います。
0449デフォルトの名無しさん
2007/02/23(金) 18:31:21一般的には
前者はメモリ使用量少ないが遅い
後者は遅くないがメモリたくさん使う
という認識でいいか
0450デフォルトの名無しさん
2007/02/23(金) 21:28:24このサイトのrubyスクリプトを利用したら、
このようなエラーメッセージが表示されました。
30:in `to_a': failed to allocate memory (NoMemoryError)
ですので、このスクリプトの30行目の
words.to_a.sort{|a, b| a[0] <=> b[0]}.each{|k, v|
をスマートに書き換えたいのですが
どのように書けばメモリの使用を効率よくできるのでしょうか。
0451デフォルトの名無しさん
2007/02/23(金) 21:42:53Tk無いなら Tcl/tk 環境入れて
RubyTk 使えば良いんじゃね?
0453デフォルトの名無しさん
2007/02/23(金) 21:51:29ruby/tk FAQ
http://www2s.biglobe.ne.jp/~Nori/ruby/ja/tk-faq/rtkFAQ.html
0454デフォルトの名無しさん
2007/02/23(金) 21:54:301.本質的にナニをナニに変換する処理をしてるスクリプトなのかよく考える
2.wordsには何が入ってるのかよく考える
3.ここでのソートが何をしてるのかを考える
wordsをファイルに書き出してみるとなんとなくわかるかも
0455デフォルトの名無しさん
2007/02/23(金) 21:56:520456デフォルトの名無しさん
2007/02/23(金) 22:30:41ども。分かりました。
sort_byって強力なのですね。
0457ちんこ ◆HEfxsk5e3k
2007/02/23(金) 23:07:31よくわからないんですけど、rubyでプログラム書いて人に配布する時は
どうやって配布するんですか?C++ならコンパイルして渡すんでしょうけど
インタプリタの場合どうすればいいのか・・・
試しにどなたか自作のテキストエディタを配布してくれませんか?
超単純なのでいいので。
0458ちんこ ◆HEfxsk5e3k
2007/02/23(金) 23:08:31時間を取得して表示する時計をwindowsのアプリ的なカンジで作ってください。
あ、windowsAPIってなんだ?w
0459デフォルトの名無しさん
2007/02/23(金) 23:24:520460デフォルトの名無しさん
2007/02/23(金) 23:41:350461デフォルトの名無しさん
2007/02/24(土) 00:11:46ruby -e "p Time.now"
0462ちんこ ◆HEfxsk5e3k
2007/02/24(土) 00:17:51ようするにソースのまま配布するのがインタプリタ型の配布の仕方と考えてよろしいんですね?
0463デフォルトの名無しさん
2007/02/24(土) 00:18:470464デフォルトの名無しさん
2007/02/24(土) 00:27:24UPXしないと単純なものでも800kbくらいになるけどな^^;
ttp://koneko.cn/freesoft/example.zip
0465デフォルトの名無しさん
2007/02/24(土) 06:32:150466ちんこ ◆HEfxsk5e3k
2007/02/24(土) 09:21:01おおおおおおおおおおおおおおおおおおおおおおおおおおおおおお
これぞプログラミングwwwwwwwwwwwwwwwww
めっちゃ感動しました
ようするにRuby入ってる人なら.rbで起動出来るってことでつか?
0467ちんこ ◆HEfxsk5e3k
2007/02/24(土) 09:22:250468ちんこ ◆HEfxsk5e3k
2007/02/24(土) 09:27:12これがプログラミングwwwwwwww
感動したよ、おっさん!!!!!!!
0469ちんこ ◆HEfxsk5e3k
2007/02/24(土) 09:32:28VRすっげwww
0470デフォルトの名無しさん
2007/02/24(土) 09:48:27.exe単体で起動するよ。
.rbはFormDesignerの吐いたソースほぼそのままを付けておいただけ。
0471ちんこ ◆HEfxsk5e3k
2007/02/24(土) 10:19:26何それwwwwwwwwwwwww
すげえかこよすwwwwwww
ぐぐろw
0472デフォルトの名無しさん
2007/02/24(土) 10:20:250473ちんこ ◆HEfxsk5e3k
2007/02/24(土) 10:20:55これでwindowsプログラミングが出来るぽい!!!!!!!!!
さんくる、さんくるですよぉ!!!
ttp://homepage3.nifty.com/Yukimi_Sake/ruby/formdesigner/readme.txt
0474デフォルトの名無しさん
2007/02/24(土) 10:26:080475ちんこ ◆HEfxsk5e3k
2007/02/24(土) 10:30:07rubyやべえwwwwwwwwwwwwwwwwwwwwwww
0476デフォルトの名無しさん
2007/02/24(土) 11:37:57【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://pc10.2ch.net/test/read.cgi/tech/1155031689/
0477デフォルトの名無しさん
2007/02/24(土) 11:55:280478デフォルトの名無しさん
2007/02/24(土) 12:38:020479デフォルトの名無しさん
2007/02/24(土) 14:43:360480ちんこ ◆HEfxsk5e3k
2007/02/24(土) 17:40:09def max
return 100000
end
t1 = Time.new
prime = [2]
array = Array.new(max) {|i| i+1}
array.shift
sqt = sqrt(max).floor
while prime.last<=sqt
array.delete_if {|i|
i%prime.last == 0
}
prime << array.shift
end
prime << array
prime.flatten!
#p prime
t2 = Time.new
p t2-t1
これをNarrayを使ってさらに高速にしたいのですが、出来ますか?
1秒の壁を超えたいw
0481デフォルトの名無しさん
2007/02/24(土) 18:01:54MAX=100000
primes = []
table = Array.new(MAX+1).fill(true, 2)
mid = Math.sqrt(MAX).floor
2.upto(mid) do |i|
if table[i]
primes << i
(i+i).step(MAX, i) { |j| table[j] = false if table[j] }
end
end
(mid+1).upto(MAX) do |i|
primes << i if table[i]
end
#p primes.length
t2 = Time.new
p t2-t1
0482ちんこ ◆HEfxsk5e3k
2007/02/24(土) 18:16:58でも理解出来ないから説明おねw
10^6で5秒切ることが夢だったのにふつうに5秒切られて焦るw
0483ちんこ ◆HEfxsk5e3k
2007/02/24(土) 18:18:30まさか・・・ね、しかも配列見てもあってる、インチキじゃない
エラトステネスよええwwwwwwww
0484ちんこ ◆HEfxsk5e3k
2007/02/24(土) 18:21:17エラトステネスこそ、数が増えるほど早くなるんじゃないのか
なんでだ・・・情報学科じゃないから分からないw
0485ちんこ ◆HEfxsk5e3k
2007/02/24(土) 18:24:44考えればおれに分からんことなどないのだからw
しかしふつうのrubyでアルゴリズムだけで抜かれたとなると、ますます情報系に対する憧れが強くなってしまう。
情報系にいったら就職はないと分かっているのに、何をいまさら迷っているんだおれ・・・
あぁ彼女欲しい
0486ちんこ ◆HEfxsk5e3k
2007/02/24(土) 18:33:26なかなかやるな・・・その発想はなかった。
0487デフォルトの名無しさん
2007/02/24(土) 18:33:28ttp://d.hatena.ne.jp/nurse/20060618
0488ちんこ ◆HEfxsk5e3k
2007/02/24(土) 18:35:58\(^o^)/
あとで全部読むか、こいつは面白いことになってきたぜ。
めざせ10^7で5秒
0489デフォルトの名無しさん
2007/02/24(土) 20:17:31たしかにCeleron 600Mhzで64MBの非力マシンなんだけど・・・
なんかまちがってんのかな。
debianで、apt-get updateとかはそれなりに我慢できるスピードなんだけど。
0490デフォルトの名無しさん
2007/02/25(日) 00:02:56メモリ不足で結構きついんじゃないか?
0491デフォルトの名無しさん
2007/02/25(日) 09:39:08当座の目的には必要でないライブラリまで取り込まれるようなんですが、
不要なファイルを簡単に判別する方法ってありますか?
0492デフォルトの名無しさん
2007/02/25(日) 21:37:27rubygemsをrequireするだけのスクリプトをmkexyしてやれば
不要なファイルがレシピに書き出されるんじゃない?
0493デフォルトの名無しさん
2007/02/25(日) 21:48:16モジュールを二つインクルードするとして、それぞれのモジュールでインスタンスを
初期化する必要があるためinitializeを定義しているのですが、インクルードした
側のクラスのinitializeで両方のモジュールのinitializeを呼び出すことはできるの
でしょうか。
ふつうにsuperを呼ぶと、後からインクルードした方しか呼べないのですが。
irb(main):001:0> module A
irb(main):002:1> def initialize
irb(main):003:2> puts "A"
irb(main):004:2> end
irb(main):005:1> end
=> nil
irb(main):006:0> module B
irb(main):007:1> def initialize
irb(main):008:2> puts "B"
irb(main):009:2> end
irb(main):010:1> end
=> nil
irb(main):011:0> class C
irb(main):012:1> def initialize
irb(main):013:2> super
irb(main):014:2> puts "C"
irb(main):015:2> end
irb(main):016:1> end
=> nil
irb(main):017:0> c = C.new
B
C
=> #<C:0x29c9828>
0494デフォルトの名無しさん
2007/02/25(日) 22:24:31AとBで、initialize()の名前を変えるのはどうだろう。
module A
def init_A
puts "A"
end
alias initialize init_A
end
module B
def init_B
puts "B"
end
alias initialize init_B
end
class C
include A
include B
def initialize
init_A
init_B
puts "C"
end
end
0495493
2007/02/25(日) 22:35:50そのモジュール専用の初期化メソッドを名前を変えて定義するということですね。
C++だとA::initialize、B::initialize、みたいに同名のメソッドでもクラス指定で
呼び分けることができたのですが、Rubyではできないのですね。
ありがとうございました。
0496デフォルトの名無しさん
2007/02/25(日) 23:31:11module A,Bが直接手が出せないファイルでも、
自分のclass Cのソースの中で
module A...;end
module B...;end
すればいいね。
0497デフォルトの名無しさん
2007/02/25(日) 23:34:55そうすればCで両方インクルードして、両方とも呼ばれるでしょ。
0498デフォルトの名無しさん
2007/02/25(日) 23:36:250499デフォルトの名無しさん
2007/02/26(月) 04:53:48mix-in 。
簡単に言えば多重継承の代わりにある機能だわな
多重継承ほどの自由度はないよ。
0500デフォルトの名無しさん
2007/02/26(月) 10:31:32もともと mixin は多重継承のことを指していたんだが、Matzが自分勝手に
Rubyの「モジュール」という(しかもRubyが特に最初ってわけでない)機能の別名に
頻繁に使って世の中を混乱させているだけ。好んでその混乱に拍車をかけるこたーない。
http://www.rubyist.net/~matz/20040128.html#p01
0501デフォルトの名無しさん
2007/02/26(月) 13:04:46$KCODE の値は何のために変える必要があるの?
0502デフォルトの名無しさん
2007/02/26(月) 14:42:55変換対象の文字列が生でソースコードに出てくるなら必要だけど、
そうでなければいらないんじゃない?
0503デフォルトの名無しさん
2007/02/26(月) 14:58:050504デフォルトの名無しさん
2007/02/26(月) 15:16:540505デフォルトの名無しさん
2007/02/26(月) 15:22:4810年前か……
ラベル付きbreakみたいなのもthrow〜catchがいいだろうね。
0506デフォルトの名無しさん
2007/02/26(月) 16:04:55なるほど。
しかし末尾のendが増えるな。
0507デフォルトの名無しさん
2007/02/26(月) 18:13:260508デフォルトの名無しさん
2007/02/26(月) 18:36:30前者が前者で、後者が後者。
0509デフォルトの名無しさん
2007/02/26(月) 19:24:06他の言語はthrow、catchは大域脱出の手段で使うことは推奨してないのでは?
0510デフォルトの名無しさん
2007/02/26(月) 19:27:150511デフォルトの名無しさん
2007/02/26(月) 19:43:01そもそも他の言語のthrow&catchとは違って、投げるのは例外ではないし、
例外処理ではない。単なるラベル付きbreaak。
0512デフォルトの名無しさん
2007/02/26(月) 20:50:400513デフォルトの名無しさん
2007/02/26(月) 20:55:44文法追加しないで済むのかも。
call/ccでライブラリレベルの実装も出来そうな気がする。
0514デフォルトの名無しさん
2007/02/26(月) 22:09:42研究室の輪講で、上記を使った問題を披露する必要があるのですが、何か面白い問題あるでしょうか?
無難に、文字カウントとか考えていたのですが、あまりにもひねりが無いと怖い先輩に馬鹿にされそうです
よろしくおねがいいたします
ついでに、質問ですが、イテレータが役に立つ場面って具体的にどんなところですかね
Java C verilogプログラマの自分にはいまいち、応用例がでてこないです
役に立ちそうだとは思うのですが、パッと出てこないでふ
0515デフォルトの名無しさん
2007/02/26(月) 22:22:540516514
2007/02/26(月) 22:30:26関数じゃだめなのでしょうか?
それとも、1個1個に対して異なるブロックを指定して処理内容を変えるってことですか?
なんか、トンチンカンなこと言っていたらすみません
0517デフォルトの名無しさん
2007/02/26(月) 22:33:09それだけじゃないけど。
0518514
2007/02/26(月) 22:37:23関数ポインタか
ほとんど使ったことないです
コマンドラインから文字読み取って処理を切り替えるときに使った記憶がわずかに
でも、確かにそれをコードブロックでかければ、関数ポインタで処理するよりずっとわかりやすそうですね
0519ちんこ ◆HEfxsk5e3k
2007/02/26(月) 22:47:04p "tinko"
end
どうしてだろ?
0520デフォルトの名無しさん
2007/02/26(月) 22:49:30ブロックとして渡したりする。
あとは、「リソースを得て、それを使って、リソースを解放する」という
パターンの場合、
def syori
resourceを得る。
begin
yield(resource)
ensure
resourceを解放
end
end
でsyori { |resource| ... } のように使ったり。IO::openなんかがそうだな。
0521デフォルトの名無しさん
2007/02/26(月) 22:50:54getcはStringではなくFixnum(文字コード)を返すから、?¥n と比較。
0522ちんこ ◆HEfxsk5e3k
2007/02/26(月) 22:57:15そうしてもpが発動しないのですが・・・
0523514
2007/02/26(月) 22:59:16ふむふむ、少し理解できてきました
仮にイテレータの無い言語で記述すると、処理の数だけ別な関数を生成する必要が発生しますね
それに大して、イテレータを使えば、そのつど必要な処理をかけるという解釈でOKですかね
0524ちんこ ◆HEfxsk5e3k
2007/02/26(月) 23:10:04数字を出すっていってるのにまだ""つけてたwwwwww
そりゃ比較できねーってwwwwwwwおれバカスwwwwwwwww
0525デフォルトの名無しさん
2007/02/26(月) 23:14:48begin
resourceを得る。
yield(resource)
ensure
resourceを解放 if resource
end
だた。
0526514
2007/02/26(月) 23:45:25>resourceを解放 if resource
rubyっぽくていいですね
つい
if resource != nil
resourceを開放
end
とか書いちゃいそうです
ところで、>>514に書いた問題で適切なもの思い浮かぶかたいませんかね
できれば、イテレータとハッシュか配列は絡ませたいものです
0527デフォルトの名無しさん
2007/02/26(月) 23:53:22あほなプログラムが出来る。
0528デフォルトの名無しさん
2007/02/27(火) 00:09:14test = Test.new("test")
class Test
def initialize(name)
@name = name
end
end
と記述したところuninitialized constant Test (NameError)とか出るのですが、なんなんでしょこれ?
意味が良くわかりません
最初のclassでつまずくとは、先が思いやられる、、、
0529デフォルトの名無しさん
2007/02/27(火) 00:17:40def initialize(name)
@name = name
end
end
test = Test.new("test")
0530デフォルトの名無しさん
2007/02/27(火) 00:20:330531デフォルトの名無しさん
2007/02/27(火) 00:21:440532デフォルトの名無しさん
2007/02/27(火) 00:30:01class Test
def foo
end
end
class Test
def bar
end
end
別ファイルにわけてrequireしてもいい。
ただし、継承でハマると思うので最初の定義だけは厳密に最初に実行するように。
0533デフォルトの名無しさん
2007/02/27(火) 00:38:09納得しました
基本的に上から順番に実行されていくわけですね
0534デフォルトの名無しさん
2007/02/27(火) 00:40:57既存のやつの使い道じゃなくて、
ブロック付きメソッドの定義例が欲しいってことかねぇ。
0535ちんこ ◆HEfxsk5e3k
2007/02/27(火) 08:50:52io = File.open("1.txt", "r")
io.each{|line|
line.scan(/^(.+)\s(.+)$/){|eng, jap|
words << [eng, jap]
}
}
io.close
# print words[1][1]
# p count
a = rand(words.length)
print words[a][0]
if $stdin.getc == ?v
print words[a][1]
end
英検1級の為に単語帳を製作しています。
最初に$stdin,getcが発動してしまうのはなぜでしょうか?
0536514
2007/02/27(火) 08:54:55えっと、最初に書いたのですが、研究室での輪講用の問題を作成しなくてはならないのです
で、ブロックとイテレータ、配列、制御構造、正規表現、クラスあたりまでが私の担当なので、それらを使用した面白い問題を作っていかなければならないのです
そこで、皆さんのお知恵を拝借させていただきたく思い、書き込みさせていただきました
0537デフォルトの名無しさん
2007/02/27(火) 10:00:22後者の疑問に対してのレスが今までだらだら続いてる感じだ
面白くない問題なら作れるだろうしそれでお茶濁せ
仮に面白い問題思いついたって2chには書かん(w
0538デフォルトの名無しさん
2007/02/27(火) 10:02:46あるいは研究室の研究を絡めた身近な処理を書くとか
輪講で話すってことはRubyを普段使いして欲しいんだろ?
0539ちんこ ◆HEfxsk5e3k
2007/02/27(火) 10:20:56PCの前でハルヒ見ながら待ってるのですが;;
0540デフォルトの名無しさん
2007/02/27(火) 11:13:06朝っぱらからハルヒなんぞ見てないで改行してから出直せ。
0541デフォルトの名無しさん
2007/02/27(火) 11:38:30> 研究室の研究を絡めた身近な処理を書く
に一票
「で、だから何なんだ?」という感想を抱かれるより100倍マシ
0542ちんこ ◆HEfxsk5e3k
2007/02/27(火) 13:29:26助けてくだしあ
みくるちゃん(;゚∀゚)=3ハァハァ
0543ちんこ ◆HEfxsk5e3k
2007/02/27(火) 13:32:01print words[a][0]
if $stdin.getc == "?\n"
print words[a][1]
end
でも無理です。
おかしい・・・何かがおかしい
0544ちんこ ◆HEfxsk5e3k
2007/02/27(火) 13:37:31助けてくれよ、全然分からないんだ・・・どうすりゃいいんだよおれ・・・
0545デフォルトの名無しさん
2007/02/27(火) 13:47:30A:本来どう動くべきものなのか
B:実際にはどうなるのか
を書け。
0546ちんこ ◆HEfxsk5e3k
2007/02/27(火) 14:04:39A
まず英語を出します
次に$stdinからとりあえず改行でもなんでも押すと
日本語をだします
B
最初に$stdin.getcが発動します
改行を押すと
英語が出ます、日本語はでません
Bの方は作動してもらえれば分かると思います。
words = Array.new
io = File.open("1.txt", "r")
io.each{|line|
line.scan(/^(.+)\s(.+)$/){|eng, jap|
words << [eng, jap]
}
}
io.close
#print words[1][1]
a = rand(words.length)
print words[a][0]
if STDIN.getc == "?\n"
print words[a][1]
end
0547デフォルトの名無しさん
2007/02/27(火) 14:04:57module Hashable
def [](key)
self.instance_variable_get("@#{key}")
end
def []=(key, val)
self.instance_variable_set("@#{key}", val)
end
def each
self.instance_variables.each do |varname|
key = varname[1..-1] # '@foo' => 'foo'
val = self[key]
yield(key, val)
end
end
end
0548デフォルトの名無しさん
2007/02/27(火) 14:06:05class Foo
include Hashable
def initialize(x, y)
@x = x
@y = y
end
end
foo = Foo.new(10, 20)
foo[:x] #=> 10
foo[:y] #=> 20
foo[:x] = 30
foo[:x] #=> 30
foo.each { |k, v| puts "#{k}=#{v}" } #=> "y=30", "x=20"
0549ちんこ ◆HEfxsk5e3k
2007/02/27(火) 14:06:57英語出る
→やべわかんね→「→」押す→右に日本語でる→改行押す→次の英語でる
→知ってるw→改行押す→次の単語へ
がいいんだけど、とりあえずテストしてるので
0550デフォルトの名無しさん
2007/02/27(火) 14:10:51>>540に答えでてるじゃんか。
日本語出したあと、改行は?
0551デフォルトの名無しさん
2007/02/27(火) 14:13:30STDIN.getcを使ったタイミングでflushされてるのかな。
0552ちんこ ◆HEfxsk5e3k
2007/02/27(火) 14:19:51え?何言ってるんですか?
putsにしたところで変わるわけないじゃないですか・・・
1)入力後に英語がでてくる
2)日本語が出てこない
んだから・・・
0553デフォルトの名無しさん
2007/02/27(火) 14:21:020554ちんこ ◆HEfxsk5e3k
2007/02/27(火) 14:22:38改行とか何が関係あるのか分からない。
文字が出ないと言ってるのにどう改行が関係するのか。
それか、正しく動くプログラムを示しから話してください。
あなたには分かるかも知れないが、おれに分からない。
だから聞いてるんだ、なのにさらに惑わすようなことを言って愉快犯も甚だしいっすよ
タメ口サーセンwwwwwwwwwwwwwwwwwww
0555ちんこ ◆HEfxsk5e3k
2007/02/27(火) 14:24:27print words[a][0]+"\n"
if STDIN.getc == "?\n"
print words[a][1]
end
あなた方がいうようにこうしたところで何も変わらない。
妄想で話すのはやめて欲しい。
0556デフォルトの名無しさん
2007/02/27(火) 14:28:45これは使ってるzshが最後の改行なし出力をくってしまうためなので、
改行をつければちゃんと出る。
あなたの環境は何なのか?
というか p wordsするとちゃんと出るのか。
うちじゃ読み込み部分自体がまともに動かなかったので、
words = [
[ 'hello', 'こんにちは']
]
とわざわざ作って試してるんだが。
0557デフォルトの名無しさん
2007/02/27(火) 14:32:580558ちんこ ◆HEfxsk5e3k
2007/02/27(火) 14:33:45[["apple", "\202\350\202\361\202\262"], ["elephant", "\202\274\202\244"], ["touch", "\220G\202\351"], ["love", "\210\244"], ["lip", "\220O"]]
日本語なのでpではうまく表示されないけど。
ちゃんと
print words[1][1]とかやると表示されます。
環境はruby1.8.5
a = rand(words.length)
print words[a][0]+"\n"
if STDIN.getc == "?\n"
print words[a][1] + "\n"
end
こうしても入力要求の前に英語が出ることはありません。
0559ちんこ ◆HEfxsk5e3k
2007/02/27(火) 14:35:02なる。""は外してみたが
やはりしょっぱなにgetcが発動するのは変わりない
0560ちんこ ◆HEfxsk5e3k
2007/02/27(火) 14:36:07しかしやはり英語が先に出ない。
順番がこんがらがってるとプログラムが書けない。
ここさえパスすれば英検1級がとれるんだ
0561ちんこ ◆HEfxsk5e3k
2007/02/27(火) 14:37:33ちょwwwwwwww
今までRDEのコンソール使ってたけど
プロンプトで起動させたらちゃんと出来たwwwwwwwww
WHY???????????????????????WWWWWWWWWWWWWWWWWWWWWWWW
0562デフォルトの名無しさん
2007/02/27(火) 14:38:30getcする前にSTDOUT.flushしてみてはどうか。
0563ちんこ ◆HEfxsk5e3k
2007/02/27(火) 14:39:59print words[a][0]
if STDIN.getc == ?\n
print "=>" + words[a][1]
end
しかし
lip→改行押す
lip
=>唇
になってしまう。無駄に改行w
おれの望みは「lip => 唇」
what a hell is going on?
0564ちんこ ◆HEfxsk5e3k
2007/02/27(火) 14:42:43ブラボー!!!!!!!!!!
そしたらRDEでも出来たw
なぜ?
教えてガリレオ
0565デフォルトの名無しさん
2007/02/27(火) 14:52:47ようになっている(=出力バッファリング)
環境によっては、ため込んだ量にかかわらず、改行文字の出力を指示されたら
問答無用で出力するようなのもあるが、そうでない環境もある。
flushは、ため込んだ量にかかわらず強制的に出力を行わせる。
0566ちんこ ◆HEfxsk5e3k
2007/02/27(火) 14:58:57おれはめんどうな環境なのかな。
そうそう、これにこりてコマンドプロンプトで使えるようにパス通しておきましたよ。
あとデフォの作業フォルダも変えてF1で呼び出せるように
快適ーwRDEとかカス?w
0567デフォルトの名無しさん
2007/02/27(火) 18:31:540568デフォルトの名無しさん
2007/02/27(火) 19:43:34基地外を飼って遊ぶところではありません。
0569デフォルトの名無しさん
2007/02/27(火) 20:10:28検証したHPなどを紹介して頂けると有り難いです
0570ちんこ ◆HEfxsk5e3k
2007/02/27(火) 20:21:22女の子に「バカ・・・・」って言われたことはあるけどwwwwwwwwwww
0571514
2007/02/27(火) 21:02:23レスありがとうございます
>>537
つか、何にも問題が思いつきません
>>538
輪講1~2時間の間に説明と問題演習をやるので、ゲームを作るのは時間がないかと
それとも、rubyで簡単に作られるゲームなにかありますか?
>>541
研究と絡めたいのですが、研究を理解できているのは、博士と教授のみなのです
それ以外の人間はコード1万行書いたら学部卒業、5万行書いたら院卒業ってノリの研究室です
>>547-548
ありがとうございます
しかし、ruby勉強中なのでいまいち理解できません
勉強させていただきます
0572デフォルトの名無しさん
2007/02/27(火) 21:07:540573ちんこ ◆HEfxsk5e3k
2007/02/27(火) 21:55:26英語 => 日本語
にならないか教えて欲しいです。
おれが学ぶ為に多大な額の税金が使われていることを知り、何か社会の為に出来ないかと考えたのです。
日本人は英語が出来ません、自身が英検1級をとる為に、そして学生が単語を学ぶ為に
役立つソフトを作りたいのです。
お願いです、教えてください。
とりあえずコンソール版を作り終えたら、次はふつうのGUIアプリで作るつもりです。
0574デフォルトの名無しさん
2007/02/27(火) 22:09:10日本語プログラミングスレへどうぞ。
0575デフォルトの名無しさん
2007/02/27(火) 23:12:19タイプした改行文字がローカルエコー(画面にも表示)されちゃうから。
英語 =>
日本語
になってしまう。
押したキーをプログラムに通知するだけで表示しないというモードがあれば
いいのだが(実際ある)、そう設定するのはピュアRubyコードだけでは難しい。
readlineライブラリやtermios拡張モジュールにそういう機能があるかもしれ
ないが、いずれにせよ環境依存。
0576デフォルトの名無しさん
2007/02/27(火) 23:14:52いけど、Windowsで使えるかは知らない。
0577ちんこ ◆HEfxsk5e3k
2007/02/27(火) 23:33:09では違う仕様を考えます。
ソフトを作る事を考えるといろいろ勉強になりますね。
知ってたようで知らないことが多すぎます。
作ってるうちにいろいろ機能を実装したくなりますし。
ところでソフトはクラスを使って作るのがデフォですか?
ファイルはどうやって分けるのがいいですかね?
ひとつのファイルに書くと長くなっちゃう場合とか。
あとでいろいろ追加実装するにはクラスを使った方が便利ですか?
っていってもクラスを使ったらどう便利になるのかサパーリなわけですが。
0578ちんこ ◆HEfxsk5e3k
2007/02/28(水) 10:06:50Form Designer
Ruby on Rails
これらの違いはなんですか?
0579デフォルトの名無しさん
2007/02/28(水) 10:32:34RubyでVisual Basicっぽく楽にGUIを書けることをめざすもの。
Form Designer
Visualu Rubyで使うフォームを作成するツールらしい。
Ruby on Rails
RubyでWebアプリケーションを書くための枠組みの一つ。
0580ちんこ ◆HEfxsk5e3k
2007/02/28(水) 13:20:21じゃあおれが使うべきはForm DesignerとVisualuRubyだな。
この"u"は何のこだわり?
Visual Studioとの違いを見せようと思って?
というかVisual Studioってなんだっけ。なんかC++用のソフトだっけか。
Ruby>>>>>>>>>C++
だよねw
ところでみなさんどんなエディタを使っていますか?
秀丸?terapad?
それとも統合環境?
terapad&コマンドプロンプトか
RDE
かで迷ってます。プロンプトをF1で呼べるようにしてそのままでROすると
バッシュやろうとした瞬間にプロンプトが開いてうけるwwwww
道のりはなげえなぁ、なんかパソコン調子悪くて死にそうだし。
0581ちんこ ◆HEfxsk5e3k
2007/02/28(水) 13:21:12Visual Basicだった、これをVisual Studioの違いもわからねえwwww
DQNですよね、すまそ
0582514
2007/02/28(水) 22:22:59とりあえず、1問は正規表現でなにかやって、強引にお茶を濁すつもりです
それ以外に、クラスとかコードブロックとか使用した問題を作りたいが、わけわかめ
0583デフォルトの名無しさん
2007/02/28(水) 23:29:36def value(value)
@value = value
end
end
test = Test.new()
test.value(10)#ここが、ダメらしい
これ、何がおかしいのでしょうか?
0584デフォルトの名無しさん
2007/02/28(水) 23:33:06正確にはソースは
class Test
def value(value)
@value = value
end
attr_reader :value
end
でした、関数名がかぶっているのが良くなかったとの解釈でOKでつか?
0585デフォルトの名無しさん
2007/03/01(木) 00:02:46in `value': wrong number of arguments (1 for 0) (ArgumentError)
「引数の数の誤り、0個のはずなのに1個渡されている」という意味。
つまり、valueというメソッドは引数がないものであるとRubyには認識され
ている。def value(value)〜endで定義したほうのメソッドが、
attr_readerで定義される引数なしのvalueメソッドによって上書きされている
わけだな。
def valueの定義は取り除いて、
attr_accessor :value
したほうがいいと思う。
0586デフォルトの名無しさん
2007/03/01(木) 00:45:28レスさんくす
実行時エラーの画面もその通りです
もともとは、attr_readerとattr_writerを定義していました
これは、うまくいきました
しかし、
def value(value)
@value = value
end
にすると関数名が重なるためか、うまくいきません
javaだと大丈夫なのに、、、
値を入れるときにエラーチェックなりなんだかの処理を入れたりすることが可能か確認するため上記の関数を作りました。
けっか、うまくいかなかったのですが、それだと、attr_writerとattr_readerも関数名が被っている気がするのですが、気のせいでしょうか
0587デフォルトの名無しさん
2007/03/01(木) 01:11:06Rubyにはメソッドオーバーライドはない。
defもattr_xxxも実行時に上から順に評価される式だから、
後から書いたやつで定義されるものが勝って残るだけ。
0588デフォルトの名無しさん
2007/03/01(木) 01:13:280589デフォルトの名無しさん
2007/03/01(木) 11:15:07オンラインマニュアルからのコピペだ
↓この部分が覚えにくい
なんとかかんとか { |db|
〜
}
0590デフォルトの名無しさん
2007/03/01(木) 14:19:33Net::HTTPでresponse bodyをそのままprintでファイルに書き込んでみたけど
画像のサイズだけあってて画像はぐちゃぐちゃな感じになった
0591デフォルトの名無しさん
2007/03/01(木) 14:42:21サイズは 1バイトの差も無くぴったり合ってる?
gzip 圧縮がかかってるとか、
Windows で print するときにバイナリモードになってなかったとかはありそうだけど、
サイズが合ってるとしたら違うよなあ。
0592590
2007/03/01(木) 15:08:57それでした。
バイナリモードにしわすれてて、3バイトぐらいずれてました。
(画像のサイズが合ってると言ったのは、ピクセルサイズのことです。)
無事に保存できました。
ありがとうございました。
0593デフォルトの名無しさん
2007/03/01(木) 15:21:03そーゆークラスがあるな、ということはともかく、
APIの細かいとこは覚えてない。
必要なときに
ri PStore
ri Net::HTTP
のようにしている。
0594デフォルトの名無しさん
2007/03/01(木) 15:33:59{ と } で囲むとブロックになるお
かんたんだお
0595デフォルトの名無しさん
2007/03/01(木) 16:51:140596デフォルトの名無しさん
2007/03/01(木) 17:09:290597デフォルトの名無しさん
2007/03/01(木) 18:56:220598デフォルトの名無しさん
2007/03/01(木) 19:14:040599デフォルトの名無しさん
2007/03/01(木) 19:26:33短い答え
ぐぐれ
長い答え
highline でも使っとけ。
irb(main):001:0> require "rubygems"
=> true
irb(main):002:0> require "highline"
=> true
irb(main):003:0> hl = HighLine.new
=> #<HighLine:0x30a5ea8 @answer=nil, @gather=nil, @wrap_at=nil, @question=nil, @
input=#<IO:0x2946bd0>, @header=nil, @key=nil, @prompt=nil, @menu=nil, @answers=n
il, @page_at=nil, @output=#<IO:0x2946bbc>>
irb(main):004:0> hl.ask("Password: "){|q| q.echo = "*" }
Password: *******
=> "himitsu"
または自分で実装しろ。
http://wiki.ruby-portal.de/CodeShellPasswortEingabe
0600デフォルトの名無しさん
2007/03/01(木) 22:15:24class Suuji
def initialize(n)
@i = n
end
def kake(n)
@i = @i * n
end
def to_s
"#{@i}"
end
end
というクラスを作った時に,
s = Suuji.new(2)
s.kake(3)
s.kake(3)
puts s.to_s
とすると2*3*3の18という出力が出るのですが,
puts Suuji.new(2).kake(3).kake(3).to_s
とした場合は「undefined method `kake' for 6:Fixnum (NoMethodError)」とエラーが出てしまいます.
後者の様に一行で扱うようにするにはどうしたらいいのでしょうか?
0601デフォルトの名無しさん
2007/03/01(木) 22:19:41@i = @i * n
self
end
0602デフォルトの名無しさん
2007/03/01(木) 22:36:52メソッドにreturnがない場合、最後に評価した式の値を持つ。
ので>>601のように自身を返すことでメソッドをチェーン出来る。
0603デフォルトの名無しさん
2007/03/01(木) 22:46:31お恥ずかしながらこれのやり方で朝から悩んでました.
メソッドチェーンって言うんですね
0604デフォルトの名無しさん
2007/03/01(木) 22:57:53@i=@i*n
self
end
という定義も出来たりする。
0605デフォルトの名無しさん
2007/03/01(木) 23:10:53a*b と b*a みたく左右入れ替えると不自然な結果に。。。
0606デフォルトの名無しさん
2007/03/01(木) 23:15:06つ coerce
0607デフォルトの名無しさん
2007/03/01(木) 23:26:51=> "aa"
irb(main):002:0> 2*"a"
TypeError: String can't be coerced into Fixnum
from (irb):2:in `*'
from (irb):2
標準組み込みクラスでもうまくいってない気がする。
0608デフォルトの名無しさん
2007/03/01(木) 23:29:340609デフォルトの名無しさん
2007/03/01(木) 23:42:470610デフォルトの名無しさん
2007/03/02(金) 01:11:50どこの処理に時間がかかるかとかを知りたいんですが、
簡単にチェックする方法ってあります?
0611デフォルトの名無しさん
2007/03/02(金) 03:22:070612デフォルトの名無しさん
2007/03/02(金) 04:12:46そういうシンプルな回答で誤字脱字があると哀しいものがあるね。
0613デフォルトの名無しさん
2007/03/03(土) 14:15:23irb(main):001:0> require 'uri'
=> true
irb(main):002:0> p URI::UNSAFE
/[^-_.!~*'()a-zA-Z\d;\/?:@&=+$,\[\]]/n
=> nil
irb(main):007:0> s = "('1','2','3')"
=> "('1','2','3')"
irb(main):008:0> p s
"('1','2','3')"
=> nil
irb(main):009:0> p URI.encode(s)
"('1','2','3')"
=> nil
こんなかんじです。
結果は%28%271%27%2C%272%27%2C%273%27%29を期待しているのですが。
rubyはruby 1.8.2 (2004-12-25) [powerpc-darwin8.0]です。
0614デフォルトの名無しさん
2007/03/03(土) 14:21:12エスケープする必要のない文字のようだが。
問答無用で%表記にしたいなら
URI.escape(s, /./)
0615デフォルトの名無しさん
2007/03/03(土) 14:31:14thanks
UNSAFEとあったのでよく見もしないで,エンコードされると思ってました。
デフォルトのままだとブラウザと違って除外されるのね。
0616ちんこ ◆HEfxsk5e3k
2007/03/03(土) 15:08:49@@ary = Array.new
def Unko.ary
return @@ary
end
def length
return @@ary.length
end
def Unko.add(value)
if length < 3
@@ary << value
elsif length >= 3
@@ary.shift
@@ary << value
end
end
end
u = Unko.new
Unko.add(1)
Unko.add(2)
Unko.add(3)
Unko.add(4)
Unko.add(5)
Unko.add(6)
p Unko.ary
なぜエラー?
0617デフォルトの名無しさん
2007/03/03(土) 15:39:29・エラーメッセージをよく読め
・u = Unko.new は不要
・length メソッドを設ける意味がわからん
・態度が気に入らない
0618デフォルトの名無しさん
2007/03/03(土) 16:31:32ざっと検索したけど、どうも無いような気がします。
無い場合は、自分でつくろうと思っています。
0619デフォルトの名無しさん
2007/03/03(土) 16:55:000620デフォルトの名無しさん
2007/03/03(土) 16:59:300621ちんこ ◆HEfxsk5e3k
2007/03/03(土) 18:19:21if @@ary.length < 3
@@ary << value
elsif Unko.ary.length >= 3
@@ary.shift
@@ary << value
end
end
これでもいけるからして、@@aryを出すためだけのクラスメソッドを作る意味が良く分からない。
外部参照用ってだけ?
0622ちんこ ◆HEfxsk5e3k
2007/03/03(土) 18:27:55コマンドプロンプトみたいに、前の入力をいくつか覚えててくれて↑↓で呼び出せる
クラスを作りたいな
って話なわけで。
今、Form Designerがなんとなく分かったので
GUIの勉強をするのと同時に、オブジェクト指向というものを
きちんと理解しようかと
なぜオブジェクト指向が優れているのか
こういうクラスって作る意味ある?オブジェクト指向をするに当たって、どこからどこまでをクラスにすればよいやら分からないw
0623デフォルトの名無しさん
2007/03/03(土) 19:39:31class << unko = []
def add(value)
return push(value) if size < 3
shift
push value
end
end
0624ちんこ ◆HEfxsk5e3k
2007/03/03(土) 19:50:35の意味が分からない。
さっきシャワー浴びながら考えたけどインスタントメソッド作る意味ないかも。
全部
Unko.xxxxにした方がやりやすい。
こんなクラスのインスタンス作っても作るだけ無駄な気がしてきた。
テキストエディタ→英単語勉強ツール→某掲示板(2ちゃんではなく)ビューア
の予定
FormDesignerのセーブマークやファイル開くマークの使い方がよう分からないんだけど?
0625デフォルトの名無しさん
2007/03/03(土) 20:49:220626デフォルトの名無しさん
2007/03/03(土) 21:23:41>>29は読んだか?面白いぞ。
あと、この本は完全に初心者向けで楽しい。オススメ。
http://www.amazon.co.jp/dp/4873112923
0627ちんこ ◆HEfxsk5e3k
2007/03/03(土) 21:49:37�d
テキストはまつもと氏の「楽しいRubyプログラミング」を読んでいます。
ホワイの方はヒマな時読んでみます
0628デフォルトの名無しさん
2007/03/03(土) 21:57:41でも、それでおk。一番最初のまつもと本を買わなくて正解、あれは初心者向きじゃないよ(でも面白いけどね)。
class << unko = []
def add; ... ; end
end
ってのは特異メソッドな。
unko = []
def unko.add; ... ; end
と等しい。インスタンスっての自分でデータ型を作りたいときに役立つよ。
0629ちんこ ◆HEfxsk5e3k
2007/03/03(土) 22:12:510630デフォルトの名無しさん
2007/03/03(土) 23:11:580631ちんこ ◆HEfxsk5e3k
2007/03/04(日) 00:31:44イイ本ありますか?ネットのマニュアルは英語でよく分からないw
早急に勉強する必要があるのですが、クラスやモジュール大杉で・・・
0632デフォルトの名無しさん
2007/03/04(日) 01:04:56/himituディレクトリにBASIC認証を設定して、
認証が成立したら/himitu/index.cgiを開こうとしています。
server.mount_proc('/himitu') {|req, res|
WEBrick::HTTPAuth.basic_auth(req, res, "WEBrick's realm") {|user, pass|
user == 'aaa' && pass == 'aaa'
}
res.set_redirect(WEBrick::HTTPStatus::MovedPermanently, req.request_uri)
}
上のように書いたら、認証→リダイレクト→認証→リダイレクト(以下繰り返し)
になってしまい、/himitu/index.cgiを表示できません。
良く考えたら当り前ですが、/himituディレクトリにはindex.cgi以外にもcgiを
置きたいので、リダイレクト先をreq.request_uriで指定するしかありません。
こういう場合、どういう風に書くと良いのでしょうか?
0633デフォルトの名無しさん
2007/03/04(日) 02:48:52これは丁寧で良いですね。
でも、完全に初心者って人にはちょっと躓くところがあるかも。
これを参照しつつ、さらに丁寧な解説を付け加えれば、初心者向けのものができますね。
どうもありがとうございました。
0634デフォルトの名無しさん
2007/03/04(日) 03:40:32ttp://d.hatena.ne.jp/mailishmaid/20061019
0635610
2007/03/04(日) 22:00:15えーっとですね、CGIなので、コマンドラインから呼んでも
通常の動作をしないです。だから、ブラウザから呼んだ時の
動作を調査したいのですが、何か簡単な方法ないでしょうか?
0636デフォルトの名無しさん
2007/03/04(日) 22:44:10だからブラウザから呼んだ時の動作を調査できるのです。
echo VALUE1=hoge&VALUE2=123|ruby hoge.cgi
0637デフォルトの名無しさん
2007/03/04(日) 23:42:43標準入力が端末だとそうなるんだっけかかな。
-r profileか ttp://raa.ruby-lang.org/project/ruby-prof/ とか。
あとは基本としてruby本体の起動に時間が掛ってることが多い。
mod_rubyとかFastCGIみたいな環境でないと、やっぱ負荷大きめ。
0638デフォルトの名無しさん
2007/03/05(月) 01:35:46Amritaを使ってHTMLを生成したいのですが
配列の展開がうまくいっていません。
pp $origin_title_Array #=>["ショー☆バン 32", "天の神話 地の永遠", "こいこい7 9(完)"]
pp $author_Array #=>["松島 幸太朗", "赤石 路代", "もりしげ"]
boo = File.open("template_test10Beta.html",'w')
tmpl = TemplateFile.new ("MyTemplate_testSimple.html")
data = {
:table1=>[
{ :newTitle=>$origin_title_Array, :Author=>$author_Array},
]
}
tmpl.prettyprint = true
tmpl.expand(boo, data)
0639638
2007/03/05(月) 01:38:55<table border="1">
<tr><th>name</th><th>author</th></tr>
<tr id=table1>
<td id="newTitle"><td id="Author">
</tr>
</table>
実行結果HTMLのソース
<table border="1">
<tr>
<th>name</th>
<th>author</th>
</tr>
<tr>
<td>ショー☆バン 32</td>
<td>天の神話 地の永遠</td>
<td>こいこい7 9(完)</td>
<td>松島 幸太朗</td>
<td>赤石 路代</td>
<td>もりしげ</td>
</tr>
</table>
横一列に展開されてしまいます。
これをAmritaのサンプルソースみたいな感じに出力するにはどうすればいいでしょうか?
0640デフォルトの名無しさん
2007/03/05(月) 01:44:36列ごとにもつのではなく行単位でデータを持つようにしてみよう。
rows = {
:table1=> [
{ :title=>"apple", :author=>"foo" }.
{ :title=>"banana", :author=>"bar" }.
]
0642デフォルトの名無しさん
2007/03/05(月) 08:15:23日本語サイトありますか?
0643デフォルトの名無しさん
2007/03/05(月) 15:48:09ググレ。ぐぐったあとで聞いているなら、「ない」が答えだ。
0644デフォルトの名無しさん
2007/03/05(月) 19:49:011.8 系の複数バージョンの共存ってどうするのがスマートでしょうか?
1.8 と 1.9 なら --program-suffix=19 とかで共存できると思いますが、
1.8 同士だとこれでは /usr/local/lib/ruby/1.8 のディレクトリが競合しそうです。
0645デフォルトの名無しさん
2007/03/05(月) 19:55:32--prefix=hoge
0646デフォルトの名無しさん
2007/03/05(月) 21:28:46ここを推奨
ttp://mono.kmc.gr.jp/~yhara/w/?HpricotShowcaseJa
0647デフォルトの名無しさん
2007/03/05(月) 22:57:54WindowsならcoLinux入れて……というのもありかも
0648デフォルトの名無しさん
2007/03/06(火) 09:17:00シンボリックリンクが偽物なので変な時があった気がする。
Linuxなり*BSDなら別に問題ないかも知れぬ。
yastとかaptとかで入れちゃうから最近考えたことないな。
0649644
2007/03/06(火) 09:48:19>>645 さんのは --prefix=/usr/local/ruby_1_8_6 とかにしておけば
飽きたら rm -rf /usr/local/ruby_1_8_6 するだけで済むので良さそうですね。
というわけでこれでいってみます。みなさん回答ありがとうございました。
0650ちんこ ◆HEfxsk5e3k
2007/03/06(火) 14:52:16さいこう
0651ちんこ ◆HEfxsk5e3k
2007/03/07(水) 11:21:37プリントアウトの画面を出すにはどうすればいいですか?
SWin::CommonDialog::setPrinter(self)
はprinterを選択してくれるみたいですが、
実際に印刷はどうすればいいのか分かりません。
また、メインの印刷ボタンを押した時にまた新しいウインドウが出てくるやり方がわかりません。
教えてくだしあ^^
0652デフォルトの名無しさん
2007/03/07(水) 15:40:49スレもあるし
【それ】Pragger入門【Pra】
http://pc9.2ch.net/test/read.cgi/software/1172087070/
0653ちんこ ◆HEfxsk5e3k
2007/03/07(水) 15:59:55なぜ
VRLocalScreen.start From2
じゃダメなんですか?
messageloopのせいですか?
frm=VRLocalScreen.newform
frm.extend Form2
frm.create.show
こう書いたらいけたんですけど、3行も書かないといけないのは理不尽
なのでもっと短いコマンドがあるはずなんですけど・・・・?
0654デフォルトの名無しさん
2007/03/07(水) 16:21:32>>こう書いたらいけたんですけど、3行も書かないといけないのは理不尽
>>なのでもっと短いコマンドがあるはずなんですけど・・・・?
あるはずって何で分かるの?
0655ちんこ ◆HEfxsk5e3k
2007/03/07(水) 16:26:280656デフォルトの名無しさん
2007/03/07(水) 16:41:240657デフォルトの名無しさん
2007/03/07(水) 16:46:05「理不尽」って言葉の意味知ってる?
0658デフォルトの名無しさん
2007/03/07(水) 17:14:14だって、他にはメソッドとかやたら発達してるのにこんなところで
3行もかかないと新しいウインドウ作れないようじゃ理不尽
0659デフォルトの名無しさん
2007/03/07(水) 18:24:54の文章は理解できる
>>653
の文章は理解しがたい
つまり「理不尽」の意味は「ゆとり」ということである。
0660ちんこ ◆HEfxsk5e3k
2007/03/07(水) 19:31:380661デフォルトの名無しさん
2007/03/07(水) 20:15:120662デフォルトの名無しさん
2007/03/07(水) 20:21:150663ちんこ ◆HEfxsk5e3k
2007/03/07(水) 20:50:00メソッドで定義すりゃいいんだよな、例えば
VRLocalScreen.newWindow(Form2)
とかで出したいんだけどねーw
0664ちんこ ◆HEfxsk5e3k
2007/03/07(水) 21:26:38やっぱりshowFormってメソッドが存在するじゃねーかwwwwww
Rubyにしては理不尽だと思ったんだよな、3行も書いてちゃちっともEnjoy出来ないwwwwwwwwwwwww
結局お前ら分からなかったんだろ、カスどもめwwwwwwwwwwwwwww
0665デフォルトの名無しさん
2007/03/07(水) 22:00:360666デフォルトの名無しさん
2007/03/07(水) 23:41:12=> 1.73205080756888
となりますが、自分の好きな桁数だけsqrt(3)を得たい場合、
どうすればよいですか?
お教えください。
0667デフォルトの名無しさん
2007/03/08(木) 00:04:54こんなのがあるな。計算方法はニュートン法なんかで出せばいいんじゃね
0668デフォルトの名無しさん
2007/03/08(木) 00:10:54IEEE754の倍精度以上のものにはならない。
望むだけの桁数を求めたければ自分で開平法を実装するか、
標準のBigDecimalライブラリを使用する。
require 'bigdecimal'
require 'bigdecimal/math'
sqrt3_100 = BigDecimal.new('3').sqrt(100)
開平にはニュートン法を使っているもよう。
0669ちんこ ◆HEfxsk5e3k
2007/03/08(木) 00:41:03ありw
0670デフォルトの名無しさん
2007/03/08(木) 01:39:270671デフォルトの名無しさん
2007/03/08(木) 01:51:440672デフォルトの名無しさん
2007/03/08(木) 01:55:51net/http使って一定時間置きにルーターの設定変えたりとか
ファイルの一括リネームとか
HTMLの一括加工とか。
RUBY-MSWIN32はインストール不要でPATH通すだけで良いから
USBメモリーに入れて持ち歩いてる。
0673デフォルトの名無しさん
2007/03/08(木) 02:07:12ダウンローダの代わりに使ってる。
スクリプトでヘッダから何からいじり放題、HTML解析もし放題なので、
IRIAもまっつぁお。
0674デフォルトの名無しさん
2007/03/08(木) 04:18:39あと、winのエロゲからスクリプトとか画像とか抜き出したり加工するのにもRubyは大活躍でした。
0675デフォルトの名無しさん
2007/03/08(木) 08:24:09研究用のプログラムの計算結果を整理するのに使ってる。
0676ちんこ ◆HEfxsk5e3k
2007/03/08(木) 09:05:160677デフォルトの名無しさん
2007/03/08(木) 09:05:40主に小さいスクリプト物だな。
ファイルのリネームとか
あとは、プロジェクトで、Makefileの代わりに、Rakefile使ってる
0678デフォルトの名無しさん
2007/03/08(木) 09:27:350679デフォルトの名無しさん
2007/03/08(木) 10:59:04makeに対するrakeのメリットって何ですか?
0680デフォルトの名無しさん
2007/03/08(木) 11:01:410681デフォルトの名無しさん
2007/03/08(木) 11:13:19使い慣れたrubyを使える点
makeは、不自由すぎる
関数もまともに使えないし(できるけど、すげー使いにくい)
0682ちんこ ◆HEfxsk5e3k
2007/03/09(金) 16:40:08そこからひらくForm2でtext1.text
を操作することは出来ますか?
"tinko".f @text1.textでやったらエラーが出ました。
0683デフォルトの名無しさん
2007/03/09(金) 17:02:32理由もお願いします。
0684デフォルトの名無しさん
2007/03/09(金) 18:11:57rexml
べつに勧めたくはないが、とりあえず標準添付。
0685デフォルトの名無しさん
2007/03/09(金) 18:12:08他のインスタンスの持つインスタンス変数へのアクセスはできない。
Form1で
attr_rader :text1 と書いておくと、text1というメソッドで参照できる。
attr_writer :text1 と書くと text1 = ... 書くことで代入が出来る。
あるいは、
f.instance_eval { @text1 } という技もあるが、常用するものではない。
0686ちんこ ◆HEfxsk5e3k
2007/03/09(金) 21:01:23なるw
しかしVisualuRubyともお別れっぽいです。
Linuxに移行するかも知れないのでtkかgtk+というのに乗り換えねばです。
VisualuRubyで得た知識は使えると思うけど
gtk+の方がオブジェクト指向っぽいって書いてあって、やっぱそっちかなと思っています。
どうしたいいですか?
0687デフォルトの名無しさん
2007/03/09(金) 21:09:53FXRubyかWXRubyを試してみるといいよ。
Windows、Linuxどちらでも動くプログラムが作れる。
0688ちんこ ◆HEfxsk5e3k
2007/03/09(金) 22:30:43また
ttp://www.gesource.jp/programming/ruby/gui/wxruby/wxruby.html
をみると明らかにwxRuby>>>>>FXRubyという記述がされていますが・・・
wxRubyもBuilderがあるんですね、ちょっと見てみますわ
マイクロソフトまじむかつくわー
0689デフォルトの名無しさん
2007/03/09(金) 22:54:33Gtk+はWindowsで使うときにどうも不安定。
wxRubyはRubygems使えば一発で入るし、おすすめ。
0690ちんこ ◆HEfxsk5e3k
2007/03/09(金) 22:59:03なんかここだと評判悪いなぁ、なんでだぜ?
0691デフォルトの名無しさん
2007/03/09(金) 23:24:19日本語のドキュメントは皆無だし。
ただ、安定度については「るびま」で紹介されてから大分改善されてきているね。
0692デフォルトの名無しさん
2007/03/09(金) 23:26:57Ruby Wayとかいう、うさんくさい本を買って来た。
たのしいRubyよりはレベルが高いだろう
0693デフォルトの名無しさん
2007/03/10(土) 03:06:42ハッシュに to_a メソッドを使うと,キーと値が交互に並んだ配列が戻る
って書いてあるんだけど,これはRubyのバージョンの違い?それとも間違い?
自分の環境だと配列の配列が戻るし,リファレンスマニュアルでも配列の配列になってる.
環境
ruby 1.8.4 (2005-12-24) [i386-mswin32]
ruby 1.8.2 (2004-12-25) [universal-darwin8.0]
こんな風に書いてある
> h = {"a"=>1, "b"=>2}
> p h.to_a # ["a",1,"b",2]←コレ
0694デフォルトの名無しさん
2007/03/10(土) 03:41:35簡単にお金稼ぎ!!!
以下の手順でやれば、無料でお金稼ぎができます。
企業も広告の宣伝になるから、お金をくれるわけです。
(1) http://otakara.shichihuku.com/
↑このアドレスからサイトに行く。
(2) ゲットマネー登録サイトに移動するので、
そこで無料会員登録をする。
※フリーメールアドレスでもOK。
(3)懸賞の応募や無料会員登録をすればするほど、
ポイントが貰え、それを現金に換えられます。
これで現金を稼ぐといいですよ!!!
無料会員登録はこちらから↓
http://otakara.shichihuku.com/
0695デフォルトの名無しさん
2007/03/10(土) 07:44:47覚えておこう。
0696デフォルトの名無しさん
2007/03/10(土) 10:43:54Ruby WayはRuby1.6時代の本だったな、確か。
古い挙動は覚えていないが、リファレンスマニュアル(wiki)の
1.6.8から1.8.0への変更点(まとめ) (URL長くて怒られたので省略)
にも、巻末の1.8での変更点にもto_aが変更されたとは書いてないな。
http://www.seshop.com/book/qa/Default.asp?mode=list&pid=3585
ここで問い合わせてみるとか。
0697ちんこ ◆HEfxsk5e3k
2007/03/10(土) 10:52:512002年と書いてあるから古いんだろうとは思ったがなんとなく攻略本的なその大きさと
ちょっとした専門書なみの4500円というプライスに惹かれてついつい
でもなかなか面白い。本はやはり外人が書いたものがいいですね。
日本人の書いたものは言葉の無駄が多すぎる、日本語がそういう言語だからなんですけど。
ちょうど学校のパソコンが1.67だったかなんだったかなんで、学校のパソコン室で勉強出来るっ!
家にいるとどしてもちんこをいじってしまう傾向がありまして^^;
タイトルも"Ruby Way"ですからね。
アルティメットなカンジがしました。
0698デフォルトの名無しさん
2007/03/10(土) 11:44:01そもそも女性に辛い仕事を押し付けないこと。かといって雑用やらせるのもダメ。
それで給与も昇進も平等にね。ただし残業、転勤、深夜当直させたら女性差別だよ。
間接差別禁止規定って知ってるでしょ。なんでも平等にね。髪形と服装は女性の自由だけど。
それからアファーマティブアクションと管理職30%目標もね。産休育休もね。当然給与40%保障で。
主婦と言っても、家事を強制される言われはないし、出産するかどうかは女が決めること。
でも産まれたら育児を女性に押し付けないでね。二人の子供なんだから当然でしょ。
ただし離婚したら親権は母親のものだよ。育児は女性のほうが向いてるんだし。
それから働く夫を妻が支えるなんて時代遅れの女性差別。
これからは働く妻を夫が支えなきゃ。
あ、もちろん収入は夫の方が多くて当然だけどね。妻には扶養請求権だってあるんだから。
それと夫は妻に優しくね。妻が望まないセックスは家庭内レイプだよ。
夫が妻のセックスの求めに応じないと離婚事由になるけどね。
離婚したら慰謝料とか財産分与とかまあ当然だけど。
女性はか弱いから母子手当ても生活保護も税金控除も当然だよね。足りないぐらい。
それと女性に女らしさを押し付けないでよ。
そんなの窮屈で面倒だし、いまさら男尊女卑ですかって感じ。
でも男はやっぱ男らしくないとね。
いつになったらレディーファースト覚えるの?ワリカンなんてありえないし。
少子化だって男のせいでしょ。男がだらしないから女性が結婚できないんだよ。
え?レディースデー?あれはいいの。
別に私たちが頼んだ訳じゃないし。店が勝手にやってるんでしょ。
0699デフォルトの名無しさん
2007/03/10(土) 13:58:37どのように記述すればよいのでしょうか?
どこを見ても file = File.new(...) で困っています。
0700デフォルトの名無しさん
2007/03/10(土) 14:15:310701デフォルトの名無しさん
2007/03/10(土) 15:35:47Excel形式でファイルを出力させたいのですが、Windows以外での動作を期待しているので
Win32OLEを使いたくありません。
なにか適当なサンプルが掲載されているサイト等等、あるのかな。。。。たすけて。。
0702デフォルトの名無しさん
2007/03/10(土) 16:15:07著者が「ver1.6.4でも十分coolだと思ったけど、(今使ってる)
ver1.8.5は超coolだぜ!」みたいなこと書いてるので、2版書いた
時に使ってたのは少なくとも1.8以上なのではと推測。
で2版のHash#to_aのところがどうなってるかというと、初版日本
語版と同じだった。やはり著者の勘違い?
0703デフォルトの名無しさん
2007/03/10(土) 18:36:28spreadsheet-excel の examples ディレクトリにサンプルコードが
少しあるけどこれは見た?
0704デフォルトの名無しさん
2007/03/10(土) 18:38:00参照できているのか分からないのですが、どなたか解説してください。
class A
def initialize
p = proc {
@a[1] = 0
}
@a = [1, 2, 3]
p.call
end
end
A.new
p = proc {
puts a[1] = 0
}
a = [1, 2, 3]
p.call
0705ちんこ ◆HEfxsk5e3k
2007/03/10(土) 18:57:010706デフォルトの名無しさん
2007/03/10(土) 19:41:58暮らす変数じゃなくてインスタンス変数のことかな。
最初のprocはインスタンスメソッドの中で定義されているから、インスタンス変数を参照できる、ぐらいしか説明できん。
2番目のほうは実行すると
undefined local variable or method `a' for main:Object (NameError)
というエラー。これは、procが定義された時点ではaというローカル変数が定義されていないから。
procの中で参照できるローカル変数は、procが定義されるまでに定義されたローカル変数のみ。
あとからaを定義しても、それはprocの動作に何の影響も与えない。
ローカル変数とインスタンス変数はスコープが違う、といえばいいのかな。
0707704
2007/03/10(土) 19:58:54> 暮らす変数じゃなくてインスタンス変数のことかな。
そうですね。間違えました。
あと、2つ目のproc{}の中のputsは消し忘れです。
Procオブジェクトは生成された時点で定義されている変数を記録していると理解して
います。initializeの中でProcオブジェクトが生成された時点では@aは定義されていないはず
なのに、どうしてローカル変数と同じようなエラーが出ないのかと言う事が疑問です。
0708デフォルトの名無しさん
2007/03/10(土) 20:13:40インスタンス変数はそのインスタンス内でグローバル変数になるわけだから。
p = Proc.new do $a[1] = 0 end
$a = [1, 2, 3]
p.call
puts $a
0709デフォルトの名無しさん
2007/03/10(土) 21:53:56インスタンス変数とローカル変数は違うから、としか答えられないなあ。
『Procオブジェクトは生成された時点で定義されている変数を記録している』はちょっと違って、
『Procオブジェクトは生成された時点で定義されているローカル変数だけを記録している』といえばいいのかな。
あと、Procオブジェクトが生成された時点でselfも記録されるから、それ経由で@aは問題なく参照できる。
そうか、@aを直接参照しているのではなく、self経由で参照している、そしてselfはProc生成時にローカル変数と同様に保存される、と説明すればいいのか。
どう?
0711デフォルトの名無しさん
2007/03/10(土) 22:44:49プログラムを実行したところ最後のte.close行が文法エラーとして出力されます。openしてcloseしているので合ってると思ったのですがエラーが出てるので間違ってるようなのですが
どの部分がおかしいのかわかりません。
# ruby program name.txt
file = open(ARGV[0], "r")
rescue Errno::ENOENT, Errno::EACCES
print("エラー\n")
exit 1
end
print("出力ファイル名:")
output = $stdin.gets.chomp
print("ID名を入力:")
id = $stdin.gets.chomp
te = File.open(output,"w")
chke = "0"
while line = file.gets
if chke == 1
if /ID:#.+\Z/ =~ line && if /\d+/ =~ line
chke = "0"
else
te.print "#{line}\n"
chke = "1"
end
elsif /ID:#{id}\Z/ =~ line && if /\d+/ =~ line
line.chomp!
te.print "#{line}\n"
chke = "1"
end
end
file.close
te.close
0712デフォルトの名無しさん
2007/03/10(土) 22:46:480713デフォルトの名無しさん
2007/03/10(土) 23:32:24それとブロック使ったほうがファイルの閉じ忘れが無くていい
file = open(...) ... end → open(...) {|file| ... }
0714デフォルトの名無しさん
2007/03/10(土) 23:37:34rescue文は、前につくって成功した別のプログラムからコピペしたやつだから
うまくいってるのかと思ってましたが、後で確認してみます。
ブロック使う方法についての確認ですが、
open(output,"w") {|file|output,"w"} になるのでしょうか?
何かoutput,"w"を2度指定するのは違和感があるのですが・・・
0715デフォルトの名無しさん
2007/03/10(土) 23:44:39たびたび申し訳ない。
0716デフォルトの名無しさん
2007/03/10(土) 23:47:33begin
(例外投げそうな処理)
rescue (例外の種類)
(例外が投げられたときの処理)
end
こうね。
ブロックの方は、単に
file = open(...)
(処理)
file.close
を
open(...) {|file|
(処理)
}
とするだけ。ブロックの中ではfileという変数が使えて、}が後始末をしてくれる。
0717716
2007/03/10(土) 23:49:510718デフォルトの名無しさん
2007/03/10(土) 23:52:13大変勉強になりました。ありがとうございます。
>>717
すみません。こちらのミスでした。申し訳ありません。
コピペして貼る際に入りきらなかったのでいろいろと改行削除してたら
beginまで削除していました。実際のプログラムでは削除してありませんが文法エラーであります。
0719デフォルトの名無しさん
2007/03/10(土) 23:55:57&& if => && で書ける
このロジックなら elsif => if で書ける
レスの中に他からのレスをコピペしたものがあったら、このロジックはバグル
=> dat_file を入力しないとうまくレスは抽出できない
0720デフォルトの名無しさん
2007/03/11(日) 00:01:35他人のIDをコピペすると
718 :デフォルトの名無しさん :2007/03/10(土) 23:52:13
719 :デフォルトの名無しさん :2007/03/10(土) 23:55:57
>>714
のようにスペースかタブで区切られると思い
先頭がスペースかタブではなく数字ならいけると思ったのですが無理でしたか・・・
プログラムのエラーがなおれば試してみようかと思います。
0721デフォルトの名無しさん
2007/03/11(日) 00:09:09すみません、今考えてたのですが
&& if => && で書ける
このロジックなら elsif => if で書ける
見慣れない文だったので手持ちの本で調べてみたのですが。
これは rescue => のことでしょうか?
0722デフォルトの名無しさん
2007/03/11(日) 00:23:12if /ID:#.+\Z/ =~ line && if /\d+/ =~ line は
if /ID:#.+\Z/ =~ line && /\d+/ =~ line になるという意味。
もう少し書くと
if (/ID:#.+\Z/ =~ line && /\d+/ =~ line) と同じという意味。
自分は if のネストが嫌いなので、こういう書き方になる
0723デフォルトの名無しさん
2007/03/11(日) 00:32:070724デフォルトの名無しさん
2007/03/11(日) 00:51:35そもそも何を入力するのかよくわからん
0725デフォルトの名無しさん
2007/03/11(日) 04:47:59かいてあったけど実際はどうなの?同じスクリプトなんだから
体感できるほどスピード違うとですか?
0726デフォルトの名無しさん
2007/03/11(日) 08:24:05dat_file.each do |line|
name, mail, date, text, title = line.split(/<>/)
day, time, id = date.split(/ /)
end
これで全部取れるんじゃね?
正規表現なんていらぬわガハハ
0727デフォルトの名無しさん
2007/03/11(日) 09:28:40指定したIDの人のレスを抽出だから正規表現いるんじゃね?
0728ちんこ ◆HEfxsk5e3k
2007/03/11(日) 10:25:410729デフォルトの名無しさん
2007/03/11(日) 11:07:46それじゃ無理だな
0730デフォルトの名無しさん
2007/03/11(日) 11:26:38ttp://www.shido.info/py/python1.html
ここの事じゃないかと思うけど、プログラムの書き方にも拠るだろうし
具体的な秒数を書いてないのが気になるな。
まあ本人が「初心者の私見なので気軽に聞き流して」と書いてあるから
聞き流せばいいんじゃないかな。
ttp://www.yoshidam.net/PythonPerlRuby.html
にも速度の比較があるが、やや具体的。
0731デフォルトの名無しさん
2007/03/11(日) 13:23:07http://shootout.alioth.debian.org/
遅いね。それをわかった上で使えばいいよ。
作者も速度が必要なところは拡張を書けと言っているのだから。
0732デフォルトの名無しさん
2007/03/11(日) 14:44:52されるけど、なぜ絶対パスを追加しないのか、その背景となる理由はありますか?
青木峰郎氏のRHGにもその理由が見られませんでした。
0733デフォルトの名無しさん
2007/03/11(日) 15:07:10コマンドライン上からrailsプロジェクトを作成したのですが、
そのプロジェクトをeclipse上から編集したいのですがインポートすることができません。
既存プロジェクトのインポートというものはあるのですが、Railsフォルダを指定しても
プロジェクト一覧に表示されないのです。
どうぞ宜しくお願い致します。
0734デフォルトの名無しさん
2007/03/11(日) 18:19:52「PStore(1万個くらい登録)にIDが登録されてなかったら新規にデータを登録」ということを頻繁にやります
パターンその1
00001 -> { キー1=>値1, キー2=>値2, キー3=>値3, ID => 00001 }
00002 -> { キー1=>値1, キー2=>値2, キー3=>値3, ID => 00002 }
00003 -> { キー1=>値1, キー2=>値2, キー3=>値3, ID => 00003 }
00004 -> { キー1=>値1, キー2=>値2, キー3=>値3, ID => 00004 }
:
def has_id?(id)
PStore.new(path).transaction do |db|
return true if db.roots.has_key(id)
}
end
パターンその2
IDs -> [00001, 00002, 00003, 00004, …]
00001 -> { キー1=>値1, キー2=>値2, キー3=>値3, ID => 00001 }
00002 -> { キー1=>値1, キー2=>値2, キー3=>値3, ID => 00002 }
00003 -> { キー1=>値1, キー2=>値2, キー3=>値3, ID => 00003 }
00004 -> { キー1=>値1, キー2=>値2, キー3=>値3, ID => 00004 }
:
def has_id?(id)
PStore.new(path).transaction do |db|
return true if db[IDs].include?(id)
}
end
後者のほうが好ましい?
0735デフォルトの名無しさん
2007/03/11(日) 18:23:480736デフォルトの名無しさん
2007/03/11(日) 18:37:120737デフォルトの名無しさん
2007/03/11(日) 19:42:460738デフォルトの名無しさん
2007/03/11(日) 20:43:58それエロゲ
0739デフォルトの名無しさん
2007/03/11(日) 22:31:55/usr/lib/ruby/1.8/pstore.rb:
content = file.read()
@table = load(content)
def []=(name, value)
@table[name] = value
end
def roots
@table.keys
end
def root?(name)
@table.key? name
end
ということで
「pstoreファイルを全部readし巨大ハッシュを作った上で動くのでどっちもたいして変わらない」
が答かと思われ
0740デフォルトの名無しさん
2007/03/11(日) 22:43:17代替案とかないの
0741デフォルトの名無しさん
2007/03/11(日) 23:38:040742デフォルトの名無しさん
2007/03/12(月) 05:53:31#!ruby -Ks
raise "引数が足りん" if ARGV.size < 1
open( ARGV.shift ) do |file|
print "出力ファイル名:"
output = $stdin.gets.chomp
print "ID名を入力:"
id = Regexp.escape $stdin.gets.chomp
open(output,"w") do |te|
file.each_line do |line|
if /^.*?<>.*?<>.+ID:#{id}<>/o =~ line
te.print line
end
end
end
end
こんなんでどう?
0743デフォルトの名無しさん
2007/03/12(月) 06:03:46ruby -ne "BEGIN{ID=Regexp.escape ARGV.shift};print if /^.*?<>.*?<>.+ID:#{ID}<>/o" ID名 ログファイル名 > 出力ファイル名
0744デフォルトの名無しさん
2007/03/12(月) 09:53:29Ruby ではじめるプログラミング 【第 1 回】を見て、
RubyForge: Project Info- One-Click Ruby Installer のページにある
最新版をインストールしました。
しかし、こちらのページを見たところ、
Ruby の歩き方
http://jp.rubyist.net/magazine/?FirstStepRuby
ActiveScriptRubyをインストールして下さいと書かれていました。
こちらもインストールしておいたほうがいいのでしょうか?
0745744
2007/03/12(月) 10:00:48どちらでも良いと書かれていました。失礼しました。
0746デフォルトの名無しさん
2007/03/12(月) 10:26:54それでは、
742 :デフォルトの名無しさん :2007/03/12(月) 05:53:31 の行しか抽出できないのでは?
本文行が抽出できてない?
0747デフォルトの名無しさん
2007/03/12(月) 11:43:10対象となるインプットと期待されるアウトプットは何よ
0748デフォルトの名無しさん
2007/03/12(月) 12:26:43どうやって受け取っていいのかわかりません。
ENV["QUERY_STRING"]等をつかって受け取るのでしょうか?
openuriも使えそうにないしどなたかご教授いただけませんでしょうか?
0749デフォルトの名無しさん
2007/03/12(月) 13:14:460750デフォルトの名無しさん
2007/03/12(月) 13:20:52FLASHのflexです。
rubyで作成したCGIにたとえばtest.rb?lmage=test1.jpg&image=test2.jpg
みたいすれば値を受け取ることはできるのですが
rubyに直接XMLを渡した場合の受け取りかたをご存知ないでしょうか?
0751デフォルトの名無しさん
2007/03/12(月) 13:24:36んじゃないの?
0752デフォルトの名無しさん
2007/03/12(月) 16:56:56改行を入れなくても、1 文字入力しただけで入力決定されるようにするには
どうすればいいでしょうか?
例えば、何かの処理中に A キーを押下したらなにがしの処理をする
という具合のことをやりたいと思ってます。
0753デフォルトの名無しさん
2007/03/12(月) 17:13:36curses…はやめたほうがいいか。
他には、ioctl(2)システムコール、やまださんのtermios拡張などがある。
0754デフォルトの名無しさん
2007/03/12(月) 17:49:32素直にコンバートしたらネストしてたハッシュが全部文字列になったぞ責任取れバカもう嫌い
0755732
2007/03/12(月) 19:00:12MLにのっかってました。
[ruby-dev:26079] absolute path in $LOADED_FEATURES
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/26079
自分なりに解釈してみると、
・1.8系以前は相対パスのまま。
・現在のtrunkは絶対パスに変更されている。
・結局それまで誰も手を付けなかっただけ。
以上、スレ汚しスマソ
0756デフォルトの名無しさん
2007/03/12(月) 20:20:46「直接XMLを渡す」ってどういうこと?
Flexのことは知らんけど、きっと普通のCGIと同じでmultipartで送信されるというオチのような気が。
とりあえずこれ読んどけ。
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=cgi#a.a5.de.a5.eb.a5.c1.a5.d1.a1.bc.a5.c8.a5.d5.a5.a3.a1.bc.a5.eb.a5.c9.a4.ce.c3.cd.a4.f2.bc.e8.c6.c0.a4.b9.a4.eb.a1.ca.a5.d5.a5.a1.a5.a4.a5.eb.c1.f7.bf.ae.a1.cb
0757デフォルトの名無しさん
2007/03/12(月) 21:41:07コメントありがとうございます。
>756さん
呼んだのですが
c = CGI.new;
if c.multipart?
print "malti";
else
print "no malti";
end
を実行した結果no maltiが帰ってきました。
Formで送ってるわけではないのでnameがわかりません。
post でデータを送っているので、ENV['CONTENT_LENGTH']
でのデータの取得法がわかればなんとかなると思います。
0758514
2007/03/12(月) 23:11:22ruby輪講やってきました。
グローバル変数のスコープは?とか、rubyに本当に関数あるの?とか、本当にクラスやメソッドは事前に全部宣言しなきゃダメなの?
など、突っ込まれまくりでした
練習問題として、Cやjavaにコメント抜きを出題したら、rubyの良さわかってる?と突っ込まれました
来週までに改めて問題作成を命じられました。
rubyって難しいですね
0759デフォルトの名無しさん
2007/03/12(月) 23:21:44を作ると字句解析機を作らなきゃならないから、1文字ごとにみていく必要が
あって、あんまりRubyぽいものにはならないかもしれないな。
0760デフォルトの名無しさん
2007/03/13(火) 01:53:19>>726
> 2ちゃんのdatファイルなら
と、ごっちゃにして
勝手にdatファイルが入力されると勘違いしてた
>>711 をよく見れば、入力してるのはプレーンテキストっぽいな
ブラウザの表示をコピーしたテキストなのかな?
0761デフォルトの名無しさん
2007/03/13(火) 02:05:01Etherealや横取り丸でパケットの中身を表示した方がいい。
もしXMLファイルがHTTPボディに指定されて送信されているだけ、かつPOSTメソッドなら $stdin から読み込めるはず。
cgi.rb を使わずに $stdin を読み込んでみたらどうだろう。
#/usr/bin/env ruby
data = $stdin.read() # or $stdin.read(ENV['CONTENT_LENGTH'].to_i)
print data
そもそもRubyの話題じゃないな。Flexスレで聞いてみてくれ。
0762デフォルトの名無しさん
2007/03/13(火) 02:06:37Perlでは、
@example = (1, 2)
($foo, $bar) = @example
のように、変数のリストに対して値を代入できましたが、Rubyで同じ事をやろうとして
hoge = [1, 2]
[foo, bar] = hoge
と書くとエラーになってしまいます。このように、複数の変数に配列の一つ一つの要素を
一気に代入したい場合、Rubyではどのように書けばよいのでしょうか。
0763デフォルトの名無しさん
2007/03/13(火) 02:07:59foo, bar = hoge
0764762
2007/03/13(火) 02:08:560765デフォルトの名無しさん
2007/03/13(火) 07:05:10> rubyに本当に関数あるの?
なんだ、お前よりそいつの方が Ruby を解ってるんじゃん。
0766デフォルトの名無しさん
2007/03/13(火) 08:27:33輪講なんてそんなもん。
* Rubyに関数はなく、すべてメソッド。あるのは関数のように見えるメソッド。See Kernel Module.
* クラスやメソッドは使われるまでに定義されればよい。
0767デフォルトの名無しさん
2007/03/13(火) 11:05:00self.class.class_method
でいいのかな?
0768デフォルトの名無しさん
2007/03/13(火) 11:36:55そのへんは、継承されたときにどうしたいかによる。
class Hoge
def add_child1
(@children ||= []) << self.class.new
end
def add_child2
(@children ||= []) << Hoge.new
end
end
class Fuga < Hoge; end
@fuga = Fuga.new
@fuga.add_child1 と @fuga.add_child2の挙動は異なる。
0769デフォルトの名無しさん
2007/03/13(火) 11:58:29def self.class_method
p 'hogehoge'
end
def instance_method
self.class.class_method
end
end
class MyClass1 < MySuperClass
end
class MyClass2 < MySuperClass
def self.class_method
p 'fgyafgya'
end
end
MyClass1.new.instance_method #=> "hogehoge"
MyClass2.new.instance_method #=> "fgyafgya"
なるなる、普通はオーバーライドしたほうを呼んで欲しいような気がするなぁ
0770デフォルトの名無しさん
2007/03/13(火) 13:36:470771デフォルトの名無しさん
2007/03/13(火) 14:38:47オーバーライドされてるのはMySuperClassの方なんじゃないの?
0772デフォルトの名無しさん
2007/03/13(火) 15:51:37"Ruby的"な解法ができる課題ではないな
>>754
DBMとかあのへんは
"キー1" => "文字列1"
"キー2" => "文字列2"
"キー3" => "文字列3"
の素直な形をしていてなおかつ検索はキーの完全一致でしかやらない
というデータ構造以外を格納するのはお勧めしない
valueに配列が入ってるとか
ハッシュが入ってるとか
Timeオブジェクトが入ってるとか
正規表現が入ってるとか
そういう場合はPStoreで冷凍しろ
0773デフォルトの名無しさん
2007/03/13(火) 15:58:510774デフォルトの名無しさん
2007/03/13(火) 19:06:18system()はアプリが終了するまで返って来ないので目的に合いません。
起動したアプリの終了を一切待たない起動方法はあるでしょうか?
0775デフォルトの名無しさん
2007/03/13(火) 19:31:300776デフォルトの名無しさん
2007/03/13(火) 19:51:18自分が使っている方法 WSHを利用する
その1 子プロセスを発生させる
ws= WIN32OLE.new('Wscript.Shell')
wwThred = ws.exec("hoge.exe")
その2 RUNメソッドの bWaitOnReturn を FALSE で
ws= WIN32OLE.new('Wscript.Shell')
ws.run("hoge.exe",1,FALSE)
>>775
fork は Windows では使えないはずだが…
0777デフォルトの名無しさん
2007/03/13(火) 19:52:420778デフォルトの名無しさん
2007/03/13(火) 20:01:28一番単純なのは、
Thread.new{system(nanika)}
だと思うが、
IO.popen(nanika)
とかもありかな。
0779774
2007/03/13(火) 20:29:53皆さんありがとうございます。
0780774
2007/03/13(火) 20:40:36呼び出しても良さそうですね
0781デフォルトの名無しさん
2007/03/13(火) 21:08:51value がいろいろあるだけだったら、 value を Marshal した文字列を使って dbm にする方がいいよ。
もちろん、 value で値を共有する2つの hash が2つのキーに結びつけられて
いるような複雑な構造は保持できないけど。
Marshal は、ファイルをぜんぶ読んでメモリに格納するので、巨大すぎるデータだと読込も書き出しも大変。
0782デフォルトの名無しさん
2007/03/13(火) 21:53:38Marshalするとか工夫しなよ…。
マニュアル読んだんだろ?
そのまま格納しようとするバカがどこにいる(そこにいる)。
0783514
2007/03/13(火) 21:54:09自分もかなりそう思いました
なんか、題材によい問題はないものか…
>>765
輪講はいつも私のサンドバック状態です
>>766
ですよね
元気が出ました
>* Rubyに関数はなく、すべてメソッド。あるのは関数のように見えるメソッド。See Kernel Module.
>* クラスやメソッドは使われるまでに定義されればよい。
なるほど
Rubyはメソッドやクラスを再定義した場合、最後のものが採用されるんですよね
だから、C見たいに二重定義にならないよう気をつける必要はないんですよね
0784デフォルトの名無しさん
2007/03/13(火) 22:32:09勉強しに行ってるんだから、今現在何かを知らなかったり間違ったりするのは問題ない。
周囲に叩かれつつでも学んでいけばよろし。
Rubyのいいところを生かした問題というと、比較的シンプルなテキスト処理で、かつ、他の類似した言語にない機能を生かしたあたりか。
じゃあ、Array#uniqを使ってテキストファイルから重複行を削除する、とかどう?
0785デフォルトの名無しさん
2007/03/13(火) 23:05:43文字列を主に扱うときに、処理速度が遅くなるような要因はどんなことがありますか?
またfileの読み出しはreadlinesを使うのはどうなんですか?
0786デフォルトの名無しさん
2007/03/14(水) 03:38:48> 文字列を主に扱うときに、処理速度が遅くなるような要因はどんなことがありますか?
非破壊メソッドを使ったとき。てかそういうのを意識するのは後回しでいい。
> またfileの読み出しはreadlinesを使うのはどうなんですか?
どうって…。ダウンタウンの昔の持ちネタみたいな曖昧な質問だなw
使いたいときには使うよ、くらいしか答えられないよこの質問だと。
0787デフォルトの名無しさん
2007/03/14(水) 08:26:50としか言えんな
ファイルから1行ずつ読み込んでいるわけではないので注意
ファイル末までreadしてsplit("\n")するのと似たような負荷
本当に1行ずつ読み込みたいならIO.getsを使うこと
0788デフォルトの名無しさん
2007/03/14(水) 09:30:17system('start calc')
などとやったりWin32APIのCreateProcess使ったりてのもある。
0789デフォルトの名無しさん
2007/03/14(水) 09:31:290790デフォルトの名無しさん
2007/03/14(水) 21:29:52$logger = Logger.new(STDOUT)
@@logger = Logger.new(STDOUT)
0791デフォルトの名無しさん
2007/03/14(水) 23:01:26def initialize(..., logger, ...)
@logger = logger
0792デフォルトの名無しさん
2007/03/15(木) 10:41:44クールなのが一発でかけるとらくなんだけど
0793デフォルトの名無しさん
2007/03/15(木) 10:52:220794デフォルトの名無しさん
2007/03/15(木) 10:58:000795デフォルトの名無しさん
2007/03/15(木) 11:16:58ttp://gnuplot.info/faq/faq.html#SECTION00032000000000000000
0796デフォルトの名無しさん
2007/03/15(木) 11:26:470797デフォルトの名無しさん
2007/03/15(木) 11:43:22・mingplot
mingplot: Flash 形式のグラフを生成するツール
http://0xcc.net/mingplot/
・pylori*style wiki - Gruffでグラフ
http://tam.qmix.org/wiki/RubyGruff.html
・Railsで簡単グラフ - masuidrive.jp
http://rails.masuidrive.jp/gruff/
GDGraph:Ruby/GD を使ったグラフライブラリ
http://www2s.biglobe.ne.jp/~Nori/ruby/ja/GDGraph/
Gruffがクールでよいなあ。
0798デフォルトの名無しさん
2007/03/15(木) 13:37:02ライブラリあるったって中身はsystem発行してるだけだろ?
0799デフォルトの名無しさん
2007/03/15(木) 13:42:030800デフォルトの名無しさん
2007/03/15(木) 19:35:14def K.init
def foo
p :foo
self
end
end
K.init
k=K.new
k.foo
#=> :foo
キモイです!なんとかしてください
0801デフォルトの名無しさん
2007/03/15(木) 19:58:080802デフォルトの名無しさん
2007/03/15(木) 22:09:05(以下docはHpricot(...)で取ってきたHpricot::Docインスタンス)
# type="application/rss+xml" なlink要素を取り出す。
doc / '//link[@type="application/rss+xml"]'
=> #<Hpricot::Elements[{emptyelem <link href="..." title="RSS" rel="alternate" type="application/rss+xml">}]>
# rel="alternate"なlink要素を取り出す。
doc / '//link[@rel="alternate"]'
=> #<Hpricot::Elements[{emptyelem <link href="..." title="RSS" rel="alternate" type="application/rss+xml">}]>
と同じものが返ってくるのですが、両方の条件をandで結ぶと
# doc / '//link[@type="application/rss+xml" and @rel="alternate"]'
=> #<Hpricot::Elements[
{emptyelem <link href="..." title="RSS" rel="alternate" type="application/rss+xml">},
{emptyelem <link href="..." rel="stylesheet" type="text/css" media="all">}, {emptyelem <link href="..." rel="shortcut icon">},
{emptyelem <link href="..." rel="stylesheet" type="text/css" media="screen,print">}]>
と全部のlink要素が返ってきてしまいます。
XPathの書き方が間違っているのでしょうか。
0803デフォルトの名無しさん
2007/03/16(金) 03:42:41opt.on で、オプションを指定しておくと、--help で自動的にオプションがでますが、
デフォルトでは、
Usage: moge [options]
(以下オプション)
と表示されます。
これを
Usage: moge [options] source_file dest_file
などと表示したいのですが、よい方法はないでしょうか?
0804デフォルトの名無しさん
2007/03/16(金) 03:56:01opts.banner = "Usage: #{$0} [options] source_file dest_file"
で行けました。
0805デフォルトの名無しさん
2007/03/16(金) 05:43:23Hpricotはand に対応してないみたい (hpricot/elements.rb の ATTR_RE とか参照)。
今回のケースなら以下のように書き換えればいいと思うよ。
doc / '//link[@type="application/rss+xml"][@rel="alternate"]'
0806デフォルトの名無しさん
2007/03/16(金) 06:52:26誰か優しく教えてください(はーと)
0807デフォルトの名無しさん
2007/03/16(金) 07:57:35なるほど。ソース読んでみるべきでしたね。ありがとうございました。
0808デフォルトの名無しさん
2007/03/16(金) 09:01:360809デフォルトの名無しさん
2007/03/16(金) 10:15:05みたいに、正規表現で分割するごとに何とかしてくれるみたいなのってないですか?
strの文字列が巨大なときに、splitの配列を作らずに処理できたらいいなぁっていう発想なんですが・・・。
0810デフォルトの名無しさん
2007/03/16(金) 11:00:10str.scan(pattern) {|match,...| block }
0811デフォルトの名無しさん
2007/03/16(金) 11:26:140812デフォルトの名無しさん
2007/03/16(金) 14:40:39じゃ駄目なの?
0813デフォルトの名無しさん
2007/03/16(金) 14:43:53「配列を作らずに」
0814809
2007/03/16(金) 15:09:40すいません、scanでやった場合、matchにはマッチした部分が入るみたいなんですが、splitで取り出したいのはマッチした部分以外の部分なんですが、どう取得したらいいでしょうか?
0815デフォルトの名無しさん
2007/03/16(金) 15:20:07scanで使う正規表現は平均して長ったらしいので頑張って書け
0817デフォルトの名無しさん
2007/03/16(金) 16:16:56next if ""==x[0]
p x
}
,で区切る程度の簡単なやつではないんだろうけども
0818デフォルトの名無しさん
2007/03/16(金) 18:12:17これって配列つくるの?
パイプみたいな感じで動くのかと思ってた。
0819デフォルトの名無しさん
2007/03/16(金) 20:12:360820デフォルトの名無しさん
2007/03/16(金) 22:54:180821デフォルトの名無しさん
2007/03/16(金) 22:58:30さらにサブフォルダが入っていてそこにもファイルがいくつか存在する。
それらサブフォルダの中にあるファイル全て含めて適当に文字列を追加したいと
思っています。
ファイル名がわかっているんだったら、そのファイルを開いて文字を付け加えて
閉じるでいいと思いますが、名前のわからない、このフォルダの下にある
全てのファイルに同じ処理をするという処理はどのように書けばいいんでしょうか?
0822デフォルトの名無しさん
2007/03/16(金) 22:59:130823デフォルトの名無しさん
2007/03/16(金) 23:16:570824デフォルトの名無しさん
2007/03/16(金) 23:21:10#...
end
↑物凄く深い階層だとメモリやパフォーマンスの問題が発生するかも。
find.rbを使うなら
require 'find'
Find.find(root) do |path|
if FileTest.file?(path)
# 処理
end
end
0825デフォルトの名無しさん
2007/03/16(金) 23:25:12Dir::foreach("./") do |item|
puts item
end
とかやると「,/」下の枚挙を叩ける
0826デフォルトの名無しさん
2007/03/16(金) 23:53:05それだけのプログラム量で実現できてしまうのですか!
勉強になります、ありがとうございます!
0827デフォルトの名無しさん
2007/03/16(金) 23:53:220828デフォルトの名無しさん
2007/03/17(土) 13:32:19この配列を
["-1","7","17", "24", "26"]
このように並び替えるにはどうしたらいいですか?
0829デフォルトの名無しさん
2007/03/17(土) 13:37:330830デフォルトの名無しさん
2007/03/17(土) 13:51:470831デフォルトの名無しさん
2007/03/17(土) 14:11:000832デフォルトの名無しさん
2007/03/17(土) 15:22:010833デフォルトの名無しさん
2007/03/17(土) 16:00:52"[h,5]"の"5"と"[h,11]"の"11"をマッチする正規表現を教えてください。
0834デフォルトの名無しさん
2007/03/17(土) 16:07:33なんか意図が全然わからんが、/\[h,(5|11)\]/で$1とりゃいいんじゃないかい?
0835デフォルトの名無しさん
2007/03/17(土) 16:15:57/\(6\)\[\(5\)\[\(4\)\[\(3\)\[\(2\)\[\(1\)\[\[h,(5)\],\[h,6\]\],\[h,7\]\],\[h,8\]\],\[h,9\]\],\[h,10\]\],\[h,(11)\]\]/
0836デフォルトの名無しさん
2007/03/17(土) 17:05:45こういうのは完全にNGだね。
0837デフォルトの名無しさん
2007/03/17(土) 17:13:03>>831も>>835もな
適切な質問にのみ適切な答が返る
まずは頭にあることを言葉にする練習からだな
0838デフォルトの名無しさん
2007/03/17(土) 20:59:310839デフォルトの名無しさん
2007/03/17(土) 21:17:510840デフォルトの名無しさん
2007/03/17(土) 21:21:490841デフォルトの名無しさん
2007/03/17(土) 21:45:250842デフォルトの名無しさん
2007/03/17(土) 22:28:31特定の配列をリファレンスにして同じように並べるには>>831みたいなのが妥当
質問者が昇順に並べるなんて言ってない以上、機械的に同じように並べるしかないわけで…
0843デフォルトの名無しさん
2007/03/17(土) 22:39:120844デフォルトの名無しさん
2007/03/17(土) 22:57:32何の得があるんだか
0845デフォルトの名無しさん
2007/03/17(土) 23:09:350846デフォルトの名無しさん
2007/03/17(土) 23:13:360847デフォルトの名無しさん
2007/03/17(土) 23:31:110848デフォルトの名無しさん
2007/03/18(日) 01:43:05一瞬、オイシイ方向に見えたw
0849デフォルトの名無しさん
2007/03/18(日) 10:06:34最近、なんか変だよね。なんか流れが読めないw
>>848
どういう方向だよw
0850デフォルトの名無しさん
2007/03/18(日) 12:31:33ttp://www.cbook24.com/bm_detail.asp?sku=9784839923204
あの連載がわざわざ本になります
30日発売
0851デフォルトの名無しさん
2007/03/18(日) 12:57:160852デフォルトの名無しさん
2007/03/18(日) 13:37:27> なんか流れが読めない
それ、もしかしてジサクジエンに慣れちゃってて、
誰かに話しかけられてもちゃんと会話できない人が居る
って件じゃない?
0853デフォルトの名無しさん
2007/03/18(日) 15:10:16=~ /(((\(\d+\)\[)+)((\[h,(\d+)\],)|(\[h,(\d+)\]\]\Z))+)/
$6で5だけど、11ができん。
0854デフォルトの名無しさん
2007/03/18(日) 15:38:45/((\(\d+\)\[)+(\[h,(\d+)\])(,\[h,(\d+)\]\])+)/
p $4,$6
0855デフォルトの名無しさん
2007/03/18(日) 16:16:54わざわざケチつける意味がわからない
0856デフォルトの名無しさん
2007/03/18(日) 16:48:21プログラマの大切な資質。
0857デフォルトの名無しさん
2007/03/18(日) 20:09:39とか思われそうでなかなか踏み切れない
0858デフォルトの名無しさん
2007/03/18(日) 20:29:49A >>850はツンデレ。
B 普通に宣伝すると叩かれるのでちょっいワルぶってみた。
0859デフォルトの名無しさん
2007/03/18(日) 21:02:49つまらないこと気にするな。
指摘されて自分の悪いところを治せるんなら、むしろいい事じゃないか!
…と割り切ってしまえ。
0860デフォルトの名無しさん
2007/03/18(日) 21:20:51コードに関して言えば、淡々とバグを指摘されるくらいだよ。
0861デフォルトの名無しさん
2007/03/18(日) 22:12:10GoogleとYahooのクローラーしか来ないから安心しろ
0862デフォルトの名無しさん
2007/03/18(日) 22:31:22いちいちRubyインストールしろとかREADMEに書くのが面倒だから
最近はexe配布だな。
0863デフォルトの名無しさん
2007/03/19(月) 14:51:00画像ファイルをアップロードするところまではできたのですが、
サムネイルを作成する方法で行き詰りました。
どなたか方法を教えてください、後生です。
0864デフォルトの名無しさん
2007/03/19(月) 15:37:01A: ruby/gdやrmagickあたりの拡張を入れる。
B: サーバ上でnetpbmやImageMagickのコマンドを駆使する。
お好きな方で。
0865デフォルトの名無しさん
2007/03/19(月) 23:48:17$: << File.expand_path("./")
require "./../Lib.rb"
$:はloadやrequireのPATHだとわかりましたが、
この<<って何ですか?
ruby-lang.orgのリファレンスに<<演算子の解説がないです。
p 1 << 2 を試したら4が表示されたのでビットシフト演算子なんでしょう。
で、この場合の<<はオーバーライドされてるんでしょうけど
その解説はどこにありますか?
ってか、なんで<<ですか?+=とかpush,addあたりなら直感的にわかるんですけど。。。
0866デフォルトの名無しさん
2007/03/19(月) 23:52:21C++のstream辺りをリスペクトしてみたんじゃないかなぁ
0867デフォルトの名無しさん
2007/03/20(火) 00:05:180868デフォルトの名無しさん
2007/03/20(火) 00:33:12open(LOCKFILE, 'w').fcntl(Fcntl::F_SETLKW)だと「Bad address」とか言われる。
0869デフォルトの名無しさん
2007/03/20(火) 01:01:46ありがとうございます
0870デフォルトの名無しさん
2007/03/20(火) 01:11:53あれは失敗作ですよね。
Cで、a=0x00004321; printf("%08x\n", a); をC++のcoutで書こうと思うと気を失います。
>>867 thx!
「Array#push と同じ効果です」って書いてあった。
file:///D:/work/ruby/ruby-man-ja-html-20051029/Array.html
$:の説明に「loadや require がファイルをロードする時に検索するディレクトリのリストを含む配列です。」
って書いてあるんですけど、そこから配列=Arrayに飛ぼうという発想に至りませんでした。
$LOAD_PATH.push(File.expand_path("./")) って書けよ。
Perlの二の舞じゃん・・・読めん
0871デフォルトの名無しさん
2007/03/20(火) 01:15:37やべ、ローカルのリファレンス指してた・・・かなりやばかった(汗
こっちです。
http://www.ruby-lang.org/ja/man/?cmd=view;name=Array
0872デフォルトの名無しさん
2007/03/20(火) 01:58:18そういうときはObject#classを使って、まず何のオブジェクトなのか特定しましょう。
あとはリファレンスマニュアルにgo
0873デフォルトの名無しさん
2007/03/20(火) 02:40:43F_SETLKWにはstruct flockが必要。
それをpackしたStringを渡せばいい…んだが、
構造体の中身はシステム依存なんだよな。
dl/ptrあたりを使えばできるかもだが、素直に拡張ライブラリを使った方が楽かも。
ext/fcntlを拡張してほしいって話はruby-devかruby-listへ。
0874デフォルトの名無しさん
2007/03/20(火) 02:46:40なるほど。そういう方法もあるのですね。
irbで>$:.classやってみました。
$:.class
Array
これは継承元がArrayって意味ですかね?
でもそんな調べ方はリファレンスに書いてなかったと思います。
JAVAのJavaDocもそうなんですけどマニュアル不親切すぎます。
難解な言葉(翻訳してるからかな?)で使い方がわからない。
その点、皆さんが嫌ってるであろう、MSのVisualCとかは素敵過ぎますよ。
ほぼSampleが書いてある。STLでさえ。
Rubyコミュニティのみなさん、がんばってくださいね!
0875デフォルトの名無しさん
2007/03/20(火) 02:51:25というかそのオブジェクトが何どのクラスに属しているか知らないで
メソッドの機能を調べようがないでしょう。
> $:.class
> Array
>これは継承元がArrayって意味ですかね?
違います。オブジェクト指向をかじっているようですけど、
そういうのは継承といいません。Arrayのインスタンスです。
> でもそんな調べ方はリファレンスに書いてなかったと思います。
書いてありますよ。Object#classのところにばっちりと。
それと$:のところにも
> loadや require がファイルをロードする時に検索するディレクトリのリストを含む 配 列 。
と「配列」と書いてあります。別にこれだとObject#classを使わずとも調べがつきます。
0876デフォルトの名無しさん
2007/03/20(火) 04:15:25a=0x00004321; std::cout<<std::setfill('0')<<std::setw(8)<<std::hex<<a<<std::endl;
気を失うほどではないぞ
0877デフォルトの名無しさん
2007/03/20(火) 05:54:060878デフォルトの名無しさん
2007/03/20(火) 07:26:08正直スパゲッティでどれが正解かわからない。
ランタイムで、メソッドが再定義された時にイベントを拾うか、
あるいは、使われた所でメソッドの定義をずばり表示させるかしたいんだけど
なんかいい方法ありますか?
全部の候補に print 突っ込んだ方がもしかしたら早いのか…
オリジナルのライブラリはあんまり触りたくないんだけどなぁ。
>>875
>> でもそんな調べ方はリファレンスに書いてなかったと思います。
>
>書いてありますよ。Object#classのところにばっちりと。
>それと$:のところにも
「どんな素敵なことが書いてあっても、書いてある場所が見つからない」
という問題だと思う。
逆引き作らないと多分無理。
0879878
2007/03/20(火) 07:33:24到達タイミングがわからなくて、いまだに捕まえられない。
つか、デバッガがスタックオーバーフローで死ぬ。困った。
0880デフォルトの名無しさん
2007/03/20(火) 08:56:13大抵のことはリフレクションで追っていけると思う。
メソッド定義はmethod_addedで拾えるんじゃないでしょうかね。
0881デフォルトの名無しさん
2007/03/20(火) 08:57:10python 使いですが、Ruby も使い始めようとしています。python では
pydoc モジュールがヘルプ目的で便利に使えます。下のようにコンソールか
ら打ち込むだけで、組み込みオブジェクト list についての機能を表示して
くれます。
python -m pydoc list
Help on class list in module __builtin__:
class list(object)
| list() -> new list
| list(sequence) -> new list initialized from sequence's items
・
numarray モジュールの zeros 関数については下のようにします。
python -m pydoc numarray.zeros
Help on function zeros in numarray:
numarray.zeros = zeros(shape, type=None, typecode=None, dtype=None)
Constructs a zero filled array of the specified shape and type.
同様なことを Ruby で 出来るとありがたいのですが、何か方法があるでしょ
うか。RDoc がありますが、大げさすぎると感じています。コンソールの一行
で済ますのは無理だと思っています。
0882デフォルトの名無しさん
2007/03/20(火) 09:20:220883デフォルトの名無しさん
2007/03/20(火) 12:01:23何か色々やって結果としてHTMLを吐き出すCGIを作ってます。
HTMLの一部を作るメソッドを書きました。
その1:
def table
html = String.new
html << <<EOB
<table>
〜いろいろ〜
</table>
EOB
return html
end
その2:
def table
return <<EOB
<table>
〜いろいろ〜
</table>
EOB
end
どっちの癖をつけたほうが好ましいですか?
0884デフォルトの名無しさん
2007/03/20(火) 12:07:45CGIならhtmlに割り当てられるメモリももったいないし
0885デフォルトの名無しさん
2007/03/20(火) 12:08:520886デフォルトの名無しさん
2007/03/20(火) 12:16:31「あーこれは文字列作って返すだけなのね」みたいな
値を返すときにしか使われないオブジェクトを明示的に作ることはしなくていいと思う
他人が見てもすんなり理解できる書き方の範疇、かつ、動作上大きな無駄も起きない書き方だと思うよ
0887デフォルトの名無しさん
2007/03/20(火) 12:27:33もういっこ。
「値というかデータを返すのに使えるもの」ってありますよね。
・ めんどいのでローカル変数に直に書く
・ initializeのときにインスタンス変数を定義しておいて入れる
・ よく考えたらクラス変数でもいい気がする
・ そういう値を返すメソッドを作って随時呼ぶ
お勧めの使い分けの考えかたってありますか?
0888デフォルトの名無しさん
2007/03/20(火) 15:34:100889デフォルトの名無しさん
2007/03/20(火) 16:02:39残念ながらRubyには同等の機能はありません。
組み込みライプラリや標準添付ライブラリならriやrefeといった外部コマンドで参照できますが、
それ以外ならRDocに頼るしかないでしょう。
0890デフォルトの名無しさん
2007/03/20(火) 16:04:07定数でいいと思う。
0891MoonWolf ◆6yuAhgU.jM
2007/03/20(火) 17:14:56def table
html = "<table>"
〜いろいろ〜
html << "</table>"
html
end # table
0892デフォルトの名無しさん
2007/03/20(火) 17:22:33おかえり
0894デフォルトの名無しさん
2007/03/20(火) 18:14:06a=IO.newやFile.newとやると
エラーになります。なぜですか?
0895デフォルトの名無しさん
2007/03/20(火) 18:17:56エラーが出たときにメッセージがあるでしょ?
0896デフォルトの名無しさん
2007/03/20(火) 18:26:26IO の場合は a ではなく io
File の場合は a ではなく fp
0897デフォルトの名無しさん
2007/03/20(火) 18:53:400898デフォルトの名無しさん
2007/03/20(火) 19:53:57結論: でもpointerじゃない
0899MoonWolf ◆MoonWdLnkQ
2007/03/20(火) 20:01:20h = Hash.new
str = ""
io = IO.new(0)
db = DBI.connect(...
doc = REXML.Document
トリップ探すのめんどくせー
0900デフォルトの名無しさん
2007/03/20(火) 20:05:390901デフォルトの名無しさん
2007/03/20(火) 20:14:39なぜ
> str = ""
なんてやってるのに
ary = []
h = {}
とやらんのだ?
0902デフォルトの名無しさん
2007/03/20(火) 20:17:15array = Array.new
hash = Hash.new
string = ""
array = []
hash = {}
どっちが良い?
俺は前者の方が好きなんだけども…
0903デフォルトの名無しさん
2007/03/20(火) 20:21:440904MoonWolf ◆MoonWdLnkQ
2007/03/20(火) 20:22:25ary = []
でもハッシュは空だと見た目がブロックと紛らわしいから
h = Hash.new
空じゃなければ
h = {:key => value}
0905デフォルトの名無しさん
2007/03/20(火) 21:52:50ここから「発売予定一覧」のテーブルの
各セルをハッシュに、各行を配列にいれたものをつくろうとして
hpricotを使って
index_page = Hpricot.parse(
NKF.nkf('-w',
open("http://www.taiyosha.co.jp/comic/comic0704_han1.html").read
)
); nil
ta = index_page.search("//table")
table = ta[2]
$row = table.search(:tr).map {|e|
{"Pub" => e.search('td[1]').inner_text,
"Date" => e.search('td[2]').inner_text,
"Title" => e.search('td[3]').inner_text,
"Author" => e.search('td[4]').inner_text,
"Price" => e.search('td[5]').inner_text,
"Book" => e.search('td[6]').inner_text}
}
としてうまくいった気になっていたんですが"秋田書店”のセルを
除いて以降の出版社名のある行が取得できていませんでした。
ソースを見てみると該当行に<tr>タグが抜けているために取得できないようです。
これを回避するにはどうすればよいでしょうか?
ご教授お願いします。
0906デフォルトの名無しさん
2007/03/20(火) 22:04:27いうべきなんだろうか。
tdの数は列ごとに幸い一定(出版社のカラムでROWSPANしてないし)のよう
なので、数えていくとか、あるいは、¥d{2}/¥d{2} というパターンに合致
するカラムを日付であると仮定してみるとか。
0907デフォルトの名無しさん
2007/03/20(火) 22:26:39ありがとうございました。ri で help が出るようになりました。
ActiveRuby パッケージをインストールし、コンソール上で
>rdoc --ri-site
の後
>ri --help
が動くようになりました。
0908デフォルトの名無しさん
2007/03/20(火) 22:31:37wxrubyでソフトを作っています。
本番の為のテストのソフトを製作していて
行き詰まりました。
get_valueや
set_valueがundefined methodだと言われ
メモ帳のサンプルプログラムを見ながら
「ここに書いてあるやんけ!」
と格闘すること小一時間
もうなにがなんやら分からなくなったので助けを求めます。
rbがうpできないのでtxtに変えてあります。
loadするファイルのpathはテスト的に直行させてありますが、本来なら@fliePathと書きたいです。
添削して欲しい場所にコメントをつけておきました、どこがエラーに繋がっているのか添削お願いします。
0909デフォルトの名無しさん
2007/03/20(火) 22:40:24initializeでengTxtやjapTxtというローカル変数には代入しているが、
on_startで参照している@engTxtや@japTxtといったインスタンス変数
はどこにもないような?
0910MoonWolf ◆MoonWdLnkQ
2007/03/20(火) 22:40:28:fixup_tagsを指定してみたら?
ttp://code.whytheluckystiff.net/hpricot/wiki/HpricotFixups
0911デフォルトの名無しさん
2007/03/20(火) 22:41:240912MoonWolf ◆MoonWdLnkQ
2007/03/20(火) 22:43:35initializeで作っているButtonとかTextCtrlをインスタンス変数に
代入しておかないと駄目。
0913デフォルトの名無しさん
2007/03/20(火) 22:50:19エラーメッセージは「@pathTxtがnil」であることも示していたはずだと思うのだが。
0914デフォルトの名無しさん
2007/03/20(火) 22:59:44ここの温度変換プログラムでは
fahrDegree = TextCtrl.new(self, -1, "", Point.new(10,70), Size.new(50,20))
のように書いてますが、ふつうに動きます。
とりあえず
http://www.uploda.org/uporg739982.txt.html
改変したらきちんと動きましたが、上のサンプルプログラムにあるように
ローカル変数で書くのが定石なのではないのですか?
それとも
txt = TextCtrl...
@txt = txt
と2回書けという意味ですか?
何しろリファレンスのようなものが存在しないようなので
(本にもネットにも)
コードを読んで自分なりに分析してみようみまねで作っているという状態でして^^;
0915デフォルトの名無しさん
2007/03/20(火) 23:04:11あとはexerbでexe化してインプット作業役の友達に送らないと
0916デフォルトの名無しさん
2007/03/20(火) 23:08:24インスタンス変数にしなくても動く。チミのはブロック内にメソッド呼び出ししか
ないから、インスタンス変数に格納しないと触れない。
0917デフォルトの名無しさん
2007/03/20(火) 23:09:07ありがとうございます。
私もTDの数が一定だったので
$td = table.search(:td).map{|e|
e.inner_text
}
TDをいったん配列にいれてそれから
>>905 の$rowのようにしたいのですが、
どのようにすればできますでしょうか?
0918デフォルトの名無しさん
2007/03/20(火) 23:15:56あ、イベントあったのね。thx
0919デフォルトの名無しさん
2007/03/20(火) 23:19:12としても動かないプログラムが生まれました。
何かコマンドが必要のようですがわかりません
0920デフォルトの名無しさん
2007/03/20(火) 23:25:370921デフォルトの名無しさん
2007/03/20(火) 23:35:36でもダメでした
0922MoonWolf ◆MoonWdLnkQ
2007/03/20(火) 23:53:35require 'hpricot'
require 'open-uri'
require 'kconv'
require 'tidy'
Tidy.path = "c:/WINDOWS/system32/tidy.dll"
html = open('comic_list.html').read.toutf8
clean_html = Tidy.open do |tidy|
tidy.options.char_encoding = 'utf8'
tidy.options.newline = 'LF'
tidy.clean(html)
end
index_page = Hpricot.parse(clean_html)
ta = index_page.search("//table")
table = ta[2]
Record = Struct.new(:pub, :date, :title, :author, :price, :book)
records = table.search(:tr).map {|e|
Record.new(
e.search('td[1]').inner_text.strip,
e.search('td[2]').inner_text.strip,
e.search('td[3]').inner_text.strip,
e.search('td[4]').inner_text.strip,
e.search('td[5]').inner_text.strip,
e.search('td[6]').inner_text.strip
)
}
0923デフォルトの名無しさん
2007/03/20(火) 23:55:090924MoonWolf ◆MoonWdLnkQ
2007/03/20(火) 23:57:21mkexy proto.rb
とやってレシピファイル(.exy)というのを作ってやる。
あとは
exerb -c gui proto.exy
requireとかは実行されないとレシピに反映されないので
必要なライブラリが全部ロードされるようにしておかないと駄目。
open-uriとかrequireしてもnet/httpが無いとか言われたよ^^;
0925デフォルトの名無しさん
2007/03/21(水) 00:06:31あんまり頑張るなよ
0926MoonWolf ◆MoonWdLnkQ
2007/03/21(水) 00:17:00tidyでXHTMLにしてからREXMLで処理した方が確実ぽい気が。
XPathじゃなくてCSSセレクタが使いたい場合は駄目かもしれんが。
>>925
win32/registryのパッチ書いたら寝るよ
0927デフォルトの名無しさん
2007/03/21(水) 03:32:39私の環境(mac osx 10.4.9 powerPC)で動きませんでした。
どうすればいいのかわかりません。
0928デフォルトの名無しさん
2007/03/21(水) 07:33:20ツリー構造をメモリ内に再構成することは目的のために本当に必要なのか?
0929デフォルトの名無しさん
2007/03/21(水) 07:42:57もし定型処理たりえるならそのように処理してもらったほうが間違いもないだろう
0930デフォルトの名無しさん
2007/03/21(水) 08:01:50ぷ
0931878
2007/03/21(水) 08:04:54よく考えたら、スコープが違うもんな。
とりあえず何とか見つけ出せたけど。
普通のメソッドと特異メソッドに同じ名前付けるのは
ややこしいからやめてほしいわ。完全に勘違いしてた。
Python が1ファイル1名前空間がいいという気持ちも良くわかったわ。
まぁ、ふつうに作ったらそうなるよね。
後付けで外から色々くっつけるのはスパゲッティになりやすいのは確か。
0932デフォルトの名無しさん
2007/03/21(水) 08:10:06実際にruby/tkで書かれたツールとかあります?
ちょっとどんなソースを書いてるのかリスペクトしたいんです
Ruby/gtkは時々みかけるんですけど…
0933デフォルトの名無しさん
2007/03/21(水) 10:27:37>普通のメソッドと特異メソッドに同じ名前付けるのは
>ややこしいからやめてほしいわ。完全に勘違いしてた。
なんで?普通のメソッドと同じように使えるのは特異メソッドの利点じゃん。
>特異メソッドの追加は method_added ではわからないのか。
grep -n メソッド名 file.rb | grep def
で見つからないか?
>後付けで外から色々くっつけるのはスパゲッティになりやすいのは確か。
うそ〜ん。
それはコーディングやファイル命名方法がアホなだけで、Open Classのせいにするのは筋違いでは?
Ruby on Railsでは既存クラスをアホみたいに拡張しているけど、ファイルもコードもきちんと整理されているよ。
0934デフォルトの名無しさん
2007/03/21(水) 10:32:100935デフォルトの名無しさん
2007/03/21(水) 10:46:52何をはき違えてるんだ?
0936デフォルトの名無しさん
2007/03/21(水) 10:55:49スパデッティになるのはコーディングやファイル命名方法がアホなだけであり、後付けで外から色々くっつけられることを理由にするのはおかしいといっている。
Ruby on Railsはその証拠として持ち出しただけ。
それをねじまげて
>RoRが整理されていると世の中のあと付けで付け足すコードは混沌としえないのか?
なんてアホか。誰もそんなこと言ってないだろ。へ理屈もいい加減にしろ。
0937デフォルトの名無しさん
2007/03/21(水) 11:14:080938デフォルトの名無しさん
2007/03/21(水) 12:16:58いや、俺が勘違いしてたのが悪いとは思うんだが
そもそものスコープが違ってたから、APIが違うので
違うところを追っかけてたてたんだ。
で、同じ名前だけど、まったく違うAPIだったんだよ。
かたやただのアクセッサのはずのもの。
かたやアクセッサっぽいが、微妙に処理を行う奴。
grep して似た名前の def method もいっぱいあったので、
どれが呼ばれるのか見当つかんかった。
ちなみにその RoR を俺は追いかけてたんだがな…
0939デフォルトの名無しさん
2007/03/21(水) 14:26:34話が具体的じゃないから、おまえが何になやんでなぜこまったのかがさっぱりわからん。
>ちなみにその RoR を俺は追いかけてたんだがな…
公開できないコードなら大事なところをぼかすのは仕方ないけど、open sourceならもっと具体的にきけばいいんじゃない?
で、どの特異メソッドを探してたの?同じようなことで悩む初心者は他にもいるだろうから、もっと具体的に書いてくれ。もう解決したからいいよなんてのは無しな。
0940デフォルトの名無しさん
2007/03/21(水) 15:10:30〜
end
はこちらの意図を汲んで動作してくれてもいいと思うんだ…
0941デフォルトの名無しさん
2007/03/21(水) 15:25:32例外出すとかしてくれれば気づくんだが
0942デフォルトの名無しさん
2007/03/21(水) 16:03:14リスペクトってなに?
0943デフォルトの名無しさん
2007/03/21(水) 16:03:21class Range
alias _original_each each
def each
if first > last && first.kind_of?(Integer) && last.kind_of?(Integer)
first.downto(last) {|n| yield n }
self
else
_original_each {|n| yield n }
end
end
end
0944デフォルトの名無しさん
2007/03/21(水) 16:18:28インスペクトの仲間じゃない?
0945デフォルトの名無しさん
2007/03/21(水) 16:23:34エスパーだな。
respect: 敬意を払う・尊重する
inspect: 検査する
語源的にspect(見る)という部分は共通してるがなー。
0946デフォルトの名無しさん
2007/03/21(水) 16:29:170947デフォルトの名無しさん
2007/03/21(水) 17:04:55ruby-1.8.5-p12-i386-mswin32
Windows Xp
File.foreach(filename){|line|
p line
}
#=>
"一行目\n"
"\n"
"二行目"
File.foreach(filename){|line|
p line.chomp
}
#=>
"一行目"
""
"二行目"
1行目と2行目の間を出さないためにはどうすれば良いですか?
改行コードの問題?
0948デフォルトの名無しさん
2007/03/21(水) 17:19:49ループに
next unless line.size > 0
などと入れて出力したくないものは除外する。
0949デフォルトの名無しさん
2007/03/21(水) 17:29:46「敬意を持ってパクらせていただきます」の意。
0950デフォルトの名無しさん
2007/03/21(水) 17:31:28そんなツールはありません。
0951デフォルトの名無しさん
2007/03/21(水) 17:33:04同じことやってみたけど空行なんて出力されないけど、何故?
バージョン同じでOSはWIN2k
0952デフォルトの名無しさん
2007/03/21(水) 17:43:00空行が混じってないファイルだったのでは?
0953デフォルトの名無しさん
2007/03/21(水) 18:26:59紛らわしいなぁ。
0954デフォルトの名無しさん
2007/03/21(水) 18:36:29にピタゴラスイッチみたいなかわいいサンプルがあってワロタ
0955デフォルトの名無しさん
2007/03/21(水) 18:43:05linuxだとそうもいかず
ということはソースごと配布せざるを得ない?完全なるオープンソース状態?
いやだいやだ!
どうすりゃいいんだ?
0956デフォルトの名無しさん
2007/03/21(水) 18:50:13というか、UNIX界隈はバイナリの互換性が低くてやってられんだけでは(w
0957デフォルトの名無しさん
2007/03/21(水) 18:54:47Windowsは細かい動作するスクリプトはニッチでも需要があるが
Linux界隈では自力でやってしまうことのほうが多いはず
使いでのあるライブラリとかならまだしも単一のバイナリではなんとも
0958デフォルトの名無しさん
2007/03/21(水) 18:55:21ありがとうデス。
>>953
す、す、すみません。
0959デフォルトの名無しさん
2007/03/21(水) 19:11:580960デフォルトの名無しさん
2007/03/21(水) 20:08:10unless line.size > 0
より
if line.empty?
のが早い…とかどっかで聞いたような
ソース忘れたけど
まぁ別解のお節介。
0961デフォルトの名無しさん
2007/03/21(水) 20:29:240962デフォルトの名無しさん
2007/03/21(水) 20:59:51アクセサを記述したときふと気が付いたのですが、
classを記述するときに、
def hoge=(x)
@hoge=x
end
と記述したのですが、
これを呼び出すときは
hoge = x
とか、書いていました
つまり、=とメソッド名の間にスペースが入ってしまっています。
なのになぜ、正常に動作するのでしょうか?
0963デフォルトの名無しさん
2007/03/21(水) 21:27:57./configure --enable-shared ; make ; make install
のようにビルドしてインストールしましたが
ruby -rnkf -e '' を実行すると
ruby: no such file to load -- nkf (LoadError)
というエラーがでました。
インストール方法に問題があるでしょうか?
0964デフォルトの名無しさん
2007/03/21(水) 21:29:55代入の = はいくつかの解釈がされる。
var = val # 変数への代入
obj[idx] = val # obj.[]=(idx,val)
obj.hoge = val # obj.hoge=(val)
なので、より正確に書くなら
obj.hoge = x
だな。レシーバなしの hoge = x だと
ローカル変数 hoge への代入になってしまう。
0965デフォルトの名無しさん
2007/03/21(水) 21:29:56yarvには難読化機能があるらしいけど、それじゃだめなのか?
0966デフォルトの名無しさん
2007/03/21(水) 21:57:26サンクス
そういう勉強はどこですればいいの?
単純にRubyかけるだけではなく、もう少し深く学びたくなってきたので
0967デフォルトの名無しさん
2007/03/21(水) 22:00:340968デフォルトの名無しさん
2007/03/21(水) 22:05:350969デフォルトの名無しさん
2007/03/21(水) 22:15:250970デフォルトの名無しさん
2007/03/21(水) 22:56:02そういう細かい仕様はリファレンスマニュアルを隅から隅まで読んだり
MLを読んだりしてると覚えてくる。
ちなみにさっきのはリファレンスマニュアルの
「演算子式」→「代入」に書かれてる内容。
0971デフォルトの名無しさん
2007/03/22(木) 01:45:01require 'rubygems'
require 'tidy'
Tidy.path = "/usr/local/bin/tidy"
html = '<html><title>title</title>Body</html>'
xml = Tidy.open(:show_warnings=>true) do |tidy|
tidy.options.output_xml = true
puts tidy.options.show_warnings
xml = tidy.clean(html)
puts tidy.errors
puts tidy.diagnostics
xml
end
puts xml
以下のようなエラーがでます。
RuntimeError: can't find the symbol 'tidyCreate'
method symbol in import.rb at line 126
method import in import.rb at line 145
method extern in import.rb at line 61
method load in tidylib.rb at line 17
method path= in tidy.rb at line 46
at top level in tidy_test_sample.rb at line 7
ご教授お願いします。
当方mac10.4.9 ruby1.8.5
0972デフォルトの名無しさん
2007/03/22(木) 01:53:170973デフォルトの名無しさん
2007/03/22(木) 01:54:570974デフォルトの名無しさん
2007/03/22(木) 21:53:51rd = rand(@words.length)
@engTxt.set_value(@words[rd][0])
sleep 1
@japTxt.set_value(@words[rd][1])
end
sleepの入る位置がおかしいです。
英語を表示してから日本語を表示したいのですが、1秒待ってから英語と日本語を同時に表示します。
解決策はありますか?
0975デフォルトの名無しさん
2007/03/22(木) 22:00:54http://wxruby.rubyforge.org/doc/window.html#Window_refresh
0976971
2007/03/22(木) 22:17:43の行でエラーがでます。
自分なりにいろいろpathを変えてみた中ででた
エラーのパターンは
RuntimeError: can't find the symbol 'tidyCreate' もしくは
Unable to load ほにゃほにゃ
です。
ttp://tidy.sourceforge.net/trt/tidy_mosx.tgz
HTML tidyは上記をダウンロードし解凍した”tidy”を
/usr/local/bin/ に放り込みました。
ターミナルで
tidy -h
とするとヘルプが表示されているのでインストールはできていると思います。
tidyは
gem install tidy でインストールし1.1.2がインストールできていると思います。
お助けください。
0977デフォルトの名無しさん
2007/03/22(木) 22:24:22そのサイトは知りませんでした!!!
ありがとうございます!!!
超感動しました。sizerの使い方もよくわからなかったので;;
0978MoonWdLnkQ ◆MoonWdLnkQ
2007/03/23(金) 00:27:15Tidyのコマンドじゃなくて、TidyLibライブラリを指定しないと駄目。
0979デフォルトの名無しさん
2007/03/23(金) 01:48:15ありがとうございます。
そうだったのですか。
scrapi-1.2.0についてたlibtidy.soでいいのでしょうか?
上記libtidy.soをTidy.pathにした場合
Unable to load /usr/local/bin/libtidy.so がでてきます。
ttp://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/vikiwiki/vikiwiki/vikiwiki2/tool.txt?rev=1.3
ここを参考にしようにも
ttp://tidy.sourceforge.net/src/tidy_src.tgzがダウンロードできても解凍できず。
tidy4aug00.tgzをダウンロードして
make
sudo make install
してもコンパイル中?にエラーがでてうまくいきませんでした。
0980971
2007/03/23(金) 02:28:40すいません。自己解決しました。
ttp://nixbit.com/cat/programming/quality-assurance-and-testing/railstidy/
ここを見ていたら
It is assumed to be found at /usr/lib/libtidy.so .
とあったので見てみると
そのものはなかったものの
/usr/lib/libtidy.A.dylib というのを発見し、試してみると動きました。
本当にありがとうございました。
ついでで申し訳ないのですが
私は>>905で書いたようにハッシュと配列でデータを格納しましたが
>>917ではStructを使っています。
この2通りのやり方における違いとはどういったところでしょうか?
0981MoonWolf ◆MoonWdLnkQ
2007/03/23(金) 03:34:48Structだとアクセサが便利なのと
newするときに配列渡すだけで初期化できるとこがいい。
Arrayへの変換もできるし。
0982デフォルトの名無しさん
2007/03/23(金) 09:04:42ttp://pc11.2ch.net/test/read.cgi/tech/1174607679/
>>1の文面を戻した
0983デフォルトの名無しさん
2007/03/23(金) 09:14:36おつおつ
0984デフォルトの名無しさん
2007/03/23(金) 13:08:59ごちゃごちゃした1はいらない
0985971
2007/03/23(金) 13:44:47なるほど。ありがとうございます。
StructはRubyの入門書の類にはあまり出てこなかったので
ほとんど知りませんでした。
便利そうなので勉強して使ってみたいと思います。
0986デフォルトの名無しさん
2007/03/23(金) 14:32:50初心者スレだから必要
おまえのようなやつは本スレだけみとけ
0987デフォルトの名無しさん
2007/03/23(金) 17:04:17raise(page=nil) メソッドで特定のページをアクティブにする(表示する)事はできたのですが,
逆に,現在アクティブな(表示されている)ページの情報を取得するにはどうしたらよろしいのでしょうか?
タブを右クリック→そのタブを削除
みたいな動作が欲しいのですが…
0988デフォルトの名無しさん
2007/03/23(金) 17:23:550989デフォルトの名無しさん
2007/03/24(土) 13:28:47と
if A - B > 0 then
ってどっち使うほうがいい?
0990デフォルトの名無しさん
2007/03/24(土) 13:38:35そりゃアルゴリズムにおけるAとBの意味による
例えば自動車Aと自動車Bの速度だとすると
前者は「Aの方がBよりも速い」
後者は「AのBに対する相対速度が正」
Rubyは人間の思考中心の言語だからNE
0991デフォルトの名無しさん
2007/03/24(土) 13:45:42A-B>0は、Cのintのような整数の範囲が限られている場合に意図しない(が正しい)
動作をすることがあるが、Rubyは自動的にFixnum<->Bignum変換されるから、
文脈に応じて分かりやすいほうでいいんじゃないかな。
0992デフォルトの名無しさん
2007/03/24(土) 13:51:330993デフォルトの名無しさん
2007/03/24(土) 13:54:050994デフォルトの名無しさん
2007/03/24(土) 13:56:54ありがとう
適当に使い分けるよ
0995デフォルトの名無しさん
2007/03/24(土) 14:01:06でも
if hoge
return foo
else
return bar
end
な書き方ってあっちこっち飛び回って実際問題gotoと一緒だよなぁ
returnってメソッド内で1つだけにしたほうがいいのかなぁ
0996デフォルトの名無しさん
2007/03/24(土) 14:02:21例えば
if hoge
piyo = foo
else
piyo = bar
end
return piyo
こんな風にね
0997デフォルトの名無しさん
2007/03/24(土) 14:15:12メイン分岐の処理自体に前処理を書くのが楽だったとしても無理矢理まとめる?
return nothing unless hoge.has_key?('momomo')
のような
出口は1個であるべきなんだけど難しいね
0998デフォルトの名無しさん
2007/03/24(土) 14:27:44return (if condition
hoge
else
bar
end)
とか書けるな。返す文を短く書けるなら
return (condition ? hoge :bar)
か
0999デフォルトの名無しさん
2007/03/24(土) 15:09:25容易にネストしまくると思われるが
1000デフォルトの名無しさん
2007/03/24(土) 15:12:21def hoge
@hoge
end
で、いちいち return @hogeとは書かない
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。