Ruby 初心者スレッド Part 34at TECH
Ruby 初心者スレッド Part 34 - 暇つぶし2ch655:デフォルトの名無しさん
10/02/19 11:37:33
しかしなんでわざわざRubyなんかでゲーム作ろうと思うんかね
「○○がRuby経由でもできるようっひょー」が目的であって、Rubyから○○を学ぶのには基本不適だろうに

>>654
URLリンク(arton.hp.infoseek.co.jp)
こっちの入れれ

656:デフォルトの名無しさん
10/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
10/02/19 15:32:08
activescriptrubyインストールできましたありがとうございます
hello_world表示できました
エディタがあるようですがRDEとかRDTがあるようですが
みたかんじRDEがとっつきやすそうにググったら見えたんですが
RDEでいいんでしょうか?


658:デフォルトの名無しさん
10/02/19 15:39:02
あー、Shift_JISでも起こるのか
早めに改定出して欲しいなあ

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

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

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

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

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

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

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


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

663:デフォルトの名無しさん
10/02/19 21:51:24
1.9だと希望とほぼ同等のことが出来るんだけどね。

1.8の場合、文字の途中をどうするかといったことを考えずにやるなら
出力に使うメソッドをひととおりコード変換するようにオーバーライド
すればよいと思う。
writeだけのオーバーライドでいいのかな。


664:デフォルトの名無しさん
10/02/19 21:53:08
>>661
1.8 と 1.9 で対処が変わってくると思うので Ruby のバージョン教えれ

665:デフォルトの名無しさん
10/02/19 21:59:19
>>662
Fileクラスの振りをしてそういうことをするには、どんな風なコードを書けばいいのでしょうか?

FasterCSVは内部で、
 @io << row.map(&@quote).join(@col_sep) + @row_sep # quote and separate

こういうことをやっているので、コンストラクタで@ioに渡してあげると
書き込みのタイミングでエンコーディング変換してくれる
Fileオブジェクトがあればいいなと思っています。


666:デフォルトの名無しさん
10/02/19 22:00:39
>>663, 664

すみません、リロードしてませんでした。
Rubyのバージョンは1.8.7です。


667:デフォルトの名無しさん
10/02/19 22:03:48
これはひどい

668:デフォルトの名無しさん
10/02/19 22:04:38
すいませんリロードしてませんでした
>>667>>663についてです

669:デフォルトの名無しさん
10/02/19 22:09:39
これはひどい

670:661
10/02/19 22:10:20
もしかしてこんなのでいいんでしょうか?動くかちょっと試してみます。

class SjisFileWriter < File
 def <<(str)
  str.kconv(Kconv::UTF8, Kconv::SJIS)
 end
end


671:デフォルトの名無しさん
10/02/19 22:12:03
すいませんリロードしてませんでした
>>669>>668についてです

672:デフォルトの名無しさん
10/02/19 22:13:13
これはひどい

673:デフォルトの名無しさん
10/02/19 22:15:56
末尾再起スレでやれ

674:デフォルトの名無しさん
10/02/19 23:23:37
なんなんだこの流れはw

675:デフォルトの名無しさん
10/02/20 15:25:28
二次元配列的クラスを定義して配列の配列と透過的になるよう要素に
a[i][j]
のようにアクセスできるようにしたいんですがどうすればいいでしょうか?

676:デフォルトの名無しさん
10/02/20 16:26:07
>>675
無理

…いや、2次元くらいなら無理じゃないんだが、
その見栄えを保持するためだけに計算する遅いクラスになるぞ
NArray の a[i, j, k] みたいな記法じゃだめですか


677:デフォルトの名無しさん
10/02/20 17:59:39
プログラマ三大美徳というものがありますが
Rubistにもそういったものがあるのでしょうか?

678:デフォルトの名無しさん
10/02/20 18:05:30
誰かの発言に影響されるのは嫌い。

679:デフォルトの名無しさん
10/02/20 18:09:12
>>677
なにもない
というか
> Rubist
というようなものがない
Railsやってる人とは仲悪いし

680:デフォルトの名無しさん
10/02/20 18:30:08
Railist vs Rubyist

681:デフォルトの名無しさん
10/02/20 20:07:31
>>676
ありがとうございました。
配列の配列ですでに書いてある奴をクラスに直したいなと思ったもので。

682:デフォルトの名無しさん
10/02/20 21:51:45
> Railist
むしろレースウェイズと呼びたくなるファミスタ脳。

683:デフォルトの名無しさん
10/02/20 22:28:14
Railsint(笑)
ポッポ屋でいいだろw

684:682
10/02/20 22:37:43
今さら誤字に気付いた。レイルウェイズだな。
オリックスと近鉄が合併するって時にゲームファンの誰もが口にしたっけ。

685:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/22 03:16:26
>> 685
難いww
とりあえず、lambdaとprocの違いはreturnの挙動の違いだよな。
そのreturnの挙動を決めるタイミングが1.8と1.9で違うんじゃね?

687:デフォルトの名無しさん
10/02/22 08:22:09
URLリンク(blade.nagaokaut.ac.jp)
ここらへんのか

688:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/22 11:03:02
ブロックの中で最後に評価された式の値が暗黙で返るのを利用するのがエレガントだと思う

690:デフォルトの名無しさん
10/02/22 11:27:33
仕事でlambda使うケースなんて滅多にないけどな

691:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/22 11:52:51
なぜかもなにもそのまんまの理由だと思うが

693:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/22 12:36:28
lambdaとproc(とProc.new)は処理が違う

695:デフォルトの名無しさん
10/02/22 12:38:29
Rubyのめんどくさいとこベスト3に入るところだな
きちんとした解説ページとかないものか

696:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/22 15:14:30
&lambdaは&lambdaの誤りね

698:デフォルトの名無しさん
10/02/22 16:44:02
自分は組込みの仕事なのでCを使っているんだけど、
Rails以外で仕事でRubyを使う場合、どんなものを
作っているの?

699:デフォルトの名無しさん
10/02/22 17:13:17
自分の効率アップ用途以外には使わない俺スクリプト
仕事に使う中間物の生成プログラム
社内オンリーの更新頻度が高い内製プログラム

Rubyソースコードを商品にすることはほぼ確実にない
Rubyスクリプトが作り出したものを売ったり配ったりすることも少ないかと

なくても無論なんとかなるしプロダクト自体には全く影響しないが、能率ががくっと落ちる
もちろん本質的にはRubyでなくてもよい
PerlやPython、JavaやC++(えー)で超速く安定に作れるならむしろそっちのほうがよい

700:デフォルトの名無しさん
10/02/22 17:23:18
>>699
なるほど、製品レベルとなるにはまだ先のことですかね。
自分にとって現時点ではRubyは業務とは無縁の存在だけど
勉強はしておこう。

701:デフォルトの名無しさん
10/02/22 17:25:26
プログラマーズベストフレンドという文言がそのまんまだな

言語オフィシャルレベルでこれを標榜してる傲ま…いや野心的なところは見たことがない
配布ライブラリなんかで言ってるところは少なくないんだけど
URLリンク(www.google.com)

702:デフォルトの名無しさん
10/02/22 17:30:15
> 製品レベルとなるにはまだ先のことですかね
永遠にないんじゃないかなあ、と最近思ってる
そういう方向には進化してない気がするし、製品を作ろうとしないほうがうまくコード書ける気がする
Eclipseがなくても製品は作れるが、ないと死ぬ、そんな位置にRubyが入り込むんじゃないかと

703:デフォルトの名無しさん
10/02/22 21:33:03
matzもRubyは同僚に差をつける秘密兵器として使ってほしいとか
なんとか昔言ってたしな。

704:デフォルトの名無しさん
10/02/22 21:43:16
Rubyに関わったせいで同僚と差がついてしまいましたorz

705:デフォルトの名無しさん
10/02/22 21:53:08
Rubyでプログラミングしてると「何とかして面白いコードは書けないか」と、そこに注力して仕事が進まないんだが。
どうしてくれる!Matzは責任とれ!

706:デフォルトの名無しさん
10/02/22 21:53:35
他社に差をつける秘密兵器だと思ってた時期がおれにもありました

707:デフォルトの名無しさん
10/02/22 21:58:44
>>706
間違いじゃないけどね
全員がRuby相当のものを修めてる会社は強いはずだ

708:デフォルトの名無しさん
10/02/22 22:00:55
しかしつまらんスレだな

709:デフォルトの名無しさん
10/02/22 22:03:43
ま、ここはRubyの開発者が名無しで書き込むスレだからな。

710:デフォルトの名無しさん
10/02/22 22:13:20
何かこうエロい話題は無い物か。

711:デフォルトの名無しさん
10/02/22 22:16:47
おっぱいクラスとか作れば?

712:デフォルトの名無しさん
10/02/22 22:43:44
>>710
このスレに何を求めてるんだw

713:デフォルトの名無しさん
10/02/22 22:45:02
Rubyのアイコンが亀甲縛りに見えるぐらいしか思いつかない

714:デフォルトの名無しさん
10/02/23 01:33:59
>>711
おまえのエロの限界はおっぱいまでなのか?
しかも虚構のおっぱいクラス

715:デフォルトの名無しさん
10/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 => ["URLリンク(gems.rubyforge.org)", "URLリンク(gems.github.com)<)
- URLリンク(gems.github.com)
です


716:デフォルトの名無しさん
10/02/23 02:28:35
エラーが出るようになったのはわかった。で?

717:デフォルトの名無しさん
10/02/23 02:37:30
/opt/local/bin/gem か /opt/local/bin/gem/ の権限がおかしいように見える

718:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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
10/02/23 04:53:36
連投すみません
GEM_HOME変えたら直りました
昔入れたrailsとかも全部こっちに入ってたのでいつの間にか変更されてたみたいです
ご協力ありがとうございました

721:デフォルトの名無しさん
10/02/23 15:00:19
オッパイクラス マダー?

722:デフォルトの名無しさん
10/02/23 22:20:30
Ruby2.0まで待て


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch