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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
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ユーザーならわかるとおもうが、もどきじゃだめなんだよ。もどきじゃ。
102 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 12:15:31 ] emacsユーザーってemacsしか使えなさそうで不幸だと思う
103 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 12:57:07 ] >>102 それには適当なIDEやエディタの名前を入れても成立するということが歴史的に知られている
104 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 14:12:42 ] OS入れても成立する
105 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 14:57:13 ] >>94 > rcodetools ほう 検索するたびに2秒くらい止まるんだが日本語解説サイトとかないんかね
106 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 15:09:03 ] ホント俺ってLinux以外使えないんだよね
107 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 15:14:28 ] 機能だけでなくバックグランドに流れている”歴史”も引きずってるからなぁ xemacsに一時期ながれていたが、歴史の差でemacs使うようになったな。おれは
108 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 15:17:41 ] Windowsを「使えている」人なんてごくひと握りだ レジストリやcompmgmt.msc、NETコマンドやActiveDirectoryをいったいどれだけの人が理解してるやら 気にするな
109 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 17:50:55 ] Windowsは、まっとうな人なら、使いこなすことに抵抗あるんだよ。
110 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 19:12:45 ] お前らの好きなMacやLinuxが罵倒されたら嫌だろ。 ならWindowsへの皮肉は、ポケットにしまいこんでおくんだ
111 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 19:56:16 ] でも、Windows に愛着を感じてる人って少なくない? 相対数どころか絶対数でもMacに負けてる気がする。
112 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 20:53:54 ] ていうか>>110 は何もわかってないんだよ
113 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 21:01:04 ] そんな感じはするが、まあ空気みたいなもんだからね あって当然。普通に使う分には縁の下は意識しない MSの最大公約数的な設計もあって、特に面白みというか個性があるわけでもないと
114 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 00:41:42 ] attrの単純なアクセサが15個くらいどさっとある特定目的用クラスがあるんだが なんか微妙に多くて微妙に筋がよくないような気がしてならない うまく減らす方法はあるだろうか
115 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 01:51:12 ] >>114 設計がおかしい可能性はないか? 単純なアクセサだらけのクラス自体、責務を切り分けられていないように思える。
116 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 05:00:45 ] 事務職(時給800円)なんで、俺は、会計処理の計算ぱぱっとためしたいとき、Rubyつかうけど、 15のアクセくらいなら、普通にありえるな。 会計DBのテーブルが15以上フィールドもってるっていう設計されてるときとか。
117 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 06:48:58 ] いくつかの機能をまとめて内部クラスを作ってそこのクラス変数にすればよい
118 名前:デフォルトの名無しさん [2008/08/11(月) 07:23:42 ] PHPでファイルに文字列を追加するプログラムを書いていたのですが、 LFSに対応していないようで、2G以上になるとエラーになりました Rubyで扱える最大ファイルサイズはどのくらいですか?
119 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 08:33:44 ] Ruby1.8/1.9自体は2GBより大きなファイルを扱えたはず(Windowsでは無理) ただ、思いっきり意識してスクリプト作らないとメモリに2GB全部読み込むぞ
120 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 08:49:05 ] >>114 扱うのめんどくさいという話だと思うんで、ハッシュにまとめておく
121 名前:デフォルトの名無しさん [2008/08/11(月) 17:06:49 ] 携帯電話から入力されたメッセージを、txt形式で鯖に貯めたいです。 一行掲示板なるものを見つけて書いてみたけど、 ( ttp://www.skuare.net/2007/07/ruby_5.html ) 書き込まれた内容は文字化けして読めんとです。 au、ソフトバンク、docomoなど各キャリアから書き込みたいなら、 エンコードを何とかしろという話だと思いますが、よくわかりません。 どう書けば文字化けせずにテキストを貯めておけますか?
122 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 17:31:52 ] 携帯電話のフォローをするgemは聞いたことがないなあ とりあえず携帯電話の機種ごとのWeb通信および文字エンコードと独自文字領域についての知識が必要 これはRuby全く関係ないので自力でやってくれ
123 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 17:42:24 ] 偏見だけど、はてなブックマークで5users以上にすらなってないRuby関連記事はそもそも信用したらあかんよ 自分に合わせてゼロから作ったほうがまだ安心できる
124 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 18:10:54 ] >>123 めちゃくちゃ偏見じゃねーか まあしかし件の記事は自分専用のスクリプトだしな 他人や他機種のことは全く考えられてない
125 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 21:18:46 ] jpmobile-rails.org/blog あ、Railsじゃないのか。
126 名前:デフォルトの名無しさん [2008/08/11(月) 21:31:51 ] Ruby/Tk について質問です。 ひとつのアプリで複数のウィンドウを開きたいんですが、TkRoot のウィンド ウから別のウィンドウをいくつも開くにはどのクラスを使えばいいでしょうか? 試しに TkToplevel.new でウィンドウを作ってみたら、ウィンドウ自体は開く もののその上に置いたボタンとかのウィジェットがまったく表示されませんで した。
127 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 21:41:06 ] >>125 jpmobileをrails依存な部分とそうでない部分に分けるという動きが どっかであったのを見た。
128 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 22:05:41 ] >>126 Ruby/Tkのマニュアルくらいは斜め読みするんだ
129 名前:126 [2008/08/11(月) 22:39:13 ] >>128 Ruby/Tk はマニュアルとしてまとまった物がみつからないので、「Ruby アプリ ケーションプログラミング」を参照しているんですが、よくわからないので困っ てます。。。
130 名前:デフォルトの名無しさん [2008/08/12(火) 00:11:16 ] githubから入れたgemの依存関係が解決できないです。 gemから見たときに、githubのgemは衝突回避のために username-projectname という形で gemを提供しているのですが、あるgemで入れたソフトが username-projectnameでなくて、projectname に依存しているという風に言ってきます。 このおかげで動かしたいgemで入れたソフトがエラーが出て動きません。 具体的には、↓ddollar-remember-the-ruby を入れようと思ったら、 ddollar's remember-the-ruby at master ? GitHub github.com/ddollar/remember-the-ruby/tree/master ↓ddollar-preferences に依存するようなのですが(ソース確認した)、 ddollar's preferences at master ? GitHub github.com/ddollar/preferences/tree/master 実際には、素のpreferencesがインスコされてしまって、そっちが参照されてしまいます。 (gem install時も素のpreferencesの方が入ってしまう・・・) ddollar-preferences を入れて、素の preferences を uninstall した状態で実行しても、 (ほげまげ)/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:578:in `report_activate_error': Could not find RubyGem preferences (>= 0.1.3) (Gem::LoadError) from (ほげまげ)/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:134:in `activate' from (ほげまげ)/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:158:in `activate' from (ほげまげ)/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:157:in `each' from (ほげまげ)/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:157:in `activate' from (ほげまげ)/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:49:in `gem' from (ほげまげ)/ruby/bin/rtr:18 などといわれ、preferencesの方を見に行ってしまいます。 なんとかならないのかなあ・・・
131 名前:130 [2008/08/12(火) 01:04:11 ] ここみたら手動で入れられました。 Hoe dependencies - comp.lang.ruby | Google グループ groups.google.com/group/comp.lang.ruby/browse_thread/thread/9a5d68bafd366677 git clone git://github.com/ddollar/preferences.git preferences cd preferences gem install pkg/preferences-0.1.4.gem 一応これで目的のソフトは動きました。 しかしながら、これだと同じライブラリ名があるとバッティングしますね・・・。 それにgithubで他の人が作った同じライブラリが同時に入れられないw そしてやはりというか、 (ほげまげ)\ruby\gems\1.8\specifications\ddollar-remember-the-ruby-0.3.2.gemspec の中の %q<preferences> を全部 %q<ddollar-preferences> に置換しても動きます。(当然ですね) 問題はgithub内のそれぞれのユーザーのコードが、他のgithubのコードを dependencyに追加する時にユーザー名まで入れるの?ということになりますね・・・
132 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 03:12:00 ] >>126 toplevel = TkToplevel.new button = TkButton.new(toplevel,:text=>'push me').pack 基本はTkHoge.new(親部品、オプション)で親部品は省略するとTk.rootになる ruby/tkはドキュメントが足りなすぎてtcl/tkを知らないと使い物にならない 今まで見た中では「逆引きRuby/Tk」(ググれ)のページが一番まともに使える
133 名前:デフォルトの名無しさん [2008/08/12(火) 08:28:08 ] gem instal ほげほげ のgemのインストールが高い頻度で固まるのですが私だけでしょうか? コマンドプロンプトでCtrl-Cを押しても止まりません。 タスクマネージャでrubyを殺すしか手段はなくなります。 インストールは、5回に一度くらいしか成功しません orz > gem -v 1.2.0 OS:Windows XP SP2
134 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 09:07:51 ] ASRだとしたら、自分と同じ症状だ。自分は今の最新にしたら治った。 次からはRubyのバージョンとかも書いてくれ。
135 名前:133 mailto:sage [2008/08/12(火) 10:00:05 ] >>134 すまそ。忘れてた >ruby -v ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32]
136 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 11:52:50 ] というかRuby/TKはTclでTkを知ってる人が使ってるもんだとばかり思ってた RubyのGUIってそんなもんだからさ 「○○では××と書くようなことをRuby○○ではどう書くんですか?」という質問を希望
137 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 18:22:21 ] しつもん PStoreありますよね あれって、 PStore.new(path).transaction do |db| とした時点で、db に該当するとこには pstore ファイルのまーしゃるな内容が完全に展開されてるんですよね? data = db['hoge'] としてもメモリ的になんかいいことがあるとか何もないですよね?
138 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 18:40:46 ] >>137 unless read_only file = File.open(@filename, RDWR_ACCESS) ... content = file.read() ... if content != "" @table = load(content) ... def load(content) # :nodoc: Marshal::load(content) end ... def [](name) in_transaction @table[name] end ということで、答は YES transaction した時点で、Ruby は pstore ファイル全体を Marshal でロードしたデカいオブジェクトをメモリに保持する db[hoge] というメソッドは既に存在するそのデカいオブジェクトのハッシュへの参照に過ぎない 別名をつけるかどうかは読みやすさだけで決めてよし 時々「でかいpsotreに差分だけ追加」という効率的っぽいプログラミングをしてる人を見かけるが、 あれの本当の動作は「全部引き出してフルサイズ復元してちょっと付け足してまた全体を必死で変換してディスクに書き込む」だ
139 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 21:24:43 ] Rubyってこういうメモリを湯水のように使う処理結構多いよな
140 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 13:25:30 ] Rubyで外部コマンドに頼らなくてはならなくなりました んで、質問です data.each do |param| `command #{param}` end は、dataの数だけ毎回シェルを起動して終了してますか? 複数のデータそれぞれに対してコマンドを使用したい場合は sh = Shell.new data.each do |param| sh.system("command #{param}") end としたほうが、起動するシェルは1個で済んだりしますか?
141 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 13:37:19 ] > によるリダイレクトや | によるフィルタとか使わない限りおおむね YES のようだ 外部コマンド使えば速くて済むもんね、と考えてのことなら前者は無駄が多いかもしれん
142 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 15:15:25 ] % ruby -rshell -e "sh = Shell.new; 5.times do |i| sh.transact do p system('echo -n \$\$') end end" 58045 58046 58047 58048 58049
143 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 17:12:14 ] いやそんな例出されても transactって名前そのまんまだし
144 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 21:32:04 ] Shellって言えば irb> require 'shell' irb> sh = Shell.new irb> sh.verbose = false irb> sh.cd('/') shell: current dir: / って、verbose を偽にしても notify でログが表示されるのはなんでなんだぜ?
145 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 21:34:42 ] >>140 exec使えよ
146 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 21:50:58 ] >>145 試行錯誤中のirbが途中で終了した 責任は取ってもらうからな
147 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 21:54:15 ] 逆 切 れ スレで見たものをirbで何でも試すから…
148 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 23:56:18 ] irbが終了した責任はirbの再起動で取るよ ってことで、sshでログインしてやるから、 IP,ID,PASS晒せや
149 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 07:30:03 ] 素朴な疑問なんだけど 破壊的メソッドって自分で定義して追加することは可能?
150 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 07:40:10 ] >>149 追加できないかもしれないと思った理由は?
151 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 07:51:44 ] ! がついてるからシステム的に特殊なものだと思ったんじゃないかね ! つきも ? つきも = つきも普通に定義できるぞ
152 名前:149 mailto:sage [2008/08/14(木) 08:41:50 ] たとえばStringで文字列の末尾に"foo"を追加する破壊的メソッドの定義って どう書けば良いのでしょう?