1 名前:1様 [2009/04/02(木) 09:42:23 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 【Ruby1.9.1 は従来版とは別物であり、書籍や解説やライブラリのサポートがまだありません】 【自力で解決できない壁で悩むことのない最新安定版の Ruby1.8.7 での学習をお勧めします】 ※1.8.7 は 1.8 系と 1.9 系の橋渡しをするためのリリースで、1.9 系 の便利新機能の一部が利用可能です ※ただし 1.8.6 より安定しているとはまだ言えないので、安定性を第一とする用途には 1.8.6 をどうぞ 関連スレや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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
641 名前:635 mailto:sage [2009/04/28(火) 13:17:57 ] ごちゃごちゃやってたら、頭の中がこんがらがってきた。 結局コンストラクタに引数を渡せるようにしたままsingleton化したい場合は、Singletonモジュールは 使わずに、該当クラスのnewメソッドを複数のインスタンスを生成できないように書いてしまえばいい だけ? とか思ったが、何か根本的に間違ってるような気もするw クラスメソッドとしてのnewは明示的に書けてしまうみたいだけど、その場合自分(クラス)のインス タンスを生成するコードはどうやって書けばいいのかな? newメソッドはインスタンスを返すのが 普通だから、それを生成するコードがどうしても必要だよね?
642 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 13:22:57 ] >>640 自前ビルドでRubyを入れると、他のRubyに依存してるパッケージも全て 自前ビルドするか、パッケージの依存関係をごまかすかしなきゃならない。 どちらにしてもすごく簡単ではないけど大丈夫?
643 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 15:58:25 ] >>641 自己レス。 特定のクラスが(自分の定義中で)自分のインスタンスを生成するには、クラスメソッド(たとえばnew) の中で<自分の名前>.allocateを実行すればいいらしい。(allocate自体はどこからでも呼べる) ただしそのインスタンスをinitializeするには、(自分の定義中にある)他のインスタンスメソッドを 介さなければならない。 なぜなら、<自分の名前>.allocateの戻り値をinstで受け取ったとするとinst.initializeとしたくなるが、 initializeはprivateメソッドなのでレシーバ省略形式でしか呼び出せず、レシーバ省略形式で呼び出す には、(クラスメソッドから呼び出せる)publicなインスタンスメソッドの中で呼び出すしかないから。
644 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 18:20:00 ] >>639 >1.8.7使うには自分でコンパイルするしかないのでしょうか? うんそう。 UbuntsuってDebian系だよね。DebianだとRubyが複数のパッケージに分散していてインストールするのがめんどくさいから、 おれが試した時は自前でインストールするほうが簡単だった。 以下おれの方法。rubyのバージョンごとにディレクトリを分けているので、configureするときに--prefixをつけてる(つけなければ/usr/localになる)。 wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p160.tar.bz2 tar xjf ruby-1.8.7-p160.tar.bz2 cd ruby-1.8.7-p160/ sudo mkdir -p /usr/local/ruby/1.8.7-p160 ./configure --prefix=/usr/local/ruby/1.8.7-p160 make sudo make install
645 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 19:24:22 ] パッチレベルすらディレクトリを分離してるのか。 まあその方が、トラブル時には切り分けやすいか…。
646 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 19:27:09 ] ディスクがたくさんあっていい感じだ
647 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 19:29:02 ] 文字列、配列、ハッシュの初期化の書き方についての質問です。 以下のそれぞれのペアは、等価?(どっちで書いても良い?) my_string = "" my_string = String.new my_array = [] my_array = Array.new my_hash = {} my_hash = Hash.new
648 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 19:35:46 ] >>647 Yes
649 名前:647 mailto:sage [2009/04/28(火) 19:37:17 ] >>648 どうもありがとうございます!
650 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 22:30:36 ] >>643 inst.instance_eval{initialize} じゃダメ?
651 名前:デフォルトの名無しさん [2009/04/28(火) 22:35:42 ] さすが マーチンファウラーお気に入りのベストパートナー 世界に羽ばたく Ruby on Railsオフショアアジャイル開発 www.tech-arts.co.jp/news-and-topics/press-releases/20090427.html
652 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 23:17:58 ] てか self.class.new でダメなことって少ないよな
653 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 00:17:47 ] 今まで数年間、テキストエディタのみでプログラミングしていたのですが そろそろIDEにも、試しに手を出してみようかと考えています Rubyに対応したIDEを探してみると、RDEの他には Aptana Rails、NetBeans、Eclipse DLTKが見つかったのですが これらの中で「これがオススメ」というものはありますか? シンプルで理解が難しくないものを求めているのですが……
654 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 00:44:01 ] 特にありません
655 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 01:02:37 ] テキストエディタのみとかおれには考えられん 環境がなかった昔はもちろんやってたけどな
656 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 01:23:39 ] 俺は今のところ IDE なしでもそんな不便はしてないかな Cygwin + bash + vim + rake + 自作ツールっていう構成だけど ただ、やってるうちに Rakefile がでっかくなっていくけどw
657 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 02:02:23 ] テキストエディタのみって言っても UNIX環境の支援のもとに emacs やら vim 使ってるのと Windowsでメモ帳とか使ってるのとでは全然違うよな
658 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 04:01:50 ] emacs + αで十分IDEチック
659 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 06:02:34 ] メモ帳はまさにメモ帳であって。 emacsはフルカスタマイズ可能!ってか。 変態的な操作方法をもちょっと控えて、GUIベースのタブでバッファを切り替えるような ものなら、もうちょっとご新規さんにもアピールするかと思うんだが。
660 名前:639 mailto:sage [2009/04/29(水) 09:15:30 ] >>642 そうなのかー。 >>644 バージョンごとにやってるんですか。うおすごいですね。 コンパイル自体は大変ではないみたいですね。 問題はバージョンアップかあ。 aptとかで入れれたらうpでとも自動化できるのになあ っと思って検索していたら、8.10のパッケージを使って1.8.7を入れる方法を見つけました。 最近のUbuntu では Ruby 1.8.7が標準みたいですね 簡単そうなので、まずは、これから試してみたいと思います。 Installing ruby 1.8.7 (and guessnet) on Hardy ? vanutsteen.nl => nerds only www.vanutsteen.nl/2008/06/29/installing-ruby-187-and-guessnet-on-hardy/ スレ違いそうな話題にレスしていただきありがとうございました。 とういか、Ubuntuスレに投下してたつもりでしたw
661 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 09:26:19 ] >>659 (EmacsをEmacsとして理解できないものには)Emacsを使うのは難しい。 Aquamacsだとタブが出るけどな。
662 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 11:35:56 ] >>643 たぶん普通は require 'singleton' class C include Singleton def initialize @i = nil end attr_accessor :i def self.init(i) c = self.instance c.i = 1 c end end p C.instance #=> #<C:0xb7d853e4 @i=nil> p C.init(1) #=> #<C:0xb7d853e4 @i=1> p C.instance #=> #<C:0xb7d853e4 @i=1>
663 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 12:08:41 ] >>662 それを許すんならもはや定数に代入した普通のオブジェクトと変わらない気が
664 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 12:24:00 ] ていうか、読みにくい
665 名前:635 mailto:sage [2009/04/29(水) 15:10:47 ] みなさんレスありがとうございます。 >>650 > >>643 > inst.instance_eval{initialize} じゃダメ? それでよさそうですね。初めて知りました。 もともと>>635 と書いたのは、「引数を渡したいのは初期化の時だけだが、一度instanceしてから 値を渡すのが面倒」というのがあったからなので、>>662 のやり方が簡単で良さそうです。 >>662 の中の > c.i = 1 は > c.i = i ですよね。 結局自分もsingletonにする意味あんまりないなと思い始めてしまってますが、最初の動機がたいした ことじゃなかったということですね。
666 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 15:44:41 ] ruby-pg-0.8.0ってPGresultのresultって使えますか? num_tuplesとかは正常なのにresultとかstatusだとNoMethodErrorになります。 今までずっと古いやつを使っていたんですがメソッド名が変わったりとかしたんですかね?
667 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 18:01:56 ] >>666 おお!俺も数日前にそれで困ってましたw 俺がしたこと 1) requireの置き換え require "pg" # require "postgres" 2) resultメソッドの置き換え res.map {|rowmap| res.fields.map {|f| rowmap[f]}} # return res.result resultが無くなったのか、名前が変わったのかは知りません。 statusのほうは使ったことがありませんのであしからず。
668 名前:666 mailto:sage [2009/04/29(水) 18:39:50 ] >>667 ありがとうございます!取得できるようになりました! 根本的な原因は気になりますが、 とりあえず動くようになったのでよしとします。
669 名前:653 mailto:sage [2009/04/29(水) 18:58:20 ] いろいろなご意見ありがとうございます! 基本的にエディタ派の方が多いようですね ただ、655さんの環境も気になります >>657 Windows環境で、主にNotepad++を使ってスクリプトを書いております コマンドライン環境はNYAOS+GnuWin32の構成です
670 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 12:34:03 ] >>669 >>625-627 から上の流れも参照してくれ
671 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 18:29:51 ] VRFormってどこにあるの?rubyのフォルダを検索しても見つからない。 ほとんどのコントロールはvrcontrol.rbにあるのに。
672 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 09:25:00 ] Array同士を簡単に同じでない行を調べることってできませんでしょうか? a - a2みたいだと、差分という感じではない気がします。 通常のdiffツールだと、出力結果が上から調べるので順番に依存してしまいます(´・ω・`)
673 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 09:26:40 ] >>672 あああああ、 pp (a2 - a) pp (a - a2) とお互い引けば、いいのかw 書いて気づいた 同じでない行ではあるか
674 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 09:44:33 ] メソッド呼び出しにおいて、メソッド名と引数を囲む括弧の間には、 スペースを入れないことをおすすめする。
675 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 17:16:25 ] 排他的論理和は (a|a2) - (a&a2) でも
676 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 17:32:42 ] エクスクルゥーシブー・オアッ!!
677 名前:デフォルトの名無しさん [2009/05/02(土) 19:53:16 ] 勉強始めたらいきなりこんなもん見つけたんですけど。 バグでしょ? #ruby 1.8.7p72 mswin32 module A def f() print "test ok!\n" end end #include A A::f() test.rb:7: undefined method `f' for A:Module (NoMethodError) ちゃうか〜
678 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 19:57:48 ] >>677 ttp://www.ruby-lang.org/ja/man/html/Module.html#module_function 素のままだと「Aというオブジェクト」がもってるメソッドじゃないし。
679 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 19:58:24 ] Rubyに限らないけど、まず自分のプログラムに問題がないか考えた方がいいよ。 2〜3回くらい恥をかけば直るんだけどね。最初からかかないことにこしたことはない。
680 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 19:59:58 ] Rubyのめんどくさいところにいきなりぶつかるセンスは賞賛に値すると思う
681 名前:デフォルトの名無しさん [2009/05/02(土) 20:17:12 ] そっか、バグじゃないかぁ コメントアウトしてあるinclue Aを生かすと、動作しちゃうんですけど。 変じゃね?
682 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 20:19:44 ] >>681 どうしてコメントをはずすの? なんのためにコメントをはずすの?
683 名前:677 [2009/05/02(土) 20:32:47 ] なんのためにといわれても... テストプログラムだからいろんなケースを比較して、 変じゃないかなと
684 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 20:39:47 ] つまり、意味もわからずincludeしたりしなかったりを試していると。
685 名前:677 [2009/05/02(土) 20:56:15 ] print Math::PIは動くね。 もっとも、Mathはrubyインタープリターによって 特別待遇を受けているだろうから、あまり比較にはならんだろうけど。
686 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 21:18:41 ] >>685 >>681 は目の付け所いいなと思ったけど・・・ Module#module_functionは読んだ?
687 名前:677 [2009/05/02(土) 21:37:08 ] なるほど、すくなくとも仕様であることは、理解しました。 どうもありがとうございます。 しかし、なんとも不可解に見える仕様。でも、理由があるんでしょう。 勉強します。
688 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 21:37:55 ] >>683 ちゃんと理由を考えながらテストしないと、あまり意味がないぞ 結論から言うと理解を間違えている A::f() の形でメソッドを呼びたいなら、次のような方法を使うべき (他にも特異クラスを使った方法とかあるけど、ここでは省略) 1. def A.f() end 2. module A module_function def f() end end
689 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 22:54:31 ] module_functionというのは知らなかったので試してみた。 折角なので張っておく。 これで>>677 の疑問も解けるとよいけど。 irb(main):001:0> module M irb(main):002:1> def self.f() [:module, self] end irb(main):003:1> def f() [:instance, self] end irb(main):004:1> module_function irb(main):005:1> def mf; [:module_function, self] end irb(main):006:1> end irb(main):007:0> class C irb(main):008:1> include M irb(main):009:1> def cmf() mf end irb(main):010:1> end irb(main):011:0> c = C.new => #<C:0x28de620> irb(main):013:0* M.f => [:module, M] irb(main):014:0> C.f NoMethodError: undefined method `f' for C:Class irb(main):015:0> c.f => [:instance, #<C:0x28de620>] irb(main):016:0> M.mf => [:module_function, M] irb(main):017:0> C.mf NoMethodError: undefined method `mf' for C:Class irb(main):018:0> c.mf NoMethodError: private method `mf' called for #<C:0x28de620> irb(main):019:0> c.cmf => [:module_function, #<C:0x28de620>] irb(main):020:0> include M => Object irb(main):021:0> mf => [:module_function, main]
690 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 23:12:33 ] さっきのを書いている間に生じた疑問がひとつ。 親クラスのクラスメソッドは継承されるけど、 インクルードしたモジュールのクラスメソッド(?)は継承されない。 module_functionのクラスメソッド側もやはり同じ。 いったいどういう理由でこうなっているの? irb(main):001:0> module M irb(main):002:1> def self.f() [:module, self] end irb(main):003:1> module_function irb(main):004:1> def mf() [:module_function, self] end irb(main):005:1> end irb(main):006:0> class C0 irb(main):007:1> def self.cf() [:class, self] end irb(main):008:1> end irb(main):009:0> class C < C0; include M end irb(main):010:0> C.f NoMethodError: undefined method `f' for C:Class irb(main):011:0> C.cf => [:class, C] irb(main):012:0> C.mf NoMethodError: undefined method `mf' for C:Class irb(main):013:0> C.new.mf NoMethodError: private method `mf' called for #<C:0x28d636c>
691 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 08:53:23 ] 実はrubyにはクラス(モジュール)メソッドという仕組みはなくて、クラスに定義された 特異メソッドが他の言語のクラスメソッドと同じように使えるだけ(と思ってる) クラスの継承で特異メソッドが継承され、includeでは無視されるのは仕様としか 大体「クラスメソッド」として使うんだから「クラス名.メソッド名(引数)」の クラス名にはメソッドが定義されているクラスを使うべきだろう
692 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 13:01:17 ] 継承してないから継承されない じゃ駄目かね
693 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 13:25:37 ] Mix-inてのは親子関係が木構造になるように制限をした多重継承だと 理解していたんだけど、Rubyのモジュールはちょっと違うということかな。 上のコードでいうと、c is_a M だけど C is_a M ではなかったから、一瞬 そういうものかと思ったものの、 C is_a C0 というわけでもなかったぜ。 うーん、いまいち腑に落ちないな。
694 名前:デフォルトの名無しさん [2009/05/03(日) 20:27:14 ] >>690 メソッドを継承すると遮蔽定義によって、メソッドの動作を変更できてしまう からじゃね? モジュールは多重にインクルードできるから、継承経路によって、 振る舞いが変わる可能性があるので、そういう仕様になってるんじゃねえかなぁ よくわからんけど
695 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 21:57:18 ] >>690 >親クラスのクラスメソッドは継承されるけど、 >インクルードしたモジュールのクラスメソッド(?)は継承されない。 >module_functionのクラスメソッド側もやはり同じ。 >いったいどういう理由でこうなっているの? そういう仕様だから。 もちょっというと、includeはメタクラスには影響を与えないから。 自分で調べるなら「Ruby クラス階層図」でぐぐるといいかも。
696 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 22:56:40 ] あの辺の理論はこんがらがる Class.class => Classって辺りで混乱が最高潮
697 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 23:53:39 ] 弾幕シューティングのやり過ぎで >>690-691 の irb が、全部敵弾に見える
698 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 00:47:42 ] >>697 の気持ちは残念ながらわかってやれないが 整形されてないとここまで読む気が失せるものだと再認識させられた
699 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 00:51:52 ] Linux 版のデフォルト設定の irb は死ぬほど見づらい デフォルトで行番号表示つけるならもっと履歴を使いやすくしろ っていうか irb で出る例外の 99 パーセントは直前行だろ需要考えろよ
700 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 00:58:40 ] そういや、irb使ってるとき、ついシェル感覚で !10 とかタイプ してしまう。そして => false という出力をみてはじめて気付く。 !p => true とやってしまったときは、何がおきたか一瞬わからなかった。
701 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 02:42:13 ] wirbleかutility_belt使ったらどうだろう。 utility_beltはWindowsだとダメポだったけど
702 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 11:21:11 ] ~/.irbrcに最低これくらいは書いとくよね # vim:ft=ruby require 'irb/completion' __history__ = File.expand_path('~/.irb_history') File.foreach(__history__) {|line| Readline::HISTORY.push(line.chomp) } END { File.open(__history__, 'w') {|f| f.puts Readline::HISTORY.to_a.join("\n") } } IRB.conf[:PROMPT_MODE] = :SIMPLE
703 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 11:34:09 ] あーいるよな、デフォルト設定の話してるときに「カスタマイズすればいい」とか脳のとろけた話する奴
704 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 12:06:20 ] もんだいはどちらがコストが低いかと言う話になる。 この場合、カスタマイズの例を実際に >>702 が出してくれたので、 irb本体に手を入れるよりよほど簡単である。 許されてもよいのではないか。 RubyGemsで一発で解決することに対して、数行のモンキーパッチで解決するならまだしも、 長々とスクリプトを書くのであれば、どちらがコストが低いかは自明
705 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 12:20:13 ] 自演乙
706 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 14:09:22 ] まあそのへんは果てしなくどうでもいい
707 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 14:53:41 ] 自分用のスクリプトで引数にキーワードハッシュでも文字列ハッシュでも通常引数でも動作するようにしたり クラスメソッドでparseみたいな総合一連動作メソッドを作りまくったりしてると YAGNIということばを思い出す オチはとくにない
708 名前:デフォルトの名無しさん [2009/05/04(月) 17:18:06 ] 標準入力から読み込んだ画像を表示するビューアを探しているのですが、探す暇もない(面倒)なので 自分で簡単なビューアを作ろうとruby-gtk2のリファレンス読んでいたのですが... (まあこんな感じ cat image.jpg | imageviewer) Gtk::Imageをざっと目を通したところ、画像ファイルの名前を指定するようですが $stdin.read とか指定できませんかね?
709 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 17:50:50 ] あのへんはRuby関係ないからなー
710 名前:デフォルトの名無しさん [2009/05/04(月) 17:55:29 ] 708だけど、imagemagickで実現できたわ(^^ $ cat image.jpg | display でおk。 まあimagemagickも/tmp/magick-Xxxxのような一時ファイルを作成しているから 同じようにすればいいのかな。。
711 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 18:35:20 ] >>709 2ch は、7割が脱線で出来ています。
712 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 20:05:28 ] >>708 前に画像ビューア作ってたとき、漏れはこんな感じで PixbufLoaderとcairo使ってごにょごにょやってた require "gtk2" ploader = Gdk::PixbufLoader.new ploader.write($stdin.read) ploader.close drawing_area = Gtk::DrawingArea.new window = Gtk::Window.new window.signal_connect("destroy") do Gtk.main_quit false end drawing_area.signal_connect("expose-event") do |w, e| context = w.window.create_cairo_context context.save do context.set_source_pixbuf(ploader.pixbuf) context.paint end true end window.add(drawing_area) window.show_all Gtk.main
713 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 20:29:24 ] なんでRubyでそういうの作ろうと思うのかね もしかしてRubyしか使えないとか?
714 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 20:34:41 ] Rubyからアクセスすれば簡単手軽に作れるからだろ 実際問題として簡単でも手軽でもないような気もするがまあそれはそれで
715 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 20:41:59 ] 楽だから
716 名前:デフォルトの名無しさん [2009/05/04(月) 20:44:45 ] Rubyで書くと おちんちんきもちいいお(´;ω;`) だから
717 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 22:25:51 ] 708でも712でも無いけど、どうしても速度が欲しければjavaかCで書く でも普段はそんなん必要ないから楽ちんなrubyで書く >>713 なら何で書くのさ?アセンブラ?まさかマシン語とか?
718 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 00:39:46 ] vistaのローカルにいれているRubyの1.86を 1.9xにアップグレードしたいのですが インスト方法どこかに書いてありますか?
719 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 00:58:12 ] それはアップグレードではなくアンインストール後の新規インストールになるな
720 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 01:18:23 ] >>718 あなたは、1.9x を使う要件を満たしません。 1.8x を使い続けてください。
721 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 01:20:10 ] まだヘソ曲げてんのかよw
722 名前:718 mailto:sage [2009/05/05(火) 01:57:45 ] できました。 1.86アンインスト ↓ 1.9x解凍、C:\に置く ↓ windowsのシステム環境変数書き換え でしたね、できました。 複数バージョン置けたんですかね。 記法が変わりすぎで1.9xの中心にしか 覚えませんが。。
723 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 16:05:42 ] RDEを使いたいと考えて、インストールして、実行してるんだけど 以下のコードを書いたらエラーっぽいメッセージがRDEから出でる。 ---------------------- a = [] a.each do |x| x. ---------------------- メッセージ Access violation ta address 004B0137 in module 'rde.exe'.Read of address 00000015. x.の"."を打ったところで出るので、オブジェクトのメソッドを取得しようとして失敗しでもしてるのだろうか? エラーメッセージをとりあえず無視してるのだけど、気味が悪いので、対策知ってる人がいたら教えてください。
724 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 19:19:30 ] || 時刻1 | 時刻2 | 時刻3 | … ------------------------------ 分類1 || d_1_1 | d_1_2 | d_1_3 | 分類2 || d_2_1 | d_2_2 | d_2_3 | 分類3 : というスプレッドシートっぽい概念がしっくり来るデータがあります (実際は2系統が直接関連付けられてないバラバラなハッシュです) データ.category("分類1") とすると [d1_1, d1_2, d1_3, ...] というようにす
725 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 19:21:48 ] …悩んでたら途中で送っちゃった こんなごっつい構造のデータでなくてもいいような気がさっきからずっとしてるので とりあえずキャンセルしますごめんね
726 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 19:51:04 ] キャンセル吹いたw
727 名前:受付嬢 mailto:sage [2009/05/05(火) 21:45:30 ] また、いらしてください
728 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 22:36:29 ] 以前から不思議だったんだが RDEはなぜこれほどまでにバグだらけなのだろう 何か理由があるのだろうか
729 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 22:39:43 ] マジレスすると玄人が使わないからバグ報告が少ないとかじゃないか
730 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 22:53:24 ] どこからかだったか忘れたけど require 'irb/completion' require 'irb/ext/save-history' IRB.conf[:SAVE_HISTORY] = 99999 IRB.conf[:PROMPT_MODE] = :XMP require 'pathname' require 'fileutils' require 'uri' require 'pp'
731 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 22:55:50 ] 使われない→バグが取れない→使われない・・・・の 負のスパイラルに陥ってる可能性が
732 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 23:31:59 ] 剰余の挙動が意味不明で躓きそう 0xcc.net/blog/archives/000083.html こんなもんなんすか?
733 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 23:50:54 ] >>732 スレタイのRuby初心者となんの関係もない話題だが、 Division and Modulus for Computer Scientists でも読んでみたら?
734 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 00:55:50 ] >>733 ttp://research.microsoft.com/en-us/um/people/daan/download/papers/divmodnote-letter.pdf#search=%27Division%20and%20Modulus%20for%20Computer%20Scientists%27 Floored divisionってくだりですね。 剰余と除数の符号が揃うまで 試行する。。なるほど。。 Web業界とはいえ企画職で 文系には小一時間かかりました(笑 ありがとうございます。
735 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 07:14:15 ] >>732 おいおいスクリプト言語ぜいが全然周りと違ってて吹いた。 下手するとハマるね、これは。 こういうのって何かで規定されてないのかね…。 AA化してみた 負の剰余 C Java PHP Emacs Ruby Python Perl (GCC (Sun JDK 4.3.10 22.0.50.2 1.8.2 2.3.5 5.8.4 3.3.5) 1.5.0_05) -16 -3 % 5 -3 -3 -3 -3 2 2 2 . 3 % -5 3 3 3 3 -2 -2 -2 -3 % -5 -3 -3 -3 -3 -3 -3 -3 こんなプログラムはいやだ: 負の剰余 - bkブログ 0xcc.net/blog/archives/000083.html
736 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 08:03:39 ] 個人的にはスクリプト言語勢の振る舞いがしっくり来るなあ。 しかし数学的な定義はないのか?ありそうだが。
737 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 08:16:14 ] 定義されてるよ。 「 A mod B は "AをBで割った余り"」だから「B と商 x をかけて剰余を足すと A に戻る」でいいよな? -3 mod 5 = -3 だとする場合 (C言語) 5 と 商 0 をかけて剰余 -3 を足すと 5 * 0 + (-3) = -3 に戻る…正解 -3 mod 5 = 2 だとする場合 (スクリプト言語) 5 と 商 -1 をかけて剰余 2 を足すと 5 * (-1) + 2 = -3 に戻る…正解 ということで、そもそも2通りあるから、「どっちでもいい」。 手計算の世界では「剰余は商より小さい正の整数」という条件がついてたりするんだけど (「10割る3」は「商3余り1」であるべきで、「商4余り-2」ではないと習ったはず) C言語は「割られる数が負なら絶対値で計算して結果を負に変換する」という流儀に従ってる。 まあ、剰余に関しては言語のマニュアル必ず読めって感じだな。
738 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 08:41:01 ] CやC++なんかの仕様では 「割る数と割られる数の両方が正である場合は商と剰余は必ず正であるが、 少なくともどちらかが負である場合は定義しないので処理系が得意なように作れ」 とかヤな感じに丸投げなことが書いてあったはず
739 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 08:50:02 ] >>738 CやC++の場合は、コンパイラが、「俺は知ったこっちゃねぇ。CPUに任せる」という コード生成ができるという利点がある。
740 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 08:57:32 ] ってことは正確を期したいならどんな言語使うにせよ 正負の確認処理を挟むべきってことか
741 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 09:00:49 ] 負の除算は意図をもって行われるべきだってことだね まあ、コンピュータにおける除算自体がそもそも日常視点では怪しさのカタマリだから慎重になるべきなんだけどさ