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

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っぽいものってない?
バイト列とエンコーディングを投げるとバイト列の適切な区切り位置を記憶してくれるライブラリみたいな

549 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 10:59:07 ]
>>546
Aaron さんが互換ライブラリを開発中

>>548
Iconv じゃダメですか

550 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:04:17 ]
data = Array.new
data = [1, 2, [3, 4, [5]], 6]
多次元配列のデータがあります。
このデータを、次のように1次元配列に格納しなおしたいです。
p data
=> [1, 2, 3, 4, 5, 6]
多次元配列のデータは、今回のサンプルでは3次元ですが、
実際のデータは何次元になるかわかりません。
そのため、再帰の必要性があると思い次のようなメソッドを考えました。

def split_ary(ary)
local_ary = Array.new
return local_ary if ary.empty?
ary.each do |a|
if Array == a.class
split_ary(a)
else
local_ary << a
end
end
end

良く考えれば当然なのですが1次元にできません。。。
p split_ary(data)
=> [1, 2, [3, 4, [5]], 6]

1次元にするには、どのように改善すれば良いでしょうか。

551 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:17:25 ]
[1, 2, [3, 4, [5]], 6].flatten

552 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:21:42 ]
>>551

おおお!! このようなメソッドが既にあるのですね。
ありがとうございます!

553 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:34:29 ]
flatten使うべきだけど、後学のために

def split_ary(ary, local_ary = [])
 ary.each {|a|
  if a.kind_of? Array
   split_ary(a, local_ary)
  else
   local_ary << a
 end
 }
 local_ary
end




554 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:47:28 ]
>>553

丁度、ライブラリ set.rb の flatten メソッドのソースを眺めている所でした。
・Array クラスか判定するのに、kind_of を使うこと
・local_ary を引数(の位置?)で、Array.new すること
勉強になりました。

初めは set.rb を見ても理解できなかったのですが、
私が書いたソースを改変して貰ったおかげで、理解できました。

ありがとうございました。


555 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 13:07:36 ]
すごく重要なことだけど、多次元配列はRuby標準では存在しない
ただの入れ子になった配列
多次元であるかのように振舞うことはない

556 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 15:28:12 ]
irb(main):006:0> (5.6 * 10500).to_i
=> 58799

58800になってほしかったんですが、なぜこんな風になってしまうんでしょう?


557 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 15:31:43 ]
www.google.co.jp/search?num=30&hl=ja&q=ruby+%E5%9B%9B%E6%8D%A8%E4%BA%94%E5%85%A5&btnG=%E6%A4%9C%E7%B4%A2&lr=

558 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 15:32:04 ]
>>549
バイト列 unsafe_str から制御文字を取り除きたいんです
んで、世の中にはたとえば iso-2022-jp のような \e を必要としてるエンコーディングもあるので、
そういう場合、「必要な制御文字」だけは残したいんです

display_encoding = "ISO-2022-JP"
unsafe_str = Iconv.iconv(display_encoding, "UTF-8", 'ねこだいすき').join
unsafe_str #=> "\e$B$M\e(B\\000\e$B$3$@$$\e(B\\e\e$B$9$-\e(B" # \000と\eが入ってるのがやだ
safe_str = kill_dangerous_ctrl_chars_on(display_encoding, unsafe_str)
p safe_str #=> "\e$B$M$3$@$$$9$-\e(B"

ちなみに日本語以外にも対応したいですというか日本語だけでいいなら悩みません

559 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 15:49:33 ]
>>556
5.6を10500回足したものが、本当は58800よりもほんの少しだけ小さいから
irb> (5.6 * 10500) - 58800
-7.27595761418343e-12
より正確には、2進数で表現される5.6が10進数で考える本来の5.6よりもほんの少しだけ小さいから
Float#to_iは「切り捨て」を行うので、「58800よりもほんの少しだけ小さい数」の小数部を切り捨てて、58799になる

これを簡易に防ぐには、>>557の言うように四捨五入のメソッドを整数化処理として擬似的に使う
誤差が0.5を超すことは一般的用途ではまずないから
irb> (5.6 * 10500).round
58800

