前スレには気合の入ったURLのリストがありましたが、
16でも書いておいた方がいいかな
#!/usr/bin/ruby
print "デ"
というファイル(名前は samp.rb)を作成して
実行すると、
$ ruby ./samp.rb
./samp.rb:2: unterminated string meets end of file
となってしまいます。
普通に表示されるようにするにはどうすればよいでしょうか
4 :
デフォルトの名無しさん:2005/05/21(土) 18:38:10
オープンソースは問題が明らかになってから修正されるまでは確かに早いが
ソースが公開されてしまっているが故に解析されやすい
また、頻繁に修正を繰り返すためエンバグもしやすい
また商用と異なり、メンテ人員の意識レベルの低さから新たな問題へと繋がりやすい
だがそれがいい
>>3 文字コードは?
Shift_JIS なら一行目を
#!/usr/bin/ruby -Ks
euc-jp なら
#!/usr/bin/ruby -Ke
大人しくUNICODEにしろよ
>>6 1.9なら
# -*- coding: shift_jis -*-
でもいけるはず。
へー、elisp や Python みたいだな
3です。
#!/usr/bin/ruby -Ke
としてできるようになりました。
1.9もためしてみましたが、1.9は
-Keなしでできてしまうので、
# -*- coding: shift_jis -*-
の効果は不明です。
(shift_jisはeuc_jpでやりましたが表示はできる)
みなさん、ありがとうございました。
MWがやる気マンマンな件について
MWの騒動が終わりかけの頃にこのスレに来たから
MWの人となりは基本的にruby-*でしか知らないんだけど、
やっぱりこっちでもあんな調子だったの?
なんでMatzのやりかたはよくてMWのやりかたはだめなの?
A: 病気だから
>ふたたび「Ruby1.8.2以降のリリースエンジニアリングはどのように改善されたのか?」とかつついてみるとかどうだろう?( ̄ー ̄)ニヤリ
つっても、[ruby-dev:25299]の通り
「彼の甚大な努力にもかかわらず、結局組織化できなかったので(原因はどこにあるのだろう)」で流されちゃってるので、
どうにもならんと思うけど。
17 :
デフォルトの名無しさん:2005/05/22(日) 18:09:36
テスト結果の判断のしかたについてお聞きしたいのです。
Railsをgemで入れました。
# gem install rails
activerecordのテストをしようとして、下準備をしました。
・PosgreSQLのcreatedbやテーブル作成
・active_record.rb の修正(rescue節に require 'active_support' を追加)
・書き込みできるdebug.logファイルの作成(:>debug.log;chown postgres debug.log で作成)
それからテストを実行したのですが、Failします。
----------------------------------------
$ cd /usr/lib/ruby/gems/1.8/gems/activerecord-1.10.1/test
$ sh ./all.sh "connections/native_postgresql"
(略)
1) Failure:
test_has_and_belongs_to_many(DeprecatedAssociationsTest) [./deprecated_associations_test.rb:185]:
<"David"> expected but was
<"Jamis">.
2) Failure:
test_has_and_belongs_to_many(HasAndBelongsToManyAssociationsTest) [./associations_test.rb:719]:
<"David"> expected but was
<"Jamis">.
445 tests, 1433 assertions, 2 failures, 0 errors
----------------------------------------
このFailは気にすべきなんでしょうか?
ブロックを実行した回数 (?) を返す特殊変数が欲しいなあと思ったり。
i = 0
text.each_line { |l| p [i, l] }
を、こんな風に書きたい。
text.each_line { |l| p [$|, l] }
あ、前のはこうですた。
i = 0
text.each_line { |l| p [i, l]; i += 1 }
text.split("\n").reject{|s|(s=="")}.each_with_index{|l, i| p [i, l]}
>>18 text.each_with_index { |l, i| p [i, l] }
Hashでやりたい
>>21 なるほど、 String#each の場合は each_with_index が使えますね。
ただ、 each に限らずもうちょっと一般的な方法があればなあ、という願望です。
>>20 reject は何のために?というか得られる結果が違うし。 split でいくならこうかと。
text.split(/^/).each_with_index{ |l, i| p [i, l] }
>>23 すまん単なる勘違い。 Strin#each_with_index も存在を忘れてた。スレ汚しスマソ。
>>23 気持ちはわかるが、特殊変数増やすほどのことかなぁとも思う。
二重ループのときはどうしたらいいかな。
これにいいアイデアがあるなら賛成したくなるかも。
>>25 eachに限らずって言ってるのに。
each以外でこの特殊変数が使いたくなる場合があるかどうかは微妙だけど。
>>26 二重ループのときは i = $| とかして保存しておく、ですかね。イマイチですが。
というか、
>>25 さんので私のやりたいことはできる気がしてきました。
かなり記述は繁雑になりますが……。
二重ループだとこんなんで。
Enumerable::Enumerator::new(text, :each_line).each_with_index { |l, i|
Enumerable::Enumerator::new(l, :each_byte).each_with_index { |c, j|
p [i, j, c]
}
}
>>28 ガーソ!見落としてました。かなりスッキリ書けますね。
シコシコして逝く瞬間にティッシュを取ろうと
思ったのですが1枚もありません。
チンコの皮を思いっきり引っ張り皮の中に精子を
貯めトイレにダッシュしたのですが段差でつまづき
精子を廊下にブチ撒けた瞬間に母に見つかりました。
慌ててカルピスを溢したと言い訳したのですが
どう見ても精子です。
本当にありがとうございました。
コピペ乙
sage
33 :
デフォルトの名無しさん:2005/05/31(火) 23:10:16
Rails day って4日にあるみたいだけど、どういうグループが参加するかって、わかるの??
だれか、XOOPSみたいなの作ってくれないかなぁ。
C でコーディングするときに、こうすると快適なことに気づいた。
#define elsif else if
35 :
デフォルトの名無しさん:2005/06/01(水) 18:33:54
MMXレジスタにアクセスする方法を教えてください。
>>34 それは良い事をしましたね。
次のようにすると、もっと快適になりますよ。
#define if if(
#define then ){
#define end }
>>37 ありがとう、さらにこれでもっと快適になっていますよ。
#define unless(expr) if (!(expr))
>>39 いやいや、
>>37と組み合わせればこれで充分ですよ。
#define unless if!
unlessの後ろも空けられます。
なんか「C言語経験者のためのRuby入門」って本になりそうだな(笑
逆じゃないか?
43 :
デフォルトの名無しさん:2005/06/04(土) 14:08:56
http://www.rubyist.net/~matz/20050607.html#p02 のとおりにQu風にすると、
a = [1, 2, 3]
last = a.length - 1
a.each_with_index do |n, i|
if i == 0
print "[", n, ","
elsif i == last
print n, "]"
else
print n, ","
end
end
が、
a = [1, 2, 3]
last = a.length - 1
a.each_with_index do |n, i|
if i == 0
print "[", n, ","
elsif i == last
print n, "]"
else
print n, ","
;;
;;
となる。あ、ちょっといいかもとおもた。
どこがいいのかさっぱり。
vi ユーザの俺的には end も ;; も嬉しくない。 { } で統一して欲しい。
>>44 matzは冗談で言ってるんだよな?
コメントに踊らされてその気になったりしないことを祈る。
>>46 俺も主にvi使ってるがendでいいよ。
if ... then ... else ... endのバランスが好きだし。
今まで必死にendの良さを布教してきた信者がかわいそうだな
ま、教祖ってのはそういうものか
>>48 >今まで必死にendの良さを布教してきた信者がかわいそうだな
あー、そう。それで?
俺も ;; は嬉しくない・・・って言うか見づらくない?
今のまま end でもいいけど、
>>46の言うように { } で統一されるのもいいな。
たしかに見づらい。
;;なんてやるくらいだったら、インデントだけで判断すればええやんとも思う。
>>52 >;;なんてやるくらいだったら、インデントだけで判断すればええやんとも思う。
Pythonをおすすめします。
良かった。
>>51,
>>52 みたいな感想を持った自分に自信を無くしかけてたよ。
でも、{} での統一は望まない。
{} で統一はダサすぎる。 () にしろ。
そか?
「読みやすさ」というよりは「入力が楽」って部分で結構いいと思ったんだが。
それは俺がEmacs + JISキーボードでやってるからか?
endの羅列は視覚的にウザい。「;;」導入マジ歓迎。
「;;」でも「end」でも機能的にはどちらも同じなら、二者択一ッて訳じゃないんだから別にいいんでないの?
「;;」を導入したから「end」が無くなるわけでも無いし。
;; は一行に収めようとしたときに崩壊するな
いや普通に { } 使えばいいんだが、doが好き、けどendは嫌いです
とかいう亜種が発生したらどうすんのよ
[1..9].each do |i| [1..9].each do |j| print "%2s"%(i*j);;;;;;
File.open(file) do |f| f.each do |line| puts line ;;;;;
元デルフィアンなので全く気にならんなあ。
>>55 { } でも ( ) でもどっちでもいいよ。
とにかく、括弧で括れるってとこが重要なわけだし。
62 :
46:2005/06/10(金) 12:48:43
>>47 あれ?そう? vi でも % 使わない派?
>>59 >亜種が発生したら
読みやすいコードかけって普通に注意するなり仕事振らないなりすれば?。
一人でやってる分にはそいつの勝手。どうとでもすればいい。
絶対いないとは言い切れないけど、
それって相当珍しい亜種じゃないか・・・?
珍種・・・・・・・・・・。
66 :
47:2005/06/10(金) 14:59:17
>>46 使わない派。
ブロック端から端へジャンプしなきゃつらいほど大きなブロックは書かない。
showmatchしてるから対応はわかるし。
さらにmatzが今まで言ってきたように、{}の問題点は節が多い時。
rescueがあるRubyで{}に統一するのはやはり無理だろう。
OCamlも使う俺としては、
;;はendの位置に書くよりendの直前の行の末尾に書くのが普通。
ary.each do |x|
p x;;
インデントに意味があるっぽくて読みにくい。
でも;;が正式採用されたら癖でこう書くだろうな…。
>>59 scheme使いがそんな風に書きそう。閉じ括弧のイメージで。
便利かもしれないが、これから Ruby を始めるプログラミング初心者が混乱するだけな気がする
やるなら、互換切ってスッキリさせるなりしないと、すっげー悪評になりそ
便利さをとってグダグダになってきたら Perl を笑えなくなるな
もともとグダグタじゃないっけ?
そこが好きなんだけどね。
File(afile).open do |af|
File(bfile).pen do |bf|
af.each do |line|
bf.puts(line) if line.match(/regex/);;;;;;;;
プログラムの行数の短さを考慮するようなpython使いなんかも
ネストが深くなったときにこうしたいと思ってもおかしくない気がする
File(afile).open do |af|
File(bfile).pen do |bf|
af.each do |line|
bf.puts(line) if line.match(/regex/) oddd
>>72 "do〜od"という形式で、"od"が連続する場合は回数分だけ"d"を繰り返して
"oddd"と書ける、ということでしょう。きっと。
いや、そこまで原点回帰するならdoの閉じはdoneじゃないか?
doneeee
dodododododone
dondondondondone
donedonedonedonedone
done done done done done
>75
「end end end end」の方が良く思えるのは慣れのせい?
File(afile).open DO |af|
File(bfile).pen do |bf|
af.each do |line|
bf.puts(line) if line.match(/regex/)
END
Ruby に goto が無いのは何故なんでしょうか?
Javaにgotoが無いのと同じ理由だから、Javaスレで聞け。
どうやって実装するんだろ。
ラベルがあるのと同じフレームへの大域脱出とブランチの組み合わせか?
あんまり面倒でもなさそうな気がする。
gotoがあるとごちゃごちゃししてみにくいからじゃないのか?
pが受け取った値を表示した後、nilでなくその値を返してくれたら嬉しくないかな。
ary.map do { |x| x * 2 + 1 }
の場合
ary.map do { |x| z = x * 2 + 1; p z; z }
と書いていたところを
ary.map do { |x| p x * 2 + 1 }
と書けて幸せだと思うんだけど。
pがnilを返すことを意図的かつ合理的に使うプログラムはほとんどないだろうし。
そういうメソッドを別途定義すればいいだけだと思う。
>>87 デバッグ目的に使うメソッドを正規のロジックの一部とするのは
勧められないかと。
>>87 賛成に一票。
>>89 > デバッグ目的に使うメソッドを正規のロジックの一部とする
んじゃなくて、
まず正規のロジック
ary.map do { |x| x * 2 + 1 }
があって、何かおかしいから p を使ってデバッグしたいなあ、という時に
ary.map do { |x| p x * 2 + 1 }
と p を書くだけで目的が実現できて便利、という話かと。
p の返り値を積極的に利用しているケースが思いつかないので、
仕様変更に伴うデメリットは(ほとんど)無いと思う。
だからその用途ならメソッドを定義すればいいだけで、
わざわざ現在の挙動を変える必要はないだろう。
ちょっと話はそれるんだけど・・・、
たしかmapって { } 使うんならdoいらなくね?
むしろ、 p が nil を返すのは何故なのかと?
特に返すべきものがないからでしょ
teeコマンドっぽいからpeeでどうですか
96 :
87:2005/06/11(土) 21:57:39
>>90 >p を書くだけで目的が実現できて便利、という話かと。
その通りです。
>>92 その通りです…(恥
>>91 その通りだけど、あくまでデバッグ用なので長い名前は嫌ですね。いい名前あります?
この仕様変更で動かなくなるプログラムは行儀が悪いということで切り捨てちゃってもいいかなと…。
>>95 おお、いいかも。
p 1, 2, 3
は何返すんよ?
(1, 2, 3)が返す値でいいじゃまいか
>87
こんな感じでどうよ?
def pee(*args)
args.each{ |e|
p e
}
args
end
p *args
一つならそれ、複数なら配列を返すってことなら、こうかねぇ。
def pee(*args)
p *args
return *args
end
マジな話、
>>87 の提案はそのまま採用されていいと思う。
ruby-list に参加してる人、投げてみない?
なんで誰も気がつかなかったんだろうね。
pee とか言わず p のデフォルト動作にしちゃっていいよ。
いらないと思うんだけどなあ。
まあ、いるかいらないかを最終的に判断するのは俺らじゃなくてmatzなので、
投げてみてもいいんじゃない?意外に採用されるかもしれないし
いらないと思うんだけどなあ。
>>102 > pee とか言わず p のデフォルト動作にしちゃっていいよ。
実のところ、自分で使ってるrubyはこうしてる。
正確には、引数があるときには最後の引数、なければnilを返す。
これで困るのは、irbで p foo とかやっちゃうと二重に出てきちゃってうざっ
たいこと。
>>106 irb だと p foo じゃなくて単に foo ってすればいいんじゃね?
「いらないと思う」程度なら「あっても困らない」と思うんだけどなあ。
積極的に反対する理由ってあるの?
>>107 分かってるんだけどついやっちゃうんだよ。なぜか。
欲しけりゃ自分でMLに投稿したら?
出力に失敗した場合はどういう挙動するんだろね?
>欲しけりゃ自分でMLに投稿したら?
>>87よろしくー。
>出力に失敗した場合はどういう挙動するんだろね?
え?IOErrorが投げられるだけじゃないの?現状のpは違うの?
ささださんの日記によると、過去に提案したけど reject されたそうな。
Matz のお気に召さないのかもね。
114 :
87:2005/06/13(月) 01:44:00
う、ふられましたか。
思ったより反対意見が多いようで、様子見というか尻込みというか(笑
もともと「こうならいいなぁ」程度の希望だったんで、
ちょっと面倒ですが毎回自分で定義するので満足しておきます(´・ω・`)
>>113 あ、既出でしかもreject済みでしたか。どこでしょう?
このスレを見て思い出したっぽい?w
たしかIRCで軽く議論したような記憶はあるんだが、反対したのは誰だっけ。
IRCでも開発してるんだ。
たったいま、 Ruby の開発体制の閉鎖性の一端を垣間見た気がした。
開発じゃなくて雑談だろ?
そもそもS氏はコミッタじゃないんだし。
>>117 中の人キター(AA略
ちゅかデバッグの意味で最後にp retvalとかして、メソッドの戻り値がnilになってはまることの方がよくありそう。
だまってreturnちゃんと書けやっていうのも正しい話だけど。
>>101 やるなら統一して一つでも複数でも引数を配列として扱うべきだと思います。
でないと引数が複数なのか配列一個なのか区別が付きません。
def pee(*args); p *args; return [*args]; end
とかいろいろ考えてたらめんどくさくなっていらない気がしてきた・・・
最後の値を返すとかでいいんじゃない?
def pee(*args); p *args; return args[-1]; end
返値の直前にpを書くだけでデバッグ出力できる!というのが動機なんだから、
複数の値を与えたときどういう挙動をするかは重要じゃないよ。
どのみちpの挙動を正規のロジックとするのが好ましくないのは前述の通りだし。
>Gauche の場合、まさに値を返す p が #?= というリーダーマクロがあって便利です。まぁ、S式という構造に非常にマッチしているというのがあるんですが。
>他の言語だとどうなんでしょうね。
「文が式」と言われるRubyにおいてはOKだよね。
kagemaiでバグに加えて機能追加なんかの要望もできるテンプレが欲しいです
まぁ、教祖様が嫌がって本体にコミット見込みがないんなら、
peeが欲しい人でpee.rb書いておいて
require 'pee'
で幸せになれば(・∀・)イイ!!のでわ。
pee1 /p・/
《略式》慥イ《またa 〜》小便
go for [have] a pee おしっこをする.
━ 曠昿小便する(piss).
peed off 《俗》怒った,いらいらした.
まぁ、教祖様が嫌がって本体にコミット見込みがないんなら、
おしっこが欲しい人でおしっこ.rb書いておいて
require 'おしっこ'
で幸せになれば(・∀・)イイ!!のでわ。
require 'うんち'
>>130 レス改変くらいで切れんな!ぶっ殺すぞボケ!
p で self を返して欲しいってことはその後にメソッド書きたいからだと思うが
ならObject#pはパブリックメソッドにして引数があるなら引数を inspect して表示、
引数がないなら self を inspect して表示にすりゃいいんじゃないのかな
pでselfを返して欲しいなんて誰も言ってないぞ。
引数を返して欲しいんだ。
p x を x.p と書きたいという別の話だよね。
もし表示する値を返してくれるのなら、
p (p (p obj).func1).func2 が obj.p.func1.p.func2.p と書けて、
メソッドをだらだらつなげて書く派の人 (=私) にはすごくいいかも。
それ見たあとで現状
p obj
x = obj.func1
p x
x = x.func2
p x
x
を見ると泣きたくなってくるな
>>138 現状でも普通はそこまでひどくはしないやろ。
p obj
p x = obj.func1
p x = x.func2
x
>>136 Object#display よりは使い手がありそう
というか Object#display 使ってる人いる?
>>142 初めて知った。
inspectじゃなくto_sで、やっぱりnilを返すんだな。
lispのなんたらモードみたいに評価結果をダラダラ垂れ流すモードがあればいいんだよ
SmalltalkやSelfのようなインスペクタがあればいいんだよ
irb で我慢しといたる
148 :
136:2005/06/16(木) 12:52:10
>>146 それだね。
どっちも本家に取り込まれないかなぁ。
Gems って、 gem でインストールしたものをどこでどうやって管理するんでしょうか?
FreeBSD ports で devel/ruby-gems をインストールしたのですが、
gem でインストールしたものが pkg_delete や portupgrade などでどうなるのか、
これらのコマンドとの相性みたいなものがどうなのかが心配で、
なかなか Rails をインストールする勇気が出ません。
>>149 gemでインストールされたものは/usr/lib/ruby/gemsとかに置かれ、portsなどのパッケージシステムとは関係ない。
portsと関係するのはRubyGemだけなので、Railsについて心配することはない。
>>150 つまり、 ruby-gems を pkg_delete したり再度 ruby-gems を install したりしても、
何か不整合や不具合が起こったりはしないということでしょうか?
と聞くよりやってみた方が早そうなのでとりあえず gem install rails してみます。
>>150 さんの感じだと特に問題は起こらなそうな感じですので。
何か問題が起こったらまたこちらにうかがいます。
Gemsは>150のように独自のディレクトリを掘ってそこに管理する。
ruby-gems 経由で何かをインストールした後で ruby-gems を pkg_delete とか portupgrade
すると、 gems が作成したディレクトリが(空でないので)削除できず、エラーになる筈。といっても
気にするような問題にはならないだろう。
しかし、折角だから rails の ports を作成すると嬉しい人が多いんじゃないかな(内部で gems を
呼ぶだけなので、たぶん簡単に作れるよ)。
最近のFreeBSDなら問題の起こりそうなことをする前に
ファイルシステムのsnapshotをとっとくといいかも。
自動で元に戻せたりはしないけど。
>>156 なるほど、そういう風にしてHTMLタグを表示させることができる、と。
教祖が見捨てても儲に愛されるRD?
>>158 個人的にはRDを常用・愛用してますが、世間一般ではどうなんでしょう?
手元ではDebianなのでサクッと使えちゃうんですけど、
Windowsで利用環境を作るのは手間なんでしたっけ?
他形式に変換することを前提にしないで、そのまんま使ってる。
RDtoolにかけることを考えなかったら、好きなように細かいルールを変更して
いいわけだし、なかなか便利。
結局Ruby標準のドキュメンテーションのフォーマットとツールってどれなの?
>>161 Rubyスクリプトについての文書であれば、RDocなんですかね?
コード中に書くならRDocが標準。ツールも標準添付。
そうじゃないなら標準はないが、国内ではRDがデファクト的地位を持つ、と。
>>159 今はracc runtimeが標準添付だからとくに手間じゃないと思うけど。
>>164 う゛、そうなんですか?それは試してみなければ。
最近はcoLinux+Debianの環境で作業することが多くて、
Windows上ではRDを扱ってませんでした。
mswin32版のRubyは使ってるんですけどね。不勉強だったなぁ...。
ruby をコンパイルするとき、/usr/local/{include,lib} にあるものをみつけ
させるためにはどうすればよいでしょうか?
>>166 とりあえずコンパイルする環境などの情報を出した方が良いかと。
configureを使うのであれば、オプションで指定できませんか?
>>166 普通に CPPFLAGS と LDFLAGS を適切に設定して ./configure すれば通る筈。
ただしこれだけでは mkmf.rb は上手く認識してくれなかった記憶があるので、
openssl とかを /usr/local に入れている場合は面倒くさい。
その時は mkmf.rb を弄るか、いったん make するとコンパイルエラーになる
ので(コンパイル自体は停止しない)、しかるのちに当該ディレクトリの
Makefile を弄って再度 make とかする必要がある。
>>168 俺はこれで問題なくいけてるけど?
% ./configure \
--with-openssl-include=/usr/local/ssl/include \
--with-openssl-lib=/usr/local/ssl/lib \
--with-zlib-include=/usr/local/include \
--with-zlib-lib=/usr/local/lib
170 :
168:2005/06/23(木) 18:56:07
>169
そんなオプションあったのか。単にこっちが無知なだけでした。スマソ。
ところでそれってどこに書いてあったの? 他の ext なモジュールも指定できる?
>>170 それは ./configure --help を見れば・・・、と思ったら無いのね。
リファレンスマニュアルの mkmf の configure オプションのあたりかな。
ext なモジュールの側で arg_config() とかで定義するものみたいね。
>>169 それならこのほうが簡単。
$ ./configure \
--with-openssl-dir=/usr/local/ssl \
--with-zlib-dir=/usr/local
あるいは --with-opt-dir=/usr/local でもいいけど。
>>172 おお、マジか!そういうことはもっと早く教えてくれよ!
ここにもなんどか書いてるような気がする。
175 :
デフォルトの名無しさん:2005/06/24(金) 12:20:49
質問した人です。i昆布をリンクさせたかったので、
>>172 > あるいは --with-opt-dir=/usr/local でもいいけど。
を使いました。ありがとです。
177 :
デフォルトの名無しさん:2005/06/24(金) 17:17:34
「さくらのレンタルサーバ」では、以下Rubyモジュールをご利用いた
だけるようになりました。
http://www.sakura.ne.jp/news/20050614-001.news ▽今回追加したRubyモジュール一覧
・MySQL/Ruby
・Ruby-DBI
・Uconv
・Nora
・htree
MySQL/Ruby 及び Ruby-DBI モジュールの追加によりRubyプログラムより
MySQL(※)への操作が可能になります。
今後ともさくらインターネットをどうぞよろしくお願い申し上げます。
※ MySQL はスタンダード以上のプランで利用可能です。
178 :
デフォルトの名無しさん:2005/06/24(金) 20:01:14
-rwxr-xr-x 2 root other 42K 2005-06-18 22:13 /usr/local/bin/perl
-rwxr-xr-x 1 root other 1.2M 2005-06-24 12:47 /usr/local/bin/ruby
>>178 何が言いたいかわからんけど、とりあえず --enable-shared しとけと。
-rwxr-xr-x 3 root wheel 9420 2 20 14:22 /usr/local/bin/perl
-rwxr-xr-x 2 root wheel 3084 3 5 02:43 /usr/local/bin/ruby
blogkit
あとcsファイル見れ
それだけだっけ?
なんか独自のプラグインを使わないと完全に同じにはできなかったような
いや一回試そうとしたんだよね、俺も。真似できないかなーって
でもなんかblogkitだけでは無理そうだった
俺も調べたが同じにはできなかったな。
プラグインも見つからなかった。
結局ヘッダ・フッタのとこにメニュー表示のためのタグを書いた。
185 :
デフォルトの名無しさん:2005/06/27(月) 14:11:27
引数が即値でない場合に、
その値でなく変数名とかシンボル名だとかを
なんとか得る方法はないでしょうか?
instance_variables #=>配列を返す
instance_variable_get, instance_variable_set
みたいなものかな? あと、eval とか。
だとしたら、以前も言われてたけど結構何度も質問されるネタだな。
上手い文章で FAQ か何かに入れとくと良いかもね。
Ruby 1.8.1 [i386-mswin32]
MSYS 1.0.10
MinGW 3.1.0-1
GSL 1.6
Ruby/GSL 1.6.3
Ruby/GSLをWindowsで使いたいのですがMSYS+MinGWでGSLをコンパイル/インストール後
ruby setup.rb config
とするとmswinビルドは想定外らしくUNIX環境と誤認するのでextconf.rbの/mingw/を/mswin/にしてconfig後
ruby setup.rb setup
を実行すると
---> ext
nmake
setup.rb:535:in `command': 'system nmake ' failed (RuntimeError)
…〜
と止まってしまいます。
どうしたらmswin/mingwビルド上のRubyでRuby/GSLを使えますか?
>>186 どうゆー話なのかよく分かんない。
def foo(arg)
ここで 12345 ではなく :hogehoge を知りたい
end
hogehoge = 12345
foo(hogehoge)
ってこと?
>>190 Rubyの変数は値(オブジェクト)への参照ですから、
メソッド側では参照しているオブジェクトしか渡らないのでは?
なので、189の例のfooはhogehogeという名前を知り得ないような。
Object#object_idでオブジェクトを特定しても、
それを指している変数は1つと限らないので、名前の特定は無理?
具体的に、どういった実装を想定しているのでしょう?
とても興味があります。
>>190 Cで引数にポインタを渡して関数側で値を書き換えるような
処理をしたいんだと思われ。
Rubyなら普通、オブジェクトを渡してセッターメソッドで値を換えるんじゃないか
>>193 なるほど。とりあえず配列を使ってみると、例えばこんな感じ?
C++で言うところの参照渡しに相当することをやりたいと想定してます。
ほんとなら適宜、クラスを定義するんでしょうね。
def func( x )
x[ 0 ] += 1
end
a = [ 0 ]
func( a )
>>186 > 引数が即値でない場合に、
> その値でなく変数名とかシンボル名だとかを
> なんとか得る方法はないでしょうか?
無理。
……これだけだと身も蓋もないので。
どういう状況でこの機能が欲しくなったかを書いてくれると、
うまい別のやり方が見つかるかも。
>>186 そんな事が必要になる設計が悪い。
以上。終了。
質問した人間じゃないけどコールスタックの情報って取れないの?
横から失礼。
いまのcallerって今いち使いづらい気がする。
メソッド名を知りたい時に文字列マッチングが必要だったり、
別クラスの同名メソッドの見分けがつかなかったり。
スタックフレームオブジェクト(そんなのないけど)とまでは言わないが、
せめて、[[呼び出し元の self, :method_name], ...] みたいなのを返してくれるとうれしいなあ。
(スタック関連のメソッドはわざと用意してないって話を聞いた気がするけど詳細は忘れた)
>>199 そこまで高度なことを考えられるならRubyをハックした方が早くないか?
eval.c: static VALUE backtrace(lev)を書き換えるか同じようなメソッドを定義すれば出来る気がするが。
>>199 あんまり使わない方がいいメソッドは
使いにくい方が良いと思う。
gsub!がnilを返すみたいに?
gsub!がnilを返すメリットとメソッドを繋げれないデメリットって、
天秤にかけるとなんだかな。
メソッドチェーンなら!じゃないgsub使えばいいんでない?
変更されたのか否か、ってのが気になること多いもんね。!系は。
だからgsub!が無変更時にnilを返すのは、至極まっとうで合理的と思うんだが。
メモリとか気になるけど一時的な変数使わずに簡潔に書きたい、とか。
>>206 メモリの使用量が気になるのであれば、
適当なタイミングでGC.startを実行するとか?
自分用にということなら、文字列を返すgsub!相当のメソッドを
Stringクラスに追加しちゃうとか。
>>206 それって、本当にメモリを気にしてるのかな?
String#gsub! をメソッドチェーンできる破壊的メソッドにして、
現行の String#gsub! を String#gsub!? にしてほしい。
そのまえにメソッド名で "!?", "?!" が使えるようにしてほしい。
(str.gsub!||str) でよくない?
メソッド増やすまでもないと思うけど。(しかも互換性捨ててまで)
(str=str.gsub)という手もあるか
>>210 メソッドチェーンするとカッコの嵐になってあまりうれしくない希ガス。
>>211 それだと代入前までstrが指していた文字列が、
ガベージコレクションまで宙ぶらりんになってメモリを浪費(?)するのでは?
というのが206の気にしている点なのかな?
メモリつーか、コピーが発生するので、
文字列操作を大量に行う場合にはパフォーマンス悪くなるっちゅー話では?
gsub! なら「メモリの浪費」とか「コピー」はないの? 実装の話になるけど。
217 :
215:2005/06/30(木) 13:19:07
rubyのソース眺めてみました。
>>213の言うとおり
gsub!なら、メソッドの中で元の文字列のメモリーを解放してるみたいですね。
コピーについては、まぁあまり変わらん気が。。。
>>216 gsubを使う部分に関して言えば、gsubの方がメモリを解放しない分、高速と。
ただ、GCに残ったメモリ処理を委ねてしまう部分で、全体のパフォーマンスが
落ちる可能性もある、ということですね。参考になりました。
218 :
デフォルトの名無しさん:2005/07/01(金) 13:58:55
C/C++の関数の一部をRubyに投げたいんだけど何か参考になりそうな実装例ってありますか?
C/C++側はDLLです
hoge.cpp
void hoge(int foo)
{
int ret;
ret = A.ruby_hoge(foo);
return ret;
}
hoge.rb
class A
def ruby_hoge(foo)
foo++
〜
foo
end
end
こんな感じでRubyの方は出来ればクラス化したいです
>>218 とりあえず README.EXT.ja と ext の下を見てみればいいのでは。
220 :
218:2005/07/01(金) 15:10:15
あぅ…API関数はわかったけどこれらをどう使ったらいんだかわからない…orz
何かサンプルでもあれば教えてくれると嬉しいかも…
Rubyの組み込みはこの世で最も面倒なことの一つだな
「C/C++の関数の一部をRubyに投げたい」の意味が分からない。
C/C++で書かれたプログラムをRubyから呼びたいってことなら、わりと簡単。
Rubyで書かれたプログラムをC/C++から呼びたいなら、わりと面倒くさい。
いずれにせよREADME.EXT.jaでわからないなら
RHGをかじるか、Rubyのソースを読むのがいいかと。
Ruby *ruby = new Ruby();
ruby->Source("puts(\"hello,world\")");
ruby->Compile();
ruby->Run();
これくらい簡単に出来てもバチは当たらないと思うので誰か作ってください。
224 :
218:2005/07/01(金) 15:48:16
>>222 親アプリ ⇔ hoge.dll ⇔ hoge.rb
てな感じでhoge.rbを書き換えるとhoge.dllの動作も変えられるみたいなことをしたいです
Array#shuffle が標準でないのは何故?また名前?
random と組み合わせたメソッドは無いので、そういうポリシーなんじゃないかな。
他に思いつくのは「配列の中からランダムに要素を選ぶ」くらいだけど。
random ついでに便乗質問。内部で random を使ってるメソッドのユニットテストって
どうやるといいんでしょう。
>>227 srand(aFixnum) してからテストするとか?
いや、ダメか。 srand したあとどういう乱数系列が得られるかは実装依存なのかな。
>223
ActiveScriptRub...
>>299 試してみました。それぞれの環境では同じ繰り返しです。
$ ruby -v
ruby 1.8.2 (2005-04-11) [i386-linux]
$ ruby -e 'srand( 0 ); 10.times { p rand; }'
0.548813503927325
0.715189366372419
0.602763376071644
0.544883182996897
0.423654799338905
0.645894113066656
0.437587211262693
0.89177300078208
0.963662760501029
0.383441518825778
C:\>ruby -v
ruby 1.8.2 (2004-12-25) [i386-mswin32]
C:\>ruby -e 'srand( 0 ); 10.times { p rand; }'
0.548813502304256
0.592844616388902
0.715189364971593
0.84426574409008
0.602763370377943
0.857945619849488
0.544883177382872
0.847251737257466
0.423654796788469
0.623563696397468
234 :
218:2005/07/02(土) 03:23:09
改めてREADME.EXT.jaみているけど…
CからRubyのメソッドを呼び出す関数って見あたらないような…
>** Rubyの初期化・実行
の関数がCからRubyスクリプトを実行する物っぽい?けどこれで出来るのは単なる実行みたいだし…
そもそもCからインタプリタの内部メソッド(関数)を呼び出そうとすること自体無謀?
それとも処理系によってはそういうことも可能なのかな…?
235 :
218:2005/07/02(土) 03:23:39
また上げちゃった…orz
スマソ
手元の README.EXT.ja だと、モロに
> 2.2.3 CからRubyのメソッドを呼び出す
という項目があるわけだが。
ruby の rand は環境依存は無いんじゃないの?
環境によらず random.c (Mersenne Twister) 使ってるわけだし。
>>231 それはruby-listっていうメーリングリストだ
ruby-talkだと思い込んでつい見に行っちまったじゃねえか
>>237 ありゃ?ということは>232は方法がよろしくない?
同じ1.8.2でも日付が違うから、ってことはありませんよね?
LinuxとWindowsで同じ乱数列を得られるのであれば、ぜひ助言をお願いします。
>232
Linuxがよくねーんじゃね?
% ruby -v
ruby 1.8.2 (2004-12-25) [i386-freebsd5]
% ruby -e 'srand(0); 10.times{p rand;}'
0.548813502304256
0.592844616388902
0.715189364971593
0.84426574409008
0.602763370377943
0.857945619849488
0.544883177382872
0.847251737257466
0.423654796788469
0.623563696397468
>>239 ChangeLog 見たら2005年1月に random.c にいろいろ変更が入ってるので
バグ取りとかあったのかも。
ruby 1.9.0 (2005-06-08) [i386-cygwin]
ruby 1.9.0 (2005-06-24) [i686-linux]
では、どちらも
>>232 の前者と同じ出力だった。
srandも自動で呼んでくれないこんな世の中じゃ
自動で呼ばれますけど何か
たぶん、double(だいたい64bit)に、32bitの乱数を1つだけ食わせて
生成するのが修正されて、乱数を2つから生成するようになったんだと思う。
//CVS版random.c
genrand_real(void)
{
unsigned long a=genrand_int32()
>>5, b=genrand_int32()
>>6;
return(a*67108864.0+b)*(1.0/9007199254740992.0);
}
//1.8.2版random.c
genrand_real()
{
unsigned long y;
if (--left == 0) next_state();
y = *next++;
/* Tempering */
y ^= (y >> 11);
y ^= (y << 7) & 0x9d2c5680UL;
y ^= (y << 15) & 0xefc60000UL;
y ^= (y >> 18);
return (double)y * (1.0/4294967296.0);
/* divided by 2^32 */
}
247 :
218:2005/07/02(土) 15:18:30
>>236 上の方か…下の方ばかり見てた…orz
もう一回読んでみる…
うはwwwwwこの夏の集中講義楽しみwwwww
おkwwwwwwwwwwwwwww
249 :
218:2005/07/02(土) 19:24:53
う〜ん…拡張書くことを前提に書いてあるのでわかりにくいけど…
方針的にはこんな感じで良いのかな…
・ruby_init→rb_eval_stringでRubyソースを流し込む
・rb_funcall関数を呼んで該当メソッド実行
class内のメソッドを呼ぶ方法は無いみたい…?
呼びたければrb_eval_stringで該当コードを実行するしかないのかな
インスタンスはどうするつもりなのか?
252 :
218:2005/07/03(日) 17:08:47
Win32APIでRubyのDLL呼びながら実験中
>・ruby_init→rb_eval_stringでRubyソースを流し込む
>・rb_funcall関数を呼んで該当メソッド実行
で一応Ruby内のトップレベルのメソッドを呼ぶことは成功
引数与えて返り値も取れることを確認
クラス内のメソッドの呼び方が相変わらずわからん。
rb_funcallの第一変数でクラスオブジェクトを指定すれば呼べそうな感じなんだけどこの値の取得のしかたがよくわからん…
README.EXT.ja見てもRubyコード内部のクラスを初期化してオブジェクトを取得する関数はないようだし…
Rubyソースでクラスを初期化してそのオブジェクトを取得するにしてもどうすれば…
これ以上はCで解析するか…
>>252 >クラス内のメソッド
の意味がよく分からんが rb_class_new_instance とかではなかろうか。
README.EXT.ja を見るのもいいけど、
ext/ 以下の拡張ライブラリのソースも参考になると思う。
254 :
218:2005/07/03(日) 22:29:50
class FOO
def hoge
〜
end
end
ってなRubyのコードのhogeをCから呼びたいです
Rubyで書けば
c_foo = FOO.new
c_foo.hoge
となる訳だけど…
>rb_class_new_instance
肝心のnewするクラス名の指定のしかたがわからない…
argc:多分*argvのサイズ
*argv:多分クラス初期化の引数
klass:よくわからない。初期化するクラス?返り値のポインタ???
拡張ライブラリのソースも検索してみたけどrb_class_new_instanceに引数になっているのが変数ばかりで
どのクラスをどう初期化しているんだかよくわからなかった
VALUE foo = rb_const_get(rb_cObject, rb_intern("FOO"));
VALUE c_foo = rb_class_new_instance(0, 0, foo);
VALUE result = rb_funcall(c_foo, rb_intern("hoge"), 0);
>>255 > VALUE foo = rb_const_get(rb_cObject, rb_intern("FOO"));
VALUE foo = rb_path2class("FOO");
のが楽かな。
257 :
218:2005/07/04(月) 17:07:35
出来ました
ありがとう〜
A.中村、guion、G7、戯はスルーしる!>matz
subversionのannotateってあんなに遅いのが普通なの?
261 :
218:2005/07/05(火) 01:40:49
RubyってDLL内から動かすのって無理?
EXEからならちゃんと動くコードがDLLに入れると不正終了する
rb_eval_stringでRubyソースを流し込んだあと
rb_class_new_instanceとかrb_funcallを呼ぶと駄目な模様
コンパイルはMinGW
Rubyをコンパイルすると出来るlibmsvcrt-ruby18.aで実験しています
>>259 全部同一人物じゃねえか(笑)
しかし激しく同意。
win32ではruby本体も格調ライブラリもDLLなんだが。
「DLLから動かす」ってのがどうやったのかと。
264 :
218:2005/07/05(火) 16:34:38
何となく原因がわかってきた…
DllMainでruby_init、rb_eval_stringして
エキスポート関数でrb_class_new_instanceとかrb_funcallを呼ぶと駄目っぽい
エキスポート関数内でruby_initから書くと動く
DllMainのruby_initで初期化されたメモリとかが勝手に解放されちゃうっぽい???
でもエキスポート関数呼ばれる度にRuby初期化、スクリプトのロードするのはかなり効率悪いし
Ruby内でのグローバル変数が使い物にならない…orz
どうしたら良いだろう?
あ、一応訂正
>>261 ×:libmsvcrt-ruby18.a
○:libmsvcrt-ruby18.dll.a
--disable-shared付けてビルドしたlibmsvcrt-ruby18.aだとリンクは出来るけどなぜか動かないっぽい
>>264 DllMainの中でどうやって呼んでるか、だね。
DllMainの第2引数の値が何である時に処理させてる?
266 :
218:2005/07/05(火) 17:51:37
ぎゃー
DllMainエキスポートしていないだけでした…
そりゃDllMain実行されない罠…il||li ○| ̄|_
スレ汚しスマン
数学的に解決するのはかっこいいね。あこがれるぅ。
268 :
218:2005/07/06(水) 01:16:10
Rubyのスタティックライブラリってどうやってコンパイルすればいい?
msvcrt-ruby18.dll相当の物で良いんだけど…
>>268 途中で-static.aてのができてるはず。
270 :
218:2005/07/06(水) 14:56:42
--enable-sharedを付けて作った
libmsvcrt-ruby18.a
libmsvcrt-ruby18-static.a
をリンクした物を実行するとアプリケーションエラーになります…
271 :
218:2005/07/06(水) 15:01:30
libmsvcrt-ruby18-static.aだけリンクすると undefined reference to エラーが大量に出るので
何か足らないと思ったけど足すのはlibmsvcrt-ruby18.aじゃなくて-lwsock32なのね…
動くようになりました
>>271 必要ないかもしれんが、そのプログラムは普通に作った拡張ライブラリは
ロードできないから、そのつもりで。
273 :
218:2005/07/06(水) 23:02:38
>>272 あ、ホントだ…というか$:が空だ…orz
ロード可能にする方法もあるんですか?
>>273 > あ、ホントだ…というか$:が空だ…orz
ruby_init_loadpath()呼んでる?
> ロード可能にする方法もあるんですか?
WindowsではDLLからimportされるシンボルはそのDLL名も含んでいるので、普
通にコンパイルされた拡張ライブラリはlibmsvcrt-ruby18.dllからexportされ
たシンボルにリンクされている。それをスタティックリンクされたexe/DLLか
らロードすると、
>>270と同じ状況になる。
だから、考えられる方法はこの辺かな。
(1) スタティックリンクライブラリじゃなくてlibmsvcrt-ruby18.dllを使う
(2) 作るDLLの名前をlibmsvcrt-ruby18.dllにする
(3) (2)と似ているけど、Forwarding DLLを使う
(4) 必要な拡張ライブラリは全部コンパイルし直す
(5) DLLの外部参照をロード時にマッピングし直すコードを実装して、ruby-devに投げる
>>274 libmsvcrt-ruby18.dll じゃなくて msvcrt-ruby18.dll ね。
しかしあんた詳しいな。
276 :
デフォルトの名無しさん:2005/07/07(木) 16:08:17
次は、Rubyで長方形のクラスを定義し、インスタンスを一つ作り出しているものです。C言語で同様のプログラムを作成しなさい。
class Rectangle
def initialize(x1,y1,x2,y2)
@x1 = x1
@y1 = y1
@x2 = x2
@y2 = y2
end
attr_accessor :x1,:y1,:x2,:y2
end
rect1 = Rectangle.new(10,10,20,20)
p rect1
printf("長方形の対角の座標は(%d %d)と(%d %d)です。\n",rect1.x1,rect1.y1,rect1.x2,rect1.y2")
宿題は別のスレの方がいいと思うよ
しかもC言語だし。
まずRubyインタプリタを作ればいいのかな?
279 :
218:2005/07/07(木) 19:07:15
>ruby_init_loadpath()呼んでる?
呼んでいませんでした。ソースも探したつもりだったんだけど見落としていたか…il||li ○| ̄|_
やってみます
>WindowsではDLLからimportされるシンボルはそのDLL名も含んでいるので
なるほど、Windowsの仕様って事ですか…
ファイルが増えるのは好きじゃないんだけどやるとすれば無難に(1)かな…
hash.cってstaticなの多いね…
ハッシュの全要素を取り出すのに何か良い方法はあるかな?
rb_hash_keys(Hash#keys)で全キーを取って…と考えたけどstaticみたいだし…orz
static取っちゃって大丈夫かな…?
Cでコールバック関数を定義して、rubyに登録しといて、
んで、"hash.each{|h,v| cfunc(h,v);}"をevalのではいかんのか
281 :
218:2005/07/07(木) 20:15:01
>>280 うぐ…気分的問題だけどRuby側ではRuby標準搭載以外の機能はあまり使いたくないので…
どっちみちスマートじゃないけど全キーリストを定数のキーで一緒に渡すのも手か…
わがまま言ってスマソ
rb_iterate()とrb_each()
283 :
218:2005/07/07(木) 21:38:41
sizeメソッドってHashもArrayもCからは使えないのね…il||li ○| ̄|_
Rubyからの戻り値のサイズでメモリを確保する場合は…
Ruby上で数えてその値をもらうかC上でnilが出るまでArrayを読むかしかないのか…
>>282 Cからイテレータを回す?
rb_iterate(rb_each, ?, rb_ary_entry, ?)???
selfは…?スマソ さっぱりわからん…orz
そろそろ218がウザくなってきた件について
ext/**/*.cくらい読めよ
>>283 RHASH(hash)->num_entries
RARRAY(array)->len
>>282についてはenum.cを嫁。
286 :
218:2005/07/08(金) 01:14:59
>>285 なるほど…staticな関数でも中は公開されている関数で組まれていることもあるのか
>
>>282についてはenum.cを嫁。
わかったようなわからんような…一部コピペして動かしてみればわかるかな…
どうしても必要になったらやってみる
組み込みの話が出ているのでついでに教えてくれい
Rubyを組み込んだアプリを配布する場合のライセンスってどうなるんだ?
本家のライセンス読んでもよくわからん
3.a:バイナリの再配布時にはソースコードを入手可能にすればいいように読める。その適用範囲は…?
3.b:「機械可読なソースコード」って何?
5.を読むとRuby本体以外の部分は一切制限を受けないようにも読める
問題ないだろ。RGSSって例もあることだし。
>>288 3.d その他の配布条件を作者と合意する
の可能性もあるわけで…
>>290 これか。
[ruby-talk:24727] Re: license terms (Re: Re: kill rdtool?)
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/24727 > p.s.
>
> Here's the terms from inside of my heart:
>
> Permission is granted to anyone to use this software for any purpose,
> including commercial applications, and to alter it and redistribute it
> freely, subject to the following restrictions:
>
> 1. DO NOT SUE ME.
> 2. DO NOT EVEN THINK ABOUT SUING ME.
(いい加減な訳)
以下の条件を守れば、どんな目的に使ってもいいし(商用も可)変更・再配布も自由。
1. 訴えないで。
2. 訴えようと考えないで。
>>292-293 なるほど。訴えない限りはよっぽど変なことに使わない限り大丈夫って感じで良いのかな?
訴えるななんてライセンスは法的には無意味だろ
だから、2 があるんでは?
>>295 もちろんそんなことはライセンス条項には書いていないけどね。
そういや LEGAL の nkf が ext/nkf/nkf1.7/nkf.c のままだね。
リファレンスマニュアルに README.EXT (相当) の記述が無いのはなんでだろ?
正確にはよくわからんけどWin32APIって
func = Win32API.new(〜)
と
func.call(〜)
の間にopenとか挟むと.callが失敗することがあるのね…数時間ハマったよ…il||li ○| ̄|_
>>301 問題のコード(と Ruby のバージョン)を貼ってはくれまいか。
655 名前:仕様書無しさん[sage] 投稿日:2005/07/14(木) 15:15:51
2ch にだけバグレポート書くのやめてほしい。
orz とかいってないでメール出せ。メール。
656 名前:仕様書無しさん[sage] 投稿日:2005/07/14(木) 15:25:54
そしてそれを元にバグフィックスしたら「作者見てるだろ」と言われる罠。
657 名前:仕様書無しさん[sage] 投稿日:2005/07/14(木) 16:21:22
あるなそのジレンマw
require 'Win32API'
require 'win32ole'
大文字小文字が揃ってないのが気持ち悪い
308 :
デフォルトの名無しさん:2005/07/15(金) 15:29:58
ruby-1_8 なんですが、openssl-0.9.8 だと
"/usr/local/include/openssl/md5.h", line 108: syntax error before or at: size_t
"/usr/local/include/openssl/md5.h", line 108: warning: undefined or missing type for: size_t
"/usr/local/include/openssl/md5.h", line 110: syntax error before or at: size_t
"/usr/local/include/openssl/md5.h", line 110: warning: undefined or missing type for: size_t
"/usr/local/include/openssl/md5.h", line 110: warning: undefined or missing type for: unsigned
"md5ossl.c", line 17: warning: argument #1 is incompatible with prototype:
prototype: pointer to char : "/usr/include/iso/stdio_iso.h", line 183
argument : pointer to unsigned char
cc: acomp failed for md5ossl.c
とかでてコンパイルできないんですが、ソースをどのように▼変更すればよかですか?
309 :
デフォルトの名無しさん:2005/07/15(金) 17:19:26
今日、筑波大でまつもとさんの講義見てきた。
せめてあと二・三行くらいなんか書けw
今もヒゲ?
312 :
デフォルトの名無しさん:2005/07/15(金) 18:12:28
第一印象は?
/:|)
GUIでtk使おうと思ってtk.rbリクワイアしたらtk.rb中でリクワイアしてるtcltklibが見つからずエラー出る
コンフィギュア時 --with-tcllib --with-tklib --with-tcl-include --with-X11-include 全部設定して入れなおした。
だめだった。
なんでじゃーあんちゃんなんでじゃー
グギギ…
>>315 ちゃんと必要なものは全部コンパイルされたのか?
>>306 エラーの内容もわからんのではっきりしたことはいえんのだけど、
funcが開放されるまではDLLは掴んでいるはず。
320 :
デフォルトの名無しさん :2005/07/17(日) 16:28:15
問題文生成システムを作りたいんだけど。。
コーパスとかから語彙を拾ってきて、その語彙を含む問題文を生成するシステムなんだけど、rubyでどうやって作ればいいのかなぁ。
プログラム例がないとちょっと手がつかない。。
>>318 それって、オンラインで公開されてないか?
>>318 知らんかった。とりあえず買っといて良かった…。
2回くらい開いたけど、忙しくなってちゃんと読んでないわ。
まぁ、そのうち増刷されるのでは?
>>308 解決済みだったらごめん。
そこだけじゃないし、コンパイル通るようにしてもCygwin上ではtest-allが刺さるし、他でもたぶんテスト通らないと思う。
あとリンカがエラー吐く場合はossl_engine.cの該当部分を#ifdef OPENSSL_NO_DYNAMIC_ENGINE
で囲むといけるっぽいけど。
テスト通らないし直し方もわかんないのでメール投げたりしてません。ごめんなさい。
Index: ext/digest/md5/md5ossl.h
===================================================================
RCS file: /src/ruby/ext/digest/md5/md5ossl.h,v
retrieving revision 1.1
diff -r1.1 md5ossl.h
5a6
> #include "defs.h"
Index: ext/digest/rmd160/rmd160ossl.h
===================================================================
RCS file: /src/ruby/ext/digest/rmd160/rmd160ossl.h,v
retrieving revision 1.1
diff -r1.1 rmd160ossl.h
5a6
> #include "defs.h"
Index: ext/digest/sha1/sha1ossl.h
===================================================================
RCS file: /src/ruby/ext/digest/sha1/sha1ossl.h,v
retrieving revision 1.1
diff -r1.1 sha1ossl.h
5a6
> #include "defs.h"
>Rubyist のための他言語探訪 【第 1 回】 Python
こういうの好きだねぇ・・・
akr氏の写真初めて見た。 「core な人として著名な」にワロタよ。
>>328 あらら、また危い橋渡ってるのか (w
つか、もうちょっと垂れ流さずに日本語選んで書いた方が良いよな。
煽りが入ってる思われてもしょうがない部分が、ちらほらあちこちところどころばらばらわらわらと。
Matzの真のライフワークにケチつけるなよ
煽りは Matz にあるんじゃない、煽りだと思って読む人の中にあるんだ!
どっちが面倒とか醜いとか言わずに、単にRubyユーザも視野を広げて色々な言語を
知って欲しいという点だけで紹介を書けばいいのになあ。
Rubyを引き合いに出すのはそれで理解がはやくなる場合だけにしておけばいいのにね。
HSP, Perl, Java とシリーズ化したら matz はネ申
あぼーんが大活躍すること間違いナシ
>>333 Matz が Ruby ユーザーのために書くのに、
Ruby をひきあいに出すなってのは無理かと。
ネタをネタと見抜ける人でないと(るびまを読むのは)難しい
どこに Ruby をひきあいに出すなと書いてあるか、ポインタきぼんぬ > 信者
X 言語ユーザのための雑誌で、X 言語以外の言語を
X 言語の作者が X 言語の作者として、X 言語との比較ですらなく
ただただ紹介するだけなんてありえないだろ。
るびまって結局日本での内輪化を進めるものにしかなってないよね
>私はとにかく物を作るのが好きなのです。人間は、その創造主のかたちに似せて作られました。ですから、人間は元から
>創造者なのです。私は絵かきや音楽は得意ではありませんが、ソフトウェアを作ることはできます。だからソフトウェア
>を作るのです。
まつもとさんキリスト教徒だったのか・・・
しらんかった
>>341 それは普通のキリスト教徒に怒られる発言かも。
板違い
>>344 そか?
俺キリスト教徒じゃないけど、
普通のとカルトの違いはわかるぞ
どうせなら、
るびまにその辺の説明書いて欲しいな
>>337 >>336 みたいなこともそうだよね
後、rubyistのためのと言ってるわりには、日本語だけってのも
それはしょうがないと思わなくもないけど
全般的に内輪臭しない?
>>336は言ってみただけだろう。そんな含みがあったとは思えない。
開発陣での内輪化の臭いは確かにする。るびまに限らずRuby全般的に、昔から。
しかし特にるびまが日本での内輪化を進めているとは思わない。
日本のキリスト教徒は変な奴ばっか(平均すると。まともなのもいる。少ないけど)
日本での信者数が1パーセント程度というのも、むべなるかなという感じがする。
牧師はレイパーばっかだしな
ということは日本のキリスト教徒はチョンばっかということか
モルモン、エホバ、統一教会
(・∀・)moonwolf!!
cygwinから-mno-cygwin付けてuconvコンパイルしたいんだけど
>ruby extconf.rb
Makefileのccをgcc -mno-cygwin -O2に
>make
gcc -mno-cygwin -O2 -DUSE_EUC -DUSE_SJIS -I. -I/usr/lib/ruby/1.8/i386-cygwin -I/usr/lib/ruby/1.8/i386-cygwin
-I. -c e2u.c
/usr/lib/ruby/1.8/i386-cygwin/ruby.h:22 から include されたファイル中,
uconv.h:11 から,
e2u.c:10 から:
/usr/lib/ruby/1.8/i386-cygwin/defines.h:124:25: win32/win32.h: No such file or directory
uconv.h:11 から include されたファイル中,
e2u.c:10 から:
/usr/lib/ruby/1.8/i386-cygwin/ruby.h:61:20: alloca.h: No such file or directory
In file included from uconv.h:11,
from e2u.c:10:
/usr/lib/ruby/1.8/i386-cygwin/ruby.h:687: error: 構文解析エラー before "rb_nativethread_t"
/usr/lib/ruby/1.8/i386-cygwin/ruby.h:687: 警告: data definition has no type or storage class
make: *** [e2u.o] エラー 1
-mno-cygwin付けなければ正常にコンパイルできる。MinGWパッケージでDOS窓から手動でコンパイルしても問題なく
ビルドできるようなのでソース自体がおかしいわけでもない模様。手動でのコンパイルはめんどくさいけど
どうしたらextconf.rb使って-mno-cygwinなバイナリをコンパイルできますか?
-mno-cygwinなrubyでextconf.rbを実行。
OSSコミュニティの「日本病」
・本家原理主義。
・しかしながら妙に独自主義
・コミュニティが分断されている
・開発コミュニティとユーザーコミュニティが悪い意味で分断されている。
コミュニティとはあまり関係なく、個人が本家にフィードバックするだけ。
悪くすればローカライズに特化した組織になるか、ユーザー間の交流会止まり。
集団化すりゃいい、という問題でもないがコミュニティでしかできないことを
日本のOSSコミュニティが提供できているか、というとそういうわけでもない。
・日本なんとか会(法人組織)の排他性。中間法人格などを取得していても、
組織の運営実態がイマイチ把握できない。ディスクロジャーの欠如、
法人協賛会員への過度の財政的依存、役員選定基準の不明確さなど
一見して誰のための何の組織なのか理解不能。
しかも、コミュニティとの繋がりが希薄なので、情報を求めにきたビジターは肩透かしを食らう。
一方で恒常的な財政問題を抱えている
・開発者やユーザーは、似たようなコミュニティの間を渡り歩くか、
現実的な成果を上げるにはコミュニティとは無関係に活動せざるを得ない
・日本のOSSコミュニティにおけるアクターはコミュニティではなく、キーパーソン的な個人
>>355 rubyには当てはまらないような。
もっと別な大きな問題はあるが。
先発のPythonの方が優れた言語であるというのは大問題だな。
そういうあからさまな燃料はあんまり燃えないよ(´・ω・`)
>>362 > プログラミング用語解説? ジョークはジョークとして受け取ってください...
ホビープログラマの俺には、どこかしこもジョークにしか見えなかった。
> とりあえず、デタラメは書いてないつもりなので...
ホビープログラマの俺には、どこかしこもデタラメにしか見えなかった。
ちうか、かなり痛ぇな。とりえあず、Perl信者らしきことは分かった。
文脈的にWebプログラマか何かなんだろうが、すげぇ低レベルだ。仕事あんのかコイツ。
>>362 > とりあえず、デタラメは書いてないつもりなので...
それは本気で言ってるのかMithran
@{[]}なんて昔はなかったよな。いつからできるようになったんだ?
というかなんで二重に囲むの?
ヒアドキュメントの中で #{} 使うのは自分的にちょっと目新しかった。
今度使おうっと。
Perlの @{[]} は
@{[
$a = 1;
$b = 2;
]}
とかかくと落ちるようだから、代りにはならない気がするんだがどうなのかな。
確かに燃料になっているようだ
ジャパンはanonymousが多いからpersonは必然的にkeyだねミンナキレイダヨー
>>367 ほんとだ。つーかなんか行番号がずれてるような気がする。
$ perl -e 'print "
@{[
$a = 1;
$b = 2;
]}
"'
syntax error at -e line 2, near "1;"
syntax error at -e line 4, near ";
]"
Execution of -e aborted due to compilation errors.
知識もないのに評価するってのがどれだけ痛いことなのか良く分かるな。
Perlの@{[]}の中には式しかかけないので;を書いたら構文エラーになるのは当たり前。
文を書きたいならdo{}を入れればよい。
print "@{[do{ $a = 1; $b = 2; $a + $b; ]}";
print "${\do{ $a = 1; $b = 2; $a + $b; }}";
なんでrubyってローカル変数が無いの?
>>373 > 知識もないのに評価するってのがどれだけ痛いことなのか良く分かるな。
すまんorz。
> Perlの@{[]}の中には式しかかけないので;を書いたら構文エラーになるのは当たり前。
> 文を書きたいならdo{}を入れればよい。
なるほど。thnx。
あまりしっくりくる書き方には思えないが、できることは分かった。
でも行番号がずれてるってのは??
>またあまり推奨はされませんが -K オプションを指定すれば日本語文字の識別子も使用でき、それはローカル変数とみなされます。
これには賛同しかねるな。
むしろ積極的に日本語の識別子でソースを汚染させるべきだと思うがいかがか?
なんか無記名関数を
->(x) { ... }
とか
\\(x) { ... }
などで表そうと言ってるのだが。
なんでクラスやメソッドを定義するときは class 〜 とか def 〜 とか読める単語で書くのに
関数のときだけ変な記号なんだ?
lambda だと文字数が多いからと書かれてたような?
適切で type 数の少ない単語があるなら blog に特攻したら?
こういう時は、lambdaでも、->でも
functionでも、subでも、defでも何でもokにしてしまうのがperl
メソッドが def なんだから lam でいいじゃん
打ちやすいし。
関数だから kan だな…
いや、 fun だろう。
やっぱλだな。
385 :
デフォルトの名無しさん:2005/07/24(日) 23:03:23
>lambdaはわりと広く使われていますからねえ。
>予約語を増やすのはローカル変数とぶつかったときに悲しいので、最後の手段にしたいです。
>lambdaでなくてfuncとかなら名前としてはそんなにダメじゃないと思うんですけどねえ。
ローカル変数もだけど、組み込み関数がすでにあることのほうが問題じゃねえ?
でもfuncは俺がローカル変数として結構使うからやめてくれw
もうsubしか残ってないぜ
{ x, y -> ... }
\{ |x, y| ... }
{ x, y -> ... }はyaccで扱えない。正確には相当がんばれば扱えそうだけど、
多分ほとんど自力で状態管理することになるのでyaccを使う意味がなくなる。
\{ |x, y| ... }は引数のデフォルト値として"|"を含む式が書けないという
根本的な問題が解決されていない。
>予約語を増やすのはローカル変数とぶつかったときに悲しいので、最後の手段にしたい
というのは理解できるが、関数はかなり重要な部分だから
予約語を増やしてでもソースの見通しを良くした方がいいんじゃね?
ブロックが {...} じゃなくて begin...end な時点で rubyの方向性は決まってるんだし。
proc = lambda(x) { ... }
この例ならキーワード使ったほうが見通しいいかもしれないが
ary.each lambda(x) do
...
end
これだとかえって見通しが悪くなってるからなあ。
メソッド名でも変数名でもないことをアピールするために
予約語じゃないほうがいいような気がする。
とはいえ->とか下手な記号列で記号だらけにすると、PerlやHaskellのように、
素人には推測不可能で検索もしにくい言語になっちゃうんだよな
矢印(->)じゃなくて三角(|>)はどうかな。
ちょっとΛっぽくね?
なんだか変な方向に進んできたなあ
ラル大尉最強
うち、λっちゃ。
フイタ
λこりゃ
λ無駄無駄無駄無駄無駄無駄無駄無駄!
コレハツマンネ
399 :
デフォルトの名無しさん:2005/07/26(火) 00:02:25
大本営落ちてます?つながんないや…
Ruby は Perl と違ってそういう「変な記号」を好まない方向で来たんだから
無理せず英字でいいと思うけどなぁ
もうすでにぐっちゃぐっちゃだから、
どうでもいいと思うな。
体は慣れるよ。
変にこねなくてもlambdaでいいと思う。見た目に区別がつきにくいなんていってるけど、今時はシンタックスカラーリングがあたりまえだから関係ないだろ。
それにしばらくみてればifやforみたいに浮かんで見えるようになるって。
403 :
デフォルトの名無しさん:2005/07/26(火) 00:36:32
いろんな部分Perlからパクってんじゃねーかよ。
Perlからの転向ユーザ狙おうとかきたねーこと考えずにもっと思想に忠実に作ればよかったんだよ。
なにがPerlより優れているだよ。
そのむき出しの対抗心どうにかしろよ。
キモいんだよ狂信者が
そうだそうだ。避妊しろよ。
>>376 解析器の仕様じゃない?Perlに限らず他の言語でも場合によってはトンデモな所を指してエラーが出たりするし
406 :
387:2005/07/26(火) 01:30:33
>>388 >yaccで扱えない。……yaccを使う意味がなくなる。
たしかに、これを書けるようにすると、かなり先(->)まで読まないと
確定出来ないか。
>デフォルト値として"|"を含む式が書けない…
この問題を知らなかった。"|"は括弧と違って対になってないから
そういう問題が起こるのかな?
ツッコミありがとう。
# \{ x,y -> ... }とかも考えてみたけど、パーサ内のモードが増えそうな予感。
話の流れからすると -> と sub を使えってことだな。
Perl6的に。
>>403 Ruby って Perl っぽい Smalltalk じゃないの?
でも、Perlよりいいんだね。
Rubyが言語の綺麗さ以外でPerlに勝ってる点があるとは思わなかったよ。
For every complex problem, there is a solution that is simple, neat, *and wrong*.
ああ、それ気のせい。
よく見たら全部負けてるから
>>408 面白いね、それ。でもmissingは0点扱いか。
Pythonってほとんど実装してるわりに…(^^;
413 :
デフォルトの名無しさん:2005/07/26(火) 11:19:25
rubyはユーザーとコミュニティが腐ってるから糞、という人がいる。
そこでユーザーとコミュニティを取り除いてみたとする。
やっぱり糞だ。
このスレではすでにお馴染みRuby叩き
速いに越したことはないけれど、はやけりゃいいってもんでもないんだよな。
スクリプト言語的には。
速いに越したことはないけれど、はやけりゃいいってもんでもないんだよな。
スクリプト言語的には。
速いに越したことはないけれど、はやけりゃいいってもんでもないんだよな。
スクリプト言語的には。
速くても使いにくいのでは魅力減
使いやすさは人によって違うのであまり突っ込んで討論しても無駄
速さも目的によって大きく左右されるので同
でも、別にrubyが使いやすいというわけでもない罠。
速く書けるのがいい。 コーディングの時間的にも、チューニングの余地的にも
速く書けるのがいい。 コーディングの時間的にも、チューニングの余地的にも
「俺はRubyが使いやすい」
それで十分だろ
「俺はRubyが使いやすい」
それで十分だろ
ヤッホー
ヤッホー
>>425 なのにるび厨は変に理由つけたがるからなー
で、他言語貶して批判を買う。
性能ほかいろいろ責められるのは自業自得。
モルモンの教えですから。
>>428 「変に理由つけたがる。他言語貶して批判を買う」
から「るび厨」なのであって、因果関係が逆じゃない?
まぁ、そんなやつは少数だと思うけど。
rb_class_new_instanceの引数なんですがどんな感じで生成したらいいですか?
VALUE argv[1];
argv[0] = rb_str_new2("hoge");
rb_class_new_instance(1, argv, klass);
みたいにやってOK?
OK
NG
>>431 ext/**/*.cでrb_class_new_instanceをgrepしてみればすぐ分かるだろ。
>>434 スマソ。探したつもりが見落としていた…orz
わかりました
自分でGCしないとSegmentation faultするコードが出来ちゃった…il||li ○| ̄|_
rb_gc()すれば問題なく動くみたいなのでRuby側の問題だと思うんだけどたびたびrb_gc()呼ぶのは遅くなるような…
CからRubyを使っていて手動でGCしないとまずい事態って起こりうるものなの?
検証用のソースはあるんだけどちょっとでかい…
markし忘れとかdouble freeとかなんかそういうバグじゃないの?
>>437 グローバルで使っているVALUEをmarkしてみたけどあまり変わらなかった…
根本的に何か間違っているのだろうか…
ちょっとでかいけど検証したソースです
>test.rb
class A
def initialize(str)
@str = str
end
def read
@str
end
end
class B
def func1(x)
p x.read[0,2]
end
end
>test.cpp
#include <windows.h>
#include <stdio.h>
#include "ruby.h"
VALUE obj1;
void ruby_load()
{
HANDLE hFile = CreateFile("test.rb", GENERIC_READ, 0, 0, OPEN_EXISTING, 0, NULL);
DWORD file_size = GetFileSize(hFile, NULL);
DWORD lpNumberOfBytesRead;
char *scr;
scr = (char *)calloc(file_size + 1, sizeof(char));
ReadFile(hFile, scr, file_size, &lpNumberOfBytesRead, NULL);
CloseHandle(hFile);
ruby_init();
ruby_init_loadpath();
rb_eval_string((const char *)scr);
VALUE klass = rb_path2class("B");
obj1 = rb_class_new_instance(0, 0, klass);
rb_gc_mark(obj1);
free(scr);
return;
}
void func_call()
{
char *data;
int size = 7000000;
data = (char *)calloc(size, sizeof(char));
if(data == NULL){printf("no memory\n");return;}
VALUE klass = rb_path2class("A");
VALUE argv[1];
argv[0] = rb_str_new(data, size);
VALUE obj2 = rb_class_new_instance(1, argv, klass);
rb_funcall(obj1, rb_intern("func1"), 1, obj2);
free(data);
// rb_gc();
return;
}
int main()
{
ruby_load();
func_call();
func_call();
func_call();
func_call();
func_call();
return 0;
}
rb_gc()をコメントアウトした状態だとfunc_callを4回呼んだくらいでSegmentation faultしてしまう。rb_gc()を
コメントアウトしなければ10回呼んでも問題ないみたいです
なんでrb_gc_markなんか呼んでるんだよ。という辺りの勘違いが原因じゃないかな。
ツッコミどころてんこもりだな。
-rb_gc_mark(obj1);
+rb_global_variable(&obj1);
としたらrb_gc呼ばなくても動くようになった…
けど、
>>442ツッこんでくれると嬉しい…il||li ○| ̄|_
礼も言わずに要求だけは一人前。
形式だけの礼などいらんから(形式的に自虐的に見せる「il||li ○| ̄|_」もいらん)
「初心者がハマりやすい罠」みたいな文章にまとめてくれる方がうれしい。
> 「初心者がハマりやすい罠」
ドキュメントをまともに読まない
ドキュメントをまともに読まないと使えない言語。
略して、ドキュンな言語。
450 :
デフォルトの名無しさん:2005/07/29(金) 08:49:07
結論:スクリプト言語なのに初心者が普通にセグメント違反起せるRubyは糞言語。
拡張ライブラリの話だから、RubyじゃなくてCだ。
そういうマジレス大好きです
拡張ライブラリじゃなくて、Ruby組み込みアプリの話だ。
どっちにしろCではあるが。
454 :
デフォルトの名無しさん:2005/07/29(金) 12:21:37
そんな理由なんてなくてもRubyは糞言語なのは使ってる人を見れば分かります
>>450=454
反論されたらいきなり「そんな理由なんてなくても」かよ。
煽るなら煽るで、もうちょっと頭使えよな。
Rubyってなんで変数とメソッドが同じ書式なの?
変数の前に$が無いと、区別がつかなくなるんじゃないの?
ヒント:品詞
先頭にドットが付くのがメソッド、付かないのが変数
普通は文法的に区別が付くだろうし、変数名やメソッド名を工夫すれば良いだけだろ。
というか、なぜ Ruby を名指し?
記号で区別している言語の方が少なくないか?
>記号で区別している言語の方が少なくないか?
数の多少はともかくC/C++系のメソッド呼び出しのfoo()に慣れてるんだろ。
>>456 PerlやPHPはスクリプト言語だから、その場で書いてすぐテストする開発スタイル。
だから、いちいち変数名を工夫しなくてもいい仕様になっている。
Rubyはそれとは違って
最初に変数の名前を厳密に計画してからプログラムしていく開発スタイル。
うっかり名前が重なると変数のスコープも変わってしまう。
つまり、頭に$を付ける言語とRubyとは、想定している開発スタイルが違うんだ。
だからRubyのスタイルに慣れると気にならなくなるよ。
変数名とメソッド名が分からなくなるという状況が分からない。
適当に書いてたってまず重ならんし、他人の書いたソースを
読むときでもメソッドか変数か意識しないと処理の流れが
分からないなんて事はまずないし。
要するに変数に型がなくて、データに型があるというRubyの
特長によるものなんだとおもうけど、おれはこれはRubyの
長所だと思ってる。
463 :
デフォルトの名無しさん:2005/07/29(金) 23:57:11
UNIT GenieList;
INTERFACE
USES
SANE, DialogUtils, GFiles, GCommonDec;
PROCEDURE MAIN (lMessage: INTEGER;
lSelect: BOOLEAN;
lRect: Rect;
lCell: Cell;
lDataOffset, lDataLen: INTEGER;
lHandle: ListHandle);
IMPLEMENTATION
PROCEDURE MAIN (lMessage: INTEGER;
lSelect: BOOLEAN;
lRect: Rect;
lCell: Cell;
lDataOffset, lDataLen: INTE
これ何言語かわかりますか?
Ruby=朝日
多分Pascalだろうな。ってか、何でここで聞くかなぁ。
アカヒは敵。
本当はモルモンも敵。
しかし言語には別に罪はない。
そういえば、オウムもmatzだな。
468 :
デフォルトの名無しさん:2005/07/30(土) 08:17:08
>>461 なるほど。パッと書いてパッと実行できるスクリプト言語の良さをあえて無くし、
最初からいちいち変数の名前を厳密に計画してからプログラムしていかなければならないように工夫した言語なわけですね。
さすがRuby、ますます好きになりました。
>>468 少しでも頭を使うことを「計画」というのなら、
そうでしょうね。
470 :
デフォルトの名無しさん:2005/07/30(土) 14:06:09
普段は威勢のいい事言っていてもふたを開けると
こんなレベルだからRuby使いは馬鹿にされるんだよ。
(470..471).delete!
信者が必死だなw
ここ十数レスは、アンチ比率が高い(7割以上?)んだが。
必死に流そうとする信者と、つい反応してしまう信者。
どっちもがんばれ。
>>475 UNIT, INTERFACE, IMPLEMENTATION ときたらTurbo Pascalに決まってるだろ。
決まってはないだろ。
それだけを取り上げるなら、ObjectPascal(Delphi)もそうだ。
先頭行にrequire "PasEmu"して無理やりRubyで動かせないかな
480 :
デフォルトの名無しさん:2005/07/31(日) 08:29:30
rubyにpythonでいうジェネレータみたいなのってある?
>>480 残念ながらない。2.0あたりで追加されないかな。
VALUE hoge(VALUE val1, VALUE val2)
{
return val1;
}
int main()
{
rb_define_global_function("func", hoge, 2)
return 0;
}
ってな感じで書くと。VALUE (*)(long unsigned int, long unsigned int)はVALUE (*)(...)に変換できないって
怒られるんだけどどうしたら良いですか?
ext/下の拡張のソースを見ても同じように使われている感じで原因がよくわかりません
よくわからないならエラーメッセージくらいはそのまま書こうな。
484 :
482:2005/07/31(日) 18:28:09
>>483 すみません
test.cpp: In function `int main()':
test.cpp:7: invalid conversion from `VALUE (*)(long unsigned int, long <rb_define_global_functionがある行
unsigned int)' to `VALUE (*)(...)'
ってなエラーが出ます
> VALUE hoge(VALUE val1, VALUE val2)
ここ、引数の数一個足りなくないですかね。
エラーとは関係なさそだけど。
C++かいな。
単にキャストすれば通る。
489 :
482:2005/08/01(月) 19:01:51
>>485 rb_define_global_functionの第3引数は渡す関数の引数の数らしいので2個で良いと思いったのですが…
>>486 関数のキャスト書き方がわからないのですがどう書いたらいいですか?
知り合いに聞いたら出来ないって言われた…orz
Cで書けば。
そのまま、
typedef VALUE RubyFuncType(...);
rb_define_global_function( "func", (RubyFuncType*)hoge, 2 );
とかやれば?
492 :
482:2005/08/01(月) 19:41:29
493 :
485:2005/08/01(月) 20:21:50
>>489 rubyスクリプトでの引数が2個なら、Cでは
VALUE hoge(VALUE self, VALUE val1, VALUE val2)みたいに
3つ引数がついたんじゃなかったかな。つまり、一個多くなるってことで。
最近拡張ライプラリの勉強始めたばっかりなので
適当言ってるかもしれん。
494 :
482:2005/08/01(月) 20:35:18
あ、書き忘れ…orz
>>493 その通りです。よくよくソースを確認したらそうなっていました
>>491 そういうtypedefってできたっけ?
つーかRUBY_METHOD_FUNC使えや。
>>488 いや、文法要素としてのジェネレータが欲しいのかと思ったので。
というのは嘘で、忘れてた。
[ruby-list:40974]
触るなって
RAA死んでない?困るな
そういえば、今回がどうなのかはわからないけど、
先日止まってたときは、調査のために止めてたそうだけど、
事前/停止中のアナウンス無しで止めてしまうってのは正直どうかと思う。
おれにとって
もうRubyは影舞だけのために存在してるよ
もう Trac でいいじゃない
Tracダウンロードできねーでやんすよ
うあ、なんか日本語版ぽいの見つけたけど
SQLiteとか色々必要だとかでインスコメンドクサス
しかしpython周辺は楽しそうだなあ・・
もうRubyなんか見放して楽になろうぜ
>>505 もう素直にRubyを使って楽になろうぜ
ruby-list はマナー論をやらないのがえらいなぁ。
自然消滅はしなそうだなー。
引き続き、固まり連続メールがくるだろう。
>>508 いや、じきに消えるだろ。
そんなに根気があるようには見えない。
2ちゃんかっつーの
>>510 その表、レベルの高いとこ、スキルと関係ないことを求めてる気がするが
コミュニティへのContributionとか、別にやりたい人がやればって感じだよな。
>>510 8から急に一般性を失っていってる気がするな。
7くらいはプログラマとしては当然なレベルだし、表としてあまり面白くない。
そんでもって、Lv.4 までは無意味な気がした。
>512
^..^
あとrubyはレベル7の敷居がperlに比べて低いからな。偏見?
evalごときがレベル9かよ。
レベル8くらいじゃエバれないってことですね。
DBI使えたくらいじゃねぇ・・・
漏れ、レベル10余裕で達成したんだけど。
レベル6じゃ「無能」もいいところだな。
>>521 是非 naoya さんのお友達になってあげてください。
画像をいじるライブラリでお勧めがあったら教えて下さい
入力:JEPG、GIF、PNG
出力:PNG、(GIF)
加工:拡大縮小、減色をそれなりの品質で行える
みたいな感じのを探しています
でかい画像を携帯向けに縮小するようなCGIを組むのに使おうと思っています
netpbm
を IO.popen なんかで使え。
ruby-python + PIL
>>525 JPEG、PNGは扱えない…?
>>526 以前にMinGW環境でruby-pythlonビルドしようとして撃沈した記憶が…・il||li ○| ̄|_
Cygwin上で-no-cygwin付けてpythenビルドしようとしたらエラーったような
もう一度やってみる
GDを扱う拡張ライブラリがあったね。
>>524 RMagickはいかがですか?
webカメラの画像を携帯電話向けに縮小するCGIに使ってます。
結局誰も Ruby版は作らんかったのか。ならワシが作ってやろう。
レベル1:
Perl とは違うけれども近いものらしいとは知っている。
Python は名前だけ聞いたことがある。
レベル2:
関数型メソッドだけでスクリプトを書ける。
まだ文末にいちいちセミコロンを付けてしまう。
レベル3:
組み込みクラスを使って、インスタンスを生成したりメソッドを呼べたり出来る。
まだ main メソッドを作ってしまう。
レベル4:
標準添付のライブラリをいろいろ使えるようになる。
変数が参照に過ぎないことをようやくきちんと理解する。
レベル5:
いくつか簡単なクラスを作れるようになる。
イテレータを活用出来る。
レベル6:
名前空間を意識するようになり、自作のクラスをモジュールに入れ整理したりする。
標準添付以外のライブラリも試してみる。
レベル7:
特異メソッドや例外処理も活用できるようになる。
定数参照の優先順位に悩む。
レベル8:
自作のクラスに each メソッドを用意して、include Enumrable をやってみて楽しむ。
Object#__send__ を使う機会が増える。
レベル9:
eval でメソッドを動的に追加したり出来る。
$SAFE の設定に気を使う。
レベル10:
単なる eval の代わりに module_eval と instance_eval を使い分けるようになる。
Thread を使ってみる。
いかん、レベルを細かく分けすぎたな。
この分だと、ライブラリを作れる人がレベル 20くらいで、Cで作れる人が 30くらい、
Cでデバッグできる人が 40くらいかな。ワシは 28くらい。
なんか順序がイマイチな気がする。
Perl や C を知らなきゃレベル2まで不要だし。
適当な Ruby 本買ってくれば、レベル5から始まると思う。
俺は、慣れたらすぐ Thread や例外も使ってた記憶あるしなぁ。
Ruby の場合、名前空間を意識してる人少なそう……
>>532 どうも、ありがとう。
確かにイマイチかも。
ワシは逆に、Threadは今でも使っていないくらいです。
なにをしたいかで順序なんて大幅に変わるし
せっかく書いてくれたのに水を差して悪いが、「xxxプログラマのレベル10」の
ポイントは、「xxx 界の有名人・権威みたいな人が書く」ところにあると思う。
どうせ誰がレベル分けしたって異存が出まくるに決まってる(特に高いレベルは)。
書いた人が何者か分からないと、意見の違いが不毛な論争になりがちで
せいぜい「そんな考え方の人もいる」と分かるだけ。
書いた人の普段のコーディングスタイル・開発スタイル・ポリシーなどが
表に出てると「あの人ならそうレベル分けするよね」みたいに納得できる、
あるいは「あの人はこういう考え方なのか」という知見が得られる。
まぁ堅いこというなよ。
とりあえずこのスレでのポリシーってことでどうよ?
レベル1:
[BUG]の文字列を見ると燃える。
GC絡みだとうざいだけで原因はしょうもなかったりするけどなあ。
レベル2:
GCに執念を燃やす。
レベル3:
commit 回数が matz を上回る。
もうその時点で、世の中に一人しかいなくなるじゃん。
レベル4:
forkしてxrbというディストリビューションを(ry
レベルが急降下したな。
リファラが Ruby hotlinks だと表示できないことに気付いた<MW
ほんとだ。いつもnoreferer経由だったから気づかなかった。
フリーのとこに置いてトラバでもしてみたら。
_why のギター侍の録画って無いのかな?
BasicSocket::do_not_reverse_lookup はデフォルト true にして欲しい。
俺の場合、デフォルト true だったせいでハマったことはあっても、
デフォルト false で良かったと思ったためしがないんだけど、
みなさんはいかが?
>>549 それってどちらにしてもダメだったってこと?w
何の話かと思ったら、[ruby-dev:26817] 絡みかな?
俺は別にデフォルト true でいいと思うんだが。
>>550 ああ、スマン、間違った。けど文脈でわかるだろ。
プロクシチェッカを作りたいんですが、何か良い方法があったら教えて下さい
串経由で適当なHTMLを読み込んで読み込めない or タイムアウトなら串じゃないと判定するようなのを考えたんだけど
妙にタイムアウトに時間がかかる…orz
ports = [80, 3128, 443, 8080]
r_addr=調べるIPアドレス
ports.each{|port|
http = Net::HTTP.start('www.hoge.com', r_addr, port)
http.open_timeout = 1
http.read_timeout = 1
〜if http.get('index.html').body == check_data <実際にはbegin〜rescueでエラーをフック
}
ってな感じのコードだが終了するまで1分以上も掛かる…1秒でタイムアウトなら遅くとも8秒以内には終了しないと
おかしいはずなのだが…Rubyはruby 1.8.2 (2004-12-25) [i386-mingw32]です。
Net::HTTP.start で時間がかかってるだけだったりして。
ruby -rprofile ってこゆときに使えないの?
>>554 thx
そこに書いてあるとおりWinなのが原因のようです…
Winで運用するわけではないし開発時はあきらめるしかないのか…orz
>>557 Linux機を用意するか、Windows上でcoLinuxを使ってみては?
Windows XP+coLinux+Debianという環境で開発できてますよ。
サーバとクライアントを1台のPCで賄えて便利です。
こう、何か勘違いしてるようなとこに「さんせんとかがや」いてもなぁ。
と思うのはオレだけ?
>>553 ちょっと違うが、以前似たような問題(*1)に遭遇した時の解決方法を書いとく。
※念のため言っとくと、マルチスレッドなOSじゃないと使えない方法。
forkして、子供側でマッチを行う。完了したら終了ステータスでマッチに成功したかだけを返すようにする。
で、親側は子供の終了をn秒待って、それまでに終了しなかったら、子供をkillして「マッチ失敗」を返す。
n秒以内に帰ってきたら終了ステータスを元に結果を返す。
(*1)複雑な正規表現に文字列がマッチするかだけをチェックする処理で、たまにマッチが終わらなかった。
※正規表現のマッチ中はrubyのスレッドが切り替わらないのでtimeoutが使えない。
>>561 マルチスレッドじゃなくてマルチプロセスだろ。
いまどきマルチプロセスじゃない OS ってあるんかいな?
DOSは今でもあるぞ
ああ、忘れてた。 Ruby を DOS で使ってる奴いるのかな?
いないだろうなあ
RubyでDOSを書いた奴の方が多そうだ。
568 :
561:2005/08/23(火) 22:21:42
Ruby Gem で、拡張ライブラリをインストールする時、
どうやって extconf.rb に引数を渡すのか誰か教えてくれ。
インストールしたいのは、mysql で、
# gem install mysql
Attempting local installation of 'mysql'
[SNIP]
Building native extensions. This could take a while...
ERROR: While executing gem ... (RuntimeError)
ERROR: Failed to build gem native extension.
Gem files will remain installed in /path/to/gems/mysql-2.6 for inspection.
ruby extconf.rb install mysql\nchecking for mysql_query() in -lmysqlclient... no
# gem install mysql --with-mysql-dir=/usr/lib/mysql
ERROR: While executing gem ... (OptionParser::InvalidOption)
invalid option: --with-mysql-dir=/usr/lib/mysql
# gem install mysql -- --with-mysql-dir=/usr/lib/mysql
Attempting local installation of 'mysql'
[SNIP]
Building native extensions. This could take a while...
ERROR: While executing gem ... (RuntimeError)
ERROR: Failed to build gem native extension.
Gem files will remain installed in /path/to/gems/mysql-2.6 for inspection.
ruby extconf.rb install mysql -- --with-mysql-dir=/usr/lib/mysql\nchecking for mysql_query() in -lmysqlclient... no
となるんだけど。
>>569 誰か教えてたもれ〜。 ・・・ Gems は止めとくかな。
気の短いやつだな。
今日はもう眠いから明日調べるよ。
直接渡す方法はないような気がする。
configure_args=--with-mysql-dir=... gem install mysql
かねぇ。
すまん、環境変数名は大文字で。
お、ありがと。
結局 mysql は Gems 以外で入れたけれども、今度そんなときがあったら試してみるよ。
どれが環境変数を読んでいるのかも、調べてみるわ(mkmf.rb ?)。
>>574 mkmf.rbの頭の方の
unless defined? $configure_argsのブロック。
LLDN二つ目終わり。
寝坊していきそこねた。無念。
579 :
デフォルトの名無しさん:2005/08/27(土) 19:03:06
LLDNどうだった?
sfがすごかった。rubyもSqueakも霞みまくり。
花園神社は40人ぐらい集まったので神主に追い出されたとか。
[ruby-dev:26894]ってことはRubyのバージョンは9.9.9で打ち止めなのね。
アポトーシスみたい。
どこら辺が?
sfって何?
発表者一覧(言語名のアルファベット順)
見ても分からん。
発表者の所属でぐぐればわかるよ。
……まあ、すくなくとも、公開している場所は見つかる。
らしい。
ま、内輪ごっこで優越感に浸ってるオコサマ連中のやることだから、
そっとしといてやんな。
>>580 禿同。あんなダメダメなプレゼン、生まれて始めて見たよ。
ていうか規定/自由の解説は全然しないし。オナニー言語は放っとけ。
なんでrubyは
array.each
{|item|
}
とは書けないのですか?
array.each{|item|
}
だとブロックの対応が分かりにくいように感じるのですが?
>>589 >array.each
>{|item|
>
>}
array.each{
|item|
...
}
と、書く事はできるんだけど、 それじゃだめなのか?
>ブロックの対応が分かりにくいように感じるのですが?
君のインデント次第じゃないかな。
>>592 どこにでもイタい人はいる、と思った。
ま、あんまり人のことは言えんけどな。
>>589 array.each で改行しちゃうと、arrayのeachメソッドを引数なしで
呼んでいる、という解釈になってそのあとの{...}が解釈できなく
なってエラーになるのかな。
array.each \
{
#
}
ならイケルね。
some_obj.method # 何かのメソッド呼び出し
{
} # 空のハッシュ
と、区別がつかないからかな。
理由はあるのだろうけど、ださいね。
RAA の Category に Library/Acme きぼんぬ。
Application/JOKE なら昔からあるんだけどね。
マイナーカテゴリは自由に作れるので自分で何か登録してくれ。
やっぱRuby遅すぎ
だめだわぁ
CPUの進化が遅すぎるんだよ
誰か影舞を速い言語に移植してくれ。
遅くてかなわん。
前から気になっていたんだがAcmeって何の略?
>602
じゃObjective-Cでよろしい?
……ゴメンナサイウソデツGNU Objective-Cナンテカケラモシリマセンorz
>603
何でも語呂合わせで「A Company that Makes Everything」
の頭字語でもあるらしいが……
2ch風に云えばVIPみたいな意味なのかと勝手に介錯してみるテスト。
「なんでもやる課」みたいなもん課?
>>602 mod_ruby と PostgreSQL で使ってるけど、
これだと 1000 件くらいバグ登録してもそんなに遅くないよ。
知らなかったんだが
ruby -ve 'p $LOADED_FEATURES'
ruby 1.9.0 (2005-08-26) [i686-linux]
["enumerator.so"]
と、1.9 に enumerator が組み込まれてる。しかも、Enumerableの一部のメソッドはブロックなしで、このオブジェクトを返してる。
p [1,2,3].each_with_index
#<Enumerable::Enumerator:0xb7f079bc>
p [1,2,3].each_with_index.to_a
[[1, 0], [2, 1], [3, 2]]
しかし、reject とかがそうなる必要ってあるの?使いどころがわからない
p (1..7).reject
#<Enumerable::Enumerator:0xb7f0ea0c>
Array#reject は今までどおりなのも?
p [1,2,3].reject
-:1:in `reject': no block given (LocalJumpError)
from -:1
Thu Jul 15 00:11:36 2005 Nobuyoshi Nakada <
[email protected]>
* enum.c (enumeratorize): create new enumerator for current method if
no block is given.
* enumerator.c: moved from ext/enumerator.
>>608 > しかし、reject とかがそうなる必要ってあるの?使いどころがわからない
$ ruby -e 'p (1..7).reject.with_index {|x,i|i==3}'
[1, 2, 3, 5, 6, 7]
> Array#reject は今までどおりなのも?
Enumerableなメソッドって結構各クラスで再定義されてるのも多いから、
まだそこまで直してないだけ。
>603
お笑いパソコン日誌 2002年6月 2002/6/5 AM 4:36
http://www.interq.or.jp/silver/chic/nikki88.html >Rube Goldberg や Heath Robinson が好んで注文するような、妙ちくりんで精巧で非実用的な発明品
>を提供する標準ブランド。何らかの X を、"Acme X" と表現すると、X が「異常にすごい(insanely
>great)」という意味か、より一般的には「話の上では異常にすごそうだが、実際に使うとまず間違い
>なくひどい目に遭う」という意味になる。pistol と比較せよ。
Kernel#sendをprotected/privateメソッドを呼べるのと呼べないのに分けよう。
という話になってる。
ありがと。
じゃ、それって、咳さんが言ってたのと同じだよね。
僕も賛成 += 1
1.9最新だとすでに send(...) と recv.send(...) を分けるようになってる。
$ ruby -e 'class X;private; def x;end;end; X.new.send(:x)'
-e:1:in `send': private method `x' called for #<X:0x40343430> (NoMethodError)
from -e:1
$ ruby -e 'class X;private; def x;1;end;end; p X.new.instance_eval{send(:x)}'
1
つまり、オブジェクトの中から呼び出すと、private も呼べるけど、
外からだと呼べないってこと?
確かに良い案かも。
初心者質問スレが次スレたつ前に終わってしまった件について。
いらないってことじゃないかな。
分ける意味も無くなってる気がするし統合で良いと思う。
>>610 なかださんが直したね。いつも迅速な対応、恐れ入ります。
んでこれも単にpendingな話かもしれないんだけど、なぜに
せっかくext/から移動して来たEnumeratorは組込みじゃないんだ
ろう。やっぱりまだってだけでしょか。
組み込みだけど?
>>621 ああ、読み違えてた。なんで$"に.so入ってるんだ、って意味で言ったんだけど
> /* for backward compatibility */
なのね。失礼しました m(_ _)m
624 :
619:2005/09/02(金) 14:35:50
スルーかよ・・・orz
こんな下がってると見つけられないんだろう
初心者だからw
RD->tex への変換って直接はできないの??
昔できるってどっかで読んだ覚えがあったのに、
それに関するページがまるでみつからん。
っていうか、RD の本家?(Just Another RD Site)のページの更新が
3年とまってるのもえらいきになる。
オープンソースの利点は
どのプロジェクトにもあらゆる人が流入してきて活発に開発が進み
仮に停滞・放置されたプロジェクトでも誰かが引き継いで再開されることにある。
ということを考えるとRubyは実はオープンソースじゃないのではないか
という仮説を立ててみたが、いかがだろうか。
いつのデータだよ
>>629 Rite (ruby2.0) で VM 化される予定。
その候補として YARV がある。
現在の YARV でも、
shootout にあるような数値計算系のプログラムは
ruby1.8.2 比で 2-10 倍くらい速くなっているよ。
Ruby2.0っていつリリースされる予定?
>>631 ずいぶん変わってると思うが。
そもそも、
>>629 のリンク先に各言語のソースもあるんだから自分でやってみりゃいいじゃん。
自分で実行もせずに、何でと聞くのは愚かしいよ。
「何で」 というのは処理系の実装を知らないと分らないでしょ。
「何でと聞く」というのは処理を実行し(たこと)ない奴には関係ないでしょ?
何のために答えを求めてるのかわからない聞き方をするのがアッパラパーなんですよ。
>>634 しょうもない話だけど、Ruby2.0 というのは、Ruby の(次世代の)仕様のことで、
その実装は Rite という名前。その実装の方がいつリリースか、って話でしょ?
まあ、仕様と実装はほぼ一緒に出来るだろうから、別にいいんだけどね。
で、リリースされる予定は決まっていない(決めていないはず)。
Matz は確か、ここ2〜3年、毎年始めに「今年こそは実装を始めよう」と言っているけど、
今年も無理だろうから、「数年先」くらいのスパンなんじゃないかな。
君が1冊を1万冊分の値段で買ってくれるのなら、
今年中に出版されるんじゃないのかな。
何の話かよくわからんが、そういうのは出版と言わず特注という。
require って、やればやる程スクリプトの動作速度って遅くなるもんなんだろうか?
requireしたファイルの中味の分量や、処理の内容などに寄るのだろうか。
正直今のままでも十分便利なんで、変な記号やら構文追加するより
高速化してほしい。回りに中規模以上の Ruby アプリが増えてきた
こともあって余計そう感じる。
おれもそう思う。
目標はバイトコードをVMで動かしつつJITとか。
>>638 Ruby2.0が仕様というのは言語仕様って事?C99とかみたいな。
で、RiteがそのMatz氏版処理系。gccとかみたいな。
YARVはそのRiteに取り込まれる可能性があるって事かな。
requireしたコードを評価する分はもちろん時間を食う。
起動してしまえば後は関係ない。
Railsやってる香具師なら、FastCGIありとなしで露骨に反応が
変わるのを知っていると思う。(Railsはrequireしまくる)
メモリ消費して仮想メモリのスワップ多発するほどコード量が
膨大ならまた別だが、それはコードサイズの問題であってrequire
のせいではない。
VMで動かすとか聞くとJavaみたいにメモリ大食らいになりそうで心配だ
は?
>>642 作者が「速度を求める用途には向かない」って
最初から逝ってるジャン。
道具の使い方を間違えると期待した効果が
得られないのは当たり前のことだよ。
その作者はバカだな
,, -‐''''''''''‐- 、
,ィ´: : : : : : : : ノ、:\
../:::: : : : : : :;' ツ ゙i: :i,
|::::: : ; ''' ´ l: :l /  ̄/ _/_ ─┼─ /
l i ,. --、__, -- 、 l ノ. / /| / / ゝ /
`>l‐'、:::::ノ l、::::::ノ〈i /___| / | / / ヽ_ /⌒ヽ_ノ
{ j ' ' /
l -‐ー‐- l
l ` /
`'‐-ー--'
-‐─ -、
/ /゙;. /ヽ ヽ
l V / ノ .i
ヽ- '"ヽ,,,..
,− ''''--, ;-; ._ ;-;_ ,-------,,---, , -、
、= ,..x.., =,‐ ‐// // / 二二 // / ;`' = ヽ
'二二 ̄コ/.//,/ /i l,‐、___ ;=======./ ;ノ`' '=゙
/~。~// / < ',/"'~l゙l`ソ;_゙; ;'゙/ 二二' // /./_ ゚ ゚_/
, '==',/ /,''゙,., l,-'"/,゙; o ;‐/ ─‐ .// ;v, '゙,.-、ヽ
/. -─-、,/.'゙゙ "‐'".`" '‐‐' '─── ' '‐' '"゙ v'
,i┐ i┐ : i.., i┐ .__、 ...,,. ._、 ,, 、
,i--バ--、 .i 、:|│ .,r'"´\ .__|::{,,,.,、 / .¨''| .,、| .:!..,,. ! ,!:| |│
,!.iーi ./'j ;! :| | |:.゙‐''i /.,i'L,!゙.l l :|,,, .,,/ヾ>.l,iュ:|,゙| |.| | ! ! .,,゙、 .i-"."'" .,゙}
,!.凵; 凵│ .}.!.|; |''''" .! ! ,!.| .! ! ../ `´゙゙リ !,,、_,}.|.| | .! '"_,,, ゙l, .シッ /'コ !
|_,i-,i-i_,| ! !.|; ! ! |,// ./ l /,iil:|: . ! | / l,! !.! ! !..ノ゛ l: } .| :!:|,,ノ
|; ! i バ ! =....、 .l、/.i'"./ : |:゙!゙.,[`'"/ ./ ,i'i,,l `゙ ,! i--‐゙./ .l "''''''''!
∪ ―――ー″ ″ "" .゙ー'゙ `''" .∨ !''!゙‐' .―‐'゛ .`'ー¬'′
Module#append_features(mod)とModule#included(mod)について質問です。
module Foo
def append_features(mod)
super(mod)
... 何かの処理 ...
end
end
と
module Foo
def included(mod)
... 何かの処理 ...
end
end
との違いって、何かありますか?
Foo#included(mod)を使っていたのですが、これは1.8からの機能であって、1.6では動かないそうです。
なので、もし上の2つの例が同じことであれば、append_features(mod)のほうを使おうと思っています。
MW復活の悪寒
空のモジュールを定義すると、インスタンスメソッドがまったくありません。
module Mod
end
p Mod.instance_methods #=> []
しかしModはObjectのサブクラスであるはずなので、Objectクラスのインスタンスメソッドをすべて引き継ぐはずだと思います。
なぜModにはインスタンスメソッドがないのでしょうか。というか、どうやってインスタンスメソッドを「消して」いるのでしょうか。
何か勘違いしてますかね。
>>652 基本的には同じ。
includedを呼ぶようなappend_featuresを、
unless Module.method_defined?(:included)のときだけ定義して、
実際の処理はincludedに書いておけばいいんじゃないかな。
モジュールは Object のサブクラスじゃないよ。
>>654 >しかしModはObjectのサブクラスであるはずなので
ここが間違い。だいたいモジュールなんだからサブ「クラス」なわけないだろ。
かぶったorz
なのでもうちょと解説すると、rubyのModule定数で参照されるものは
Moduleという名前のクラスなので、これは確かにObjectのサブクラスだ。
しかしmodule Mod; endで作成したものはこのModuleクラスのインスタンス。
したがってObjectのサブクラスのインスタンスなわけだね。Objectのサ
ブクラスそのものではない。分かる?
659 :
652:2005/09/05(月) 18:28:18
>>655 ありがとうございます。基本的には同じということで安心しました。
ところでsingleton.rbを見るとappend_featuresとincludedの両方を使ってるんですけど、
これはなぜでしょうか。どちらか一方だけでいいように思えるのですが。
モジュールにインスタンスメソッドあるわけないじゃん...
mod.append_features(klass)
は、include の実体。klass に影響を与える。ユーザが再定義すべきでない(と思う)。
mod.included(klass)
は、include が呼ばれたときに実行されるフック。mod が include されたときに mod に影響を与えるなどなどの用途に使用。ユーザが再定義する。
モジュールにインスタンスメソッドはあるに決まってる
module M
def m
end
end
p M.instance_methods
["m"]
["m"] ←顔文字みたいでかわいい
["m"]
-‐─ -、
/ /゙;. /ヽ ヽ
l V / ノ .i
ヽ- '"ヽ,,,..
,− ''''--, ;-; ._ ;-;_ ,-------,,---, , -、
、= ,..x.., =,‐ ‐// // / 二二 // / ;`' = ヽ
'二二 ̄コ/.//,/ /i l,‐、___ ;=======./ ;ノ`' '=゙
/~。~// / < ',/"'~l゙l`ソ;_゙; ;'゙/ 二二' // /./_ ゚ ゚_/
, '==',/ /,''゙,., l,-'"/,゙; o ;‐/ ─‐ .// ;v, '゙,.-、ヽ
/. -─-、,/.'゙゙ "‐'".`" '‐‐' '─── ' '‐' '"゙ v'
すべてのファイル (*.*)
これも結構可愛いよな。
Omoti ←芋虫みたいでかわいい
class Face
def T
end
end
T = Face.new
(T.T)
……しょーもなくてすまそ
Omoti = 0721; class Face; def T; 0; end; end; T = Face.new;
(T.T)/~~Omoti
ワロタ
JARHみたいになってきたな。
$ ruby -W0e '$c=Class.new;def $c.m a;puts a;end;def _ a=$c;a;end;def m a;a;end
m(_ _).m :Sorry
'
basecampの画面ってかっこいい。
guestアカウントまだー
>>671 もうちょいキモくしてみた
$ ruby -W0e 'public;def _ p=p;p and puts p;end;alias m _
m(_ _).m :Sorry
'
puts を p にしたらさらにキモくなるな(出力形式が変わるけど)
674 :
671:2005/09/09(金) 19:30:16
>>673 さらにキモくしてみた。
$ruby -W0e public';def method_missing pp,p=p;p and p "'"$PpP#"'{p}";end
m(_ _).m :Sorry'
この速度なら言える
,, -‐''''''''''‐- 、
,ィ´: : : : : : : : ノ、:\
../:::: : : : : : :;' ツ ゙i: :i,
|::::: : ; ''' ´ l: :l /  ̄/ _/_ ─┼─ /
l i ,. --、__, -- 、 l ノ. / /| / / ゝ /
`>l‐'、:::::ノ l、::::::ノ〈i /___| / | / / ヽ_ /⌒ヽ_ノ
{ j ' ' /
l -‐ー‐- l
l ` /
`'‐-ー--'
| / i __ヽ_. | L__|__」 ─┼─
ヽ|/ ニ|ニ / ┌┼┐ ┌‐┐┌‐┐ ┼ lニlニlニl
フ|ヽ '''ニニ'' /|ヽ.├┼┤ ├-┤├-┤ | ─┼─
/ | ` |ニニ| | └┼┘ ├‐┤├-┤ / ,.イ\/
| ノ 、| | | ノ 、| ノ 、| レ \
_why の描くキャラクターが、2ちゃんねるのキャラクター (モナーとか) に似ている気がする件。
CGI::escapeでスペースが%20でなく+になってしまうんですが、
%20を使わせるにはどうしたらいいのでしょか。
>>678 なんでそうなるのか背景はよくわからないが、とりあえず
class CGI
alias :CGI::_orig_escape CGI::escape
def CGI::escape(string)
string.gsub(/%20/, '+')
CGI::_orig_escape(string)
end
end
と上書きしちゃうとか。
680 :
名無しさん@そうだ選挙に行こう:2005/09/11(日) 21:53:04
amritaで
<span id="hoge">
クリックで最大化→<img id="piyo">
</span>
x[:piyo]=a(:src=>'mona.gif') if x[:hoge]
みたいなことやりたいんだけどid入れ子にするとimgの属性って操作できないの?
>>678 そもそも、+でなくて%20に(しなくちゃいけない|したい)理由って何?
そんなこと聞くアフォがいるのはやっぱりRubyスレだからですか?
>>678 URI::escape じゃダメなんだっけ?
URI::unescape(CGI::escape(' '))
>>685 これってURIとCGIのどっちがいいの?
yieldがよくわかないんですけど、次の2つの違いって何かありますか?
def foo1(arg)
yield(arg)
end
def foo2(arg, &block)
block.call(arg)
end
どちらも同じように思うのですが、もし同じならyieldを導入した意味は何でしょう?
↑ブラクラ
>>689 それはブロックつき呼び出しと、Procオブジェクトを引数として渡すことの違いでは?
質問しているのは、yield(arg)で呼び出すのとblock.call(arg)で呼び出すことの違いです。
↑ブラクラ
>>692 それはブロックつき呼び出しと、Procオブジェクトを引数として渡すことの違いでは?
質問しているのは、yield(arg)で呼び出すのとblock.call(arg)で呼び出すことの違いです。
↑ブラクラ
空気読まずに済みませんが、 OptionParser ってまんどくさくありませんか?
コマンドラインオプションの処理で最近のオススメはどれでしょうか?
>>695 この URL、オフィシャルサイトのだと思うんだけど、
ブラクラなん?
>>699 何か気に障ることを言ってしまったでしょうか?
おじいちゃんが「自分で実装してる暇があったら既存のを探せ」と言い遺したので、
自分ではつくれないのです。
getopts.rb が deprecated なのは、グローバル変数使ってるからなんでしょうか。
getopts() -> GetOpts.getopts()
$OPT_XXX, $OPT['XXX'] -> GetOpts['XXX']
みたいに置き換えて、存続してくれるといいのに。
>>697 > 空気読まずに済みませんが、 OptionParser ってまんどくさくありませんか?
まんどくさいと思う人は少なからずいるよ。
実際何度か「まんどくさいよ」という意見が(2chはruby-listとかで)出てるよ。
けど、そのたび「慣れればまんどくさくないよ」と回答されているよ。
> コマンドラインオプションの処理で最近のオススメはどれでしょうか?
でもオススメはOptionParserだよ。
オフィシャルが OptionParser 一押しだから、たぶん類似ライブラリを開発・メンテしてる人はいないよ。
そうですか。
これからアンチになります。
Rubyは糞!
Rubyは糞!
Rubyは糞!
>>702 そうですか。
せめてもうちょっと lite な wrapper とかあればという気もしますが、
仕方ないので OptionParser で慣れることにします。
>>701 getopts.rbからの乗り換えなら、roptsでも試してみたら。
ほかにも[ruby-talk:145713]とか[ruby-talk:154715]とか[ruby-talk:155941]とか。
こっそりと 1.8.3 preview2 が出てた
RTypeの感想どうぞ↓
>>701 getopts って deprecated なの?
俺、Ruby1.4 の頃からの小さいスクリプトにかなり使ってるんだが…
その後は getoptlong のラッパー書いて使ってるけど、まだ 1.8 に
なってない環境もあるんで OptionParser 使う気にはなれんし。
つうかさ、実験的に入れた機能を削除するのは構わんけど、
ある程度使われてるのをなぜ obsolete/deprecated にするんだ。
納得できん。
昔から、Array#filter->map! とか Array#indices->select->values_at
とか iterator?->block_given? とか Object#type->class とか、
その度に既存スクリプト修正してきたけど、正直もううんざりだよ。
Rubyらしい書き方が確立してきたので
CやPerlの文化から継承した汚物を捨てたくなる気持ちはわかる。
でも過去のコードを動かそうとしたとき
警告出たり動かなかったりしてきれたくなる気持ちはもっとわかる。
下位互換性を望むなら、Ruby使っちゃだめなんだろうね。
毎回コードを書いて使い捨てるか、気合入れて保守するか。
> つうかさ、実験的に入れた機能を削除するのは構わんけど、
> ある程度使われてるのをなぜ obsolete/deprecated にするんだ。
それが Matz の信念だから。
「それで困るケースがあるのは承知してるが、それでもよくない仕様(主に名前?)の
変更は柔軟に行なってよい。むしろ行うべきだ。」みたいなことを、1,2年前の日記で
書いてた……気がするんだが、探し出せなかった(ので↑はあまり信用しないで)。
Array#indexes → Array#values_at なんかは典型かな。
「index と似てる名前なのに動作が逆なのは良くない」という理由だった。
Matz は異論を承知の上で行なってるので、今後も行われることだろう。
・直接説得する。
・あきらめる。
・Ruby とサヨナラする。
くらいしかないと思うよ。
>>710 それとは違うかも知らんが、 "Broken Window Theory" とか言ってた日記があった。
1.6系、1.8系とかを並行して使えばいいんじゃないの?
以前に書いたものを無理して最新のRubyで動かすこともあるまいに。
バージョンアップ時に詳しい変更点のリストを提供してくれれば
仕様が変わることに文句はないな。
>>713 shimを見る、というのも一つの手かも。
715 :
708:2005/09/15(木) 09:59:46
>>712-713 いや、自分だけで使う限りではそれでぜんぜん問題ないんだけどね。
Ruby便利だってことで、作ったツールを社内で使う場合とかに面倒
になる。プログラマ以外のやつが使うこともあるし。
さらに作ったやつが辞めてたりするとさらに面倒に。まあこれは
Rubyに限った話でもないかもしれんが…。
そういう使い方にはあまり適さない言語だという気がしてきたよ。
好きなところも多い言語だが、そろそろ他への乗り換えも考えて
みようかと思ってる。
色々使って、自分の気に入るのにすればいいやん。
無理して Rubyだけにこだわらんでよろし。
>>715 配った先の環境もずっとアップデートしてんの?
>>714 shim の更新が止まって以降の変更もでかすぎくなってきて辛くなってきてる。
正直、 Ruby のバージョンに 4桁目 (patchlevel) を導入して欲しい。
>>719 各ディストリビューションが付けてるやつで良いんじゃないの?
でも気持ちは良く分かる。1.8.3 も「なだれこみリリース」っぽいしね。
最近のリリースはだんだん、安定性が無くなってるな。
1.8.4 は basecamp 効果が表れるかな?
ディストリビューションが同じ環境でしか意味持たないんじゃどうにも。
「外部的な事情」ってのが気になる。
WindowsとUnix系とで改行コードが異なりますが、putsでは自動的に判別して適切な改行コードを出力しているみたいです。
これってどうやってるんでしょうか。
今、なんらかのメッセージを出すのにヒアドキュメントを使っているんですが、よく考えたらWindowsだとうまく出力されないのかなーと思って。
msg = <<EOS
メッセージ
メッセージ
メッセージ
EOS
$stderr.print msg
こうではなく
$msg.puts "メッセージ"
$msg.puts "メッセージ"
$msg.puts "メッセージ"
と書くべきでしょうか。
puts が判別してるわけじゃないから、気にせずそのままでいい。
環境変えてもCRLFじゃなくてLFで出力したい場合にヒアドキュメントは?
output.binmode
output.puts <<EOS
メッセージ
メッセージ
メッセージ
EOS
それはソースがCRLFだとLFのみにならないから
output.binmode
output.puts <<EOS.delete("\r")
メッセージ
メッセージ
メッセージ
EOS
>>727 ソースがCRLFで書いてあっても内部的には改行はすべて"\n"。
出力するまでは関係ない。
>>728 うおー、
>>727 じゃないけど、それは知らんかった。
そういうのってどっかに書いてある?
実行すればわかる。
そこまで親切なドキュメントが揃ってる言語があるなら試してみたい
思うなら書いておいてくれ。
「リテラル」と「字句構造」に書いといた。
文句ある奴はなおしてくれ。
737 :
723:2005/09/16(金) 17:27:41
回答いただき、ありがとうございました。
ヒアドキュメントのままWindowsで出力させても問題ないとのことなので、putsに書き直すのはやめました。
ありがとうございました。
738 :
732:2005/09/16(金) 17:44:17
OSCいくかー。
1.8.3は無事リリースされますか?
1.8.3は無事リリースされるけど、それを手にするお前らは無事ではない。
Rubyとかの個人ヲタが作ってる
言語は大事な業務に使わない方がいいよ。
なんせバグが出ても責任取ってくれないからね。
PerlとかPyhtonとかPHPなら責任取ってくれますか?
>>743 JavaやVCでバグが出てもSunやMSは責任取ってくれないって知ってたか?
ライセンス条項にちゃんと入ってるぞ。
Windows とか個人のヲタが作っ (ry
責任云々はともかく多くの人に使われてるほうがいいよ
そういうヤツは一生シェアNo.1スクリプトのPHPでもつかっとれ。
Omotiがおとなしくなったとおもったら、Wildernessのヤツもいい加減ウザい。
でもまあ、そういうやつがいないと、特に ruby-list なんかは「無投稿期間」が更新されていくわけで。
ruby-listよりruby-talkの方がいい話題が多い
次の挙動をどなたか説明していただけますか?
> ruby -v
ruby 1.8.2 (2004-12-25) [i386-mswin32]
> ruby -e 'p 2**2**2**2'
65536
> ruby -e 'p 2**2**2**2**2'
2003529930406846464979072351560255750447825
(省略)
22087777506072339445587895905719156736
# 19729桁
> ruby -e 'p 65536**2'
4294967296
> ruby -e 'p 2**2**2**2**2**2'
c:/programs/ruby/1.8.12-15/lib/ruby/1.8/rational.rb:365: warning: in a**b, b may be too big
c:/programs/ruby/1.8.12-15/lib/ruby/1.8/rational.rb:365: warning: Bignum out of Float range
Infinity
つまり2^4、2^5、2^6の結果を出力させているんですけど、
2^5を 2**2**2**2**2として実行したときにわけわからん出力になります。
2^6のときは警告はですんですが。
これってバグですか?仮にバグだとしてなぜこんな出力になっちゃうんでしょう?
ちなみに、
ruby 1.8.2 (2004-12-25) [i386-cygwin]
ruby 1.8.1 (2003-12-25) [i686-linux]
ruby 1.8.2 (2004-12-25) [i686-linux]
でも同じ結果でした。
>>752 ヒント : 適当に括弧を付けてみれ
あと^の記号は普通そういう意味では使わない。2^4は一般的には2*2*2*2のことを表すだろう
とりあえず、ちょっと待て。
2^4 は 2**4 で、当然 16 だぞ?
a**b**c == a**(b**c)
数学でもカッコなしで(図がずれてたらすまん。右肩に乗ってるつもり)
c
b
a
って書いたら
○ a の(b の c 乗)乗
× (a の b 乗)の c 乗
>>753,754,755
ありがとうございます。
なるほど
2**2**2**2**2 = 2**(2**(2**(2**2))) = 2**65536
ってことですね。たしかに言われてみれば累乗の累乗って
後ろから計算しないといけませんよね。すっかり忘れてました。。。
それと、2^xなんたらというのは完全に頭いかれてました orz
Rubyのバグと疑ってしまい関係者の皆様申し訳ありませんでした。
こんなとこ関係者見てんのか?
2ch かっつーの
Rubyはうんこ
誰でも垂れ流しているのか、いつのまにそんな普及率になったんだ
761 :
デフォルトの名無しさん:2005/09/18(日) 19:15:13
age
こういうのを「健全な批判」というとは知らなかった。
感動した。
オープンソース関連の中でもrubyはかなり2ch率高いでしょ。
教祖も見てるし。
そもそも2chで暴れたから有名になったという感じがする
キチガイも沢山飼ってるし
教祖は見てないでしょ
>>765 それは MW タンですか? Omoti タン ですか?
>>767 MWタン。だってあの顔は一度見たらもう忘れられないよ。
画像のURLはご無用に願います...。
「リリース前日に怒涛のコミットが...。」なんて、想定の範囲内じゃないのかよ・・・
でさ、何でリリースが 21日必須なの?
理由って、どっかに書いてあったっけ?
外部の事情とかなんとか言ってたけど、それが何を指すのかは説明されてない。
まぁ、宇宙人だな。
21日にRuby1.8.3がリリースされるの?
な?だろ?そう思うだろ?どうせネタだろとか誰もが思ってるだろ?
リリースするまで説明できないような理由じゃない。
落ち着いていこう
まだあわてるような時間じゃない
とりあえずリリースされてから48時間は寝かせないと
MD5が変わらなくなってからが食べ頃だw
>>779 リリースするほうが無事じゃすまんよ、それ。
F5押したら実行してエラー表示してくれるような開発環境ない?
RDE ならできるんじゃなかろうか
おいおい、ほんとに出ちゃったよ。
まだだ、まだ終わらんよ!
1.8.3p1がすぐに出る悪寒。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/27251 1.8.2以前のRubyには脆弱性があります。これがリリースを急いだ
理由だったりするんですが、このレポートの英訳を手伝ってくださ
る方はいらっしゃいませんか。誰もいなきゃ私がやるしかないんで
すが。日本語レポートは以下の通りです。
---
セーフレベルの設定が回避可能となる脆弱性
公開日: 2005-09-21
対象バージョン:
リリース版(1.8.x) - 1.8.2以前のすべてのバージョン(1.8.3で修正)
過去のリリース版(1.6.x) - 1.6.8以前のすべてのバージョン
開発版(1.9.0) - 2005-09-01版以前のすべて(2005-09-02版で修正)
概要:
対象バージョンのRubyにはセーフレベルによるチェックを回避して任意のコードを
実行できる脆弱性があります。
(以下略)
789 :
デフォルトの名無しさん:2005/09/21(水) 11:23:13
脆弱性対策のために1.8.3を急いで出したのか…
こんな真面目な理由で急いでいたとは誰も思っていなかった。
Ruby がクリスマス以外でリリースされたら脆弱性と思え。
Ruby においてリリースマネージメントが機能しない脆弱性
Ruby のソースパッケージの MD5 チェックサムがすり替えられてしまう脆弱性
Rubyもhaskellで書き直してもらった方がいいんじゃねーか
796 :
デフォルトの名無しさん:2005/09/21(水) 16:13:25
9/2でパッチ出来てるんなら、もっとはやく脆弱性のアナウンスしろよなぁ………
>>795 RTypeを知ってて言ってるのか、知らないでわざと言ってるのか、どっち?
もちろん知らないで言ってるに決まってんじゃん馬鹿?
つーかあるんならそのRTypeとやらを説明してくれよ
嫌な奴だな
そうだな。
1) まつもとが変態言語仕様を提案する
↓
2) RType陣営がそれを実装してみる
↓
3) だめ→まつもとを袋叩き 1)に戻る
↓
4) Rubyリリース
という流れかな。
>>801 ちがうちがう、797がイヤミだと言う事に
気付かないって方が。
最近の2ちゃんねるはイヤミにキレがないザンス
これでいいのだ
41才の秋だから〜
806 :
719:2005/09/21(水) 17:40:46
げげ、半分冗談のつもりで言ったのに・・・
案の定、ruby-dev にごたごた来てる訳だが (w
つか、クリスマスにも、ちゃんと出す予定なのね。
ruby-list止まってる??? 記事が流れてこないんだが。
で今回のバージョンはどんなもん?
1.8.2はスナップショット扱いされてたけど。
Matz は「1.8.2よりマシ」って言ってたけど、同等か、もっと悪いくらいなんじゃない?
なんてったって、Rails が動かないし。
もうすぐ 1.8.3.1 が出るっしょ。
>なんてったって、Rails が動かないし。
うへ_| ̄|○
無理にバージョン上げずにセキュリティパッチとして配布……ってのは無理だったのかなぁ
>>811 いちおうソースレベルのパッチはでてるね。[ruby-dev:27267]
Rails動かないのはいくらなんでもマズいだろ。
パッチにせず無理矢理リリースとか、リリースエンジニアリングの
だめなのはわかっちゃいたけど。
1.8.3はとりあえず1.8.2を元に脆弱性の回避だけ施したものとして出して
(つまりはEmacsの21.4方式)、1.8.3にする予定で進めたコードは1.8.4として
ゆっくりやればよかったんじゃないのかね。
で、現時点ではっきりしている 1.8.3 の問題って何々?
Railsが動かない。
loggerのインターフェイスが変わったのは、
Rails側で対応して貰うしかないよね。
その時間的余裕が全然なかったのはRubyのせいだけど。
他の問題は?
リリース間際に田中氏が大量に投げてたバグ報告とか、
全部対応されたんだろうか。
メソッドの名前とかインターフェース面での変更とか、
リリースエンジニアリングに色々難があるな。
そういうのは、2.0でまとめてやってほしいよ。
Rubyは現状を見るかぎりはまともなstableなソフトとは言えない。
それが Ruby。どんどんやってくれ。
RailsというよりActiveSupportだが、
これはActiveSupportのやってることのほうが変。
なんですかこのスクリプト言語は。
メジャーバージョンがいつまでも0のままの某言語にそっくりですね、
>>815 Rails以外に問題はある?
>817
>リリースエンジニアリングに色々難があるな
1.8.4では何とかしようとしているみたい。
1.8.3でも色々議論してたけどさ。
>>819 >これはActiveSupportのやってることのほうが変。
Logger のクラスを消すんだもんな。
ActiveSupport は全体にやりすぎ
>>816 ruby_1_8に関係しないものも多々あったかと。
>>808 そういえば 1.8.3 リリースのアナウンスすら送られてこないね。
脆弱性の報告が開発者 ML (ruby-dev) にしか流れてないというのはまずい気がするが。
高橋氏をはじめとしてリリースエンジニア候補は結構いるのに、
何で一向に改善しないの。
>>827 ruby-listに存在意義ないな…。
Matzがボスだから。w
そういう人を連れてきてMatzと同格以上の立場に持ってこないとダメだと思うよ。
それにしてもMatzも仕事のやり方が間違ってるよね。
1.8.3としての通常のバージョンアップのついでの形で修正を含めたいとしても
まず手数や問題が小さいと見込める1.8.2の脆弱性だけ修正したものを用意して、
それから本来の1.8.3のリリースエンジニアリングに掛かるべき。
そうやって保険があれば、わざわざ急ぎすぎてヘマすることも減るし、
英語の文書が間に合わないとかもないだろうに。
>>829 ruby-talkにもまだアナウンスなさそう。
ruby-coreにはそっけないアナウンスがあった。
どちらも脆弱性についてのメールもなさそう。
しかしruby-talkって流量すごいね。
>>831 そのためだけに ruby-talk 取ったの?
アナウンスは、英文が揃い次第かな。
>>827 ホームページのトップを毎日チェックしろってか?
それなら ruby-dev や ruby-core へのアナウンスも要らなかったな。
リリース一週間くらい前には tar.gz を -preview とか -RC とか付けずに置いといて、
一週間くらい経っても問題の報告がなければそのまま正式リリースのアナウンスする、
とかでいいのでは。
>>827 なんでそういう結論になるのかまったくわからん。
Content-Type: text/html; charset=ISO-8859-1
となってるから、MLアーカイブ見るの面倒。
脆弱性発見するたびにリリースしてたら1.8.9じゃ足りなくならないか?www
[ruby-dev:27268]を見るに、数字一桁というのは事実上撤回しましたな。
小数点がついたら、そりゃ10未満ではあっても一桁とは言わんだろうw
>>840 バージョン番号を区切る '.' は「小数点」とは言わない (言えない) だろう。
>>842,843
[ruby-dev:27268]とversion.hを見てから言ってくれ。
>>844 見てから言っていますよ? "1.8.3" が小数とは言えないでしょう?
相変わらずrubyコミュニティは痛い香具師ばっかだな
>>846 845は目が見えないんだよきっと。壮絶に頭が悪いだけかも知れないが。
Rubyを勉強しようかと思いましたが、
このスレを見てやめました。
ごめんなさい。
とてつもないバカが一匹いるな…
#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 8
#define RUBY_VERSION_TEENY 3
いまのところ MAJOR, MINOR, TEENY はそれぞれ一ケタの整数だった。
[ruby-dev:27268] のように(TEENY を小数に)すると、それは崩れることになる。
ところで、matzは「MAJOR, MINOR, TEENY の各数値は、数字一桁で行く」って宣言してたんだっけ?
(MAJOR と MINOR の話は見たことある気がするが、TEENY は覚えてない)
ruby1.8.3でセキュリティ対策がされているようなのでVC++7.1でコンパイルしようと思ったらこんな感じで止まってしまったのですが、
どうしたらコンパイルできますか?
コンパイルオプションはこんな感じでいくつか付け足しました。
$(OPTFLAGS) = /O2 /arch:SSE /GL /GF /G6
$(LDFLAGS) = 元の物に /LTCG追加
cl -nologo /LTCG -LD /LTCG -Fe../../.ext/i386-mswin32/Win32API.so Win32A
PI.obj msvcr71-ruby18.lib kernel32.lib oldnames.lib user32.lib advapi32.lib wso
ck32.lib -link -incremental:no -opt:ref -opt:icf /LTCG -dll /LTCG -libpath:"../
.." -def:Win32API-i386-mswin32.def -implib:Win32API-i386-mswin32.lib -pdb:Win32A
PI-i386-mswin32.pdb
cl : コマンド ライン warning D4002 : 不明なオプション '/LTCG' を無視しました。
cl : コマンド ライン warning D4002 : 不明なオプション '/LTCG' を無視しました。
ライブラリ Win32API-i386-mswin32.lib とオブジェクト Win32API-i386-mswin32.exp
を作成中
Win32API.obj : error LNK2001: 外部シンボル "_rb_scan_args" は未解決です。
Win32API.obj : error LNK2001: 外部シンボル "__imp__rb_cObject" は未解決です。
Win32API.obj : error LNK2001: 外部シンボル "_rb_str_new3" は未解決です。
Win32API.obj : error LNK2001: 外部シンボル "_rb_define_method" は未解決です。
Win32API.obj : error LNK2001: 外部シンボル "_rb_ary_push" は未解決です。
Win32API.obj : error LNK2001: 外部シンボル "_rb_uint2inum" は未解決です。
Win32API.obj : error LNK2001: 外部シンボル "__imp__rb_eRuntimeError" は未解決で
す。
Win32API.obj : error LNK2001: 外部シンボル "_rb_string_value" は未解決です。
(中略)
../../.ext/i386-mswin32/Win32API.so : fatal error LNK1120: 外部参照 24 が未解決
です。
NMAKE : fatal error U1077: 'cl' : リターン コード '0x2'
Stop.
NMAKE : fatal error U1077: '.\miniruby.exe' : リターン コード '0x1'
Stop.
>>852 自分でコンパイルも通せない香具師にrubyを使う資格は無い
>>851 だからTEENYの「3.1」のドットは「小数点」ではないって。
「小数点 = .」と思ってるのか?
TEENYが「3.1.1」に絶対ならない保証があるとでも?
> ところで、matzは「MAJOR, MINOR, TEENY の各数値は、数字一桁で行く」って宣言してたんだっけ?
そんなことは言ってないだろ >> 26894
> だからTEENYの「3.1」のドットは「小数点」ではないって。
ソースは?
>>855 おまえやっぱりピリオドと小数点の違いわかってないだろ
>>854 3.1.1なんかCの数値として書けないじゃん。
RUBY_VERSION_TEENYを3のままでさらに枝番をつけるという意図なら
「TEENYを3.1にする」というような書き方でわざわざ注釈を入れたりはすまいよ。
>>852 その余計なことを元に戻して試してから出直してくれ。
>>856 スマン、言い方がマズかった。
TEENYの「3.1」のドットが「小数点」なのかどうかは提案したmatz本人にしか
分からないはずなのに、なぜ「『小数点』ではない」と断定できるのか、
を疑問に思っただけ。
>>858 定義はしてるけどどこでも参照してないみたいだから、
#define RUBY_VERSION_TEENY 3.1.1
としても問題は起きない気もする。
C の数値として書けるかどうかは、あまり関係ないのではなかろうか。
>>845 アホか。"1.8.3" は String オブジェクトだろ。
p "1.8.3".class #=> String
と、ちゃんと返ってくるぞ。
すいませんOne Click Installerのせいでした。
アンインストールしたのに環境変数が書き換えられっぱなしだったみたいです。
One Click Installerはうんこですね
結局うまくコンパイルできました。test/runner.rbも標準版よりかなり高速に終わりました。
原因は/GL,/LTCG使うと止まってしまうだけのようなのでそれだけ外しました。
自己満足に付き合って頂いてありがとうございました。
個人的にはrubyが遅いと言われてるのは、
コンパイルオプションに標準で/Og-が入ってるせいなのもあると思います。
はいはいわろすわろす
TEENY を 3.1 にするんじゃなくて
#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 8
#define RUBY_VERSION_TEENY 3
#define RUBY_VERSION_PATCH 1
にするんかと思ってた。
TEENY を 3.1 にするなんてありえなくね?
はいはいわろすわろす
なんで日本語のMLでチマチマやってるの?
つruby-talk
つruby-core
871 :
デフォルトの名無しさん:2005/09/23(金) 10:08:08
module_functionはmodule内でしか使えずclass内では使えないようなんですが、class内でmodule_function使うにはどうしたらいいですか。
module Foo
def test
puts "Foo#test()"
end
module_function :test #=> OK
end
class Bar
def test
puts "Bar#test()"
end
module_function :test #=> undefined method `module_function' for Bar:Class (NoMethodError)
end
>>872 そりゃ、BarはModuleじゃないからmodule_functionになれるわけないわな。
class Bar
def self.test
...
か
class Bar
def Bar.test
...
があなたのやりたいこと??
>>873 やりたいことはそうなんですが、classはmoduleでもあるんだから、moduleでできることはたいがいclassでもできるはずですよね。
だからclassではmodule_functionが使えないのはなぜだろう、と思ったわけです。
>>875 マニュアルに書いてあるのね。ありがとさん。でも理由は書いてないのか。
そういうことはちゃんとドキュメント化しとけよボケナス
とは思わないのか?
880 :
877:2005/09/24(土) 02:51:40
俺に言われても。
まあ、細かい理由までは書かなくてもいいんじゃないか?とは思う。
むしろ、こんないい加減な仕様でいいのか、っていう方が気になる。
module は何を仮定してよくて、何を仮定してはいけないんだろう。
module のメソッドは常に module_function される可能性を
意識してないといけないのか? 例えば
> module Enumerable; module_function :all?; end; Enumerable.all?
は可能だけど、やる方が悪いんじゃないか。だったら
> class String; module_function :gsub; end; String.gsub
も、やる方が悪い、でいいんじゃないだろうか。
もしこれが可能だったとしたらどうなるんだ?
2ch かっつーの
>>880 > module は何を仮定してよくて、何を仮定してはいけないんだろう。
仮定してはいけないものはinclude/extendされる対象の構造。
反省してるってことなら、大目に見てやろう。
886 :
877:2005/09/24(土) 16:00:21
>>883 Enumerable は、対象が「"each" という名の、ブロックを受け取るメソッドを持つ」
という構造だと仮定してるけど、それはいいの?
「構造」の定義がないから勘違いしてるのかな。
三ヵ月前のリリースくらい大目にみてよ〜
>>886 それは「インターフェース」。
構造というよりも、「eachが内部でどう実装されてるかに依存してはいけない」
といったほうがいいかな。
[ruby-dev:10340]でいってるのも、Cレベルでの構造というか実装の詳細に強
く依存するメソッドを、ClassのインスタンスであるStringに適用することは
できないということ。
889 :
デフォルトの名無しさん:2005/09/24(土) 23:13:39
なにやら哲学的で難しいのぉ…
つーかアレじゃね? こっそり依存するのがまずいって話じゃね?
「Enumerable は each を仮定してます」って明示してるからオッケー。
……って、それが「インターフェイス」ってことだよな。
>>881 > 追記
> 上のように書いたら「本当にむしゃくしゃしてリリースした」と思う人が出る始末。
> 冗談も書けない。余計に落ち込む。
っ旦
マジレスをスルーできない人は(冗談を書くのは)難しい
まつまとがTPOをわきまえてないだけでは
>>837 > はら (2005-09-24 14:29)
> 直してみました。(ruby-devなど)
本当に「本当にむしゃくしゃしてリリースした」と思う人が出たと思われてしまう始末。
冗談も書けない。余計に落ち込む。
上のように書いたら「本当に落ち込んだ」と思う人が出る始末。冗談も書けない。
単にギャグとして面白くない
そこはオヤジなんだから勘弁してやれ
つか、本家サイトが落ち込んだ?
>>895 コメント欄に「本当にむしゃくしゃしてリリースした」と思った(っぽい)人が出てるな。
あれ以上冗談っぽくってどうすればいいんだ?
901 :
デフォルトの名無しさん:2005/09/25(日) 07:38:50
本人乙
リリースエンジニアリングを批判されてる状況で、
寒いジョークを書いてる馬鹿だからなあ。
俺Rubyはリリースエンジニアリングのマズさ以外はいい言語だと思ってるけど、
プロジェクトリーダーがこんな馬鹿じゃちょっと哀しいよ。
本人乙
なぜ脆弱性が発見されてから20日以上もリリースを引き延ばしたかとか
結果どうだったとか、どこをどう反省しているかw とか、
本人が総括して語ってれば冗談で済むけど、
それを全くしないであんなこと書かれてもなあ。
>>902 そうだな。
リリースというのは、ソフトとその作者にとって
一世一代のお披露目なんだから、
緊張感持ってきっちりやるべきだよな。
普段はおちゃらけてていいから。
とりあえず2.xは書いたスクリプトの互換性が無くなる事はやめてほしいな。
つか、1.0以降を名乗るプロジェクトがそれはやっちゃいかんだろ。
>>905 リリースに興味がないのはしょうがないけど、
それならせめてリリースエンジニアを指名して、
リリース作業全てを一任するくらいの謙虚さは欲しいね。
>>906 メジャーバージョンアップなら許されるだろう。
マイナーバージョンアップどころかティーニーバージョンアップでも
互換性無くなってる現実とは関係なく。
日本ではティーニーというのか
突っこまないであげればいいのに…
冗談の解説ほど寒いものはないな・・・
>>904 セキュリティの何かの修正に、かなり時間が掛かったとか、
IPA での広報を期限にリリースしたとか、どっかに書かれてたと思うが。
どっかに。
ttp://tmtm.org/ja/tdiary/?date=20050921#c01 > まつもと (2005-09-23 (金) 15:26)
>
> 脆弱性への対応をしたことがなかったのでパッチだけで良いものか
> わからなかったのがひとつ。実際にはIPAからの報告を受けた後でもう一つ別の
> 脆弱性報告があり、それへの対応に時間がかかったのがひとつですから、
> 「こんなに時間がかかることはなかった」というのは正直(私にとっては)
> 厳しすぎる評価です。
Rails使ってる有名サイトってどっかあるの?
FEEDBRINGER とか?
恥を恐れず聞くが、俺もTEENYは「ティーニー」だと思ってたんだけど、違うの?
tinyと勘違い?
自信ないけど、普通リビジョンとか言わない?っていう話かと思ってた。
ティーニーって今まで聞いたことないよ。
winだとmajor, minor, release, buildだね。自分もティーニーははつみみです
しかしみんなmatz氏への物言いがきっついなー
素直に乙といってあげたい
まだ落としてないけどww
見聞が狭いだけだろ。試しに「major minor teeny」で検索してみな。
>>920 違う筋のものをごちゃまぜにしているような。
releaseは知らないが、buildは関係ないだろ。
>>921 "major minor teeny"で検索したら
Ruby関連の記事がたくさん引っかかるんだけど。
だから何?
お前はもう消えていいよって事
また変な虫が涌いてきた
ruby を検索対象から外す方法も知らんのかね。
tiny --> teeny なのに…
rubyばっかり上位に来るほど流行ってないって事だろ
自分の無知を正当化するために見たいものしか見ようとしない人には言っても無駄。
お、良い言葉だな。
機会があったらコピペしよう。
おさまりましたかね。
ruby-mode.elなんすけど、M-;で桁位置揃えるのがなんか右揃えなんすけど、
これ、どうにかなんないすかね。つらつらelを眺めたけどいまいちなんとも…。
特定の桁位置で左揃え(#が縦にずらっと並ぶ)ようになって欲しいんです。
932 :
929:2005/09/26(月) 12:06:09
どうでもいいから
934 :
デフォルトの名無しさん:2005/09/26(月) 16:18:15
>>912 おい、発表されてない脆弱性があったってことか?心配でRubyつかえねーじゃんかよ
Security Advisoryも高橋メソッドで発表してくれないかな。
ありがとう。
>>937 残業してあがいて見たけど頭の頭痛が痛くなってきたのでそろそろ帰るよw
939 :
デフォルトの名無しさん:2005/09/27(火) 01:35:29
Rubyのまともな開発環境が欲しい。
emacsでやってる人いる?
vim オンリー
>>931 > 特定の桁位置で左揃え(#が縦にずらっと並ぶ)ようになって欲しいんです。
デフォルトでなるけど。
右揃えにするほうが難しいよ。
つーか、右端がどこに揃えられるんだ?
今回の件で、Rubyは、実装に脆弱性があるばかりではなく、
開発者にも脆弱性があることが分かりました。
世界中の人間から邪心を取り除けば脆弱性など問題になりません。
さあキリスト様に祈るのです。
ガンダムもそういう展開だったな
>つーか、右端がどこに揃えられるんだ?
因果地平。
そろそろ産まれる?
今後の展開でフレームになるかもしれないが、(いい意味での)議論の種だと思う。
coreではとっくにフレーム化
そんなことより.msiをサポートしてくれ
MSIってWiX使えば作れるんだっけ?
書いていないなら言い出しっぺじゃん?
980くらいでいいんじゃね?
そんなことより「頭の頭痛が痛くなってきた」
うむ、半端だったな。
「頭の頭部の頭痛が痛みで痛くなってきた。」
くらいにはしておくべきだったか。
産まれてたのね〜おめ。
959 :
:2005/09/27(火) 20:35:50 0
>>956 「どうしてセリエの人気が低下したのはなぜ?」みたいなものか。
960 :
980:2005/09/27(火) 20:44:29 0
>>955 了解。俺が立てとくよ。まかせとけ。
↓テンプレのドラフトをよろしく
今更だが、作者とはいえ個人サイト直リンはOKなのか?
アンテナにリンク貼ればそれでおkってことかい?
つーかPlanet Rubyがあれば(げほげほ
個人サイトとはいえ、時々言語仕様に関する重要な情報がぽろっと書いてあったりするからな。
ま、公人ってことでいいんジャマイカ? どうせここで言及されるんだし。
Matz日記に直リンがマズいって理由がわからん。(2ch で直リン禁止と言われるのは、
負荷か感情的な(儀礼的無関心?)理由だろうけど、この場合どっちも問題になるとは
思えないので)
それはともかく
* 分室イラネ(更新されてないし)
* blade が欲しい(URL は ruby-talk.org の方がいい?)
リンク名が説明になってなくて固有名詞のものは、括弧書きで
説明をつけてくれると嬉しい。
Ruby Hotlinks (Ruby関連のページや日記のアンテナ)
Rubyist Magazine (日本人有志によるwebzine)
RCRchive (Rubyの仕様変更提案(RCR)と議論のアーカイブ)
RAA (Rubyで書かれたプログラムやライブラリの登録場所)
RubyForge (Rubyで作るオープンソースプロジェクトをホスティング)
Ruby Garden Wiki (RubyについてのWiki。英語)
RWiki (Rubyで書かれたWiki、Rubyについての話題もあり)
とかでどうだろう。
ruby-doc は何て説明すればいいのかよくわからんので誰か考えて。
The RWikiの末尾の「;navi=top」は削ってほしいです。
いや、別にここにはパッチ貼っといて次スレ立てる時にマージすればいいだけの話だし。
とは言え
>>970乙。
Rubyって2ch発(だか関連の強い)のwikiがないんだな
テンプレくらいそこにペロッと貼っておければいいのに
いや、2ch発でなくても、こっそりペロっと・・・
関連リンクとしてRubyで書かれたアプリ集って作れん?
そういう有象無象のよせあつめじゃなくて、
有名どころとかこれはおさえとけってのはあってもいいんじゃないか?
っ 言いだしっぺの法則
Railsがらみでトップ独占っていうのがなんとも