- 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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
- 663 名前:デフォルトの名無しさん [2010/02/19(金) 21:51:24 ]
- 1.9だと希望とほぼ同等のことが出来るんだけどね。
1.8の場合、文字の途中をどうするかといったことを考えずにやるなら 出力に使うメソッドをひととおりコード変換するようにオーバーライド すればよいと思う。 writeだけのオーバーライドでいいのかな。
- 664 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 21:53:08 ]
- >>661
1.8 と 1.9 で対処が変わってくると思うので Ruby のバージョン教えれ
- 665 名前:デフォルトの名無しさん [2010/02/19(金) 21:59:19 ]
- >>662
Fileクラスの振りをしてそういうことをするには、どんな風なコードを書けばいいのでしょうか? FasterCSVは内部で、 @io << row.map(&@quote).join(@col_sep) + @row_sep # quote and separate こういうことをやっているので、コンストラクタで@ioに渡してあげると 書き込みのタイミングでエンコーディング変換してくれる Fileオブジェクトがあればいいなと思っています。
- 666 名前:デフォルトの名無しさん [2010/02/19(金) 22:00:39 ]
- >>663, 664
すみません、リロードしてませんでした。 Rubyのバージョンは1.8.7です。
- 667 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:03:48 ]
- これはひどい
- 668 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:04:38 ]
- すいませんリロードしてませんでした
>>667は>>663についてです
- 669 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:09:39 ]
- これはひどい
- 670 名前:661 mailto:sage [2010/02/19(金) 22:10:20 ]
- もしかしてこんなのでいいんでしょうか?動くかちょっと試してみます。
class SjisFileWriter < File def <<(str) str.kconv(Kconv::UTF8, Kconv::SJIS) end end
- 671 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:12:03 ]
- すいませんリロードしてませんでした
>>669は>>668についてです
- 672 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:13:13 ]
- これはひどい
- 673 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:15:56 ]
- 末尾再起スレでやれ
- 674 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 23:23:37 ]
- なんなんだこの流れはw
- 675 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 15:25:28 ]
- 二次元配列的クラスを定義して配列の配列と透過的になるよう要素に
a[i][j] のようにアクセスできるようにしたいんですがどうすればいいでしょうか?
- 676 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 16:26:07 ]
- >>675
無理 …いや、2次元くらいなら無理じゃないんだが、 その見栄えを保持するためだけに計算する遅いクラスになるぞ NArray の a[i, j, k] みたいな記法じゃだめですか
- 677 名前:デフォルトの名無しさん [2010/02/20(土) 17:59:39 ]
- プログラマ三大美徳というものがありますが
Rubistにもそういったものがあるのでしょうか?
- 678 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 18:05:30 ]
- 誰かの発言に影響されるのは嫌い。
- 679 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 18:09:12 ]
- >>677
なにもない というか > Rubist というようなものがない Railsやってる人とは仲悪いし
- 680 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 18:30:08 ]
- Railist vs Rubyist
- 681 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 20:07:31 ]
- >>676
ありがとうございました。 配列の配列ですでに書いてある奴をクラスに直したいなと思ったもので。
- 682 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 21:51:45 ]
- > Railist
むしろレースウェイズと呼びたくなるファミスタ脳。
- 683 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 22:28:14 ]
- Railsint(笑)
ポッポ屋でいいだろw
- 684 名前:682 mailto:sage [2010/02/20(土) 22:37:43 ]
- 今さら誤字に気付いた。レイルウェイズだな。
オリックスと近鉄が合併するって時にゲームファンの誰もが口にしたっけ。
- 685 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 02:19:19 ]
- こんなコードを書きまんた
---------------------------------------- # test.rb class Foo def initialize(&func) @func = lambda(&func) end def bar(x) @func.call(x) end end foo = Foo.new{ |x| return x**2 } p foo.bar(2) ---------------------------------------- いごきました $ ruby -v ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10] $ ruby test.rb 4 いごきませんでした $ ruby1.9 -v ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-darwin10] $ ruby1.9 test.rb test.rb:11:in `block in <main>': unexpected return (LocalJumpError) from test.rb:6:in `call' from test.rb:6:in `bar' from test.rb:13:in `<main>' どうして?
- 686 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 03:16:26 ]
- >> 685
難いww とりあえず、lambdaとprocの違いはreturnの挙動の違いだよな。 そのreturnの挙動を決めるタイミングが1.8と1.9で違うんじゃね?
- 687 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 08:22:09 ]
- ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/35167
ここらへんのか
- 688 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 10:53:49 ]
- んじゃ1.8と1.9両方で美味しく動作する
foo = Foo.new{ |x| return x**2 } p foo.bar(2) を実装するにはどうしたらいいんだべ? foo = Foo.new(lambda{ |x| return x**2 } p foo.bar(2) なら作れたけどラムダラムダ五月蝿い感がある。
- 689 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 11:03:02 ]
- ブロックの中で最後に評価された式の値が暗黙で返るのを利用するのがエレガントだと思う
- 690 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 11:27:33 ]
- 仕事でlambda使うケースなんて滅多にないけどな
- 691 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 11:32:27 ]
- class Foo
def initialize @func = lambda end def bar(x) @func.call(x) end end foo = Foo.new{ |x| return x**2 } p foo.bar(2) イケルがなぜか -:3: warning: tried to create Proc object without a block と出る
- 692 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 11:52:51 ]
- なぜかもなにもそのまんまの理由だと思うが
- 693 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 12:33:42 ]
- >>692
class Foo def initialize @func = proc end def bar(x) @func.call(x) end end foo = Foo.new{ |x| x**2 } p foo.bar(2) だと警告がでないのはなんで?
- 694 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 12:36:28 ]
- lambdaとproc(とProc.new)は処理が違う
- 695 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 12:38:29 ]
- Rubyのめんどくさいとこベスト3に入るところだな
きちんとした解説ページとかないものか
- 696 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 15:12:28 ]
- # ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mswin32]
p lambda{return 0}.call #=> 0 p lambda(&lambda{return 0}).call #=> 0 p lambda(&proc{return 0}).call #=> 0 # ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mswin32] p lambda{return 0}.call #=> 0 p lambda(&lambda{return 0}).call #=> 0 p lambda(&proc{return 0}).lambda? #=> false p lambda(&proc{return 0}).call #=> unexpected return (LocalJumpError) 1.9だとKernel.#lambdaにprocを渡すとprocが帰ってくるんだな 仕様なのかBUGなのか
- 697 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 15:14:30 ]
- &lambdaは&lambdaの誤りね
- 698 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 16:44:02 ]
- 自分は組込みの仕事なのでCを使っているんだけど、
Rails以外で仕事でRubyを使う場合、どんなものを 作っているの?
- 699 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 17:13:17 ]
- 自分の効率アップ用途以外には使わない俺スクリプト
仕事に使う中間物の生成プログラム 社内オンリーの更新頻度が高い内製プログラム Rubyソースコードを商品にすることはほぼ確実にない Rubyスクリプトが作り出したものを売ったり配ったりすることも少ないかと なくても無論なんとかなるしプロダクト自体には全く影響しないが、能率ががくっと落ちる もちろん本質的にはRubyでなくてもよい PerlやPython、JavaやC++(えー)で超速く安定に作れるならむしろそっちのほうがよい
- 700 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 17:23:18 ]
- >>699
なるほど、製品レベルとなるにはまだ先のことですかね。 自分にとって現時点ではRubyは業務とは無縁の存在だけど 勉強はしておこう。
- 701 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 17:25:26 ]
- プログラマーズベストフレンドという文言がそのまんまだな
言語オフィシャルレベルでこれを標榜してる傲ま…いや野心的なところは見たことがない 配布ライブラリなんかで言ってるところは少なくないんだけど ttp://www.google.com/search?num=50&hl=en&lr=&q=%22a+programmer%27s+best+Friend%22
- 702 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 17:30:15 ]
- > 製品レベルとなるにはまだ先のことですかね
永遠にないんじゃないかなあ、と最近思ってる そういう方向には進化してない気がするし、製品を作ろうとしないほうがうまくコード書ける気がする Eclipseがなくても製品は作れるが、ないと死ぬ、そんな位置にRubyが入り込むんじゃないかと
- 703 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:33:03 ]
- matzもRubyは同僚に差をつける秘密兵器として使ってほしいとか
なんとか昔言ってたしな。
- 704 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:43:16 ]
- Rubyに関わったせいで同僚と差がついてしまいましたorz
- 705 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:53:08 ]
- Rubyでプログラミングしてると「何とかして面白いコードは書けないか」と、そこに注力して仕事が進まないんだが。
どうしてくれる!Matzは責任とれ!
- 706 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:53:35 ]
- 他社に差をつける秘密兵器だと思ってた時期がおれにもありました
- 707 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:58:44 ]
- >>706
間違いじゃないけどね 全員がRuby相当のものを修めてる会社は強いはずだ
- 708 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:00:55 ]
- しかしつまらんスレだな
- 709 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:03:43 ]
- ま、ここはRubyの開発者が名無しで書き込むスレだからな。
- 710 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:13:20 ]
- 何かこうエロい話題は無い物か。
- 711 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:16:47 ]
- おっぱいクラスとか作れば?
- 712 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:43:44 ]
- >>710
このスレに何を求めてるんだw
- 713 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:45:02 ]
- Rubyのアイコンが亀甲縛りに見えるぐらいしか思いつかない
- 714 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 01:33:59 ]
- >>711
おまえのエロの限界はおっぱいまでなのか? しかも虚構のおっぱいクラス
- 715 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 02:22:29 ]
- エロい話題のところすみません
半年ほど前は普通にgem installできていたはずなのですが、つい最近gemを新たにupdate、installしようとすると以下のようなエラーが出るようになりました $ sudo gem install hogehoge ERROR: While executing gem ... (Errno::EEXIST) File exists - /opt/local/bin/gem 環境はMac OS X(10.4.11)で、 RubyGems Environment: - RUBYGEMS VERSION: 1.3.5 - RUBY VERSION: 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin8] - INSTALLATION DIRECTORY: /opt/local/bin/gem/: - RUBY EXECUTABLE: /opt/local/bin/ruby - EXECUTABLE DIRECTORY: /opt/local/bin/gem/:/bin - RUBYGEMS PLATFORMS: - ruby - x86-darwin-8 - GEM PATHS: - /opt/local/bin/gem/: - /Users/******/.gem/ruby/1.8 - /opt/local/lib/ruby/gems/1.8 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000 - :sources => ["gems.rubyforge.org/", "gems.github.com"] - REMOTE SOURCES: - gems.rubyforge.org/ - gems.github.com です
- 716 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 02:28:35 ]
- エラーが出るようになったのはわかった。で?
- 717 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 02:37:30 ]
- /opt/local/bin/gem か /opt/local/bin/gem/ の権限がおかしいように見える
- 718 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 02:53:53 ]
- >>717
opt/local/bin以下をls -lしたところgemは -rwxrwxr-x 2 root admin 548 Feb 15 15:18 gem となっていますがrootではなくユーザー権限の方がいいのでしょうか
- 719 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 04:06:02 ]
- 権限をユーザ名にしてみたり-rwxrwxrwxにしてみたりしましたがやはり状況は変わりませんでした
なんとなく - INSTALLATION DIRECTORY: /opt/local/bin/gem/: の部分が /opt/local/lib/ruby/gems/1.8 になるべきなんじゃないかという気がしてきたので今後はそちらから攻めてみようと思います /opt/local/bin/gemは実行ファイルなのでDIRECTORYっておかしいですよね…
- 720 名前:715 mailto:sage [2010/02/23(火) 04:53:36 ]
- 連投すみません
GEM_HOME変えたら直りました 昔入れたrailsとかも全部こっちに入ってたのでいつの間にか変更されてたみたいです ご協力ありがとうございました
- 721 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 15:00:19 ]
- オッパイクラス マダー?
- 722 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 22:20:30 ]
- Ruby2.0まで待て
|

|