もし本当に厳密に計算を行いたいのならbigdecimalライブラリを使う
irb> require 'bigdecimal'
irb> (BigDecimal.new("5.6")*BigDecimal.new("10500")).to_s
"0.588E5"


560 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 15:59:21 ]
>>559>>557から読み取れというのは酷だな

561 名前:デフォルトの名無しさん [2010/02/15(月) 16:01:17 ]
「なんで期待した値にならないのか」の答えじゃなくて
「とにかく望んだ値を得る方法」だものな。


562 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 16:08:44 ]
まあ、暇な人がリンクをたどって(または単に自前の知識で)説明してくれるだろうと期待して
情報のポインタだけぶん投げるというのは省労力的にはアリではある
どっちかっちゃFAQに近いし

563 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 18:36:31 ]
BigDecimal.を見るとなぜかマルちゃんのでかまるを思い出す



564 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 18:58:21 ]
rubyがメインにしているOSって何ですか?

565 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 18:58:49 ]
linux

566 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 19:01:12 ]
どのlinuxでしょうか?

567 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 19:02:15 ]
debian
といってもubuntuやFedoraとかでもそう振る舞いは変わらないと思う

568 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 19:05:57 ]
Linux上で適当にコンパイルされたRubyで動作させるスクリプトは、
Windows上で慎重にコンパイルされたRubyで動作させるスクリプトの倍以上の速度を誇る

569 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 19:06:13 ]
DebianはPythonマンセーって感じだけどね。

570 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 19:12:46 ]
debianはデスクトップにもサーバーにも使えるから使い勝手がいいんだよね
うちの会社は全PCdebian

571 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 19:13:21 ]
Rubyをシステムスクリプトに組み込むなんて狂気の沙汰だ
しかもDebianのシステムを中途半端にRedHat系列に再現するとかありえん

572 名前:デフォルトの名無しさん [2010/02/15(月) 19:14:04 ]
とつぜん何を。


573 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 19:18:29 ]
>>571
mphは目指すところは悪くなかったんだよ
しかしいかんせん当時のRubyの完成度安定度が低すぎた
良くも悪くもkondaraだな



574 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 01:37:19 ]
cgi書いてるんだけど、CGI#out でHTMLを出力する場合、ソースを全部一度に吐き出す感じになるよね?
処理しながら少しずつHTMLを出力するにはどうしたらいいの?

575 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 02:05:35 ]
ふつーに標準出力に書き出せばいいのでは

576 名前:デフォルトの名無しさん [2010/02/16(火) 02:07:58 ]
あんなもんつかわずに適当にテンプレートエンジン使ったほうがいい。


577 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 02:08:26 ]
>>575
なるほど。
標準出力でいいんですね。

578 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 03:40:26 ]
>>547
まじか
Ruby の未来は暗いな

579 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 04:13:51 ]
>>574
リストに吐き出して最後に結合

580 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 07:08:05 ]
Marshal.dump(obj[,port][,limit])を使って
データをグローバル変数に保存したいんですけど不可能ですか?


581 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 07:31:04 ]
質問の意味がわかりかねるねるねるね

582 名前:580 mailto:sage [2010/02/16(火) 07:38:37 ]
def save_bitmap
file = File.open("test.txt", "wb")
Marshal.dump(@data, file)
file.close
end
これだとtest.txt内に@dataを保存しますよね?
これをグローバル変数に保存したいのですが
def save_bitmap
file = File.open($data, "wb")
Marshal.dump(@data, file)
file.close
end
これじゃだめですか?


583 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 08:04:57 ]
$dataと@dataってどうなの

$data = Marshal.dump(@data) は違うの?というかこれなら
$data = @data でいいじゃん



584 名前:580 mailto:sage [2010/02/16(火) 08:36:03 ]
できましたありがとうございました
考えすぎていたようです

585 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 08:46:10 ]
というかグローバル変数使うなかっこ悪いから
トップレベルのローカル変数とメソッドの引数でデータの受け渡ししろ

586 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 08:55:45 ]
ディープコピーの常套手段ってやつか

