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

Rubyについて Part 29

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/10/29(月) 23:27:18
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

Ruby Home Page
http://www.ruby-lang.org/ja/

= 前スレ
Rubyについて Part 28
http://pc11.2ch.net/test/read.cgi/tech/1187298711/

過去スレ・関連スレは >>2-
0357デフォルトの名無しさん2007/12/05(水) 20:33:32
>>355
bm_app_factorial.rbの数値を5000から3000に下げたら実行できました。
でもまた違うエラーがでたので調査中。
0358デフォルトの名無しさん2007/12/05(水) 20:53:06
>>357
bm_app_factorial.rbはデフォルトの5000はダメで4000までならOKでした。
あとbm_so_ackerman.rbもstack level too deepなエラーになったけど、NUM=9をNUM=8にしたら行けました。

>>356
ulimit -s unlimitedは効かなかったです。

というか、エラーが起こったのは飛ばして、ベンチマークを継続してくれるようにしてほしい。
0359デフォルトの名無しさん2007/12/05(水) 21:58:38
さわってないけど-kとか?
0360デフォルトの名無しさん2007/12/05(水) 22:24:03
>>358
何がしたいの? ruby/benchmark/移行は開発者用のやつなんだから
自分で解決できないなら見る必要ないじゃん。
ベンチマークが取りたいならtimeを使うか、requie 'benchmark'なさいな。
0361デフォルトの名無しさん2007/12/06(木) 00:11:26
>>360
ruby1.9がどれだけ速いか確かめたいだけ。
1.8と1.9の比較のためのベンチマークが用意されているんだから、それを実行してなんか悪いの?

>自分で解決できないなら見る必要ないじゃん。
自分で解決したじゃん。何インネンつけてるのさ?
0362デフォルトの名無しさん2007/12/06(木) 12:15:08
逆切れするのは心にやましいところがある証拠
0363デフォルトの名無しさん2007/12/06(木) 14:19:06
冷静に見て喧嘩好きばかりに見えるのは俺だけか?
何で無用な煽りを繰り返す?
0364デフォルトの名無しさん2007/12/06(木) 14:52:05
煽りはアンチスレでやればいいと思うんだ。
0365デフォルトの名無しさん2007/12/06(木) 17:15:55
>>361
自分で解決できるんならこのスレでやらンでね、おねがい(はぁと
0366デフォルトの名無しさん2007/12/06(木) 21:07:08
アンチスレへどうぞ
0367デフォルトの名無しさん2007/12/06(木) 23:18:16
>>363
頭の悪い人間が上から目線のコメントを楽しむ為には、
相手に対する無理のあるバカ扱いが必要になるんだよ。
0368デフォルトの名無しさん2007/12/07(金) 01:29:04
>>361は男の子か?カワイイぞ気に入った。俺は関東地方に住む28歳の男。ホモだ。
メル友からはじめて気が合えば会って話しをしてほしい。俺はもう大人だからな
どんなプレイにも応じてあげられるんだけど。

いきなりホモだなんて言ったら頭のおかしいやつだと思うだろうが勘違いしないで
ほしい。隠し事は嫌いだから自己紹介をしたまでなんだ。お前みたいな奴を恋人に
したいと思ってる。

どうだ今度一緒に飯でも食べにいかないか?
0369デフォルトの名無しさん2007/12/07(金) 06:14:50
一人でがんばってるなぁ
0370デフォルトの名無しさん2007/12/07(金) 10:03:13
http://wiki.modruby.net/en/?eRubySyntax

これはちょっとまずいんじゃねーの
RubyコミュとWikipediaコミュ両方の属してるといかがなものかと思うわ
0371デフォルトの名無しさん2007/12/07(金) 11:40:16
なんでまずいの?
0372デフォルトの名無しさん2007/12/07(金) 14:20:38
サンプル程度のショボいベンチマークを実行するにも一苦労のRuby
0373デフォルトの名無しさん2007/12/07(金) 14:33:48
>>372.sub(/Ruby/, ">>347")
0374デフォルトの名無しさん2007/12/07(金) 22:07:36
then のコロンによる置き換えは1.8でpytonっぽいという理由で入って、1.9で削除されている(笑)
0375デフォルトの名無しさん2007/12/07(金) 22:37:06
:が貴重になったんだよ

case foo
when hoge:
hogehoge
when hage:
hagehage

みたいなのも出来なくなった
0376デフォルトの名無しさん2007/12/07(金) 22:38:14
むしろthenって何のためにあったの?
0377デフォルトの名無しさん2007/12/07(金) 22:56:55
一行にif文を全部書ける

if <cond> then <then-clause> else <else-clause> end
0378デフォルトの名無しさん2007/12/07(金) 23:15:40
1.9は {:a, 1, :b, 2} みたいな書き方も出来なくなった
0379デフォルトの名無しさん2007/12/07(金) 23:18:16
できなくていい
0380デフォルトの名無しさん2007/12/07(金) 23:18:44
>>376
basicっぽくていいじゃん
0381デフォルトの名無しさん2007/12/07(金) 23:49:28
>>378
え、マジで?
ちょっとリテラル書く時に愛用してたのに
0382デフォルトの名無しさん2007/12/07(金) 23:56:47
JSONみたいな{a: 1, b: 2}になるんだっけ?
0383デフォルトの名無しさん2007/12/07(金) 23:59:22
irb(main):001:0> {a: 1, b: 2}
=> {:a=>1, :b=>2}
0384デフォルトの名無しさん2007/12/08(土) 00:01:20
irb(main):002:0> {a: :A, b: :B}
=> {:a=>:A, :b=>:B}
0385デフォルトの名無しさん2007/12/08(土) 01:37:51
そんな表記法知らなかった。
0386デフォルトの名無しさん2007/12/08(土) 01:44:44
Fluent Interfaceも便利だぬ

ただ、日本語訳の流れるような〜ってのはいかがなものか
0387デフォルトの名無しさん2007/12/08(土) 09:42:40
BASICといえば
foo(1, 2, 3, , ,4)
みたいなデフォルト引数の設定されている途中の引数を飛ばせる
超便利機能をどの言語もパクらないのは何でだぜ
0388デフォルトの名無しさん2007/12/08(土) 11:13:51
特許で守られてるからだぜ
0389デフォルトの名無しさん2007/12/08(土) 13:04:27
>>388
kwsk
0390デフォルトの名無しさん2007/12/08(土) 16:34:13
名前つき引数で引数の数どころか順番も適当に変えられるからその機能は不要
0391デフォルトの名無しさん2007/12/08(土) 18:08:27
最近確信したわ
どうあがこうがPythonの方が優れてる
ほんとドキュメントもモジュールも山のよう
Rubyって低レベルなモジュールを作ってホルホルしてる人ばっかじゃん
何やってんの??それってPythonにはもうあるけど(笑)
Rubyistのみなさんはこれからも永久にうんこ生産しつづけて下さいねw
俺はPythonistaになって 有 用 な プログラム作っていきますからwww
スレ汚し失礼、さよならRuby!
0392デフォルトの名無しさん2007/12/08(土) 18:18:02
Python 3.0a2 リリース
ttp://www.python.org/download/releases/3.0/
0393デフォルトの名無しさん2007/12/08(土) 18:49:39
プログラミング言語に著作権ってないんじゃなかったっけ?
0394デフォルトの名無しさん2007/12/08(土) 19:10:02
特許?
著作権?

アイディアに著作権はない。
引数をそういう風に省略できる言語は多分前例があるんじゃないか?
キーワード引数で済むからあまり採用する言語がないだけで。
0395デフォルトの名無しさん2007/12/08(土) 19:18:30
どっちか忘れた
情報処理の刺客の勉強の時にさらっと読んだだけなので・・

キーワード引数ってなんで1.9で入らないの?
0396デフォルトの名無しさん2007/12/08(土) 19:56:34
キーワードだけに際どいと思ったとか
0397デフォルトの名無しさん2007/12/08(土) 21:01:56
構文糖衣以下だからな
0398デフォルトの名無しさん2007/12/08(土) 21:46:46
>>395
仕様が煮詰まらなかった。
0399デフォルトの名無しさん2007/12/08(土) 22:10:15
【審議中】
 ババ        バババ  ババババ
    バババ ∧_,∧  ババ ∧_∧ バババ
  ∧_∧バ( ´・ω・∧_∧ (・ω・` ) ∧_∧
 (´・ω・)=つ≡つ);;)ω(;;(⊂≡⊂=(・ω・`)
 (っ ≡つ=つ (っ>>396 ⊂) ⊂=⊂≡ ⊂)
 /   ) バ∧_∧| x |∧_∧ バ (   \
 ( / ̄∪バ (  ´・) ∪ ̄∪(・`  )ババ ∪ ̄\ )
  ババババ/    )  バババ (   \ ババババ
 バババ  `u-u'. バババ ババ `u-u'
0400デフォルトの名無しさん2007/12/08(土) 22:48:53
そろそろ次のるびま読みたいな。
0401デフォルトの名無しさん2007/12/08(土) 22:51:47
生地核人間がいないんじゃない?
0402デフォルトの名無しさん2007/12/08(土) 23:36:40
>>387
Ruby とかの OO 言語だとあまり不自由しないし、逆に危険は結構あるのでは。
0403デフォルトの名無しさん2007/12/09(日) 09:49:45
ケツからなら省略可ってあまりロジカルな仕様でもないよな
0404デフォルトの名無しさん2007/12/09(日) 13:44:05
>>400
次号の予定は?
0405デフォルトの名無しさん2007/12/09(日) 15:31:31
ruby初心者です。
簡単な画像処理(線を引く・円を描くなど)がしたいのですが何かいいライブラリはありませんか?
いくつか試してみたのですが、PureImageではライブラリ中の’inp.getc’で
文字列を返されてしまい'inp.getc & 0xFF'などが通りません。
加えて、inp.getc[0]やinp.getc[0,1]でも文字コードになってくれません。
rcairoはインストールできそうにありません。

環境はwindows2000でrubyのバージョンは1.9.0を使っています。
よろしくお願いします。
0406デフォルトの名無しさん2007/12/09(日) 15:33:17
1.8つかえば。
0407デフォルトの名無しさん2007/12/09(日) 16:23:17
なぜ初心者が1.9を使う。
0408デフォルトの名無しさん2007/12/09(日) 20:28:40
>>405
RMagicかcairo
0409デフォルトの名無しさん2007/12/09(日) 20:30:34
1.9使っててインストールできないとか泣かないで。根性でインストール汁。
0410デフォルトの名無しさん2007/12/10(月) 06:57:34
>>406-409
1.9だと速くなっていいると聞いてウホウホ使い始めたのですが、
仕様の方もだいぶ変わっているみたいですね。
結局rubyは使わず、C++とSDL_gfxでプログラムを作成しました。
どもでした。
0411デフォルトの名無しさん2007/12/10(月) 08:26:00
>>410
前に調べたところ、PureImage は 2 倍くらいしか速くならなかったよ。
0412デフォルトの名無しさん2007/12/10(月) 10:47:59
おお PureImage は 2 倍まで速くなりますか (^^
0413デフォルトの名無しさん2007/12/10(月) 10:57:51
>>401
記事書く人間より編集する人間がいない
0414デフォルトの名無しさん2007/12/10(月) 13:41:06
windowsでGDは使えますか?

http://www.libgd.org/Main_Page
0415デフォルトの名無しさん2007/12/10(月) 22:15:02
まともなリリースは出来るのか
0416デフォルトの名無しさん2007/12/11(火) 01:00:23
Rails動くらしいからある程度は大丈夫なんじゃない?
あとはmongrel待ちか
0417デフォルトの名無しさん2007/12/11(火) 01:25:01
>414
1.8.6で使えたことは使えた。
mingw版でso作って、mswin32版で使うという変態なことしてるけど無問題w
0418デフォルトの名無しさん2007/12/11(火) 01:35:49
>>415
この時期に preview 出てない時点ですでにまともじゃない
0419デフォルトの名無しさん2007/12/11(火) 03:51:01
ruby-1.9ってのがriteのpreviewなんじゃないの?
奇数バージョンを本番につかうやつはいないだろう。
0420デフォルトの名無しさん2007/12/11(火) 10:39:16
1.9がお勧めできないのは確かだけど、偶数番・奇数番ってのはやめてる。

1.8 系列が、随時変更される 1.8 ブランチと、保守的な 1.8.x ブランチ、
という体制になった。
0421デフォルトの名無しさん2007/12/11(火) 15:03:21
rubyの開発陣って、バグトラッキング使ってないの?
この前MLで、どのissueが残ってましたっけみたいな会話をしてた
0422デフォルトの名無しさん2007/12/12(水) 00:43:08
age
0423デフォルトの名無しさん2007/12/12(水) 22:56:35
>>421
なかださんが報告されたバグの修正を余りにも早くしてしまうので
あまり必要とされてなかった。
0424デフォルトの名無しさん2007/12/13(木) 03:10:00
>>423
へぇ。でも、グローバルになるためには必要よねぇ。切実にそう思う。
Pythonみたいなパブリックでオープンな開発体制にいくにはまだ時間が
かかるのかなぁ。ちょっと急激にメジャーになりすぎて、コミュニティの
成熟が間に合ってない希ガス
0425デフォルトの名無しさん2007/12/13(木) 03:12:44
暇があってコミュニティ運営に情熱をかけられて頭がおかしくない人、というのが現れればいいんだけどね。
たいていどれかの条件が欠けてるんだよねえ。
0426デフォルトの名無しさん2007/12/13(木) 05:45:18
暇があるのと頭がおかしくないのが両立しる可能性は低そう
0427デフォルトの名無しさん2007/12/13(木) 09:03:17
「末端が優秀だとシステムの改善が遅れる」
ことを示す論文がradium softwareで紹介されてたな。
0428デフォルトの名無しさん2007/12/13(木) 10:26:55
ソフトウェアに限った話でもなかろう

というか現実がソフトウェアにも適用できる例だな
現場が優秀だったり超人的努力してたりするとシステムの欠陥は隠れてしまう
書類一枚であっさり消えて無くなる欠陥なのに現場・末端が莫大なコストをかけて消化してしまう
0429デフォルトの名無しさん2007/12/13(木) 11:02:29
あーん?誰が頭がおかしいって?
0430デフォルトの名無しさん2007/12/13(木) 17:53:37
オレだよ、オレオレ。
0431デフォルトの名無しさん2007/12/13(木) 20:59:26
Rubyで任意のオブジェクトをデバッグの為にテキスト出力として
ダンプしたいのですが、いいライブラリはありませんか?

YAML.dumpの出力は理想的なんですが、無名クラスにぶつかると
あぼんするのと、class Classを拡張してやっても実アプリで
やっぱりあぼんすることがあって、代替になりそうなものを探してます。

 $stderr.puts(begin YAML.dump(ex); rescue; ex.inspect; end)

みたいにして今は逃げを打ってますが、inspectの出力だとフォーマットが
あまり目にやさしくなくて困ってます。
0432デフォルトの名無しさん2007/12/13(木) 21:08:07
require 'pp'

foo = 〜〜
pp foo
0433デフォルトの名無しさん2007/12/13(木) 22:15:48
なるほど、PP.pp(ex)でinspectが整形されますね。トンクス。
0434デフォルトの名無しさん2007/12/14(金) 14:05:23
require 'generator'
使ってたコードがruby1.9から、warning: Thread.critical is unsupportedを
吐きまくりです。

ruby1.9からなんか外部イテレータとかFiberとか、ネイティブなgeneratorが
使えるようになったみたいと電波を受信したのですが、使い方とかわかる人いますか?

以下のJavascript-1.7を等価なruby2で書きたいのです
function gen_fib() {
var i = 0, j = 1;
while (true) {
yield i;
i, j = j, i + j;
}
}
var g = gen_fib();
for (let i = 0; i < 30; i++)
print(g.next());
0435デフォルトの名無しさん2007/12/14(金) 17:35:20
def fib
  i = 0
  j = 1
  loop {
    yield i
    i, j = j, i + j
  }
end
g = enum_for(:fib)
30.times{p g.next}
0436デフォルトの名無しさん2007/12/14(金) 19:50:09
>>435
Object#enum_forがない
0437デフォルトの名無しさん2007/12/14(金) 21:26:53
>>436
今は1.9の話をしているので当然あるはず。
04384352007/12/15(土) 01:06:18
>>437
すんません。出来ました。どもです。
0439デフォルトの名無しさん2007/12/15(土) 01:56:29
unless /#{ban.kyokumenid}/ =~ filecontent

の部分で
regexp has `[' without escape という警告がでるのですがどうすればいいのでしょうか?
おそらく正規表現の部分以外は問題ないと思うのですが。
0440デフォルトの名無しさん2007/12/15(土) 01:59:54
/#{Regexp::escape(ban.kyokumenid)}/ みたいにエスケープすれば良いと思われ。
ついでに、もし ban.kyokumenid の中身の文字コードが Shift_JIS なら s オプションを付けれ。
0441デフォルトの名無しさん2007/12/15(土) 02:19:41
ありがとうございます。あと、初心者スレのほうに書くつもりが間違ってしまってすいません。
0442デフォルトの名無しさん2007/12/15(土) 23:21:06
# String#reverse_each_line が欲しいと思った冬。
# 代替品は簡単に作ることができるからいいが。
0443デフォルトの名無しさん2007/12/15(土) 23:52:15
作るまでもないし、そんなの標準にし始めたらキリがないよ
0444デフォルトの名無しさん2007/12/16(日) 02:12:33
to_a.reverse_each で良いな。
0445デフォルトの名無しさん2007/12/16(日) 06:07:31
Rubyのイテレータは配列をメモリに完全に展開した後に回し始めるものばっかだからな
「ちょっとずつ取り出す」ことができてない以上小手先で何をどうやっても無意味

というわけで>>444に一票
0446デフォルトの名無しさん2007/12/16(日) 10:02:21
>>445
RangeもIOもStringも、#eachでto_aはしないぞ。
0447デフォルトの名無しさん2007/12/16(日) 10:26:50
ちょっと関係無いけど、array に to_a があっても良いんではと
思うんだけどどうなんだろう?要素に to_a が無い場合はエラー
で良いけど、常にエラーの必要は直観に反する気がする。

これって馬鹿な発想かしらん。
0448デフォルトの名無しさん2007/12/16(日) 10:39:47
Array#to_aならもうあると思うけど、何か違う挙動を求めてる?

 class Array
  def to_a; self.map{|n| n.to_a }; end
 end

になって欲しいってこと?
0449デフォルトの名無しさん2007/12/16(日) 12:12:03
舌足らずですみません。to_a ならば例えば

[3,5,"foo"].to_a => "3,5,foo"

default の区切りがあって ("," でも " " でも)、to_a(" ")
とか指定できるとか。こんなのあると便利かなと思うんだけど。


0450デフォルトの名無しさん2007/12/16(日) 12:58:15
すまん。joinとかsplitとどう違うのかわからない。
0451デフォルトの名無しさん2007/12/16(日) 13:02:00
区切った文字列を得たいのならjoinでいいし
そもそもto_aは「レシーバーを配列にして返す」メソッドなので
to_aにそれを求めるのは間違いだ
0452デフォルトの名無しさん2007/12/16(日) 13:16:17
to_aをなんか勘違いしてるんだろうな
「配列に変換する」以上の意味はないと思うぞ
0453デフォルトの名無しさん2007/12/16(日) 13:30:19
to_sと混同しているわけでもなさそうだな。
0454デフォルトの名無しさん2007/12/16(日) 13:33:45
begin
old_sep, $, = $,, ','
[1,2,3].to_s
ensure
$, = old_sep
end
めんどいな。

[1,2,3].join(',')でいいや。
0455デフォルトの名無しさん2007/12/17(月) 00:33:12
>>446
String#to_a は無いから Enumerable#to_a が呼ばれて
結果的に String#each が呼ばれるハズでは?
0456デフォルトの名無しさん2007/12/17(月) 02:05:15
そんないつ変わるかわからない内部実装を知らなきゃRubyって使えないんですか?
Stringのto_a (これが toArray の意味だとして)は、独自で実装されて不思議は内容に思うんですが。
その場合は、おそらく文字のエンコードを見て、「一文字」ずつの配列になるんだろうなっていうのが
俺にとっては驚きが最小ですが。
■ このスレッドは過去ログ倉庫に格納されています