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


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

Ruby 初心者スレッド Part 21



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








[ 続きを読む ] / [ 携帯版 ]

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

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