587 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 09:16:12 ]
引数と返り値で充分なやり取りだと思えるかどうかには自覚と時間が必要

 ・ グローバル変数いらねえ
 ・ クラス変数使う必要ねえ
 ・ これインスタンス変数でなくてもいい

と感じるにはちょっと時間が要る
他人から言われてもえーって感じでピンとこない

588 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 11:36:08 ]
>>579
メモリ食いつぶした。
謝罪と賠償を(ry

589 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 14:39:42 ]
配列で指定した要素を一つだけ削除する命令ってないですか?
[1,2,3,4,5,1,1,1,1,1]
これの1を一つ削除して
[2,3,4,5,1,1,1,1,1]
にしたいんですが。delete(val)だと全部消しちゃいますよね。


590 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 14:48:27 ]
>>589
それなんかやたらよく聞かれるんだが、メソッド一発でやる方法は特にない

arr = ["a", "b", "c", "b", "a"]
arr.delete_at(arr.index("b"))
p arr

["a", "c", "b", "a"]

591 名前:589 mailto:sage [2010/02/16(火) 15:08:55 ]
def delete_learn_data(delete_id)
$game_system.golem_learn_data.each_with_index{ |value, i|
if delete_id == value
$game_system.golem_learn_data.delete_at(i)
break
end
}
end
とりあえずこれでいけました。ありがとうございました。

592 名前:デフォルトの名無しさん [2010/02/17(水) 13:47:36 ]
メソッドhogeの引数としてフォーマット用文字列と任意個の文字列を渡して
formatで整形した文字列を作りたいんだけど
hogeの引数はどんな形で渡したらいい?

def hoge(引数)
 s = format(引数1, 引数2, 引数3・・・)
end

以下のようにしたらsは1つの配列として扱われてformatに
too few argumentsと言われてしまいました
def hoge(f, *s)
 s = format(f, s)
end
hoge('%s %s', 'aaa', 'bbb')

593 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 13:50:15 ]
format(f, *s)



594 名前:デフォルトの名無しさん [2010/02/17(水) 14:53:03 ]
thx

595 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:23:25 ]
Rubyやってて良かったことを教えて下さい。

596 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:37:21 ]
自分用スクリプトでPerlを使わなくて済んだ
オブジェクト指向に触れてなんとなく理解した気になれた

597 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:47:09 ]
railsに尽きるなぁ
rails無かったら何の価値も無かった

598 名前:デフォルトの名無しさん [2010/02/17(水) 16:48:37 ]
ニワカ乙


599 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 17:00:24 ]
プッ
反論してみろよカス

600 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 17:34:43 ]
論に対してしか反論はありえない。

601 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 17:36:48 ]
mechanizeとnokogiri(hpricot)はなかなかいいライブラリだとは思った
あれら程手軽に使えるスクレイピングライブラリは他の言語では知らない

602 名前:デフォルトの名無しさん [2010/02/17(水) 17:46:35 ]
railsを作ってしまうような香具師がrailsが存在する前から評価してた言語ってだけで十分な気がする。


603 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 19:30:01 ]
でも他のスレでRubyの4文字を出すと馬鹿にされる



604 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 19:31:33 ]
>>595
Javaを使わなくて済むようになった・・・まあRubyじゃなくてもいいんだけど。

>>602
なんでやねん。そんな理由がだれをどう嬉しくするのさ。

605 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:00:29 ]
>>603
難解な言語技術を修得しているという自負が
平易な言語に対する無体な態度につながるんだろうか

606 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:14:05 ]
>>605
Ruby厨でぐぐれ

607 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:35:35 ]
Java厨の嫉妬は凄いよな。

608 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:37:40 ]
・ Rubyをちょっと齧ったばかりで興奮して他スレで煩いRuby厨
・ 生まれてこのかたJavaしか知らない自称中級者

を混ぜると危険というかひたすら面倒

609 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:39:16 ]
そろそろ隔離スレ行こうね

610 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:40:08 ]
・ Rubyには興味がないがRubyに関わった遣り取りにウンザリしてもう排除したいと思ってる人

を追加

というか本スレでやれ


611 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:41:40 ]
変態同士仲良くしろよ

612 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:14:40 ]
..           (.
.            )
      ,―ヽ__(__、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-――-、   ・ /
    i、  <(EEEEE)> ∵/    IPA Rubyスレは誰でもウェルカム
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |
      >   ヽ. ハ  |   ||

613 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:18:26 ]
>>612
いつも思うんだけど
この人だれ??



614 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:21:18 ]
ミスターつこうた

615 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:33:15 ]
>>613
こいつにレスしたのお前だけだぞ

616 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:39:16 ]
申し訳ごめんなさい。

617 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 01:44:24 ]
絶対にゆるさない

618 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 19:54:41 ]
StarRuby今落としたんですが
この板にスレッドが無いのが気になりました。
ゲーム開発用であんまり需要無いんですか?


619 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 20:03:48 ]
ありませんというかそもそもゲーム製作専用系は板違い

【Ruby/SDL他】Rubyでゲーム制作・総合スレッド
ttp://pc11.2ch.net/test/read.cgi/gamedev/1207069887/

620 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 21:07:28 ]
>>595
手軽に短くかっこよくツールが書けること。
あと、Rails

621 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 21:11:38 ]
Pythonから来ました。
自分用のプログラムを書くときに、クラス定義のときに組み込みクラスを
オーバーライドするのが怖いので、トップレベルにMyAppみたいな名前の
モジュールを作ってから、その中にクラスを定義しているのですが、
これはRuby文化に反するのでしょうか?

また、Pythonのように、組み込みクラスはすべて、Builtin::String, Builtin::Arrayみたい
になってたらなあ、と思ったのですが、何故こうなっていないのでしょうか?

622 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 21:36:19 ]
適当なモジュールでくるむのは普通に行われているし、実質推奨になっている
まあ、それ自体が被る可能性もあるが

> 何故こうなっていないのでしょうか?
めんどくさいから

…まあ、オープンクラスっても限度あんだろ、とはみんなちょっと思ってはいる
ある意味初期の見通しミスをずるずる引きずってるわけで

623 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 21:57:05 ]
本当のところはMatzに聞かなきゃ分からんが、
デメリットを勘案の上でオープンクラスを選択したのは間違いないわけだから
設計意図どおりだと思うけどなあ

オープンクラスの影響範囲を押さえ込む名前空間システムが
検討されてるらしいが、いつ実装になるやら



624 名前:621 mailto:sage [2010/02/18(木) 21:59:30 ]
>>622
むしろ推奨でしたか。安心しました。有り難うございます。

トップレベルにすべての組み込みクラスがあるのは面倒くさいから。。。
実にRuby的だなと思いました(笑)。いいですね。

もし初期の見通しをひきずっているのなら、Ruby2.0なんてのが出る時には
改善されるかもしれませんね。

625 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:05:47 ]
いわゆる Std:: を使わないのはオープンクラス主義と反するからであるのは間違いない

626 名前:621 mailto:sage [2010/02/18(木) 22:08:53 ]
>>623
オープンクラスなのは、メリットがとても大きいと思うので気にならないのですが、
どうして、組み込みをすべてトップレベルにしてあるのかなと思ったのです。
自分用のクラスを定義するときには、組み込みクラスの名前はすべてすでに使われているわけで、
名前空間がクリーンじゃないなと。

> オープンクラスの影響範囲を押さえ込む名前空間システム
そんなのが実現したらすごそうですね。

627 名前:デフォルトの名無しさん [2010/02/18(木) 22:22:54 ]
selector namespace だっけ?


628 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:30:06 ]
python も
str = 'hoge'
みたいなことすると
あほなことになるが

629 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:45:07 ]
それは__builtins__.strを上書きしてるわけじゃないから、
モジュール外に被害は出ないだろ。

630 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:20:07 ]
lambdaについて

lambdaはreturnがクロージャから戻り、また引数チェックを行うprocというところまで理解しました。
ですが、このlambdaメソッドはどのように定義されているのでしょうか?
引数チェックはなんとなくメタプログラミングでできそうな気がするのですが、returnの挙動を変える
なんてことができるのでしょうか?

