1 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 08:39:14 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 ★注意★ Ruby 1.9.1 は初心者にはまだ時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。 (理由:現時点では多くの有名ライブラリやアプリが 1.9.1 に完全対応していないためです。) 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 を習得すれば将来スムーズに 1.9 系に移行できるでしょう。 関連スレやURLは>>2-5 あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・モジュール名やエラーメッセージでググる ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/ ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(自力で訳さずなるべくそのままで) ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる)) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって初心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
448 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:36:14 ] 「or を伴う式をメソッドの引数に渡す場合は二重に括弧が必要となります。 」 ってどういう意味?
449 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:43:24 ] そういうことはしないでくださいね、の意
450 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:43:36 ] puts(nil or "a") だめー puts((nil or "a")) おk
451 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:51:56 ] >puts (nil or "a") a 普通にいけたけど?
452 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:55:07 ] それ括弧なし
453 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:57:32 ] >>448 それ余計な文言だよな 査読者や編集者がやっぱり必要だと思う 「メソッドの引数にする場合にはorを伴う演算部分を括弧でくくって式にする必要があります」が正解 p(false or "yes!") だと「p (false が偽だったら "yes!"」と解釈されて文法エラーになる false or "yes!" がひとつの処理の塊だとわからせるために式として括弧で括り、 (false or "yes!") なおかつ、これ全体を引数として指定してるんだということをわからせるために引数としての括弧を省略せずに使う p() にさっきのカッコつき式を適用して p((false or "yes!")) となる なお、>>451 のように引数括弧相当の存在が明確な場合はエラーにならない この括弧は引数の括弧ではなく式を作る括弧だ
454 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 10:13:03 ] ありがとうございます。 もしかしてメソッド名と引数を括る括弧の間を空白で空けてはいけない? (第一引数の式を括る括弧と解釈される?)
455 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 10:26:20 ] メソッドの引数のカッコはメソッド名と分かれてはいけない が、分かれた場合は「引数のカッコを省略して引数の全体(または一部)をカッコで括った」と解釈される おおむね同じ動作をするので、実際上はみんな深く考えてない puts("ruby") #=> "ruby" をメソッドに渡す puts ("ruby") #=> ("ruby") の結果をメソッドに渡す
456 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 10:36:24 ] ありがとうございました。 ロジカルシンキングではなくイマジネーションでってことですね
457 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 10:51:47 ] いや物凄い論理的だと思うが 引数括弧を省略するのがコンセンサスになってるのはpとかputsとかごく一部だぞ それ以外の普通のメソッドはとりあえず括弧つけとく派が多数派だ irbとかだと読み返すこともないから適当に省略しまくってるが
458 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 10:55:08 ] >>456 意味不明なときは感覚なものととらえてしまうけど、 しばらくRuby使ってなれてきたらロジカルなものだと理解できるようになるよ、がんがれ
459 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 11:34:23 ] ちょっと使ってみたんだけど、この言語(というか処理系?)、は多項式時間や指数関時間な計算をブチ転がそうとすると圧倒的に遅いわね… なによ…まったく!
460 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 12:45:56 ] そこらへんのしっかりしたドキュメントが無いから どうしても試行錯誤で感覚的にならざるを得ない
461 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:33:34 ] >>460 カッコで括ったら式になるってちゃんと書いてあるだろ
462 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:35:08 ] そんなところで試行錯誤した覚えはないなあ
463 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:42:42 ] p(2*10) #=> 20 p (2*10) #=> 20 p(2*10)*2 NoMethodError: undefined method `*' for nil:NilClass p (2*10)*2 #=> 40
464 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:45:38 ] > メソッドの引数のカッコはメソッド名と分かれてはいけない これが書いてないだろ?
465 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:49:36 ] >>459 O(nlogn)の近似アルゴリズムに変えるか、Inline C 使うか、 そもそも C で書け。
466 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:42:27 ] ,―ヽ_(((((_、― ,/ ノ ヽ ~\ / ノ IPA ヽ ~\ / ノ ヽ、 `ヽ | ノ / ̄\ / ̄~ヽ ヽ i | ノ | ノ \ | <●> <●> ( ) \ | | | i / | / ヽ レ i (●_●) / i、 ,-――-、 ・ / i、 <(EEEEE)> ∵/ 多項式時間や指数関時間な計算が遅いのは当たり前だろ i、 \ ./ / \ ーー ,ノ ,,.....イ.ヽヽ、ー-―一ノ゙-、. : | '; \_____ ノ.| ヽ i | \/゙(__)\,| i |
467 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 19:53:39 ] 多項式時間や指数関時間の計算をRubyでやる男の人って・・・
468 名前:デフォルトの名無しさん [2010/02/13(土) 20:57:16 ] マルチバイトの文字列のうち、ASCIIの制御文字にあたるもの(NULLとかCRとか) を削除するには sub /\s+/, '' でいいですか? 0x00〜0x1fだけを削除するにはどうしたらよいですか?
469 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:18:32 ] irb> p "ね\001こ\t大\025す\177き\n".gsub(/[[:cntrl:]]/){''} == "ねこ大すき" true irb> p "ね\001こ\t大\025す\177き\n".gsub(/(?![[:space:]])[[:cntrl:]]/){''} == "ね こ\t大すき\n" true
470 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:18:33 ] 普通に /[\x00-\x1f]/ じゃダメなの?
471 名前:デフォルトの名無しさん [2010/02/13(土) 21:21:50 ] 飼ってたインコを食べたので猫はきらいです
472 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:29:55 ] >>469 名前つきでわかりやすそうに見えて実はわかりにくいというなんとも
473 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:30:57 ] キャリッジリターンやラインフィードは立派なコントロールコードですよ
474 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:35:40 ] >>470 いいんじゃまいか
475 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:42:39 ] > 0x00〜0x1fだけを削除するにはどうしたらよいですか? こういうの見るたび、DELは消さなくていいんだろうか、といつも思う
476 名前:デフォルトの名無しさん [2010/02/13(土) 21:55:53 ] ISO-2022-JP文字列に対して実行してESC(0x1B)を消されてしまえー。
477 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 22:07:14 ] >>467 Ruby を愛しています ゆるしてください
478 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 22:25:51 ] 童貞のくせに愛なんて言葉を軽々しく使うな
479 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 22:46:25 ] rubyはJavaの1000倍の生産性があると聞いてやってきました
480 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 22:54:29 ] エロ画像を一括でスクリプトとか書くならそれぐらいあるかもしれない
481 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 23:05:47 ] RubyでJSON(と言うかJavaScriptのオブジェクトの記述)をパースしたいのですが require "yaml" p YAML.load('{"num":"123456789"}') とかやるとエラーになってパースできません。何か良い方法があったら教えてください p YAML.load('{"num": "123456789"}') ならパースできるようですが、JavaScript的にはどっちでも通るはず・・・
482 名前:デフォルトの名無しさん [2010/02/13(土) 23:39:39 ] # 正しいところを見ているのかちょっと自信がないけど。 yaml.org/spec/1.1/index.html#id933010 Explicit Values An explicit value is denoted by the “:” indicator, followed by separation spaces. 仕様かも?
483 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 00:41:07 ] 面倒でなければ、gem install jsonで JSON.parse(json_str) するのが簡単で確実。
484 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 08:04:15 ] ちょっとあなた RubyInlineでインスタンス変数を参照する方法がわかりませんわよ
485 名前:デフォルトの名無しさん [2010/02/14(日) 10:32:41 ] jp.rubyist.net/magazine/?0009-YAML にもコロンの後にはスペースとしつこく書いてあるな。 YAMLのフロースタイルがJSONとして評価できたとしても、逆ではないってことかな。
486 名前:デフォルトの名無しさん [2010/02/14(日) 10:34:53 ] >>484 使ったことないけど、Cの世界にいるときは rb_obj_ivar_get じゃねーの?
487 名前:デフォルトの名無しさん [2010/02/14(日) 10:38:14 ] ja.wikipedia.org/wiki/JavaScript_Object_Notation 他のデータ記述法との関係 但し、厳密にはJSONはYAMLのサブセットではない[3]。具体的には配列とハッシュの区切りを それぞれ, のようにカンマ+スペースの形にしたときにのみYAMLのサブセットとなる。したがっ て、YAML.loadといったYAMLのルーチンを流用してJSONデータを読み込む場合は、あらかじ め区切りの文字をYAMLと互換性を保つようにしておく必要がある。
488 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 12:42:36 ] さすがにJSONをYAMLのライブラリで読むのは横着だろうw
489 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 13:02:11 ] 何でそんなしょぼいところで非互換性持たせてるんだ
490 名前:デフォルトの名無しさん [2010/02/14(日) 13:11:56 ] たまたま似てるだけであって互換性を意図的に持たせようとしたわけではないから。
491 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 13:20:42 ] たまたまと言い張るには似すぎだろ
492 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 13:25:56 ] >>489 サブセットにしようと思って作ったんだけど手作業での網羅が漏れてたらしくて
493 名前:デフォルトの名無しさん [2010/02/14(日) 13:42:37 ] 何に怒りをぶつけているんだろう。
494 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 14:12:08 ] お客様がいらしてるご様子
495 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 14:20:09 ] >>494 こんなので「怒ってる」とかありえんよな 素直にMLにだけ引き篭もってろと
496 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 15:41:12 ] ruby1.9.1(mswin32)で動くプロファイラありませんか? 標準のは遅すぎて使い物になりません
497 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 15:49:59 ] 自分で作れるよ
498 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:25:54 ] どうやって作るのですか?
499 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:43:08 ] 掲示板で説明できるようなものじゃないけど、 profile や profiler を見れば既存の作り方は書いてあるよ。 あとは処理速度を向上させる工夫をするなり、 自分で一から作るなりすればいいよ。
500 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:49:37 ] それは標準のものでは? 自分で書いたからといって速くなるとは思えませんが如何でしょうか?
501 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:55:21 ] ちょっとお茶しませんか?
502 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:58:01 ] >>500 そんなの自分次第やん
503 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:01:48 ] Rubyの使用メモリ量を測る方法って何かありますか? 終了までの最大量だけでもわかるといいんですが
504 名前:デフォルトの名無しさん [2010/02/14(日) 17:09:23 ] Linuxだと "/proc/#{$$}/status" とかを読んだらいろいろ分かるかもしれない。 ほかは知らん。
505 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:10:15 ] >>503 Rubyとしては提供されてない OSから観測してもらうしかない
506 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:10:38 ] UNIX なら top Windows ならタスクマネージャ
507 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:12:04 ] valgrind使えばいけるかも
508 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:13:53 ] まあ、/proc 使っていいなら stat のポーリングで top コマンドみたいにやればいいんだけどさ。 libproc.so って /proc の出力を露骨に sscanf() してるから あんまり汎用性ないよなーと思って。
509 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:14:45 ] 汚いコピペだなあ
510 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:21:46 ] >>504 お前帰れって言われてんだよ
511 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:25:01 ] >>504-508 ありがとうございます Windowsで見たいのですがcygwinなら/proc/pid/statusは同様に使えそうな感じなんで 詳しく調べてみます
512 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:25:36 ] >>502 自分次第とおっしゃいますと具体的にはどのような工夫がありますでしょうか?
513 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:33:21 ] ruby-profは?コンパイルはがんばれ
514 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:43:59 ] いや、早い話、インストールするだけで動くものはありませんかってことです。 ruby-profはドキュメントでは1.9対応を謳っていましたがWindows用のものは msvcrt-ruby18.dllが見つからないと表示され、1.8用のDLLを参照しようと してしまい動きませんでした。
515 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 18:05:12 ] Rubyコミュニティで自分で作れと言われたらそれは ありませんごめんなさいという意味です。 素直にあきらめましょう。
516 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 18:21:32 ] それを先に言ってください
517 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 18:32:48 ] 無いなら自分で作ればいいってだけの話だな。
518 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 18:53:46 ] 初心者にそれを求めるのは酷
519 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 18:59:13 ] というか普通に動くが
520 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 19:02:58 ] 何を使っているんですか?
521 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 19:16:29 ] やり方わからなくて詰まるくらいなら経験たまるまで素直に1.8だけ使えやオラ、とか思わなくもない
522 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 19:38:21 ] コンパイルさえできればいいんだから、コンパイラ入れるかmingw32使ってみるというのはどう
523 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 20:48:23 ] 妹にチョコもらってしまった…
524 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 21:59:36 ] やれるのかやれないのかハッキリしてよ
525 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:04:51 ] チョコくれたんだから実はOKという意思表示なのでは
526 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:07:05 ] 女だってやりたいんだよ 童貞は知らないだろうけど
527 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:24:22 ] 女がやりたがってるのは好きな男とだぞ 勘違いしちゃダメだぞ
528 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:25:07 ] やべ 勘違いしてた
529 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:26:22 ] インターフェースは同じはず そこはポリモーフィズムで…
530 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:27:51 ] スレ違いだからもう終わりよ、みなさん。 いろいろと参考になりましたが。
531 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 23:25:51 ] 童貞きめえ 女に植えてんだなかわいそうにおまえら
532 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 23:29:19 ] コンピュータばかりいじりすぎて 外の世界が見えません。
533 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:06:07 ] gemをインストールしたあと使おうとすると no such file to load になるんだけど どうすれば使えるようになるの?
534 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:25:35 ] >>533 そのgemのインストール自体は正常に終わっているとすると、 require 'rubygems' require 'gemのライブラリ' で使えるようになるはずだが。(つまり、毎回rubygemsをrequireする必要がある) たとえば、ちょっとjsonの場合はこんな感じ。 $ sudo gem install json $ irb irb> require 'rubygems' irb> require 'json' irb> JSON.parse('{"num":"123456789"}') => {"num"=>"123456789"}
535 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:26:04 ] require "rubygems"
536 名前:534 mailto:sage [2010/02/15(月) 00:26:52 ] 書き途中で送信してしまった。 × たとえば、ちょっとjsonの場合はこんな感じ。 ○ たとえば、ちょっと前のレスのjsonの場合はこんな感じ。
537 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:28:56 ] webos-goodies.jp/archives/51106257.html
538 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:57:22 ] sudoをつけてなかったのが敗因だった。ありがとう
539 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 01:12:58 ] --pre とか付けると no such file to load となる すばらしいマイエンバイロンメント ruby 1.8.2、 gems 0.9 いきなり詰んだorz
540 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 01:19:53 ] ysky.vox.com/library/post/gems のオプション仕様が変わった.html あした gems 自体を update させてもう一度やってみょ 寝るべzzz
541 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 01:30:34 ] いちはちに…
542 名前:デフォルトの名無しさん [2010/02/15(月) 07:52:31 ] >>539 なんのための--preか知らんが、Rails 3βとかは1.8.7以降でないと動かんぞ。
543 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 08:05:05 ] ていうか1.8.2は5年以上前の不安定版なんだが 今更これ使うくらいなら俺はPerlをやる
544 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 08:13:11 ] Pythonは?
545 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 09:07:03 ] JSON is YAML って言っている人はいるけど、本当に上位互換になるのは 1.2 から。 で、Ruby 標準添付の syck は 1.0 なので
546 名前:デフォルトの名無しさん [2010/02/15(月) 10:19:49 ] _why行方不明だし、どうなるんだろ Syck。
547 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 10:32:31 ] どうなるもなにも、これまでの「優秀だったがサポートがなくなったライブラリ」と同様の道を辿る
548 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 10:49:22 ] 1.8用のtranscodeっぽいものってない? バイト列とエンコーディングを投げるとバイト列の適切な区切り位置を記憶してくれるライブラリみたいな