1 名前:デフォルトの名無しさん [2009/02/27(金) 18:38:24 ] プログラミング言語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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
2 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 18:38:55 ] 【よくあるしつもん】 Q: いちからRubyを始める初心者向けのRuby入門書は何がありますか? A: プログラム作成自体の初心者なら 「たのしいRuby 第2版 Rubyではじめる気軽なプログラミング」 www.amazon.co.jp/dp/4797336617/ 文法は理解済み(orリファレンスで乗り切る既言語習得者)の場合のRuby様式を知る必携2冊目 「初めてのRuby」 www.amazon.co.jp/dp/4873113679/ 以下は外れが少ないとされている本です。必ず立ち読みした上で自分の目的とレベルに応じて購入してください 「Rubyレシピブック 第2版 268の技」(初心者向け) www.amazon.co.jp/dp/4797340045/ 「プログラミングRuby 第2版 言語編」(初心者向け) www.amazon.co.jp/dp/4274066428/ 「Ruby Way 第2版」(脱初心者向け) www.amazon.co.jp/dp/4798115339/ 「Rubyクックブック ―エキスパートのための応用レシピ集」(脱初心者向け) www.amazon.co.jp/dp/4873113245 以下の本は言語作者が書いた最新本ですがとりあえず初学者向けではありません 「プログラミング言語 Ruby」(言語として深く知りたい人向け) www.amazon.co.jp/dp/4873113946/
3 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 18:39:59 ] Ruby 公式・非公式便利サイト2009 Ruby Home Page 【公式、お役立ち度が微妙】 www.ruby-lang.org/ja/ Rubyリファレンスマニュアル 【検索機能休止中、Googleなどの併用を】 www.ruby-lang.org/ja/man/ www.ruby-doc.org/ 【詳しい英語版】 HTMLヘルプ版リファレンスマニュアル配布さん 【Windowsで便利、検索も無論可能】 elbereth-hp.hp.infoseek.co.jp/ruby.html Programming Ruby - The Pragmatic Programmer's Guide 【好評書籍の初版がネットで、ただし英語】 www.ruby-doc.org/docs/ProgrammingRuby/ Rubyist Magazine - るびま 【ライブラリ紹介などの読み物、過去のコードレビューは一読の価値あり】 jp.rubyist.net/magazine/ 逆引きRuby 【やりたいことから探すWiki、最近元気ないので編集者募集】 www.namaraii.com/rubytips/ はてなキーワード > Ruby 【うっかりどっさりまとまったリンク集、説明なし】 d.hatena.ne.jp/keyword/Ruby RubyForge 【○○をやりたい管理されたライブラリを探すならここ、英語】 www.rubyforge.org/ GitHub 【○○をやりたいコードをとにかく探すならここ、英語】 github.com/ 日本Rubyの会 【最近はオフライン勉強会の寄り合い場と化しているので近くで勉強会があれば】 jp.rubyist.net/
4 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 18:42:07 ] 関連スレ 本スレ Rubyについて Part 34 pc11.2ch.net/test/read.cgi/tech/1233686068/ アンチスレ Rubyについて(アンチ専用) Part003 pc11.2ch.net/test/read.cgi/tech/1207233348/ Railsスレ 【Ruby】Ruby on Rails Part6 pc11.2ch.net/test/read.cgi/php/1224838013/ Windows用スレ 【ActiveScript】RubyをWindowsで使うスレ【GUI】 pc11.2ch.net/test/read.cgi/tech/1155031689/ Ruby 1.9 系列スレ 魁け! Ruby 1.9.X pc11.2ch.net/test/read.cgi/tech/1201603546/
5 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 18:42:51 ]
6 名前:デフォルトの名無しさん [2009/02/27(金) 18:57:27 ] 厂刀、 , ヘ _ _, -‐…‐- 、___//: : : \____/: : : : >r _>'´: : : :_,.- " : :/弌》__: : : : : : : : : : : : : : : : : : , : : } , イ ̄`: : : : : : : : : :¨ ‐-、 : :\⌒>、: : : : : : : _: :-: :¨: : / . /: : : : : : : : /: :.,': : : : :: : : : : \ ∧  ̄ ̄フ : : : : : :/ /:/: : : /: : :.ハ : :ト、 \: : : : \ : :Y i| / : : : : : / | l: : :./: : :./ハ: :{ \j\j : : ∧, j: :|. /: : : : :/ 、 | |: : :| : : ,`匕 `‐z匕 \ : : }K: j. /: : : : :/ }\ j,ハ: : |: :∧fて! イfて)'y Y: :jF'},ノ ,': : : : :/ |.: :.\ \ト、{ ハ ヒリ ヒ::リ ' j /rソ イ: : : : :.{ ト、: : ハ . j,从 " 、 "" ム/ ,{|: : : : : ト、_______ イ: :): : :.} ゝ、 rっ , イ,|_⌒ ハ: : : : : : : : : : : : : : : : : : : : : : : : / >-r<_/ iト、 \ \、: : : : : : : : : : : : : : : : : : 彡イ x<7イx公、 // \ _〉\_  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ rく // 〉::::fゝ_イ / |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ .! ∧, // /⌒i| / / i| こ、これは>>1 乙じゃなくて | { j { { /:::::::::| ,/ / | ポニーテールなんだから. j | | ∧∨:::::::::::レ' / ヘ, | 変な勘違いしないでよね! |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
7 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 02:18:00 ] 関連スレ 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/ 愛国Ruby pc11.2ch.net/test/read.cgi/tech/1233033091/ Rubyは難しすぎ pc11.2ch.net/test/read.cgi/tech/1156496224/ Rubyの宿題教えてください。2限目 pc11.2ch.net/test/read.cgi/tech/1200175247/ 【Perl,PHP】LLバトルロワイヤル4【Ruby,Python】 pc11.2ch.net/test/read.cgi/tech/1234635513/ Rubyにはプログラミング言語以上の価値があると思う pc11.2ch.net/test/read.cgi/php/1217883614/ Ruby VS PHP 仁義なき戦い pc11.2ch.net/test/read.cgi/php/1201783642/
8 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 15:31:03 ] スレ立て乙
9 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 18:19:12 ] ループ内でredoをするともう一度処理を行うと思います。 begin〜endで例外が発生したら同じ処理を行いたいのでredoを入れてみたらダメでした。 この場合はcatchを使うほかないのでしょうか。 具体的にはnet/httpを使ってるのですが、たまにタイムアウトします。 タイムアウトしたとき、例えば「3回はリトライ」するみたいにしたいです。
10 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 18:30:36 ] そういう時は retry を使う... と思ったけど、 1.9 ではなくなったんだっけ?
11 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 18:39:07 ] >>10 ちょー感謝です! オライリーのプログラミング言語Ruby(出たばっかのやつ)によると、 1.8まではretryで「繰り返しを最初から行う」ことが認められていたがダメになったということです。 例外の処理に使うぶんには1.9でもいいみたいです。 この本、まだ30ページしか読んでないのでちゃんと読まなきゃですね。 ありがとうございました!
12 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 03:01:12 ] attr_accessorって何て発音するんだい? アターアクセサー? そもそもattrって何の略だろう
13 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 03:04:28 ] あとりびゅーとじゃないか?
14 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 04:31:57 ] matz日記なんで更新されないの?
15 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 06:49:39 ] アトリビュートアクセッサーだな
16 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 10:13:41 ] propertyにしとけばよかったのにMatzもひねくれだなア
17 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 10:26:42 ] 概念上、プロパティでは絶対にないな attr_accessor は冗長で書きにくいが齟齬の少ない表現だと思う
18 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 10:49:37 ] > attr_accessor この辺はCommon LispのCLOSが元ネタって解釈でいいのかな。
19 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 11:13:30 ] ある程度はびっくりでがっかりだが、プロパティだと思われるよりはマシ プロパティのように使うこともできるだけでプロパティと呼ばれたのではたまらん
20 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 13:23:43 ] attributeって一般的にもコンピュータ用語的にもかなりメジャーだと思うが
21 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 13:50:40 ] propertyは広く汎用的に、要素って意味で使うけど、attributeは属性という意味だからオブジェクトなどの閉じた範囲の中のpropertyってイメージを持ってるんだが。 この解釈は間違ってるの?
22 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 15:03:57 ] 要素はelementだろ
23 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 15:26:02 ] >>16 の頭の中ではattributeというのは相当にマイナーな選択である、 ということか。
24 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 15:33:14 ] 使ってきた言語によっては全く触れた機会がない可能性のある言葉ではある
25 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 16:30:24 ] 日本人は用語を曖昧に使いすぎなんだよ attributeだって本来はちゃんとした定義がある オブジェクト指向言語以外では使われない言葉
26 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 16:46:11 ] XMLは?
27 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 20:23:33 ] DOSのファイルのリードオンリーとかの属性がアトリビュートだったなそういえば
28 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 20:59:46 ] 普通に使われる単語だし当たり前だけどな 高校生向けの単語集には大抵載ってるように思うが
29 名前:デフォルトの名無しさん [2009/03/01(日) 22:43:21 ] tar + gzip を使いたいのですが、外部コマンドに丸投げするしか 方法がないのでしょうか?
30 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 23:07:04 ] zlibという標準添付ライブラリがあってだな tarに関してもRubyで圧縮できるライブラリがある。ググれ
31 名前:デフォルトの名無しさん [2009/03/01(日) 23:17:24 ] >>30 べりーさんくす
32 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 00:31:29 ] >>28 むしろPCやってるから時々単語が分かって助かるリア高の俺 attributeも単語テストに出たかもしれない
33 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 00:45:20 ] 誰も聞いてねーよ
34 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 01:16:13 ] andと&&の使い分けってちゃんとしてますか? 他言語の癖で&&ばかり使ってるけど特に問題にならないんだよね。
35 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 07:05:22 ] >>34 結合度の違いを考えなければならないコードはだめなコード
36 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 08:28:36 ] 『プログラミング言語Ruby』、今まで買うつもりなかったんだけど、トークイベントの 動画見たら、買いたくなってきちゃったよ。 でもMatzはまったくといっていいほどタッチしてないんだなw
37 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 08:35:31 ] >>34 俺の場合、&&とandは使い分けないな。常にand でも||とorは使い分ける なぜなら||は以下の書き方でよく使うから var ||= 10
38 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 09:56:02 ] >>36 その動画見たいからURL教えて
39 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 10:45:42 ] タイミング的には初めてのPython第3版を買いたい気分なんだが ああいう厚い本は好きだ
40 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 11:28:22 ] >>36 >でもMatzはまったくといっていいほどタッチしてないんだなw いや、だから買いなんだw
41 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 11:40:49 ] その本どうして評価高いのか分からん 言語編だけ読んだが構成が滅茶苦茶で読みづらかった 相変わらずのつまらないアメリカンジョーク連発はまだ許せるにしても 所々で出る参照ページとやらの参照先が別本のライブラリ偏だったりするのでもう1冊買わないと参照できない。
42 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 11:47:32 ] >>41 違う本と勘違いしてないか?
43 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 11:48:24 ] >>41 それは『プログラミングRuby』 ttp://www.amazon.co.jp/dp/4274066428/ 話題に出てるのは『プログラミング言語Ruby』 ttp://www.amazon.co.jp/dp/4873113946/
44 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 12:12:04 ] プログラミング言語Rubyが出そうなときは話題になったが、出たらほとんど話題にならん。 感想の一つでもあってよさそうなもんだが、結局おまえら読んでないだろ。
45 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 12:13:04 ] アスキーから出てる「Ruby本」は 『オブジェクト指向スクリプト言語 Ruby』
46 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 12:15:58 ] Ruby自体がもう下火になりつつあるしな・・
47 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 12:30:14 ] みんな王道になりたいからありきたりの名前付けるのかねw
48 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 12:37:28 ] 魔道編とかよりははるかにまし
49 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 12:57:07 ] >>47-48 謝れ!「オウドウとも読めるよね」とかちょっと邪なこと考えたっぽい黄道編にあやm
50 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 13:19:40 ] ・プログラミング言語Ruby ・プログラミングRuby ・オブジェクト指向スクリプト言語Ruby 似たような名前の本が多すぎるのを何とかしてください 洋書と和書で別々に出てるというのは分かるけど、それにしてもややこしすぎる Ruby WayとかたのしいRubyとか、もっとひねった名前を付けて欲しい
51 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 13:46:35 ] オライリーのやつはハチドリが表紙だから「ハチドリ本」と名付ければわかりやすいんじゃ 「オブジェクト指向スクリプト言語Ruby」は似てないだろ
52 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 14:10:49 ] rubyの特殊な文法でメソッドの中にメソッドを定義できるってのがありますよね。 これ実際に使う機会ってあるんですか?
53 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 14:34:54 ] >>52 普通はない 現象上はオブジェクトの着火メソッドを実行すると使用可能メソッドがぐーんと増えるというものだが、 そんなロボットアニメみたいなことをするくらいなら他の手段を使うことを考えるべき
54 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 14:42:35 ] >>53 進化コマンドかw でもオブジェクトが拡張されるならまだしも、クラスが拡張されるのはキモイな。
55 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 14:45:20 ] >>53 ありがとうございます。やっぱり無いですか。 Rubyはやたら細かい機能が多いんだけどやりすぎな感のあるメソッドなんかも多いですよね。 情報過多は逆に利用者を混乱させるという
56 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 14:46:11 ] 誰か1人が秘密のコマンドを使うと、それと同種の機体とそれの改造型全員が一気にパワーアップ …物語的には面白いが、おおむねキモいな シングルトンなクラスでinitializeで条件分岐するならあるいは
57 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 14:47:30 ] >>55 多くの人は半分くらいの機能を全く使ってない 安心しろ
58 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 14:48:44 ] >>55 一見無意味だと思われていたメソッドがとんでもない利便を生み出すこともある。 ごちゃごちゃと細かい道具がたくさんある言語はハカーにとっては発想が膨らんで楽しいのだよ。
59 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 15:09:59 ] >>55 慣れると逆にJavaScriptとかの比較的シンプルな言語でやってるときに 「なんでこんな配列・文字列操作も一発でできないんだよ」 と憤慨するようになる。 初心者にやさしいかどうかは目標にしてないようなことをMatzは公言してたはず。 つーか利用者って言ってもアプリなんかと違って仮にも情報技術を扱う人間なんだから 多少の過多ぐらいで混乱すんなw
60 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 15:15:31 ] まさに楽しさを追求する言語だね!
61 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 15:23:55 ] うぜえ
62 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 16:08:52 ] 自分が使わない機能が存在することに文句を言っても仕方ない だまって使わなければいいだけ
63 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 16:13:36 ] >>38 オラの村へ行け
64 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 18:33:03 ] if ってスコープ作らないんだっけ? 作らないとしたら、それはなんで?
65 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 19:14:09 ] 難しい問題だな たまたま制御構造として定義することに決めたからスコープを作らない、という以上の回答はないんじゃないか ○○で××だから if はスコープを作らないように決めたのです、という説明はできなさそうだ
66 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 20:34:06 ] 説明できるだろ if true x = 10 else x = 20 end のとき困るから。
67 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 20:46:47 ] ブロックが標準でローカルスコープを作ることと同じくらいに困るから
68 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 21:04:26 ] >>66 別に困んなくね?
69 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 21:14:07 ] まぁ、>>66 程度なら x = if true 10 else 20 end だからな。例が微妙。
70 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 21:40:32 ] メソッドの再定義ってなにかコツとかあるんですか? requre したライブラリのメソッドの上書きが動作しません(追加は動きます)
71 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 21:44:04 ] 定義してるモジュールが違うとか、 実は自分の定義よりあとで動的に再定義されてるとか、 単なるtypoとか。 もちっと具体的に。
72 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 21:54:38 ] > 定義してるモジュールが違うとか え〜、と思ったけど心当たりがあります # require するファイル class B def hoge; end end class C <B end # --------- # 自作 class C def mage; end # 動く def hage; end # 動いてない end こんな構造になって、C.new.mage は動くんですが、C.new.hage は 元の hoge が動いてるように見えます C クラスで使う hoge の動作を書き換えたい場合は B クラスに追加しないと駄目ですか?
73 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 21:59:14 ] # require するファイル class B def hoge; end end class C <B end # --------- # 自作 class C def mage; end # 動く def hoge; end # 動いてない end こんな構造になって、C.new.mage は動くんですが、C.new.hoge は 元の hoge が動いてるように見えます …が意図したい書き込みです、すいません
74 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 22:03:24 ] それだけ見ると問題なさそうだねー。
75 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 22:08:59 ] >>73 直接hoge呼んでそうなる? class Bのメソッドから間接的に呼んでるとダメだった気はするけど。
76 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:02:07 ] > 元の hoge が動いてるように見えます そう判断した時の実行結果を貼って見れば何か判るかも。 ↓の様になると思うが。 class B def hoge;p 1; end end class C <B end class C def mage; p 2;end def hoge; p 3;end end C.new.mage # => 2 C.new.hoge # => 3
77 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:06:14 ] requireしてるのが公開されてるブツなら名前だしたほうが早いかもね。
78 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:16:59 ] >>46 > Ruby自体がもう下火になりつつあるしな・・ 下火になってるって 他の言語が盛り上がってるのですかね。。
79 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:19:56 ] >>46 は、CやJavaが話題にならない程度にRubyも話題にならなくなった というのが理解できていないのさ。
80 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 23:28:45 ] ホっ。勉強中なもので、僕の中では熱い言語です。
81 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 00:17:18 ] >>73 ># 自作 >class C 「class C」を「class ::C」にしてみたらどうだろう。 つまり「class C」しているつもりが知らないうちに「class Foo::C」になっている可能性があるんじゃないか。
82 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 10:42:05 ] >>46 >>78 Rubyやってる前からRubyやってると、今は下火には見えんなw このスレの賑わいもあるしな。
83 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 10:46:38 ] 1.4とかもう死にそうだった覚えがある
84 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 10:55:42 ] ruby -Ke の e の部分を取得することはできる? -K オプションが(N 以外で)指定されてることを検出したいんだけども
85 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 11:00:33 ] >>84 $ cat test.rb p $-K $ ruby test.rb "NONE" $ ruby -Ke test.rb "EUC"
86 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 11:07:20 ] >>85 > Ruby インタプリタのコマンドライン情報を示す一連の変数があります。 > 形式は $-? で ? の部分にオプションの一文字が入ります。 うおー変態変数 せんきゅー
87 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 12:25:04 ] > Ruby インタプリタのコマンドライン情報を示す一連の変数があります。 > 形式は $-? で ? の部分にオプションの一文字が入ります。 5年Ruby触ってたのに知らなかった・・・
88 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 23:01:59 ] >>82 「Rubyやってる前からRubyやってる」って禅問答か?
89 名前:デフォルトの名無しさん [2009/03/03(火) 23:25:12 ] sudoコマンドのように、指定されたユーザで操作できるライブラリが あったらいいのにと思ったことがあるのですが、この方法は邪道ですか? # このプログラムはroot権限で実行されます。 # 当然この操作もroot権限で実行されます。 FileUtils.mkdir("/home/foobar") # しかし、一部の操作はある特定のユーザで実行させたい場合があります。 # 例えば: OS.sudo("hogehoge") do # このブロックは一般ユーザ「hogehoge」で実行されます。 FileUtils.mkdir_p("/home/hogehoge/something") #=> '/home/hogehoge' does not exist, so that this operation may be denied. end
90 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 05:54:30 ] >>89 スクリプトの中で個別に操作できるべきではありません 該当ユーザーの権限でスクリプトを起動するか、または、せめて、setuid するべきです
91 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 17:05:23 ] 少しお聞きしたいのですが、最近このスレか前スレかどこかで 初心者がリファレンスマニュアルの読む際に気をつけることに関するレスがあったと思うのですが 覚えていらっしゃる方はいらっしゃいませんでしょうか? 確か、:: とか # についての説明があったと思います。
92 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 18:06:02 ] >>91 マニュアルで # がついてればインスタンスメソッド Array#map は Array クラスのインスタンスメソッド map Array のインスタンスに対して . でアクセスできるっていうかぶっちゃけ arr = [1,2,3] に対して arr.map の形式で書ける マニュアルで :: で区切るのはクラス名と定数 Ruby ではクラスも定数なので原理的に クラス::クラス::定数 と クラス::クラス::クラス を区別できないが、 慣れればどうということはない 実際のスクリプトでも :: で区切って書く マニュアルで . で区切るのはクラスメソッド URI.parse は URI クラスのクラスメソッド parse
93 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 18:35:20 ] Emacs で、カーソル位置のメソッド名と適当なクラス名を自動で ChangeLog に挿入してくれる elisp があったんですが、 誰か知りませんか? vc の ChangeLog を書くときに挿入してもらいたいなーと思うんですが
94 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 18:57:25 ] php でいうところの jp2.php.net/debug_backtrace は ruby だと何でしょうか?
95 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 19:06:54 ] いちおうできたけどこれは酷いw backtrace = begin; raise; rescue; $@; end
96 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 20:23:17 ] >>94 caller かな
97 名前:94 mailto:sage [2009/03/05(木) 21:31:01 ] >>95-96 phper なのでいじめられると思ったけど 親切にあざーす><
98 名前:デフォルトの名無しさん [2009/03/05(木) 23:45:52 ] MacOSX 10.5.6でMacPortsからruby 1.8.7をインストールして使っています。 ruby 1.8.5と1.8.7の間での変更点についての情報は何処で確認できるでしょうか? 1.8.5で動作確認しているプログラムが1.8.7になってから動かなくなったので おそらく何か変更がありそこがネックになっていると思うのでそこを修正したく思うので よろしくおねがいします。 エラーメッセージは特になく一見動作しているように見えて不意に突然フリーズしてしまい やむなくCtrl-Cで終了しています。再現性も特にないバグなので言語仕様の変化だと思います。
99 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 03:43:44 ] >>98 -W オプションつけて実行したらどうなるよ?
100 名前:98 mailto:sage [2009/03/06(金) 09:01:30 ] ありがとうございます、そんなオプションが有ったんですね!! いくつかインスタンスされていない変数が見つかりました。これが原因かもしれません。 チェックしてみたいと思います
101 名前:98 mailto:sage [2009/03/06(金) 09:04:11 ] s/インスタンスされていない/イニシャライズされていない/ すいません寝起きだったので用語を間違えてしまいました....orz
102 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 10:05:10 ] >>92 それだ!サンクス
103 名前:デフォルトの名無しさん [2009/03/06(金) 12:08:50 ] すいません、gemの1.3.1をruby setup.rb でソースからインストールしたんですが、gem自体をアンインストールするにはどうすればよいでしょうか??
104 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 12:19:41 ] てさぎょう
105 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 12:23:41 ] てか自動でアンインストールして欲しいならシステム標準のパッケージの使え
106 名前:103 [2009/03/06(金) 12:25:05 ] どもです。 インストールしたディレクトリと/usr/bin/gem1.8 を消しましたけど、これで大丈夫でしょうか?
107 名前:103 [2009/03/06(金) 12:25:44 ] >>105 そうですよね。apt-get install 使うべきでした。
108 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 12:33:29 ] gems のディレクトリ削除して bin/gem 消せば誤作動はしないと思う
109 名前:109 [2009/03/06(金) 12:35:47 ] どもです!
110 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 14:45:30 ] すいません、昔rubyを使った事があって久しぶりに使ってみた所 いくつか忘れてしまっている所が有るのでよろしくおねがいします。 もともと引数の無いメソッド(ここではuniq)を使うとき()っているんでしたっけ? いま、Rubyのチュートリアルを読み返して見ているのですが uniq.mapと()はついていません、しかし検索してみるとときどきuniq().map(){hoge}という書き方を 見かけます、どちらが推奨されているのでしょうか? よろしくおねがいします。
111 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 14:49:44 ] >>110 推奨かどうかは知らないけど大抵、引数ないならつけない
112 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 15:10:16 ] ありがとうございます。とくに動作に影響は及ぼさないのは明らかだと思うので つけないほうこうで行きたいと思います、ところで皆さんはrubyのバージョンがあがって 動作しないコードが出てきたときはどのように調査していますか? 以前1.8.5で作っていたコードが1.8.7で動かなくなっていて少し困っています うえの方でも -w オプションをつけることで糸口をつかんだ方がいらっしゃるようですが どのような方法が一般的なのかとおもいまいして参考のためによろしくおねがいします。
113 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 16:03:08 ] 同名の変数やアクセサがあったりすると動作に影響を及ぼすこともあるかもよ。
114 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 16:05:19 ] 最初に言うと自動検知は無理 一般的には、1.8.5 から 1.8.7 にしただけで動作しなくなるスクリプトというのはそう多くない 1.8.6 feature と 1.8.7 feature を目で見てスクリプトで使われてるのをチェックするしかないな
115 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 16:44:57 ] わかりました。 非常に参考になりました、ありがとう御座います。
116 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 17:15:37 ] >同名の変数やアクセサ アクセサとの重複はあり得ないんじゃ? 変数とかぶるケースも変数名をselfのメソッドと同名にしたのが悪い。 これたしかwarning出るよね。
117 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 17:24:28 ] >>116 アクセサとの重複はありないよな。 変数とかぶるケースは、同名にするのが悪いに決まってるが、 「とくに動作に影響は及ぼさないのは明らか」という部分に対して 注意喚起してるんじゃないかね。
118 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 18:41:17 ] Ruby 2.0 はいつ頃でますか? 1.9.1 が出たし、1, 2 年は出ない感じ? それとも 3 年以上?
119 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 18:43:24 ] >>118 Ruby2.0は基本的に出ない 稀に2.0が出るのを待ってRubyを始めようという人がいるけど、あれ間違いだから
120 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 18:50:10 ] >>119 > Ruby2.0は基本的に出ない どっかで表明していたっけ?
121 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 19:06:31 ] そもそもRuby 1.9.5あたりでまた開発版になりそうな勢いだしなぁ 本当にこの先10年くらい2.0は出ないかもしれない
122 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 19:08:55 ] Rubyでメソッドの引数にメソッドポインタを渡して、それを呼び出す的なことをやりたいのですが、 どのように記述したものでしょうか? 実現したい仮想的なコード: def hoge(method) method.call # methodを呼び出したいつもり end hoge(@mage.moge) evalで書くのもダサイし、遅い気がします・・・。 def hoge(method) eval(method) end hoge("@mage.moge")
123 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 19:11:32 ] Ruby2.0はいつかは出るのだろうけど まだまだ作り始めてもいないので いったいいつごろになるのやら さっぱりわからん 10年後くらい?
124 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 19:19:37 ] >>122 def hoge(method) method.call end hoge(@mage.method(:moge))
125 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 19:24:05 ] >>124 サンクス!いけました。Methodオブジェクトがポインタ的に使えますね。 ありがとうございました。
126 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 22:41:59 ] 2.0は開発者の前に吊されたニンジンということになっている。
127 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 22:45:35 ] ニンジンいらないよ
128 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 22:48:45 ] そんなこと言わずにどうぞ www.rubyist.net/~matz/slides/kobe07/mgp00007.html
129 名前:118 mailto:sage [2009/03/06(金) 23:01:44 ] Ruby 2.0 の件、いろいろとありがとうございます。 人参、面白かったです。 これから Ruby をはじめようかなーと漠然と思っていたので、 互換性のない 2.0 を出るのを待とうかとも思っていましたが、 まだまだ先みたいなので 1.9 を試してみます。
130 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 00:05:25 ] 1.9の時点で1.8とは互換性がないよ。
131 名前:デフォルトの名無しさん [2009/03/07(土) 00:07:30 ] 言語仕様ってもうちょっと安定しないの?
132 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 00:10:06 ] 安定しているのが売りの言語を使ったら。
133 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 00:12:38 ] 文句言うほど不安定だとは思わんがね
134 名前:デフォルトの名無しさん [2009/03/07(土) 00:13:24 ] しかし最近のLinuxディストリを見ても、RubyではなくてPythonが 標準で入っているくらいだからな。
135 名前:デフォルトの名無しさん [2009/03/07(土) 00:13:38 ] Cだったら安定してるんじゃない?
136 名前:131 [2009/03/07(土) 00:15:20 ] すまん、昔書いたRubyスクリプトをいま実行してみたら たくさん文句言われてうんざりした。それだけ。
137 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 00:16:39 ] >>134 何勘違いしてるのか知らんけど、プログラミング言語は人気だからとか言う理由で採用したりしないから その言語で作られたアプリケーションを動作させるためにインストールされるものばかりだから
138 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 00:19:20 ] 1.9になると警告だけじゃなくて実際に動作しなくなるものも少なくないので 今から手直しするなら1.9での動作もついでに確認しておいた方が良い
139 名前:デフォルトの名無しさん [2009/03/07(土) 00:20:10 ] >>137 知ってる。 だが実際にはほとんどがPythonで書かれていて、結果としてRubyに依存関係を もっているパッケージがほとんどない、ってこと。
140 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 00:23:58 ] >>139 何勘違いしてるのか知らんけど、プログラミング言語は人気だからとか言う理由で採用したりしないから その言語で作られたアプリケーションを動作させるためにインストールされるものばかりだから
141 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 00:51:26 ] >>119 それってTeXのバージョンπみたいなものか
142 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 01:14:36 ] まともな仕様もないものは使われません
143 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 01:21:04 ] >>142 何勘違いしてるのか知らんけど、プログラミング言語はまともな仕様があるからとか言う理由で採用したりしないから
144 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 01:27:30 ] perlの仕様ってどこかにある? pythonはあったような気がするんだが……
145 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 02:21:36 ] pyは人気が高い云々というか割と最近にPOSIX標準になったと思ったが つまりなくてはならないもの
146 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 02:42:35 ] >>145 ソースは?
147 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 03:15:17 ] ググってみたがそれっぽいのがでない 思い違いのようだ 正直すまない
148 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 06:35:40 ] >>89 亀レスだけど、Process::Sysで出来そう WEBrick::Utils::su 参照 # webrick/utils.rb あとスクリプトにsetuidしても所有者権限で実行してはくれないよ、アシカラズ
149 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 09:25:56 ] >>127 コウウラキ 乙 >>145 Pythonって最近のディストロのインストーラーの一部とかに使われている敬意があるんじゃなかったけ?
150 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 10:48:45 ] ではなぜRubyが採用されない・・・
151 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 11:58:03 ] RubySpecってどの程度進んでるのかね……。 ttp://rubyspec.org/
152 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:25:24 ] 単にRubyが日本発だからでわないかと。日本語って外人から見たら全然意味わからんし。 Pythonは外人発のOOp言語だから英語でのノウハウがたまりやすかったってだけだと思う。
153 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:28:58 ] >>149 FreeBSDだと、Pythonだからインストーラーに採用できないとかもあったりするねw まあRubyよりライセンスが緩いから、だいぶいいんだけど・・・ そう言えば、Ruby on HSPはマダなの? 早くしないと日本でもPythonに負けそうな勢いだ ライブラリとドキュメント早くなんとかしないとね >>152 Pythonの方がコミュニティが優秀って事だろう
154 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:36:18 ] >>153 RubyとしてはHSPに乗っかる理由がない Tk並にGUIが分離してるなら良かったんだが
155 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:36:44 ] >>153 >Ruby on HSP HSPでRuby実装・・・?
156 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:39:19 ] >>155 HSPをGUIフロントエンドとして使うという意味だろう そんなことやってる人いないけど… RubyとHSP間のトランスレータなら、そんなん無駄だから他のことやったほうが有意義
157 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:53:00 ] >>155 >Ruby on HSP HSP様の人気にのっかると言う意味です。 最低でも、あのくらいは頑張ってくれないと・・・
158 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:55:15 ] コアとしてるユーザが違う物を比べるのか Ruby十分人気だろ
159 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 22:00:17 ] うん、普通に人気だと思う 業務に使われる割合が PHP よりも Perl よりも少ないというだけで、人気は普通にある
160 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 00:17:13 ] File.mtime が Timeオブジェクトを返すのですが、これをDateオブジェクトに 変換する方法ってありますか?
161 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 00:26:22 ] 使われる分野が違うだけで、HSPより人気だと思うがw 書籍発行数だけでも、さすがにHSPより上じゃないの?
162 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 00:27:08 ] HSPとかと比べても何の危機感ももたない。 もっと危機感煽るなら、AIRくらいにしとかないとw
163 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 00:30:46 ] >>160 Time#yearとTime#monthとTime#dayで年月日が得られるからそれをDate.newあたりに指定するのが先決 Time#strftimeの使い方を覚えるのでもいい
164 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 00:32:39 ] >>163 わかりました、やってみます。 さいしょ、Time#strftimeで文字列比較しようとしたのですが ゲボゲボなのでやめました。 ありがとうございました。
165 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 00:34:17 ] そだな mtime = File.mtime('readme.txt') mdate = Date.new(mtime.year, mtime.month, mtime.mday) とするのがとりあえず初心者スレだと思う
166 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 00:46:29 ] >>165 何度もすみません、 p Date.new === Date.new(2009, 3, 8) #=> false となってしまうのですが、これはなぜでしょうか? ちなみに t0 = Date.new sleep 10 t1 = Date.new p t0 === t1 #=> true これは期待通りです(;_;)
167 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 01:04:01 ] >>166 マニュアルくらい読めよ > Date > 日付を扱うクラスです。 > クラスメソッド > civil([year[, mon[, mday[, start]]]]) > new([year[, mon[, mday[, start]]]]) > 暦日付に相当する日付オブジェクトを生成します。 って引数省略時の動作書いてねええええ Date.new とだけしたときは、Time.new が現在時刻を返すのと同様、現在の年月日の Date オブジェクトを返す
168 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 01:07:16 ] >>167 間違ってるぞ Date.new は Date.new(0, 0, 0) だ 今日の日付が欲しいときは Date.today を使う なんで Time.new と同じ動作にしなかったのかは若干謎
169 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 01:13:20 ] ありがとうございます。 納得しました。
170 名前:デフォルトの名無しさん mailto:age [2009/03/08(日) 02:00:12 ] 質問です。 Rubyは標準でデータベースを持っていたり、推奨DBがあったりしますか?
171 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 03:08:56 ] 松本教祖様がGUI否定だしなあ。インストーラ採用は絶望的でしょ。
172 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 03:24:04 ] >>146-147 これ見たんじゃない? Linux標準にPerlとPythonが追加 − @IT ttp://www.atmarkit.co.jp/news/200802/20/lsb.html Rubyなんて海外じゃ全然ダメだし、どう考えても入らないよな・・・ Pythonはインストーラーやパッケージシステムなんかにも採用されているし、もう十分標準なんだろうな
173 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 07:25:33 ] >>171 別にGUIを否定はしてないでしょ。興味ないだけで。
174 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 13:40:07 ] 同じだろ。
175 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 19:37:52 ] >>170 標準では付いてない。PHPやPythonとは違ってなんでも詰め込んだりしない。 本格指向ならMySQL、普通の人は軽めのSQLiteにしておけばいいと思う。 松本教祖達が興味ない分野が死んでしまうのは痛いな 広めようという気がないのだから
176 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 00:07:06 ] >>174 無関心は、否定よりも困る。 議論の対象にもならないのだから。
177 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 09:54:04 ] sqliteを添付しようという話は何度かあった気がするんだがね。
178 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 12:53:48 ] >>171 標準添付の Ruby/Tk のことも思い出してあげて下さい require 'tk' Tk.mainloop で窓ができるんだぞ
179 名前:デフォルトの名無しさん [2009/03/09(月) 16:40:30 ] ネットワーク系の勉強をしようと思ってRubyを触り始めたのですが たとえばstock.2ch.net/test/view.so?bbs=tech (2証プログラム) などログインが必要なところにアクセスしようと思ったらどうすればいいのでしょうか 参考になるURLなど紹介していただけるとありがたいです
180 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 17:49:52 ] >>179 HTTPとHTMLの勉強をしてください Rubyはそれらをほとんど抽象化しません
181 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 17:55:27 ] >>180 ありがとうございます。 その辺勉強してきます。
182 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:36:26 ] attr_accessor で定義した属性にメタ的?にアクセスするには何が早いでしょうか? 文字列とかシンボルから属性をとりだしたいってことなんですけども。 method("属性名").callでよいのかな? ↓みたいなことをやりたいのだけど。 %w(hage, mage, moge).each do|x| iroiroyaru(method(x + "_items").call) end
183 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:55:06 ] まあ、見たまま素直だと思う
184 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:57:03 ] >>182 やろうとしてることがいまいちピンとこなくて何だけど、とりあえず attr_accessor :foo と def foo @foo end def foo=(x) @foo = x end が等価。 だからObject#methodでもいいし、Object#sendでもいいし。
185 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 19:01:41 ] >>182 ちょっと的外れだけど instance_variable_get
186 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:03:27 ] %w{ foo bar baz }.each do |x| puts obj.send(x) end とか
187 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:09:51 ] ありがとうございます。 >>185 属性=変数の場合はそれでも十分いけますね。 >>186 >>184 実質的に、メソッドなんですね。 おお、sendで一発でいけるのか。
188 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:24:05 ] 実質的にも何も、属性というものはRubyにはない def hoge; @hoge; end def hoge=(v); @hoge=v; end と書く代わりに attr_accessor :hoge と略記することができる、というだけに過ぎない hoge はただのインスタンスメソッドで、スクリプト上全く特別扱いされない これを特別扱いするのはマニュアルシステムのRDocくらいだ
189 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:40:19 ] あれよくないよね
190 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:18:07 ] >>187 attr_accessor の仕組みを知って、類似のメソッドを自分でも書くようになると 確実にスクリプトの変態度が増すぞw 面白いから module_eval とか調べてみれ
191 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:19:10 ] クラスからオブジェクトを生成する時のオブジェクトを配列にしたいです。 Array等の方法で先に配列を作り、必要となる都度そこに代入するしか方法は無いのでしょうか? 普通の配列を @a = [] の様な方法で要素数を気にせず宣言するような事をしたいです。
192 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:27:59 ] class MyData < Array def <<(e) self.push(e.to_s.downcase) end end data = MyData.new data << "ONE" data << "TWO" p data #=> ["one", "two"] こんなん? 委譲するべきだけど、最初は小難しいだけだから配列を継承するのが簡単
193 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:31:58 ] >>191 継承してselfに対して操作してもいいし class Foo < Array def puts puts self end end 委譲してもいい。 class Foo def initialize @data = [] end def <<(x) @data << x end end 実装がArrayそのままなら要素数の宣言はいらない。
194 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:33:27 ] >>192 は配列を継承したクラスだけど、 >>191 が欲しいのは、自分の作ったクラスインスタンスの配列なのではなかろうか。
195 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:34:44 ] 説明下手ですみません。例えば、 student[0]〜student[100] があってそれぞれに student[0].math student[0].english student[0].japanese という感じの事です。 Studentsクラスだったとすると student = [] student[0] = Students.new student[1] = Students.new ・ ・ ・ をfor文なりでやるしかないのでしょうか?
196 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:36:12 ] あーやっぱそっちか。 class Foo def initialize @@member ||= [] @@member << self end end
197 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:37:06 ] for 文でも別に構わないが、 for 文は普通は使わない students = [] 100.times.do students << Student.new end
198 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:38:33 ] ・・・ごめんこっちかな? class Foo def Foo.create(num) ary = [] (0..num).each { ary << Foo.new } ary end end
199 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:41:40 ] >>195 作るのは>>197 配列要素各々のオブジェクトにメソッドを実行してほしい場合は単にそのように書く students.each do |student| puts "数学の成績は #{student.math} です" puts "英語の成績は #{student.english} です" puts "国語の成績は #{student.japanese} です" end というか、Rubyについての基礎知識が全く無いように見受けられる 本か何かで体系的な学習をしてから動くことをお勧め
200 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:45:08 ] ありがとうございます。 まだわからない部分があってなるほど!とは思えませんが、自分で調べてみます。 最初に上手く説明できずすみませんでした。 ありがとうございました。
201 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:46:06 ] 100のStudentインスタンスを作るだけなら students = Array.new(100) { Student.new }
202 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:48:10 ] >>201 それはスレ的によくないと思う
203 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:02:58 ] あるディレクトリ以下を全部消そうとして FileUtils.rm("dist/*") としたら usr/lib/ruby/1.8/fileutils.rb:1297:in `unlink': No such file or directory - dist/*.png (Errno::ENOENT) と言われます。 本当はどうすればいいのでしょうか?
204 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:07:37 ] >>203 system("rm -R dist/*")
205 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:13:48 ] >>203 適当に Dir.chdir しろ Dir.pwd の結果がたぶん意図しないディレクトリになってる
206 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:19:10 ] ありがとうございます。 そうじゃなくて FileUtils.rm("dist/*") で全部消せないでしょうか(distは消さない)? カレントディレクトリには間違えなくdistがあります。
207 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:30:09 ] じゃあ dist の中に * というファイルが無いんだろう
208 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:32:30 ] >>206 FileUtils.rm とかって単独でグロブを展開できないんじゃないの? 現にエラー見る限り * が展開されてないじゃん Dir.glob("dist/*").each do |f| FileUtils.rm(f) end とかでいけるんじゃないか。
209 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:36:10 ] >>207 は刺激的で意地悪な回答だと思う マニュアル眺めれば見当つくが、引数は配列だ >>208 ではなく、Dir.glob の結果をそのまま渡せばいい
210 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:48:25 ] >>207 は本スレに池w
211 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 19:19:38 ] >>207 はツンデレ
212 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 23:09:56 ] calc_a、calc_bという二つのメソッドがありどちらも return Integer(n) で戻り値を整数にして返します。 n = (中略) * (calc_a / calc_b) という処理をした時に (calc_a / calc_b) の時点で小数点以下が切り捨てられてしまいます。 (calc_a / calc_b) は本来 1 より大きく 2 より小さい値にしようと思っていたのですが、どうすればよいでしょうか?
213 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 23:14:42 ] Integer(n) という時点で、何かがまずそうだと思うんだが、それはさておき。 n = (中略) * (calc_a.to_f / calc_b) でいいんじゃね。
214 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 23:18:23 ] 少しはマニュアル読めよ …特に書いてねえええ 整数のメソッドの返り値は整数になってる 小数つきの値を返して欲しいなら小数つき数字のクラスの割り算メソッド使え irb> 10 / 3 3 irb> Float(10) / 3 3.33333333333333
215 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 23:46:26 ] >>213 >>214 無事解決しました。 ありがとうございました。
216 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 09:05:39 ] Float(10) Integer(1.1) これって何?キャスト???Ruby使ってて始めてみたw to_fとかto_i使うもんだと思ってた
217 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 09:07:03 ] ごめん、壮絶にマニュアルに載ってた。組み込み関数なのね。 to_f, to_iとの違いはなんだろ。 レシーバーをもつメソッドの違いとかなし
218 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 09:13:17 ] >>217 www.ruby-lang.org/ja/man/html/_C1C8A4DFB9FEA4DFB4D8BFF4.html#Integer www.ruby-lang.org/ja/man/html/String.html#to_i
219 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 09:14:43 ] >>216 ただの関数的メソッド URI('www.example.com '') なんかも有名だが、こんなふうに作る module Kernel def URI(uri_str) URI.parse(uri_str) end module_function :URI end たいていは特定のクラスメソッドや new つきインスタンスメソッドの別記だけど、 Integer() や Float() のように、特定言語のアレっぽい便利な「ちょっと違う処理」を噛ませてある場合も多い irb> "10".to_f 10.0 irb> "a".to_f 0.0 irb> Float("10") 10.0 irb> Float("a") ArgumentError: invalid value for Float(): "a"
220 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 09:26:53 ] 個人的には Integer() なんかの特殊処理は好きではない 素直に「そのクラスのオブジェクトへの変換メソッドのエイリアス」とだけ設定してほしかった
221 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:20:30 ] 表記が違えば挙動が変わるのはおかしいことじゃない。 関数側で未定義なクラスならto_i等を呼ぶから結果的にエイリアスとしても 振る舞うだけで、関数自体はエイリアスという位置づけでもないし。
222 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:25:33 ] 表記が違うなら振る舞いも変えておけば使い分けできて (゚д゚)ウマー ってことじゃないの
223 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 11:35:11 ] Integer が整ってなかったり Float が浮いてたりするように感じるのは、変換のクラスメソッドがないから Integer.convert があってそれを Integer() 内で呼んでる、とかそういうめんどっちい構造にすべきだった いきなり関数形式のメソッドだけ提供されても正直困る
224 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 11:43:40 ] 関数的メソッド Integer は Integer クラスとは何の関係もないんだよね 名前がたまたま同じだけの、ただの Kernel クラスのメソッド URI() の定義を初めて見たときは激しくがっかりしたことを覚えている クラスそのもののオブジェクトに引数を渡す方法があるのかとかちょっと期待してた俺
225 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 16:24:02 ] 割とがっかりする仕様をそのままにしとくのもなんだかなあ感はあるね。 まあ教祖が放置してるぐらいだから、信者の皆さんに不満は無いのだろうけど。
226 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 16:35:53 ] 個人的には、微妙に挙動の違う記法を いくつか用意する方針には納得している do endとブレース、Procとlambdaみたいなのは、使ってて確かに両方必要だと感じるので ってかどうせ、変えたら変えたでまた批判されるでしょ?
227 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 16:51:39 ] &&, || と and, or だってそうだしな 優先順位が同じになったら困る人が大量発生するだろうなw
228 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 17:25:54 ] てかこれはそもそも "a".to_i みたいなのが 0 になるのがおかしい 数字じゃありませんってエラー出せよ
229 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 17:29:20 ] まあ、今のRubyで to_i や to_f のメソッドを作ったら例外ブロックとか例外処理引数とかつけると思う 文字列と数値の処理は変なの入れるとRubyスクリプト全体が遅くなるから嫌がられそうだが
230 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 17:36:44 ] 人のソースを解読しながらの作業なんだけど 変数が宣言されてないのが凄く違和感ある 何かオブジェクトがあった時に中身が何なのかわからないんだよね 慣れればなんとかなるもの?
231 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 17:45:05 ] >>230 宣言は = で代入と同時に行われている これ以外の方法で変数が宣言されることはない(配列の要素とかは別だけど) で、変数の中身がわからなくて困るというのは、おおむね、変数名つけた人間のセンスがねえ クラス名から類推されるオブジェクトの名前を変数に付けるのがセオリー 変数が何のオブジェクトか知りたければ、「右辺」の返り値を調べるといい マニュアルでも、「○○を返します」というのだけは意識的に書かれてるはずだ これまた稀にマニュアルなのに「××します」とだけ述べてて返り値のクラスについての情報がない奴がいるが、 アホ認定でよし
232 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 17:51:50 ] >>228 何を許容し、何をおかしいとするかは言語によるでしょ 少なくとも一様ではない 複数の判断があるからこそ、Rubyでは#to_iとInteger()の二つを用意してあるんでは? Cのatoiは0を返す JavaのInteger#parseIntは例外を投げる Common Lispのparse-integerはデフォルトでエラーを通知するが、 :junk-allowedパラメータによっては多少の不正形式も許容し、それでもダメならnilを返す
233 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 18:01:31 ] >>232 いや to_i と Integer() には関連性はないから
234 名前:デフォルトの名無しさん [2009/03/11(水) 18:05:44 ] testfile = "/tmp/testfile" FileUtils.chown(1000, 1000, testfile) #=> /usr/lib/ruby/1.8/fileutils.rb:987:in `fu_get_gid': can't convert Fixnum into String (TypeError) from /usr/lib/ruby/1.8/fileutils.rb:926:in `chown' from test.rb:6 あれ?と思って何度もドキュメントを読み直してみたんだけど、どうしても わからなくてFileUtilsのソース読んでみたんだが、 def fu_get_gid(group) #:nodoc: return nil unless group if /\A\d+\z/ =~ group ここでマッチするかを調べる前に、group = group.to_s するのを忘れていませんか? すぐ上にdefされているfu_get_uid()はStringに変換してあるのに・・・
235 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 18:42:26 ] >>231 右辺を見る、まず変数なのかメソッドなのかわからん どちらにせよ何を返すのかが重要だからそれを調べるために メソッドが定義されてる部分か変数に代入されている部分を探す 探した先でも代入されてたりして再び右辺を知る必要が生じる しかも同じ変数を複数の用途に使ってたりするから 直前にアクセスしてるのはどこかを見つけ出して 直前を知る為に分岐で使われる変数の中身を知る必要があって 変数の中身を調べるために代入されている所から右辺を辿って という状況が3重ぐらいにネストされてる ってただの愚痴になっちった 俺が慣れてないせいもあるだろうし、スルーでおkです
236 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 19:30:46 ] >>235 副作用の少ないスクリプトなら、デバッガ使うか デバッグプリント書き込んで実行しちゃうのが手っ取り早い。 あとはその変数(オブジェクト)をレシーバにしてるメソッドから類推するとか。 これはduck typingと呼ばれる概念の延長だけど Stringのメソッド使ってるならStringかそれに似せたオブジェクトだろう、ということ。
237 名前:234 [2009/03/11(水) 19:56:51 ] ちょっと無視しないでよー もしかして僕がバグなんですか?
238 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:09:14 ] 数値で指定できるの初めて知った ずっと文字列だったから
239 名前:234 [2009/03/11(水) 20:14:24 ] >>238 ええ、ただ僕の場合はユーザID、グループIDで指定する習慣となっているので ちょっと困ります。 FileUtils#chown のユーザIDは大丈夫なのに、グループIDだとエラーが出るので 、それを手がかりにしてソースを読んでみたのです。 初心者なもので、バグかどうかはわかりませんが、fu_get_uid() と fu_get_gid()を比較してみると、バグなのかな?という疑問もあります。
240 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:20:20 ] あん、"1000" で通るだろ
241 名前:234 [2009/03/11(水) 20:24:29 ] >>240 やだよ。 つかEtcとかFile#Statで得たユーザID、グループIDを いちいちto_sでStringに変換するくらいだったら、自分でfileutils.rbを修正しちゃうね。 (自分で修正したものを/usr/libに置くのはキモいけど)
242 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:28:40 ] そういうことをやると、環境構築のたびそこに修正が入るわけだが ひとりシステムで将来的にも引き継ぎなしとかならいいけど
243 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:34:19 ] require 'fileutil' module FileUtils alias org_fu_get_gid fu_get_gid def fu_get_gid(group) org_fu_get_gid group.to_s end end >>234 も>>237 もバグだと思うけど、>>241 をやるぐらいなら モンキーパッチのほうがマシ。動くかはシラネ。
244 名前:234 mailto:僕はバグです [2009/03/11(水) 20:43:53 ] じゃあ /usr/lib/ruby/1.8/fileutils.rb を適当な場所にコピーして 自分で修正! def fu_get_gid(group) #:nodoc: return nil unless group group = group.to_s # fu_get_uid() にならって、この部分を追加! if /\A\d+\z/ =~ group then group.to_i else Etc.getgrnam(group).gid end end private_module_function :fu_get_gid これで解決だよw つーか、この程度のバグも報告されていないとは、実はRubyユーザって 少ないんじゃないの?ww
245 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:47:29 ] あーはいはいそうだねすごいね
246 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:49:08 ] 少ないけど、何か?
247 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:52:59 ] >>244 そんなRuby使うのやめちゃったらいいよ 折れは使うけど
248 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:07:41 ] [#15907] Patch for FileUtils#chown (specifically: FileUtils#fu_get_gid) ttp://rubyforge.org/tracker/index.php?func=detail&aid=15907&group_id=426&atid=1700
249 名前:234 [2009/03/11(水) 21:15:23 ] >>248 そのパッチが公開されたの2007年じゃんワロタww いつになったら適用されるんだろうね
250 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:31:57 ] redmineに移行して忘れ去られていると見た。
251 名前:234 mailto:僕はバグです [2009/03/11(水) 21:35:44 ] じゃあ誰か報告してあげなよ。 俺はたいして英語が書けない読めない喋れない聞き取れない 現役高校生だし、当然職業プログラマでもないからやめておくが・・・
252 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:37:42 ] 日本語でおk なんだが。
253 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:56:37 ] 報告してあげた。 redmine.ruby-lang.org/issues/show/1270
254 名前:234 mailto:僕はバグです [2009/03/11(水) 22:03:30 ] なんだよー、日本語でいいのかよ。 だったら実名で報告しておけばよかったなー。 そんで俺が有名になって、クラスの女の子たちから告白されて スーパーハカーになっちゃったりして、んでもって将来かわいいお嫁さんと結婚したら 君たちは嫉妬しちゃって鳴門大橋から飛び降りることだろうw まあとにかく>>253 さんありがとう!
255 名前:234 mailto:僕はバグです [2009/03/11(水) 22:04:38 ] # FIXME
256 名前:デフォルトの名無しさん [2009/03/11(水) 22:12:29 ] フィールドがタブ区切りで、行区切りがCrのデータを処理するときなんですが, csv = CSV::open('data.csv', 'r') csv.each{|r|レコード処理その1} としたあと csv.each{|r|レコード処理その2} をしたくてもデータがnilとなっていて,うまく処理できません。 今は,改めてcsv = CSV::open('data.csv', 'r')で再オープンしているのですが io.rewindみたいなもっといい方法はないですか? 処理の都合上csv.each{|r|レコード処理その1;レコード処理その2}はできません。 (ようするに最後のレコードまでいって,もう一度はじめからの処理が必要)
257 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 22:37:52 ] open_readerの定義を参考に CSV::Reader.parse(io, fs, rs) do end io.rewind CSV::Reader.parse(io, fs, rs) do end とでもやるしかなさそうな気がするが、 CSV再オープンと大して変わらないかな。
258 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:08:07 ] fastercsvのソースにはrewindがあったけどどう使うかは知らん
259 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 02:32:42 ] class C def initialize @n = 50 end def n return @n end def n=(n) @n += n - self.n end end c = C.new b = c b.n = 20 p c.n これを実行すると20と表示されます c = 50 b = c b = 20 p c これは50と表示されます ここの辺り、それぞれの結果に差が出る理由などが漠然としか理解できていないのですが 上手く解説してるサイト等ご存知でしたら教えてください
260 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 02:54:22 ] # C インスタンスを生成し c に代入 c = C.new # c のインスタンスに b からもアクセス出来るようにする b = c # b(==c) の内部変数に 20 を代入する b.n = 20 # b と c は同じオブジェクト(C インスタンス) # 変数 c に 50 を代入 : b=nil c=50 c = 50 # 変数 b に c の値を代入 : b=50 c=50 b = c # 変数 b に 20 を代入 : b=20 c=50 b = 20 # b と c は別のオブジェクト(20 : 50)
261 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 03:00:52 ] センスって都合のいい言葉だな。 でもそのセンス大事な言語仕様なら、もうちょっと厳密に固めた方がいいと思う。今の再利用の際に謎解きが必要な仕様では、オブジェクト指向のメリットである再利用が阻害されるだけ。
262 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 04:16:25 ] >>261 《厳密》に動作してるよ お前のプライドを満たすために言語があるわけじゃない
263 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 04:24:33 ] Javaでスパゲティが作れてしまった時点で人類は認識を改めなければならなかった プログラミング言語側に責任を負わせるのは誤りなのだと
264 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 08:21:55 ] >>263 どんだけ、敷居を下げた言語つくってもスパゲッティコードは量産されるの法則
265 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 08:54:49 ] 質問があります。 RubyでExcelのスプレッドシートを扱う簡単なライブラリでオススメはないでしょうか? 通常はOLE直で使うものなんでしょうか?
266 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 09:10:11 ] >>263 頭の中がスパゲッティなら出てくるものもスパゲッティw これ真理
267 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 10:07:20 ] >>265 gem install spreadsheet-excel
268 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 10:11:05 ] >>259 どういう動作をするほうがいいと思った?
269 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 10:32:03 ] やっぱプログラマも免許制にした方がいいな。 質の悪いプログラマがいつまでも駆逐できない。
270 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 10:32:13 ] >>267 License: GNU General Public License (GPL) version 3 (´・ω・`) 納品する時に rubyscript2exe で固めたらGPLの影響受けますよね、やっぱ・・・ ライセンス問題なさそうなのなら、これでいけるかな・・・ RAA - spreadsheet raa.ruby-lang.org/project/spreadsheet/
271 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 23:55:38 ] >>270 ソース公開しちゃいなよw
272 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 00:29:08 ] ソース公開したらパクって一儲けします。
273 名前:デフォルトの名無しさん [2009/03/13(金) 03:07:30 ] gem の再インストールをしようと思ってるんですが、今までgemでインストールしたライブラリを全部一気に削除するにはどうすればいいでしょうか? やはり gem uninstall で一個ずつ手作業?それともgemのディレクトリ削除するだけでgemでインストールしたライブラリも全部削除したことになるのでしょうか?
274 名前:デフォルトの名無しさん [2009/03/13(金) 04:23:04 ] d.hatena.ne.jp/kitamomonga/20080402/ruby_www_mechanize_form このページの最初のサンプルを参考に agent.get('search.yahoo.co.jp/ ') の所を agent.get('www.google.co.jp/ ') にしてみら undefined method `field_with' for nil:NilClass (NoMethodError) というエラーが出ました、何が原因なでしょうか?
275 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 04:36:20 ] >>274 参照ページの処理がYahooのページ構造に依存しているだけ googleに対応させたければGoogleのページ構造に合わせて スクリプトを修正する必要がある
276 名前:デフォルトの名無しさん [2009/03/13(金) 04:40:55 ] >>275 具体的にはどこをどうすればいいのでしょうか。 取りあえず、いろいろ試しているんですが分かりません。
277 名前:276 [2009/03/13(金) 05:43:48 ] すみません自己解決です、今のところ理由は不明ですが agent.user_agent_alias = 'Windows IE 7' を入れてたら動きました、これから理由を探っていきます ありがとうございました。
278 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 07:50:36 ] >>273 gem list | awk '{print $1}' | xargs sudo gem uninstall -a とかどうだろう gem のディレクトリを消しても /usr/local/bin とかにスクリプトファイルがインストールされているからね。rakeとか。
279 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 16:24:22 ] railsなどrubyで書かれたソースを読むのに便利なツールはないでしょうか? Cでいうところのgloboe,phpのphpxrefのようなツールがあると最高です。
280 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 16:36:49 ] ソース読んだほうが早いということになってる
281 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 16:39:19 ] Railsは「Rubyではない」ので、Rubyとは別に考えてください
282 名前:276 [2009/03/13(金) 16:53:46 ] たびたびすみません require 'rubygems' require 'mechanize' require 'nokogiri' require 'kconv' agent = WWW::Mechanize.new agent.user_agent_alias = 'Windows IE 7' page=agent.get(URI.parse('www.google.co.jp/ ')) puts page.forms[0] だときちんとformが表示されるのですがアドレスを be.2ch.net/test/login.php にするとnilといわれます、該当ページのbodyを表示しても きちんとformは存在しているのでどこかがまずいはずなのですが 分かりません、よろしくお願いします。
283 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 17:28:52 ] >>282 あはは、libxml2 は来るなって HTML に書いてある これは libxml2 がパースできないタイプの HTML の書き方だ 自前で POST するか、あるいは Hpricot を使う require 'rubygems' require 'mechanize' require 'hpricot' require 'kconv' WWW::Mechanize.html_parser = Hpricot agent = WWW::Mechanize.new agent.user_agent_alias = 'Windows IE 7' uri = URI.parse('be.2ch.net/test/login.php ') agent.get(uri).form_with(:action =>'/test/login.php'){|f| f.set_fields('m' => ['mail_address'], 'p' => ['password']) }.click_button
284 名前:276 [2009/03/13(金) 18:33:26 ] >>283 ありがとうございます。 まだ良く理解できていないと思いますが精進します。
285 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 19:13:24 ] わーい、Mechanize の質問だ >>283 残念惜しいこれパースできます >>282 で、はっきり言うと WWW::Mechanize 0.9.2 のバグです(Nokogiri は悪くないです) Mechanize 内部で UTF-8 に強制変換している可能性をすっかり忘れて、 元の HTML の文字エンコーディングを Nokogiri に渡しています 日本語のサイトで Mechanize を使う場合は、しばらく agent.get(uri){|p| p.encoding = "utf-8"} というように、HTML のエンコーディングを UTF-8 に強制指定してください (irb でも動作するので、この書き方がいちばん楽です) UTF-8 に変換されない組み合わせというのも確かにあるんですが、 こんなのいちいち覚えるのは無駄なので、とりあえず UTF-8 で試して、失敗したら変更するようにしましょう Nokogiri との組み合わせを見捨てて、 >>283 のように Hpricot を使うようにしてももろちん構いません
286 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 19:23:50 ] Emacsでruby-modeを使うと、if や do を入力すると勝手に end が入力されてうっとおしいのですが これをやめさせるにはどうしたらいいですか。 do のあとにスペースをいれるとendが入るのに、doの直後で改行するとendが入らないとか 中途半端な仕様なのでやめたいです。
287 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 19:27:34 ] >>286 それは ruby-electric の担当であって ruby-mode の仕事じゃないんじゃね (add-hook 'ruby-mode-hook '(lambda () (ruby-electric-mode nil))) これでどう ruby-electric 自体をやめてしまってもいい
288 名前:276 [2009/03/13(金) 20:09:05 ] >>285 ありがとうございます。 >WWW::Mechanize 0.9.2 のバグです 最初に自分で調べていたらそれっぽいなと思いましたがよく分からなかったので放棄してました 有名なライブラリでもバグとかあるんですね、分からずに使ってる身としては早く直って欲しいです。
289 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 20:26:23 ] 正直なとこ、これに関しては直る可能性はかなり薄いです 開発版で直る機会があったんですが、あっさりエンバグして 0.9.2 になりました 日本語サイトの一般的な利用法に関する知識を持った(そして英語で議論できる)人がいないんです
290 名前:286 mailto:sage [2009/03/14(土) 00:37:13 ] >>287 やってみたんですけど変化なしでした。 デフォルトでruby-mode-hook に (ruby-electric-mode t) が設定されているようで、 自分の設定よりもデフォルトの設定のほうが優先されているようです。 (setq ruby-mode-hook (append ruby-mode-hook '(lambda () (ruby-electric-mode))) としたほうがいいでしょうか。
291 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 00:59:26 ] >>286 ruby-electric-mode の方にその手のことを制御する変数があったと思うけど (add-hook 'ruby-mode-hook (lambda() (inf-ruby-keys) (require 'ruby-electric) (ruby-electric-mode t) ;; (setq ruby-electric-newline-before-closing-bracket t) )) この設定例における変数 ruby-electric-newline-before-closing-bracket に 類するものが他にもあるはずなのでスクリプトを調べてみるべし
292 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 01:45:47 ] 質問です。RubyにはSQLiteなどが、標準搭載されることはないのでしょうか? レンタルサーバーや、自分以外の管理の場合に不便です。
293 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 02:16:37 ] 要望の説得力によってはありえるかもしれない。 過去にreadlineやopensslのラッパーが標準付属になったりしたわけだし。
294 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 04:54:59 ] 松本尊師が拒否したら無理だろうな。GUIのように。
295 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 10:09:53 ] ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/24721 最重要はコレ * メンテナは確保できるか
296 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 10:54:46 ] TMail でいいじゃん
297 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 11:42:35 ] >>296 脊髄反射乙
298 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 12:08:23 ] 質問 クラスファイルの中に、いい例が思いつかないんですがたとえば %w(hoge hage mage).each do |param| eval("def get_#{param}; @#{param}; end") eval("def set_#{param}=(v); @#{param}=v; end") end のように、全く動的でない固定の5個くらいの文字列から20個くらいメソッドを作る処理を書くのって無駄ですよね? メソッドを書くスクリプトの処理結果をベタ張りするべきですよね? RDocにも拾ってもらえないしいいとこなしですよね?
299 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 12:24:43 ] そいや、sqlite3-rubyは最近開発者が燃え尽きた(burned out)ような。 weblog.jamisbuck.org/2009/2/25/net-ssh-capistrano-and-saying-goodbye
300 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 13:25:12 ] >>298 それが規約や共通処理的なものであるならプロジェクトに よっては意味があるかもしれない 元の処理が何故そう書かれたのかを確認すればいいだけの話じゃないの?
301 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 14:16:13 ] >>294 少しはPythonを見習って欲しいな >>299 丁度いい機会だから、SQLiteくらいは組み込んで欲しいよな 誰がメンテしてくれるのかは、知らないが・・・ Railsとかどうなるんだろう?最悪引き取ってくれるのかな?
302 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 14:37:40 ] JRubyでJavaのオブジェクトを明示的にキャストするにはどうしたらいいんでしょうか? 具体的にはGraphics型をGraphics2D型にダウンキャストしたいです。
303 名前:302 mailto:sage [2009/03/14(土) 16:13:30 ] すみません、自己解決しました。 JRubyでは内部的にSunGraphics2D型になっているようでした。 #僕自身は解決したんですが、JRubyの型指定ってどういう風にやってるんですかね。 #Javaは素人なんですが、明示的に型指定できなくても(Java側で)困る状況にならないってことなのかな。 それと、JRubyの質問ってここでしても良かったんでしょうか? スレ違いだったなら申し訳ないです。
304 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:36:53 ] Class ClassA def initialize b = ClassB.new c = ClassC.new end end Class ClassD def initialize e = ClassE.new c = ClassC.new end end a = ClassA.new d = ClassD.new if (何か) n = a.b else n = d.b end このような状態で、nを使ってcにアクセスするにはどうすればよいでしょうか?
305 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:43:00 ] ミスとインデントを修正しました。すみません Class ClassA def initialize b = ClassB.new c = ClassC.new end end Class ClassD def initialize e = ClassE.new c = ClassC.new end end a = ClassA.new d = ClassD.new if (何か) n = a.b else n = d.e end
306 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:48:24 ] >>305 一般的に、a や d を持って来るべき hoge(v) # v は n であり、n から c を呼び出して何かする end hoge(n) ではなく hoge(v, n) … end hoge(a, n) または hoge(b, n) または hoge(v) # n = v.b または n = v.e … end hoge(a) または hoge(b) という構造にすることを真っ先に考えるべき
307 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 18:10:59 ] 私もそれがベストだとは思うのですが… >>305 から c = ClassC.new を行っている2行を除いたのが元の状態で それに手を加えて c = ClassC.new の追加と、nからの参照をしたい、という状況です 他が色々出来上がってしまっているので hoge(v)をhoge(v, n)に修正するのは1から作り直すのと同じような状態です
308 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 18:22:03 ] あまりスマートではないけど、 Class[B,C,E]にルートオブジェクトを示す変数を入れて、 ルート側のinitializeで初期化するようにしたらどう?
309 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 18:25:40 ] ありがとうございます。 ひとまずそれでやってみます。
310 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 18:26:17 ] 相互参照にする b = a.b c = b.a.c クラス B E に C への参照を持たせる c = a.b.c 可変引数を使う def hoge(*args) case args.size when 1 ... when 2 ...
311 名前:デフォルトの名無しさん [2009/03/14(土) 19:28:50 ] 質問させてください。 以下のようなコードを書いたのですが、 File::open(ARGV[0], "r") { |f| f.each {|line| print line } } このコードに ・このプログラムの実行時に引数がなかった場合(ARGV[0]がnilだった場合)に適切なエラーメッセージを標準入力に表示させる処理 ・ファイルオープンに失敗した場合に適切なエラーメッセージを標準入力に表示させる処理 の二つを加えたいのですが、ruby的に一番スマートな書き方を教えていただきたいのです。 ifとかelseとかを多用するのはruby的には美しくないのかな?と・・・ ご教示頂けると嬉しいです。
312 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 19:31:21 ] 勝手にしろ
313 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 19:39:41 ] > 標準入力に表示させる処理 かなり高難易度な気がする・・・
314 名前:デフォルトの名無しさん [2009/03/14(土) 19:40:17 ] 例外をキャッチキャッチキャッチして スタンダードエラーアウトプットにプットプットプット!!!!
315 名前:311 [2009/03/14(土) 19:54:35 ] すいません間違えました。標準出力です。
316 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:09:12 ] >>312 がFAではある raise "引数を指定してください" unless ARGV[0] begin File::open(ARGV[0], "r") { |f| f.each {|line| print line } } rescue Errno::ENOENT => ex raise "#{ARGV[0]} が存在しません" end 基本はこんなんだと思う あとは好きに改造なり省略なりしれ
317 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:16:35 ] あ、最初の例外は ArgumentError であるべきという話もあるが好きにしてくれ raise(ArgumentError, "引数を指定してください") unless ARGV[0] RuntimeError 以外の例外は「第三者がrescueするかどうか」でとりあえず決めていい 誰も rescue しない例外で自作例外クラスを作ったりするのは自己満足以外の何物でもない
318 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 23:47:02 ] >>311 程度の条件なら例外で振り分けることも出来る(おすすめはしない) begin open(ARGV.fetch(0),'r') {|f| ... } rescue IndexError # ARGV[0]がnil puts "引数を指定してください" rescue # その他ファイル周辺の例外 puts $! end rubyに限らずオブジェクト指向言語なら多態性を利用する事で 制御構造部分の記述を削減できるけど、311に適用出来る所はないね 普通にif文使って事前チェックをするのが正しいと思う
319 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 23:59:09 ] >>311 コマンドライン引数の処理はoptparse使え、常考。 ttp://www.ruby-lang.org/ja/man/html/OptionParser.html
320 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 03:20:31 ] 折角だからWindowsXPに1.91を入れようと思っているんですが、 ワンクリックでインストールできるRubyとかないんでしょうか。 コンパイルとかできんし。
321 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 05:41:50 ] >>320 ワンクリックとはいかないが1.9.1のバイナリならこの辺 www.artonx.org/data/asr/ www.garbagecollect.jp/ruby/mswin32/ja/download/release.html
322 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 07:00:27 ] >>319 引数を受け取るだけの仕事にoptparseを持ち出すのはただの馬鹿
323 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 09:52:13 ] >>321 どうもです。早速試してみます。楽しみ楽しみ。
324 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 12:57:21 ] class G attr_accessor :a def initialize @a = [] @m = M.new(@a) @a = [5] end end class M def initialize(a) @b = a end def output p @b end end g = G.new g.m.output このプログラムの結果は 5 ですよね? その後 g.a を変えると output の結果も変わると思います ところが g = G.new から g.m.output の間に 何をしているのかよくわからないんですが色々な処理が挟まっていて g.a を変化させても(変化しているのに)結果が 5 のままになっています 間でどのような処理が行われている可能性があるんでしょうか?
325 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 13:02:41 ] >>324 > このプログラムの結果は 5 ですよね? rubytest.rb:20: undefined method `m' for #<G:0xb7c4e638 @m=#<M:0xb7c4e598 @b=[]>, @a=[5]> (NoMethodError) 空気を読んで G の attr_accessor に :m を追加した結果 []
326 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 13:11:46 ] 簡略化したつもりが間違ってたみたいです すみませんでした どこがどうなってるんだろう…
327 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 13:11:49 ] 前回書こうと思って面倒になって消したんだが、Rubyの変数は名札だ メソッドが普段直接参照してるのは、変数の名前ではなく、オブジェクトID 変数はオブジェクトIDをわかりやすく書き手とメソッドに伝える名札に過ぎない @a = [] @m = M.new(@a) @a = [5] は、 「@a が [] になって M.new の引数に渡されて、さらに [5] に変化した(ので M.newに渡したものも [5] になっている)」 と見るのではなく 「[] というオブジェクトを @a という名前で呼ぶ、 @a という名前のついたオブジェクトを M.new に渡す、 [5] という(先の [] とは別物の)オブジェクトを @a という名前で呼ぶ」 と見るのが正しい ということで、やりたいことは @a = [] @m = M.new(@a) @a.push(5) とすればいい これなら @a は最初から最後まで同じオブジェクトを指すことができる
328 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 13:21:22 ] class G def initialize @a = [] p @a.object_id @a.push(5) p @a.object_id @a = [5] p @a.object_id end end G.new 結果 -605095318 (最初) -605095318 (同じ) -605095348 (違う) @a = で2度目の代入が行われた時点で、 1回目で [] だったオブジェクトを@a という名前で使うことはできない
329 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 13:22:18 ] >>325 >>327 >>328 ありがとうございます おかげで少し理解できてきました >>324 の @a = [5] はこっちに書くときのミスで実際は @a[0] = 5 でした これなら出力も 5 になると思います そして>>324 の質問の答えは『@aの参照先が変わる処理が行われた』ですね 再び質問なんですが、@aの参照先が変わろうとも、常に@aと同じものを参照する変数を用意する事はできますか?
330 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 13:31:20 ] 変数とはデータを入れる箱である、というメタファーは Ruby では完全に誤りで誤解の元 箱ごと移動できそうに見えてしまうからね オブジェクトが厳然と存在していて、それに補助的にぺたっとつくのが変数という名前のラベル a = [] b = a c = b d = c は、 「d の中に c があってその中に b が、 その中に a があってそれの中に [] という空の配列データが入ってる」 という状態ではなく 「配列オブジェクト [] に、変数名ラベルの a、b、c、d がぺたぺた貼られていてどの名前を使っても参照できる」 という状態 >>329 参照先が変わって困るような変数の場合はその名前を使い回してはいけない オブジェクトには複数の変数名を持たせることができるから、適当な別名をつければどうとでもなるよ
331 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 13:38:24 ] @a = 初期値 b = @a @a = 別な値 p b #=> 初期値 > 参照先が変わって困るような変数の場合はその名前を使い回してはいけない が正しいな @a をあとで使うのなら、@c = 別な値 とでもすべき 本来のスクリプトでどういう構造になってるかにもよるから、別にいいんだが
332 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 13:38:36 ] >>322 うるせー馬鹿 引数にオプション渡されたらどうするんだよハゲ 適切なエラーメッセージを出したいって言ってるだろう? あと、vやhオプションを実装しろっていう暗黙の命令
333 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 13:41:21 ] >>330 >>331 わかりました 詳しい説明ありがとうございました
334 名前:デフォルトの名無しさん [2009/03/15(日) 13:41:59 ] > このリファレンスマニュアルは、Ruby 1.9 に関して、言語仕様、組み込みライブラリ、 > 標準添付ライブラリのいずれにもまったく対応していません。信用してはいけません。 (´,_ゝ`)プッ
335 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 13:44:18 ] >>334 文句あるならオフィシャルのマニュアル使って下さい
336 名前:デフォルトの名無しさん [2009/03/15(日) 13:48:58 ] > 執筆者募集中 (´,_ゝ`)プッ
337 名前:デフォルトの名無しさん [2009/03/15(日) 15:06:30 ] ∧_∧ (⌒⌒ヽ ( ・ω・) あ、ワリ、屁こいちゃった ( プッ!! ゝ∪ ) 丶〜 '´ (___)__)
338 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 15:27:29 ] 1.9って思いきって名前変えれば良かったのにな。 ruby vista 1.0とか。
339 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 15:29:08 ] それは 2.0 の役目です 1.9 シリーズはただの橋頭堡
340 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 16:40:53 ] 1.10は?
341 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 17:15:56 ] >>339 橋頭堡というか里程標というか
342 名前:デフォルトの名無しさん [2009/03/15(日) 23:47:47 ] 誰か教えて f(a,b) = a^b 但し a, b は実数 (実際は有限桁です) を100桁ぐらいの精度で出したいんだけどどうすればいいですか? bigdecimalとか使ってもうまくいかない
343 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 23:56:52 ] 「うまくいかない」なら「しかたがない」だろ
344 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 00:03:47 ] まず自分がどうやって、 どううまくいかなかったか書かなきゃダメだろ
345 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 02:49:37 ] そもそもその精度に意味が有るのか検証したほうが。 つ有効桁数
346 名前:デフォルトの名無しさん [2009/03/16(月) 07:14:52 ] ちょっと解釈がわからないところがあるので質問させてください。 以下のようなコードを実行した場合 $KCODE = 'n' print 'あいう'.match(/\W+/), "\n" #結果 => あいう $KCODE = 's' print 'あいう'.match(/\W+/), "\n" #結果 => nil 右のコメントにあるような結果になってしまうのですが これはどういう事なんでしょうか? マルチバイト文字を認識可能にすると 何故正規表現の「\W」が機能しなくなるのでしょうか? $KCODE='n'の時に「\W」が機能しないという逆の状態なら納得できるのですが…
347 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 07:30:35 ] >>346 \w の意味は? \W はその補集合だよな? な?
348 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 07:41:37 ] >>347 やっと意味がわかりました。 文字コードを指定する事でマルチバイト文字も 「\W」の認識形式に含まれるという事ですね。 文字コードを指定した場合の「\W」は 「英数文字+マルチバイト文字『以外』の文字」という事になるのですね。 つまりそこに引っ掛かる文字は主に「記号」になると。 この認識でいいですか?
349 名前:訂正 mailto:sage [2009/03/16(月) 07:43:07 ] × 「\W」の認識形式に含まれるという事ですね。 ○ 「\w」の認識形式に含まれるという事ですね。
350 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 09:13:48 ] >>342 1.23**4.56 => 2.5702023016193 <----これでは足りないという事なら 123**456 => (ry ↑の結果をMath.logを使って元の値を求める。
351 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 09:40:15 ] >>348 \w は「単語構成文字」 何を単語を構成する文字とみなすかは文脈によって変わるってこと
352 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 09:45:01 ] >>348 「詳説 正規表現」っていう本を読んでみるといいお
353 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 09:48:32 ] irb> puts 'あいう'.tosjis.inspect "\202\240\202\242\202\244" irb> puts 'あいう'.tosjis.match(/\W/n).inspect #<MatchData "\202"> irb> puts 'あいう'.tosjis.match(/\W/s).inspect nil irb> puts 'あいう'.tosjis.match(/\w/s).inspect #<MatchData "\202\240">
354 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 09:57:02 ] 正規表現は関係なくて、日本語マルチバイト文字とはなんぞやという話だな puts '表示'.tosjis.match(/\w/s).inspect #<MatchData "\225\\">
355 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 17:15:40 ] nitems って何の略ですか? nil items?
356 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 17:18:06 ] number of items だと思う。 ていうかどういう場所に現れたのかわからないと答えようがない。
357 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 17:30:33 ] Array#nitems なら Number of ITEMS で項目数 Ruby 1.9 では無くなったメソッドだ nitem という言葉自体はプログラミングでは一般的な略語で項目数を表す
358 名前:355 mailto:sage [2009/03/16(月) 17:42:13 ] >>356-357 ありがと! そうか、1.9 ではなくなったんですね。
359 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:59:04 ] こんなとき、nitem いいですか。
360 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 19:01:24 ] 好きなだけ nitem いいよ
361 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 20:15:18 ] ここは nitem 持っとかないと
362 名前:311 [2009/03/16(月) 20:26:10 ] レスありがとうございます。参考にさせて頂きます。m(_ _)m
363 名前:じゃなくて311 [2009/03/16(月) 20:27:51 ] レスありがとうございます。参考にさせて頂きます。m(_ _)m
364 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 16:11:43 ] 少しお聞きします。 文字列が空文字列(nilではない)かどうか?を調べる一般的な方法(定石、慣例)というのはないのでしょうか? 例: s = "" do_hoge if s != "" こんなんでいいの?if s だと駄目みたいだし。(""はRubyではfalseにならない)
365 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 16:19:25 ] >>364 String#empty? ってのがある。
366 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 16:22:13 ] 通常の処理 unless str.empty? if str.empty? then 何かエラー処理 end というのがイディオム的ではある
367 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 16:50:20 ] str が nil のときでも str.empty? は呼べますか?
368 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 16:52:41 ] $ ruby -e 'str = nil ; str.empty?' -e:1: undefined method `empty?' for nil:NilClass (NoMethodError)
369 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 16:54:26 ] >>367 あ、そうか str が nil である可能性が幾ばくかでもある場合は str && !str.empty? とか書く 途端にめんどくさい感じになって、俺はあまり好きではない
370 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 16:58:55 ] >>369 「nil を empty と同一視したいとき」だな nil は 0 や "" と違う扱いを受けるべき というのが理想論
371 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 17:04:16 ] どうせ俺専用スクリプトだ!てことで class NilClass def empty? true end end とかって邪道?
372 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 17:08:57 ] >>371 駄目
373 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 17:17:19 ] RailsならObject#blank?
374 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 17:20:16 ] 組み込みクラスの拡張は、既存の動作に影響を及ぼさない限りにおいてのみ是 str.empty? が NoMethodError で例外を出して終了することを前提にしているライブラリがうまく動作しなくなるから、 >>371 は「やってはならない」 というか、is_empty? とかそういう関数的メソッドを定義したほうがなんぼか素直だと思われる
375 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 17:28:09 ] >>369 なんかそれキモイw str.nil? or str.empty?
376 名前:371 mailto:sage [2009/03/17(火) 17:46:47 ] なるほど、ためになりました。
377 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 21:41:00 ] Object#tryは正式採用されるだろうか。
378 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 00:49:36 ] nil には nil? があって すべての object にも nil? があるのですね
379 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 00:57:31 ] NilClassを含む全ての基底クラスであるObjectのメソッドだしねぇ
380 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 01:01:29 ] と書いてふと思った。 「一切の例外なくObjectを継承してる」と断言していいんだっけ?
381 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 01:03:05 ] つ BasicObject (1.9)
382 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 01:03:43 ] BasicObjectが出来たので駄目
383 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 01:05:58 ] >>380 1.8ではOK
384 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 01:15:15 ] なんぞそれw 調べてみるサンクス
385 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 01:33:52 ] doc.loveruby.net/refm/api/view/class/BasicObject 説明としてはこのへんかね。
386 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 03:03:54 ] なんでそんなひどいことしたの
387 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 03:07:17 ] >>386 >通常のクラスは Object またはその他の適切なクラスから派生すべきです。 >真に必要な場合にだけ BasicObject から派生してください。 基本的に使うなってことだから大丈夫
388 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 04:30:12 ] でもあるから使っちゃえで、どうにも成らなくなる気がする。
389 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 04:40:02 ] ActiveSupportあたりがメソッドもりもり追加しそう
390 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 04:41:17 ] Objectに追加すべき
391 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 04:42:07 ] 数年後にSuperBaseObjectが出来るんですねわかります
392 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 08:15:56 ] というか、わざわざBasicObjectを選んでメソッドを追加するメリットは特にない
393 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 08:19:36 ] BasicObjectは、Objectに定義されているメソッドがundefでも動作に邪魔だという場合に使う
394 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 08:46:27 ] BasicObject継承してなにかするのは面倒だから 気軽に使えるモノではない。 当たり前だが、インスタンス作るだけで irb> BasicObject.new NoMethodError: undefined method `inspect' for #<BasicObject 0x3e40cc> なんだぜ。
395 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 08:57:41 ] >>394 それは irb で実行しているからだ
396 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 09:02:23 ] irbだと最後に評価した式をinspectするから、 irb> x = BasicObject.new; nil => nil とかすればいいな。 まあ、作っただけじゃHashのキーにすら出来ないんだが。
397 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 09:04:09 ] というかメソッドを追加せずに BasicObject.new するというシチュエーション自体が無茶設定
398 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 09:27:56 ] だから簡単には使えないよ、ていう話なんでしょ?
399 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 09:41:31 ] メソッド定義すれば普通に使える Railsにお墨付き与えたようでちょっとやーな感じだな
400 名前:デフォルトの名無しさん [2009/03/18(水) 09:50:45 ] 使わないものをなんで作っちゃったんだろう
401 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 10:24:12 ] delegateとかその手のやつのため
402 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 10:50:09 ] むしろRailsがBasicObjectを直接継承したオレクラスを使いまくってくれれば、 Objectを継承してるかどうかでRails由来かどうか判定できて嬉しいかも。
403 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 10:54:35 ] なんだ隔離Objectなのか
404 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 11:01:06 ] どうせならRailsObjectにしちゃえば良かったのにね。 他にも追従するアプリが出てくるかも。
405 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 11:11:27 ] Objectは結構いろんなメソッドに自分で反応しちゃうんで、 例えば、「どんなメソッドも全部リモートに投げるデレゲート」を作るとか、 そういう時に不便、とかそういう理由で作られた。 ttp://www.rubyist.net/~matz/20050406.html#p02 ttp://www.rubyist.net/~matz/20050407.html#p02 ttp://www.rubyist.net/~matz/20050413.html#p03
406 名前:364 mailto:sage [2009/03/18(水) 11:13:04 ] ありがとうございます。理解が深まります。 >>365-366 String#empty?ってあるんですね! irbで試した時、ないよーって言われたからないものだと思ってた。多分スペルミスだ・・・ >>375-378 nil判定はいつも hoge if nil_obj と言う風にやってたよ。nil_obj.nil?使うようにするよ
407 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 11:54:24 ] いや、if の条件にオブジェクト1個どっかんと置くのは有効だし一般的だ 複合条件で「nil かどうか」を調べたいときには nil? を使うとわかりやすいことがあるというだけの話
408 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 11:56:56 ] >>374 >str.empty? が NoMethodError で例外を出して終了することを前提にしているライブラリがうまく動作しなくなるから、 こんな書き方しているライブラリのほうがまずいだろ
409 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 12:04:35 ] rdoc が Hash#method_missing を定義したせいで net/imap がうまく動かなくなったとか色々あるじゃん
410 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 14:06:27 ] rdocの分際でそんなもん定義したのかよ。 というか、なんでrdocのせいでnet/imapに影響が出るんだ?
411 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 14:36:50 ] >>409 method_missingのことなんか知らねーよ empty?の例をだせよ
412 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 14:40:37 ] Rubyつながりじゃね?
413 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 14:41:36 ] method_missing を定義された場合にトラップできなくなる例外の第一番目は NoMethodError
414 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 15:08:04 ] ふと思ったんだが、オープンクラスを利用したクラス拡張って 厳密にはリスコフの置換原則に違反してる? method_missingその他の振る舞いを微妙に変えちゃうので
415 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 15:18:35 ] >>414 オープンクラス云々ではなく、method_missingを使ったクラスの サブクラスが(定義時点だろうと)メソッドを増やす時点で 反してるんだと思う。 なんつーかmethod_missingって奥の手の一つでしょ?
416 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 15:24:44 ] 言語べったりの特殊機能 OOPとかそういうのとは別の次元の存在
417 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 16:01:36 ] 理想と現実の乖離始まったか。
418 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 22:10:36 ] どこのObjective-C
419 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 03:14:22 ] rubyもメモリリーク地獄に陥るのか。
420 名前:デフォルトの名無しさん [2009/03/19(木) 03:26:48 ] シンボルの存在意義がイマイチわかりません。 ハッシュのキーにシンボル使うと速度出るんですか?
421 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 03:41:17 ] ハッシュ値の生成式の違いから、相対的には早くなるかもしれんが、 速度目的で使うことはないと思うよ。 lispとかやってりゃシンボルのほうが自然だと思えるケースも理解できる と思う。
422 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 04:00:55 ] 例えば :hello というシンボルはプログラム内で唯一のインスタンスになる 同じ内容の文字列は複数生成されるけど、シンボルはされない def put_str_id ; puts 'hello'.__id__ ; end def put_sym_id ; puts :hello.__id__ ; end 3.times { put_str_id } #=> バラバラの数値が出力される == 呼ばれる度にインスタンス生成 3.times { put_sym_id } #=> 同じ値が出力される == 常に同一のインスタンス 記述される場所が違っても同一のインスタンスが使われるので メモリ消費が少ない、インスタンス生成コストが無い、という利点はある
423 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 04:12:05 ] × インスタンス生成コストが無い ◯ 初回以外インスタンス生成コストが無い
424 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 04:37:35 ] シンボルだとエディターの色分けで、文字列と別色になって便利だから使ってる
425 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 05:54:06 ] Symbol って Fixnum と同じで即値じゃなかったっけ? オブジェクトのための構造体をヒープに割り当てたりとかはしないはずなので 文字列より生成コストは低いと思うよ 評価される度に新しいインスタンスを生成する文字列リテラルより ほんちょっと精神衛生にもよい気がする
426 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 06:01:14 ] シンボルとは何か i.loveruby.net/ja/rhg/book/object.html 今でも通用するのか知らんけどw
427 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 09:19:51 ] >>420 ・Fixnumと同じく即値なので、生成がきわめて軽い ・書くのが楽 ただし濫用すると「あれここStringだっけSymbolだっけ」という混乱が発生する諸刃の剣
428 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 09:23:03 ] で、とりあえずメソッドの頭で to_sym と
429 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 10:13:37 ] Symbolに数値を割り当てることは可能ですか?
430 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 10:16:23 ] irbでやってみれ
431 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 10:57:35 ] >>420 Yugui著『初めてのRuby』p.75より 「文字列同士は、内容が同じであっても一般には同一のオブジェクトとは限らない」 「シンボルは、内容が同値であれば必ず同一のオブジェクト」 「シンボル同士は文字列同士に比べて高速に同値生を判定できます」
432 名前:431 mailto:sage [2009/03/19(木) 10:58:12 ] >>431 同値生→同値性
433 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:01:32 ] 勉強になった
434 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:07:04 ] ただし、シンボルの元となった文字列はずっとメモリ中に残るので、 調子に乗って長大な文字列をばんばんシンボル化すると えらいことになる。
435 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:21:10 ] というか、文字列の代わりにシンボルを使うことはない シンボルは、シンボルとしての用途を外れることはない ハッシュ引数のキーとか、 {:title=>"タイトル1", :author=>"著者1", :isbn=>"ISBN1"} というデータがどっさり入ってる配列とか to_s や to_sym を使う必要がないような場所、というのが目安なんじゃないかと思う
436 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 12:02:17 ] p :hoge
437 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 12:12:35 ] 個人的にはスクリプト内部で完結して、かつStringとしての性質が 不要な時に使ってる。 Cなんかで定数を列挙しておいて、コード上では名前だけど 実装的にはその数値で処理を行うような場面がSymbolの用途まんまだと思う。
438 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 12:13:26 ] 個人的な判断の仕方ね。 同じような使い方をしてる人は多いっていうかそれ以外はまず見ない。
439 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 12:19:47 ] なぜシンボルなのかを聞かれてメモリー上の効率が云々言ってたらプギャーしていい
440 名前:420 [2009/03/19(木) 14:07:41 ] 皆様ありがとうございました。 とても勉強になりました。
441 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 15:32:04 ] >>429 Symbolがそもそも数値なのだが
442 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 15:53:05 ] ユーザーがシンボルと文字列、どちらを渡してもいいように 内部では to_sym が俺のジャスティス
443 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 16:37:24 ] >>441 Symbol が数値なのはわかりますが :fuga という Symbol があったとして それに 5 を割り当てることは出来ますか? という意味ですよ >>437 任意の数値を割り当てられる訳ではないから >コード上では名前だけど実装的にはその数値で処理を行うような場面 ではあるけど列挙型やマクロと完全に同一視は出来ない また違ったものでしょう
444 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 16:40:29 ] >>443 シンボルはただのオブジェクトだぞ それは "str" が 5 になりますか、という質問と同じだ
445 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 16:47:59 ] 10 / 3 10.div 3 の結果に絶望した
446 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 16:52:17 ] >>445 Integer のメソッドの返り値が Integer であることに何の不整合があろうか、いや、ない 直感的でないことには異論を待たないが
447 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 16:55:09 ] self と引数の両方を自動で Float にして計算するメソッドとかがあってもいいのにな〜とは思わなくもなくもない
448 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 16:56:00 ] >>444 10 に 5 を割り当てられますか? の方がニュアンス的には近いとオモ >>443 > 列挙型やマクロと完全に同一視は出来ない まあ、割り当てた値を使ってビット演算したりする場合はそうだろうけど、 単に他の値と区別できたらいいという局面ではシンボルがラクだろうな
449 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 16:56:18 ] >>443 だからスクリプト内部で完結する場合って言ってるじゃんw
450 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 16:59:46 ] >>445 その結果がIntegerじゃなかったら破綻するプログラムもいっぱいあるだろう >>447 fdiv とか fmod とか?
451 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 17:31:42 ] >>443 のわかってないっぷりにワロタw
452 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 17:48:17 ] 何が割り当てられるか分からないのに 何かを割り当ててどうこうしようという発想が馬鹿ぽい
453 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 18:03:17 ] OOP自体、メモリの使用効率考えたら負け。
454 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 18:06:34 ] んなこたない
455 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 18:58:53 ] メモリの使用効率なんかどうでもいい ↓ スラッシング多発 ↓ クソプログラム
456 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 19:33:14 ] ×OOP自体、メモリの使用効率考えたら負け。 ○Rubyでメモリ効率や実行効率を考えると空しくなる
457 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 19:33:31 ] 正規表現を外の設定ファイルに出す、うまいソリューション(笑)はありませんか? 今はyamlで、 hage_check_pattern: /hogemage/i と書いて、 yaml = YAML.load("my_settings.yml") hage_check_pattern = eval(yaml["hage_check_pattern"]) としているのですが、evalるのがちょっと不安です。 外のファイルは外からいじられない前提なので問題ないっちゃーないんですが、もう少し安心な方法がないかと思いまして。
458 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 19:35:02 ] そうは言ってもシンボルはGCされないので, リテラル以外でシンボル作るのは怖いなあ
459 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 19:36:44 ] >>457 そもそも外部入力は一律で信用できない 外部ファイルを読み込むと決めた時点で、不安とか言っちゃ駄目
460 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 19:38:13 ] >>457 ためしに 正規表現リテラルをto_yamlしてみるといいよ。
461 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 19:39:02 ] お掃除必須なほどシンボル使うってどんなプログラムだよ
462 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 19:48:05 ] >>457 to_yamlはやってもらうとして、別解としてはMarshal(PStore)とか
463 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 19:48:56 ] >>457 Regexp.new(yaml["hage_check_pattern"]) かな 正規表現に限定できるだけ、evalよりは安全
464 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 19:49:49 ] >>462 エディタで編集できないと駄目なんだと思う というか、そうでなければ正規表現を書き出す理由がない
465 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 19:57:25 ] >>464 すまん、設定ファイルかw >外のファイルは外からいじられない前提なので 「スクリプトの外」・・・自分もいじらないんだと解釈してた
466 名前:デフォルトの名無しさん [2009/03/19(木) 21:29:01 ] Python の re.compile() に相当するメソッドはありますか?
467 名前:466 [2009/03/19(木) 21:31:26 ] 自己解決しました。
468 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:15:26 ] Rubyでothelloをつくりたいのですが 何から始めればよいでしょう
469 名前:デフォルトの名無しさん [2009/03/21(土) 00:18:07 ] >>468 まず僕とバトルしませんか?
470 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:24:27 ] >>468 コンピュータとの対戦なのか、対人戦なのか。 コンピュータ戦ならアルゴリズムの本。 対人戦ならネットワークの本。 言語は問わない。 画面をどう作るかみたいな話は後でいい。
471 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:57:00 ] 人対人のネットワーク戦にしたらいい 思考する部分は作らなくて良い
472 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:59:03 ] >>468 作りたいものがオセロってはっきり決まってるんだから、画面から入るってのも一つの方法だとは思う。 例えば、 1.盤面の状態保持 2.出力 3.入力と、それによる盤面操作。 の順番で、「形だけ」つくってイメージをするとか。 ここまではそれがオセロでも将棋でも対して変わらないけどな。 また、vs人間でもvsコンピュータでも変わらない。 んでゲームフローとしての入力手番のループとか、ルールに従った入力チェックや盤面操作処理、勝利条件の判定などを後付け。 最後に入力方法や出力や、やりたければコンピュータの思考ルーチンに凝りまくって完成、でいいのでは。 とりあえず、できる所からステップを踏んでやっていくのがいいかと。 各ステップごとにいろんな手法があるだろうし、それを調べ考えるのが楽しいんじゃないかと思う。 そこまで行って初めて、Rubyに関する質問も出てくるだろうしなw
473 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 01:08:40 ] ttp://www.panda21.com/game/panda_othello.html 画面はここのママパンダみたいなかわいいのにしたいです
474 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 01:18:03 ] 本人なのか本気なのかもよくわからんが、とりあえずゲーム部分は最初は文字で作れ ●と○と でなんとかなる
475 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 01:18:56 ] >>473 アプレットでGUIかよw どこまでがネタなのかわからんw とりあえず、 A B C D E F G H 1++++++++ 2++++++++ 3++++++++ 4+++○●+++ 5+++●○+++ 6++++++++ 7++++++++ 8++++++++ → Black ? : C4_ こんなのから始めれwww
476 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 01:21:58 ] +の交点に石を置くイメージはなんか違和感がありますね
477 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 01:23:02 ] >>476 お前プログラミング向いてない
478 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 01:23:14 ] 喧嘩売られてるよママン;o;
479 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 01:28:11 ] >>476 必要は発明のマザー、という格言があってだな
480 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 01:30:16 ] >>477 うん、多分駄目だろうね…
481 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 01:37:47 ] おまえらかかってこいや〜! A B C D E F G H 1++++++++ 2++++++++ 3++++++++ 4+++○●+++ 5+++●●+++ 6++++●+++ 7++++++++ 8++++++++
482 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 01:37:56 ] RubyはGUIと処理速度がネックだからオセロは向かないな。 というのはさておき、あっちのスレでも言われてるように475的にまずはテキスト使った簡単な表示で オセロを作ってからグラフィック使ったものに作りかえるという手順でやればいい。 具体的なサンプルコードを含めて手取り足取りというのを期待しているなら参考文献はないに等しい。
483 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 02:19:22 ] まともなGUIライブラリも作れないとか、そう言うことだから・・・ いや、何も言うまい。書き込みだけして寝よう。
484 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 02:21:02 ] 僕が100万円で作ってあげよう
485 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 02:52:32 ] >>473 まず表示させる画像を用意する 次に画像を表示させるクラスを用意する その後は>>472 の方法で
486 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 03:08:30 ] どうせなら A B C D E F G H 1□□□□□□□□ 2□□□□□□□□ 3□□□□□□□□ 4□□□○●□□□ 5□□□●○□□□ 6□□□□●○□□ 7□□□□□□□□ 8□□□□□□□□ だろう。 センス無いとゲームは厳しいぞ。
487 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 03:15:14 ] [F-6]取られたので投了します
488 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 03:33:17 ] Ruby/SDLで始めるゲームプログラミング【前編】 jp.rubyist.net/magazine/?0018-GameProgramingForRubySDL
489 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 03:51:05 ] >>488 SDLとRails、SQLiteあたり詰め込んで(あと何が欲しい?) 解凍するだけで使えるようにzipでまとめて本家トップにに置くべきだな 簡単講座でも作れば、HSPなんて目じゃな・・・ああGUIライブラリが無いからダメかw
490 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 07:22:44 ] オセロにSQLite使うとしたら定石マップとか棋譜の記録とかかな Railsのインターフェースで対話的にブラウザでGUIってことか
491 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 09:29:16 ] >>489 RailsはRubyではないので、Rubyオフィシャルとしてプッシュすべきではない あれはRubyで作ったもうひとつの別なプログラミング環境
492 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 10:40:39 ] >>473 ママパンダの石は花びらマークが付くんだ 文字で表現するなら星マークにするとか 4+++☆●+++ 5+++●☆+++
493 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 11:49:30 ] >>486 □は○や●と色や形が似てるせいかおれには見づらいのだが
494 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 12:24:11 ] >>493 同意 やるならこんな感じ? --A-B-C-D-E-F-G-H -+-+-+-+-+-+-+-+-+ 1|O|X|O|X|O|X|O|O| -+-+-+-+-+-+-+-+-+ 2|X|O|X|O|O|X|O|O| -+-+-+-+-+-+-+-+-+ 3|X|O|X|O|X|X|O|X| -+-+-+-+-+-+-+-+-+ 4|O|O|O|O|X|X|O|O| -+-+-+-+-+-+-+-+-+ 5|X|O|X|X|X|O|X|X| -+-+-+-+-+-+-+-+-+ 6|O|O|X|X|O|O|X|X| -+-+-+-+-+-+-+-+-+ 7|X|O|X|O|X|X|X|X| -+-+-+-+-+-+-+-+-+ 8|X|O|O|X|O|O|X|O| -+-+-+-+-+-+-+-+-+
495 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 12:34:57 ] A B C D E F G H 1□□□□□□□□ 2□□□□□□□□ 3□□□□□□□□ 4□□□○●□□□ 5□□□●●●□□ 6□□□□●○□□ 7□□□□□□□□ 8□□□□□□□□
496 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 12:36:45 ] さりげなく続けんなw オセロ板行け
497 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 12:48:16 ] A B C D E F G H 1□□□□□□□□ 2□□□□□□□□ 3□□□□□□□□ 4□□□○●□□□ 5□□□●●●□□ 6□□□□●●□□ 7□□□□□□●□ 8□□□□□□□□
498 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 12:54:38 ] A B C D E F G H 1□□□□□□□□ 2□□□□□□□□ 3□□□□□□□□ 4□□□○●□□□ 5□□□●○●□□ 6□□□□●○□□ 7□□□□□□○□ 8□□□□□□□○
499 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 13:02:03 ] 実際に文字でゲーム盤表示作ったことがあるとわかるんだが、□の汎用性の無さはガチ
500 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 13:05:20 ] >>497-498 なんだこの接待オセロ
501 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 13:15:11 ] A B C D E F G H 1□□□□□□□□ 2□□□□□□□□ 3□□○□□□□□ 4□□□○●□□□ 5□□□●○●□□ 6□□□□●○□□ 7□□□□□□○□ 8□□□□□□□○
502 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 13:16:09 ] なんだ春休み始まったのか その割には宿題スレ賑わってなかったな
503 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 13:26:39 ] 強すぎてむかつく ttp://online.bestfreegame.com/playgame-1683.php
504 名前:デフォルトの名無しさん [2009/03/21(土) 19:17:23 ] スマン質問させてくれ。 rubyではじめるゲームプログラミングって本を買ったんだけど、この本についてる mygameってソフトはWindowsじゃインストールできない?
505 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 19:39:12 ] スマン、出来た。VistaだとデフォルトでUACが有効になってるから、ファイルをコピーできないらしい。 もしVistaで同じような人いたらこのサイトにUACを解除するやり方載ってるから見るといいよ。 dgames.jp/dan/?category=MyGame
506 名前:デフォルトの名無しさん [2009/03/21(土) 19:40:25 ] Vis太
507 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 19:48:08 ] sudoみたいにさくっと出来るといいのになあ てかC直下なら大丈夫っておいおい
508 名前:デフォルトの名無しさん [2009/03/21(土) 19:54:43 ] >>507 以前から気になってはいたのだが、C:\直下の書き込み権限が みんなに与えられているのは何故なんだろう??
509 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 20:02:36 ] システムファイル/フォルダが保護されてるって話でしょ。 C直下はいくつかのシステムファイルがあるとはいえ 決め打ち可能な限られたものしか存在しないし そのファイルの書き込み権限が絞られていれば十分かと。
510 名前:デフォルトの名無しさん [2009/03/21(土) 20:04:49 ] >>509 じゃあ\直下にゴミファイル大量生産してきますね^^
511 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 20:07:20 ] 昔、サービスパックは当てないのが常識 とか 今、UACは切るのが常識 とか わざとユーザーの思考を安全でない側に導くためにやってるんじゃないかと疑いたくなってくる。
512 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 20:09:04 ] >>510 それがC直下を特別視する理由にはならなくね? C直下だからとシステムが壊れるわけでもパフォーマンス落ちるわけでもないし 人的にはむしろドキュメントフォルダにやられるほうが痛い。
513 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 20:09:38 ] 消えろよ屑ども
514 名前:デフォルトの名無しさん [2009/03/21(土) 20:16:56 ] >>511 Windowsはもともとシングルユーザ設計だったので、権限の管理が上手ではない。 おかげでウイルスの格好の標的とされてしまった。 管理者権限と一般ユーザ権限が用意されたが、管理者権限常用(管理者としてグラフィカルログイン)するヤツがいるのでUACを導入。 管理者権限も通常は一般ユーザ権限で動作するらしい。 しかしシステムにとって重要な操作はUACで一時的に権限昇格、と。 しかし一部のインストーラがUACに対応していなくて、UACを無効にしないと 何もできない状態らしいよ?
515 名前:デフォルトの名無しさん [2009/03/21(土) 20:22:54 ] Rubyでゲームでも作ってみようかと思ったのですが、ゲーム用ライブラリはあるのですか? PygameのRuby版を探しているのですが・・・
516 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 20:26:15 ] SDLでも使うんじゃないの?
517 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 20:28:48 ] Pygameと言われても困るわけだが。 SDLならRubyバインディングあるけど。 検索してみたけどPygameもSDL使ったライブラリなのか。
518 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 20:36:20 ] >>515 Star Ruby
519 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 21:02:52 ] >>515 基幹部分としては、Ruby/SDL、StarRuby、RubyGameあたりが有名 Ruby/SDLを下地にしたミドルウェアとして、Miyako、MyGameなんてのもある 選択肢は多いので、それぞれのライブラリをよく調べて選ぶとよい あとRubyでゲーム作るのなら、このスレも参考になるよ pc11.2ch.net/test/read.cgi/gamedev/1207069887/
520 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 21:08:44 ] >>515 ゲームを作りたいのなら、他の言語を選ぶべき Rubyを身に付けたくて、それの題材としてゲームを作りたいというのならそれは間違いで、 書くコードの半分くらいはGUIに関するRubyと無関係なコードだ Rubyをすでに知っていて、それでなおRubyでゲームを作りたいのいうのなら、ようこそ
521 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 21:44:23 ] はじめまして
522 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 21:57:35 ] はじめまして
523 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 22:00:20 ] はじめまして
524 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 22:17:46 ] hp.vector.co.jp/authors/VA015468/platina/app/
525 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 22:33:19 ] > 書くコードの半分くらいはGUIに関するRubyと無関係なコードだ Webアプリでもフレームワークを使ったりすると、 結構な時間をフレームワークの規則を理解するという、 直接Ruby自体とは無関係なことに費やすのだが。 HTTPだのDBだのも勉強しないとろくなもの作れんしね。
526 名前:デフォルトの名無しさん [2009/03/21(土) 22:41:09 ] >HTTPだのDBだのも勉強しないとろくなもの作れんしね。 それくらいは勉強しないとダメでしょ。
527 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 22:44:52 ] じゃあWebアプリも題材としては間違いってことだな。 >>520 の理屈で言うと。
528 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 22:49:54 ] >>517 ぱっと見ただけだが、規模がだいぶ違うようね >>520 これがRubyistの正しい回答だね おまけ:Ruby ゲーム開発のハブサイト ruby-game-dev.org/ HSPにすら遠く及ばないけど、Rubyも少しは頑張ってる
529 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:00:34 ] Rubyを学びたくて題材を選ぶなら何がいいんだ?
530 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:04:43 ] >>529 HTMLを知っててCGIに関する素朴な基礎知識があるという前提で、 自分用の簡単なCGIまたはWebからの取得&加工スクリプト(gemライブラリ使用不可) HTMLの知識がないという場合はまずHTMLを勉強してもらうのがいろんな意味で早道 データを加工するスクリプトを作るのが理解に役立つんだが、データがないことには
531 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:07:13 ] >>529 付属のライブラリを見て何も思いつかないのなら、Rubyのことはひとまず忘れて別なことしろ 今の君にはRubyは必要ないようだ
532 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:08:55 ] >>529 ファイル処理(Rake含む)とかかな でも正直、最初の題材なんてWebアプリでもゲームでもWin32APIでも何でもいいと思う いま一番作りたいものor必要としているものから取り組むべき 「OS作りたい」とか、そういったレベルになってくるとさすがに厳しいが
533 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:09:52 ] >>531 に一票
534 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:19:08 ] >>530 >>532 なるほど。なんにせよ、自分にとっておもしろくなきゃ、なかなか続かないよな。 続いても実にならないように思う。 そういうところまで考えて勧めるべきではないだろうか。 どんなものでも突っ込んでやれば、 Rubyについてもそれなりに調べなきゃいけないだろうから。 やる気がないと突っ込んでやろうとか思わん。 >>531 いや、じゃあ何がいいんだろうと思っただけでおれは割と楽しんでる
535 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:22:10 ] Rubyの初学者向け立ち位置はいまだに微妙だ それでもいいのかもしれないと、最近では思ってる 家にあるプログラミング言語がRuby
536 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:47:54 ] iseg = ARGF.read iseg = iseg. gsub(']', 'end;'). gsub('[', 'while dseg[dx] != 0;'). gsub('+', 'dseg[dx] += 1;'). gsub('-', 'dseg[dx] -= 1;'). gsub('.', 'print dseg[dx].chr;'). gsub(',', 'dseg[dx] = $stdin.getc;'). gsub('>', 'dx += 1;'). gsub('<', 'dx -= 1;') eval(<<INIT + iseg) dseg = Array.new(32768, 0) pc = 0 dx = 0 INIT puts ''
537 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 01:22:40 ] 結局UNIX哲学的自動化処理に使うのが一番向いてるんだよな。 それ以外はよけいなものが一緒に来すぎる。
538 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 01:41:52 ] こういう話になると必ずワケワカラン結論にするやつがいるよな 同じやつなのか?それともRuby使ってるやつってこんなのばっか?
539 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 01:54:56 ] 例えば教育目的では使えるんでないかなあ 確か昨年のRuby会議で、Rubyを教育に使ってみましたって事例が報告されていたと思う 記述の抽象度が高くて、「おまじない」がほとんど必要ないので、 アルゴリズムの学習とかには向いていたとか。対話環境もあるし
540 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 02:06:42 ] 自分が欲しいものをつくるのが一番勉強になるんだけど、 それをつくるには、Ruby以外の知識がたくさん必要になる
541 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 02:15:21 ] CやJavaで欲しいものを作ってみるよりは、周辺知識が少なくて済むと言ってみる
542 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 02:19:23 ] >>515 本屋いったらなんか本が出てた。 ぴったりなんじゃね? Amazon.co.jp: Rubyではじめるゲームプログラミング―人気の国産言語で、誰でも簡単にゲームが作れる! (I・O BOOKS): 山本 団: 本 www.amazon.co.jp/dp/4777512924 images-jp.amazon.com/images/P/4777512924.09.MZZZZZZZZZ.jpg
543 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 02:22:23 ] まぁ正直いって今からRuby始めるくらいならPythonのほうがいいだろうなぁ。 昔のRubyブームに乗っかっちゃって、もう今さら違う言語覚える気力無ぇよ という人のための言語になりつつある今のRubyは。
544 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 02:26:28 ] お前方々で頑張り過ぎだ
545 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 02:27:46 ] そんなことばっか書いてるなら、 意義のあるプログラムの一つでも作れよ
546 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 02:28:53 ] >>460 > /hoge/i.to_yaml => "--- !ruby/regexp /hoge/i\n" とか出てきました。 !ruby/regexp とかものすごい実装依存な気がするwww まあいっかw >>463 なのですが、 > Regexp.new(YAML.load("!ruby/regexp /hoge/i")) => /hoge/i だとOKなのですが、 > Regexp.new("/hoge/i") => /\/hoge\/i/ だと駄目っぽいです。 上で「まあいっかw」っていいましたけど、 正規表現リテラルを表すStringから一発で正規表現へ変換ってできたらなあ・・・
547 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 02:44:27 ] !で型を指定する記法自体はYAMLの仕様に明記されていることだが、 Cプリプロセッサの#pragmaの解釈が処理系依存であるというのと 同様の意味で処理系依存ではある。
548 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 04:29:09 ] 今みたいにGUI前提の環境だと、rubyは取っ付きにくいねえ。 まあ松本教祖がGUI否定だから信者は従うしか無いけど。 若い学生が興味を持ってくれる言語にしないと、将来寂れていくと思う。rubyユーザ高齢化問題。
549 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 04:58:20 ] 俺はRubyでニコニコ動画プレイヤー作って使ってるよ
550 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 06:10:04 ] rs = "/hoge/i" re = Regexp.new(YAML.load("!ruby/regexp " + rs)) 何が不満?
551 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 06:26:08 ] GUIGUI言うけどrubyだってtkが標準添付してるだろ、tcl/tkが別途必要だけど OS非依存でGUIライブラリが完全に標準添付されてるスクリプト言語て何よ
552 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 06:36:19 ] >>548 GUI前提の環境で取っ付きやすい言語ってなんだ? まさか VisualBasic?www
553 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 06:37:53 ] いや、もしかして HSP か?w
554 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 07:09:10 ] すくなくとも Ruby ではないな
555 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 07:23:19 ] ではなんなんだ?
556 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 07:26:54 ] どうでもいいけど「教祖」って言葉を使うやつには注意した方がいいと思う なんか色々と臭ってくる
557 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 07:33:54 ] >>552 普通に、Delphiとか.NET系じゃないのか?
558 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 09:04:57 ] そろそろWxRubyを標準添付してもいいんじゃないかと思うんだ
559 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 09:27:17 ] それ賛成 でも多分もめると思う
560 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 10:24:46 ] >>550 それだ!回りくどいけどそれで行きますw サンクス
561 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 10:26:30 ] >>558-559 tcl/tk派から猛烈な反発が予想されます
562 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 10:40:15 ] じゃあQtで
563 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 10:57:22 ] 結局、数ある GUIツールキットの中からどれか一つを公式サポートってのは 難しいんじゃないの? なんつーか政治的に 個人的には、Ruby/Tk を置き換えるんなら wxRuby がいいと思ってる 多分一番環境依存度が低いと思うし
564 名前:563 mailto:sage [2009/03/22(日) 10:58:55 ] いや、やっぱあんま自信ないやw ごめんw
565 名前:デフォルトの名無しさん [2009/03/22(日) 13:00:40 ] >>556 松本教祖様を聞いて真っ先に長野の事件を思い出した。
566 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:08:08 ] コミット権を取り上げかけられる教祖?
567 名前:デフォルトの名無しさん [2009/03/22(日) 13:10:00 ] GTKを忘れないで・・・
568 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:11:45 ] Pythonのtkinterは標準添付だっけ? と14年前の知識レベルで尋ねてみる。
569 名前:563 mailto:sage [2009/03/22(日) 13:17:32 ] >>567 wxWidgets が GTK 自体をラップしているという事実
570 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:29:25 ] >>568 標準添付。Python入れたら間違いなく使えるってのはかなりデカイ
571 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:46:34 ] rubyのtkも標準添付だよね。
572 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 14:08:23 ] require 'tk' Tk.mainloop で大抵の環境ではウィンドウが開くはず
573 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 14:11:31 ] 動くけどさぁ…
574 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 14:22:33 ] IronRubyは?
575 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 14:48:35 ] GUIとかGAMEとか言ってる香具師は、HSPでもPythonでもやってろよ Rubyはそんなことをするためにあるんじゃない! まあ冗談はさておき、一回取り入れると、外せなくなるからなぁ そろそろSQLiteくらいは入れても・・・とは思うんだが。 PHPやHSPに喧嘩売ったときには、本気出すのかと期待したんだけどw
576 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 14:53:40 ] その前に gem を標準添付にしてもらいたい
577 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 15:06:32 ] >>576 つ 1.9系
578 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 15:12:19 ] RPGツクールってソフトがRuby採用してる それでどこまでできるのか、速度はでるかわからんが 簡単なシューティングゲームぐらいなら作れるようだ
579 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 15:15:21 ] >>578 なぜにRPGツクールでシューティングゲームを作る必要があるんだ?
580 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 15:18:42 ] >>579 それは難しい質問だなw どの程度できるのか軽くググったら シューティングやアクションも作られてるようだったからさ
581 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 15:20:40 ] 簡単なゲームが作りたいだけなら、Flashという選択肢もあるんだが誰も言及しないw Adobeのが有料だからか?
582 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 15:37:35 ] TortoiseHgで使われているあれいい感じなんだけど、PythonのなんていうGUIツールキット? Rubyでも相当するのあるのかな?
583 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 15:41:25 ] ちょいと質問、適当なスクリプトでrspec + rcov を動かそうとしたんだけど rexmlがなんか落ちる (rubyパス)/1.8/rexml/formatters/pretty.rb:131:in `[]': no implicit conversion from nil to integer (TypeError) from (rubyパス)/lib/ruby/1.8/rexml/formatters/pretty.rb:131:in `wrap' : 以下ずらずら 多分、以下と同じ状況なんだけど Rails, rcovが落ちるのを修正 ≪ RUNELEAF_LOG runeleaf.wordpress.com/2009/02/03/rails-rcov%E3%81%8C%E8%90%BD%E3%81%A1%E3%82%8B%E3%81%AE%E3%82%92%E4%BF%AE%E6%AD%A3/ rcov - 誰も褒めてくれないから自画自賛する日記(2008-10-25) www.nu-chon.org/d/?date=20081025 これって元のソース弄らずに対処する方法ってないもんですかね? もしくは、どこに文句(というかパッチを投げる?)いったもんでしょうか?
584 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 15:52:45 ] >>583 すまそ。もうパッチ出てた。もっと検索するべきだった Ruby 1.9 - Bug #516: REXML::Text#wrapは空白が含まれない場合を想定していない - Ruby Issue Tracking System redmine.ruby-lang.org/issues/show/516 Ruby 1.8.7 - リビジョン 21759 - Ruby Issue Tracking System redmine.ruby-lang.org/repositories/revision/5?rev=21759 Ruby 1.8.7 - / - Diff - Ruby Issue Tracking System redmine.ruby-lang.org/repositories/diff/ruby-187?rev=21759 # しかしredmine役に立ってるね
585 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 17:25:50 ] 変数展開で質問です a = "#{pattern}" としたときに、 a を変数展開して pattern = "want_to_replace_this" の場合と pattern = "want_to_replace_that" の場合でそれぞれwant_to_...に置き換えたいのですが print "#{a}"としても #{pattern} と表示されるだけです。 目的のことをするにはどういうコードを書けばいいのでしょう? 変数展開時に展開される変数を動的に取りたいのですが・・・
586 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 17:39:38 ] >>585 自分ならString#%を使う。 str = "want_to_replace_%s" puts str % "this" puts str % "that"
587 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 17:41:32 ] >>585 書いてあるとおりに実行すると、 a = "#{pattern}" の段階で展開されない?petternが未定義だとエラーだし。 変数の中身を動的に置き換えるのが素直だろうし、何のためにそれを やりたいのか書くといいかも
588 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 17:58:49 ] >>586-587 さっそくに回答ありがとうございます。 patternを100個くらい配列化しておいて ランダムに(順にでもいいのですが)1つを選びます。 選んだ時点で初めて置き換える内容を定めて その内容で置き換える、という動作にしたいのです。 586さんの例で言うと "this" "that"の部分はそのコードを書く時点では 未定なので、具体的には書けないのです。 >>587 すみません、 a = '#{pattern}' でした。
589 名前:デフォルトの名無しさん [2009/03/22(日) 18:02:21 ] >>588 シングルクオートじゃ展開されないんじゃ・・・?
590 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 18:03:35 ] >>588 > 586さんの例で言うと > "this" "that"の部分はそのコードを書く時点では > 未定なので、具体的には書けないのです。 それは展開する「データをどう持ってくるか」という話であって、 「どう展開するか」は>>586 でできるだろ。
591 名前:デフォルトの名無しさん [2009/03/22(日) 18:07:57 ] return が無いのって違和感ありませんか? Perlをやっているみたいです ><
592 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 18:11:24 ] >>591 Lispをやると違和感なくなるよ、これマジ
593 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 18:12:24 ] >>591 まぁ言語仕様で使えるんだから仕方ないんじゃないの。 自分はとりあえずreturn付ける事にしてるけど。
594 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 18:13:27 ] おれも最初は違和感あったけどすぐに慣れた。 別に書いちゃいけないわけじゃないし。 「わかりきってるものは書かなくてもいい」というのは割と居心地がいい。 それにRubyはなんでも戻り値を持つから、 強制されたら大変なことになってしまう。 if文の中にもreturn必須とかになるぞ。
595 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 18:20:29 ] >>588 data = ["this", "that"] template = "want_to_replace_%s" data.each {|v| puts template % v } もしこれでもわからないなら、具体的な入力データと得たい出力を明記して。
596 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 18:23:19 ] >>590 それが・・・置き換える部分は一箇所ではなくて かつ、その順序も選んでくる配列の要素により不定なので str1 = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' ] str2 = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' ] a = "want_to_replace_%s_%s" としたとして puts a % [ str1[rand(str1.size)], str2[rand(str2.size)] ] という結果を得たい場合もsれば puts a % [ str2[rand(str2.size)], str1[rand(str1.size)] ] という結果を得たい場合もあるのです。 case rand(N) when 0 puts "#{str1} #{str2}" when 1 puts "#{str2} #{str1}" .... when N puts "..." end みたいに網羅するしかないですか。
597 名前:デフォルトの名無しさん [2009/03/22(日) 18:26:49 ] module Test def test2 puts "test2" end def test1 puts "test1" test2 end module_function:test1 end Test::test1 のように書くと undefined local variable or method `test2' となります。test2 が undefined なのはどうしてですか? (defしてるやん)
598 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 18:28:59 ] >>596 [str1, str2, ... strN] な配列を適当にシャッフルしたら?
599 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 18:30:35 ] >>596 あんまり深く考えていないけど、複雑な処理で文字列を作成するのなら 文字列展開一発でやろうとせずに関数化するかなあ ERBみたいなテンプレートシステムを上手く使ったりできるかも知れない
600 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 18:31:01 ] >>597 self を調べてみれ
601 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 18:40:58 ] >>597 うむ、ほぼ100パーセント引っかかるな、これ とりあえず、Testというクラスは標準添付ライブラリに存在するので、例示でも使わないほうがよい FooとかHogeとかCとかが一般的 で、クラスメソッドはインスタンスメソッドを特別扱いしない Testクラスのインスタンスなんかどこにもないんだから、考えてみたら当たり前の話 クラスメソッドtest1の中で t = Test.new; t.test1 とかするか、そもそもインスタンスメソッドを使わない構造にする
602 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 18:42:46 ] t = Test.new t.test2 だった 内容にもよるけど、 俺なら、test2 もクラスメソッドにして、 クラス内で test2 を呼んでるとこを全部クラスメソッドに書き直す
603 名前:デフォルトの名無しさん [2009/03/22(日) 18:43:58 ] >>600 なるほど! selfどこに付けるんだろうと私の感覚だとtest1から呼ぶときに self.test2で呼ぶのかとおもいましたが def self.test2 と定義するのですね んでもこれ inckude すると Test::test2 で呼べちゃう 明示的にprivateにできないのですか?
604 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 18:45:30 ] >>596 data1 = [1,2,3,4,5] data2 = ["a","b","c","d","e"] template = "%s and %s" def pickup(ary) ary[rand(ary.length)] end 10.times do a = [pickup(data1), pickup(data2)].sort_by { rand } puts template % a end 順序が変わる時はテンプレートも変わるなんていう後出しはやめてくれよ?
605 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 18:51:58 ] >>604 後出しも何も、もともとその可能性のある質問のような気もするが・・・ 質問者を萎縮させてどうするw >>585 で最終的に展開したい変数名が「pattern」なのが気になってエスパーしきれない俺。
606 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 19:42:50 ] >>603 def self.test2 puts "test2" end private_class_method :test2 かな
607 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 19:48:08 ] >>603 > んでもこれ inckude すると Test::test2 で呼べちゃう include して呼べるようになるのはインスタンスメソッドの方 クラスメソッドと module_function したインスタンスメソッドは include しなくても require した段階で呼べるようになってるよ 後、module_function はインスタンスメソッドを「複製」して同じ内容のクラスメソッドを 生成してるので、インスタンスメソッドの方も定義は残ってるから注意
608 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 20:19:13 ] rubyってフラッシュプレーヤも作れるのか。javaは越えたな。
609 名前:596 mailto:sage [2009/03/22(日) 20:20:04 ] 何度もすみません。 >>604 その例で言うと、下から3行目の > a = [pickup(data1), pickup(data2)].sort_by { rand } この部分で、 pickup(data1), pickup(data2), ... の個数&順番が可変なのです。 pickup(data1), pickup(data2) かもしれないし pickup(data2), pickup(data1) かもしれなくて pickup(data2), pickup(data1) pickup(data4), pickup(data3) かもしれないし pickup(data3), pickup(data1) pickup(data1), pickup(data4) なのかもしれない。 その組み合わせはあらかじめ(たとえば100パターンくらい)決まっているのですが、 変数部分に埋め込むデータは実行時に決まるのでどう処理したらいいのか・・・。
610 名前:デフォルトの名無しさん [2009/03/22(日) 20:23:39 ] >>608 ダウンロードだけして外部のプレイヤーに投げているんじゃないの?
611 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 20:48:04 ] >>585 を見ると単に eval をしたいんじゃないの? a = '#{pattern}' pattern = "want to replace this" eval "a=\"#{a}\"" print "#{a}"
612 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 20:53:21 ] ファイル名、サイズ、タイムスタンプといった複合データをちょっと格納するとき 安易に f[0] = fname f[1] = fsize f[2] = ftime とかやって可読性を落としちゃうんだけど いちいちクラス定義することなく f.name f.size f.time みたいなプロパティでっちあげる方法ってないんですかね。JSのハッシュのキーみたいな感じで。
613 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 20:54:43 ] >>609 おそらく、もっと具体的に何をしたいのかを書いた方が良い (テクニックに関する話ではなく、「コードで実現したいことは何なのか」を) 今の質問では抽象的すぎて回答者が答えにくいし、答えたとしても的外れになる恐れがある
614 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 20:55:22 ] >>609 >pickup(data1), pickup(data2) かもしれないし >pickup(data2), pickup(data1) かもしれなくて >pickup(data2), pickup(data1) pickup(data4), pickup(data3) かもしれないし >pickup(data3), pickup(data1) pickup(data1), pickup(data4) なのかもしれない。 data1 = [1,2,3,4,5] data2 = ["a","b","c","d","e"] data3 = [11,22,33,44,55] data4 = ["aa","bb","cc","dd","ee"] pattern = [ ["%s %s", data1, data2], ["%s %s", data2, data1], ["%s %s %s %s", data2, data1, data4, data3], ["%s %s %s %s", data3, data1, data1, data4] ] 10.times do pat = pickup(pattern).dup temp = pat.shift list = pat.map {|a| pickup(a) } puts temp % list end
615 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 20:55:31 ] >>612 Structオススメ
616 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 21:01:56 ] >>612 そんなあなたに Struct FileStat = Struct.new(:name, :size, time) FileStat.new(fname, fstat, ftime)
617 名前:616 mailto:sage [2009/03/22(日) 21:04:12 ] ミスったorz new の引数はみんなシンボルね Struct.new で prototype みたいなものができるぞな
618 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 21:05:00 ] JSみたいにと言われて、奥義method_missingを使いそうになったw
619 名前:612 mailto:sage [2009/03/22(日) 21:35:30 ] サンクス。だいぶ簡潔になったよ。 FileStat = Struct.new(:name, :size, :time) s = Time.now for i in 1..100000 do f = FileStat.new(1, 2, 3) end puts Time.now - s s = Time.now for i in 1..100000 do f = Struct.new(:name, :size, :time).new(1, 2, 3) end puts Time.now - s 0.282 15.672 さすがに後者は無茶すぎたか…
620 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 21:35:40 ] >>612 クラス作る場合でもそれほど面倒じゃないと思うよ。 class FileStat attr_accessor :name, :size, :time end f = FileStat.new f.name = fname f.size = fsize f.time = ftime
621 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 21:37:12 ] >>612 require 'ostruct' f = OpenStruct.new f.name = fname f.size = fsize f.time = ftime
622 名前:618 mailto:sage [2009/03/22(日) 21:46:47 ] >>619 後者はインスタンスだけじゃなくてクラスまで作りまくってるからなぁ >>621 doc.loveruby.net/refm/api/view/class/OpenStruct >Object#method_missingで捕捉され、インスタンスに属性 x が定義されます。 (゚Д゚) まあ代入するものが定まってるならStrictでいいよね。 個人的には、他のクラスとの見た目のバランスが悪いからと つい>>620 みたいにやっちゃう。 OpenStrictはプロトタイピングのときに便利そう。
623 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 22:14:35 ] >>505 あ、Private Pocketsの人だ
624 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 05:22:36 ] | | J Strict OpenStrict
625 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 09:44:56 ] >>624 ぼけてるなぁw指摘thx
626 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 13:23:59 ] >>604 1.8.7や1.9.1だとArray#sampleというのがあるよ
627 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 15:55:15 ] >>625 use strict; しとけば書き込む前に警告が出たかもなw
628 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 10:29:56 ] 今更だけど、>>585 ,588,596,609 を読んでみた。何度読み返しても意味不明だったけど、頑張ってエスパーしてみる。 >>585 これって、通常は #{var} が使われるまえには var は決まっている、つまり name = "world" str = "Hello #{name}" とするのが普通だけど、585がやりたいのはさきに str = 'Hello #{name}' というのが決まってて、あとから name = "world" を与えたいということだとエスパーした。 もしそうだとしたら、eRuby を使うのが自然なように思う。 str = "Hello <%= name %>" name= "world" require "erb" print ERB.new(str).result(binding()) あるいは #{name} を hash["name"] の値で置き換えるだけでいいなら、こんなのでいいかも。 str = "Hello #{name}" hash = {"name"=>"world"} print str.gsub(/¥#¥{(¥w+)¥}/) { hash[$1] }
629 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 10:43:25 ] そもそも本当にそんなことをする必要があるのだろうか? という方向で考えてみた方がいいような気がするな >>585 発想の転換が必要なところじゃないか
630 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 14:42:52 ] Cというクラスを作った後に c = C.new とすると C.new でオブジェクトが生成されて そのオブジェクトを参照するためのアドレスの様な物が戻り値で c に渡される ここまであってるでしょうか? その後 c = nil などとした場合でも C.new で生成されたオブジェクトはメモリに残るのでしょうか? そうだとしたら開放した方がいいのでしょうか?
631 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 14:46:27 ] >ここまであってるでしょうか? あってる >その後 c = nil などとした場合でも C.new で生成されたオブジェクトはメモリに残るのでしょうか? >そうだとしたら開放した方がいいのでしょうか? nil突っ込むと参照切られてガーベッジコレクションの対象になってそのうち破棄される。 ほっておいていいよ。
632 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 14:51:25 ] 素早い回答ありがとうございました
633 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 14:52:57 ] 便乗だけど、Rubyでメモリリークの起こりうる書き方ってありますか? 言語の不具合によらず。
634 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 15:03:14 ] class Hoge def initialize @h = Hoge.new p "hoge" end end p Hoge.new
635 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 15:03:31 ] >>633 知らんけど循環参照は?
636 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 15:13:20 ] 微妙にリークとガベコレされないのとはニュアンスが違うような同じような
637 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 15:13:36 ] >>635 まだマーク&スイープだよね? 参照されてるかではなくルートから辿れるかだから循環参照は回収される。
638 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 15:13:44 ] >>634 ,635 回答ありがとうございます。 それだと無限ループで例外発生? でも循環参照は危ないって事でいいんでしょうか。
639 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 15:15:01 ] >>635 MRIのGCはリファレンスカウントじゃなくてマーク&スイープだから、その心配は無い 有効期間が長い、例えばクラス変数とかグローバル変数に オブジェクトを突っ込んだまま忘れた、とかだと、事実上のメモリリークになる恐れがある
640 名前:デフォルトの名無しさん [2009/03/24(火) 15:16:11 ] Railsで運用中にメモリばんばん喰って落ちることがある (リークがあるのかどうか知らないけど) OS全体の挙動は全然問題なくて他のプロセスも平気で動いてる Railsだけ再起動するとちゃんと元に戻る これってメモリリーク?
641 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 15:21:32 ] >>634 はメモリリークではなくてスタックオーバーフローが起こると思う。 不具合は発生するだろうけど、メモリリークではない。 >>635 GCのアルゴリズムによる Rubyではマーク&スイープを使ってるから循環参照が問題になることはない >633 Rubyの文法上ではメモリリークするような書き方はできないと思う。 メモリリークするような拡張ライブラリはあるかもしれない 資源の解放忘れをするクラスを用意すれば、メモリリークは起きると思う
642 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 15:26:46 ] >>640 うんこ
643 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 15:28:42 ] >640 Railaのアプリのメモリ使用量をログに書き出すようにしないとわからない DBのメモリ使用量が一時的に多くなったのかもしれないし とりあえず、WEBサーバ、SQLサーバ、その他gemで導入したライブラリのプロセス、 のメモリ使用量を一定時間ごとに調べなされ
644 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 15:32:21 ] 侍ジャパン優勝で日本中が沸いてるのに Rubyとか言ってる奴なんなの?ほんとに愛国者なの?
645 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 15:44:05 ] 【我 が 道 を 行 く】 サ ム ラ イ 言 語 R u b y 【妥 協 し ま せ ん】
646 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 15:51:29 ] >>641 サンクス >>644 熱狂している時にも冷静な奴が居ないとダメだろうってマジレスしておく
647 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 16:03:42 ] WBC見終わった俺がきましたよ callccやThreadで保存されたスタックから参照されてるオブジェクトがなかな か解放されない、という話はあるな。
648 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 16:21:20 ] >>633 >便乗だけど、Rubyでメモリリークの起こりうる書き方ってありますか? >言語の不具合によらず。 Rubyは保守的GCなので、運悪くポインタっぽい値がどっかにあるとメモリが回収されない。
649 名前:633 mailto:sage [2009/03/24(火) 16:52:19 ] 皆さんご回答ありがとうございました。 >>648 だけが少しわからないので気になりますが、とりあえず大丈夫そうなので安心?しました。
650 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 17:54:01 ] マーク&スイープ方式ってのは、ヒープ上にあるデータのうち、グローバル なデータ領域やスタックなど確実に使用中と分かるデータとして置かれてい るポインタを基点として、連鎖的にたどれるものに、到達可能の印を付けて (マーク)、次にヒープ上のデータで印がないものを未使用とみなして掃除(ス イープ)する。 基点にした領域にはただの数値データも置いてあったりするわけだが、そい つは意味のあるアドレスを指したポインタ値に見えてしまう(実際にはポイン タではないのに)こともある。本当のポインタと区別が付かないので、安全措 置(へたにデータを消してしまうのを回避)として、これらをポインタとみなす GCのを「保守的GC」という。 本来ポインタでないものが保守的にポインタとみなされ、それからたどれて しまったデータは、到達可能マークが付いてしまう。よってスイープ対象外 になる(=完全なGCにならない)。
651 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 18:30:36 ] >>648 >Rubyは保守的GCなので、運悪くポインタっぽい値がどっかにあるとメモリが回収されない。 もしかしてテキストデータを扱うスクリプトよりも バイナリデータを扱うスクリプトの方が そういう「勘違い」でリーク起き易いってことですか?
652 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 18:33:02 ] >>650 勉強のために質問 Ruby の実装では Fixnum とか Symbol みたいな即値はアドレスと区別できるように ビットシフトして4の倍数にならないようにしてるよね確か とすると、アドレスと区別できない数値データというのは具体的に何なの?
653 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 18:33:46 ] >>651 C言語とコンパイラの基本動作の知識はある?
654 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 18:39:31 ] >>652 >とすると、アドレスと区別できない数値データというのは具体的に何なの? なんだろうね。拡張ライブラリとかだと存在するのかな?
655 名前:652 mailto:sage [2009/03/24(火) 18:41:31 ] > ビットシフトして ビットシフト&適当なビット演算 ね
656 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 18:47:59 ] Rubyのインタプリタは生のスタックを処理系のスタックのひとつとしても使っていて、 それがGCのrootになるからじゃないかな?
657 名前:652 mailto:sage [2009/03/24(火) 19:09:13 ] >>656 C の自動変数がたまたま有効なアドレス値になったらってことか よくそんな仕組みで Segmentaton fault が起きないなあ >>653 > C言語とコンパイラの基本動作の知識はある? まあそれなりに yacc 使って俺様言語のインタプリタを作ろうとした、ことならあるぞw
658 名前:デフォルトの名無しさん [2009/03/24(火) 19:37:39 ] ゲームでRPGのMAP作る時って、RPGツクールみたいなマップチップ使うのか、一枚絵で通れる場所通れない場所を決めていくのどっち が普通?
659 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 19:43:21 ] ごめんちょっとスレ違いだったかも知れんな。
660 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 19:55:56 ] >>658 どっちも普通。都合のいい方で。 どっちのほうが多いかは知らないし完全にスレ違いだと思う。
661 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 20:41:25 ] >>657 積極的に捨てる方ならSegmentaton fault出そうだけど 残すんだから出ないってことでは?
662 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 20:57:28 ] >>661 いや、そこを起点に到達可能なものにマークを付けていくんなら そのアドレスを dereference しないといけないはずだから、もしそこが領域外を指してたら 落ちるやんと思って でもさすがにそうはならないようにチェックはしてるんだろう まあ、ソース読め、という話だけど
663 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 21:01:02 ] Rubyのヒープが存在するアドレスの範囲は分かるのでそれと比較する
664 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 21:55:57 ] 参照先を間違ってオブジェクトとみなすとこまではいいとして 全然関係ないものに >到達可能の印を付けて (マーク) をやっちゃうとやばいんじゃないの?
665 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 22:02:12 ] えらく内部実装にこだわってる人がいるみたいだが、そこまでいくと ソースを読むのがいいのでは。すくなくともスレ違いだと思う。
666 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 22:06:40 ] 初心者が怖気づいたらカワイソスではある
667 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 22:58:21 ] >>662 領域外を指してるアドレスは、有効なアドレス値じゃないから問題ないだろ
668 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:14:38 ] まあSymbolは2度と使わないのも番号割り当てられることに 注意。たとえばこんなプログラムを動かせば確実に落ちる 100000000.times do |i| s=i.to_s.to_sym end 100000000っつーところを適当な数字に書き換えれば確実に落ちる。 やってること ひたすら無意味なシンボルを多数生成させる(数字文字列もシンボル化可能) うちの環境だと約200万個のシンボルを生成したところでRuntimeErrorが生成された。 その際の例外は以下の通り -:2:in `to_sym': symbol table overflow (symbol 2095695) (RuntimeError)
669 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:17:57 ] オブジェクトの参照の仕方と参照の取り消す方法がどうかが問題なんだな 全然関係ないものをオブジェクトが参照しているということは考えなくてもいいと思う これはGCのアルゴリズム云々の問題じゃなくて純粋にRubyのバグだからね。
670 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:43:09 ] なんでRubyのアイコンはショボイのか教えてくれ
671 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:59:42 ] アイコンなんかにこだわるのはマカぐらいだし。
672 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 00:00:09 ] cgi.rbがしょぼいのと同じ理由
673 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 01:52:18 ] Rubyインストールして真っ先にすることは .rb のアイコンを homepage1.nifty.com/a_nakata/ruby/RubyIcon.ico に挿げ替えること
674 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 02:06:46 ] cgi.rbは、もはやゴミ。
675 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 06:35:03 ] >>670 コマンドラインの世界には不要なものだから、でFAじゃないか
676 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 06:55:38 ] Ruby のアイコンが気になる人とそもそもそれを拝む機会のない人では Ruby の使用形態がかなり違うような気がするな 俺は Windows で Ruby っていうと Cygwin なので、そもそもアイコンなど 気にしたこともなかった アイコンが気になる、それを拝む機会があるってことは、Explorer から ダブルクリックしてスクリプト起動とか? そっちは未知の領域だなあ コマンドラインにない面白い使い方とかあるなら聞いてみたい
677 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 06:59:25 ] アホだなこいつはw
678 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 07:05:31 ] いかにもな信者コミュニティ的頑張り方
679 名前:676 mailto:sage [2009/03/25(水) 07:13:41 ] いや、純粋にアイコンが気になる使い方ってどんなものか気になっただけなんだけど お前ら曲解し過ぎじゃね……
680 名前:デフォルトの名無しさん [2009/03/25(水) 07:14:59 ] >それを拝む機会があるってことは、Explorer から >ダブルクリックしてスクリプト起動とか? そういう用途なら自前のアイコンで置き換えますね
681 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 07:15:51 ] >>676 あなたの指摘は的外れです
682 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 07:17:56 ] >>680 確かに いろんなスクリプトが全部同じアイコンだと意味ないし
683 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 07:20:04 ] 結論 Rubyの外婚出材がん気になる奴は低スキルの馬鹿 はい、論破完了
684 名前:676 mailto:sage [2009/03/25(水) 07:26:34 ] >>681 俺はなにも指摘などしていないのだが……
685 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 07:27:34 ] 見てるこっちまで恥ずかしくなってくるレスだな
686 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 07:30:25 ] 初心者ですからっ
687 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 08:37:51 ] >>683 読めねぇ。論破されようがない
688 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 08:51:08 ] >>683 そもそも誰と論争してるんだ?
689 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 08:55:27 ] 相手がいないと論争できないというRubyユーザーの底辺っぷりには反吐が出る
690 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 09:04:15 ] へぇ、どうかなあ
691 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 09:05:53 ] VITのRuby Logoを縮小して、実行ファイルのアイコンにするといい感じになるよ ttp://rubyidentity.org/ あと「ruby icon」や「ruby logo」で検索して、英語サイトを探すと 色々オシャレな画像が出てくるのでその辺を探してみるのもいいかも >>676 一番気になるのはexerbで固めたときの実行ファイルかな 一般の人の目に付く機会が多いから
692 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 09:11:28 ] >>673 おお、いいねこれ。ruby consoleは変更できないの?
693 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 10:39:20 ] Ubuntuでもメニューに登録されてるPythonコンソールのアイコンはかっこいい。 Irbをインスコしてもアイコンは登録されない・・・
694 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 10:52:56 ] っていうか、公式でアイコンはすでに募集しただろうが 文句言うならかっちょええの送ればよかったのに
695 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 10:55:53 ] >>692 ショートカットのプロパティで設定できないか?
696 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 11:05:28 ] 公式とか関係ない話だし
697 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 11:15:28 ] アイコン関係ないとか言うやつは、 少なくとも一般ユーザーにサービスを提供するセンスはない
698 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 11:19:59 ] Rubyにアイコンはないよ アイコンつけて配布してるのは公式じゃない
699 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 11:40:52 ] >>697 でっていう
700 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 11:41:27 ] >>695 こうなってて本体らしきrubyが変更できない uproda11.2ch-library.com/167843LuR/11167843.png
701 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 11:45:24 ] >>700 フイタ、それショートカットじゃねーよw exeのアイコン変えるにはリソース書き換えないと。
702 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 11:48:49 ] >>701 え、リソース書き換えエディタみたいなソフトをとってくればいいの?PC探してもショートカットしか見つからない
703 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 12:08:49 ] あれリンク先の本体無いよね どうやって作ってあるのかよくわからん
704 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 12:11:38 ] すまんASRか。入れてないから調べられないけど たぶんゴミ箱とかと同じでレジストリ。
705 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 12:22:52 ] リンク先がクレーアウトして選択できないのはアドバタイズショートカットだな 素人さんや外部プログラムによって変更されてしまわないように Windows Installer によって作成された特別なショートカットだ
706 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 12:23:11 ] >>699 おまえみたいのは必要ないってこと
707 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 12:55:08 ] >>694 公式のあれはロゴ募集であってアイコン募集ではない ついでに言うと、「かっちょええの送ればいい」と簡単に言うが 実際に公式ロゴとして選ばれたロゴはかなり不評だったぞ
708 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 13:13:17 ] 自分で好きなアイコン仕込んだバイナリ作って配布すりゃいいんじゃね?
709 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 13:26:53 ] >>700 Ruby ConsoleはOffice同様特殊なショートカットになってるから実態がどうなってるのかよくわからないな。 あれって何を起動してるんだろうか。 とりあえずruby.exeのショートカット作ってアイコン変えてデスクトップに登録してみたら。 自分はあれ使ったことないんだけど set path=C:\Program Files\asr\ruby.exe ruby.exe みたいな起動以外の事をやってたりするんだろうか。 exeのアイコンを直接書き換えるならリソースハッカー使えば出来るけどそれはちょっとイレギュラーだな。
710 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 14:30:44 ] 関連づけしてないので多分アイコンはウィンドウズマークのままだorz
711 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 17:00:39 ] EclipseとAptana Studioを使っています。 Rubyエディターで1.9から導入された記法で hash = {key1: 'value1', key2: 'value2'} のように記述するとエラーマークがつきます。 実行すれば正しく実行されるのですが、 このエラーマークは回避できるでしょうか。
712 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 17:23:22 ] そのソフト側が対応するまで待て
713 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 17:27:04 ] やっぱりそうですかね。 警告はあるていどカスタマイズできるみたいなんですが。
714 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 17:28:03 ] カスタマイズも何も、その記法をそもそも知らんのだろ
715 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 18:30:06 ] >>714 そうですね。 それは仕方ないので、 ハッシュ系の文法チェックを切れたりしたらいいなと思ったんですが、 やっぱりそんなものありませんでした。
716 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 18:50:43 ] 自分で書くぶんには回避すればいいだけだが、既存のスクリプトでエラー報告されるのはなかなか辛いな っていうか、これそんなに使うか?
717 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 18:50:45 ] author = s.scan(/<author>(.+?)<\/author>/i) の正規表現を名前付きで捕獲したくて author = s.scan(/<author>(?<author>.+?)<\/author>/i) とすると author = s.scan(/<author>(.+?)<\/author>/i) のエラーになります。なぜでしょうか?
718 名前:717 mailto:sage [2009/03/25(水) 18:52:12 ] >>717 あ、エラーは下記です(^^;;; undefined (?...) sequence:
719 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 18:54:15 ] >>717 そりゃおめえ、ruby 1.8を使ってるからだよ。
720 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 18:57:45 ] >>717 日本語でおk、と言いたいが、とりあえずタイポは無い? 正規表現の文法エラーだと思う。 (?:<author なのか (?<=author なのか (<author なのか。 何がしたいのかよくわからないから、ちょっとわからない
721 名前:720 mailto:sage [2009/03/25(水) 19:00:47 ] ごめん。"author"の「名前付き」で取りたかったのね。 ちゃんと書いてあるw ってことは>>719 か。 しっかし紛らわしいなこの辺の書式
722 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 19:03:15 ] 普通にMatchDataとか$1とかで陽に名前付けろ
723 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 19:03:56 ] >>722 えーおれ普通に正規表現中にコメント書いてるけど
724 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 19:15:10 ] >>716 自分は「=>」が面倒なので気に入りました。 コロンの方がとても打ちやすいように思います。
725 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 01:47:23 ] はじめまして,Ruby on Railsについて質問をさせていただきます. 現在,Rails上で,ある画像サムネイルをクリックすれば,ポップアップ上に大きな画像を表示するというものを作ってみたいのですが,以下の点がわかりません. 1. Rails上から,PostgreSQLにアクセスするためにはどのようにすればよいのでしょうか? 具体的には,rubyでは,require "postgres"と書けばよかったのですが,これをどこに書けばよいのでしょうか? それとも,そもそもそのようなことはしなくても,PostgreSQLにアクセスをすることができ,queryを投げることが可能なのでしょうか? 2. 現在,データベースにアクセスした後の処理部分(データベースを検索し,その画像の元ファイルが存在する部分を探すクラス)については クラスをrubyで作成したのですが,それをRails上から利用するためにはどのようにすればよろしいのでしょうか? 環境は OS : [Fedora8] Ruby : [1.86] Rails : [2.11] となっております. よろしくお願い申し上げます.
726 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 02:00:03 ] Railsを使うなら、まずRailsのやり方を、画像のことは忘れて 勉強してください。
727 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 02:21:33 ] pc11.2ch.net/test/read.cgi/php/1224838013/ 【Ruby】Ruby on Rails Part6
728 名前:717 mailto:sage [2009/03/26(木) 09:30:19 ] バージョンを書かずにすみませんでした。1.8.6 です。 1.8 は名前付きキャプチャができないんですね。意外でした。 いろいろアドバイスありがとうございましたー。
729 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 10:27:07 ] >>728 名前付きキャプチャは1.9からの新機能。 正規表現エンジンそのものにも関わるので、1.8に降りてくることはないと思う。
730 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 11:01:57 ] 1.8.6 の正規表現で質問です。 / を含む正規表現をよく書くのですが、 \/ のエスケープが面倒です。 puts %|"'"| なら "' がエスケープ不要なように、 正規表現でも /\// =~s を |/| =~ s 的な書き方はないでしょうか? 正規表現 ttp://www.ruby-lang.org/ja/man/html/_C0B5B5ACC9BDB8BD.html は目を通したのですが、見落としていたらすみません。
731 名前:730 mailto:sage [2009/03/26(木) 11:21:44 ] 自己解決しました。 %r という「正規表現リテラル」があったのですね。
732 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 07:24:51 ] Ruby 2 さまざまなデータとアルゴリズム ttp://www.amazon.co.jp/dp/4798118001 買った人いるー?
733 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 08:03:55 ] 本屋で手にとって見てみたが、ちょっとイマイチだったような覚えがある 結城浩あたりがRuby本出してくれないだろうか
734 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 08:20:25 ] 価格で合格点 そのへんのブログでやれば人気出そうな内容だが、書籍という形にしたことを大きく評価 ふと気づいたら最近はHTMLを正規表現でscanしかしてないという人向け
735 名前:デフォルトの名無しさん [2009/03/27(金) 11:18:29 ] PythonでlxmlやBeautifulSoupに相当するものは Rubyだと何がありますか?
736 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 11:21:34 ] >>732 そんなの出てたんだ arton先生にお布施だな
737 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 11:45:31 ] 質問: Hashで、指定したキーのペアだけを取り出すというメソッドありますか。 {:x=>10, :y=>20, :z=>30}.get_at(:y, :z) #=> {:y=>20, :z=>30} みたいなの。 >>735 XMLパーサだよね? REXMLやNokogiriじゃないかな。
738 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 11:57:34 ] よし、某変態パーサの時代は終わったな >>735 とりあえず動けばいいならRubyful Soupっていう移植版がある メンテ終わってるからお勧めできないけど
739 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 12:03:09 ] >>735 libxml-rubyがおすすめ
740 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 12:31:38 ] >>738 あれがないとまともに動作しないライブラリがあるんですが (次バージョンで直る予定) ってかなんでもかんでも UTF-8 に内部変換して返すんじゃねえ それはそうと、Nokogiri 使うのが最近の流行だと思う >>737 ありません …なぜか「ハッシュから指定のものをハッシュで返す」というメソッドが 標準装備されてないんだよね
741 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 12:39:43 ] >>740 ありがとうございます。ないということなので、自分で追加することにします。
742 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 13:02:56 ] パーサも中でスキャンしてるのには変わりないけどな。
743 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 14:30:53 ] >>738 Shift_JISをShift_JISのまま返せる高速XMLパーサはRubyではあれだけだぞ
744 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 18:17:18 ] ある文字列中に置いて、別の部分文字列や正規表現がマッチする数を数えようとしています。 今のところ str.scan("substr").length や str.scan(pattern/).length を使っているんですが、 もっとうまい方法があれば教えてください。
745 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 18:17:34 ] >>741 まあこうすりゃいいよな class Hash def get_at(*args) ret=Hash.new args.each do |opt| ret[opt]=self[opt] end ret end end
746 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 18:32:40 ] >>744 マッチする数を数えるということにそれ以外の方法があるとして、たとえばどんなん?
747 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 18:59:16 ] 少し質問があります。 Rspecのspecファイル内で、他のspecファイルと共有したいメソッドなどが出てきた場合は どう整理したものでしょうか?(リファクタリング?というのでしょうか?テストファイルの、ですが) 共有化するはshare_asとinclude ででできるみたいなのですが、他のファイルで使う場合どおしたものか?と思いまして share_as :HogeMage do end describe "When amgemoge" include HogeMage : end
748 名前:747 mailto:sage [2009/03/27(金) 19:14:15 ] >>747 事故解決というか、こんな感じでできましたけど、こんなんでいいのだろうか? rspec流だとどういう風にするんだろう……。 -----spec/spec_common.rb unless defined?(SpecCommon) # warning: already initialized constant SpecCommon 防止 share_as :SpecCommon do def example_method puts "Babooo!!" end end end --------- spec_herlper.rbあたりに、 require File.dirname(__FILE__) + '/spec_common.rb' と書いて、各specにて、 describe "When amgemoge" include SpecCommon : end という感じです。
749 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 19:30:51 ] >>744 もっとうまい方法、というからには今のやり方に不満があるようだけど 具体的に何が不満? もっと短くできないかということなのか、 中間で配列が生成されるのがキモイってことなのか。 前者ならメソッド書けばいいし、 後者なら scan にブロック渡してそこでカウントするって方法があることにはある。
750 名前:デフォルトの名無しさん [2009/03/27(金) 19:55:53 ] >>733 書籍はそのうちでるんじゃないかな? 書いてるような記事 見たことがある
751 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 21:07:43 ] FasterCSVを使っている人いますか? csv = FasterCSV.read(filename, :encoding => 'sjis') みたいに読み込んでいるのですが、ファイルによっては、 Unquoted fields do not allow \r or \n (line 1). といわれてしまいます。 これはどうやって解決したものでしょうか? header => true もreadのオプションで加えてみたのですが、同じでした roz
752 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 21:15:03 ] >>751 これ? ttp://redmine.ruby-lang.org/issues/show/1075
753 名前:デフォルトの名無しさん [2009/03/28(土) 02:16:21 ] 今、rubyでちょっとしたダウンローダースクリプトを書いているんですが、 wgetのように、進捗状況を表示させたいと思っています。 例えば100個のファイルをダウンロードするとしたら、 /home/hoge> ./downloader.rb ただいまダウンロード中。。。進捗(5/100) ↑こんな感じで、表示させたいです。画面スクロールしないで、5/100の部分 だけ書きかわるイメージです。うまい方法をご存知の方ご教示下さい。
754 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 02:35:32 ] curses を使うのが無難だが、ちと大仰 ものすごく簡単には、バックペースを表示すればいい print "残り時間:"; 1.upto(100){|n| print "%3i/100" % n; print 8.chr*7; sleep 0.1}
755 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 02:39:21 ] あ、sleep の場所がまずいな まあ、好きなとこでどうにかしてくれ ポイントは表示を戻したいバイト数のぶんだけ 8.chr を print で表示することだ "%3i/100" % は必ず7バイトだから、 7バイト表示後に7バイト戻して次のループで7バイト表示して7バイト消して…を繰り返すことで アニメーションさせている
756 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 02:46:59 ] >>754 あ、なにこれ面白い
757 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 02:53:41 ] >>754 便乗すんません 面白そうなのでやってみたけど、Windowsでは動いたがDebian(etch)では動かないです(´・ω・`) これは、バックスペースの文字コードが違うとかsleepの仕様が違うとかそういうことでしょうか・・・
758 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 02:56:54 ] 似てるけどちょっと違う 100.times {|n| print "\r残り時間:%3i/100"%n ; sleep 0.1 }
759 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 03:00:49 ] >>758 概念キモいな(w >>757 >>758 なら^hがバックスペースでないコンソールでもたぶん動く キャリッジリターンを表示してカーソルを行頭に持ってきて表示、を毎回行ってるパターン どっちも制御文字がナチュラルに選択肢に入るオッサンだと推測
760 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 03:06:29 ] \r だと Macで意図通りに動かなそうな気がしなくもないが、偏見かもしれない まーだからこそ curses が環境差異を吸収してるんだろうけどな 他環境で実行する予定があるならカーソルいじらずに素直に curses 使え
761 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 03:07:08 ] >>759 むう。だめですた。 まあきっとこれは、puttyを経由してるからだと思うことにしますた。
762 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 03:18:33 ] >>754 753です。早速のレスありがとうございます。 なんとか望む物ができそうです!ありがとうございます! windowsとmacの両方で動かしたいので、 cursesも使ってみましたが、init_screenすると 新しい画面になってしまうのが、ちょっといやんな感じでした。 元の画面のままcursesを使う事ってできないもんでしょうか。。。
763 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 03:23:07 ] >>761 だからそのPutty経由でうまくいってるん …あーわかったすまん、flush してくれ 100.times {|n| print "\r残り時間:%3i/100"%n; $stdout.flush; sleep 0.1 } または $stdout.sync = true 100.times {|n| print "\r残り時間:%3i/100"%n ;sleep 0.1 } これなら動作する
764 名前:761 mailto:sage [2009/03/28(土) 03:29:20 ] >>763 動きました!便乗にもおつきあい頂きありがとうございました
765 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 03:32:38 ] >>762 原理的にできません
766 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 03:32:40 ] つーか、wgetみたいにしたいなら、wgetのソース嫁って気がwww
767 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 03:44:04 ] 俺のエロ動画ダウンローダ system("wget", url) wgetみたいに動く
768 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 03:54:08 ] いまどきのMacはUNIXなので改行コードも¥rじゃなくなってるよん。 $ echo "aaa¥rbbb" bbb
769 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 03:59:06 ] Ruby の公式 MLって Gmail だと弾かれたりするんですか? Subscribe のメールを ruby-xxx-ctl@ruby-lang.org 宛てに送っても 確認のメールが送られてこないんですけど。 こういうのって数日かかったりするもんなんですか?
770 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 04:03:07 ] 俺はgmailで購読してます。
771 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 04:06:27 ] なんか本文の書式間違ってるとかなんかあるんじゃないかぬ
772 名前:769 mailto:sage [2009/03/28(土) 04:26:05 ] すいません 確認のメールが迷惑メールとしてフィルタリングされてましたorz
773 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 06:26:07 ] ある意味正しくフィルタが働いてくれたんだから笑ってほめてやれ
774 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 06:57:01 ] 一時期RubyMLにSPAM大量発生してた気がするけど その影響でML自体がブラックリスト入りしたのか
775 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 08:50:27 ] >>752 ああ!そういうことか!確かにありそう…。 ちょっと改行コード確認してみます。 Excelでcsv出力すると改行コードがまざるのかも。 (FasterCSV自身で出力したのは大丈夫なんですよね) CSVでなく、FasterCSVですが1.9のコードと同じ不具合(仕様?)があるのかもしれませんね
776 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 08:54:14 ] Excelって、セル内の改行はLF、レコード区切りの改行はCR+LFとか、意味のわからない使い分けをするよね。 知ってる限り2003までは。こんなところにもMicrosoft仕様とはw
777 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 09:02:52 ] > こんなところにもMicrosoft仕様とは プッ
778 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 10:34:54 ] 意味のわからない kwsk
779 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 12:20:36 ] >>774 アルファベット率とかそういうのが原因かもしれない。
780 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 14:41:46 ] ウインドウズと戦ってるデビアン廚であった。
781 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 14:44:27 ] >>776 はCSVとしては一般的な仕様なの?
782 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 00:26:06 ] ttp://ja.wikipedia.org/wiki/CSV ttp://codezine.jp/article/detail/2364?p=1
783 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 08:29:57 ] >>782 参考にはなるが答えにはなってないな
784 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 15:35:52 ] >>732 Rubyには関数はないし、2次元配列もない ないからこそ、普通にクラス定義の中にいる&インスタンスメソッドの関係と配列クラスとメソッド返り値で説明ができるはず 他のプログラミング言語で関数と多次元配列構造を理解してる凝り固まった人間向けの橋渡し説明でならまだしも、 「普通の」Ruby初心者に対してわざわざ遠回りで不正確で禍根を残す説明をする必要はないと思う
785 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 17:13:33 ] Rubyの本と言うより、題名どおり一般的なアルゴリズムとデータ構造の本なのでは?w
786 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 17:44:24 ] >>785 ttp://www.amazon.co.jp/dp/4798117994/
787 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 18:24:36 ] >>784 どんな内容か確かめたの?たぶん勘違いしてると思うよ。
788 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 19:36:04 ] トップレベルのメソッド定義を関数定義として扱って ひどい目にあうケースや問題点ってあったっけ あるなら漏れも関数って呼ばないことにする
789 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 19:37:09 ] >>784 俺もレシーバなしのメソッドを「関数」といちいち言ってるのは気になった >>786 の1のほうでレシーバがあるのがメソッド、みたいなことを言ってしまったので 関数的メソッドという表現が使えなくなって関数という説明しかできなくなったのだと推測 これ全部実はインスタンスメソッドなんですぅ、とひとこと言えば理解も深まると思うんだけれど てか、 puts メソッド、という完全に正しく問題も起こらない表現をすることの何がそんなにまずいの?
790 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 19:42:36 ] >>788 動作指示用の名称が「関数」と「メソッド」の2種類存在することになって学習を阻害しそうなこと かな いやさ、たとえば、puts を関数と呼ぶじゃん puts "hoge" これは puts 関数だよね def output puts "hoge" # (1) end (1) に書かれてるのは puts 関数だよね def disp(s) puts s end def output disp "hoge" # (2) end (2) に書かれてるのは disp 関数? c = C.new としたあとに c.disp とした途端に disp メソッドになるの?
791 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 19:52:02 ] /) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!! / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\ / ノ il゙フ::::::⌒(__人__)⌒::::: \ ,イ「ト、 ,!,!| |r┬-| | / iトヾヽ_/ィ"\ `ー'´ /
792 名前:デフォルトの名無しさん [2009/03/29(日) 19:53:53 ] /) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____ / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\
793 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 20:07:52 ] 最近流行ってるのの中ではマ板に一番貼られちゃいけない AA のような気がする んで、推測だけど、>>790 の最後は、 関数呼称派の人でもおそらく「output メソッドの定義中で disp メソッドを呼ぶ」と表現すると思うんだ 本 当 は 「(基本・添付・外部)ライブラリ中でObjectクラスに定義され提供されている、レシーバが書かれないインスタンスメソッド」 のことを関数って呼んでるんだと思うんだ、関数呼称派の人は でも、そう説明されていることをまったく見ない Object クラスの存在を言わなければならなくなるからだ それは不親切で不義だろうと考える お前と俺らは「わかってる」から、それこそこまけぇこたぁどうでもいいんだが、 初心者もいるとこでの説明解説としてはやっぱ、そういうのはダメだろ どう?
794 名前:デフォルトの名無しさん [2009/03/29(日) 20:14:52 ] えーと、つまり関数らしきものは、実はレシーバが省略されている?メソッド という解釈でいいんですか?
795 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 20:17:47 ] Rubyを教えるのかRubyを使ってプログラミング(or 計算機科学)一般を教えるのかで大分変わるよねえ
796 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 20:28:17 ] >>794 トップレベルにおいてドット無し形式で記述できるKernel(と、ObjectとModuleとBasicObjectと、他になんかあったっけ?)クラスの インスタンスメソッドを、Rubyでは慣習的に「関数的メソッド」と呼ぶ。 ただし、じゃあ具体的に puts のことを説明上なんて呼ぶかというと、やっぱり「puts メソッド」と呼んだりする。 puts 関数、という呼び方を頑なにしている人は、>>793 の言うようにちょっと根性がユガんでる。 いちいち指摘する人とどっちもどっちなくらいに。 >>795 プログラミングにおける関数というものが既知な環境かどうかで完全に違うと思われ。 たとえば大学の理系1年のプログラミング実習(教官は研究室教授)みたいな場合はマジで関数と呼ぶ。 「命令を小文字で書くことができます」とか初心者には何が特記事項なのかわからない嬉々とした注釈がついてたりする。
797 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 20:32:39 ] 要するに、ドット無し形式で記述できるのが悪い。
798 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 20:34:25 ] $.puts こうですか。わかりません><
799 名前:デフォルトの名無しさん [2009/03/29(日) 20:43:55 ] 曖昧になるから、これからは Kernel.puts って書こうぜ。 面倒でも。
800 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 20:46:07 ] 関数形式で書きたい場合は include Kernel を書くようにする、みたいなようにすればよかったんだよ これで全部解決
801 名前:デフォルトの名無しさん [2009/03/29(日) 20:53:42 ] 何でもかんでもオブジェクト指向にするからこう無理が出てくるんだよ。 ニシキヘビを見習えや!
802 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 21:16:09 ] irb(main): ってのは変化しうるなにか重要な情報を表示してるんですかね。 出来れば取っ払いたいんですが。
803 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 21:21:51 ] >>802 取っ払うだけなら irb --simple-prompt 長門プロンプトの作り方誰か教えて
804 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 21:24:24 ] >>802 irb_cws(Klass) で self のクラスを main から Klass に切り替えることができる irb(main):001:0> p self main irb(main):002:0> irb_cws(Integer) irb(Integer):003:0> p self Integer irb(Integer):004:0>
805 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 21:54:19 ] Rubyは全てがオブジェクト。putsはメソッド。 「関数」という呼び方はただの簡便的な言い方。
806 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 22:06:31 ] 違いが分かってて使うならいいが、分かってなくて使うのは問題だな
807 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 22:10:47 ] >Rubyは全てがオブジェクト。 だからー、全てをオブジェクトとして考えることに無理があるとは思わないの? 本来関数として扱われる Kernel.exit とかさ、無理やりメソッドにしたおかげで Kernel.を省略しちぇー、みたいなグダグダになったんだろ?
808 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 22:20:20 ] 頑張り方がよくわからない
809 名前:デフォルトの名無しさん [2009/03/29(日) 22:25:59 ] >>807 /) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!! / / _,.-‐'~/⌒ ⌒\ by 言語設計者
810 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 22:29:16 ] こんなくだらないことで言い争うのってマジでていどひくい
811 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 22:30:12 ] Rubyにlambdaってあります?
812 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 22:31:03 ] 特に区別しなければならないコンテキストでなけりゃ 関数と言おうがメソッドと言おうがどっちでもいい メンバ関数と言ってもいい
813 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 22:32:08 ] Rubyが持っている、「こだわり」と「崩し」のアンバランスさの 最もわかりやすい例だろうなぁ。
814 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 22:53:33 ] >>807 無理があると思うなら使わなきゃいい。オブジェクト指向言語なんだからむしろ当たり前だと思うが。 関数大好きならCでもなんでも山ほどあるんだから、そういうの使えばいいだけのこと。
815 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 22:56:47 ] Rubyから「全部オブジェクトでできたプログラミング言語」というアイデンティティを抜いたら何も残らないぞ
816 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 22:57:36 ] >>811 lambda のように動作する lambda ならありますが、本当に lambda かどうかまでは保証できません
817 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:00:03 ] > オブジェクト指向言語なんだからむしろ当たり前だと思うが。 だからさ、そういう価値観の言語なのに、オブジェクトのメソッドを関数的に呼び出せるのは (関数的に呼び出せるのにオブジェクトのメソッドですとやたら言い張るのは) 「当たり前」と呼ぶにはグダグダすぎる妥協で、混乱を招くね、という話でしょ、これは。 > 関数大好きなら〜 そんなにメソッドメソッドうるさいなら関数的に使えるようにするなよ醜いなぁ、 と言っているのに対して、「関数大好きなら〜」とか返すのはズレてるよ。 Ruby及びRuby信者が「オブジェクト大好きなら、関数的メソッドなんて使えなくすればいいだけのこと」 って言われてるんだよ。
818 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:05:03 ] はいはい眩暈のするほど高度な議論はこっちでやりまちょうね〜 Rubyについて Part 35 pc12.2ch.net/test/read.cgi/tech/1238194350/
819 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:10:13 ] どう見ても初心者スレ向けの話題でしょ。 Rubyの言ってることとやってることが違っていて初心者を混乱させる、という話は、 既に「そういうもの」として覚えちゃってる人には関係ない。
820 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:11:33 ] オブジェクト指向言語なのに if や for があるのはなんでですか、という議論に近い
821 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:12:11 ] >>818 には本当の本当に 眩暈がするほど高度な議論 に見えちゃったのかもね
822 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:12:25 ] てか、レシーバが self の場合は省略できる、という動作のナニがそんなに問題なのよ
823 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:14:44 ] Javaでだってthis(self)は省略できて当たり前だよね
824 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:17:18 ] >>817 Rubyではクラスに属するサブルーチンのことをメソッドと呼んでいます すべてのメソッドはなんらかのクラスに属しているから、メソッドではないサブルーチンというのは存在しません マニュアルでも、とりあえずは全部メソッドと呼んだうえで俗称の注釈があるはずです それなのに、メソッドと呼ぶことを拒んでわざわざ関数と呼ぶのはなぜですか?
825 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:19:22 ] >>822 そんなに問題、とは誰も言ってないのでは。 Rubyに関数は無い、というのが最初わかりにくいだけ。 君の言葉でいうと、それが「レシーバが self の場合は省略できる、という動作」であると 初心者に伝わらないことがある。「関数なんちゃら」と呼ぶ慣習とのコラボでね。
826 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:20:58 ] >>825 なんちゃらと濁したのは何故 「メソッド」ということばを消したのは何故?
827 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:21:21 ] >>824 内容的に、レス先間違えてるよ。 俺は、Rubyでは「関数」という単語を含めた呼称を(いかなる場所でも)使わないほうが 紛らわしくなくていいのでは、という立場。 俺が、誰かに、最後の行の質問をしたい。
828 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:23:10 ] 初心者が身の程をわきまえず茶々を入れますが Kernelはクラスですか? mainはどう理解すれば一番シンプルですか? Hogeクラスの中でputsを使った場合、メソッドとしてどう解釈すれば素直でしょうか。
829 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:24:04 ] >>826 >>827 の通り。 関数という単語の存在が初心者の勘違いを誘う、と考えているから。 後ろに「メソッド」を付けて「ほらちゃんとメソッドって言ってるし!」とか幾ら言ったところで、 ココ、この2文字、この「関数」の2文字せいなんだ、ということが言いたいから 関数のところを抜き出した。
830 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:24:16 ] >>826 関数的メソッドという表現を認めてしまうとメソッドだということになってしまうから、メソッドという部分は消した 以上 Rubyでメソッドのことを関数とだけ呼んでる人は、 その人の使ってるプログラミング言語でサブプログラムのことをRuby式にメソッドと呼ぶときっと火のように怒ると思う
831 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:26:13 ] >>824 モジュールに属してるやつはメソッドじゃないの? インクルードするからクラスに属するってこと?
832 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:26:50 ] >>830 遅いよ。 他人になりすまして屑のような回答したかったら もっと神速を心がけるように。
833 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:27:38 ] >>828 #/usr/bin/ruby -Ku class Kernel # 書かれてるが見えない ここがトップレベル end # 書かれてるが見えない Kernel.new # 書かれてるが見えない こんなもんだと思え
834 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:29:05 ] >>832 成りすまし? そんなことする必要性がどこに? 個人を認識してほしければMLで話せ
835 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:30:25 ] >>822 それをしてプライベートメソッドと呼ぶとこがキモい
836 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:31:40 ] >>833 main がないよ
837 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:33:04 ] >>834 > そんなことする必要性がどこに? 必要性ということでいうと、>>825 が>>825 個人の行為について受けた質問を、 >>825 ではない>>830 が答える必要性は無かったからなぁ。 必要性が無い行為を目の当たりにした直後に「必要性がどこに?」とか質問してもなぁ。 必要性がなくても、色んなことを書くものでしょ。 というか2chのレスは大抵、別に書く必要性は無いんじゃないか。
838 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:40:56 ] 言語仕様をうまく調整することで、一部の挙動については手続き型・関数型の観点からでも 解釈できるようにしてあるってだけでしょ さすがにOOP一本槍ってのは分野を狭めることになりかねない Ruby学習の上でも、マイナスにはならんと思う Rubyでのオブジェクトというと単純には「データ構造と、それを操作する手続きを固めたもの」 だから流れとしては基本構文・データ構造を学んだ上で、最後にクラスが来るのが自然 初めはpとかの関数的メソッドは、いわゆる手続き扱いにして クラスの学習段階になってから、メソッドなりselfの省略なりって理屈を説明すればいい
839 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:53:46 ] このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所
840 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:55:23 ] もう30回くらいみたなこの流れ
841 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 23:55:39 ] >>833 class MyKernel def my_puts(s) puts s end class Hoge def initialize my_puts "done." end end def initialize h = Hoge.new end end MyKernel.new #=> undefined local variable or method `my_puts' # by アイ
842 名前:デフォルトの名無しさん [2009/03/29(日) 23:59:42 ] Rubyのことよく知らないのですがメンバ変数とかのメンバとはどういうものでしょうか?
843 名前:デフォルトの名無しさん [2009/03/30(月) 00:00:44 ] メンバ関数=メソッド
844 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 00:02:36 ] >>838 初心者に対して初心者じゃない人の論理持ち出さないほうがいいと思う
845 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 00:07:52 ] こればっかりはなー 少なくとも、プログラミングの知識がない、という前提に立ったとき、 手続き型プログラミングを優先して教えることは必ずしも理解にプラスにならない ということはもうちょっと周知されてもいいと思うんだ 手続き型でプログラミングを知った人がまだ生き残ってるから、こんな歪んだプロセスがまかり通ってるが
846 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 00:13:02 ] BASICやFORTRANの呪縛 ってか、オブジェクト指向をベースに物事教えるのって手間も時間もかかってめんどいんだよね 「メソッドっていうのはこれまででいうところの関数です」という教え方はそりゃ下策ではあるんだが、 教えるコストと成功者発生の割合の兼ね合いとかさー
847 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 00:19:54 ] >>845 ちょっと考えとく
848 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 00:22:26 ] >>845 関数型プログラミング言語でプログラミングを初めて習った人ばかりになれば薔薇色の未来が
849 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 00:29:00 ] >>833 module Kernel;end class Object include Kernel # ここにスクリプト end main = Object.new じゃね?まったく自信ないのでだれか訂正よろ
850 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 00:32:48 ] >>849 とりあえず、スクリプト上で実際に再現することはできなかったはず 「だいたいこんな感じに書ける感じで」という感じ main とかはどっかにあるだけで、スクリプトからは触れないし
851 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 00:33:37 ] ところでおまえら Rubyの前は何やってたん?
852 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 00:37:49 ] >>850 self で触れるよ(selfで触れるだけだけど) でっかい Kernel クラスか何かのクラス定義中にスクリプトを書いている、という理解は当たってないけどそう遠くもない
853 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 00:45:52 ] >>845 確かに、手続き型からが良い選択なのかはイマイチ自信が無い ただ手続き型は副作用を自然に取り扱えるという点で、初心者からすれば最も”普通”だと思う 加えて実用上もそれなりに強力ってのは十分なメリットかと 関数型は面白そうだが、SICPを参考にすると 先ずプリミティブなデータ型とオペレータ、関数定義による抽象化、抽象データ型と進んでいる ・・・・・とりあえず美しいw
854 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 00:57:56 ] 手続き的プログラムからオブジェクト指向的プログラムに移行するとこがユガんでるといえばユガんでるな def だけでいいじゃん、ということになるわけで
855 名前:デフォルトの名無しさん [2009/03/30(月) 01:49:02 ] 皆さんテンプレートって何使ってますか? amrita、tenjinなど違いが良くわかりません
856 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 03:12:21 ] 初心者スレにふさわしいかどうかわ知らんが、参考 第1章 Ruby言語ミニマム i.loveruby.net/ja/rhg/book/minimum.html コンテキストとしてのself トップレベルでもselfがある。トップレベルのselfは、mainという。 なんの変哲もない、Objectクラスのインスタンスだ。 mainはとりあえずselfを設定するために用意されているだけで、 それ自体にあまり深い意味があるわけではない。 そんなわけでトップレベルのself即ちmainはObjectのインスタンスなので、 トップレベルでもObjectのメソッドが呼べるということになる。 そして ObjectにはKernelというモジュールがインクルードされており、 そこで pやputsなどの「関数風メソッド」が定義されている(図10)。 だからこそトップレベルでもpやputsが呼べるのだ。
857 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 03:14:09 ] 続き だから本当はpも関数ではなくメソッドなのである。 ただ、Kernelで定義されているため、どこにいようと、 つまりselfのクラスがなんだろうと、「自分の」メソッドとして関数のように呼べてしまうのだ。 だからRubyには本当の意味での「関数」は存在しない。 あるのはメソッドだけである。
858 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 04:23:36 ] 関数のように呼べてしまうなら、従来通り関数でもいいじゃんって疑問が産まれると思うぞ。 あえて関数を採用せずに、メゾットを使うだけの理由を説明しないと。 早くも、rubyのオブジェクト指向実装にほころびがwww RDBとかとのマッピングもそうだけど、オブジェクト指向で扱うのは無理が多い事象も多いよね。
859 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 04:51:11 ] オブジェクトの考え方で一貫している言語を扱うときは、まず頭の中をオブジェクトオリエンテッドに 切り替えないと混乱する。CやPascalなどの次にsmalltalkを勉強したときがまさにそうだった。 1 + 2すらオブジェクトとメッセージで構成されてるという説明を読んだときは目からうろこだった。 構造化プログラミングの頭のままで無理矢理オブジェクト言語を理解しようとすることが そもそもの間違いだと気付くまでは、単にわかりにくい言語としか思わないだろうな。
860 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 04:54:47 ] おっさんしゃべり場
861 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 05:14:29 ] >>858 従来通り関数 あえて関数を採用せず おいおい…… あんたもうちょっとプログラミング言語のパラダイムを相対化する 視点を身に付けた方がいいんでないの?
862 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 05:29:56 ] >>858 > あえて関数を採用せずに、メゾットを使うだけの理由を説明しないと。 オブジェクト指向言語だから、で終了だろw あえて関数を採用してメソッドを使わない理由を説明できんの? > 早くも、rubyのオブジェクト指向実装にほころびがwww kwsk
863 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 06:44:45 ] メゾットまで読んで朝ごはん食べようと思った
864 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 07:01:50 ] このスレが盛り上がるパターンって決まってるな
865 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 07:14:12 ] >>859 多分それは話の切り口がズレてる。 オブジェクトオリエンテッドに切り替えた頭、あるいは切り替えようとしている頭に、 中途半端に関数を思い出させる記法と、>>856-857 みたいな関数関数言いまくる説明の コンビネーションは毒、って話では。
866 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 07:15:53 ] 早くも、>>858 の頭にほころびがwww m9(^Д^)プギャー
867 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 07:30:25 ] 最初に学んだ言語がオブジェクト指向言語だった人: あれ? ここの暗黙の self ってなんだろう? ← そもそも関数とか思わない 最初に学んだ言語が手続き型言語だった人: あれ? トップレベルには関数も書けるのかあ ← 早とちり と、ここまで書いたけどこんなきれいには分かれないよな 実際、クラスの外に関数書けるオブジェクト指向言語もあるし
868 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 08:23:56 ] >>861 というか、たぶん、プログラミングに向かない人なんだと思う シンタックスシュガーとか存在を許さない人 レシーバが文脈上デフォルトであることが明確である場合省略する、という動作が不自然に思えるというのはむしろ病気だ
869 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 08:36:22 ] 関数とは関数であることを意図している 関数的メソッドとはメソッドであることを意図している ここをわざと無視してる奴がいるがそれこそ無視でよろしく
870 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 08:53:28 ] 関数って呼び方は初心者にレシーバを意識させずに済むから それなりに合理性はあると思うんだけどなあ またメソッドであることをあまりに主張しすぎると 手続き型のようにプログラミングできるようにしてあるRubyの指向とは即しない気がする blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/5173
871 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 08:57:00 ] 大きい胸のことを、ボインと呼ぶか巨乳と呼ぶかについて熱く語ってるスレはここですか?
872 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 09:14:28 ] >>855 るびま最新号の一つ前の号に特集記事があるよ
873 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 09:27:01 ] 「乳」がレシーバですね。わかります。 しかしボインは巨乳より前に登場した言葉です。 巨乳にしろ爆乳にしろ貧乳にしろ、すべて「乳」体系に属します。 巨乳にレシーバが省略されたものを、ボインと呼ぶのはおかしくないですか?
874 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 09:32:22 ] ボインとか言ってるやつは全く乳を理解してないよなw
875 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 10:07:00 ] _Y_ r'。∧。y. ゝ∨ノ 春厨がクソレスを ,,,ィf...,,,__ )~~( している間に _,,.∠/゙`'''t-nヾ ̄"'''=ー-.....,,, ,i i, ,z'"  ̄ ̄ /n゙゙''''ー--... ,i> <i 文明はどんどん発達し r”^ヽ く:::::|::|:::〔〕〔〕 i> <i. ていく・・・・・・。 入_,..ノ ℃  ̄U ̄_二ニ= `=.,,ー- ...,,,__ |,r'''"7ヽ、| __,,,... -ー,,.=' >ーz-,,,...--,‐,‐;;:'''""~ ~''':x.,, ~"|{ G ゝG }|"~ ,,z:''" ___ ~"'=| ゝ、.3 _ノ |=''"~ <ー<> / l ̄ ̄\ .|)) ((| / ̄ ゙̄i;:、 「 ̄ ̄ ̄ ̄| ̄| ̄ ̄ ̄\ ))| r'´ ̄「中] ̄`ヾv、 `-◎──────◎一' ├―┤=├―┤ |li:, |「 ̄ |i ̄i|「.//||「ln|:; ||//__|L_」||__.||l」u|:; |ニ⊃| |⊂ニ| || ,|/ |_. └ー┘ ._| ||/ ヘ 「 ̄ ̄ ̄| /
876 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 10:34:40 ] なにもそんな涙目にならなくてもw
877 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 10:45:26 ] >>855 >皆さんテンプレートって何使ってますか? >amrita、tenjinなど違いが良くわかりません 違いがわからないレベルならERBで十分。
878 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 10:54:37 ] 堀北真希と戸田恵梨香の違いが分からないレベルならオナヌーでもしろ(すごい得意げ)
879 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 10:59:37 ] 大地真央と太地喜和子の違いぐらい漏れにだってわかるお
880 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 11:06:52 ] 言われなくてもボクにはプログラミングとオナヌーしかありません
881 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 11:57:54 ] >>803 $ cat $HOME/.irbrc IRB.conf[:PROMPT][:NAGATO_PROMPT] = { :PROMPT_I => "YUKI.N>", :PROMPT_S => " "*7, :PROMPT_C => " "*7, :RETURN => "" }
882 名前:881 mailto:sage [2009/03/30(月) 11:59:05 ] 起動方法書き忘れた。 $ irb --prompt nagato-prompt
883 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 12:02:51 ] >>802 $ irb irb(main):001:0> foo = Object.new => #<Object:0x800e186a8> irb(main):002:0> irb foo irb#1(#<Object:0x800e186a8>):001:0> のように、カッコの中は self を表してる。
884 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 12:08:49 ] 新リファレンスマニュアルにはコマンド一覧がないみたいなので両方見ておくといいと思う。 ttp://doc.loveruby.net/refm/api/view/library/irb ttp://www.ruby-lang.org/ja/man/html/irb.html
885 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 15:37:15 ] 添付ライブラリのrssを使ってRSS2.0データを出力させようと思ってるんですが、 以下のようなタグが出力されてしまいます。 xmlns:content="purl.org/rss/1.0/modules/content/ " xmlns:dc="purl.org/dc/elements/1.1/ " xmlns:itunes="www.itunes.com/dtds/podcast-1.0.dtd " xmlns:trackback="madskills.com/public/xml/rss/module/trackback/ "> itunesとかtrackback関連のタグは出力しないので消したいんですが、 どうすれば消えるでしょうか。 また必須要素であるchannelのdescriptionに半角スペースのみを入れるとエラーになります。 nilも当然だめで、 とやってみたら と親切に変換してくれます。 なにか空のデータにする方法はあるでしょうか。
886 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 15:39:01 ] とやってみたら と親切に変換してくれます ↓ &nbspとやってみたら&amp;&nbspと親切に変換してくれます
887 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 17:38:49 ] >>881-882 thx これでbashのプロンプトを元に戻せる
888 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 19:17:48 ] >>732 数分だけど立ち読みしてきた。 二次元配列はビットマップの処理で出てくる。 いちゃもんがつくことを想定してか「配列の配列」って言い方もしていた。 関数について。puts関数って言い方を注意を促すことなく使っていることは確か。 まずいことに索引を「関数」で引いてもでてこない。 そこでシリーズ一巻目にさかのぼってみると、コラムで 「本書はレシーバを意識しない場合は関数、そうでない場合はメソッドと使い分ける」 (立ち読みしてきただけなので正確な引用ではない)みたいに触れてあった。 二巻だけ読んで当惑する人が中にはいるかもしれない。 たのしいRubyの次にこれ読むのも悪くなさそうな感じ。
889 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 19:56:26 ] >>888 > 「本書はレシーバを意識しない場合は関数、そうでない場合はメソッドと使い分ける」 こういう無意味なルール敷いてモノを書くから、混乱を招くんだよね。 はじめから全部メソッドって呼べばいいじゃん。 そして「メソッドの中には、レシーバーを省略可能なものもある」ことを説明すりゃいいんだよ。
890 名前:デフォルトの名無しさん [2009/03/30(月) 19:59:54 ] >>889 同意。
891 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 20:18:47 ] 実際、関数みたいに使えるからなあ。 関数って書いちゃ駄目って松本教祖に勅命出してもらうか?
892 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 20:25:36 ] リファレンスマニュアルで、「組み込み関数」って堂々と呼んじゃってたぐらい 教祖様みずからお勧めになられているからなぁ
893 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 20:28:09 ] >>892 じゃあ君は今もイテレータと呼んでる? ブロックつきメソッドって呼んでるよね?
894 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 20:33:24 ] >>889 なんで省略できるの?と聞かれたら答えられる?
895 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 20:34:00 ] >>893 …まあ、そういうことなんだろうな Perl移行なんかも意図して関数ありますという呼び方をしたんだと思うけど、 「全部メソッドです」という説明は現状意外と受け入れられてるわけだし、 もう無理して関数と呼ばなくてもいいんじゃないかとは思う 導入記事組の人に通達出せばいいんじゃないかね 解説記事や書籍で使わなくなれば徐々に無くなっていくんじゃないかと思うぞ
896 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 20:52:07 ] >>894 レシーバが省略されていない場合はレシーバオブジェクトから、 省略した場合は呼び出している self のオブジェクトとみなしてそこからメソッドを検索する これはクラス定義構造を見せながらじゃないとわかりにくいな self が省略された場合は知り合いから検索
897 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 21:32:51 ] >>896 知り合いがいないひきこもりの俺はどうすれば?
898 名前:デフォルトの名無しさん [2009/03/30(月) 21:45:28 ] さくらインターネットのスタンダートプランを使用しています。 動かしたいCGIのソースは以下のようなものです。 #!/usr/local/bin/ruby print "Content-Type: text/html; charset=utf-8\n\n"; print "aaa"; ENV['GEM_HOME'] = "/home/User/lib/ruby/gem" ※Userはユーザー名 require 'rubygems' require 'hpricot' require 'open-uri' print "bbb"; doc = Hpricot( open("www.xxx.jp/xxx.html ").read ) print <<EOF <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "www.w3.org/TR (以下略)
899 名前:デフォルトの名無しさん [2009/03/30(月) 21:48:00 ] コマンドラインで実行するとちゃんと動作するのですが、 ブラウザで表示しようとするとaaaしか表示されません。 require 'rubygems' require 'hpricot' の2行をコメントアウトするとbbbも表示されるので、 おそらくgemsが読み込まれてないことは推測できるのですが、 どうすれば直るでしょうか。 いろいろググってみましたが見つかりません。 あっ、ちなみにパーミッションはちゃんと755にしています。 他のスレに書き込んだのですが、よく読んだら質問不可だったのでマルチポストさせていただきました。すいません。
900 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 21:56:49 ] そもそも最初からRubyGemsが入っていないんじゃ?
901 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 21:57:49 ] てかさくらのレンタルサーバのスレで聞けよ あと環境変数はシェルで設定しろ
902 名前:デフォルトの名無しさん [2009/03/30(月) 22:05:01 ] そうそう、さくらのレンタルサーバを借りないと環境を再現できないし レン鯖板で聞くのがベストだと思うよ。 さくらインターネット 質問にマジレスするスレ Part18 pc11.2ch.net/test/read.cgi/hosting/1236253865/
903 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 22:09:04 ] さくらスタンダードはSuExec下で動くから CGI動作時は設定した環境変数がクリアされてるかもしれないぞ 言いたいこと言ったからあとは>>902 で
904 名前:デフォルトの名無しさん [2009/03/30(月) 22:24:53 ] みなさんレスありがとうございます。 >>900 コマンドラインで実行するとちゃんと動作するんです。 >>902 おぉ、そのスレ知りませんでした。ありがとうございます。そちらで訊いてみます。
905 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 22:54:06 ] >>891 Pythonみたいにself強制にすればよいと思います
906 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 00:30:58 ] ruby-talk MLに入ろうと思ってsubscribeのメールを送ったけど、 数日経っても音沙汰なし。webの過去ログは文字化けしてるし。 rubyのMLは今使われてないのですか?
907 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 00:54:17 ] >>906 spamフォルダは見たのか?
908 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 00:57:19 ] ruby-talkは英語だからほぼ化けてないと思うが……
909 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 04:15:59 ] >>906 >>769 , >>772 と同じケースな予感w
910 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 06:51:35 ] デジャヴかとおもた
911 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 10:32:05 ] つかbladeさっさと直せと。
912 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 11:10:57 ] >>911 お金か人員ください ってか、オフィシャルでアーカイブ公開すべきだよな
913 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 11:17:23 ] 検索クエリが来るたびにMLに問い合わせ管理メールを送って取得するWebインタフェースとか作ったら目が醒めてくれるかも
914 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 11:25:33 ] オフィシャル 「お金か人員ください」
915 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 11:36:24 ] ドネーションとか受け付けてないんだっけ?
916 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 11:56:04 ] >>915 ドネーションなんて受け付けてるわけどねーしょん
917 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 12:41:22 ] 日本語でおk
918 名前:デフォルトの名無しさん [2009/03/31(火) 12:48:32 ] 寄付
919 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 12:51:17 ] そっちかいw
920 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 13:47:30 ] ruby 標準の rss だと CDATA が扱えません。 CDATA が扱えるライブラリありませんか?
921 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 13:55:17 ] javascript
922 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 14:15:25 ] >>920 今、まったく同じことを調べてソース見てた。 おまえはおれか?
923 名前:920 mailto:sage [2009/03/31(火) 14:19:05 ] >>922 よう、俺。 CDATA 付加するパッチを紹介したページ見た? 全国の ruby プログラマは、あのページを見て毎回パッチを当てているのかな。 無駄だー。
924 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 14:23:29 ] おれそこまでたどり着いてない・・・ おまえは未来のおれか?
925 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 14:52:50 ] このパッチを適用してくれ、ってredmineに書いたら?
926 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 15:57:47 ] ruby 1.8.6 を Apache 2.2 で CGI として使っています。 エラーメッセージは error.log に書かれますが、 これをブラウザ上に表示させることはできませんか。
927 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 16:49:53 ] >>926 できますが、そんなことをすべきではありません というか、CGIやるより先に学ぶことがたくさんありそうなので、とりあえずCGI作る手を止めてください
928 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 16:54:30 ] エラーというか、Rubyが出す例外は begin エラーが出るかもしれない処理 rescue 例外がマッチするクラス => ex 例外オブジェクト ex の情報で何かする end という構造で捕捉することができる 例外メッセージは HTTPD のエラーログに表示されるが、 権限上読めないという場合は適当な外部ファイルをエラーログファイルにして rescue 〜 end の中で書き込むようにしたりするのがまあ妥当 というか、ブラウザ上でデバッグすんな
929 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 16:54:57 ] >>927 > そんなことをすべきではありません なぜ?開発中の話でしょ? それと、例外をトラップして適切に処理する方法ってのは、アプリを作る上で当然の質問かと。 と、Ruby知らないけど言ってみる。スマートな方法ある?
930 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 17:00:29 ] >>929 普通は、$stderr をファイルに振り分ける Apache のログに書き込まれてもめんどくさいだけだし require 'cgi' $stderr = File.open('cgi_err.txt', 'a+') cgi = CGI.new cgi.out{ raise "error!"}
931 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 17:12:44 ] 例外は rescue するとしても、 開発中の構文エラーはどうしてますか? 全部 rescue に入れてる?
932 名前:929 mailto:sage [2009/03/31(火) 17:13:41 ] >>930 なるほど。 んで、>>928 みたいに全体をbegin 〜 rescue 〜 endで囲って、 デバッグモード中のみ画面出力もするとかできる、のかな? 927ではないけど、ありがとうございます。
933 名前:929 mailto:sage [2009/03/31(火) 17:27:02 ] > 927ではないけど 926ではないけど、でした。
934 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 17:27:55 ] >>932 エラーログ用ファイルがあるときだけ俺用デバッグモードだとみなせばいい $stderr = File.open(errfile 'a+') if FileTest.exist?(errfile='cgi_err.txt') cgierr.txt がない場合は普通に標準エラー出力に例外が表示され(て、ユーザーには 500 InternalServerError だけが表示され)る 時刻がないと嫌だという場合は適当にブロックつければ毎回実行される $stderr = File.open('cgi_err.txt', 'a+'){|f| f.print "#{Time.now}: "; f} 気の利いた CGI サポートライブラリは Logger を組み込めるようになってるはず >>931 それくらい好きにせえ 文法エラーが起こった回数を別途即時メールしなければならないとかそういうのなら分けるべき
935 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 17:30:29 ] PHPと比べると面倒だね
936 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 17:32:34 ] >>935 Apache組込みテンプレートエンジンと比較するのはPHPにむしろ失礼
937 名前:926 mailto:sage [2009/03/31(火) 18:22:39 ] なんかいろいろあるみたいですね。ありがとうございます。 Rails は画面に出ますが、 tDiary を見たら全体を rescue で囲っていました。 真似てみようと思います。 # 確かに PHP と比べると不便かも。
938 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 19:10:35 ] 文法チェックは ruby -c hoge.rb テンプレートが使いたいならerb、その他いろいろ
939 名前:926 mailto:sage [2009/03/31(火) 19:21:16 ] tdiary を参考にエラーハンドラを用意してみました。 HEREDOC の部分を TEST にすると、 Internal Server Error になってしまいます…。 Rails なら画面に can't find string "TEST" anywhere before EOF と出るのですが、同様にブラウザに出すにはどうしたらいいでしょう? RSpec ベースで進めていますが、 Ruby 初心者のためモックコードをよく書いているので、 どうしてもブラウザでデバッグしたいことがあって…。 require 'cgi' cgi = CGI::new print cgi.header print "<pre>" begin print <<HEREDOC # ここを TEST hello HEREDOC rescue SyntaxError rescue Exception puts "<hr>" puts CGI::escapeHTML("#{$!} (#{$!.class})") puts "" puts CGI::escapeHTML($@.join("\n")) end
940 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 19:41:19 ] >>926 ttp://jp.rubyist.net/magazine/?0024-editorkicker > CGI や mod_ruby で EditorKicker を使うには、CGI-Exception も同時にイン > ストールする必要があります。 CGI-Exception は、CGI スクリプトでエラーが > 発生したときに、それをブラウザ画面に表示するツールです。 ちょうど PHP > のようにエラーがブラウザ画面に表示されるため、わざわざ Web サーバのログ > を確認する必要がなくなります*1。
941 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 19:47:00 ] >>939 begin内部を別ファイルにしてrequireすればいけるはず
942 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 20:02:54 ] MLアーカイブを有料にすればいいのかもな。必要ならコスト負担しろと。 金払ってるからメールアドレス収集もおkに成ると痛いが。
943 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 21:28:07 ] cgi.rb使うなら,webサーバで動かす前にコマンドラインで動かしてみたほうがいいと思う
944 名前:926 mailto:sage [2009/03/31(火) 21:59:36 ] いろいろとありがとうございます。 >>941 おお!と思って早速試してみましたが、 画面に Internal Server Error が出ない代わりに、画面が真っ白になるだけでした… HEREDOC を TEST にすると Internal Server Error で、 print "<pre>" の下に xxx とすると画面に出てくれる。不思議。 >>942 なぜか動いていたコードでも Internal Server Error に。 CGI-Exception を外すと動く。 後ほど試してみたいと思います。
945 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 22:07:59 ] >>944 >画面が真っ白 ローカルで、CGIではなくただのスクリプトとして実行すると どういう結果になる?
946 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 22:12:01 ] view sourceしたら何か出てるんじゃないかね
947 名前:926 mailto:sage [2009/03/31(火) 22:41:29 ] >>945 $ ruby -v test.rb ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] (offline mode: enter name=value pairs on standard input) q=test と入れて C-z すると Content-Type: text/html <pre> になり何故かエラーにならないですね。 ログにも残っていないし。
948 名前:926 mailto:sage [2009/03/31(火) 22:42:51 ] 現在は >>941 により begin ... resure 部分を require してます。 require 'cgi' cgi = CGI::new print cgi.header print "<pre>" begin require 'a.rb' rescue SyntaxError rescue Exception puts "<hr>" puts CGI::escapeHTML("#{$!} (#{$!.class})") puts "" puts CGI::escapeHTML($@.join("\n")) end そして a.rb は print <<TEST hello HEREDOC です。
949 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 22:43:58 ] そりゃ真っ白だなw 恐らくこっちの想像してるコードと異なるから、もう一度晒してもらえる?
950 名前:926 mailto:sage [2009/03/31(火) 22:45:25 ] cgi.rb だと print <<TEST hello HEREDOC は Internal Server Error になり、 Apache ログに can't find string "TEST" が記録される。 でも rails なら画面に can't find string "TEST" と出てくれる。 rescue SyntaxError や Exception みたいに、何かあるんですかね・
951 名前:926 mailto:sage [2009/03/31(火) 22:46:38 ] >>949 ソースは >>948 が完全なものです。
952 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 22:49:44 ] >>948 > rescue SyntaxError の行を削除してもっかいやってみ
953 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 22:53:38 ] すまん把握。>>926 と同じ勘違いしてたorz rescue SyntaxError rescue Exception エラー処理 end これは ・SyntaxErrorならなにもしない ・その他のExceptionとその子クラスならエラー処理をする という動作になる。
954 名前:926 mailto:sage [2009/03/31(火) 23:08:48 ] >>952-953 やったー、画面にエラーが出ましたー。 なるほどー。そうでしたか。 遅い時間までありがとうございました。 近くにいるなら回転寿司なら奢るのに!
955 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 01:24:56 ] 携帯プログラム言語KOOL登場 slashdot.jp/developers/09/03/31/1041256.shtml ことまつもとひろゆき氏の新作プログラム言語が4月1日に発表された 携帯電話上でのプログラミングに特化
956 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 01:48:15 ] >>955 この手のネタは本スレでおねがいします
957 名前:!omikuji mailto:sage [2009/04/01(水) 04:38:51 ] おみくじもAFバージョンかな
958 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 04:53:43 ] 4/1だからって別に何かやらなきゃいけないわけじゃないのだが やるならもうちょいおもしろいのを頼みたいな
959 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 05:01:06 ] >>958 を見るまで完璧に騙されていた俺って何なの?www
960 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 05:02:26 ] 海外はWhitespaceみたいに処理系まで書くからなあ やはりそれぐらいの意気込みは必要かもしれん
961 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 09:17:58 ] matsとか まつもと「ひろゆき」とか 判り易すぎ
962 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 09:22:24 ] >>961 わかりにくいほうがいいのか?
963 名前:926 mailto:sage [2009/04/01(水) 09:33:06 ] >>939 >>948 から rescue SyntaxError を取り除き、 begin print <<TEST hello HEREDOC rescue Exception と begin require 'a.rb' rescue Exception では、なぜブラウザにエラーが出る出ないの違いがあるのでしょうか? 違いは require ですが、マニュアルには特に書いていないし。 ttp://www.ruby-lang.org/ja/man/html/_C1C8A4DFB9FEA4DFB4D8BFF4.html#require
964 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 09:41:14 ] >>963 SyntaxError はコンパイル時に出るエラー require 'a.rb' 行を実行する時点で a.rb を読み込んでコンパイルする あと実行部分をrequireで呼ぶのはよろしくない、loadを使え
965 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 11:44:54 ] >>963 そりゃ、rescue部分までヒアドキュメント内だから、例外を補足する処理そのものが 書かれていないことになっちゃってるからじゃね?
966 名前:926 mailto:sage [2009/04/01(水) 11:57:56 ] >>964-965 なるほど。ありがとうございます。
967 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 13:33:37 ] コンパイル時や実行時とかでピンときてないんだろうなあ ふつパイラが早く発売されることを祈る
968 名前:デフォルトの名無しさん [2009/04/01(水) 15:48:41 ] s = '"a b" x y "c d"' ↑の様な文字列を ↓の様に峻別したい。 ["a b", x, y, "c d"] ←「"」は削除してる つまり検索エンジンでの語句の峻別みたいな事がしたいんだけど 自分でコード書いたらちょっと冗長になったので 一番簡潔に書ける方法が知りたいのです。どんな方法がありますか?
969 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 16:09:42 ] >>968 xとyはそういう名前の変数を参照したいの? 本当は"x" "y"という文字列にしたいんじゃないの? とりあえず文字列にしたいのだと仮定すると、 require "shellwords" p Shellwords.shellsplit(s)
970 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 16:24:15 ] >>969 ごめんなさい、そうでした(「"」を付けるの忘れてました)。 >require "shellwords" >p Shellwords.shellsplit(s) こんな便利なものが… まさに目から鱗。 あと、もしそれを自力でやるとするとどう書けますか? 自分は技量不足&知識不足で以下みたいなヘボいコードしか書けません。 p '"a b" x y "c d"'.scan(/"([^"]+)"|\s+([^"\s ]+)| +([^"\s ]+)/).map{|v| v = v.to_s }
971 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 16:43:44 ] >>970 正規表現でやるのは別にへぼいとは思わないけど、>>970 のだと文字列の最初のワード?が ""で囲まれていないとヒットしないね。他にも漏れたりずれたりするかもな怪しさだし。 やるんなら、下記URLでの例とか参考になったりするかも ttp://www.din.or.jp/~ohzaki/perl.htm#CSV2Values こんな感じ?(※ マルチバイト無考慮、無試験・無保証です^^) s.gsub!(/\s*$/, " ") result = s.scan(/("[^"]*(?:""[^"]*)*"|[^ ]*) /).map{|tmp| t = tmp.first; /\A"(.*)"\z/ =~ t ? t.gsub(/\A"(.*)"\z/, $1.gsub(/""/, '"')): t} とくにこだわりがなく、目的に合うのであれば、ライブラリを使うのが賢明かも。
972 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 16:46:23 ] ネストを許すかどうかで違うだろ あとエスケープがあるのかどうかとか
973 名前:sage [2009/04/01(水) 17:28:45 ] >>971 ご丁寧なレス感謝します。 そうですね、出来ればライブラリの方が信頼もあっていいんですが 全角スペースでのsplitが出来ないのと区切りのスペースを連続して入れた時に 一つのスペースで区切ってしまうのがちょっとやなんですよね。 ちょっと自作のコードを修正したのですがどうでしょうか。 一応色々なキーワードを入力して試してみて大丈夫そうだったのですが… イマイチ自分のコードが信用ならないなぁww p s.scan(/"([^"]+)"|[\s ]+([^"\s ]+)|([^"\s ]+)[\s ]+/).map{|v| v = v.to_s }
974 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 17:33:10 ] >>973 つ s = 'a' いきなりアウトっすね。 自作するなら、テスト文字列を(脳みそ振り絞って)山の様に書いて実験するのが吉かと。
975 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 17:55:24 ] >>974 あらら… とりあえず↓の様に修正ww t = s.scan(/"([^"]+)"|[\s ]+([^"\s ]+)|([^"\s ]+)[\s ]+/).map{|v| v = v.to_s } s = (t.size == 0) ? (s.to_a) : (t) そうですね、がんばって色々テストしてみたいと思います。 みなさんありがとうございました。
976 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 18:57:15 ] レンタルサーバで tDiary をインストールして使っています。 改造しようと思って、自宅にも tDiary 2.2.1 を入れました。 画面の表示に数分待たせれ、その挙句 stack level too deep (SystemStackError) が表示されます。環境は Vista Apache/2.0.63 ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32] です。心当たりある人いませんかー?
977 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 19:16:54 ] エスパー待ちw
978 名前:デフォルトの名無しさん [2009/04/01(水) 19:21:27 ] エスパー来たよー
979 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 19:35:30 ] 俺のサイコキネシスではどうにもならんかった
980 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 19:37:19 ] stack level too deep だけ切り出して貼るあたりプロだな。
981 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 19:39:00 ] うむ
982 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 20:07:48 ] >>976 エイプリルフールネタじゃないんだよな? > 改造しようと思って、自宅にも tDiary 2.2.1 を入れました。 改造しようと思って、まだ改造はしてないの? それともインストールは済んで「改造」を始めたらそうなったの? > stack level too deep (SystemStackError) 何が必要な情報で何が不必要な情報なのか、自分で判断できないのなら 一部を切り出すんじゃなくて、全てを貼り付けて。
983 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 20:29:25 ] 曲の頭0.1秒だけ聞いて曲名を当てられる人でないと無理かも エスパーが活躍するわけだ
984 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 21:16:06 ] stack level too deepを全て貼るのはいやがらせじゃないかと 思ったが、1.9は途中省略してくれるんだったかな。
985 名前:976 mailto:sage [2009/04/01(水) 21:24:19 ] ありゃ、エスパー募集になってしまった。ごめん。 出たメッセージは下記です。 stack level too deep (SystemStackError) C:/home/foo/public_html/tdiary/tdiary.rb:524:in `method_missing' C:/home/foo/public_html/tdiary/tdiary.rb:105:in `join' C:/home/foo/public_html/tdiary/tdiary.rb:105:in `safe' C:/home/foo/public_html/tdiary/tdiary.rb:635:in `load_cgi_conf' (tdiary.conf):250:in `load' C:/home/foo/public_html/tdiary/tdiary.rb:548:in `load' C:/home/foo/public_html/tdiary/tdiary.rb:466:in `initialize' C:/home/foo/public_html/tdiary/index.rb:21:in `new' C:/home/foo/public_html/tdiary/index.rb:21 まだ改造してないです。ダウンロードして解凍して index.rb の一行目の #!/usr/bin/env ruby を #!/usr/bin/ruby に変えたのと、tdiary.conf.beginner を tdiary.conf に改名して @data_path を変えただけです。
986 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 01:42:45 ] ここからがエスパーの本領発揮か というかソース読まなきゃまずわからんわな 作者もしくは奇特な人があらわれるのを気長に待って見ればいいさ
987 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 01:52:42 ] tDiaryは全く知らんが、変更したというtdiary.confの250行目が問題なんじゃないのか? (tdiary.conf):250:in `load' って出てるじゃん
988 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 02:37:58 ] * tdiary.conf.beginner の 250行目は load_cgi_conf の呼び出し * load_cgi_conf は @data_path/tdiary.conf を読む ってことで、インストールトップディレクトリに置くはずの tdiary.conf を @data_path 下にも置いてしまっていて無限ループしてるんじゃないかと思われる。 tDiary はサッパリだけど、たぶん doc/INSTALL.html あたりの話からして、これは ブラウザのインターフェイスで設定された項目を保存するのに tDiary が自分で作るんじゃね? ユーザが設置するものではない気がする。
989 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 06:50:18 ] おまいら優しいなあ 漏れもtDiary使ってたけど tdiary.confを@data_pathに設置した記憶はないね・・・
990 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 07:19:20 ] 次スレ立てれ
991 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 08:31:52 ] 了解
992 名前:976 mailto:sage [2009/04/02(木) 09:27:45 ] >>988 その通りでした。ありがとうございました。
993 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 09:34:07 ] エスパーすげえw
994 名前:デフォルトの名無しさん [2009/04/02(木) 09:47:25 ] はじめて、、、スレ立てちゃいました >< Ruby 初心者スレッド Part 27 pc12.2ch.net/test/read.cgi/tech/1238632943/
995 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 10:12:17 ] エスパーおつ このテキーラは私のオゴリだ ∧_∧ (`・ω・) シュッ (つ と彡 / / / /// / /旦 / ツツー / / / / ∧_∧ / / ⊂('・ω・`) / / ヽ ⊂ ) / / (⌒) |///// / 三 / 旦 / | ̄ ̄ ̄ ̄| | | | | / _ / | ̄ ̄V ̄| ≡〃/∇ ∧_∧゙、旦 | ≡"⊂~⌒⊃`・ω・)⊃ | >>994 もおつ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
996 名前:デフォルトの名無しさん [2009/04/02(木) 12:43:26 ] 英語のエラーメッセージで 「not found, ignored.」 のような、かなりシンプルな構文で書かれることがありますが、これを英文法 上の用語でなんと言いますか? また、これについて勉強できる書籍(など)があれば教えてください。
997 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 12:59:15 ] >>996 次スレでどーぞ pc12.2ch.net/test/read.cgi/tech/1238632943/ もう埋めますよー
998 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 13:00:43 ] 言語習得のコツは「受け入れる」こと。 日本語を自由に使いこなす日本人でも、 自分の使ってる言葉を文法的にきちんと説明できるかといえば、 できる方が少数派だろう。 「not found」でも「ignored」でも、 向こうの人間がそう使ってるんだからそのまま受け入れるのがいい。 じゃないと時間の無駄になるぞい。 たぶん過去分詞なんだろうが。
999 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 13:05:22 ] コメントやエラーメッセージでは、文脈上あきらかなことは省け 文法を気にしてダラダラ長く書くのはよろしくない 的な主張をどこかで読んだ記憶があるが思い出せない ウメス
1000 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 13:05:42 ] というわけで、>>996 の続きはENGLISH板なんかではどでしょー (ENGLISH板) スレッド立てるまでもない質問スレッド part202 academy6.2ch.net/test/read.cgi/english/1238462024/ うめ
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。