Cで実装されているのかもしれませんが、もしRubyで実装するとすればどのようになるのか教えてください。

631 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:23:39 ]
クラスメソッドを定義しようとして
def Fixnum.bar
end
と書いたら
1.bar

NoMethodError: undefined method `bar' for 1:Fixnum
になります。どうすればいいんでしょうか?

632 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:31:22 ]
>>631
1.class.bar

Rubyのクラスメソッドは、その定数で表されるclassオブジェクトのインスタンスメソッドという程度の意味しかない

633 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:31:51 ]
クラスメソッドはインスタンスからは呼べないんじゃないの?
1はFixnumクラスのインスタンスだし。
とりあえず、クラスメソッドと定義しているわけだから
Fixnum.barとすれば動く。

もし、1.barという風に実行したかったのなら
クラスメソッドではなく、インスタンスメソッドを定義したかったのだという事になる。





634 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:35:49 ]
>>630
>このlambdaメソッドはどのように定義されているのでしょうか?
Proc.new

本当に理解したければBindingオブジェクトの知識が要ると思う

635 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:40:35 ]
インスタンスメソッドを定義したかったのでした

636 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:51:27 ]
>>635
それなら
class Fixnum
def bar
puts "bar"
end
end
と書いて、1.barとすればいい

637 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:53:33 ]
Fixnumにメソッド追加するのはおおむねキモいけどな
キモいと自分で感じるまではこれは仕方ない
便利に使うといい

638 名前:630 mailto:sage [2010/02/19(金) 01:54:53 ]
>>634
Proc.new == Kernel#procですよね?(Ruby1.9)

Bindingオブジェクトは雰囲気だけは分かります。どうか教えてください。
returnの挙動をどうやってメタプログラミングしたのかが知りたいのです。
すみません。

639 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:10:55 ]
あー何度もすみません。特異クラスがおおもとの疑問でした。(試行錯誤の中で>>631へ)
特異クラスの動作を見てみようと
a = 1
def a.foo
end
とすると
TypeError: can't define singleton method "foo" for Fixnum
となるのでどうすればいいのかなと

640 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:20:38 ]
>>639
俺もあまり詳しくないが、とりあえずFixnumとかSymbolとかは特異クラスが定義できない。
a = 1
b = 1
としたときにaとbのobject_idが同じ(aもbも同じオブジェクトを指す)になるのと関係あると思う。
String等その他大勢では
a = 'foo'
b = 'foo'
とするとaとbは違うオブジェクトを指すし、これらには特異クラスが定義できるはず。

641 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:21:31 ]
>>639
Fixnux/Symbol/Nil/True/Falseあたりは処理効率の都合で特殊な実装になってるから
その手の実験では避けた方がいい

642 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:23:12 ]
>>638
わああめんどくせえええ
一応ここはCで書いてあるはず
local_jump_error使ってるんじゃなかろうか
本スレ行き

643 名前:638 mailto:sage [2010/02/19(金) 02:28:13 ]
>>642
すみません。わああ眠れねええって感じでしたので(笑)。

うは、LocalJumpErrorですか。なんかニオイますね。
初心者なのに、変なところに首を突っ込んでしまったようです。



644 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 07:31:17 ]
分かりました。ありがとうございました

645 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 09:02:57 ]
RubyForgeってところでrubyインストーラー落とせると公式に書いていますが
rubyinstaller-1.8.7-p249-rc2.exe
これを落としたいのですが10Mに7時間とかかかるんですが
他に落とせる所は無いんですか?


646 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 09:50:54 ]
なんとなくRubyでゲーム書いてみたくなったんだけど
2Dで手軽にって感じだと何のライブラリ使うのがいいかね?

647 名前:デフォルトの名無しさん [2010/02/19(金) 10:24:06 ]
SDL
Miyako(SDL使用) 書籍あり
RPGツクール(古いか)
くらい?


648 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 10:27:01 ]
>>645
回線速度で割り算して妥当でないなら時間置いてやり直せ
10MBくらいのファイルなのはRubyならどこも同じ

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