1 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:07:21 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 【Ruby1.9 は不安定な開発版であり初心者には全く向きません】 【最新安定版の Ruby1.8.7 の使用をお勧めします】 ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。 1.9 の新機能の一部が利用可能なので初学者にお勧めです。 ※ただし十分安定しているとは言えないので プロダクション環境での利用にはお勧めしません。 関連スレやURLは>>2-8 あたりを見てください。Ruby on Railsの質問は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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
2 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:09:14 ] 【よくあるしつもん】 Q: いちからRubyを始める初心者向けのRuby入門書は何がおすすめでしょうか? A: プログラム作成の初心者だったら 「たのしいRuby 第2版 Rubyではじめる気軽なプログラミング」 www.amazon.co.jp/dp/4797336617/ 他の言語経験があるんだったら 「プログラミングRuby 第2版 言語編」 www.amazon.co.jp/dp/4274066428/ 「初めてのRuby」 www.amazon.co.jp/dp/4873113679
3 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:10:11 ] ■前スレ Ruby 初心者スレッド Part 20 pc11.2ch.net/test/read.cgi/tech/1214498119/ ■関連スレ Rubyについて Part 32 pc11.2ch.net/test/read.cgi/tech/1215531152/ Rubyの宿題教えてください。2限目 pc11.2ch.net/test/read.cgi/tech/1200175247/ RubyCocoa 初心者質問【Leopardバンドル記念】 pc11.2ch.net/test/read.cgi/mac/1193373811/ 【ActiveScript】RubyをWindowsで使うスレ【GUI】 pc11.2ch.net/test/read.cgi/tech/1155031689/ Ruby on Rails のスレ が pc11.2ch.net/test/read.cgi/php/1207425569/ 【Ruby】Rails以外のRubyフレームワーク【alt】 pc11.2ch.net/test/read.cgi/php/1216535005/ 【Rails】便利なRubyGemsを共有するスレ【Hpricot】 pc11.2ch.net/test/read.cgi/tech/1216829388/ Rubyについて(アンチ専用) Part003 pc11.2ch.net/test/read.cgi/tech/1207233348/
4 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:10:46 ] ■公式/非公式関連リンク Ruby Home Page www.ruby-lang.org/ja/ Rubyリファレンス(よくサーバーエラーになります) www.ruby-lang.org/ja/man/ www.ruby-doc.org/ (英語) リファレンスのHTMLヘルプ版配布 elbereth-hp.hp.infoseek.co.jp/ruby.html # Windowsで便利 Ruby FAQ ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ Programming Ruby - The Pragmatic Programmer's Guide www.ruby-doc.org/docs/ProgrammingRuby/ # 好評書籍をWebで公開中、ただし英語 逆引きRuby www.namaraii.com/rubytips/
5 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:11:20 ] RAA - Ruby Application Archive raa.ruby-lang.org/ RubyForge www.rubyforge.org/ # Rubyのアプリやライブラリが検索できる GitHub RubyGems gems.github.com/ github.com/ # 最近は RubyForge より GitHub が人気 日本Rubyの会 公式Wiki jp.rubyist.net/ # メニューに表示されていない埋もれた情報ページ多数 Rubyist Magazine - るびま jp.rubyist.net/magazine/ # コードレビューが好評 Ruby hotlinks 五月雨版(日記やblogのアンテナ) www.rubyist.net/~kazu/samidare/ Rubyの本一覧 www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Ruby%A4%CB%B4%D8%A4%B9%A4%EB%BD%F1%C0%D2 <rubyXML/> www.rubyxml.com/ Matzにっき(Ruby作者の日記) www.rubyist.net/~matz/
6 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:12:00 ] ■最近できたWiki Ruby 初心者スレッド Hiki starlet.s145.xrea.com/ruby/hiki/ Ruby Portal ruby.morphball.net/portal/ ■プレゼンテーション Ruby会議2008 jp.rubyist.net/RubyKaigi2008/ www.nicovideo.jp/tag/rubykaigi2008 Ruby会議2007 jp.rubyist.net/RubyKaigi2007/ www.nicovideo.jp/tag/RubyKaigi2007 日本 Ruby カンファレンス 2006 jp.rubyist.net/RubyKaigi2006/ jp.rubyist.net/RubyKaigi2006/videos.html
7 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:45:54 ] >>1 乙
8 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:48:45 ] Ruby>>>>>Java pc11.2ch.net/test/read.cgi/tech/1158807229/ アラン・ケイも認めた!Ruby>>>>>Smalltalk pc11.2ch.net/test/read.cgi/tech/1150106090/ Ruby最高や! pc11.2ch.net/test/read.cgi/tech/1170047838/ 【Perl,PHP】LLバトルロワイヤル3【Ruby,Python】 pc11.2ch.net/test/read.cgi/tech/1215319832/
9 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 06:04:20 ] データベースで言語環境を切り替える特許 www.j-tokkyo.com/2004/G06F/JP2004-341819.shtml おれ、この手の切り替え上記特許とほぼか全く同じ方法で10年以上もまえから ずっとつかってきてるんだけど、特許違反なんのかな。。。 つーか、この程度のアイデアで特許になるってどうかしてんじゃないの?? 今やってるRoRプロジェクトでも3ヶ国語対応でつかってんだが。。。
10 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 06:31:07 ] >>9 それが公知のものであることを証明できれば特許は認められなくなるはず。 ていうか、日本語と思えなくて読む気にならんのだが、これはgettextとは一線 を画すようなものなのか?
11 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 06:58:53 ] もう出勤だが、、、話あってみるわ。 今やってるPJ、工場のロボット制御なんだが、 物理層(ロボットとか)-シーケンサ-C/C++層-RoR層(インターフェース、DB) ユーザー なんだが、海外にも出荷してるから、多言語化の部分全部DBのテーブルにいれてるんだよね
12 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 17:02:30 ] Rubyにはプログラミング言語以上の価値があると思う pc11.2ch.net/test/read.cgi/php/1217883614/
13 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 22:05:03 ] トヨタか、手ごわいな… リスクありそうだから、全部yamlで切り替えするということでおわった。。。 でもファイルにするのやなんだよな。 というか今までリリースしてきたアプリはどうなるんじゃ。
14 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 05:11:46 ] >>9 こんなの、そこら中のWebアプリで使われてないか?
15 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 15:06:50 ] 質問。クラスを継承カスタマイズするのとクラスの返り値を解析する新クラス作成とどっちが一般的ですか? ぶっちゃけた話 gem の WWW::Mechanize を使ってます。 ・ Mechanizeオブジェクトがクッキー覚えたopen-uri的な「Webブラウザ」になる ・ ↑のGETの返り値はHpricotでHTML要素が解析され変数に格納されたPageオブジェクト こんなライブラリです。で、特定のサイト、mixiとかはてなとか、ああいうのに対応させようと思います。 A. Mechanizeを継承したクラスを作り、サイトに特化した変数を追加したりメソッドかを書き換えたりする B. サイトアクセス用クラスを作り、オリジナルクラスに渡す引数や返り値を「手元」で色々いじる どっちが好ましいというか普通というか妥当でしょうか?
16 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 15:19:25 ] AがRubyっぽいような気がする たとえばWWW::Mechanizeを継承したMixi::Mechanizeを作るとかそういうのだろ?
17 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 16:18:59 ] 質問させてください。ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-cygwin]です。 RDEを使っています。 ruby/sdlを使おうと、require 'sdl'したのですが,sdl.soが読み込めないようです。 require 'sdl'だけのスクリプトを実行すると。 /usr/lib/ruby/site_ruby/1.8/i386-cygwin/sdl.so: No such file or directory - /usr/lib/ruby/site_ruby/1.8/i386-cygwin/sdl.so (LoadError) from /usr/lib/ruby/site_ruby/1.8/sdl.rb:17 from C:/cygwin/bin/rb3EB.tmp:1:in `require' from C:/cygwin/bin/rb3EB.tmp:1 Complete(1) とエラーになってしまいました。 sdl.soはC:\cygwin\lib\ruby\site_ruby\1.8\i386-cygwinにあり、 ここのパスが通っていないのかなと試しに、そのディレクトリに print "test was loaded" だけからなるスクリプト(test.rb)を作成し 別の場所のスクリプトからrequire 'test.rb'を実行したら 問題なく 「test was loaded」と表示されました。 *.soだけが読み込めないようです。 ご教示お願いします。
18 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 18:16:52 ] >>15 Bだろjk。委譲で済むなら委譲でいいだろ。 継承は最後の武器ってmatzが言ってた。 自分でしか使わない使い捨てスクリプトならAでいいけど。
19 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 19:41:48 ] >>17 そのエラーはsdl.soが無いと言っているとは限らなくて、 sdl.soをDLLとして読み込む際にエラーが出たときにもそのエラーになるらしいよ。 ttp://pc11.2ch.net/test/read.cgi/tech/1155031689/n356-362 なんとなくSDLのDLLを用意していない、とかがあやしい気がする。
20 名前:17 mailto:sage [2008/08/07(木) 20:44:33 ] >sdl.soをDLLとして読み込む際にエラーが出たときにもそのエラーになるらしいよ。 まさしくその通りでした ttp://www.kmc.gr.jp/~ohai/rubysdl.html によるとsdlはcygwinのrubyからでは使えないとのことでした 詳細はわかりませんが*.soがCygwin用やMinGWy用とで異なるようですね ttp://www.cs.kyoto-wu.ac.jp/~konami/documents/ruby/sdlinstall.html ttp://eto.com/d/RubySDLonWindows.html を見てCygwinで頑張るか MinGW版Rubyを使うかして解決しようと思います どうもありがとうございました
21 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 09:04:24 ] >>15 class HogeSite def initialize @agent = WWW::Mechanize.new end def hoge end end
22 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 10:12:41 ] >>21 module Hatena class Mechanize < WWW::Mechanize attr_accessor :username, :password LOGIN_URI = URI.parse('https://www.hatena.ne.jp/login') def login orig_get(LOGIN_URI).forms[0].set_fields('name' => @username, 'password' => @password) submit(page.forms[0]) end alias orig_get get def get(uri,param=[],ref=nil) login if cookie_jar.empty?(LOGIN_URI) _get(uri,param,ref) end class ConfigPage < ::WWW::Mechanize::Page # is for d.hatena.ne.jp/+username+/config def counter @counter ||= parser.search('div.note').find{|e| /#{'ページビュー'.toeuc}/e =~ e.inner_text}.inner_text.scan(/\d+/).to_s.to_i end end end とか書けるのって便利っぽくね? WWW::Mechanizeライブラリがアップデートして中身が大幅工事されたとき涙目だけど
23 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 10:24:00 ] こういうライブラリを継承して改造するのは、 ライブラリの内部インスタンス変数やマニュアルにないプライベートメソッドと被るのが怖い しかも下手すれば作成中全然気づかない可能性があって探すのも面倒なのが怖すぎる うまく動いてるうちは概念的にも明瞭で便利だとは思う 専用ブラウザと専用データページだからね
24 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 10:27:27 ] 継承されることを考慮されてないと、すごくかぶりやすいからね
25 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:00:23 ] そういうのは継承されることを意識したモジュール作成テクニックを語ってこそ意味があるな
26 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:14:46 ] ×そういうのは継承されることを意識したモジュール作成テクニックを語ってこそ意味があるな ○継承されることを意識したモジュール作成テクニックを教えて下さい かぶりやすいことに対処するのは、かぶらないような冗長な名前を使います 普通はアンダースコアも使います @__unkoclass_kusomiso__とかね
27 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:30:01 ] モジュール名がくっついたインスタンス変数というのは時々使う 例でいうと @hatena_username とか @hatena_counter とか ライブラリを作る側が死ぬほどめんどくさいのが難点 あと継承した人がちょっと中の変数やメソッド使おうかなと思ったときもめんどくさい 継承元にあるメソッドや変数を上書きしてたら表示する継承警告モードとかあるといいのに
28 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:41:35 ] WWW::Mechanize には Logger クラスのインスタンスを指定する log というアクセサメソッドがあるんだが これが agent._mechanize_logger_ だったらきっと誰も使わないだろうな
29 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:43:28 ] WWW::Mechanizeは継承して使うようなものじゃないでしょ
30 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:43:39 ] 同じクラスに定義されたメソッドが、インスタンスで共有する変数用のsigilがあればいいのに @.aaa とかとか
31 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:45:19 ] >>28 名前をかぶらないようにするというのは、内部で使うインスタンス変数やプライベートメソッドのことです
32 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:54:52 ] ていうか、Rubyのライブラリのシステムは他人が継承して使うようにできてない (あるいは、バグっても泣かないというポリシーのもとで開放されてる) 継承は自作のクラスを自作のクラスで継承するとかそういうときに使うもんだ
33 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:59:49 ] Rubyで継承を使うのは本当に難しいし、 そのうち仕様が変更される可能性の高い分野でもあるので それも怖い
34 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 13:24:53 ] そんなに難しくはないし怖くもないよ >>32 の最後の行が全然徹底されてないってだけだ Rubyスクリプトとしてのソースが見えないArrayを継承してデカいクラス作るとかマゾにも程がある
35 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 13:29:13 ] GUIなんか継承が普通ですよ
36 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 15:56:10 ] Rubyに複数の脆弱性 ttp://www.ruby-lang.org/ja/news/2008/08/08/multiple-vulnerabilities-in-ruby/ > セーフレベルの脆弱性 > WEBrickのDoS脆弱性 > dlの汚染チェックの欠如 > resolv.rbのDNSスプーフィング脆弱性 脆弱性のあるバージョン ・全部 対処法 1.8系列、1.9系列ともにこれを反映した完全な最新版 (1.8.6-p286、1.8.7-p71、1.9のr18424)に変える 今のところ、バイナリ配布を頑張ってる人の反応は特にない
37 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 16:12:31 ] ま た セ ー フ レ ベ ル 4 か
38 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 16:54:41 ] >>15 WWW::Mechanizeの使い方が間違っていると思うんだけど
39 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 17:00:16 ] >>22 aliasしても使ってなさそうに見えるし、_getって内部メソッドか? あらかじめloginするってだけならこれだけでよくね? def get(*) login if cookie_jar.empty?(LOGIN_URI) super end
40 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 17:03:27 ] AもBも間違ってるというならCを提示すべき てか、Aは確かにライブラリを完全把握したマッチョ向け綱渡りだが、Bってわりと普通じゃね? 時々忘れられてるがここはこれでも一応初心者スレなんで 「自爆して自覚するまで継承の便利さを味わっとけ」 というアドバイスもアリかなと思う 他人から教科書的に言われてもピンと来ないし伸びる余地も無い気がする
41 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 17:08:11 ] >>39 Mechanize には _get は無いね alias _get get だったのを書き損じたとかそんなとこじゃ
42 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 17:11:23 ] Mechanizeはagentが大域変数ばりに出張ってるとこがあんまり好きじゃない
43 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 21:51:46 ] delegatorやforwarderの出る幕ではないのか?
44 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 23:36:15 ] mechanizeで商売してるやつ多過ぎw
45 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 00:37:49 ] 使い道を思いつかない思考の貧困さを恥じるべきだな
46 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 00:39:49 ] Struct厨に告ぐ 使いこなせると便利っぽい気もするのでハッシュと配列しか使ってない俺を感動させてくださいお願いします
47 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 00:46:51 ] >>46 便利さだけで言えば、Rubyではハッシュと配列(と俺クラスのインスタンス変数)の組み合わせのほうがおおむねわかりやすくて便利です 無理してまで自分から使えなくてもいいんじゃないかなと思う データ構造がどうなってるかスクリプトを読めればOK
48 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 01:37:25 ] Hashに、キーが有限で順序が欲しいなぁと思ったときとか。 あとずらずらattr_accessorが並ぶだけの殆ど構造体みたいなクラスとかは、 1から書かずにStruct使うとか。コードを書かなければ書かないほどバグは減る。
49 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 04:47:43 ] 1.キー名に制約が必要なとき(変なキーを受け付けない) 2.アクセサメソッドだけじゃなくて、添え字(キー、インデクス)でのアクセスがあると便利なとき だいたいこの2つの条件がそろうとStruct使う。 今までに使ったのは2回くらいだが。
50 名前:デフォルトの名無しさん [2008/08/09(土) 07:03:40 ] 【Ruby/SDL他】Rubyでゲーム制作・総合スレッド pc11.2ch.net/test/read.cgi/gamedev/1207069887/125-135 Rubyスクリプトを暗号化できないか?という流れがあったのです。 RPGツクールXPではスクリプト個別ファイルを暗号化、 RPGツクールVXではアーカイブにまとめているようなのですが、 これを実現する方法はありませんでしょうか? requireをフックして書き換えるみたいなことってできるんでしょうか?
51 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 08:26:34 ] 暗号化ってなーに? エディタで開くと文字化けしてるという意味?
52 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 08:44:19 ] RGSS固有の話題は元のRubyがほとんど関係ないからツクールスレでやってくれると助かるんだが RGSSがわからない人にはRGSSスクリプトそのままで問題ないし RGSSがわかる人にとってはeval系列使って同じ動作させれば何書いてあるかわかるわけだし どのへんの人を対象にしてるのか謎だ
53 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 09:20:34 ] ちゃんと嫁
54 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 09:52:43 ] ん? ツクールと同じことすればいいだけだろ 独自バイナリを読み込めるようなrubyを作って同梱して配布すればいい
55 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 10:53:12 ] Rubyってスクリプトの難読化は苦手なんだよね そういう意味ではゲーム製作にはあまり向かないわ
56 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 11:13:13 ] 夜中に作った作成途中のスクリプトの構造が朝起きたらさっぱりわからん # HERE: ここからつくる とか再開用定型句が書いてあるのはいいんだが、場所だけじゃなく何をすればいいのかも書いてほしかった昨日の俺 とりあえずなんでもかんでもget_xxxってメソッドにするのやめようぜわけわからんわ
57 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 11:23:15 ] 先にテスト書けとまでは言わないが、コンセプトのメモとか作ってないの?
58 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 11:44:21 ] また継承云々の話なんだけどさ 個々の画像に関するデータを溜め込んだデータ群を作ろうと思うんだ ハッシュで用が足りることがわかってるんだ class Gallery < Hash def xxxx # selfをいじるメソッド色々 end end と class Gallery def initialize @data = Hash.new end attr_accessor :data def xxxx # @dataをいじるメソッド色々 end end って、後者のほうがいいのかなあ いちいち gallery.data でハッシュにアクセスしないといけないのがちょっとヤなんだけど
59 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 11:58:29 ] コレクションが必要な場合に必要なのは、コレクションのクラスではなくコレクションを持つクラスだというのをどこかで見た気がするんだがどこだったかな 確かにdataというような凡庸で他クラスと被りがちなアクセサ名しか思いつかなくてブルーになることはあるが、後者の癖をつけておいたほうがいい あと委譲の人気の無さは異常
60 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 12:25:55 ] 後者でも、委譲用のライブラリを使えばだいぶ楽に書けたような
61 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 12:36:13 ] Gallery is a Hashと言えるかどうか。 Hashをつかう任意の場所にGalleryを使えるか。
62 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 13:49:14 ] 委譲の解説は「なぜ委譲が好ましいのか(他の方法ではよろしくないのか)」という説明がすっぽり抜けてるものばかりだ あれではどう頑張っても広まらんよ
63 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 14:18:12 ] Rubyだけをやってると委譲はなかなかピンとこない アクセサメソッドの中で他オブジェクトを動的にnewすれば用が足りたりするからな 他の言語やるといいぞ
64 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 14:57:34 ] るびま jp.rubyist.net/magazine/?0012-BundledLibraries の例を使うが、確かに require 'forwardable' class MyQueue1 extend Forwardable def initialize; @q = Array.new; end def_delegator :@q, :push, :enq def_delegator :@q, :shift, :deq def_delegators :@q, :push, :shift, :size end class MyQueue2 def initialize; @q = Array.new; end def push(*e); @q.push(*e); end def shift(*e); @q.shift(*e); end def size(*e); @q.size(*e); end alias :enq :push; alias :deq :shift end class MyQueue3 < Array alias enq push alias deq shift end [MyQueue1.new, MyQueue2.new, MyQueue3.new].each do |q| q.enq 1, 2, 3, 4, 5 q.push 6 p q.size end の3つは、どれも6を表示はするな
65 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 15:09:38 ] MyQueue3 を見て「Arrayのメソッドが全部使えるなんていざというとき便利そうだ」とか思った俺 まあ、1と2で attr_accessor :q してくれてればメリットもなくなるか でもまさか、@q を公開なんてしないよな?
66 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 15:49:24 ] そもそも#shuffle!とかを許すキューってどうなのよw Arrayを継承となると、Arrayが公開する100近くのメソッドについて 責任を持たないといけなくなる。お手上げだ
67 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 16:05:35 ] 責任も何も「自由に使ってください。」じゃダメなん?
68 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 16:20:32 ] >>67 確かにごく最初は「マニュアルに書いとけばいいんじゃね?」「たくさん定義されてても使わなければ無問題だろ」だった でもそれじゃ駄目だということがわかってきたので責任(Responsibility)という概念が生まれたわけで 無理して今から字面を理解しなくても、そういえばなんか煩いこと言われてたな程度に覚えておけばいい オブジェクト指向プログラミングをやっていれば、ほぼ確実にこれ関連で火傷をする日が来るから 自分の作ったものが火傷したり破綻したりして初めて理解できたといえるシロモノなんで、まああまり考え込まないことだ
69 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 16:48:05 ] require 'delegate' foo = SimpleDelegator.new([]) foo.push(1) foo.push(2) puts foo.size #=> 2 これって foo = [] のほうが便利じゃね?
70 名前:デフォルトの名無しさん [2008/08/09(土) 17:43:57 ] >>52 RGSSでやっていることを一般のゲームでもやりたいという話です。 >>54 いや、まあそういうことなんですが、 元のRubyソースに手を加えて requireやってるところを置き換えるっつーことでよろしい?
71 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 18:38:49 ] 答えてないぞ どこまで隠したいのかはっきりしれ Ruby知ってる人間がirbに読み込んで数行書いたら読めてしまうものでもいいのかどうか
72 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 19:16:45 ] String#% って、Hashをとれないんだっけ? "name: %(name)s, age: %(age)d" % {:name=>'Hoge', :age=>20} みたいな感じでやりたいんだけど。
73 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 19:19:47 ] >>72 ruby-gettext-packageでそんな感じの拡張をしている。 www.yotabanana.com/hiki/ruby-gettext-api.html?ruby-gettext-api#class+String
74 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 19:23:09 ] あ、単なる埋め込みなので、to_sでは間に合わない凝った文字列化が必要なら、 ハッシュの値のほうを '%03d% % age みたく別途フォーマットする必要がある。
75 名前:デフォルトの名無しさん [2008/08/09(土) 19:33:17 ] >>71 できれば、ちょっとしたそのようなクイックハックは避けたいのですが、 その程度ならどのような方法があるものでしょうか?
76 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 20:05:26 ] BASE64でエンコードするとかすればいいんじゃね irb> eval "Y2xhc3MgSG9nZTsgZGVmIHN0cjsnSGVsbG8sV29ybGQhJztlbmQ7ZW5kO3B1\ndHMgSG9nZS5uZXcuc3Ry\n".unpack('m')[0] Hello,World!
77 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 20:38:02 ] ちょっとしたスクリプト作るのにも何日もかかる自分が若干イヤになるな
78 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 20:43:18 ] >>77 作業環境が悪いんだよ! エディタとか!
79 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 20:52:37 ] >>78 なるほど!周りのせいじゃ仕方ないな! まあ趣味個人とはいえさすがにいまどき putty + Emacs + ruby-mode + RCS だけなのはねーよとは思うんだが もうちょっと便利で安楽な感じにスクリプト書きたいです
80 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 21:05:52 ] emacs + ruby-mode以外いいのあるんかい?? RadRails(eclipseのやつ)とかいろいろためしてみたが、軽さがたりねー
81 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 21:20:30 ] + QX9650 すれば快適になるよ
82 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 21:44:40 ] NetBeansのRubyパッケージは結構いいかなと思ったり JRuby、Rake、Gems、RSpec、ruby-debugとか、標準で一揃い統合されてる
83 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:38:18 ] ねっこはあれでもまだ重くてなあ まだ重いっていうかこれ以上軽くなる理由もないんだが(w ところで、なんで重いの?
84 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:47:51 ] てかWindowsのRubyはあまり使いたくないんだが…
85 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:55:47 ] そんなん、ごっついエディタとしてだけ使えばいいじゃん
86 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:23:28 ] Linuxでも使えるけど
87 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:25:00 ] Emacs使ってる人にIDE勧めても色々な意味で無駄
88 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:27:46 ] Emacs/gvimユーザーの半分くらいの人はRubyのあるマシンにターミナル経由でログインして使ってるんじゃないかね >>79 にPuTTYがあるのが象徴的というか
89 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:39:18 ] ruby-electric.el がもうちょっとなあ
90 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:42:38 ] Javaするときくらいだな。IDE。それでも外部エディタはemacs IDEつかってるのは、仕事先と同じ環境でつかいたいってだけの理由だが。
91 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:46:05 ] あと作業領域の広さかなー。 Emacsつかってる椰子は、メニューなんか全部みせてないだろうし。 トーパルズはviを5ターミナルくらいで開いてかいてるだっけか。
92 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:54:44 ] 仕事場でもLinux使うがね C#とかじゃないなら足る
93 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:59:36 ] >>91 下3行(Emacsバッファ説明・Emacsミニバッファ・GNU screenのバー)以外は全部エディタ領域だからな IDE使ってみて「ぷろじぇくと」とかいうのが画面の左半分を占拠したときはビビった みんな画面広いんだな
94 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 00:43:23 ] >>89 rcodetoolsを全開で使うんだ なんか補完する度にHDDが動いてる気がするが気のせい
95 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 03:18:08 ] ねとびんかわいいよねとびん
96 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 04:00:07 ] emacs-lispのrubyラッパーかいて、Rubyでも設定できるように してくれたらーーー、学生の時みたいに時間あればなー スーパーHaXする椰子がでてきたら はじまるのに。。。
97 名前:デフォルトの名無しさん [2008/08/10(日) 06:34:45 ] >>80 NetBeans使っているけどなかなかいいよ。 RubyGemsは1.2まだ非対応で固まるけどw >>93 うちはフォント小さくして、狭い画面で書いてますw
98 名前:デフォルトの名無しさん [2008/08/10(日) 06:37:32 ] >>96 - Summary Ruby製のテキストエディタ - Features o scripting in any language o macro recording and playback o multi-element clipboard o multi-level undo o parsed ("smart") indentation o customizable multilingual syntax highlighting, with support for embedded languages (e.g. PHP, eRuby, Javascript) o bookmarking, named and unnamed o regular expression searching o a customizable status line o limited ctags support o hooks - Reference purepistos.net - Diakonos purepistos.net/diakonos/ - via MOONGIFT - Diakonos oss.moongift.jp/intro/i-2310.html MOONGIFT - Diakonos レビュー oss.moongift.jp/review/i-2319.html
99 名前:デフォルトの名無しさん [2008/08/10(日) 06:39:08 ] MOONGIFTリンク修正 MOONGIFT: ≫ Diakonos:オープンソースを毎日紹介 www.moongift.jp/2006/08/2310/ MOONGIFT: ≫ Diakonos レビュー:オープンソースを毎日紹介 www.moongift.jp/2006/08/2319/
100 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 07:06:55 ] >>96 el4r
101 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 10:30:41 ] emacsユーザーならわかるとおもうが、もどきじゃだめなんだよ。もどきじゃ。