[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 05/09 14:42 / Filesize : 176 KB / Number-of Response : 723
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 34



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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

649 名前:645 mailto:sage [2010/02/19(金) 10:33:33 ]
ブロードバンドスピードテスト 通信速度測定結果
www.bspeedtest.jp/ v3.0.0
測定時刻 2010/02/18 10:27:07
回線種類/線路長/OS:光ファイバ/-/Windows XP/-
サービス/ISP:-/-
サーバ1[N] 23.7Mbps
サーバ2[S] 25.8Mbps
下り受信速度: 25Mbps(25.8Mbps,3.22MByte/s)
上り送信速度: 17Mbps(17.6Mbps,2.2MByte/s)

これで7時間とかおかしいと思うんですがなんででしょうか
firefoxとか関係ないですよね
昨日の12時ぐらいにやっても同じだったんでなんででしょう

650 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 10:37:40 ]
>>643
何か目的があるの?
例えばthreadでeachのようなものを定義してreturnしたいとか?

651 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 10:41:16 ]
>>649
こっちは転送率通常
回線経路の問題かも

現在のRubyInstallerはrubygemパッケージで未対応が存在するMinGW32版だけどその覚悟はある?

652 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 11:04:06 ]
>>612
ぐぐっても見つからないんだが、どこにあるの?

653 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 11:06:45 ]
>>652
こいつにレスしたのお前が2番目だぞ

654 名前:645 mailto:sage [2010/02/19(金) 11:17:08 ]
他のPCでも試してみます
>現在のRubyInstallerはrubygemパッケージで未対応が存在するMinGW32版だけどその覚悟はある?
これの意味がよくわかりませんが初心者なのでテンプレ通り1.9.1やめて1.8.7落とそうと思ってます。
rubyinstaller-1.8.7-p249-rc2.exe ←これでいいんですよね?
star rubyってのをやりたいんですけどこれはrubyの拡張ライブラリ?っていう位置付けでいいんですか?

655 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 11:37:33 ]
しかしなんでわざわざRubyなんかでゲーム作ろうと思うんかね
「○○がRuby経由でもできるようっひょー」が目的であって、Rubyから○○を学ぶのには基本不適だろうに

>>654
arton.hp.infoseek.co.jp/indexj.html
こっちの入れれ

656 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 15:16:08 ]
$KCODE ='s'
p Dir.entries(Dir.pwd)
とやると
[".", "..","う\202\311", "しのり\202\361", "すず\202\310"]
こんなのが返ってくるのですが$KCODE以外に何をすれば日本語フォルダを扱えるのでしょうか?

WindowsXP SP3 Rumixで導入した1.8.7を使ってます

657 名前:645 mailto:sage [2010/02/19(金) 15:32:08 ]
activescriptrubyインストールできましたありがとうございます
hello_world表示できました
エディタがあるようですがRDEとかRDTがあるようですが
みたかんじRDEがとっつきやすそうにググったら見えたんですが
RDEでいいんでしょうか?




658 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 15:39:02 ]
あー、Shift_JISでも起こるのか
早めに改定出して欲しいなあ

>>656
内部的には普通に扱えてる
p は内容そのものではなく、画面に表示しやすいように整形してから表示する
しかもバグがあって最後に日本語文字があると必ず化ける
putsで表示してみ

659 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 15:40:50 ]
>>657
どっちも別にエディタじゃない気がするが、どうしてもどっちかを使いたいのならRDEでいいよ

660 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 18:12:36 ]
>>658
バグですか
こっちはこっちで勘違いしたことやってたので全く気づきませんでしたw
ありがとうございます

661 名前:デフォルトの名無しさん [2010/02/19(金) 21:30:25 ]
文字コードを変換して読み書きしてくれるFIleクラスのラッパーライブラリってありますか?
イメージとしては

SjisFileWriter.open(path, "utf-8") do |file|
 file << utf8string
end

とすると、sjisに変換して書き込んでくれるようなものを期待してます。
closeするまでStringIOに溜め込んで一気に変換しようとしたのですが、
データが大きくてサーバーがパンクするのであきらめました。

もしかしてコツがあって、こういうのは簡単に書けるものなんでしょうか?


662 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 21:35:25 ]
改行があるのなら、改行ごとに読み込んで改行ごとに文字エンコーディングを変換して最後に連結すればいい

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まで待て






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<176KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef