1 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 00:26:33 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 【Ruby1.9 は不安定な開発版であり初心者には全く向きません】 【最新安定版の Ruby1.8.6 の使用を強くお勧めします】 関連スレやURLは>>2-8 あたりを見てください。Ruby on Railsの質問はRailsスレへ。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・モジュール名やエラーメッセージでググる ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/ ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(自力で訳さずなるべくそのままで) ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる)) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって初心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
2 名前:デフォルトの名無しさん [2008/04/14(月) 00:26:55 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 【Ruby1.9 は不安定な開発版であり初心者には全く向きません】 【最新安定版の Ruby1.8.6 の使用を強くお勧めします】 関連スレやURLは>>2-8 あたりを見てください。Ruby on Railsの質問はRailsスレへ。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・モジュール名やエラーメッセージでググる ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/ ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(自力で訳さずなるべくそのままで) ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる)) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって初心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
3 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 00:27:09 ] 【よくあるしつもん】 Q: いちからRubyを始める初心者向けのRuby入門書は何がおすすめでしょうか? A: プログラム作成の初心者だったら 「たのしいRuby 第2版 Rubyではじめる気軽なプログラミング」 www.amazon.co.jp/dp/4797336617/ 他の言語経験があるんだったら 「プログラミングRuby 第2版 言語編」 www.amazon.co.jp/dp/4274066428/
4 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 00:29:25 ] ■前スレ Ruby 初心者スレッド Part 18 pc11.2ch.net/test/read.cgi/tech/1203658291/ ■関連スレ Rubyについて Part 31 pc11.2ch.net/test/read.cgi/tech/1204466626/ Rubyの宿題教えてください。 pc11.2ch.net/test/read.cgi/tech/1106572657/ pc11.2ch.net/test/read.cgi/tech/1200175247/ 【ActiveScript】RubyをWindowsで使うスレ【GUI】 pc11.2ch.net/test/read.cgi/tech/1155031689/ Ruby on Rails pc11.2ch.net/test/read.cgi/tech/1191381506/ Rubyについて(アンチ専用) Part003 pc11.2ch.net/test/read.cgi/tech/1207233348/
5 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 00:30:31 ] ■公式/非公式関連リンク Ruby Home Page www.ruby-lang.org/ja/ Rubyリファレンス(よくサーバーエラーになります) www.ruby-lang.org/ja/man/ www.ruby-doc.org/ (英語) リファレンスのHTMLヘルプ版配布 elbereth-hp.hp.infoseek.co.jp/ruby.html # Windowsで便利 Ruby FAQ ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ Programming Ruby - The Pragmatic Programmer's Guide www.ruby-doc.org/docs/ProgrammingRuby/ # 好評書籍をWebで公開中、ただし英語 逆引きRuby www.namaraii.com/rubytips/
6 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 00:31:02 ] RAA - Ruby Application Archive raa.ruby-lang.org/ RubyForge www.rubyforge.org/ # Rubyのアプリやライブラリが検索できる 日本Rubyの会 公式Wiki jp.rubyist.net/ # メニューに表示されていない埋もれた情報ページ多数 Rubyist Magazine - るびま jp.rubyist.net/magazine/ # コードレビューが好評 Ruby hotlinks 五月雨版(日記やblogのアンテナ) www.rubyist.net/~kazu/samidare/ Rubyの本一覧 www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Ruby%A4%CB%B4%D8%A4%B9%A4%EB%BD%F1%C0%D2 <rubyXML/> www.rubyxml.com/ Matzにっき(Ruby作者の日記) www.rubyist.net/~matz/
7 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 00:39:18 ] 乙乙
8 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 00:41:13 ] Otz
9 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 00:42:26 ] ■最近できたWiki Ruby 初心者スレッド Hiki starlet.s145.xrea.com/ruby/hiki/ Ruby Portal ruby.morphball.net/portal/
10 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 00:44:07 ] これでテンプレ全部。 >>1 と>>2 が恐ろしいほど瓜二つなのはるびま添削本の呪い。
11 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 11:47:16 ] 文字列リテラルの説明で > 空白を間に挟んだ文字列リテラルは、コンパイル時に1つの文字列リテラルと見倣されます。 とあったので C の文字列の要領で print("foo" "bar") とやったら syntax error になってしまいました。 この場合の「空白」には改行などは含まれていないということだと思いますが、 これって何でなんでしょうか? 改行も仲間に入れてあげても別にバチは当たらないと思うのですが。
12 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 11:59:18 ] >>11 それは実装に対する苦言?それとも、どうやったらいいか聞いてる? 前者なら、Rubyの本スレで言ってほしい。 後者なら、 print("foo" + "bar") でOK
13 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 12:01:39 ] というか、そもそもの問題としてそれに頼ったコードは書かないで欲しい 明示的に連結しとけ
14 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 12:21:11 ] 改行があるなら \ でエスケープするのが常道 print 'foo' \ 'bar' \ 'baz' print 限定で出力フィールドセパレータの $, 依存だが コンマで区切っても単純に連結されたような見掛けで出力される print 'foo', 'bar', 'baz'
15 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 12:51:58 ] >>11 えー、それだと逆にめんどくさいじゃん def gethoge @str = 'foo' 'hoge' end って書いたら @str も gethoge の返り値も foohoge になるぞ
16 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 16:07:57 ] >>12 >>14 質問が悪くてすみません、 folding して書きたいというのではなくて、 「前者」で経緯というか理由が知りたかったです。 ので改めて本スレで聞いてみます。 >>13 頼ると何かまずいですかね? >>15 私の print の例の方は、括弧で括ってるのでちょっと違うような気がします。 と思って試してみたら、 def gethoge @str = ('foo' 'hoge') end これだと gethoge の返り値は "hoge" になるんですね。 うーむ。
17 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 16:57:13 ] いや、() の有無なんて関係ない 要望は「改行を挟んだ2つの文字リテラルは連結されて解釈されて欲しい」ということだろ そもそもの前提だって 「空白を挟んだ(あるいは挟まない)2つの文字リテラルは連結されて解釈される」 ということだ irb> 'a' 'b' "ab" irb> 'a''b' "ab" irb> eval("'a'\t'b'") "ab" あと、その gethoge の () は2つの式がグルーピングされてるだけだ 機械的に最後の式の 'hoge' が評価されてるだけに過ぎない def gethoge @str = ('foo'; 'hoge') end と全く同じこと
18 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 17:01:31 ] 改行で式が繋がるのは上の方に書いてある通りで、リテラルはその対象じゃないと 括弧の有無だけでは、中の式までは面倒みませんってことかな
19 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 17:07:37 ] いや、コンパイル時にどう扱われるかだけの問題だから… 'a' 'b' 'c' と書いてあったなら、それは 'abc' と書いてあるものとみなされて String オブジェクトになる
20 名前:11 mailto:sage [2008/04/14(月) 17:29:05 ] うーん、どうも私がリファレンスマニュアルを読み違えてるだけな気がしてきました。 「字句構造」のところには > 空白文字とはスペース、タブ、垂直タブ、バックスペース、キャリッジリターン、 > ラインフィード、改ページです。 とありますが、以降の記述では、 「空白」「空白文字」が文脈によって改行を含んだり含まなかったりするんですね。 読解力が無くてすみません。
21 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 17:38:20 ] そのあとに改行についての記述があるだろ Rubyにおける空白文字は改行を「含まない」 空白文字の中でホワイトスペースの代わりに使うと動作が変わるものが入ってなくもない気はするが(LFは怪しい) とりあえず、基本的に「改行は空白文字ではない」
22 名前:11 mailto:sage [2008/04/14(月) 17:57:39 ] なるほど。 どうやら私の誤解はその改行についての記述の中の 「行が明らかに次の行に継続する時」の認識間違いから来ているようです。 print('hoge' 'fuga') は、私には「行が明らかに次の行に継続」しているように見えていたのですが、 >>17 で指摘いただいたように、括弧には行を継続するような機能は無かったと。 わかりました。
23 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 18:05:30 ] 行末にあるものが、文末になりえない演算子とかなら、って意味ですねそれはだいたい
24 名前:11 mailto:sage [2008/04/14(月) 18:08:54 ] ああなるほど、 >>12 , >>14 の例なんかはまさにそうですね。
25 名前:デフォルトの名無しさん [2008/04/14(月) 21:54:40 ] クラスの中で必要とする他パッケージはどこでrequireするのがいいですか? 使う直前、コンストラクタ内、クラス定義の外など 考えられるかと思いますが
26 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:13:36 ] 基本は「最初のファイル」の先頭だと思われる #!/usr/bin/ruby -Ku require 'open-uri' require 'kconv' require 'myapplib/config.rb' require 'myapplib/myapp.rb' require 'myapplib/parser.rb' require 'myapplib/rss.rb' MyApp.new.run こんな感じ 「require するだけで大量のファイルが読み込まれて処理が一瞬止まる」とか 「エラーが起きたときのような時しか使わないライブラリ」 のような場合は、メソッドの中で require することはある その場合もソースファイルの先頭のどこかにコメントとして書いておくと親切
27 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:21:18 ] なるほど 必要なパッケージを明示するということですね ありがとうございました
28 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:25:53 ] autoloadっつー便利なものもあるぜ
29 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:30:11 ] autoload は概念は便利だが実際には注意深く使わないといけないので微妙に面倒
30 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:35:24 ] 指定されたファイルに存在する全てのファイルのクラスとモジュールを精査して 自動で全てを autoload する auto_require というのを作ってみるというのはどうだろう
31 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:38:16 ] >>30 requireするファイル名とクラス名に一定のルールを課すならできなくもない。 ActiveSupportにあるね。
32 名前:デフォルトの名無しさん [2008/04/14(月) 22:47:17 ] Rubyには名前付き引数はないみたいですが どう実現するのがスマートでしょうか?
33 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:49:05 ] def moge(x, y, options={}) ... end のように最後に省略可能なハッシュを引数にとるようにし、 呼び出すときは moge(100, 200, :foo => 0, :bar => 1) のようにシンボルを使う。 1.9だとこれを foo(100, 200, foo: 0, bar: 1) とも書ける。 fooの定義ではoptions[:foo]などとして参照する。
34 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:50:11 ] fooじゃないmogeの定義
35 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 23:09:00 ] >>33 ありがとうございます わりと自然な形で書けるんですね
36 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 23:22:49 ] 言うほど自然でもないようにも思う まあ、RoR以外のRubyではそれほど一般的ではない あまり使わず紛らわしいオプションをユーザーに記述させたいときとかだな
37 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 23:48:00 ] なんか馬鹿ばっかだな ソース読んでる?MLとか見てる?
38 名前:デフォルトの名無しさん [2008/04/15(火) 00:03:32 ] オブジェクトの中から、自分のクラス名を取得するにはどうしたらいいですか?
39 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:16:34 ] >>38 obj.class
40 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:17:06 ] self.class.to_s
41 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:20:32 ] self.class.name
42 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:30:58 ] >>36 RoR系統儀とgems系統を引いたら現状のRubyはほとんど残らんと思う どっちかに依存してると思うぞ 添付ライブラリだけの「ぴゅあ」なRubyでスクリプト作ってる人はそう多くないはず
43 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:42:13 ] >>42 んなわきゃない
44 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:48:36 ] 「blank?が公式に載ってないのでおかしいと思ったらこれActiveSupportなのね」 という内容のブログの投稿が普通にある時代だからなあ
45 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 09:32:30 ] >>32 どちらかといえば、名前付き引数を使わないのが一番スマート 引数が複雑になりそうならこういうやり方もある Foo.new(x, y) do |foo| foo.target = './dest/' foo.index = 10 end この方法の利点は Fooに存在しない名前のパラメータを設定しようとしたとき、即座にエラーを出してくれること >>36 ハッシュで名前付き引数を渡すのは、RoR以前から広まってたぞ
46 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 11:49:20 ] RoRな人たちに多用というか乱用されてる感はなくもないな
47 名前:11 mailto:sage [2008/04/15(火) 13:29:46 ] なんかタイムリーな話題が ruby-dev に出ちゃっているようなのですが、 件の改行の制限は、設計方針的なものというよりも、 yacc (というか LALR(1) ?) の制限によるものなんでしょうかね。 これで私が当初からもやもやしていた疑問が大体解けた気がします。
48 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 13:35:12 ] 「それだと正確にパースするのめんどいから」というのに類する問題っぽいのは かなり自明だと思ってたんだがそうでもないんか
49 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 13:49:18 ] 質問。MechanizeでWikipediaからページを取ってくるとハングアップしませんか? agent.get('ja.wikipedia.org/wiki/%E3%81%BE%E3%81%A4%E3%82%82%E3%81%A8%E3%82%86%E3%81%8D%E3%81%B2%E3%82%8D ')
50 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 13:58:39 ] >>49 それFAQ。ていうか「Mechanize Wikipedia」で検索くらいしろ。 あと、ハングアップではなくサーバへのアクセスの無限ループなので試すな。迷惑だから。 引数をURIオブジェクトにすると一応動作するが、それだけではURLエンコードされたリンクはたどれない。 RubyのMechanizeではパーセントつきURL文字列を処理できない ttp://d.hatena.ne.jp/kitamomonga/20080410/ruby_mechanize_percent_url_bug ここではto_absolute_uriを動的に書き換えろって言ってるな。
51 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:16:01 ] >>50 要はバグなんですね agent.get(URI.parse('ja.wikipedia.org/wiki/%E3%81%BE%E3%81%A4%E3%82%82%E3%81%A8%E3%82%86%E3%81%8D%E3%81%B2%E3%82%8D ')) なら動作しました
52 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 17:13:37 ] 拡張モジュールをデバッグするために、-g をつけてコンパイル したんですけど、Ruby 本体も -g をつけてコンパイルしなきゃ いけませんか。 初心者でごめん。
53 名前:11 mailto:sage [2008/04/15(火) 17:51:13 ] >>48 一連のレスの中でそう指摘してくださったのは >>48 さんが初めてだと思いますので、 自明というわけでもないのではないでしょうか?
54 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 18:08:51 ] 当たり前のことは誰も説明しない、というそれだけの話かもしれない。
55 名前:11 mailto:sage [2008/04/15(火) 18:20:04 ] うーん、当り前の話でしたか・・・ まああまりこれ以上引っ張るネタでもなさそうですし、 私も今は、世界のナベアツ Golf の方に興味が行っていますので、このへんで。
56 名前:デフォルトの名無しさん [2008/04/15(火) 19:27:40 ] 指定したハッシュのキーがあればその値、 なければ指定した値を取り出すための もっとも短い書き方を教えてください 今は hoge = moge.has_key?(key_name) ? moge[key_name]:default_value と書いていますがmogeとkey_nameが重複していて気になります
57 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 19:31:57 ] hoge = moge[key_name]||default_value とか?値が nil にも対応しないといけないんだとダメだけど。
58 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 19:34:05 ] hoge = moge.fetch(key_name, default_value )
59 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 19:36:21 ] h = Hash.new(default_value) じゃだめかな
60 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 20:05:37 ] >>57-59 ありがとうございました fetchがそのためのものですね
61 名前:デフォルトの名無しさん [2008/04/15(火) 22:09:41 ] Rubyの流儀ではファイルとクラスの関係はどうですか? 他言語では一ファイル一クラスが多いようですが
62 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:34:36 ] >>52 拡張ライブラリだけ-gついてりゃ大丈夫 デバッグ情報付きのrubyがあればあったでいいとは思うけど
63 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:44:52 ] >>61 てきとう RoRの流儀は知らない
64 名前:デフォルトの名無しさん [2008/04/15(火) 23:40:04 ] コンストラクタでsyslogを開いてログを取ってるのですが デストラクタがないためcloseする場所がないです。 どうするのがペターでしょうか?
65 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:48:20 ] 明示的にcloseを外にさらけ出すとか、 ブロック構文にしてyieldからもどってきたらcloseするとか、 define_finalizerしといて適切にGC.Collectしてねと言い捨てるか。
66 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:48:28 ] >>62 さんくす
67 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:36:00 ] >>65 ありがとうございます define_finalizerってやつ使うか…と思っていたのですが syslogは複数ハンドルオープンできないんですね コンストラクタで開いて開きっぱなしにする方法がそもそもマズいのでは と思い直し 書く時だけオープンしてすぐ閉じるようにしました
68 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 01:16:29 ] www.kuwata-lab.com/rubyflow-ja/
69 名前:デフォルトの名無しさん [2008/04/16(水) 03:16:58 ] 正規表現を使ったディレクトリの再帰コピーってどうしたらいいですか? Dir.globはワイルドカードしか使えないので困ってます
70 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 04:04:40 ] 再帰関数作ればいい。
71 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 07:02:43 ] Dir.glob("**/*")の戻り配列をgrepして処理すれば。 あ、再帰じゃねーや(w
72 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 07:56:03 ] >>69 1. FileUtils.cp_r を参考にする 2. Find.find {|path| do_somthing_with(path)} 3. Dir.open {|dir| dir.each {|entry| do_somthig_with(entry)}} ……こんなもん?
73 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 14:45:54 ] 0001.gif 0002.gif を 179.gif 180.gif に変換したいのですが。。 ぐぐって参考にしたのですがあってますか? require 'fileutils' $name = ARGV.shift $ext = ".gif" i = 0 ARGV.each do |file| i = i + 179 $newname = $name + sprintf("&03d", i) + $ext print "renaming " + file + " ---> " print $newname + "\n" FileUtils.mv(file, $newname) end
74 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 15:05:41 ] >>73 require 'fileutils' ARGV.each do |before| # 0001.gif から拡張子 .gif を取り出す ext = File.extname(before) # 0001.gif からディレクトリ名を取り出す(無いので ./) dirname = File.dirname(before) # 0001.gif から拡張子抜きファイル名 0001 を取り出す basename = File.basename(before,ext) # 0001という文字列を数字にして178を足して0詰め数字3文字に after_basename = sprintf("%03d", basename.to_i + 178) # ディレクトリ名+数字3文字+拡張子 というファイル名に合成 after = File.join(dirname, after_basename + ext) # リネームしまーす puts "renaming: #{before} -> #{after}" FileUtils.mv(before, after) end # 実行結果 ~$ ruby rename.rb 0001.gif 0002.gif renaming: 0001.gif -> ./179.gif renaming: 0002.gif -> ./180.gif
75 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 15:15:53 ] で、 # 0001という文字列を数字にして178を足して0詰め数字3文字に after_basename = sprintf("%03d", basename.to_i + 178) のとこだけど、178を足してる時点で数字3文字になることはほぼ確定なんで、イマイチよくわからん もし、0900.gif が 1078.gif にリネームされてもOKなのなら、単に after_basename = (basename.to_i + 178).to_s とでもしてくれ >>74 のままでも4桁動くから使用上は問題ないけどな あと、フルパスや相対パスを引数にしてもそのディレクトリでリネームされるのでよろしく
76 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 15:23:52 ] ありがとう>< 0001.gifから0200.gifまでとかだと どうするとよいですか!? 0詰めは、100以下のときだけですね^^;
77 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 15:30:19 ] 適切なファイル名を200個作って引数を200個渡す 以上 どこにどんなファイルがあるか知らんのでこれ以上はどうにもならん 汎用的な条件つけて頼めばもう一回くらいは誰か作ってくれるかも 引数として指定されたディレクトリのファイルを全てリネームするとか
78 名前:デフォルトの名無しさん [2008/04/16(水) 20:46:32 ] シェル呼び出しの時間を計るにはどうしたらいいですか? Benchmark.measure { `sleep 10` } これだと何故か実行時間が0になってしまうのです
79 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 21:55:08 ] その間自プロセスはwaitしてるだけだから時間が掛かってないってことだよね。 tms = Benchmark.measure { `sleep 10` } tms.real #=> 10.0072751045227 あと、``は結果を文字列で得たいときに使うものだから、system 'sleep 10' のほうが行儀がよいと思う。
80 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 21:59:04 ] ていうか irb> Benchmark.measure { `sleep 10` } #<Benchmark::Tms:0x401fae88 @utime=0.0, @cstime=0.0, @total=0.01, @cutime=0.01, @label="", @stime=0.0, @real=10.0146338939667> これは妥当だと思うんだけど というか user time や system time の違いってわかってもらえてるのかな
81 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 22:15:13 ] 「たぶんtotalだけみとけばいいんだな」くらいの理解だと思われる。
82 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 22:33:13 ] >>76 ruby 連番 rename あたりでググると吉。
83 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 02:45:11 ] >>50 初めて見たんだがそれ有名なのか?
84 名前:デフォルトの名無しさん [2008/04/17(木) 05:28:30 ] Rubyってタイプヒンティングやインターフェイスがないですが 引数にある型のオブジェクトが欲しい場合、 どうするのが普通ですか?
85 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 07:11:30 ] >>84 お好きなのをどうぞ * ダックタイピングを実践する * 自分で引数を解析し例外送出などの処理を記述する * Sapphireがリリースされるのを待つ * いつかrubyに実装されるのを待つ * PHPを使い続ける
86 名前:デフォルトの名無しさん [2008/04/17(木) 07:26:32 ] プログラミングRubyのダックタイピングの項を読み直してみました ダックタイピングというのは 引数リストでフィルタせず、メソッドがあるものと前提して呼び出し、 ないときには発生する例外によってコーディングの間違いを知る といったスタイルですね 基本ダックタイピングで、 厳格にしたいケースではメソッドの有無をたしかめる といったあたりが現実的なところでしょうか・・
87 名前:デフォルトの名無しさん [2008/04/17(木) 07:46:22 ] テンプレートメソッドを 継承でするか、mixinでするかの判断基準は 何でしょうか?
88 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 10:24:10 ] >>83 試してみるといい まあ、Mechanizeしたいと考えるようなページなんて大体決まってるってことなんだろうな 引っかからない人は全く引っかからないバグだ、これ
89 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 10:32:00 ] >>87 勘 いやマジで どっちも「使ったから便利明快になる」というものではない (サンプルコードでは明快だけどな) 継承を試してわけわかめだったらmix-in用に思考を切り替えるのが一般的かもしれん
90 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 10:42:07 ] >>87 テンプレートメソッドパターンとかはまず置いといて、継承が妥当か否かだったら こんなんがあるな。 jp.rubyist.net/magazine/?0015-CodeReview#l11 Mixinとか委譲のおかげでRubyでは比較的あんまり継承しない気がするのは俺だけ?
91 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 11:00:55 ] どんだけ注意深く作る(作らなければならない)かの話だな private を書くかどうかに似た話
92 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 15:31:03 ] privateとか何のためにあんの? 使わないメソッドなんて使わないんじゃね?
93 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 15:39:49 ] >>92 うん、まあ、君の感覚はある意味正しい ある一定規模未満の素朴なプログラムでは単にめんどくさいだけとも言える 「グローバル変数が危険とか言うけど変数の場所とか名前とか被らないようにしておけば問題なくね?」 という問題と根っこは一緒だ
94 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 17:15:17 ] >>77 *.gifとかならできそうですかね。ありがとうございました!
95 名前:デフォルトの名無しさん [2008/04/17(木) 17:18:11 ] 引数を()で囲まない Class.method arg という書き方をした時に、 「この書き方は今後のRubyではサポートしない可能性がある」というような 警告が出る時と出ない時がありますが これはどういう時に出るのですか?
96 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 17:29:31 ] >>95 ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/17868 > 具体的には > 引数として与えるメソッド呼び出しの括弧を省略しない > ということです。文法的に値と文の区別をはっきりさせようという > 思いです。 っていうか関数型メソッド以外ではカッコ省略する必要ないじゃんという気はする あとRiteって今で言うところのRuby2.0のことね
97 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 18:25:10 ] >>96 ありがとうございます マッツの設計思想はわかりますが 引数が一つの時は()書きたくないですね この警告抑制したりできるのでしょうか
98 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 18:27:43 ] ruby -W1 hoge.rb もしかしたら W0 でないとダメかもしれん
99 名前:デフォルトの名無しさん [2008/04/17(木) 18:54:52 ] eachのブロックの中からループのカウント数を知る方法があれば教えて下さい。
100 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 18:57:08 ] つ each_with_index
101 名前:デフォルトの名無しさん [2008/04/17(木) 19:05:36 ] 数値をゼロパディングする方法は printf("%010",NUM) 以外にないですか?
102 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 19:12:44 ] number.to_s.rjust(width, "0")
103 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 19:19:02 ] >>100 こんな便利なものが ありがとうございました
104 名前:デフォルトの名無しさん [2008/04/17(木) 20:24:07 ] 文法的なエラー、 たとえばendが足りなかったりすると ファイルの最後の行を指示してエラーが出たりします。 変更箇所が多かった場合、どこで間違えたか分かりにくいです。 どこで間違えているかすぐにわかる方法があれば教えて下さい。
105 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 20:51:58 ] ruby/sdlをつかってプログラムを作ろうと思っているのですが 常に最前面に表示し続けることは可能でしょうか?
106 名前:デフォルトの名無しさん [2008/04/17(木) 21:02:48 ] >>102 ありがとう神様
107 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 21:10:49 ] >>104 ブロックの開始と終了の知識を確実にした上で、 ブロックをインデントしてくれるエディタを使う インデントが大きくなるべきでないところで大きくなってるところがあれば そこが閉じ忘れ 同様に "" や '' や () の対応を表示してくれる(色分けしてくれる)エディタを使うと 多くの場合「閉じ忘れ」がすぐ見つかるというか閉じ忘れることがない あと ruby -c ./hoge.rb とすると文法チェックだけをしてくれる 自信ないなら中規模な変更ごとにチェックしてもらうといい
108 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 21:24:31 ] >>105 たぶん不可能 ちなみにRuby/SDLの話なら、ゲーム制作スレの方がいい pc11.2ch.net/test/read.cgi/gamedev/1207069887/
109 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 22:12:21 ] >>107 エディタのインデントは完全ではないから、ちょっと複雑になるとあてにならないよ。 Rubyの文法は複雑だから、エディタごときが完全にパースできるわけではない。 だからエディタに任せてもendの閉じ忘れは検出できないことがよくある
110 名前:デフォルトの名無しさん [2008/04/17(木) 22:15:27 ] >>104 ・classやmoduleの閉じ忘れ 最初に書け。 ・defとかその中のifとかの閉じ忘れ メソッドでけぇ。 対処法にあんまなってないけど考え方としてはこんな感じかなぁ。
111 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 22:16:11 ] >>109 出たな100パーセント厨 口癖は「それは完全ではない」 90パーセントの達成度の価値を認めない人間だ
112 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 22:27:51 ] 90パーセントかどうかはともかく、8割くらいはエディタの自動インデントで見つかるよな エディタとして何を使ってるかとRuby編集モードの出来に依存するのが難点か Emacsのruby-modeはわりと優秀
113 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 23:31:12 ] >>104 www.logic-junction.com/products/rubyend.html patch をあてなきゃだからちょっと敷居は高いけど。
114 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 01:10:16 ] >>113 これよくないですか? なんで本体に取り込まれないんだろう
115 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 01:59:32 ] parse.yをいじるからじゃないの。 Ruby2.0あたりではyacc捨てたいねえとか言う話もあったんじゃなかったっけ。
116 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 02:09:29 ] >>113 どうでもいいが、ページの上にある「Abount」に吹いた。
117 名前:デフォルトの名無しさん [2008/04/18(金) 02:43:58 ] プログラミングRubyに ブロックの記述は、一行の場合は{} 二行以上の場合はdo〜endを使うのが Rubyコミュニティーのコンセンサスだと書いてありましたが ブロックは複数行になる場合も{}の方が視認性よくないですか? すべてendだと、何を閉じるものなのか、頭を見ないと分かりませんが、 {}だと、閉じカッコを見るだけで 何を閉じているのかがだいたい推測つきますし。 endにする合理的理由ってあるのでしょうか?
118 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 02:56:59 ] 主観的な問題
119 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 03:06:49 ] ・whileやifとの統一性 ・だいたいソースは上から読む>何を閉じるものなのか、頭を見ないと分かりません ・Hashリテラルだって}で閉じるし、%{...}文字列リテラルなんかもある でも結局は>>118 か。
120 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 04:50:55 ] end地獄が大嫌いだからdo〜endなんか絶対に使わない
121 名前:デフォルトの名無しさん [2008/04/18(金) 06:09:35 ] ってか、 そもそもなんでendなの? 文と紛らわしいしタイプも面倒くさい。 Rubyの最大の欠点がend。
122 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 06:48:00 ] }地獄が大嫌いだから(複数行で){}なんか絶対に使わない >>121 主観的な問題
123 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 06:56:24 ] 主観で片付けるのはおかしいよ 文と紛らわしいのも、タイプ数が多いのも 定量的な問題じゃん 理性的な判断を下せる範疇にあるはずだよ
124 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 07:49:21 ] end end end end end end
125 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 07:52:02 ] 主観的な問題でないのなら なぜ「do〜end超読みやすい! すっきりする」って人と 「do〜end読みにくい上に紛らわしすぎ」って人とに分かれるんだ
126 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 08:04:48 ] だって引数の記述と通常の文との違いを明確にしたいmatzだよ その認識の延長線上には、文と紛らわしいendの否定があるはずなんだよ endをすぐに完全に廃止しろとは言わない 試しに{}も許容するようにしたらいいんだよ コストはそんなに高くないだろう その小さな変化は きっと世界中の開発者に歓迎されると思うよ。
127 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 08:07:12 ] ・yaccの能力で、beginとcaseの文法が上手く纏められなかった ・endを使うとruby-mode.elが書けそうだった こんな理由じゃなかったっけ。 ifやwhileのこと? >試しに{}も許容するようにしたらいいんだよ
128 名前:デフォルトの名無しさん [2008/04/18(金) 09:04:24 ] endでいいと思うけど、emacsとかで 対応するclass,def,if,forにジャンプする 機能って無いですよね?
129 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 09:16:27 ] >>128 あるなら俺も使いたい。 {} の方ならこれでジャンプできるけどな。 ttp://www.bookshelf.jp/soft/meadow_42.html#SEC635 ;; By an unknown contributor (defun match-paren (arg) "Go to the matching paren if on a paren; otherwise insert %." (interactive "p") (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1)) ((looking-at "\\s\)") (forward-char 1) (backward-list 1)) (t (self-insert-command (or arg 1))))) (global-set-key "%" 'go-to-paren)
130 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 09:43:04 ] M-x ruby-beginning-of-block
131 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 09:44:51 ] あ、>>130 は「このブロックの最初」にカーソルを移動な カーソル移動がめどいという場合には妥当な機能
132 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 09:55:22 ] ああ、キー操作あった C-M-p ちなみに {} のブロックでも有効 ただ、厳密には「インデントつける」計算上のブロックの最初に移動する だから、 File.open('hoge.txt'){|f| f.puts data } の場合は { ではなく File の F に移動する File.open('hoge.txt'){|f| f.puts data } の場合は検知できなくて、「ひとつ上」のブロックの最初に移動する
133 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 11:06:13 ] end は予約語だから、Rubyスクリプトを読んでるという頭の中では何かと間違えることはないなあ (むしろ bashスクリプトで doneではなく endと書いて動作不良に首を傾げる) 慣れと主観っちゃそのとおりだがそれはそれで台無しな意見だ(w 素直に着色なエディタを使うというのはどうだろう
134 名前:デフォルトの名無しさん [2008/04/18(金) 17:11:08 ] モジュールの中で、 自分を読み込むクラスに実装を期待するメソッドを定義あるいは明示するには どうしたらいいですか?
135 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 17:19:34 ] まにゅあるに「hogeとhageはつくってね」とかく
136 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 17:28:37 ] え・・ Javaでいうabstractみたいな方法はないのでしょうか
137 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 17:46:52 ] def hoge raise "override me!" end
138 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 17:46:54 ] 実行中にメソッドを追加したり削除したりできるRubyではそもそも無理 別途ユニットテストとかでソースコード自体を検査させるべき
139 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 17:47:05 ] こういうのとか? ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/15841
140 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 18:39:10 ] The Ruby Way 第2版 ttp://www.amazon.co.jp/dp/4798115339/ おおむね今週に発売(たぶんたいていの本屋に並んでるはず) ボリュームアップし過ぎて5千円札では足りなくなりました
141 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 19:09:25 ] 結局実行時だけど、自分はこうしてる def foo bar end private def bar raise NotImplementedError end
142 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 19:14:58 ] モルボル教だかのお布施額がアップしたんだろ
143 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 19:20:36 ] def SomeModule.included(klass) raise unless klass.method_defined?(:foo) end とかやればいいんじゃね?
144 名前:デフォルトの名無しさん [2008/04/18(金) 19:20:54 ] 19種類のRubyテンプレートエンジンレビュー Mini reviews of 19 Ruby template engines www.hokstad.com/mini-reviews-of-19-ruby-template-engines.html 19種類ってありすぎww
145 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 19:23:31 ] 実行時にエラーが出るというのは致命的 実際にそのメソッドが使われないと、未定義かどうかのエラーが出ないんだからね それこそ、めったに起きないエラー処理のメソッドだった場合は、 まともに動作して安心してた頃になって致命的なことになる ソフトウェアテストでチェックすることをお勧めするよ
146 名前:105 mailto:sage [2008/04/18(金) 19:26:28 ] >>108 ありです
147 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 19:28:13 ] >>140 翻訳が変わってるのがすごく気になるな・・
148 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 19:39:37 ] rubyはスペルミスがあってもそのまま動きますから、小さいことは気にしませんw
149 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 19:48:44 ] >>147 同じく クイープの翻訳は最近アテにならないからなあ
150 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 00:00:08 ] Ruby初心者ですアドバイスよろしくお願いします。 .txtファイルに書かれた半角スペースで区切られた単語郡を それぞれ配列に格納するスマートな方法があればお教えいただけないでしょうか。 汎用性を持たすために、ファイルの読み込みは ruby test.rb < gomi.txt にしたいです。 windowsXP ruby1.8.6
151 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 00:07:20 ] つsplit
152 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 00:10:48 ] a bb ccc dddd eeeee ffffff ggggggg というようなテキストだと仮定 「それぞれ」という言葉から、1行目の配列と2行目の配列は別だと推測 ruby test.rb < hoge.txt でも ruby test.rb hoge.txt でも動作する # 配列を格納する配列 all_arr = Array.new # readlines は 引数のファイル、無ければ標準入力から読み込んで各行を配列にして返す readlines.each do |line| # chomp で line を区切って配列にする # 区切る"文字"は 正規表現の / / にマッチするものつまり半角スペース1個 arr = line.chomp.split(/ /) # push メソッドで arr を all_arr の要素の末尾に追加する # all_arr を「長くする」のではないことに注意 all_arr.push(arr) end # all_arr の中身を表示 p all_arr
153 名前:150 mailto:sage [2008/04/19(土) 01:40:27 ] 150です。早々の回答を有難うございました>151,152 二次元配列のような形にしたかったので、152さんのおっしゃるとおりです。 配列の値をActiveRecordでsqlに挿入しようと思っていました。 本当に助かりました、有難うございました。
154 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 05:12:28 ] スキルレベルの微妙なちぐはぐさ加減が怖い
155 名前:デフォルトの名無しさん [2008/04/19(土) 06:21:48 ] emacsをruby-modeで使っています この環境で定義済みクラスやメソッドのリストを見たり、 定義済みのメソッドを自動補完させたりすることは出来ますか?
156 名前:デフォルトの名無しさん [2008/04/19(土) 18:18:04 ] mixinとコンポジットの使いわけがよく分かりません mixinがないほとんどの言語では、mixin的なことはコンポジットで実現しますよね どういう時にmixinを使うんですか?
157 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 18:22:53 ] mixin は mixin 先の実装に依存した実装を追加したい時に使う。
158 名前:デフォルトの名無しさん [2008/04/19(土) 19:44:38 ] ファイルパスから親ディレクトリを取得するにはどうしたらいいですか?
159 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 19:47:52 ] >>158 File.dirname(file_name)
160 名前:158 mailto:sage [2008/04/19(土) 20:01:35 ] DirとかFileUtilsばかり見てました ありがとうございます
161 名前:デフォルトの名無しさん [2008/04/19(土) 20:05:51 ] ライブラリのクラスメソッドを使う場合に それを後に書く方法があれば教えてください たとえば File.dirname 'hogehoge' を 'hogehoge'.(File.dirname) みたいな形で書きたいんです
162 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 20:10:40 ] >>161 そうですか
163 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 20:15:50 ] どっかでそんな後置の言語を見た気がする 仮にRubyで実現するとしても、それを繋ぐのは . ではないだろうな
164 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 20:22:51 ] 気持ち悪いと思わないなら class String def dirname File.dirname(self) end end あとはpathnameというライブラリもある。
165 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 20:38:34 ] というか何のためにそうしたいのかによるな
166 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 21:08:19 ] class Object def callback(method, mypos=0, *args) args.insert mypos, self method.call *args end end p Math.sqrt(400) #=> 20.0 p 400.callback Math.method(:sqrt) #=> 20.0 p [1,2,3,4,5,6][2,3] #=> [3, 4, 5] p 3.callback([1,2,3,4,5,6].method(:[]), 1, 2) #=> [3, 4, 5] こんなもんでどうかな
167 名前:166 mailto:sage [2008/04/19(土) 21:09:58 ] 上のは >>161 宛
168 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 21:46:47 ] >>165 クラスとオブジェクトとメソッドの理解がまだ足りないんだと思う 気持ちはわかるが考え方が不当 欲しいのはいわば pathenize_dirname メソッドと推測 p '/usr/local/bin/ruby'.pathenize_dirname "/usr/local/bin/" メソッドの引数形式を「カッコ悪い」と感じる時期に罹るハシカみたいな病気だ
169 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 22:30:45 ] え、>>161 は見た目が気に入らないというだけ? 機能的な話かと思ったら、どうやら明後日を向いていたようだ。 そういうことであれば >>166 は>>161 の美意識には適うまい。
170 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 22:33:10 ] こんなのもありか。 class String def to_path Pathname(self) end end p '/usr/local/bin/ruby'.to_path.dirname
171 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 22:33:40 ] いや、pではto_strは呼ばれないな。putsで。
172 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 15:48:07 ] ERBについて教えてください。 railsのテンプレートでERBが使われてますが、 これは何かのタイミングで一度rubyのクラスに変換されてからHTMLに再び変換されるのでしょうか? 例えばJavaのJSPがJSP→サーブレット→HTMLと変換されるのと同じ流れですか?
173 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 16:05:58 ] >>172 <%%>の中身がそのままRubyコードとして抜き出され、 それ以外は_erbout.print ... という形に変換されてから Rubyで評価される感じです。
174 名前:172 mailto:sage [2008/04/20(日) 16:30:00 ] >>173 なるほど、jspみたいにrhtmlファイルがクラスに対応するわけではないんですね。 あまり綺麗な仕組みではないですね…。 ありがとうございました。
175 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 16:31:52 ] 単純に、ERBの簡単な使い方勉強するとイメージしやすいと思うよ eRubyの仕様じゃなくて、ライブラリの使い方ね
176 名前:デフォルトの名無しさん [2008/04/20(日) 17:47:33 ] mixiの「メッセージ」を送信したくて、d.hatena.ne.jp/emergent/20070321/1174472206 を参考にして、以下のように書いてみました。 基本的にeditの部分だけを変更し def edit title, content @id = "12345"#相手のid @edit_page = @agent.get('mixi.jp/send_message.pl?id= '+@id) edit_form = @edit_page.forms.name("messageForm").first edit_form['subject'] = title.toeuc edit_form['body'] = content.toeuc confirm_page = @agent.submit(edit_form) conf_form = confirm_page.forms[0] p @agent.submit(conf_form) end 以下を実行しました。 def mixi_message mdw = MixiMessage.new("hoge@hoge.com","hogehoge") mdw.login mdw.edit "テストタイトル", "テスト本文" end
177 名前:デフォルトの名無しさん [2008/04/20(日) 17:48:07 ] 結果、次のような出力になり、メッセージは送信されていませんでした。 #<WWW::Mechanize::File:0x4b03cdc @response={"connection"=>"close", "date"=>"Sun, 20 Apr 2008 08:11:37 GMT", "x-dealer"=>"034093", "content-type"=>"text/plain; c harset=euc-jp", "server"=>"Apache", "content-length"=>"0"}, @code="200", @uri=#< URI::HTTP:0x2583fc0 URL:mixi.jp/send_message.pl?id=12345>, @filename="s end_message.pl", @body=""> 送信できていない原因は何でしょうか?
178 名前:デフォルトの名無しさん [2008/04/20(日) 17:49:28 ] 結果、次のような出力になり、メッセージは送信されていませんでした。 #<WWW::Mechanize::File:0x4b03cdc @response={"connection"=>"close", "date"=>"Sun, 20 Apr 2008 08:11:37 GMT", "x-dealer"=>"034093", "content-type"=>"text/plain; c harset=euc-jp", "server"=>"Apache", "content-length"=>"0"}, @code="200", @uri=#< URI::HTTP:0x2583fc0 URL:mixi.jp/send_message.pl?id=12345>, @filename="s end_message.pl", @body=""> 送信できていない原因は何でしょうか?
179 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 18:16:00 ] >>176 WWW::Mechanizeは実際にサーバから送られてきたHTMLから指定された要素を抽出して実行している 素直に読むと mixi.jp/send_message.pl?id= ユーザーIDというページの結果を取得し、 <form name="messageForm"> というフォームで1番最初にあるフォーム中にある、 <input name="subject"> という、type が text か何かの入力欄に引数titleの内容を日本語EUCで入力 <input name="body"> という、type が text か何かの入力欄に引数contentの内容を日本語EUCで入力 <form name="messageForm"> のsubmit ボタンを「押して」結果のページを取得する 取得した結果の中の最初の <form> の submit ボタンを「押して」結果のページを取得する という処理なんだけど、mixiのページ構成はきちんとそのようになってるかい?
180 名前:デフォルトの名無しさん [2008/04/20(日) 18:55:48 ] 176です。お返事ありがとうございます。 p conf_form としてみたところ、出力に #<WWW::Mechanize::Form::Field:0x4ba0de8 @name="submit", @value="confirm"> があり、これは、 「確認画面」の <input type="hidden" name="submit" value="confirm"> と一致しているので、 おそらく「確認画面」までは到達していると思います。 「確認画面」では formはひとつしかなく、 <form action="send_message.pl?id=1056392" method=post> <input type="hidden" name="submit" value="confirm"> <!--略--> <input name=yes type=submit value=" 送 信 "> <!--略--> <input name=no type=submit value=" 修 正 "> </form> という構成になっており、submitが二つあるのが怪しいかなと思っているのですが、 指定のない場合は、先にある「送信」が押されると思うので、条件は満たしているような気がします。 ほかに問題となりそうな点は何でしょうか?
181 名前:デフォルトの名無しさん [2008/04/20(日) 20:37:02 ] num++ みたいな書き方が他言語とは挙動が異なるみたいなんですが これはどういう動作をしているのでしょうか?
182 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 20:47:58 ] そもそも ++ はないよ
183 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 20:48:11 ] rubyにそんな演算子は存在しない
184 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 23:54:38 ] >>182-183 ありがとうございました なんでないんでしょうね? 実装も単純そうなのになぁ
185 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 00:08:05 ] ま た か 説明するの面倒なのでぐぐってくれ インクリメントの実装自体は簡単なんだが、Rubyのほうそくが みだれる ので採用されない
186 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 00:12:19 ] かっちょええ説明法があればたぶん普通に採用されると思う さあ頑張って 「自分を破壊し別のオブジェクトを生み出して置き換える」 メソッドの意味を説明して説得するんだ
187 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 00:18:12 ] モルモン教義的に不死がタブーでないのなら Rubyでベニクラゲをモデリングしたいと言ってみる
188 名前:デフォルトの名無しさん [2008/04/21(月) 00:23:36 ] ループが正常に実行した時にのみ、ある処理を実行する というプログラムを美しく書く方法があれば教えてください。 フラグを用意し、ループを抜けてからフラグをチェックするのが 普通だと思いますが、フラグの存在が冗長な気がします 例外を使うのも、何かやりすぎのような気がします
189 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 00:56:43 ] do_this if array.all? {|x| ... } とかじゃなく?
190 名前:デフォルトの名無しさん [2008/04/21(月) 03:20:44 ] どこでもrescueされなかった例外を補足するには どうしたらいいですか?
191 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 03:27:37 ] rescue すればいい
192 名前:デフォルトの名無しさん [2008/04/21(月) 03:56:54 ] 全体を囲む大きなbeginブロックを書くということですか? 視認性が悪くなるので、 前もってエラーハンドラみたいなものが登録できたらいいと思うのですが・・
193 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 04:07:33 ] 基本的には処理はトップレベルにベタ書きすべきじゃないと思うから (変数はなるべくローカルスコープに入れた方がいいので)、 C などの main 関数みたいに全ての処理を囲んだ関数を作って トップレベルに記述する処理はその関数のみにしておくと良い。 そういう状態であれば、begin で囲むのもそこだけで済む。
194 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 04:18:35 ] ふーむなるほど… ありがとうございました
195 名前:デフォルトの名無しさん [2008/04/21(月) 06:16:46 ] Timeオブジェクトを引き算するとfloatが返ってきます 時間の差をあらわすオブジェクト(間隔オブジェクト?)が 返ってきて欲しいのですがどうしたらいいですか?
196 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 07:44:30 ] >>196 返って来たFloatがその間隔オブジェクト(秒.マイクロ秒) 欲しい単位が分なら (t2 - t1).to_i / 60 すればいい
197 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 10:59:01 ] >>186 代入演算子の一種として実装すればよい 例:a += 1
198 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 21:39:36 ] このへんを蒸し返してみたら? blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-list/6233?6096-6403
199 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 22:23:48 ] num++に問題があるというより ++numとnum++の挙動の違いをRubyの中に組み込むのに難があるという感じ?
200 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 22:32:18 ] succはあるんだから、前置++は構文だけの問題だね 後置は……
201 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 22:42:48 ] > succはあるんだから ほほう 君のRubyでは 3.succ として 3が 4になるのか?
202 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 22:43:01 ] 馬鹿ばっかだな 演算子で終わることに自体に問題があるんだろ
203 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 22:45:52 ] >>201 ああ、succはsucc!じゃないよね 吊ってきます
204 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 22:59:58 ] で、誰が演算子で終わることを問題にしてるの?
205 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 23:51:33 ] Cだと 1++ で 1 が 2 になるのか。 おもしろいな
206 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 00:02:31 ] 演算子で終わることの意味も分からない馬鹿がいるな
207 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 00:16:53 ] 演算子で終わる云々なんて、この何回もループした議論の中で出てきたっけ? そりゃ内部仕様は変えなきゃいかんだろうが、「演算子で終わったら駄目」な理由は? というか採用されても、「特殊なメソッド」以上のものにはならんと思うが
208 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 00:17:20 ] RubyでCGI作ってみてるのですが、system(id root)とかのコマンド結果が どうもHTTPヘッダーとして出力されてしまっているようです。 どうにか出力しない方法ってあるんでしょうか。
209 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 00:18:59 ] パイプ使って、標準出力/エラー出力を捨てとけ。
210 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 00:23:10 ] >>209 ありがとです。
211 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 01:48:37 ] DBIを使ってPostgresSQLと接続しようとしたのですが、上手くいきません。 環境は、 OS CentOS 5.1 64bit Postgres 8.3.1 ruby-1.8.6-p114 ruby-postgres-0.7.1 dbi-0.2.0 です 接続しようとすると`load_driver'エラーが出ます。ruby-postgresだけだと接続出来るのですが、dbiだと駄目です。 ちなみにdbiのインストールオプションはruby setup.rb config --with=dbi,dbd_pgでインストールしました。 $ irb irb(main):001:0> require "postgres" => true irb(main):002:0> PGconn.connect("localhost", 5432, "", "", "testdb","user","wassword") => #<PGconn:0x2aaaaabaceb0> irb(main):003:0> require "dbi" => true irb(main):004:0> DBI.connect("dbi:postgres:testdb:localhost", "user", "wassword") DBI::InterfaceError: Unable to load driver 'postgres' from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:352:in `load_driver' from /usr/local/lib/ruby/1.8/monitor.rb:242:in `synchronize' from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:282:in `load_driver' from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:233:in `_get_full_driver' from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:219:in `connect' from (irb):4 from (eval):3 よろしくお願いします。
212 名前:デフォルトの名無しさん [2008/04/22(火) 02:42:51 ] 広くメソッドというもの自体をオーバーライドすることは出来ますか? メソッドすべてにフックを仕込んで、メッセージのやりとりを ロギングしたり、そういうことがしたいんですが
213 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 02:51:19 ] ttp://doc.loveruby.net/refm/api/view/method/Kernel/m/set_trace_func
214 名前:212 mailto:sage [2008/04/22(火) 03:04:54 ] >>213 こんな機能があったんですね ありがとうございました
215 名前:デフォルトの名無しさん [2008/04/22(火) 03:21:12 ] RubyWay読んでたら、Stringのeachは1.9ではなくなり、 each_lineを使うようになったと書いてありました。 今書いてるスクリプトには、ファイルからの読み込み処理等で eachが結構あります。 これは書き換えないと1.9以降では動かなくなるのでしょうか?
216 名前:デフォルトの名無しさん [2008/04/22(火) 06:46:11 ] ハッシュの存在しないキーを参照してもnilが返ってくるだけでノーエラーですが 多次元配列で存在しないキーを参照すると undefined method `[]' for nil になります 存在しなかったとしてもエラーが出ないように参照する方法を 教えて下さい
217 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 07:11:08 ] def nil.[](i) nil end
218 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 07:42:47 ] ハッシュのデフォルト値を[]にするとか
219 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 08:03:40 ] あ、スマンぼけてた。問題は配列のほうか。
220 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 08:16:16 ] 多重ハッシュでも存在しないキー指定したら undefined method `[]' for nil になるじゃん 何をしたいか明確に書けよヴォケ
221 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 10:20:15 ] >>216 配列じゃなくてハッシュを使う
222 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 11:25:06 ] 多次元配列などというものはRubyには存在しません
223 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 13:57:40 ] class TajigenHairetsu << Hash def [](*arg) super(arg) end def []=(*arg) super(arg[1,-1], arg.last) end
224 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:41:56 ] rubyのコマンドからファイルの有無を確認する方法は無いでしょうか? 無ければ指定したテキストファイルを作り あれば追記するような仕組みを持ちたいので
225 名前:216 mailto:sage [2008/04/22(火) 17:50:19 ] 217さんの方法でしのぐことにしました ありがとうございました >>220 ハッシュか配列かではなく nilに[]が使えないことをどうしようかという話でした
226 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:17:46 ] >>224 ファイルのことについてどうこうしたいんだからFileクラスのメソッド探してみれ
227 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 19:31:56 ] だからfetch(i,default)を使えと
228 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 20:24:49 ] 問答無用に'a'でopenすればええんとちゃうの?
229 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 21:04:12 ] >>228 のぞんでいたどうさができました おそらく不具合の原因は参考にしていたサイトがafile=File.new(*****) とnewを使っていたためのようです 今まで5個ほど言語を学んできましたがrubyほどシンプルで強力な言語は 無いと感じました 本当にありがとうございます!
230 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 21:28:45 ] >>215 動かなくなるよ。 str.each は、str.scan(/^/).each に置き換えよう。
231 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 21:42:21 ] IO#eachは残ってるんじゃなかったっけ?
232 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 22:15:01 ] class String unless method_defined?(:lines) def lines self end end end としておいて、1.8系でもstr.lines.eachと書いておくという手も…
233 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:06:52 ] irb > print "test" この結果が ttt => nil と出るんですが、これはどういう意味なんですか? irb => ttt と出力されることを期待したのですが。
234 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:09:48 ] tttはtestのつもり? irbの=>の後ろに出るのは、入力した式(print "test")を評価した値。 x= print "test" とすると x = nil になるのといっしょ。 testという文字列が書き出されるのは式の評価(値を求めること)の、まぁ副作用だ。
235 名前:233 mailto:sage [2008/04/22(火) 23:38:04 ] >>234 おぉ丁寧にありがとうございます。 入力コマンドを単純に実行するのではなく評価するだけなんですね。 てか使い道あるんでしょうかね…?
236 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:34:45 ] ないよ
237 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:37:12 ] irb > print "test" この結果が ttt => nil ^^^~~~~~~ ^:printの出力 ~:irbが返り値のインスペクションを出力 コマンドって…
238 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:43:07 ] ttt => String にはならんの?
239 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:51:04 ] たぶん出力の意味を勘違いしてるよ。 irbは「=> 返り値」を印字してるだけ。 その前のprintの出力に改行がないからそんな見た目なだけ。 もしそんな出力がされるってことは、printがStringクラスを返してるというイミフなことになるぞ。
240 名前:デフォルトの名無しさん [2008/04/23(水) 06:24:22 ] RubyのIDEでおすすめは何ですか? 今はNetBeansを使っていますが、他のファイルのクラス等が 自動補完できないのでもう少し高機能なのが欲しいと思っています
241 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 09:33:10 ] おすすめは無い あと1年くらいしたら便利なの出てくるぜと3年くらい前から言われてる
242 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 11:46:14 ] rubyらしいな
243 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 14:09:47 ] pythonから移ってきた人向けの入門ページとかないですか?
244 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 15:31:57 ] for文について質問です。 for book in book_array end このように配列を回すfor文の中でインデックスを取得することは出来ないのでしょうか?
245 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 15:33:59 ] Enumerable#each_with_index
246 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 15:53:58 ] >>245 ありがとうございます!できました。 java出身だとfor文でインデックス取れないって変な感じですね。
247 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 16:15:35 ] 数値計算関係はpython 日本語処理はruby という使い分けしようと思っててるんですが、うまくミックスする方法はないのでしょうか?
248 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 16:39:13 ] 質問が曖昧すぎて意味不明
249 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 19:40:43 ] >>246 for i in (0..book_array.size) p i, book_array[i] end カウンタ変数もなしにインデックスが取れるわけないだろう
250 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 20:37:16 ] >>249 × .. ○ ...
251 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 21:54:00 ] 上と下ならどっちがrubyらしいですか? if foo == "" end if foo.is_a? String && foo.empty? end
252 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 22:07:13 ] オブジェクトの型をチェックするコードは常用するものではない。
253 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 23:04:56 ] >>247 全部Python
254 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 23:13:04 ] てかRubyの日本語処理ってNKFべっただし PythonからRuby向けを切り出す必要があるとは思えない Pythonで書けるなら全部Pythonで書くのがベスト
255 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:18:41 ] rubyで簡単なツールを作ろうと考えております GUIを組むにはruby/tkとか色々種類があるようなのですが、 最もメジャーなのはどれでしょうか? ツールの詳細としては、チェックボックスやリストで設定項目を設定し、 それによるシミュレーション結果をメッセージボックスに文字列で 順次吐き出すだけというものです ※一応Javaも少しかじってます もし「rubyのGUIは終わってるからJavaでやれ」とかならば それはそれで結論として構いません
256 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:28:07 ] 際だって使われているGUIツールキットはないと思うが、tkは最初から 付いてくるから比較的メジャーと思われる。 自分はマカーなので、必要な場合はOSに付いてくるRubyCocoaを使う ことになると思うけど。 Javaもかじってる人ならJRubyでSwing使うというのもアリかね。
257 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:31:29 ] >>255 FXRuby
258 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:35:52 ] railsでいいじゃん
259 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:38:22 ] >>255 ttp://www.gesource.jp/programming/ruby/gui/index.html おいらはApollo派
260 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:41:57 ] 配布するのか、自分の特定のマシンで使うのかにもよるよな
261 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 01:00:03 ] 漏れはRuby/Gtk2 Gnomeだからそれに合わせて。Gladeとかあって使い勝手も悪くない。
262 名前:255 mailto:sage [2008/04/24(木) 01:07:39 ] >>260 一応は仕事で補助的に使うツールです 基本は自分のPCで動けばOKですが 状況によっては周囲に配らないとも言いきれませんので 配布時のパッケージングに優れていると助かりますね
263 名前:255 mailto:sage [2008/04/24(木) 01:09:43 ] あと、OSはWindowsXPです 今更言う事でもありませんが、念の為…
264 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 01:12:18 ] >>255 wxRubyかFXRubyの2択だな
265 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 01:15:49 ] VisualuRubyはダメなのかな? exerbでexe化もできるみたいだし。 てか、ほんと「これだ!」ってのはないと思う。
266 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 09:48:06 ] 俺AvtiveRubyとHTA
267 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 10:24:49 ] HTA+ActiveScriptRubyなんて組み合わせ知ったときには これぞ俺が今まで追い求めていたものだと直感した GUIはHTMLで記述、中身の処理はRuby。夢のようだ なのになんで使わなくなったんだっけ俺
268 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 13:01:03 ] インターフェイスはrubyになるけど中身はIEのままじゃねそれ eachとかProcとかないんじゃ
269 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 14:45:06 ] >>247 >>254 xmlrpcやjsonでお互いのプログラム間で通信したらいいのかな?
270 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:24:55 ] >>255 反則っぽいけどwebrickでアプリケーションサーバを作るとか guiとかの環境依存性も配布する必要も無い ついでにdrbで分散処理も追加
271 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 00:47:28 ] >>255 >262,263の条件ならC#かJavaがいいと思う。 UNIX系でも使う可能性があるなら>264かな。
272 名前:255 mailto:sage [2008/04/25(金) 02:51:02 ] 色々候補ありましたが、日本語周りに確証が欲しかったので 差し当たりVisualuRuby触ってみる事にします 皆様レス有難うございました しかし決め手が無くて色んな種類があるという状態は 選択肢が広いとは言え、個人的には苦手だ…
273 名前:デフォルトの名無しさん [2008/04/25(金) 04:29:00 ] パスが入ってる文字列のファイルセパレーター(/や\)を, /からwindowsの\に変換するメソッドは有りますか?
274 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 05:51:48 ] >>273 文字の置き換えだろ? リファレンスマニュアルでStringの項を読みなさい
275 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 23:54:28 ] 文字列の50行目から100行目の範囲に対して、正規表現で検索をしたいのですが 今は str.split('\n).each do |line| cnt += 1 line =~ 〜 if(50<=cnt && cnt<=100) end のようにしているのですが、strはかなり長い文字列なので、無駄な処理をしている気がします もっと上手は方法はないでしょうか?
276 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 00:22:53 ] >>275 とりあえず、splitする必要ないでしょ
277 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 00:31:59 ] >>275 ややトリッキーな方法だが target_lines = str.split($/).slice(50..100) if target_lines then target_lines.each do |line| line =~ 〜 end end
278 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 00:39:05 ] >>276-277 ありがとうございます
279 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 10:18:49 ] >>275 str.each_with_index do |line, cnt| next if cnt < 49 line =~ 〜 break if cnt >= 99 end 1.9なら str.each_line.with_index
280 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 10:32:56 ] next unless (50..100) === cnt
281 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 12:00:36 ] 何を無駄って考えてるかによりそう strが巨大な配列になってるのがヤだっていうならsplitとeachは全滅だな
282 名前:デフォルトの名無しさん [2008/04/26(土) 13:58:48 ] Rubyからコマンドを実行させるには、execとかsystemとかいろいろあると 思うんですけど、出力結果を文字列として取得する場合はどうすればいいんですか? ちなみにRuby1.8.6です。
283 名前:282 [2008/04/26(土) 14:01:07 ] 282です。 できればエラーストリームだけとれるのが望ましいです。
284 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 14:13:05 ] kazuho.exblog.jp/1883201/ >日本のオープンソース開発者の中で有名なまつもと氏のような方ですらライセンス条件について間違った解釈をしてしまうのである ほうほう。
285 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 14:49:08 ] わざわざ自分のブログ宣伝して回るなよ
286 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 16:24:59 ] >>282 * Open3 を使う(require 'open3') * 自分で作る(open3 は簡単だから、読んでみるといい) * windowsでは動かないかもしれないが↓ command = 'ls /tmp' stderr = `#{command} 2>&1 > /dev/null`
287 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 22:55:11 ] >>282 $stdout, $stderr を reopen して system system のいいとこは shell を介さずに実行できるから コマンドインジェクションを防げる。
288 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 01:40:40 ] 単純にpopenじゃあかんの?
289 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 10:50:28 ] ポペン!
290 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 18:19:04 ] あのさ、あるクラス Foo があって、その機能強化版をつくったとき、 クラス名は何にしたらいいと思う? AdvancedFoo とか ExtendedFoo とか考えたけど、あまりいい名前じゃないといわれた。 かといって、雑多な機能をいくつも付け加えたから、これといって名前をつけにくいんだよな。 なんかいい名前ない?
291 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 18:26:58 ] 追加する機能をモジュールとして作り、 Fooのインスタンスにextendで機能追加する。 ↑という方法では解決できず、どうしても継承でやる必要があるなら FooWith機能名 とか 機能ableFoo とか。
292 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 18:30:36 ] Fooそれ自体に機能(メソッド)を追加するという方法もある。 あるいはモジュールとして作り、includeする。 Fooのインスタンスはどれでも追加された機能を使える。 class Foo ... # 元の定義 end # 定義を再オープンして機能追加 class Foo def 追加機能 end ... end >>291 のextendする方法は、Fooクラスのインスタンス全体ではなく、 Fooの特定のインスタンスだけに機能を追加する方法。
293 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 18:32:40 ] クラスに二つ以上の責任があるんじゃないか? できれば分割して名前を明示できるようにした方がいい
294 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 19:46:16 ] >>291 ,292 もとのFooは残す方向なので(ほかに継承で使っている人がいるから)、Foo自体を拡張するわけにはいかないんです >>293 まあそうなんですけど、Rubyの大クラス主義でやっているので。 大クラス主義はたしかに便利なんだよね。既存の他のクラスのインターフェース変えなくていいし。
295 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 20:19:07 ] >>294 大クラス主義はキッチンシンクじゃないぞ。 >>290 > かといって、雑多な機能をいくつも付け加えたから、これといって名前をつけにくいんだよな。 どうも行き辺りばったりの感じがするんだが。 UtilFooとでもしとけば。
296 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 20:45:31 ] Rmagickで書き込もうとする、もしくは書き込んだ文字列の幅と高さを求めるにはどうすれば用でしょうか?
297 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 21:48:45 ] >>296 ImageMagickのコマンドから推測するといい
298 名前:デフォルトの名無しさん [2008/04/28(月) 19:42:33 ] Rubyの利点って何? Javaプログラマの俺にわかりやすく説明して
299 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 19:55:52 ] 状況も設定せずに利点を挙げろつってもなぁ。 まずは自分の疑問をわかりやすく説明しる。
300 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 20:02:49 ] 適当な捨てプロ書くのに凄く楽。
301 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 20:09:52 ] >>298 君にとって利点はないと思うよ
302 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 20:37:12 ] 気楽に楽しくプログラミングできる
303 名前:デフォルトの名無しさん [2008/04/28(月) 20:37:35 ] >>301 その返し方は誤解を与えるかもな。 ほとんどの人にとって利点はないと答えたかったんだろ?
304 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 21:00:15 ] >>300 それあるなぁ。 ワンライナーも併せて便利
305 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 21:10:58 ] >>303 一人で納得してれば
306 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 21:51:50 ] rubyで大枠の処理を書いて、細かいところはJavaを呼び出す
307 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:09:01 ] JRubyでうんたらかんたらできる。 初期起動がかなり遅いけど。
308 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:36:39 ] Rubyの利点って何って話だけど、 それよりむしろJRubyの利点が知りたい。
309 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:38:33 ] JRubyの利点ってJavaのクラスが呼び出せるとかじゃないのかな。 これができると膨大なJavaのライブラリも使えるし。 個人的にはSwingあたりのGUIライブラリが楽に使えるとありがたい。
310 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:40:57 ] 大量にあるJavaの資産が使えるのがありがたい 標準のライブラリだけで大抵のものが一揃いして、もちろん完成度も高め。Swingもあるし
311 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:47:59 ] >>309 >>310 へー、そうなんだ! JAVA屋さんには便利なのかな そういえばIronRubyはどうなったんだろう
312 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:55:35 ] >>308 (顧客の)サーバにRubyのバイナリを入れるのは(政治的な意味で)非常に大変だが、 Javaはデフォで入ってるので、jarを1個放り込めばよいJRubyは非常にありがたい。
313 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:12:25 ] >>312 その発想はなかった! 業務で使ってる人は大変なのね
314 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:40:01 ] >>312 これあるよねー unzipコマンドがない客先のサーバでzipファイルを解凍しなきゃいけなくて さてどうしようと思ってたら、jarコマンドで解凍できた。 このときはjavaすげーとおもった。
315 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 00:18:07 ] rubyの開発者 凄い人なんだろうけど、あらゆるruby本の監修になって名前貸すだけで稼ぎまくってるあの魂胆が嫌いだ
316 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 00:20:36 ] 成果をねたむ足引っ張り合い好きな国民性丸出し トイレ掃除でもしてろ
317 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 01:24:23 ] 俺はUSBメモリにruby.exeとmsvcrt-ruby18.dllが入ってるな(他は grep sed)。 これだけでもコマンドプロンプトのお供に使えるところが好き。 Python はライブラリ無いと起動すらしないし、Perl は動くけど glob が使えねえし…。
318 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 02:03:04 ] 監修料なんて雀の涙だろ。
319 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 02:15:01 ] ヾヽヽ (,, ・∀・)チュンチュン ミ_ノ ″″
320 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 02:28:02 ] >>318 どっかの年金では図柄変更バージョンごとに1千万とからしいけど。 図柄かえるだけのバージョンが100くらいある。
321 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 03:18:35 ] 監修料がわずかって…何を見て言ってんだ? 有名人になると筆者より儲けてるよ
322 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 03:32:49 ] 何を見て言ってんだ?
323 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 03:38:27 ] どぞー pc11.2ch.net/test/read.cgi/tech/1207233348/
324 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 06:20:24 ] >>317 やあ俺 シェルと好みのエディタ入れれば、簡易開発環境が出来てしまうのが便利だ
325 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 08:13:17 ] >>321 具体例をドゾー
326 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 09:43:14 ] >>321 監修するなってこと? なんで? そのメリットは? 「成功者の収入が減ると、貧乏人の俺の胸がすく」という以外のメリットを感じないけど・・・。
327 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 09:53:42 ] 釣られんなよ、おまいら……。
328 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 10:31:38 ] まぁ釣りだったことにしたいだろうなぁ、このフルボッコな状況じゃ。
329 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 12:53:29 ] >>320 さすがに公共事業とは事情が全く異なるだろ。 そういうのはまた孫受け曾孫受けで政治家とか○暴とかの たかり屋に流れるからその分割高だし。
330 名前:デフォルトの名無しさん [2008/04/29(火) 13:31:36 ] ちょっとした質問です。 ・・・忘れた
331 名前:デフォルトの名無しさん [2008/04/29(火) 13:34:16 ] すいません、思いだしました! Rubyで小物でもプログラムを書くときに、 クラス化しますか? 適当に書き下す(とは言っても100行オーバーの大きさ)場合はトップレベル関数ばりばりでも よいと思うのですが、関数作りまくるプログラミングタイプだと、 いちいち関数化時に変数をグローバルにするのが面倒です。 また、配布とかも考えると、クラス化してライブラリとして使えるようにも、と思ってしまいます。 あなたはどうしてますか?
332 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 14:01:16 ] うぜぇw
333 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 14:02:37 ] 配布を考える場合は、規模問わずほぼ確実にクラス化(モジュール化)する 配布を考えないなら、そのときどき トップレベル関数(メソッド)から作り始めることもあれば クラスの設計から始めることもある ところで >いちいち関数化時に変数をグローバルにするのが面倒です。 これはどういう意味なんだ
334 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 14:19:14 ] この俺がエスパーしよう! name = gets.chomp hello = 'ぐっもーにん' puts "#{name}さん、#{hello}" をメソッドにすると def say_hello puts "#{$name}さん、#{$hello}" end $name = gets.chomp $hello = 'ぐっもーにん' say_hello と書かなければならなくなって面倒だとか、たぶんそういう話だ!
335 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 14:33:57 ] トップレベルは気持ち悪いからなんでもクラス化
336 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 14:35:08 ] とりあえず関数だけで書いて 複雑になってきたらリファクタリングしてクラス化
337 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 14:42:55 ] 100行くらいなら、多分関数のみ
338 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 14:47:37 ] メソッドのことを関数と言ってる奴は同一人物
339 名前:デフォルトの名無しさん [2008/04/29(火) 15:12:32 ] >>333 >>いちいち関数化時に変数をグローバルにするのが面倒です。 >これはどういう意味なんだ >>334 そのとうりです!! >>338 トップレベルメソッドというべきでしたか?
340 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 15:59:49 ] 確か三年ぐらい前に、初心者だった自分も同じようなことを言われたんだが グローバル変数の使用はお薦めしない(書き捨ての短いコードだとしても) エスパー>>334 の例を借りると def say_hello(name, hello) puts "#{name}さん、#{hello}" end say_hello(gets.chomp, 'ぐっもーにん') こんな風に引数として渡したほうがいい
341 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 16:47:55 ] いくらなんでも324はないだろう def init(opt) $_option = opt end def exe(arg) if $_option[:foo] 〜 end init :foo => :bar exe "hoge" とか?
342 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 16:53:28 ] 俺の場合は新規作成した場合、自然と指が class って動いちまうなあ。
343 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 17:03:15 ] Pythonと比べるとRubyの方が直感的だと感じてしまうのはRubyに毒されたからなのか。 yieldの書き方とかはRubyの方がいいな。
344 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 17:06:54 ] コルーチンがわかってないんだろ
345 名前:デフォルトの名無しさん [2008/04/29(火) 17:35:41 ] >>342 毎回指で書くなら自動化すればいいじゃない
346 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 17:47:28 ] これがコルーチンか。そう意識してみるとPythonの書き方もこれでもいいかと思えてくる。 でもRubyの方がコルーチンを中断している途中でなんか処理しているってイメージがしやすい気がする。 気のせいか慣れなのかもしれないけど。
347 名前:デフォルトの名無しさん [2008/04/29(火) 22:15:27 ] メソッド・オーバーライトって、具体的に、どんなときに使ったことありますか?
348 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 22:31:43 ] ライブラリのメソッドを上書きしたいとき
349 名前:デフォルトの名無しさん [2008/04/29(火) 22:49:20 ] それはわかるんだけど、具体的にどんなメソッドを上書きしたの?
350 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:10:38 ] inspect はしょっちゅうオーバーライドしてるなあ。 あと to_s も。
351 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:49:21 ] >>349 OKまずはageだ ・自分で設計したクラスのサブクラスを作ったとき(基本) ・他所から持ってきたライブラリのバグを自分で直すとき ・ライブラリの挙動を少しいじくったり、機能を足したいとき(たいていサブクラスを作って上書きする) 上書きコードがある程度の量になってきたら、自分用のラッパーライブラリを作ることもある
352 名前:デフォルトの名無しさん mailto:sage 懐かしのuwarite [2008/04/30(水) 00:41:49 ] 再定義はオーバーライト(overwrite)じゃなくてオーバーライド(override)だな。
353 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 01:19:44 ] そういえば、Object#inspectって循環参照があるオブジェクトに対してもちゃんと動くよね これってどうやって検出してるんだろう。inspectは特に引数を受け取るでもないし
354 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 07:48:36 ] >>353 Thread.current[:__inspect_key__] でobject_idを覚えてる。
355 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 09:26:26 ] >>354 スレッドローカルストレージ使っているのか。なるほど。 353じゃないが参考になった。 これからもあわあわと質問に解凍しやがってください。
356 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 11:34:29 ] >>354 そういうことかー。返答ありがとう。
357 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 18:32:29 ] javaが呼べるのは便利そうだけど c++(cじゃなくて)の呼び方がまとめてあるサイトないですか?
358 名前:デフォルトの名無しさん [2008/04/30(水) 19:38:33 ] railsでないRubyではDB操作するのに何が一番使われてますか? 素のライブラリ?DBI?ActiveRecord?
359 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 23:38:38 ] O/R MapperならActiveRecordかDataMapper そうでなければDBIかMySQLライブラリ直書き
360 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 00:28:23 ] activerecordだけ使うならrailsでやればいいのに って思う。
361 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 00:31:00 ] 「Rails使うならActiveRecord使えばいいのに」なら分かるが その逆はイミフだなぁ。
362 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 17:18:14 ] initializeを勝手に呼び出すのは良くないんでしょうか。 class Foo ... def refresh initialize end end
363 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 17:38:07 ] よくないです っていうか、そういうような処理を initialize に書いたらダメです たとえば、別途セットアップ系のメソッドを作って、initialize と refresh から呼ぶようにするとかしてください
364 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 18:32:18 ] >>363 なんでよくないの?
365 名前:デフォルトの名無しさん [2008/05/01(木) 19:28:22 ] >>340 あー、わかります。 でもRubyは参照渡し?できないですよね。 単発なら返却値で返す。 複数の返却値だとタプル?じゃなくて配列で返して、 hoge, mage = gethogemage でよかったと思うんですが、なれてないと妙に気持ち悪いw みんなこんなのやってんのかな >>342 まず体を慣らすのはいいかもですねw 私も一番慣れてる言語だと、ファイル新規作成したら無意識でclass構文が書けます(まあ大抵はスニペット使いますけど)
366 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 22:27:49 ] >365 Rubyはむしろ全て参照渡しと言っても良いくらいなのだが。 ただし代入(=、+=など)は変数の参照先を変えてしまうので 自身を書き換えるメソッドを使わず代入で書き換えようとした場合 変数の参照先が変わり、値渡しみたいに見える。 例えば文字列なら concat は文字列自身を書き換えるが += は新しい文字列を作り変数の参照先を書き換えるので元の変数に影響がない。 FixnumやSymbolなどは、自身を変更するメソッドを持たないので 実質的に値渡しになる。
367 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 22:29:19 ] >>364 べつにいいと思うよ、何度呼ばれてもいいように設計されていれば。 foo = Foo.new(0) # Foo#initialize(0) が呼ばれる foo.do_something! foo.initialize(0) # リセットする foo.do_something! foo.initialize(0) # リセットする ... もちろん>>363 のようにしてもいい。すきにどうぞ。
368 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 23:57:27 ] 正規表現でCの文字列リテラルにマッチするようなのって書けないでしょうか? /".*?"/にすると"aaa\"bbb"みたいな場合に"aaa\"で終わってしまいますが全体にマッチして欲しいんです /".*(?<!\\)"/にしようと思ったら1.8では(?<!)が使えませんでした
369 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 00:03:40 ] "([^"]*?\\.)*.*?" とかよく書くけど、どうかな
370 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 00:12:20 ] /"([^"\\]|\\.)+"/ こんな感じ?
371 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 00:28:07 ] >>369 >>370 どちらでもいけました、ありがとうございます! なんでこれでいいのかまだ良くわからないので頑張って解読します
372 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 02:12:18 ] >>371 /"[^\\"]*(\\.[^\\"]*)*"/ こっちのほうが早いかな。 詳説 正規表現を読むのをオススメするよ
373 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 02:15:20 ] db等の外部リソースを使った時は Rubyの終了時にメモリは自動的に解放されているのでしょうか? 明示的に解放しないとだめですか?
374 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 03:21:27 ] ここでいいのか不明なのですが…もし良ければおしえてください やりたいことは CarbonEmacs上にて起動したirbで require 'rubygems' を行いたい。です。 環境は OSX10.4にてCarbonEmacs2008春版を使用しています。 rubyはMacPortsからインストールしたものを使用し、 rubygemsもMacPortsからインストールしました。
375 名前:374 mailto:sage [2008/05/02(金) 03:23:56 ] 以下Terminal.appから実行した結果です /Users/hoge% uname -a Darwin hoge.local 8.11.1 Darwin Kernel Version 8.11.1: Wed Oct 10 18:23:28 PDT 2007; root:xnu-792.25.20~1/RELEASE_I386 i386 i386 /Users/hoge% ruby -v ruby 1.8.6 (2007-09-24 patchlevel 111) [i686-darwin8.11.1] /Users/hoge% which ruby /opt/local/bin/ruby /Users/hoge% gem -v 1.1.1 /Users/hoge% which gem /opt/local/bin/gem /Users/hoge% echo $PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin /Users/hoge% irb irb(main):001:0> puts $: /opt/local/lib/ruby/site_ruby/1.8 /opt/local/lib/ruby/site_ruby/1.8/i686-darwin8.11.1 /opt/local/lib/ruby/site_ruby /opt/local/lib/ruby/vendor_ruby/1.8 /opt/local/lib/ruby/vendor_ruby/1.8/i686-darwin8.11.1 /opt/local/lib/ruby/vendor_ruby /opt/local/lib/ruby/1.8 /opt/local/lib/ruby/1.8/i686-darwin8.11.1 . => nil irb(main):002:0> require 'rubygems' => false -------- rubygemsをrequireしてもエラーになりません。 (.irbrcにてrequire済なので再読み込みはしませんが)
376 名前:374 mailto:sage [2008/05/02(金) 03:25:02 ] 対してCarbonEmacs上のrun-rubyにて起動したirbでの実行結果です irb(main):001:0> puts $: /usr/lib/ruby/site_ruby/1.8 /usr/lib/ruby/site_ruby/1.8/powerpc-darwin8.0 /usr/lib/ruby/site_ruby/1.8/universal-darwin8.0 /usr/lib/ruby/site_ruby /usr/lib/ruby/1.8 /usr/lib/ruby/1.8/powerpc-darwin8.0 /usr/lib/ruby/1.8/universal-darwin8.0 . nil irb(main):002:0> requrie 'rubygems' NoMethodError: undefined method `requrie' for main:Object from (irb):2 -------- 実行時のパスが異なるようです どのようにしたら、この問題を解消できるでしょうか。
377 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 03:33:48 ] うん、そのtypoは俺もよくやるよ
378 名前:374 mailto:sage [2008/05/02(金) 03:52:32 ] >>377 まちがえました…ご指摘ありがとうございます typoしなくても以下の通りです irb(main):001:0> No such file to load -- rubygems from (irb):1:in `require' from (irb):1
379 名前:デフォルトの名無しさん [2008/05/02(金) 05:40:38 ] >>366 オブジェクトが参照なのと、引数の参照渡しを一緒にスンナ 何が「すべて参照渡しと言ってもいいくらい」だ
380 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 12:10:57 ] 「参照の値渡し」とか「オブジェクト渡し」とか言われる形態だな
381 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 14:35:21 ] >>378 FinderからではなくTerminal上で open -a Emacs とする、 もしくは .emacsに irb の位置をフルパスで指定する、のどちらか。 後者なら、~/.emacsなどに (setq ruby-program-name "/opt/local/bin/irb") と書けばいいと思う。たぶん。
382 名前:デフォルトの名無しさん [2008/05/02(金) 15:43:21 ] TechCrunch Japanese アーカイブ ? Twitter、Ruby on Railsを放棄か ttp://b.hatena.ne.jp/entry/jp.techcrunch.com/archives/20080501twitter-said-to-be-abandoning-ruby-on-rails/
383 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 18:21:49 ] Emacs から info で Ruby のマニュアルを調べたいと考えているのですが、 現在、配布されているドキュメントは html 形式のみですよね Ruby 1.4 の時に配布されていた info ruby-texi-1.4.tar.gz も、ネット上のどこにも落ちていない…
384 名前:374 mailto:sage [2008/05/03(土) 00:25:29 ] >>378 感謝です。おっしゃるとおりでした。 後者も有効です。
385 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 17:38:08 ] Rubyに抽象メソッドって無いの?
386 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:14:12 ] >>385 実行前に実装を強制させる仕組みはない。 定義してなければ呼んだときにmethod_missingが呼ばれる。 あとは スーパークラスで抽象メソッドにしたいメソッドを定義して raise NotImplementedError するとか inheritedフックを使って、継承した時点でチェックするとか。
387 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:31:01 ] >>386 Class#inheritedがよさげです ありがとうござました
388 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:45:07 ] inheritedって class Hoge < Moge の中を実行する前に呼ばれてるような。
389 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:45:28 ] どうしてruby使ってるの? pythonでなくてrubyを使う理由って何でしょう? 日本人が作ったのが誇らしいとかですか????
390 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 22:50:50 ] ?が2個以上連続しているレスは釣り
391 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:15:38 ] Ruby 初心者スレッド Part 18 pc11.2ch.net/test/read.cgi/tech/1203658291/623 623 名前:デフォルトの名無しさん[sage] 投稿日:2008/03/24(月) 14:34:59 どうしてrubyなの? 実績も何も無い言語ですよね pythonじゃなくてrubyを使う理由を一つでもいいから教えてください 開発者が日本人なのが誇らしいとか??????
392 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:18:17 ] >>389 どうして日本語使ってるの? 英語でなく日本語使う理由って何でしょう? 日本人が作ったのが誇らしいからですか????
393 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 01:11:30 ] イエス!ジャパニーズ! ノー!フューチャー!
394 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 02:41:51 ] pythonはopen classじゃないとかいろいろめんどい openclassはちゃんとしたアプリがつくれない、って言われてるけど その通りだと思う。でもスクリプト(笑)言語でちゃんとしたアプリは 作らないから問題ない。
395 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 07:31:41 ] 式と文や、メソッドと属性なんかが分かれてるのが気に入らない。
396 名前:デフォルトの名無しさん [2008/05/04(日) 11:46:23 ] クラス内部でしか使わないサブルーチンのようなメソッド定義ってできますか? たとえば、 class Hoge def a(int1, int2) return int1+int2*int2 end def self.b(int) p a(3, int) end end Hoge.b(5) の様には書けないんでしょうか。 classとselfとHogeを外すと正常に動作するんですが。
397 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 11:55:54 ] Pythonは「メソッド=メソッドオブジェクトが入った属性」な感じ? メソッド側に属性を統一するのがRuby流で 属性側にメソッドを統一するのがPythonって思ってる。 俺の場合はlambdaの使い難さで使わないけどな。>>Python 文が書けないし、構文自体が無茶になるから 結局、一時的な関数内関数を書きまくることに。
398 名前:デフォルトの名無しさん [2008/05/04(日) 11:58:13 ] aをselfしてprivateに指定するんでしょうか?
399 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 12:03:11 ] >>396 クラスメソッドとインスタンスメソッドと特異メソッドの勉強が必要
400 名前:デフォルトの名無しさん [2008/05/04(日) 12:06:21 ] 観念的なのは10冊くらい読んだのですが、結局、よくわからんのです。 実際の挙動というか、メモリ上の状態を記述しているような 説明がないので。 一応、インスタンスはコピーという感じで良いんでしょうか。 クラスと特異の実際の状態が掴めないのでよく解りません。
401 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 12:17:25 ] >>400 中田育男先生の コンパイラの構成と最適化 お勧め
402 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 12:20:51 ] つprivate_class_method
403 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 12:34:20 ] >>396 self.bの定義の中ではselfは(挿入されている特異クラスはさておき) Hogeというクラスそのものなわけだが、このとき(レシーバを 省略した)aの呼び出しでも、当然レシーバはself(=Hogeクラス) になる。
404 名前:デフォルトの名無しさん [2008/05/04(日) 13:04:58 ] >>400 この辺はじっそうによるからなあ。 コード書いてみて、実験したりして挙動を確かめる方が身につくよ。 本も大事だけどさ コード書かないで理解は無理だべさ
405 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 13:18:59 ] >>396 まずどういう目的で、何をするためのスクリプトを書いてて詰まったのか そこを書いた方が回答しやすい 学習目的なら、特異メソッド(Hoge.b)の理解は後回しで良い それよりも、まずクラスとインスタンスの概念を理解することが先
406 名前:デフォルトの名無しさん [2008/05/04(日) 14:10:12 ] >>405 目的はある処理をするクラスを作っていて、 クラス内部の処理を解りやすくするために、関数で処理を まとめようとしていました。 色々と処理の分岐があるので、その方が解りやすく書けるからです。 新たにクラスを作るほどは大きくなく、下手に複数のクラスにして データのやりとりで悩まなくていいし、1ファイルに納めるのに 都合が良いからです。 しかし、メソッドを定義してやると、クラス外からも呼び出せるし、 何か気持ち悪いので良い方法はないのかと思って聞いてみました。 そもそも、クラスの使い方が間違ってるような気もしていたので。 クラスから自身を呼んでインスタンス化するというのも、 自身の、呼び出した部分のコードがメモリに読まれるので、無駄な気がするし。
407 名前:デフォルトの名無しさん [2008/05/04(日) 14:57:18 ] >>401 読んでみます。 >>402 やはりプライベートにして、アクセスを禁止してしまえば良いんでしょうか。 >>403 なるほど。再帰的に呼び出してるわけですよね。 クラスを呼ぶのでクラス指定しないとダメなんですかね。 クラス内だから関数的に呼べるのかなとも思ったんですが。 なんとなくあやふやな感じで理解してましたが。 selfを付けるのと付けないのでどういう違いが 発生するのかいまいちよくわからないのですよね。 selfを付けると、スクリプトの実行時に既に実行可能になってるのか それとも、クラスが呼ばれたときに実行可能になるのかとか。 >>404 そうですか。あはは。 オブジェクト指向って奥が深いですね。 何か図形的なモデルがあると理解し易いんですが。 きっと複雑な状態遷移があると思うので、 言葉だけではすぐに理解するのは難しいのかなと。
408 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 15:55:51 ] 説明が漠然としててよく分からんが Hogeのインスタンスを作っており、なおかつ外部から呼ばれたくないメソッドなら 普通にプライベートメソッドでOK あとself.bは、クラスメソッドの定義なので クラスの外でもHoge.bと書けば呼べてしまう 詳しくはリファレンスマニュアル内、「クラスメソッド」の項を参照 ttp://www.ruby-lang.org/ja/man/html/_A5AFA5E9A5B9A1BFA5E1A5BDA5C3A5C9A4CEC4EAB5C1.html#a.a5.af.a5.e9.a5.b9.a5.e1.a5.bd.a5.c3.a5.c9.a4.ce.c4.ea.b5.c1
409 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 20:13:44 ] >>407 すごい大雑把に説明すると、 クラスは鯛焼きプレートでインスタンスは鯛焼き。 def self.foo と定義したものはクラスメソッド。 def bar と定義したものはインスタンスメソッド。 インスタンスメソッドはインスタンスがないと (Hoge.new しないと) 実行できない。 クラスメソッドはクラスが定義されていれば実行できる。インスタンスは不要。 インスタンスメソッドからクラスメソッドを呼ぶのは可能。 def bar self.class.foo end クラスメソッドからインスタンスメソッドを呼ぶには new しないとだめ。 あちこちに self が出てきて分からなくなってきたら p self として確認すればいいんじゃね。
410 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 15:02:25 ] PHPのGDに相当するRubyライブラリって何でしょうか? 円や直線など基本的な描画に加えて日本語の出力を行いたいです d.hatena.ne.jp/koki-h/20060822/p1 2年前の記事なのですが、現在は何か決定版があるのでしょうか?
411 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 15:10:40 ] GDが使いたいならRuby/GD
412 名前:デフォルトの名無しさん [2008/05/05(月) 22:40:56 ] >>408 プライベートで良いんですね。 ありがとうございます。 >>409 なるほど。 selfで呼べば良い訳ですね。 インスタンスメソッドは関数の型宣言みたいなもので、 クラスメソッドは関数みたいな物ですね。 ありがとうございます。
413 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:02:25 ] あ。違いますね。 インスタンスメソッドは実行時に一つ起動しているオブジェクトで、 スコープの範囲で何時でもどこからでも呼べる。 クラスメソッドは宣言してからようやく使えるメソッドですね。 オブジェクトの起動タイミングが違うという理解でしょうか。
414 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:33:54 ] >>413 かなり致命的に理解を間違っているようなので このスレで聞くよりも、身近なプログラマに直接質問してみることを薦める もしくはGoogleで、オブジェクト指向について基礎から解説してるページを探すとか
415 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:43:24 ] >>413 1.私は万年筆が好きだ 2.私はこの万年筆が好きだ この二つのうち、1は万年筆というもの、2は具体的な品を指してるだろ オブジェクト指向では1がクラス 2がインスタンス ここで.色関数を考えると、 (2の意味の万年筆).色 ってのは、具体的な品だからちゃんと色が決まってる これがインスタンスメソッド (1の意味の万年筆).色 だと、色が決まらないから、クラスに対してインスタンスメソッドは 呼び出せない 同様に、そのものの種類を返す関数 .kind があったとする このときは、(1の意味の万年筆).kind で、"万年筆"って文字が返ってくるし (2の意味の万年筆).kind でも、同じように"万年筆"って返ってくる これがクラスメソッド
416 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 01:09:00 ] >>415 > (2の意味の万年筆).kind でも、同じように"万年筆"って返ってくる > これがクラスメソッド これは違うんじゃ...
417 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 01:11:19 ] 比喩でクラスとメソッドの関係を説明しようとするのがそもそも間違いだな
418 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 12:06:22 ] つまり、既に初期化されている(スクリプトを読んだ時点で)のがクラスメソッドで、 インスタンスメソッドはnewなどして、その時点にならないと 初期化されないメソッドという事じゃないんですか?
419 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 12:35:38 ] Rubyではクラスもオブジェクト。 Rubyではオブジェクト毎にメソッドを定義できる。 クラスオブジェクト(Classクラスのインスタンス)にメソッドを定義したのがクラスメソッド。 そのクラスのインスタンスとは直接は関係しないから、クラスメソッドを定義しても、インスタンスメソッドには影響しない。
420 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 12:47:26 ] irb> class C ;def C.clsmtd; p self.object_id; end ;end irb> C.clsmtd 537963320 irb> p C.object_id 537963320 irb> p C.new.object_id 537887540
421 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 13:09:22 ] >>418 どうもインスタンスメソッドに関して、誤解があるように思えるな foo_instance = Foo.new # オブジェクトの生成 foo_instance.a(1, 2) # foo_instanceのメソッドaを実行し、結果を返す a(1, 2) # エラー このスクリプトでなぜエラーが出るのかは理解できる?
422 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 14:41:55 ] では、クラスは何処にあるんですかね? インスタンス化されたクラスは? 場所の定義は無いんですか?
423 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 15:13:18 ] Rubyがどうかは知らんが、よく用いられるモデルで説明してみる class A @a @b @c end instance = A.new は、C言語でいえば、void *instance = malloc(3); この3はAに変数が三つあることに対応してて、このケースならinstance[0] が @a ,instance[2] は@cに対応してる 例えばここにインスタンスメソッドとして def set_a(new_a) @a = new_a end があったとする。 instance.set_a("test")のように呼び出すと、内部ではset_a(instance,"test")と変換される 実際に呼ばれる関数は、C言語で書けば void set_a(instance , new_a) { instance[0] = new_a; } こんな風に、@aなりを使ってると、listのアドレスを確定させなきゃならんから 具体的なインスタンスに対してしか使えない クラスメソッドは、Cでいうところのグローバル変数のみを使ってる関数で イメージ的には int num = 10; int class_num() { return num; } に対応する。 この場合は変数instanceをメソッド内で使ってないので、A.class_method でもいいし instance.class_method でもおk
424 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 15:16:52 ] 訂正 >line23 listのアドレスを→instanceのアドレスを >line29 int class_num() ⇒ int class_method()
425 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 18:26:27 ] >>422 定義されたクラスは、定数として存在している class Foo (ここにメソッドとかの定義) end print Foo.name # "Foo"が出力される print Foo.class.name # "Class"が出力される
426 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 18:46:53 ] Rubyではクラスもインスタンスもオブジェクトで、実体はオブジェクトスペースに存在してるよ。 それらに名前をつけたのが変数や定数。 変数や定数は実体がオブジェクトスペース内のどこにあるのかの情報を持ってる。
427 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 19:45:36 ] 『プログラミングRuby』にもそんな感じの章があるよ 構造体、メモリ、ポインタで説明してほしい人は 読んでみると何かしら得るものがあると思うんだ ttp://www.ruby-doc.org/docs/ProgrammingRuby/html/classes.html ここの図が良いんだけどFigure not availableになってるのが残念
428 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:05:52 ] rubyでオブジェクト指向理解しようなんて無理でしょ 遠回りだけどjavaをしっかり勉強した方がいいじゃないの?
429 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 22:10:44 ] Javaのオブジェクト指向はオブジェクト指向なJavaでしかないと思うんだ
430 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 23:32:46 ] オブジェクト指向を理解するという文脈でJavaを第一に持ってくる ってことは理解してないってことだよな。
431 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 00:09:23 ] ていうか Rubyのクラスとインスタンスとメソッドを理解したいのか オブジェクト指向プログラミングのクラスやインスタンスを理解したいのか どっちかにして欲しい 後者ならスレ違いだ
432 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 00:55:34 ] >>430 オブジェクト指向を学ぶ上でJavaより勉強する価値のある言語って何? 批判するだけで自分の考えは何も無いの?
433 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 00:57:09 ] Smalltalkあたりじゃないかな。
434 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 00:57:26 ] smalltalkじゃね?
435 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 00:57:55 ] 有名なのはSmalltalkかな
436 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 00:59:01 ] Smalltalkだろ。
437 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 00:59:26 ] Smalltalkだな
438 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:00:25 ] smalltalkがjavaより勝ってるものって何?
439 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:05:34 ] 純粋さ
440 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:06:56 ] おっと無能の数はjavaには敵いませんな
441 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:06:57 ] 2chは知ったかばかり
442 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:11:16 ] オブジェクト指向の学習用として考えるなら、だいたいどれも大差ない C++でもRubyでもPythonでもJavaでも (smalltalkは使ったことないから知らないが)
443 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:11:46 ] >>438 というかJavaは、意図的に完全なオブジェクト指向にしてない 実用面ではどうかってなるとまた別の話になるんだが、 少なくともオブジェクト指向って観点から見ると美しくない 逆にSmalltalkは文字通り全部がオブジェクト 制御構造すらオブジェクトのメッセージ扱いになる RubyもSmalltalkからメタクラスとかの概念をもらってるはず
444 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:12:09 ] smalltalkがjavaより勝ってるものって何ですか〜?
445 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:15:03 ] じゃあどうしてデザインパターンの書籍の多く(専門書も含めて)はJavaを元に書かれてるんだ?
446 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:16:28 ] JavaはOO貫徹をあきらめてAlgol系並の実用性を手に入れたようなもんだからな。
447 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:17:39 ] >>445 最初のGoFはSmalltalkだったぞ。 のちにJava優勢になったのは普及度の違い。
448 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:18:33 ] >>445 オブジェクト指向をよりよく体現してる=言語として人気がある とはならないだろ どっちにしろJavaで上手い設計してる奴はSmalltalkから来てるよ
449 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:20:16 ] Javaスレッドで前にも見たような流れだな 少なくとも実用的な言語を元に学ぶのが良し、という考え方の元ではJavaだろう Smalltalkでオブジェクト指向を学べってのは大げさ過ぎる
450 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:20:46 ] >>445 実用を兼ねてるんだろう Java使ってる人は多いだろうし、JavaはC++やC#とかとも文法が似てる ・・・・・と言いつつ、GoFのデザパタ本はSmalltalkも使ってたような
451 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:21:40 ] smalltalkってそんなに完成された言語だったの??
452 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:22:22 ] つかなんでいきなりデザインパターンみたいな応用が出てくるんだ もともとの問題を摩り替えないほうがよい
453 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:25:46 ] Javaで学べっていっても初心者的には構文覚えて精一杯じゃないか 自分でいい設計してるソース探してきて読むとこまで勉強するよりは Smalltalkのライブラリでも読んでりゃいいとは思う
454 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:26:16 ] GoF本は最初のバージョンはSmalltalkとC++でサンプルが書かれてる。 もともとSmalltalkで得られた知見だしな。 新しい版はJavaコードも使ってる。
455 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:27:35 ] >もともとの問題を摩り替えないほうがよい Smalltalkに噛み付く奴はスレ逸らしだろうな
456 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 01:27:46 ] OOを覚えるためにはやはりEiffelしかないだろ
457 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 02:00:12 ] Eiffelもやっとくべきだと思いつつまだ入門もしてないだよなー。
458 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 06:09:55 ] なんというか>>400 読んで、 ちょっと前に本スレにいた京大君を思い出すんだよな(本人だと言うわけではなく)。 んで、実際のところ質問者はCとかでは、コードをすらすら書けるんだが、 「オブジェクト指向」(または、Rubyのモデル)の概念でつまづいてコードが書けないのか。 それとも計算機の理論を一通り座学して、これからコードを書くに当たって、 (Cではなく)楽ちんそうなオブジェクト指向スクリプト言語を選んだのか。 前者と後者で、かなりすべき対応が変わると思うんだが。
459 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 07:26:35 ] Javaは非オブジェクトな型をあえて残した言語だからな OOPLとしては、普及してるが純粋でない。
460 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 10:24:48 ] Smalltalk が Java や Ruby より圧倒的に勝っているところをひとつ挙げるとすれば リフレクションとかに代表されるイントロスペクション機能でしょうね。 分かりやすいところでは、IDE やデバッガなどの機能充実度や、それらの 作りこみやすさに出てくる特徴です。もとは LISP 譲りの機能ですが、Smalltalk での 充実度は LISP をも凌駕しています。これは Smalltalk 処理系が Smalltalk 自身で 記述されている(記述可能…とかではなく、実際にそれで運用されている)ことに 由来します。 Ruby 実装では Rubinius や今度の RailsConf でデモされる予定の MagLev が、 現在の制約を克服して Smalltalk に近づこうと努めているみたいです。 これらは Smalltalk と同じく、Ruby 処理系をできるだけ Ruby で記述しようとする ものたちです。 あと余談ですが Java は、Ruby や Smalltalk などの「メッセージングのOO」という パラダイムに則していないだけで、C++ や Eiffel などの「ユーザー定義型のOO」と いうパラダイム的にはかなり純粋なほうですよ。念のため、後者は“ユーザー定義型”を クラスで実現しようとする考え方で、メッセージのやりとりとかとは無関係です。 裏を返せば、Ruby や Smalltalk は、Java の土俵である「ユーザー定義型のOO」的な 切り口で見たときに、足りないところが多々あるということになり、実際にそうなっています。
461 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 10:54:06 ] Smalltalk まで読んだ >>458 ぶちゃけた話、オブジェクト指向を完全理解しなくてもRubyのクラスやメソッドは使えるよな 継承や委譲もなんとかなると思う
462 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 12:36:37 ] >>458 オブジェクト指向が分からないのか、 Rubyでのオブジェクト指向を実現する技法が分からないのかでも話が変わってくるのでは オブジェクト指向って思考法そのものは言語に依存しないと言われているし
463 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 13:02:54 ] 関数は (関数 引数 引数) 見たいな記述でもキモいって言われないのに オブジェクトは メソッド(オブジェクト 引数 引数) だとキモいって言われるのはどうして?
464 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 13:16:56 ] どのくらい言われてるかはわからないけど、あるとしたら、多重定義の関係じゃない? 「呼び出し先の決定権を持っている奴」が、端っこではない場所に居て、やや目立ちにくい ・・・という、ビジュアル的な違和感ではないかと思う。 結局のところ、慣れればそれまでって気がするけどね。
465 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 13:18:40 ] 第1引数を太字でシンタックスハイライトすれば解決 いやわりとマジ
466 名前:デフォルトの名無しさん [2008/05/07(水) 15:18:42 ] すごく初歩的な質問なんですが、 puts "あなたの名前は?" name = gets.chomp puts "あなたの名前は#{name}です" これを実行しても dan(←入力数値) あなたの名前は? あなたの名前はdanです となって文字列の出力するタイミングが意図したものにならないんです^^; どうすればいいのでしょうか? ちなみに開発環境はRDEを使っています。
467 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 15:27:17 ] $stdout.sync = true puts "あなたの名前は?" name = gets.chomp puts "あなたの名前は#{name}です"
468 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 15:44:27 ] smalltalkerって名前の割によく喋るね
469 名前:デフォルトの名無しさん [2008/05/07(水) 15:47:15 ] >>467 さんありがとう!できました^^
470 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 20:38:45 ] >>464 関数に見えるというのが。フラットな名前空間にとっちらかる感じで。 名前空間を導入すると今度は対象がわかってるのに名前空間を書かないといけないのがあれで。 ……まあ結局は気分なんだが。CLOS がやっていけてるんだからやっていけるんだろう。
471 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 21:55:06 ] >>463 > オブジェクトは メソッド(オブジェクト 引数 引数) だとキモいって言われるのはどうして? C言語でオブジェクト指向で書くとそんな感じだから、別にキモいとは思わない。
472 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 21:56:37 ] >>463 メソッドチェーンができないから
473 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 22:51:46 ] smalltalkとオブジェクト指向の話面白そうだなぁ 誰かスレッド作ってくれんかなぁ
474 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 09:36:58 ] cgi で画像を並べたいんだけどどんなふうに書けばいいの? つまりはこういうソース吐きたいんだけど <div>1 2 3 4 5</div> <div>6 7 8 9 10</div> or 1 2 3 4 5<br> 6 7 8 9 10<br> or <div>1 6</div> <div>2 7</div> <div>3 8</div> <div>4 9</div> <div>5 10</div> あとオプション1つでテーブルタグも吐けたりするとうれしいな
475 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 11:06:53 ] まあとりあえずは自力で配列内容を表示させる勉強しろ 手を抜くより先に覚えることはたくさんある 「自分で作れるけどもうめんどいから他のことに時間かけるために手を抜く」 というのが正しいプログラミング メソッドを作ることはできるかな できないのなら作り方おぼえるといい
476 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 11:22:11 ] 引っかかる点は何だろう 「カウント○ごとに何かをする」という専用の処理が何かあると思うことかな ありそうだけど無いよね each_with_index で回して index + 1 の 剰余5 が 0 のとき何かする、という記述しかない?
477 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 13:13:18 ] each_sliceともちょっと違う?
478 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:07:17 ] def group_by hash = {} each do |item| key = yield(item) (hash[key] ||= []) << item end hash.collect {|key, arr| arr } end こんなメソッドって標準になかったっけ?
479 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 20:01:55 ] Enumerable#group_byは1.9と1.8.7だけかな? もっとも、Hashのままで返すけど。 というか>>478 のだと、どのグループかわからなくなるんじゃないか?
480 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 20:03:15 ] > hash.collect {|key, arr| arr } hash.values
481 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 21:16:18 ] >>479 ,480 さんくす そうだよな、Hash#values があるじゃん なんて間抜けなんだ
482 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 14:38:43 ] rubyを最近習い始めたのですが、 1からキーボードで入力した数までの和をもとめる プログラムの作り方がいまいちわからないのですが 教えていただけませんでしょうか?
483 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 14:40:53 ] すいません、スレ違いでした。 スルーしてください
484 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 14:54:50 ] >>482 def sum(n);n*(n+1)/2;end
485 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 15:58:44 ] >>484 が良い解だと思うけど、Ruby的には def sum(n); (1..n).inject{|a,b|a+b}; end という風にできることを知っていると後で役に立つかも。 立たないかも。
486 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 18:37:59 ] 似たような演算を多数作るなら、以下のように。 ただし>485の5倍程度の時間がかかる。(毎回evalのため) def fn_maker(fn,lst);lst.inject{|r,i|eval("r"+fn+"i")};end def summerise(x);fn_maker("+",x);end def multiple(x);fn_maker("*",x);end def divide(x);fn_maker("/",x);end def subtract(x);fn_maker("-",x);end def sum_1_to_n(n);summerise(1..n);end p sum_1_to_n(10) a=[3.0,5,2] p summerise(a) p multiple(a) p divide(a) p subtract(a)
487 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 18:54:07 ] send使えよ
488 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 19:15:48 ] つか初心者スレっぽいな
489 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 19:43:59 ] >>482 に対して>>484-486 を持ち込むあたりいかにも初心者だな 微笑ましい…のか?
490 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 19:50:19 ] 入力をどう扱うかも示さないと回答として片手落ちだしな
491 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 20:05:25 ] というか初心者スレとしては普通に回答するか解説つきで説明すべきなんだがね 自分の知識の結果をただ披露して悦に入ってどうするよ
492 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 20:07:48 ] YARVで、あるベンチマークが * 「100%速くなった」というのは、時間が半分になったということ? * 「200%速くなった」というのは、時間が1/3になったということ? * 「25%速くなった」というのは、時間が20%減ったということ? ( 1 / (1-0.20) = 1.25 ) 教えてえらいひと。
493 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 20:17:30 ] 自己嫌悪はそこまでにして、次w
494 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 20:23:19 ] >>482 数値から数値までを足すときはガウスが少年時代に行った 計算方法を利用してプログラムを作った記憶が有るなあ 1~aを計算するとして aが偶数なら(1+a)*(a/2) aが奇数なら最初にa+1に対して上と同じ計算をして最後にa+1を引くように すれば簡単に計算できた記憶が有る 例えば a=10(偶数)ならば (1+10)*(10/2) a=11 (奇数)ならば i=a+1 (1+i)*(i/2)-i と場合分けすると式が短くて簡単
495 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 20:44:11 ] >>494 なるほどね。 他の方法で暗算だとa,a+1のうち、偶数になる方を2で割ってから掛け合わせたりする。 例: 1~100の場合、100*101/2 = (100/2)*101 1~123の場合、123*124/2 = (124/2)*123 以上は経験的に「奇数の1/2 * 偶数」よりも「偶数の2/1 * 奇数」の方が 暗算しやすいからだけど、プログラムにも活かせると面白いかも。 例えば、少量データで早い実装、大量データで早い実装のように複数の関数を 用意しておいて、稼働状況に応じて使う関数を自動的に切り替える。
496 名前:デフォルトの名無しさん [2008/05/11(日) 11:38:08 ] str0 = "bar" の時、マニュアルによると p str0[3, 1] #=> nil らしいですが、自分の環境(1.8.6 mswin32)では""が返ってきます 何が悪いのでしょうか
497 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 11:54:30 ] 'bar'[2, 1] #=> 'r' 'bar'[3, 1] #=> '' 'bar'[4, 1] #=> nil 本当だ。なんかバグっぽい挙動だな
498 名前:デフォルトの名無しさん [2008/05/11(日) 16:47:40 ] fw(findwordの略)というプログラムを作ろうとしています。 fw -fp '/usr/include/**/*.h' '~/**/*.h' -wp 'define\s+\w+' -pp '%1 %2 %3'という感じで -fp の後ろに複数のファイルパターンを -wp の後ろに複数の単語パターンを -pp の後ろに表示用のフォーマットを指定できるようにしたいのですが、optparseをうまく操れません 上記の実行例だと ["/usr/include/**/*.h", "~/**/*.h"] ["define\\s+\\w+"] と表示されて欲しいのですが、実際は ["/usr/include/**/*.h", "~/**/*.h"] ["define\\s+\\w+", "%1 %2 %3"] と表示されてしまいます printpattern = "%1:%2:%3" # filename:linnum:line print = proc {|filename,linenum,line| STDOUT << (printpattern %filename %linenum %line) << "\n" } filepatterns = [] wordpatterns = [] ARGV.options {|opt| dest = wordpatterns opt.on('-fp' , '--filepattern') { dest = filepatterns } opt.on('-wp' , '--wordpattern') { dest = wordpatterns } opt.on('-pp S' , '--printpattern S' , String) {|s| printpattern = s } opt.order! {|s| dest << s } p filepatterns p wordpatterns }
499 名前:デフォルトの名無しさん [2008/05/11(日) 18:00:07 ] 正規表現に完全にはマッチしてないのだけど、あと数文字付け加えてくれたら 完全にマッチするみたいのを検出したいのですが、いい方法はないでしょうか?
500 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 18:05:01 ] >>498 ショートオプションはアルファベット一文字のみ あと質問にはないが、(printpattern %filename %linenum %line) はRubyでは動かない
501 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 18:31:50 ] >>499 そのあと数文字を付け加えてない状態を正規表現で表せばいいんじゃない? もっと具体的にやりたいことの例を出してみれ 解決策が出てくるかもしれないよ
502 名前:498 mailto:sage [2008/05/11(日) 19:53:16 ] >>500 ありがとうございます。 一文字にしたらうまくいきました。 フォーマットは"%1$s:%2$s:%3$s" %[filename, linenum, line]でいけました >>501 499も実は私なのですが、498のプログラムのwordpatternに複数行にも マッチする正規表現を指定できるようにして、それでいて表示にファイル名と行番号も表示できるようにしたいです re = /なんか正規表現/ linenum=1 curtext=nil IO.foreach(path) {|line| if nil==curtext curtext=line else curtext+="\n"+line end if 途中までまっち linenum+=1 next else if 完全まっち print.call(path,linenum,curtext) else curtext=nil end linenum+=1 }
503 名前:498 mailto:sage [2008/05/12(月) 00:17:51 ] できたー とりあえず動いてるっぽいです #!/usr/bin/env ruby require 'optparse' if $0 == __FILE__ printpattern = "%1$s:%2$s:%3$s" # filename:linnum:line print = proc { |filename,linenum,line| STDOUT << (printpattern %[filename, linenum, line]) << "\n" } filepatterns = wordpatterns = [] ARGV.options { |opt| dest = wordpatterns opt.on('-f' , '--filepattern') { dest = filepatterns } opt.on('-w' , '--wordpattern') { dest = wordpatterns } opt.on('-p S' , '--printpattern S') {|s| printpattern = s } opt.order! { |v| if wordpatterns.__id__ == dest.__id__ v = eval(v) end; dest << v } } wordpatterns << /\n/ re = Regexp.union(*wordpatterns) text = '' filepatterns.each { |filepattern| Dir.glob(filepattern) {|filepath| next if !File.file?(filepath) linenum = 1 text = IO.read(filepath) text.scan(re) {|m| linenum += $~[0].count("\n") print.call(filepath, linenum, m) if "\n" != $~[-1] } } } end
504 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 02:46:36 ] >>503 > filepatterns = wordpatterns = [] > if wordpatterns.__id__ == dest.__id__ v = eval(v) end; dest << v filepatterns も wordpatterns も同じだろ、これ。
505 名前:498 mailto:sage [2008/05/12(月) 07:55:20 ] filepatterns = []; wordpatterns = [] にしますた
506 名前:デフォルトの名無しさん mailto:sgae [2008/05/12(月) 19:23:13 ] perlの基礎的なスクリプトをたくさん公開しているサイト(KENT WEBみたいな)はいくつかありますが、 rubyのこのようなサイトはないのでしょうか? 今までperlで改造を行っていたのですが、 研究室でrubyを使うことになったので勉強ついでに乗り換えようと思ったんですが…
507 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 19:24:38 ] python使った方がいいと思うよ。
508 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 19:45:57 ] …そーいえば無いな あれは日本のperl(というかCGI)の黎明期に乗ったサイトだから仕方ないか PHPにも無いわけだし問題ないかもしれん >>506 研究室で必要な部分だけ習うだけにしておいたほうがいいぞ
509 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 19:48:34 ] >>506 今まで見た事はないな そもそも「rubyでCGI」自体がかなりマイナーだから CGI前提のスクリプトも数えるほどしかない Web上の解説記事や書籍を頼りに、自力で何とかするのがいいと思うよ もしくはCGIスクリプトに関してはperlに頼るか
510 名前:デフォルトの名無しさん mailto:sgae [2008/05/12(月) 20:36:12 ] ありがとうございます。やはり無いですかー… CGIに関しては今まで通りperlで作ることにします。
511 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 20:43:02 ] 何かの言語でCGIが作れるようになったらあとは言語問わずに作れるはずだけどね。
512 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 21:03:26 ] CGI作るなんてネットワーク技術者か?それともHTTPD製作者かよ? >>506 本ならたくさんあるよ。Ruby CGIでググれ。 ただ、ほとんどPerlと一緒だから面白みはないけどね。 動いてるruby-webアプリなら、tdiaryとかbitclustのソース読むとかしてみれ。
513 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 21:55:35 ] >>512 tdiaryのソースはおすすめせん。bitclustなら許す。
514 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 22:22:38 ] 鯖管としてはRuby CGIは止めて欲しい。
515 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 22:34:28 ] >>514 何故に
516 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 22:34:34 ] まあRubyに限った話じゃないだろうけどね 自作CGIなんて動かして欲しくはないわな
517 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 23:05:41 ] 日本ならtd/hiki動かしてる人はたくさんいるだろう。まあ、railsでtypoをとか 言われたら断りたくなる気持ちはおいらも分かるけど。 その辺はruby1.9/rails3あたりで解決してるといいなあ。
518 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 23:47:59 ] class Object def tac yield(self) end end [[1,2],%w[sys cpu]].tac{|src|src[0].zip(src[1])}.tac{|src|Hash[*src.flatten]} => {1=>"sys", 2=>"cpu"} このtacに相当する標準のメソッドってありますか?教えてください
519 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:14:59 ] 同じではないがtap Ruby1.9のメソッドだったがプレビュー版1.8.7にも入ってる おそらく次の安定版Rubyでは標準で使えるだろう
520 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:23:45 ] 配列の配列をハッシュに変換する方法、という意味かもしれない そういえば、なんで標準で「一気にハッシュに変換・登録」ができないの?
521 名前:518 mailto:sage [2008/05/13(火) 00:30:14 ] >>519 一時変数を使わずにlispみたいにゴリゴリ書ける方法は無いかなぁと思って tapを参考に作ったんですが… 標準には無いってことですか
522 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:35:47 ] >>520 キーにまつわる標準的な例外考えるのめんどくさいんだと思う [[1,'one'], [1,'いち']] が {1 => 'いち'} になったらやっぱ例外出すべきだよな、とか
523 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 01:05:51 ] Hash[*[[1,2],%w[sys cpu]].transpose.flatten]
524 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 01:27:19 ] WxRuby2についての質問です。 RubyGemsを使って、wxruby-1.9.6-x86-mswin32-60をインストールしたのですが 付属のサンプルを実行しようとすると、wxruby2.soの読み込みで 「lib/wxruby2.so: 126: 指定されたモジュールが見つかりません。」 と言われてしまいます。何か他に、インストールが必要なものがあるのでしょうか? (WxWidget2.8.7をインストールしてみても、やはり同じエラーが出ました) OS: Windows XP ruby: 1.8.6 [i386-mswin32]
525 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 10:32:09 ] >>524 > (WxWidget2.8.7をインストールしてみても、やはり同じエラーが出ました) PATH通してある?
526 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 12:34:47 ] 1.9.7が出てるようだから試してみるといいかもしれない ただVC8でコンパイルされてるからまずそうな気もする wxruby-1.9.6-x86-mingw32.gemをダウンロードして入れる方が楽かも
527 名前:524 mailto:sage [2008/05/13(火) 17:54:03 ] mingw版をインストールしたら普通に起動できました(WxWidget無しで)。 助言ありがとうございました! ちなみに1.9.7は、次のようなエラーでgemのインストールすらできませんでした。 rake (RUBYLIB等の位置を指定するオプション) extension rake aborted! Don't know how to build task 'extension'
528 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 18:27:40 ] Rubyの初心者にたいして「これは読むべき」だと思うコードを教えてください。 ttp://q.hatena.ne.jp/1210650187 定番回答らしい回答が即っと無いのが現状をよく表しておるのう
529 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 18:56:41 ] たった6時間前に登録された質問じゃん。 青木さんのコードとか、Pickaxeのコードとかいくらでもあるでしょ。
530 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 20:04:07 ] 真面目に答えようとすると難しそうだな それにしてもRubyに限らず定番回答なんて存在するのか? 知ったか的なのならいくらでも挙がりそうだが
531 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 20:19:10 ] net/pop.rbとかはどうだろう。 POPはプロトコル自体も小さいし。 初心者に800行近いのは無理か・・・ mailread.rbはたしかに短いけど、initializeにいっぱい詰めるのは好きじゃないんだよなあ 完全に漏れの好みの問題なんだけどさ。
532 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 20:39:39 ] ここにぁるRubyのコードゎ とっても勉強になるょ>< 初心者なら全部読んでこんなコードを書くくせをつけたほうがいいょ>< golf.shinh.org/l.rb?rb
533 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:49:26 ] コードなんて動けばいいんだよ こういうコードを書くべき、なんてどんだけ 上から目線なんだよ
534 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:50:56 ] まったくプログラムできないんだけど、Rubyを始めてみようかと思ってる。 理由は名前がかっこいいのと日本の方が作ったということで分かりやすいのかなぁと思ったことから。 ただ理由がこんな感じだから、勉強しててもただやり方を覚えるだけの作業のような気がしてならない。 何か作りたい物があれば、そのために勉強していけると思うんだが。 みなさんがRuby(プログラム)を始めたきっかけってなんですか?
535 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:51:00 ] 今から餌撒きかー 頑張れよー
536 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:52:51 ] Rubyを止めたきっかけはPythonでいいと思ったから。
537 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 22:01:35 ] >>534 CGI書くときにPerlが嫌で、他の言語を探してたらRubyに当たった とりあえず、書籍読むなり誰かが書いたコード読むなりして 自分に合いそうだと思ったら始めてみたらいい 目的が欲しいなら、CGIスクリプトか自分用のファイル処理スクリプトでも書いとけ ゲームが作りたいならそれを目標にしても良い
538 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 22:06:35 ] >>534 プログラムを始めたきっかけ: 情報工学部に入ったから Rubyを始めたきっかけ: Perlになんとなく嫌気がさしてたときに、研究室の先生にRubyをすすめられたから
539 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:27:38 ] Rubyを始めたきっかけ: 昔いた会社の社長が気まぐれでMatz本買ってきてRubyおもろいと言いだした Rubyを使うようになったきっかけ: 256本邪道編読んでOfficeだのをいぢりだしてから
540 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:22:41 ] >>519 >>518 を見てそれ tap じゃんて思ったんだけど、 tap って self を返すんだっけか?
541 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 01:08:17 ] selfを返す。 途中に挟んで(ワイヤタップして)、何事もなかったようにメソッドチェーンが進む。
542 名前:デフォルトの名無しさん [2008/05/14(水) 01:55:51 ] >>534 Perlでの「もっと普通にプログラムかかせろ!」という不満から。 ベターPerlから入ったが、今はPerlとは全然違うものと感じている
543 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 12:33:33 ] Rubyだけしか知らないつまらない人間にならないために必要な言語ってなんですかね
544 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 12:41:12 ] >>543 Python Scheme(かGauche、なんでもいいからLisp処理系) Haskell この3つ あと基礎素養としてのCな Perl5とPHP5は身近に使う機会があるならそっち憶えてもいいかと JavaやVisualCやC++や.net関連は仕事で必要なら勉強させられるし 仕事で使わないのなら自分から憶える必要は全くないのでスルーでOK 日本語とか英語とかそういう自然言語のレスがあると予想
545 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 12:52:41 ] SchemeというかGaucheは今ちょっと勉強してる let を元にして let* と fluid-let と letrec というのを作った奴はどうかしてる もう少しわかりやすい説明的名称にするか全く新しい名前を付けるべき
546 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 13:19:45 ] >>543 Rubyをきちんと学んでればそうそう変なことにはならないはず 再帰とか継承とか本当にきちんと理解した? Rubyで憶えられないのに他の言語に手を出したって無駄だぞ?
547 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 14:02:07 ] C系記法の言語を1個覚えると応用が利く。
548 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 14:06:14 ] >>547 初心者スレっぽい
549 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 14:28:57 ] 漏れもCがいいと思うよ。 拡張も作れるし。
550 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 16:22:05 ] Lisp系は解るがPrologは本気で解らん カットで詰まった俺
551 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:20:32 ] CつーのはALGOL系の何かということなのか、 グルーピングに{}を使う言語程度の意味でいいのか。
552 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:35:24 ] 記法ウンタラ言う人は無視しておk
553 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 19:54:36 ] >>544 > あと基礎素養としてのCな 俺ならLispも基礎素養の方に入れるな。
554 名前:デフォルトの名無しさん [2008/05/15(木) 22:38:28 ] Rails初心者です。 rubyをインストール(c:\ruby)後、gemsにてRailsをインストールしました。 そして、MYSQLをインストールしたが、apacheも必要とわかり、MYSQLをアンインストール後 XAMPPをインストール(c:\xampp)。 ウェブアプリ作成用フォルダをc:\rails\を作成し、 テストをc:\rails\testで制作したがrhtmlが上手く表示されないので、教えて下さい。 コマンドプロントで c:\rails>rails test でフォルダ一式を作成した。 その後、WEBrickにて[localhost:3000/]アクセスすると初期画面は表示されました。 さらに、コマンドプロントで c:\rails\test>ruby script\generate controller main と指示を行い、c:\rails\test\app\controllersにmain_controller.rbがきちんと出来ていました。 main_controller.rbの内容→class MainController < ApplicationController end 次ぎにmain_controller.rbをテキストエディタで「def index」でアクションを追加し、 c:\rails\test\app\views\mainのフォルダの中に「index.rhtml」を作成しました。 index.rhtmlの内容→<html><head><title>あいさつ</title></head><body><h1>こんばんは</h1></body></html> それで、WEBrickにて[localhost:3000/main/index]にアクセスすると MissingSourceFile in MainController#index とエラーが出てしまいます。 どうか解決法を教えて下さい。
555 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 00:01:12 ] Mac で使ってます。 rubygems をインストールしました。 で gem install proggresbar を実行したのですが Bulk updating Gem source index for: gems.rubyforge.org/ /usr/local/lib/ruby/site_ruby/1.8/rubygems/specification.rb:556: [BUG] Segmentation fault ruby 1.8.6 (2007-09-24) [powerpc-darwin8.11.0] というのがでてしまいます。 どのようにすればいいのか教えてください。
556 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 10:28:43 ] >>554 PATHの設定がうまくいってないんじゃないかな? エラー文を見るとcontrollerが見つからないって言ってるわけだから 初心者ならインストールを個別にやるよりInstantRailsを使ったほうがよい InstantRails関連 www.itmedia.co.jp/enterprise/articles/0703/05/news014.html instantrails.rubyforge.org/wiki/wiki.pl?Instant_Rails japan.zdnet.com/sp/report/story/0,2000056431,20352478,00.htm それからIDEはAptanaとかNetBeans推奨 WEBrickの起動も全部やってくれるから codezine.jp/a/article/aid/2482.aspx?p=1 初心者はとにかく楽な方法で最初を乗り切ってしまおう
557 名前:デフォルトの名無しさん [2008/05/16(金) 19:05:44 ] RailsはRailsスレがよいかと 【Agile】Ruby on Rails Part6【DRY】 pc11.2ch.net/test/read.cgi/tech/1210729470/
558 名前:デフォルトの名無しさん [2008/05/16(金) 21:04:29 ] 生POSTを取得したいのですが、どうにも分かりません。 PHPなら、 $stdin = fopen("php://input", "r"); で開けて、EOFまでぐるぐる回すのでしょうが。 Rubyではどうするのでしょう?? ちなみにフォームから送られてくるのは、XML形式のデータです。 お願いします。
559 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:19:13 ] …なまぽすと? require 'cgi' cgi = CGI.new params = cgi.params という記述をした CGI に POST すると、params に適当なハッシュが登録されるから適当なキーで取り出せ 値は1個でも配列になってるから注意な こんなんでどう?
560 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:35:25 ] CGIスクリプトで? 標準入力を読めばいいだけじゃないの?
561 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 22:26:07 ] >>555 rubyはどうやってインストールしたやつ? それとOSのバージョンは? Mac用バイナリはビルド方法が間違ってるという話だが、直ったのかな。 > /usr/local/lib/ruby/site_ruby/1.8/rubygems/specification.rb:556: [BUG] Segmentation fault 556行目は何?
562 名前:デフォルトの名無しさん [2008/05/16(金) 23:06:22 ] >>559 ありがとうございます。 params=cgi.params で、paramsにkey => "<?xml version" になって、その後の部分がvalueになりました。 とりあえず、取得はできました。 もうすこし、きれにとれないかしら? >>560 ありがとうございます。 CGIです。 標準入力って、STDIN.getsとか?でしょうか?? やってみましたが、空っぽでした?何か大きな勘違いかもしれません。
563 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:09:44 ] つうかどういうPOSTの仕方してるんだ?
564 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:15:46 ] CGI.new した時点で標準入力はカラになってると思うよ CGIモジュール内部でも標準入力を読み込み→パースしてるわけだから
565 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:14:41 ] CGi.newしたら内部でinitialize_queryメソッドを使ってPOSTデータは 読み込みきってフォームパラメータ(application/x-form-encoded)や マルチパートとして解析してしまうので、そうでない形式ならCGI.new せずに標準入力を読まなければならない。
566 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:14:53 ] >>558 >>562 もしかして、XML文書をリクエストボディに直接入れてPOSTしたいって意味か フォームとか使わずに そういう用途であれば、cgi.rbを使っている限り対応は不可能なので 他のライブラリに乗り換える必要がある 標準で済ませるならwebrick/cgi、外部ライブラリに頼るならRack あと質問するときは「生POST」のように曖昧な書き方ではなく、もっと具体的に
567 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:20:35 ] CGI.newする前に標準入力読んで, $stdinにStringIOを突っ込むとかするばできそうな気がしないでもない
568 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:49:21 ] まるごと Ruby! Vol.1 ttp://www.amazon.co.jp/gp/product/4844325795 ttp://www.impressjapan.jp/books/2579 また懲りもせず最初からナンバー振っちゃって大丈夫なんかいのう Vol.2 で書くネタのアテはあるんか?
569 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:58:16 ] 舞波ってw くまくまーの人か
570 名前:デフォルトの名無しさん [2008/05/17(土) 03:44:46 ] >>563 >>564 >>565 >>566 >>567 みなさんどうもです。 ttp://d.hatena.ne.jp/mallowlabs/20080329/1206799301 にあるように、Ajaxがらみです。 Railsならa=params[a][b][0]でいけるので Rubyでもそんなに苦労しないだろうと思ったのですが、 その前の段階でつまずきました。
571 名前:デフォルトの名無しさん [2008/05/17(土) 05:01:08 ] >>568 そうそうたるメンバー?じゃないか これは買わねば
572 名前:デフォルトの名無しさん [2008/05/17(土) 06:42:04 ] >>570 の続きです var xml = "<a><b>c</b><b>d</b></a>"; new Ajax.Request(url, {method: 'post', postBody: xml, asynchronous: false, contentType: 'application/xml'}); prototype.jsをつかって上のように非同期でpostデータがきます。 それをRubyで捕まえようとしたのですがうまくいかず質問させていただきました。
573 名前:デフォルトの名無しさん [2008/05/17(土) 07:31:01 ] >> 560 >>564 >>567 ありがとうございます。 結局、CGI.newが先に来ていたので取れなかっただけでした。 a=STDIN.gets ですんなり行きました。
574 名前:554 mailto:sage [2008/05/17(土) 18:42:41 ] >>556 さん ありがとうございます。 すべて、一旦アンインストール(Ruby MYSQL Apache)をして、[Railsのアンインストール方法が分からないですが・・・] InstantRailsをインストールしてみます。 IDEも初めて目にするのですが、いろいろ勉強してみます。 また、壁にぶつかった時は、どうかご教授下さい。
575 名前:556 mailto:sage [2008/05/17(土) 21:14:36 ] >>574 Rails関係ならこちらで pc11.2ch.net/test/read.cgi/php/1207425569/ 俺も常駐してるし他の人も答えやすいと思うよ
576 名前:555 mailto:sage [2008/05/17(土) 21:53:36 ] >>561 お返事ありがとうございます。 ruby は ./configure && make && sudo make install でインストールしまし た。OS は 10.4.11 をつかってます。 /usr/local/lib/ruby/site_ruby/1.8/rubygems/ の556 は @@non_nil_attributes.each do |name, default| value = case default when Time, Numeric, Symbol, true, false, nil then default else default.dup end の when Time, Numeric, Symbol, true, false, nil then default です よろしくお願いします。
577 名前:デフォルトの名無しさん [2008/05/18(日) 09:39:51 ] クラスを作っています。 クラス変数の一度の宣言で、 Klass.new do |k| k.high 30 k.width 40 end klass = Klass.new klass.high = 30 klass.width = 40 klass = Klass.new(:high => 30, :width => 40) の全ての記法に対応出来る方法ってあるでしょうか? attr_accessorは知っているのですが、真ん中の記法にしか対応できないですよね。。 どなたかご存じの方宜しくお願いいたします。
578 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 10:16:58 ] そういうメソッドを自分で作る(attr_accessor も実態はただのメソッド)
579 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 13:03:03 ] 正直、普段から使うほうとしてはどれかひとつに限定して制限してもらったほうが落ち着く インスタンスへのアクセサでもメソッドへの通常引数(順番重要)でもハッシュ引数でもOK、というのはちとしんどい
580 名前:577 mailto:sage [2008/05/18(日) 13:31:45 ] >>578-579 ありがとうございます。 それを聞きattr_accessorが用意されているのでそれで統一したいと思ったのですが、 klass.high = 30 klass.width = 40 とずらずらオブジェクト変数を書くのが面倒です。 みなさんずらずら書いていらっしゃるんでしょうか。 それとも何かいいやりかたがあるんでしょうか?
581 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 13:55:06 ] > とずらずらオブジェクト変数を書くのが面倒です。 >>577 のは全部ずらずら書いてるように見えるが? 普通にinitializeの引数にすればいいじゃないの 他の2つのが良く見えるのなら、メソッドにブロックかハッシュを渡せるようにするだけ 全部出来るようにするメリットは無いよ
582 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 13:57:52 ] 未初期化を許容するインスタンス変数以外はコンストラクタの中で埋めてやらないとまずいと思うな
583 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:01:07 ] ずらずらと書く程沢山フィールドが存在する時点で 何かが間違ってるような気もする。
584 名前:577 mailto:sage [2008/05/18(日) 14:12:05 ] >>581-583 ありがとうございます。コロコロ変わって申し訳ないんですが、 未初期化が不味いインスタンス変数がいくつもあるのでコンストラクタでハッシュを取ることにしました。 class BarGraph def initialize(x) @high = x[:high] or 300 @width = x[:width] or 200 etc.. こんなもんでいいんでしょうか。。
585 名前:577 mailto:sage [2008/05/18(日) 14:13:24 ] すいません。orは||です。
586 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:16:51 ] >>583 それの解消は単に initialize に書かなくなったってだけで、他のメソッドの引数が増えるだけだと思う 処理に必要な外部入力の量っていうのは一定だと思うぜ
587 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:17:08 ] >>585 意外と知らない人が多いけど、Rubyではorも使える
588 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:22:01 ] >>587 @foo = nil or 2 としたとき、@foo の値は?
589 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:24:51 ] 本筋からは外れるが high じゃなくて height じゃないか
590 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:25:52 ] foo = (nil or 2) puts foo => 2
591 名前:587 mailto:sage [2008/05/18(日) 14:28:50 ] >>588 ごめんなさい恥かきました
592 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:29:03 ] >>588 が危険だから or は使われないんだよな 知らないわけじゃなくて、結合度の関係で意図的に避けられているだけだ
593 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:31:42 ] 理解してれば普通に使うだけだろう
594 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:35:35 ] 結合度表が頭に入ってるって人は旧い人を除いて稀だと思う 表を確認するくらいなら () で括るし、面倒になってきた人はあらかじめ || だけ使うだろう 結合度によるバグは見つけるのめんどくさいバグだから or なら期待通りに動作するが || だと動かない、という例があった気がするがどこだったか
595 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 23:06:14 ] 俺はテスト用のシェル紛いの簡易インターフェイス書くために while print('>>> ')or gets p eval($_)rescue p $! end なんてよく書いてしまう いやirbでも良いとは思うんだけどねw
596 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 00:12:19 ] 結合度の他には || が式を作るのに対して、 orは文を作るってところか?
597 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 00:44:20 ] Rubyに文なんてないよ。
598 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 00:47:36 ] いや、これのことか。 www.ruby-lang.org/ja/man/html/_A5D7A5EDA5B0A5E9A5E0.html >また、メソッドの引数に指定できない式と指定できる式があります(このよう な式 >を「文」と呼び分ける場合があります)。 >メソッドの引数に指定できない式の例 >and, or, not >if/unless/rescue 修飾式, ...
599 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 01:43:01 ] Windowsだけど、 rubyスクリプトをPowerShell上で直接動かすと、 別に、コマンドプロンプトが開いて、そこで実行しちゃうのはなんで? ./hoge.rb で実行すると、コマンドプロンプトが開いてしまう。 ruby hoge.rb だと、ちゃんとPower Shell上で動く。 pythonは ./hoge.py でもちゃんとPower Shell上で動く。 ruby 1.8.6 (2008-03-03 patchlevel 114) [i386-mswin32] と、 ActiveScriptRuby 1.8.6(p114) で確認。
600 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 02:52:02 ] >>599 拡張子の関連付けの問題じゃあなかろうか?
601 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 04:25:59 ] >>596 できるよ。 以上。 はい次の方。
602 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 09:09:43 ] >>599 ASRインスコフォルダの bin に行って、ruby.batをいじってみんさい
603 名前:デフォルトの名無しさん [2008/05/19(月) 14:18:14 ] 文字列置換の質問です。 puts "hoge_mage-fuoo1.2.3".sub(/^(.+)-.+$/,$1) というのがirbだとうまくいくのですが、ファイルに書いて実行するとエラーになります。 in `sub': can't convert nil into String (TypeError) これを解決する代替案はどのようなものがありますでしょうか?
604 名前:デフォルトの名無しさん [2008/05/19(月) 14:21:37 ] >>603 ああ、これFAQレベルの質問だ。 自己解決しました。 puts "hoge_mage-fuoo1.2.3".sub(/^(.+)-.+$/,$1) かブロックで、 puts "hoge_mage-fuoo1.2.3".sub(/^(.+)-.+$/) { $1} だ。 irbは2回やったから上手くいったんだ。 自分でメモまでしといたのに忘れるとは・・・。
605 名前:デフォルトの名無しさん [2008/05/19(月) 14:22:06 ] >>604 修正 > puts "hoge_mage-fuoo1.2.3".sub(/^(.+)-.+$/,$1) puts "hoge_mage-fuoo1.2.3".sub(/^(.+)-.+$/,'\1')
606 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 14:25:36 ] 本当に本気でどうでもいいんだけど、 カッコとブレースの間って空白置く派が多いのかな? ){ のほうが個人的には気持ちいいんだけど
607 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 17:26:22 ] >>606 空白置く派だな。 標準添付のもほとんどそのはず。
608 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 17:30:26 ] >>576 自前なのか。 修正済のバグかもしれないので、1.8.6-p114とか1.8.7-preview3あたりで確認を。 それでも落ちるようなら、gdbでバックトレースを。 めんどくさいのでできればBTSに。
609 名前:599 mailto:sage [2008/05/19(月) 20:07:42 ] 結論を言うと、Rubyのせいじゃなくて、 環境変数 PATHEXTに.rbが登録されてないせいだった。 .pyはpythonをインストールした時に登録されてたらしい。 PATHEXTに登録されてない場合に、 関連付けでコンソールアプリが実行されると、 コマンドプロンプトが開くのがデフォみたい。 でも、いまいち納得できないな。 どちらにしろ、コマンドプロンプトなんか開く必要無いのに。
610 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 20:21:55 ] winの設計思想のなんたるか、だねえ じき滅ぶよ、きっと
611 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 20:32:20 ] 人口に膾炙して10年以上も経ってるのにまだそんな口きくかね
612 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 20:52:05 ] んー、既に自滅した気が、なんて言ったっけ、VIS...
613 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 21:18:21 ] コンピュータが始まってまだ60年ぐらいしか立ってないから。 無くなるときは割とあっという間だと思うよ。多分携帯に駆逐される。
614 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 21:30:12 ] PC-98 って何で死んだんだろな
615 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 22:31:09 ] 坊やだからさ…
616 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 23:56:00 ] 漢字ROMに守られていた文化が 黒船に駆逐されたからでしょ
617 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 10:05:26 ] それまでは「パソコン」がプラットフォームの中心だったのが Windowsに中心が移ったから。
618 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 19:28:28 ] Windowsが本当に駆逐されたら困るなー、と思う反面 代わりにLinuxが台頭するのはちょっと見てみたいとも思う >>606 俺は空白置かない(くっつける)派 標準ライブラリでは二派に分かれているようだ (検索したら、空白置いてるファイルが置いてないファイルの二倍ぐらいあった)
619 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 09:41:14 ] WindowsにRuby/GDまたはRuby/GD2を使いたいのですが、どうすればいいですか? cygwinやcoLinuxではなくWindows上で直接動かす方法をご存知の方教えていただけるとうれしいです _ _
620 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 16:49:38 ] コンパイルしろ。
621 名前:555 mailto:sage [2008/05/21(水) 23:42:24 ] >>608 返事が遅くなってすみません。 1.8.6-p114とか1.8.7-preview2 とかをインストールしたのですが 基本的に同じような結果になってしまいます。 >> gdbでバックトレースを。めんどくさいのでできればBTSに。 これはどのようにすればいいのでしょうか?自分なりに調べてみたいのですが どうすればいいのかよくわかりませんでした。
622 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:50:56 ] >619 ちなみにmingw版でコンパイルしたsoはmswin32でもそのまま使える (libの下のso入れるとこに突っ込めばおk)
623 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 20:57:12 ] 「みるみるRubygがわかる本」 は、初心者に勧められる入門書ですか? 購入なさった人、情報を持っている方など 感想等お願いします。
624 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 21:03:06 ] プログラミング自体初心者には www1.tf.chiba-u.jp/~shin/tutorial/index.rb Ruby初心者には、他の言語の習熟レベルにもよるけど、 たのしいRubyかプログラミングRubyがいいんじゃないかな。 # その本の批評じゃなくてごめんね。 # 漏れは秀和ということだけで毛嫌いしちゃう
625 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 21:12:50 ] >>623 別に気にしなくていいんだけど、 立ち読みは表紙のイメージで記憶してるので書名で言われてもぶっちゃけ覚えてねー ttp://www.amazon.co.jp/dp/4798019291 で、これな 「何が何でもとにかく『たのしいRuby第2版』との差額900円が惜しい人向け」 だ 900円がないと明日家賃が払えないけど Rubyの本を何か持ってないと明後日異界に連れ去られてしまうとかそういう人向け
626 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 21:13:42 ] あ、あと、ある一定以上の重量の本を手に持つと骨が折れる人とか
627 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 21:23:38 ] 書籍にあるサンプルコード ttp://ftp2.shuwasystem.co.jp/pub/book/1929/sample-list.txt ……うーん…
628 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 21:35:17 ] 3-*あたりを見るとJavaっぽいね。 RubyではgetEuroなんてまず書かない。 多分、to_euroとか
629 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 21:40:56 ] なんだ秀和か。 あそこの本は、よそで出てないネタを押さえてる本は買う価値があるが、 よそで出てるネタの本は微妙な出来のことが多いな。
630 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 21:46:28 ] >>627 とりあえずcaseのインデントが気持ち悪すぎる
631 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 21:48:42 ] >>628 > Javaっぽい なかなか鋭い ttp://www.amazon.co.jp/s/ref=sr_st?__mk_ja_JP=%83J%83%5E%83J%83i&rh=n%3A465610%2Cp_27%3A%8F%B6%93c
632 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 21:53:50 ] >>627 はftpだな ftp://ftp2.shuwasystem.co.jp/pub/book/1929/sample-list.txt ってftpかよ! まあいいけど
633 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 21:57:31 ] Javaな奴にRubyの本を書かせるな めんどくさいから
634 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 22:01:41 ] >>631 やはりJava・・・・・・・なのか? 入門書ばっかり しかも売上が微妙なのかレビューがほとんどついてないのばっかりか
635 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 22:02:31 ] Rubyは『たのしいRuby』いっとけで済むからいいよな サポートサイトのエラッタを見ても頭ひとつ抜けてる感じだ 無理やり難点を挙げるなら熱さやユーモアに欠けるぐらいか
636 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 22:07:59 ] 本当は色々な入門書やら解説書やらが出ていいのも悪いのも結構ある、というのが理想 『たのしいRuby第2版』 し か な い というのが現実 スレ的には面倒がないが、言語普及的には好ましい状態ではない
637 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 22:09:58 ] Rubyで小金が儲かる、という状態でないとなあ Rubyの書籍は売れないから出しません、というような状況になるのはまずい
638 名前:623 mailto:sage [2008/05/23(金) 22:23:55 ] 皆さん情報提供ありがとうございました。 『たのしいRuby第2版』の情報等も参考にさせていただきます。
639 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 22:26:18 ] 他言語を知ってるならピッケル本が良いんだが
640 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 22:37:12 ] Rubyの新しい本はRails含めて最近ちょくちょく出てるんだが、いまいちパッとしない ttp://www.amazon.co.jp/dp/4798019437/ これは、読んだ限りではまあ、うん、まあ、同価格帯で勝負するだけはあるなって感じはするが 目次はここ ttp://www.shuwasystem.co.jp/products/7980html/1943.html
641 名前:デフォルトの名無しさん [2008/05/24(土) 10:10:42 ] Amazon/AWSのResponseオブジェクトをprintで出力すると 長々と内容まで出力してくれるのですが、ppで出力すると #<Amazon::AWS::AWSObject:0x2f82e04 ...>としか出力されません。 ppで整形した内容まで出力してくれるようにするにはどうしたらいいのでしょうか?
642 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 10:46:40 ] >>641 今こそソース読んでステップアップするとき pp.rb を読むんだ
643 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 16:31:14 ] Rubyからaccessのmdbファイル内のレコードを操作するにはどうしたらいい?
644 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:14:05 ] ttp://jp.rubyist.net/magazine/?0005-Win32OLE そういう目的のためのwin32OLE。 あまり使ったこと無いので、使いやすいのか知らんけど
645 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:38:16 ] win32OLEは便利だと思うけど、詳しい解説がどこにあるのかがわからない。 るびまは読んだんだけどなー
646 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 19:10:13 ] WIN32OLEクラスの使い方さえ覚えれば、 あとはWSHの話じゃないか?
647 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 19:24:37 ] WSHというか、あとはそのライブラリ自体のお話ってことだよねぇ。
648 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:10:56 ] AccessのVBAでマクロ組んで、Rubyからそのマクロを呼ぶのが一番簡単そう。 Rubyから呼ぶ必要があるかどうかは知らんけど。
649 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:29:03 ] 実のところRubyはほとんど関係ないんだよな 単純にWindowsプログラミングの話になってしまう
650 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:30:49 ] >>649 本質的には system() で外部コマンド呼んでるだけだからねえ… どんなときにどんなコマンドを呼び出すべきかってのはRuby関係ないわな…
651 名前:643 mailto:sage [2008/05/24(土) 20:43:37 ] >>644 のリンク先の一行レコードを追加するスクリプトサンプルみると conn = WIN32OLE.new("ADODB.Connection") 以降はvbaと同じっぽいのでなんとかやれそう
652 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 01:36:18 ] open-uri を使って ftp にアクセスしたい。 require 'open-uri' uri = URI.parse("ftp://hogehoge.com/bar/") uri.user = 'foo' uri.password = "fu/ha" でエラー。uri/generic.rb の USERINFO(Regexp) が /^(?:[-_.!~*'()a-zA-Z\d;:&=+$,]|%[a-fA-F\d]{2})*$/n になっているのが原因で パスワードに '/' を含む事が出来ない。 URI.escape(password) をしても '/' はエンコードされず。 何か策はないでしょうか? (パスワードは変更できない) open(uri) の uri にパスワードを含めれないのか? net/ftp を使えばログイン出来るのだが、やりたいのは、 Pathname を使って ディレクトリを掘りながら put をしたい。
653 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 01:54:51 ] URI::USERINFO= /^(?:[-_.!~*'()a-zA-Z\d;:&=+$,\/]|%[a-fA-F\d]{2})*$/n とか
654 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 02:11:13 ] まあ基本的には無理だな 自前で書き換えるしかないわ スラッシュって含むことできたっけ?
655 名前:652 mailto:sage [2008/05/25(日) 02:44:45 ] >>653 素敵。 しかし別の新たなエラーが。もう少し調べます。(そもそも 掘って put は出来るのか?) ありがとうございます。
656 名前:652 mailto:sage [2008/05/25(日) 02:57:43 ] わかった。open-uri は ファイルを扱うものなのか。 ディレクトリは扱えないのか。 失礼しました。
657 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 04:48:04 ] まつもとゆきひろがB型肝炎に感染 mamono.2ch.net/test/read.cgi/newsplus/1211364904/
658 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:24:45 ] 質問です。 #!/usr/local/bin/ruby print "Content-type: text/html\n\n" print "<html><body>Hello World</body></html>" この内容の.cgiファイルを land.to/newshiyou.php このレンタルサーバーにアップしたのですが。 500内部サーバエラーになってしまいます。 なぜなのでしょうか?どうすれば動かせるのでしょうか? 回答よろしくお願いします。
659 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:35:52 ] エラーメッセージの意味がわからんです おしえてエロイひと c:/ruby/lib/ruby/1.8/xmlrpc/parser.rb:152:in `fault': wrong fault-structure: {"f aultCode"=>"Client", "faultString"=>"Application failed during request deseriali zation: \nnot well-formed (invalid token) at line 6, column 345, byte 3640 at /h ome/seesaa/cpan/lib/i686-linux-thread-multi/XML/Parser.pm line 187\n"} (RuntimeE rror)
660 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:52:12 ] >>659 文字コードの知識もないspamブロガーさんこんにちは
661 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 15:56:29 ] >>660 そう見えるよなあ 投稿スクリプトをサンプルとして提供するのは止めたほうがいいと思うぞ で、まあ、seesaaはShift_JISだったはずなのでShift_JISで送れ
662 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 16:07:16 ] >>658 CGIファイルのパーミッションを実行可能に変更していないのだと予想
663 名前:658 mailto:sage [2008/05/25(日) 16:41:39 ] 解決しました。 ありがとうございました。
664 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 17:38:53 ] 【プログラム】 #! ruby -Ks class Ice def sizeIce(size) print(size) end end class IceName < Ice def initialize(name="未設定") @iceName = name end attr_accessor :iceName end class IceSize < Ice def initialize(size="未設定") @iceSize = size end def sizeIce(size) super(size) print("サイズです。\n") end attr_accessor :iceSize end ice = [IceName.new("メロンソーダ"),IceName.new("レモン&ライム"),IceName.new("スイカバー")] ice2 = [IceSize.new("中"),IceSize.new("小"),IceSize.new("大")] for k in 0..ice.size-1 print(k+1,"個目 ",ice[k].iceName,"は",ice2[k].sizeIce(ice2[k].iceSize)) end
665 名前:664 mailto:sage [2008/05/25(日) 17:44:59 ] 【表示される結果】 中サイズです。 1個目 メロンソーダはnil小サイズです。 2個目 レモン&ライムはnil大サイズです。 3個目 スイカバーはnil 【表示したい結果】 1個目 メロンソーダは小サイズです。 2個目 レモン&ライムは大サイズです。 3個目 スイカバーは中サイズです。 昨日からrubyの勉強を始めました。 初めてのプログラミングなので、わからないことが多々あり苦戦しております・・・。 上記のプログラムを実行するとエラー等は出ないのですが、表示結果が思い通りになりません。 なぜ一番最初に「中サイズです。」が表示されるのかすら理解できません。 一体どの部分に問題があるのでしょうか? わかりにくいプログラムだとは思いますが、もしよろしければ回答お願いします。 ※このプログラムは、練習目的で作っているのでわざわざ面倒なことをしています。
666 名前:664 mailto:sage [2008/05/25(日) 17:46:44 ] 訂正 【表示したい結果】 1個目 メロンソーダは中サイズです。 2個目 レモン&ライムは小サイズです。 3個目 スイカバーは大サイズです。 でした。すいません。
667 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 17:59:29 ] (半分ほど作り変えた時点で悩む) あー、まあいいや print は引数をその場で画面に表示し、返り値として nil を返す 表示部とデータ部を完全に分けて考えるべき 最終的なデータを最後に print で表示するだけ、という考え方な Ice.sizeIce で print を使っているのはよくない
668 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 18:16:52 ] てゆーか、継承の考え方がおーざっぱに間違ってね? 「アイスの価格」が「アイス」というクラスを継承するはずがない 「アイスの名前」や「アイスの価格」は「アイス」というクラスの変数であるべき class Ice def initialize(name=nil, size=nil) @name = name @size = name end attr_accessor :name, :size end data = [ ["メロンソーダ","中"], ["レモン&ライム", "小"], ["スイカバー", "大"] ] products = Array.new data.each do |a| products.push(Ice.new(a[0], a[1])) end products.each_with_index do |ice, i| puts "#{i+1}個目 #{ice.name}は#{ice.size}サイズです" end
669 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 18:22:51 ] 抽象的に「アイス」があって、 「価格のあるアイス」とか「サイズのあるアイス」とか「価格とサイズのあるアイス」と 具体化...と考えているのかもしれないが、そういう継承の使い方はあっさり破綻するので やめたほうがよい。 まずは合言葉「継承は最後の武器だ」かと。
670 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 18:34:03 ] >>664 k == 0 の時の出力 中サイズです。 1個目 メロンソーダはnil k == 1 の時の出力(最初の行は↑の行に続けて出力) 小サイズです。 2個目 レモン&ライムはnil k == 2 の時の出力(は省略) 「?サイズです。」はice2[k].sizeIce(...)メソッド実行時の出力 「?個目 ***はnil」がループ内のprintの出力 最後のnilはice2[k].sizeIce(...)の返却値 # sizeIce(...)最後のprintの返却値 # k== 0 の時 print(1,"個目 ","メロンソーダ","は",nil) になっている 問題は「経験が足りない」事 もっとたくさんソースを書いて実行してデバッグすれ
671 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 18:42:30 ] マニュアルには「返り値」「戻り値」があるけど「返却値」はないな …なんで2種類あるんだ マニュアルくらいどっちかに統一せえ
672 名前:664 mailto:sage [2008/05/25(日) 18:53:18 ] >>667-670 レスありがとうございます。 どうやら自分の言葉足らずだったようです。 現在こちらのサイトさん(www.rubylife.jp/index.html )のRuby入門というところを一番上から進めています。 現在は「Rubyオブジェクト指向プログラミング」の「クラスの継承」の部分まで読み終えています。 ひとつの項目が終わるごとに、その項目で覚えたメソッド等を使ってプログラムを作る練習をしているのです。 なので今回は「クラスの継承」「オーバーライド」「super(引数)」の3つを使ったものを作ろうとしていました。 ・・・と自分で考えたらあんな感じになってしまったのですが、このような使い方はそもそもおかしいようですね。 色々混ぜすぎて自分でも分けがわからなくなってましたし。 次回からはもっと処理を個別に分けてプログラミングするように心がけます。 クラスの継承は結構重要そうな感じだけど、実際はそこまで実用性があるわけじゃないのかな・・・。 一番最初に「中サイズです。」が出てきてしまう理由や、「nil」が表示される問題などは解決しました。 >>668 さんのような配列の書き方は非常にわかりやすい・・・次からはこのように表記したいと思います。 大変わかりやすく解説していただきありがとうございました。
673 名前:デフォルトの名無しさん [2008/05/25(日) 20:35:05 ] すみません、マニュアルみたりしてるんですが、見落としてるのか分からないので、教えてください。 クラスの定義の中にたまに、「:」がでてくるんですが、:の意味を教えてください。 たとえば、 Railsだと、「t.string :title」な表現があったり、 インスタンス変数のアクセサを作るときは、「attr_accessor :x, :y」とかしますよね。 この:の意味が掴めないですorz class CreateArticles < ActiveRecord::Migration def self.up create_table :articles do |t| t.string :title t.text :description t.string :image_url t.decimal :price t.datetime :date t.string :vender t.string :category t.timestamps end end def self.down drop_table :articles end end
674 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 20:41:49 ] それはシンボルというものだ
675 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 21:18:50 ] というか、Symbol クラスのインスタンスだと説明したほうがいいかも Rubyのメソッド名や変数名は内部的に数値で管理されてる (2455番目に登録されたメソッド、とかそんな感じで、オブジェクトIDとは別物) シンボルは、その数値に文字でアクセスすることができる機構だ 結果として、「文字」でメソッド自体を指し示すことができる 普通に foo と書いたら foo メソッドが動いてしまって「foo というメソッド」を指し示すことができない しかし、そのとき「メソッド foo を示す登録番号」という指定の仕方ができるとしたら、「foo というメソッド」という指定の仕方ができる 腹減ってるので自分でも何書いてるかわからなくなってきた 試しに適当な変数作って、それと同じ名前のシンボルに to_i してみ それが内部整数値だ シンボルを id2name するとシンボルに対応する文字列が返る 時々「シンボルを文字列にする」という表現で説明されるがこれは本当は誤り
676 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 21:26:03 ] 余計わからなくなるので>>675 は読まなくてよし もう遅いかもしれんが
677 名前:デフォルトの名無しさん [2008/05/25(日) 21:31:28 ] >>674 >>675 さきほど、rubyの公式にアクセスできたので、FAQ見てたらシンボルということは分かったところで、余計に理解に苦しんでましたが、、、 >>普通に foo と書いたら foo メソッドが動いてしまって「foo というメソッド」を指し示すことができない >>しかし、そのとき「メソッド foo を示す登録番号」という指定の仕方ができるとしたら、「foo というメソッド」という指定の仕方ができる 神レスありがとうございました!よく分かりました!!
678 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 10:28:13 ] www.ruby-lang.org/ が落ちているような。
679 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 10:32:27 ] 500とかはいつものことだろ、と思ったが router2.netlab.jp で止まっててアクセス自体ができないな
680 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 17:39:26 ] SymbolとStringの違いは「優しいRailsの育て方」本が一番わかりやすかったな。 あのキモいアイドルAAを我慢できればの話だけど。
681 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 20:55:34 ] Rubyで作成したGUI上で動くちょっとしたソフトウェアを windowsクライアントに配布して利用してもらいたいとき、 クライアントのPCにもRubyをインストールしておかないと 実行できないでしょうか?
682 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:04:09 ] >>681 exerbでぐぐってみるとか。
683 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:05:54 ] Ruby/Tk以外で作らないと駄目だな
684 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:18:10 ] >>682 、683 exerbを利用すればいいのですか。 新しいツールは、勉強もかねてRubyで作ることにします。 さっそく、本を買いに行ってきます。 レスありがとうございました。
685 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:20:38 ] rubyscript2exeもどうぞ。
686 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:26:22 ] おいおい、Rubyで自分以外のためにGUIツールを作るなんてアホのすることだぞ 渡されたほうも迷惑だからそういうことはやるな
687 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:37:59 ] じゃあ、何で書くのがいいのさ? C#とか?
688 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:47:19 ] うん、あのね、どうやら 「もともとのGUI対応」 「付け足しのGUI対応」 の区別がつかないらしいんだ、初心者の人
689 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:55:42 ] そんなにも区別すべきなのか、というのも興味深い問題だと思うぜ まあ、とってつけたGUIシステムで火傷したことがある人ばかりだから不評なんだけどさ
690 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 12:27:50 ] Winで動かす物はMSの道具立てでやった方が、楽だし誤解や面倒ごとも少ないのは確かだしな まあ仕方ないさ
691 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 13:10:52 ] これはどういったプロジェクトなのでしょうか? ttp://raa.ruby-lang.org/project/ghdghdgh/
692 名前:デフォルトの名無しさん [2008/05/27(火) 15:14:16 ] 一行が長くなって読みにくい場合、改行したくなるのですが、 どうしたらイイですか?
693 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:19:21 ] >>692 改行すればいいじゃん? バックスラッシュ \ を使えば改行を隠すことができる 他にも「区切れのいいところ」で普通に改行することもできるが、 このへんは他の人のスクリプトを読んで参考にするといい
694 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:00:06 ] 動的メソッドって?
695 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:09:56 ] Rubyの奥義のひとつ(いやRuby以外でもできるけど) 動的に定義されて動的に実行されるメソッドの8割は本当は静的でもなんとかなる
696 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:56:33 ] 実行するまで在るか無いかわからないってこと?
697 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:02:04 ] マクロの代わりに使う例も多いと思う。
698 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 17:13:30 ] まるごとRuby!のVol.1を眺める ttp://www.amazon.co.jp/dp/4844325795/ …endの連続はLispの閉じカッコの連続っぽくね?というのは それはそれでヒドいと思う 現時点でのRubyの紙媒体のまとまった情報が欲しい人向け スレ的にはちと情報が重いか
699 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 17:37:44 ] Railsレシピブックのほうに目が行ってしまった
700 名前:デフォルトの名無しさん [2008/05/30(金) 18:24:17 ] #!/usr/bin/env ruby -Ku とファイルの先頭に書いて実行すると、 env: ruby -Ku: No such file or directory と言われてしまいます。 envで-Kuをつけたいのですが、 言われないようにする方法はどのようなものがありますでしょうか? 環境は FreeBSD 6.1-RELEASE-p23 です。
701 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 18:52:34 ] 基本的には小手先では無理 env コマンドは複数の引数をうまく受け取ることを期待できないし、環境によっても動作が違う たとえば、その記述は同じ FreeBSD の 5.x では期待通りに動作する
702 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 18:56:33 ] いやenvがどうこうというよりカーネルが…
703 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 18:59:33 ] あ、どうするかだっけ #!/usr/local/bin/ruby -Ku と書くこと ダウンロードして即実行できないことについて文句言う的外れのアホは無視 実行するスクリプト内容を確認しないような人間をユーザーに引き込むと後々癌になるぞ で、自前で複数環境で使いたい、という場合が問題なんだが
704 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:20:38 ] >>700 shebang行(#! で始まる)に渡せる引数は1つ、という実装が多いから無難なのは、 #!/usr/bin/env ruby $KCODE='u'
705 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:32:52 ] ruby -Ku と $KCODE='u' はカレーとウンコくらい違う ちなみに Ruby1.9 ではカレーとウンコが同じになった
706 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:37:32 ] >>705 あれ? $KCODEは無視されるんじゃなかったか?
707 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:45:49 ] warning: variable $KCODE is no longer effective; 値を参照しても代入しても常に nil という頑なな感じの動作
708 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:48:01 ] end end end end ))))
709 名前:700 [2008/05/31(土) 04:50:05 ] 調べたらFAQ的な質問みたいですね。 解決法 ・フルパスでrubyのパス記述 >>703 ・$KCODEで指定 >>704 パス関係なくするためにenvにしたかったけど、意味ないなあw ところで、$KCODEで指定する場合は、 ファイルが本当にUTF-8の文字列(例えば日本語)を含んでいても大丈夫なんでしょうか?
710 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 06:05:04 ] 大丈夫
711 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 06:11:40 ] >>686 普通に喜ばれたけどw
712 名前:700 [2008/05/31(土) 06:33:23 ] >>710 ありがとうございます。 では、ちょっとずれてくるのですが、>>705 の > ruby -Ku と $KCODE='u' はカレーとウンコくらい違う というのはどういう違いなのでしょうか? どこかに簡単な解説などないでしょうか?
713 名前:700 [2008/05/31(土) 06:34:05 ] いえ、気になったというより、変なところでハマりたくないので知っておきたい、 といった理由からです。
714 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 09:00:31 ] >>709 大丈夫じゃない場合がある リファレンスマニュアルにも記述があるけど $KCODEの指定が効いてくるのは、$KCODEへの代入が実行された後なので 最初に読むファイルに日本語が含まれていると、パースエラーになることがある 詳しくはFAQの10.2 ttp://www.ruby-lang.org/ja/man/html/FAQ_C6FCCBDCB8ECA4CEBCE8A4EAB0B7A4A4.html
715 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 13:57:32 ] 問題になることがあるのはShift_JISの場合。 EUC-JPはUTF-8にはそういう性質はない。 -Kを指定してあれば日本語を識別子に使うこともできるが$KCODEでは無理 という違いもあるが、それは正直お薦めしない。 ちなみに-Kは1.9でもきくが、マジックコメントのほうが推奨。 #!/usr/local/bin/ruby # -*- encoding: ut-f8 -*-
716 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 20:25:40 ] #!/usr/local/bin/ruby # -*- coding: utf-8 -*-
717 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 23:56:12 ] HOME['ENV'] って何だよ・・・
718 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:12:49 ] >>717 誰か間違えてそうでありそうで無いな
719 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 00:17:31 ] 図書館にこの本があったので借りてみて一通り目を通してみました www.amazon.co.jp/dp/4894714531 で、次に何かRuby買ってみようと探してみて www.amazon.co.jp/dp/4274066428/ これが本屋さんあったけど・・・ 上のと同じ本?
720 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:07:13 ] 今なら下がお勧め
721 名前:デフォルトの名無しさん [2008/06/01(日) 01:28:02 ] mod_rubyを動かしたいんですが以下のようなエラーが出て動きません。 どうすれば動くようになりますか? apache -t apache: Syntax error on line ??? of C:/〜〜/httpd.conf: Cannot load C:/〜〜/modules/mod_ruby.so into server: \x8ew\x92\xe8\x82\xb3\x82\xea\ x82\xbd\x83v\x83\x8d\x83V\x81[\x83W\x83\x83\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\ xe8\x82\xdc\x82\xb9\x82\xf1\x81B 環境 Windows Vista Apache2.2.8
722 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 09:52:04 ] >>721 あなたの頭とOSが腐ってるのが原因ですね。 頭のほうはもう手遅れなので、OSの方をdebianなどに変えてmod_rubyを apt-get一発でインストールすればどんな馬鹿でも使えるようになります。
723 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 10:07:23 ] >>722 〃∩ ∧_∧ ⊂⌒( ・ω・) はいはいわろすわろす `ヽ_っ⌒/⌒c ⌒ ⌒
724 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 12:35:47 ] 文字化けしてるが、Shift_JISで 「指定されたプロシージャが見つかりません。」 と書いてあるようだな。 mod_ruby 指定されたプロシージャが見つかりません。 でぐぐるとわかるかもよ。
725 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 14:24:14 ] >>724 www.google.com/search?num=50&hl=ja&q=mod_ruby+%E6%8C%87%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%9F%E3%83%97%E3%83%AD%E3%82%B7%E3%83%BC%E3%82%B8%E3%83%A3%E3%81%8C%E8%A6%8B%E3%81%A4%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93&lr=lang_ja ググったけどわかりません
726 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 16:52:27 ] 現在実行しているRubyファイル自身のpathを取得できる特殊変数(?)というのはありますか? 宜しくお願いします!
727 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 19:45:03 ] 事故解決しました __FILE__
728 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 21:02:52 ] Rubyを使いたいのだけれど使う機会が無い。どう転べばRubyを日常使用する変人になれるのか。最初にそれを説かなければ信者は増えないだろうと思う。
729 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 21:08:17 ] >>728 君には必要ないよ 必要のないものに固執する必要はない 楽になるといい
730 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 21:34:52 ] >>728 Project Euler とかお勧め。
731 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 22:17:55 ] >>730 Ruby関係ないというかRubyでやるくらいならSchemeかPythonかC++でやる。
732 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 23:30:06 ] 目的を達成するのに一番便利な言語を選べばいいじゃん。 別にこだわりはないな。
733 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 00:15:09 ] rails使えば
734 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 01:05:15 ] まあ、みんながみんなプログラマーになる必要はないわな。 Rubyに早くなれたかったらUnixかLinux使いえばいい。シェル操作が日常に なれば、ごちゃごちゃしたものをスクリプトで一気になにかするのが快感になるはず。
735 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 02:29:00 ] 俺は cmd.exe を使うようになってRubyの使用頻度が格段に増えた しょぼいコマンドプロンプトの補助としては優秀
736 名前:デフォルトの名無しさん [2008/06/07(土) 13:07:20 ] 俺は、バッチファイルで書くのが嫌になったころからだな。 unixではシェル書くのがいやになったころから
737 名前:デフォルトの名無しさん [2008/06/07(土) 13:08:08 ] シェルじゃねえ、シェルスクリプトだ。すまそ。
738 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:12:37 ] rubyの正規表現でhtmlファイルの中から<html>の様に<>で囲まれた 文字列を取り出すにはどのようにすれば良いですか ^<.*>$まではわかったのですが <br>のように直前に文字列が存在するタグはとりだせないのです f = open(ARGV[0].to_s) while line = f.gets if /^<.*>$/ =~ line puts line end end f.close よろしくお願いします。
739 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:15:03 ] ^や$(行頭と行末の位置にマッチ)を付けない。 さらに、.*だと欲張りマッチ(可能な限り長い対象にマッチ)になるので、 <h1>....</h1>に遭遇したときに全体にマッチしてしまう。 これを避けるためには、?を後ろに付けた .*?(欲張りでないマッチ)を使う。
740 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:18:05 ] >>739 ありがとうございます。 しかもアドバイスまで ありがとうございます
741 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:20:11 ] >>739 ああ〜テストしてみた所 a<html> とかが表示されてしまいました こうではなくて a<html>とかの行からも <htm>だけきりだしたいのですが・・・・
742 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:28:58 ] 正規表現の中に()を書くと、括弧の内容を後で利用できる。 /(<.*?>)/ でマッチした後、$1というグローバル変数に<html>とか入ってるはず。
743 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:32:35 ] 実用の上で正しい回答は「自分でコード書かずにhtmlsplit使え」 もちろん学習用としてなら意味はあるけど >>741 行全体(line)をそのまま表示しようとしているのが原因 マッチした部分($&)だけを表示させるようにするか もしくは742の言うとおり、括弧と$1を使う必要がある さらに言うと、そのスクリプトだと一行で一つのhtmlタグしか切り出せない 全てのhtmlタグを切り出すには、もう少し変更が必要
744 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:34:16 ] マッチするかどうかを試験する、ということと マッチした部分を取り出す、ということは違う 方法はいくつかあるが、概念的にめんどくさくないのは文字列に対してscanを使うこと "a<html>b".scan(/<.+?>/){|match| p match } 結果: "<html>"
745 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:41:27 ] >>743-744 まとめるとどのようになるのでしょうか 最終的には htmlファイルを指定すると そのページ内に存在するファイルを 音楽、動画、画像などに仕分けして そのURLをファイルに書き込んでくれてwgetなどで簡単にダウンロードできるようにしたいんです。
746 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:46:14 ] … rubygem の mechanize 使え <a href> で表記されたリンクをすべて抽出してアクセスして適当に保存までしてくれる ネット上にあるページではないローカルにあるHTMLファイルを読み込まなければならない場合若干面倒だが
747 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:47:58 ] とりあえず地道にやってみるならリンクされてるAタグでのhref="〜"部分を切り出して リンク咲の拡張子なりで分類するとか
748 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:52:15 ] だから目的のものが出るまでscan繰り返せばいいじゃんよ scanのマニュアルとか読んでくれたか? 文字列.scan(/タグ抽出/){|タグ変数1| タグ変数1.scan(/httpで始まる半角文字列/){|URLっぽいもの| 動画URL一覧配列.push(URLっぽいもの) if URLっぽいもの =~ /動画拡張子/ 画像URL一覧配列.push(URLっぽいもの) if URLっぽいもの =~ /画像拡張子/ 音楽URL一覧配列.push(URLっぽいもの) if URLっぽいもの =~ /音楽拡張子/ } } File.open('動画.txt','w'){|f| f.puts 動画URL一覧配列} File.open('画像.txt','w'){|f| f.puts 画像URL一覧配列} File.open('音楽.txt','w'){|f| f.puts 音楽URL一覧配列}
749 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:55:11 ] >>746 そういうのが有ったんですね・・・・ なんだか自分が最初のアイデアって今では出せないんじゃないかって 最近思ってるんですよね。 何かアドバイスになる言葉を教えてください。 小学生の頃からプログラミングしていた根っからのプログラミング好きに 慰めの言葉を
750 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:55:19 ] hpricotだとこうか。 require 'hpricot' require 'open-uri' doc = Hpricot(open(URL) {|o| o.read}) puts (doc / 'a').map {|a| a['href']}
751 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:01:18 ] とりあえずは、初心者スレなので正規表現でscanするのが妥当かねえ なんとなくだが、外部ライブラリを利用するための基礎的知識もまだ危ういように見える 便利ライブラリはもうちょい納得してから使え
752 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:02:22 ] 初心者スレであんまり「gemのlibhogeを使え」なんていわないほうが いいんじゃにゃいかな。そりゃ業務的には正解だけど、たぶん牛刀割鶏になってるよ。
753 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:09:36 ] rubygems に代表される公開ライブラリを流用するのは何故かというと 「自力でゼロからまたアレやるのめっちゃ面倒だ」 という認識があるからなんだよな 「面倒なアレ」という経験が無いうちから使うと後々悲惨な結果に 苦労は初心者のうちにしておくとよいと思う
754 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:24:14 ] あほらし
755 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 16:33:14 ] 別に両方教えればいいだけじゃん html = File.read('page.html') html.scan(/<(.*?)>/) { p $1 } と >>750 の両方。 もちろん違う人が教えてもいい。
756 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 16:33:30 ] URI.extractでもつかっとけ
757 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 17:38:20 ] 文字出力、正規表現の際に'可能'という文字を使用したいのですがうまくいきません。 試しに以下のスクリプトでテストしてみました。 ファイルをSJIS保存 puts '能' => unterminated string meets end of file ファイルをUTF8保存 puts '能' => '閭ス' となってしまいます。 どうすれば扱えるのでしょうか? どなたか本気でお願いします。
758 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 17:51:51 ] Shift_JISの場合は ruby -Ks hoge.rb で起動 UTF-8 の場合は ruby -Ku hoge.rb で起動
759 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:40:06 ] >>757 rubyは基本的に、何も指定しないと日本語を正しく扱えない 詳しくはリファレンスマニュアル(もしくは書籍)を読め
760 名前:757 mailto:sage [2008/06/07(土) 21:39:01 ] ありがとうございます! 無事に出力&正規表現が実行できました。 ファイル毎に記述する癖をつけます!
761 名前:デフォルトの名無しさん [2008/06/07(土) 22:46:14 ] String#split* という関数はどういう挙動なのでしょうか? 文字列がかえるので split().join と同じだと考えていたのですが どうにも違うようですし調べてもでてこないし リファレンス(コードでもいいので)ご存知のかたいたらおねがいします
762 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:48:02 ] 1while などアンドキュメントな部分などの部分もご存知のかた いたら同様に示唆していただけたらありがたいです ruby 二日目であほなこといっていたらごめんなさい
763 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:06:41 ] String#split* なんて関数は見たことない split().join, 1while ともども簡単なコードも付けてくれると答えやすいかも あるいはどこに書いてあったとか
764 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:11:34 ] >>761 正直、Ruby の引数展開の * はあまり好きではない あれは Ruby として明示的なメソッドであるべきだと思う んで、引数の配列の直後に * をつけると展開して引数に渡される arr = [1, 2, 3] hoge(arr*) は hoge(1, 2, 3) と同じ動作だ 文字列を split した結果の配列が展開されて渡されてるということだな split は引数を省略すると空白で分割して配列を返すから hoge('1 2 3'.split*) は hoge(1, 2, 3) と同じ 正直、あまり明快な記述とは思えないので、自分から使うのは避けたほうがよい
765 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:23:51 ] >>763 , 764 ありがとうです。 >>763 ゴルフコードでよくみたのでこれなんだろーなっていう shinh さんのとこから tree = '(Root (Spine (Neck (Head)) (RClavicle (RUpperArm (RLowerArm (RHand)))) (LClavicle (LUpperArm (LLowerArm (LHand))))) (RHip (RUpperLeg (RLowerLeg (RFoot)))) (LHip (LUpperLeg (LLowerLeg (LFoot)))))' tree.scan(/ \((\w+)/){puts"#$+ . #{a=$`.split*'';1while a.sub!(/\(\w+\)/,'');a[/\w+$/]}"} ってなかんじで 1while はブロックをともなわない構文なのかなと perl と同じ と思っていました while gets; end -> 1while gets でできるかんじ? で split* があるのかなと考えたのは >> "abcd".split*'' => "abcd" >> "abcd".split* '' => "abcd" >> "abcd".split*('') => "abcd" >> "a bcd".split*('') => "abcd" >> "a bc d".split*('') => "abcd" >> "a bc d".split*(',') => "a,bc,d" >> "a bc d".split('') => ["a", " ", " ", " ", "b", "c", " ", "d"] >> "a bc d".split('') で返り値が array ではなく string なので引数展開ではないのかなーと 考えています
766 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:25:26 ] 展開の * は前につくんだったと思うんだが hoge(*arr) あと、配列 * s が 配列.join(s) と同じ動作になるのは s が文字列だったときだけだぞ s が整数だったときには単に繰り返される だから、to_s や to_i が乱れ飛ぶ初心者のスクリプトでは紛らわしいから使ったら駄目 というか、そもそも紛らわしいから素直に join 使え
767 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:36:09 ] >>765 1whileはrubyの標準にはない。たぶんコードゴルフ用の拡張 ついでに言うと、初心者がコードゴルフを参考にするのは薦められない あれは一般的に美しくない(分かりにくい)書き方が多いから
768 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:47:03 ] >>762 違ってたらごめんね >> "abcd".split() * '' => "abcd" >> print 1while true 1111111111111 >> while true; print 1; end 1111111111111
769 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:57:22 ] >>768 ruby のコードながめていたらおっしゃる通りだと思いました 1while でも 1 while でも同じことで kWHILE のみしかなかったでした orz 1 while() { ...} なども添付コードにあったので変態的な構文解析だなぁと split() もそうだとおもいます >> a="a b cd".split() => ["a", "b", "cd"] >> a *'' => "abcd" >> a *'abc' => "aabcbabccd" >> a.*'abc' => "aabcbabccd" >> a.*'' => "abcd" コメントみなさんありがとうございました
770 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:00:25 ] 追記 www.ruby-lang.org/ja/man/html/Array.html#self.20.2a.20times ですね ありがとうです
771 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 00:03:39 ] Ruby1.6で書かれたクラスを利用しないとアクセスできないシステムがあります そのシステムはEUC_JPしか受け取れないため、他のエンコードを使用しようとした場合は変換したいと考えています ですがRuby1.6時代のKconvではUTF-8→EUC_JP変換ができません そこで質問なのですが ・Kconvに限ってRuby1.8のクラスファイルを利用する、などといったことは可能ですか? ・指定ファイルはRuby1.6、それ以外はRuby1.8というようにクラス/ファイル別にインタプリタを指定して実行することはできますか? 現在は一時ファイルに実行結果を書きとめておくことで疑似的に実現していますが、よりスマートな方法がありましたらご教示願います
772 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 00:12:05 ] nkf.cだけ差し替えてコンパイルしてみるとか。 よしだむ氏のuconvを使ってみるとか。
773 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 00:15:53 ] 1.6のUTF8関連はuconv使ったような記憶がある というか、1.8で動かない上に書き換えも面倒な1.6のスクリプトって重症だなあ マニアさんが書いたようなスクリプトですかね
774 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 00:28:32 ] でっかーいスクリプトだと1.8対応にするのはゼロから作り直すに等しい作業になりそうだな 1.6で完全に動いてるならそのまま使いたいとこだろう Uconv試すのが一番だと思うぜ
775 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 00:30:55 ] UTF対応の外部NKFのラッパーを自前で書くというのはどう Kconvの中の人がやってることは同じだし 一時ファイル使ってる現状とほとんど変わらないような気もするけどな
776 名前:771 mailto:sage [2008/06/10(火) 08:29:09 ] 皆さんありがとうございました Uconvの使用が一般的な方法のようですので、まずはこの方法でやってみたいと思います
777 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 17:34:19 ] index.rhtmlからtest.rbをrequireすると エラーは出ないのですが、test.rb内に記述された関数群が利用できずにエラーとなります。 この拡張子でのrequireは無理なのでしょうか? もしそうであれば、どのようにファイル分けをすればよいのでしょうか? よろしくお願いします。
778 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 17:52:54 ] エスパー麻美の出番だな
779 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 18:02:07 ] エスパー…あさみ…?
780 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 19:00:07 ] ビーズで撃たれて死んでしまえ
781 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 19:12:57 ] 魔女ステかよ
782 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 21:37:07 ] ダック・タイピングとよく言いますが、 オブジェクトが目的のメソッドを持っているかどうかの責任は、 プログラマにあるということでしょうか?
783 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 21:39:05 ] スクリプト言語でなおかつ動的にクラスもメソッドも追加可能な言語では 「ユーザー」と「プログラマー」の間が曖昧なんだよね
784 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:33:42 ] よくわからんが、処理系が実行時まで何もしてくれないことだけは確か。
785 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:59:33 ] >>778 洗剤か
786 名前:デフォルトの名無しさん mailto:age [2008/06/11(水) 12:05:00 ] Rubyのバージョンアップ方法に関してどなたかお力を貸して頂けないでしょうか。 現在CentOS4.5上で下記のパッケージでRubyを動作させております。 ruby-1.8.5-1.el4.centos ruby-docs-1.8.5-1.el4.centos ruby-libs-1.8.5-1.el4.centos ruby-irb-1.8.5-1.el4.centos ruby-devel-1.8.5-1.el4.centos ruby-ri-1.8.5-1.el4.centos ruby-rdoc-1.8.5-1.el4.centos ruby-tcltk-1.8.5-1.el4.centos 今回Rubyのバージョンを1.8.6へあげたいと考えておりますが下記の エラーに遭遇してしまい検索してみた物の./configureが出来ない状 態です。。 【エラー】 checking for C compiler default output file name... configure: error: C compiler cannot create executables See `config.log' for more details. 〜続く〜
787 名前:786 mailto:sage [2008/06/11(水) 12:06:09 ] 【config.logを見て該当すると思われる箇所】 gcc version 3.4.6 20060404 (Red Hat 3.4.6-9) configure:2530: $? = 0 configure:2537: gcc -V >&5 gcc: `-V' option must have argument configure:2540: $? = 1 configure:2563: checking for C compiler default output file name configure:2590: gcc conftest.c >&5 /lib/libc.so.6: undefined reference to `_dl_out_of_memory@GLIBC_PRIVATE' collect2: ld returned 1 exit status configure:2593: $? = 1 configure:2631: result: configure: failed program was: | /* confdefs.h. */ | #define PACKAGE_NAME "" | #define PACKAGE_TARNAME "" | #define PACKAGE_VERSION "" | #define PACKAGE_STRING "" | #define PACKAGE_BUGREPORT "" | #define USE_BUILTIN_FRAME_ADDRESS 1 | /* end confdefs.h. */ | | int | main () | { | | ; | return 0; | } configure:2638: error: C compiler cannot create executables See `config.log' for more details.
788 名前:786 mailto:sage [2008/06/11(水) 12:08:41 ] 【gcc関連インストールされている物】 compat-libgcc-296-2.96-132.7.2 compat-gcc-32-3.2.3-47.3 gcc-3.4.6-9 gcc-g77-3.4.6-9 gcc4-c++-4.1.2-14.EL4 gcc-objc-3.4.6-9 gcc-gnat-3.4.6-9 compat-gcc-32-c++-3.2.3-47.3 libgcc-3.4.6-9 gcc-java-3.4.6-9 gcc-c++-3.4.6-9 gcc4-4.1.2-14.EL4 gcc4-gfortran-4.1.2-14.EL4 gcc4-java-4.1.2-14.EL4 2日程格闘中ですが、お手上げ状態に近づいて来ました。。。 RPMで1.8.6があればいいのですが該当するものも無いため 今回tarからrpmをcheckinstallで作成しようと考えてお ります。。
789 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:28:15 ] >>787 に書いてあるがな。GNU libcの `_dl_out_of_memory@GLIBC_PRIVATE' がないんだろ。glibcを入れ直してldconfigしてみろ
790 名前:786 mailto:sage [2008/06/11(水) 13:46:57 ] >>789 さん 助言有り難う御座います。glibc関連を弄るのは初めて なので依存関係でしくじる気が凄くしますが取り敢えず 調べてやってみます。
791 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 16:56:35 ] oreilly.co.jp -- Online Catalog: 初めてのRuby ttp://www.oreilly.co.jp/books/9784873113678/ > 本書を最後まで読めば、「Rubyリファレンスマニュアル」を自在に読みこなし多様なRubyライブラリを活用して、 > 自力で高度なRubyプログラミングを習得するだけの基礎知識が手に入るでしょう。 > Ruby1.8及び1.9に対応しています。 ( ^ω^)おっおっおっ
792 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:02:16 ] 夢のような書籍だなw
793 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:14:19 ] たった224ページじゃ無理だろと思ったら >他言語でのプログラミング経験を持つ人を対象に なるほど。エッセンス部分だけ凝縮することに成功すれば あるいは・・・・・・
794 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:17:59 ] 魚を捕る方法を教える感じでなかなか好感が持てる 現状、9割くらいの人はオンラインのリファレンスマニュアル読んでるからな というか、リファレンスマニュアル自体にマニュアルの読み方の解説がないというのが情けない
795 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:19:59 ] まああるいはオライリーの人がフカしてるだけかもしれん これ目次ね ttp://www.oreilly.co.jp/books/9784873113678/toc.html
796 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:21:21 ] また安いなw 最近のオライリーはどうなってるんだ,あれこれ安すぎるw
797 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:42:21 ] 自分の部屋の本棚をオライリーで埋め尽くす・・・ そんな風に考えていた時期が僕にもありました・・・
798 名前:デフォルトの名無しさん [2008/06/11(水) 19:58:37 ] 2,310円?200ページとはいえ、オライリーにしてはえらく安いな
799 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:58:19 ] >>796 質が落ちたから
800 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:33:03 ] Learning Rubyの翻訳かと思ったら別の人が書くのか・・・ 当然のようにFlanagan x Matz本出してくるかと思ってたが マニングのMinimal Perlがオラから出てたりとかなんかカオスだな
801 名前:高野光弘問題 [2008/06/11(水) 23:58:28 ] takano32,TAKANO Mitsuhiroこと高野光弘(日立製作所社員、日本UNIXユーザ会幹事)が、 自身の『32nd diary』で公然と日立の機密を開示し、障害者差別発言をしている問題。 1981年11月12日 千葉県のディズニーランドのそばで誕生 2001年4月1日 千葉大学に入学 2005年4月1日 千葉大学大学院へ進学、日本UNIXユーザ会に入会 2007年4月1日 日立製作所に入社、神奈川県秦野市の寮へ 2007年8月22日 「ついに職場で人が倒れた」と公表 2007年11月13日 「情報漏えい」を言う上司に「死んだほうがいいよ」と暴言 2007年12月28日 「社内システムクソうんこ」と発言し、仕組みも暴露 2008年5月23日 機密漏洩問題について一応の謝罪 2008年5月26日 「給料泥棒とかうんぬん言われた」と謝罪を忘れて告白 2008年5月27日 「心バキバキ川田くん」と前日の発言者の名前を公言 2008年5月31日 「キチガイ」と日立のユーザーに障害者差別発言を連発 2006年10月27日(日立製作所に入社前に忠告されたこと) 「日記やコメントの投稿日時から勤務時間に業務外のことをしていることが判明」は 某社の某親会社が 2ch で祭られたように、NG です。 6月も勤務時間中に更新し続ける高野光弘君の『32nd diary』にツッコミをどうぞ
802 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 04:02:01 ] で、rubyとどう関係あるのか まだ訊いてないんだが?
803 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 04:22:05 ] Ruby信者はあらゆるスレにRubyの話題を持ち込んでいるのだから、 逆にあらゆる話題がRubyスレに持ち込まれても、身から出た錆だな。
804 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 06:59:14 ] RubyってJavaのクラスローダーみたいな仕組みはないのですか?
805 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 09:46:01 ] >>804 requireじゃダメなの?
806 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 10:07:44 ] 「Javaのクラスローダーの○○の仕組み」と限定して欲しいとこだな
807 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 11:17:08 ] .jarとか.classとかを実行時に読むのに相当するならrequire、 Classオブジェクトを名前な文字列とかで引っ張ってくるならModule#const_get
808 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:39:27 ] ネットワーク上からRubyスクリプトを受け取ってそれに記述されているクラスを動的に定義したいんだけど たとえば script = URI("host/matz.rb ").read p script #=> # class Matz # def hige # print "じょりじょり" # end # end eval(script) Matz.new.hige こんな感じで実現できるんだけど もっとスマートな方法は用意されてないの? ファイルには書き出したくない。
809 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:41:29 ] Ruby で、現在のプロセス名を得ることはできますか。 やりたいのは、現在のコマンドが /usr/bin/ruby なのか /usr/local/bin/ruby なのか /usr/local/ruby1.9/bin/ruby なのかを知ることです。
810 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:43:42 ] ローカルファイルシステム上にないファイルをスクリプトとして読み込みたいとかいう需要に対してスマートも糞もねーよ(w require の中身は eval だからそれで正しい動作だ 我慢しとけ
811 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:46:53 ] >>810 > require の中身は eval それは知らなんだ・・・
812 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:20:56 ] Rubyで、 メタ・プログラミングやコード・ジェネレーションを学びたいのですが、 その辺を詳しく扱っている書籍やサイトはないのでしょうか? ピッケル本とか読みましたけど、なでる程度しか載っていないので・・
813 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:55:27 ] >>812 今は懐かしい256シリーズの無道編でRaccをフィーチャー(というか宣伝)してる。 でも無知な俺は、Raccを本当に活用した例ってRDtoolしか知らない。 Rubyでメタプログラミングなら、強力なevalとmethod_missingで対応するDSLが主流だね。 ActiveRecordなんか、その最たるもの。 Rubyist Magazine -あなたのコードを添削します- jp.rubyist.net/magazine/?0011-CodeReview DSLについて、一部参考になるかも。
814 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:34:00 ] これとか。 ola-bini.blogspot.com/2006/09/ruby-metaprogramming-techniques.html
815 名前:デフォルトの名無しさん [2008/06/14(土) 18:53:09 ] プロパティを定義したいのですが、セッターがうまく働きません orz 以下のようにすると、2と表示してほしいのですが、5と表示されてしまいます。 どこが間違っているのでしょうか? #ruby -Ku class Calculator def initialize @unit = 5 end def unit=(value) @unit = value end def run unit = 2 puts @unit end end Calculator.new.run
816 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 18:55:36 ] self.unit = 2
817 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 18:55:59 ] self.unit = 2
818 名前:デフォルトの名無しさん [2008/06/14(土) 18:56:17 ] self.unit = 2 だとうまくいきました 何だこの違い・・・ ほかの言語のプロパティみたいに使っちゃだめなのか
819 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 18:59:52 ] わかるまでは attr_accessor :unit とだけ書け。
820 名前:デフォルトの名無しさん [2008/06/14(土) 19:02:42 ] この挙動はどういうことなんでしょうか? ドキュメントのどこかに記載などありますでしょうか? しかし、エラーなどでずに実行されるもんで子一時間悩んでしまいました >>819 セッターを拡張したいときには使えません あれは最小限のコードで実際のコードでは、最大値のチェックなどしています。
821 名前:デフォルトの名無しさん [2008/06/14(土) 19:04:05 ] >>819 試しに attr_writerを使ってみましたが、やはりselfがいりますね・・・。
822 名前:デフォルトの名無しさん [2008/06/14(土) 19:08:52 ] ああああ、わかた。 宣言が要らない言語だから、セッターのインスタンス省略すると ローカル変数への新規代入になるのか orz
823 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 19:11:24 ] >>822 Ruby以外はどんな言語を使ってるのか教えてくれまいか ちょっと興味があるんだ
824 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 19:17:11 ] これは筋のよさそうな自称初心者
825 名前:デフォルトの名無しさん [2008/06/14(土) 19:33:13 ] >>823 他にはDelphiを長年つこーてました。 Delphiだと属性でなくてプロパティなんですが、 上記コードのような形で問題なく、 selfなしでクラス内でプロパティに代入できます。 静的な言語のせいもあり、変数は宣言しないと使えないです。
826 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 20:04:10 ] なるほど、丁寧にありがとう 今度Delphiのコード見かけたら そこらへんちょっと気にして読んでみるよ
827 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 00:03:24 ] やさしいやりとりだな。いい感じ。
828 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 00:24:46 ] これは珍しく建設的なやりとり。
829 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 00:45:06 ] 初心者側に「ピンと来る力」があれば、話は俄然充実するんだよ。
830 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:02:58 ] >>820 > ドキュメントのどこかに記載などありますでしょうか? 一応rubyの落とし穴には書いてあるけど見つけにくいね。 www.ruby-lang.org/ja/man/html/trap_A5B9A5B3A1BCA5D7A1A2C0A9B8E6B9BDC2A4.html attr_xxx もFAQやModuleのリファレンス見ないと分からないし。 まぁリファレンスだからしょうがないか。 入門書ならselfが必要なことも含めてちゃんと書いてあるかも。
831 名前:815 [2008/06/15(日) 06:40:18 ] >>830 おお、こんなところに記述が やはりFAQなのですね。 わざわざありがとうございます。 attr_系の説明やサンプルは大概クラス外部からのアクセスのみかかれてますね。
832 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 12:41:53 ] a = [1,1] a.each{|i|a << a[-1] + a[-2] if a[-1] < 10000} p a
833 名前:デフォルトの名無しさん [2008/06/15(日) 15:21:02 ] Rubyの入門サイト、書籍などを読んでいると 破壊的なメソッド、非破壊的な〜、みたいな表現をよく目にします。 Ruby以前の言語でも同じ概念は存在すると思うのですが、 Rubyにおいて敢えて強調されているのは何故なんでしょうか。 例えば、何か他の言語とは異なった考え方が必要になってくるのでしょうか。
834 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 15:24:50 ] >>822 NetBeans使ってると、unitは未使用ということでエディタ上に印が付きますね。
835 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:12:43 ] >>833 強調するのは、そりゃ、「2種類」あるからだよ self を変更するかどうかって重要じゃん puts させただけでそのオブジェクトがそれ以降文字列になったら悲惨じゃん
836 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:16:47 ] >>834 ねとびんかしこいねねとびん
837 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:20:09 ] >>835 だから、その2種類の違いを他の言語より強調するのは何故か、という質問だろ。 他の言語がどの言語で、本当にそれよりRubyのほうが強調されているのかは俺はわからんが、 ともあれ比較の質問なら、Rubyの意志を比較で回答しないと納得はできんだろう。
838 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:32:14 ] 例えば、javaでは メソッドへパラメータを渡すとき 配列とオブジェクトは参照渡し(rubyでいう、非破壊的・・の概念にあたる) プリミティブ型は値渡し(破壊的・・の概念にあたる) になってる。 ソースを見たとき、 Rubyのように明確になっているとは、ちょっといえないかもね。 Cだと、ポインタかどうかで判断する。 どうしてRubyはその辺を強調してるかだけど、 自由度が高いからじゃないかな? 上のJavaの例でいうと、参照渡しした元のオブジェクトを呼び出し先から 操作することは、Javaでは出来ない。 Rubyではその辺を任意にできる操作できるようにしたかったから、 出来る場合と出来ない場合を明確に表記して、わかりやすくしたかったのではないかと 推察します。
839 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:38:16 ] すみません。 >上のJavaの例でいうと、参照渡しした元のオブジェクトを呼び出し先から >操作することは、Javaでは出来ない。 上のJavaの例でいうと、値渡しした元のプリミティブ型を呼び出し先から 操作することは、Javaでは出来ない。 の間違い。 失礼しました。 参照渡し>>元のオブジェクトのリファレンス(アドレス、ポインタ)を渡す。(破壊的) 値渡し>>元のデータのコピーを渡す。(非破壊的) です。 混乱させるような、書き込みをしてすみません。
840 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:52:41 ] >>837 破壊的なのに!とか述語に?をつけるのはschemeからのいただきだろうな。 ただ、単なる慣用だから守ってないライブラリもいっぱいあるし深い意味はないんじゃね? 強いて言えば、識別子に!とか?が使えるってのを強調したかったとか。 C/perl/pythonは出来ないはずだし。
841 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 17:11:55 ] >>833 Rubyだから特別強調しているというわけではない。 Rubyに限らず、手続き(Rubyの場合メソッドかProcオブジェクト)を実行すると きに、その手続きを実行する前から存在していたすべてのオブジェクトについ て 実行後、状態が変化する可能性がある(から注意して使え)のが「破壊的」 実行後、状態が変わらないことを保証するのが「非破壊的」 うまく説明できないけどこんな感じだ。状態が変わらないというのは「同じ」 ということなんだけど、じゃあ「同じ」とは何かというのがなかなか微妙。 だけどこの話を始めるとなが〜くなるから、この辺でやめとくぞ。 >>838 ,839 はなんか間違って理解してるみたいだぞ
842 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 17:36:53 ] >>833 rubyの場合、他言語に比べてメソッドチェインの色合いが強いからじゃなか 他言語では戻り値がvoidになるようなものでも、rubyだとself返したりしてるし
843 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 17:58:46 ] でも述語に?を使われると、三項演算子がちょっと見にくくなるよね a = (isTrue?) ? 12 : 47
844 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:20:21 ] >>839 とりあえずJavaに参照渡しはない プリミティブはもちろん値渡しだが オブジェクトだって値渡し(参照の値渡し、あるいはcall by share)だ とかいっても>>839 は信じてくれないって俺は知ってるんだ
845 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:30:36 ] (´・ω・`) = (!isTrue?) ? !a.foo? : !b.foo?
846 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:32:53 ] hamlet = (to?) ? be : !be
847 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:42:35 ] >>833 単にメソッド名に!が付けられることを自慢したかっただけ。
848 名前:デフォルトの名無しさん [2008/06/15(日) 19:15:36 ] >>833 オブジェクト使い捨てることによって生まれたメソッドチェーン主体の手法と、 従来のインスタンスへの変更を区別するためだろう か
849 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:30:31 ] >>847 確かに、そんな気もしなくは無いですね…
850 名前:デフォルトの名無しさん [2008/06/15(日) 22:04:22 ] rubyで日本語の分かち書きがやりたいよん
851 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:17:38 ] たとえば mecabを直に叩くか mecabのrubyライブラリを使うか mecabのデータだけを使わせてもらって自分でがんばるか
852 名前:デフォルトの名無しさん [2008/06/15(日) 23:09:39 ] >>851 ありがとうございます (いまさら)環境 ActiveScriptRuby ・mecab for rubyがインストールできなかった ・↓を参考に直叩き でできました Windows上のrubyでMeCabをちょっこっと使ってみたい - Programming Must Go On d.hatena.ne.jp/kenkitii/20060705/p1
853 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 00:16:14 ] 形態素解析だっけ yahooにもそんあ機能あったな
854 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 01:10:10 ] tiny segmenter なら辞書要らずでお手軽
855 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 11:08:26 ] matchdata = /[0-9]+/.match("foo=123;qoo=456;zoo=789") p matchdata.to_a # => ["123"] ["123", "456", "789"]を期待したんですが["123"]でした。 どうしたら["123", "456", "789"]を得られますか?
856 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 11:11:34 ] "foo=123;qoo=456;zoo=789".scan(/\d+/)
857 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 11:25:49 ] 正規表現は「1回だけ」マッチするのが基本 m = /.+=(\d+);.+=(\d+);.+=(\d+)/.match("foo=123;qoo=456;zoo=789") puts m[1],m[2],m[3] 結果: 123 456 789 文字列に対して繰り返した結果の配列が欲しい場合は>>856 のようにString#scanを使う scanにブロックを渡した場合は適当に部分マッチ結果が渡る "foo=123;qoo=456;zoo=789".scan(/\d+/){|m| puts m } 結果: 123 456 789 マニュアルのStringとArrayとHashとEnumerableの4つだけは読んでおくといいぞ
858 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 11:50:32 ] >>856-857 詳しいところまでありがとうございました。勉強になります。
859 名前:デフォルトの名無しさん mailto:age [2008/06/16(月) 14:58:20 ] Ruby1.8.6でメール送信フォームを作っています。 次のような流れで、送信する前に確認画面を設けたいのですが― フォーム送信(Html) ↓ 確認用CGI(Ruby)で処理 ↓ 確認画面の表示・フォーム送信(Html) ↓ 送信用CGI(Ruby)で処理 名前やメールアドレスといった文字列データは、 確認画面を経由させるのに問題ありませんが、 ファイルを添付させた場合、tempfileオブジェクトをどのように経由させればよいかわかりません。 今考えているのは、ファイル名だけを経由させ、 送信用ファイルでそのファイルを処理すればよいかと考えていますが、 FireFoxではtempfileのoriginal_files要素を取得してもフルパスを取得することができません。 フルパスを取得する方法、もしくはフォーム送信時の常套句的な方法があれば教えてください。
860 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 14:59:29 ] >送信用ファイルでそのファイルを処理すればよいかと考えていますが、 送信用CGIの間違いです。よろしくお願いします。
861 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 15:19:06 ] >>859 「確認CGIではファイル名取得だけ行い、送信画面でそのファイル名のファイルを実際に送信する」ということはできない Webブラウザでは、<input type='file'> を POST する場合にしか、ファイル選択ダイアログとファイル送信はできない実装になっている だから、入力画面のsubmitを受けたときにファイルは必ず受け取らないといけない(だから、あまり確認の意味がない) 受け取ったファイルをサーバで保持して、確認画面のsubmitが来たらファイルを実際に使用する、という手順にするしかないな 問題のひとつは確認画面でキャンセルされたときのサーバ側に残ったファイルの扱いなんだが、これは適当に消せ あと、確認画面で戻る押されて別のファイルをアップロードされたときの扱いとかも面倒だな どちらにしても、Rubyの話ではないので適当なCGI関連のスレで研究してくれ
862 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 15:31:55 ] >>861 どうもありがとうございます。 >どちらにしても、Rubyの話ではないので適当なCGI関連のスレで研究してくれ そういうことでしたら、Perl等、他の言語で書かれたCGIも参考にしてみたいと思います。 助かりました。
863 名前:デフォルトの名無しさん [2008/06/17(火) 11:40:57 ] 質問させてください。 現在Ruby on Railsの勉強をしています。 しかし根本的な部分で躓いてしまいました。 練習してみようとtsukaeru.netのシルバープランというVPSサーバーをレンタルいたしました。 しかし、まったくこの上でrubyを用いたホームページを公開する方法がわかりません。 ruby on railsははいっていますか?との質問にサポートは入っています。との解答でした。それ以上のサポートはできないとのことなので 失礼ながらこちらで質問させていただきます。 勉強をしている本は基礎Ruby on RailsというものなのですがこちらはWindowsで導入する方法でしかもローカルで動く方法のみ書いてあったのでそれを一般に 公開するという点では参考になりません。 サーバ構築なども全く初体験なのです。 rubyのプログラムは普通のHPのようにpublic_html直下にindex.htmlをおけば動くといったものではないのですか? 公開するまでの具体的な方法をおしえてください。よろしくおねがいします。 OSはLinux CentOS5(final)のようです。
864 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:05:19 ] windowsで導入してローカルで動かせばいいじゃないか
865 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:08:55 ] うむ
866 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:43:28 ] >>863 まず、その程度の知識でVPSに手を出すのが無謀 組織の命令でやらざるを得ないのなら同情する ちなみに % ruby script/server を実行すれば、適当なポートでHTTPサーバが立ち上がるので あとは localhost: (ポート番号)/ にアクセスすれば、サンプルページは見えるはず よく分からないなら素直にWindows使って練習した方がいい。VPSはその後で
867 名前:デフォルトの名無しさん [2008/06/17(火) 15:19:46 ] まじすか そんなにハードル高いものだとは・・・orz Windowsでやるということは、それを公開するには自鯖を立てるしかないのでしょうかね? 自鯖は少し理由があって立てられないのです。 レンタルしているVPSサーバー上でruby script/serverとすると ruby: No such file or directory -- script/server (LoadError) と出てしまいます。ruby -vなどとすると正しくバージョンが出ますのでインストールされていることは確かなはずです。 VPS以外で、もっとも簡単にRuby on Railsを公開するにはどうすればよいでしょう。。。 もとからRubyが使えますよ〜っと書いてあるレンタルサーバーでもどのようにしてつかえばいいのかさっぱりです。 本でも読んで勉強もしますのでよろしければはじめの一歩でも教えてください。
868 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 16:06:20 ] つか、なんで知識無い奴がRoRやってんの? CGIとHTTPとDBの知識無い奴がRoRなんか触ったって意味ないのに
869 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 16:15:51 ] >>867 Rails環境の構築は初心者には難しい お薦めの手順としては 1.WindowsにRails環境を作って、そこでRailsの基礎を勉強する 基礎Ruby on RailsにもRails環境入りのCDがあるけれど、ここは「InstantRails」を使うべき 2.ある程度Railsアプリケーションをローカル(つまりWin)で作れるようになったらVPSでの公開を検討する 遠回りかもしれないがまずはローカルでRailsを動かしてみよう 学生さんですか? ここはRubyスレで微妙にスレ違いの話になるので、捨てアドでも晒してくれたら色々と教える事は可能
870 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 16:19:05 ] >>867 >ruby script/server script/serverは、最初にrails generateで作ったディレクトリの中にある あとは分かるな? >VPS以外で 自鯖が立てられないならほぼ不可能 CGIスクリプトとして動かす手段もあるにはあるが、たぶん遅すぎて使い物にならない それでもやりたいなら「dispatch.cgi rails」でググれ
871 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 16:22:14 ] >>868 そんな事は無いだろう DBは必須だがCGIとHTTPの知識が無いRailsエンジニアなんてゾロゾロいるぞ もちろん誰かが作ってくれた環境上でアプリを作るだけしかできないが
872 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 16:25:29 ] >>870 いや、実はRails自体入ってないんじゃないかとオレは思ってるw 867にはrails -vしてみて欲しいところだな
873 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 16:32:10 ] >>868 まあ、Railsはどこをどう見ても 「わかってる人間が手早く作るための強力フレームワーク(※ 引き換えにパワー上限あり)」 なんだが、Javaソリューションビジネスで負けた奴らが次点を求めてRoRにツバつけようと群がったもんだから 「あなたにもRoRが簡単にできます」ビジネスの被害者が続出してる そういう被害者の人たちのフォローをするのも初心者スレの役目だとは思うぜ
874 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 16:38:38 ] >>873 Railsはシンプルでわかりやすいけど、それは「ある程度わかっている人」限定の話なんだよなぁ プログラミング未経験者ならRailsよりもPHPの方が簡単に入れるだろうとは思う
875 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 17:01:38 ] Rubyの知識はあるのかなあ 無いんだったら、俺ならダッシュで本屋行ってPHPに鞍替えするね
876 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 17:19:53 ] おk >>867 はPHPに乗り換えなさいw
877 名前:デフォルトの名無しさん mailto:linksuplinksup@yahoo.co.jp [2008/06/17(火) 18:10:33 ] 皆様ご回答ありがとうございます。 現在の、ローカルのWindows環境では本にしたがい、localhost:3000で動くことはできました。 それを一般に公開するなんて簡単だろうperlのcgiとおなじだろ〜っと考えていたらみごとに躓きました。 ご指摘のとおりrails -vしてみたところRails 1.2.2と返ってきたので入ってはいるみたいです。 そしてRoRのソースやらが入っているディレクトリまでcdで移動して再度script/serverを打ってみると create File exists - script/server と帰ってきました。どうやらサーバーがたったようではなさそうな感じですが・・・ あと一歩なんでしょうかorz ちなみに言語経験はC#とVBを少々でございます。 捨てアドさらせば教えていただけるというとても親切な方がいらっしゃいましたのでアドレスを書いて見ます。 よろしくお願いします。
878 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:38:56 ] 初心者か
879 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:43:32 ] >>878 まあ、初心者スレだからな 来るのはRubyの初心者だけにして欲しかったもんだが 2ch初心者とかネット初心者とかコミュニケーション初心者とかは正直勘弁
880 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:44:48 ] つーか>>878 とか>>868 は上から目線すぎ 誰だって知らない分野はあるだろ
881 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:47:51 ] lololol
882 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:49:54 ] >>880 ほいほいメールアドレス晒したり Windows以外で動作させるための文献検索すらできてなかったりするのは どうにも擁護できんぞ 「知らない分野」とかそういうレベルではない
883 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:53:29 ] >>880 は「お前には無理だからやめろ」とはっきり言ったほうがいいと仰っておられるのですよ RoR使うのやめろというレスを全部スルーしてるからな
884 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:10:38 ] >>882 自分のメールアドレス晒すのは、別に擁護する必要無いだろう。
885 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:12:56 ] RoR以外の手段を使えというアドバイスですが、一応RoRについての文献をすでに購入してしまったことと また、RoRを勉強してみたいという意欲のもと始めましたので、別の言語は考えていません。 LinuxにRuby と Railsを入れる方法についてはいろいろと調べまわったつもりなのですが具体的に公開手順を示されているサイトが みつかりません。メールアドレスを晒したのは>>869 さんが親切にあのようにおっしゃってくれたからです。 微妙にすれ違いとの事ですので、失礼しました。
886 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:02:43 ] Rails云々とは関係なくHTTPとCGIについてよく書けている記事があったので晒してみる ttp://itpro.nikkeibp.co.jp/article/COLUMN/20080128/292199/?P=4&ST=oss これを書いたやつは見込みがあるな
887 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:11:11 ] そのシリーズはなかなか良質 抽象データのあたりとか、 よくまあ説明が複雑になりがちな概念をここまで平易に
888 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:18:50 ] タイトルで吹いたw
889 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 22:58:25 ] 直伝噴いた
890 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:21:08 ] ここまで言うならぜひ言語を作って欲しい物だ
891 名前:デフォルトの名無しさん [2008/06/18(水) 02:07:50 ] 最近読んだ『ハッカーと画家』でrubyの評価が結構高かった。 著者曰くLispに最も漸近しているスクリプト言語とのこと。
892 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:25:08 ] お前が読んだのは最近かもしれんが、書かれたのは何年も前だぞ
893 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:33:52 ] 原語のほうは公開されてなかったっけ
894 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:54:16 ] Lispに最も漸近しているって褒め言葉になってないぞw
895 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 04:17:14 ] >>891 それ、 『今大人気の言語RubyはLispに一番近い言語なんだよ(知ってた?) でもさ、だったらLispそのものを使ったほうがいいよね?』 っていうプロパガンダだよ。PGの文章は今から見ると宣伝とか 自己啓発系のものが多いから、半分眉唾で読んだほうがいいよ。 リアルタイムで読んだら興奮するんだけどね。
896 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 07:54:35 ] MSが絡むと途端に理性を失うよねこの人
897 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 15:53:28 ] ここは初心者が質問するスレじゃなくて性格のねじれた中級者の雑談でよろしいでしょうか?それならば私も混ぜてください
898 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 15:54:24 ] >>896 評価するところは評価していたかと キャッチコピーが技術者のことをよく分かってるって
899 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 15:58:31 ] >>897 そういうのは基本的にはアンチ専用スレで
900 名前:デフォルトの名無しさん mailto:age [2008/06/19(木) 00:57:36 ] Ruby CGIで質問です。 Print文で処理中をあらわす文字列を表示し、 処理が完了したら、次にそのことを知らせる文字列を表示したいのですが、 最初に表示した処理中をあらわす文字列を消すにはどうすればいいのでしょうか?
901 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 01:08:39 ] CGIで逐次表示とか考えるな
902 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 01:10:16 ] >>900 それは、ボタンをポチッと押すと 「ただいま処理中です」 とかいうメッセージの表示されたhtmlを表示して、 サーバ側の処理が終わったら*自動的*に 「終了しました」 とか書かれたhtmlを表示したいということでしょうか?
903 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:07:05 ] >>900 Ajaxでどうぞ
904 名前:あぼーん mailto:あぼーん [あぼーん] あぼーん
905 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 07:19:48 ] >>901 少なくとも標準あるいは標準の応用でなんとかできるものではないな RubyやRubyライブラリとしてのサポートはないと思われる 自前でJavaScript書くしかないねえ
906 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 10:37:36 ] >>902 そういうことです。 >>901 >>903 >>905 CGIで逐次表示は考えないようにします。 Ajax(JavaScript)で対応したいと思います。 どうもありがとうございました。
907 名前:デフォルトの名無しさん [2008/06/20(金) 17:31:54 ] jp.rubyist.net/RubyKaigi2008/Live.html
908 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 18:50:56 ] 爆撃荒らしうぜえ
909 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 20:37:19 ] JRubyの質問ってここでいいのでしょうか・・・? JRuby-1.1.2.zipを dist.codehaus.org から落としてきて JDK-1.4.2_10の入っているPCに入れてみたけど、 noclassdeffounderror : java/lang/enum と出てjrubyもjirbも 立ち上がりません。 enum型ってJDK-5.0 からのサポートらしいけど、 JRuby-1.1.2ってJDK-5.0でしか動かないのでしょうか? 宜しくお願いします。
910 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 04:11:42 ] >>909 READMEに、JRubyのコンパイルにJDK1.5以上が必要って書いてあるからそうなんだろ
911 名前:909 mailto:sage [2008/06/22(日) 09:47:53 ] >>910 ネットの記事では1.4.2でも動作するって書いてあったのですが 実際はJDK5.0でないとだめなようですね。 返答ありがとうございました。
912 名前:デフォルトの名無しさん [2008/06/22(日) 12:26:13 ] あるHTMLファイル(何でもいいんですが一般的なWebページの)からリンクしているURLを 取り出そうとしています。ぐぐったらscrapiとかいうので簡単にできたんですがかなり 処理速度が遅いのです。 高速に取り出そうとしたらやはり正規表現で取り出すしかないのでしょうか? hpricotというのも見つけたのですがいまいちよくわかってません。 robustかつ高速に取得する方法はないものでしょうか?
913 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 12:43:09 ] 利用者のIT製品に対する基本姿勢は、Microsoftを相手にするときのそれが最も健全であって、 ブーブー言いながら使うのが一番だと思うが、最近は企業ブランド崇拝みたいのができあがっていて、 Apple教団はご愛嬌と思っていたが、何だかこれも同じような感じで、嫌な雰囲気だ。Googleしかり。 特にヘビーユーザーがそういう信者というか、エヴァンジェリストになって 教義に染まない利用者の不満をさえぎる壁になると異様。 そういうのって普及前のファンダムの色が残っているから、と楽観視していたのに。 これだけシェアを拡大しても、いっこうにあらたまらないな。
914 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 12:46:44 ] >>912 自力でサイト固有の正規表現考えて抽出してそのサイトの URI に + するのが簡単 正規表現めどいという人に Hpricot require 'rubygems' require 'hpricot' require 'open-uri' uri = URI.parse('www.ruby-lang.org/ja/ ') doc = Hpricot.parse(uri.read) puts doc.search('a').map{|e| uri + e['href']}.find_all{|e| e.scheme =~ /\Ahttp/}.uniq 実行結果 www.ruby-lang.org/ja/downloads/ www.ruby-lang.org/ja/documentation/ www.ruby-lang.org/ja/libraries/ www.ruby-lang.org/ja/community/ www.ruby-lang.org/ja/news/ www.ruby-lang.org/ja/security/ www.ruby-lang.org/ja/about/ www.ruby-lang.org/ja/news/2008/06/20/arbitrary-code-execution-vulnerabilities/ www.ruby-lang.org/ja/news/2008/06/13/ruby-1-8-7-p17-release/ ...
915 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 12:53:43 ] ('a')がAAに見えた
916 名前:912 mailto:sage [2008/06/22(日) 13:27:20 ] >>914 ありがとうございます。 scrapiよりは速そうです。scrapiが今使ってるマシンだと動かない(64bitに対応していない?)みたいなので 直接比較はできませんが。でも、robustという意味ではyoutubeのURL入れるとだめっぽいですね ex : ttp://jp.youtube.com/watch?v=T08oWYjwlSY サイト固有の正規表現を記述するのは一番確実でしょうが一番汚いやり方だと思うので スマートかつある程度速くできないものかなぁと試行錯誤中です。
917 名前:デフォルトの名無しさん [2008/06/22(日) 13:47:32 ] jp.rubyist.net/RubyKaigi2008/Live.html
918 名前:デフォルトの名無しさん [2008/06/22(日) 13:51:42 ] >>863 遅レスでもうみてないかもしれないけど。 Railsはともかく・・・ もし、あなたがVPSの管理もする(専用の管理者があなただけ)のなら、VPSを今すぐ解約しよう。 そのうちクラックされて他人に迷惑をかけるだけですよ。 まずは、ローカルで試す(Windowsでもできる)か、ローカルネットワークで外に公開しないサーバーを建てるなどをして知識を十分にしてからでも遅くはないよ。 VPSの場合、RubyとかRailsとかやる前にサーバーの管理の方法も一通り学んでおく必要がある。
919 名前:デフォルトの名無しさん [2008/06/22(日) 13:53:02 ] >>916 それは、httpじゃなくて、ttpだからでは?
920 名前:912 mailto:sage [2008/06/22(日) 14:14:22 ] >>919 単純に貼るときに抜いただけです。httpでやってhpricotで例外吐きます。
921 名前:デフォルトの名無しさん [2008/06/22(日) 15:34:31 ] 初めまして、 今回ruby on railsを勉強したいと思って、インストールしようとしとして $ gem install rails --include-dependenciesを実行したんですが、うまくいきません。 だれか、情報があったら教えてください。 C:\ruby>gem install rails --include-dependencies INFO: `gem install -y` is now default and will be removed INFO: use --ignore-dependencies to install only the gems you Bulk updating Gem source index for: gems.rubyforge.org/ Bulk updating Gem source index for: gems.rubyforge.org/ ↑の状態で一時間ぐらい止まってます。別にPCは動くので、フリーズとかでもないです。 www.rubylife.jp/index.html のサイトの手順通りにやったんですが… ちなみに、ruby及びRubyGemsもちゃんとインストールしてあります。 どなたか情報お願いします。 OS: Windows Vista です。
922 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 16:15:27 ] >>921 マシンスペックにもよるが、Rails 新規インストール時に数時間返答がないのは普通 1日以上待った例もあるからそのまま放っておけ
923 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 16:19:26 ] >>921 Debianの例で悪いけど、回避策もやはりあるみたいよ。 d.hatena.ne.jp/takaxi/20080128/1201482937
924 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 16:36:28 ] めんどくさいなあ >>916 どうして例外が起こったかはわかる? 残念だけど、Web のスクレイピングは文字通り例外との戦いだぞ サイトごとに調整しなければならないと思ってくれていい HTML や HTTP の知識はあるかな? たとえば以下の方法だと 142 のリンクが抽出されてるけど、本当に必要なのは数個だろ? require 'rubygems' require 'hpricot' require 'open-uri' uri = URI.parse('www.ruby-lang.org/ja/ ') doc = Hpricot.parse(uri.read) puts doc.search('a').map{|e| e['href']}.compact.map{|e| uri + e}.find_all{|e| e.scheme =~ /\Ahttp/}.uniq
925 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 16:46:58 ] uri が前のままだった 本質的には puts doc.search('a').map{|e| e['href']} だけでいい でも、それだと相対 URL で書かれているリンクがわけわからなくなるのでわざわざ uri に join してる http:// と https:// 以外を取得しても意味がないことが多いからわざわざ http:// と https:// 以外を除いてる で、Youtube では「onclick で JavaScript 起動しかさせないリンク」という href 自体がない <a> タグがあるのでわざわざ href が nil な場合を compact で除いてる 他のサイトでは「欲しいリンクだと思ったら実は画像貼り付けのボタンでPOST」とかにも対処しなければならないかもしれない require 'rubygems' require 'hpricot' require 'open-uri' uri = URI.parse('jp.youtube.com/watch?v=T08oWYjwlSY ') doc = Hpricot.parse(uri.read) puts doc.search('a').map{|e| e['href']}.compact.map{|e| uri + e}.find_all{|e| e.scheme =~ /\Ahttp/}.uniq
926 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 16:58:19 ] HTML の知識はないとダメだよね 後出しで youtube 出してきたけど、欲しいのは動画ファイルのURLや各種一覧にあるURLだろうし これからまた絞らないといけないだろうな(おそらくはCSSセレクタとかXPathとかあのへんの知識が要る)
927 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 17:01:13 ] リンクされてるURLを抜き出すライブラリを作ってるというならともかく、 無駄にあれこれ悩むよりさっさと正規表現使って抜き出せばいいと漏れは思う。
928 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 17:03:18 ] そういう意味では>>914 の1行目の時点で回答は出てるんだよな
929 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 17:32:00 ] うっかり汎用性を求めてしまうのはRubyスクリプトの悪い癖 初期ではそのノリで標準ライブラリになってしまったりしたが
930 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 17:33:53 ] >>921 rubygems 1.2 で劇的に改善されたらしい。 rubyforge.org/forum/forum.php?forum_id=25353
931 名前:930 mailto:sage [2008/06/22(日) 17:38:48 ] gem 1.2.0 にしたら、gem が笑っちゃうぐらい高速になったよ。
932 名前:デフォルトの名無しさん [2008/06/22(日) 18:19:17 ] RubyKaigがニコ動うpされまくってるぜ タグ検索 RubyKaigi2008‐ニコニコ動画(SP1) www.nicovideo.jp/tag/RubyKaigi2008
933 名前:デフォルトの名無しさん [2008/06/22(日) 18:24:58 ] >>931 メチャメチャ速くなってる気がするwwww gem updateがさっくりオワタww
934 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 18:58:55 ] >>932 お、今年はうpが早いな。 あとで見る。
935 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 19:27:22 ] 標準の関数的メソッド以外で引数のカッコ省略するのやめようぜ
936 名前:912 mailto:sage [2008/06/22(日) 21:47:13 ] >>924-925 遅くなりましたがありがとうございました。 やはり例外との戦いなんですね。参考にします。 >>926 youtubeはたまたまブラウザで開いてるURL全部入れて試しただけです。 youtubeから抜き出したいというわけではなかったのです。
937 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 14:10:30 ] gem1.2は爆速w >>930 ありがとう
938 名前:日立バキバキ高野くん祭り [2008/06/23(月) 20:00:05 ] 1.日立製作所社員の高野くん(高野光弘)が会社を誹謗中傷して機密も漏洩 2.日立のユーザーにも「キチガイ」との障害者差別発言 3.日立製作所の企業イメージをバキバキにする 4.自身のサイトの『32nd diary』に掲載 5.日立製作所に通報される 6.あせって似顔絵削除 7.火に油を注ぐだけで所属する日本UNIXユーザ会にも通報祭り勃発 8.「給料泥棒」と説教される 9.「殺します」と殺人予告をして警察に事情を聞かれる←イマココ 高野光弘の行動 現在は、過去の記事を閲覧できなくして、「本日の日記はツッコミ数の制限を越えています」としています。 まずは、不愉快な思いをされた方々に謝罪するべきなのではないでしょうか。 高野光弘の発言 「まぁ、どこの団体もそんなにヤワじゃないので、平気なんですけども。 日本UNIXユーザ会が一番対応に慣れてる感じ。」 日本UNIXユーザ会が対応に慣れているか、みなさん確認してみてください。 連絡先 www.net.intap.or.jp/oiia/cont2/p0402.html%7B0recid=10168.html
939 名前:デフォルトの名無しさん [2008/06/24(火) 00:00:05 ] postgresql にdbiを使って接続しようとしたんですが、うまく行きません。 /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:368:in `load_driver': Could not load driver (no such file to load -- /usr/local/lib/ruby/site_ruby/1.8/dbd/Pg) (DBI::InterfaceError) というエラーがでてきます。 $ echo 'export PATH=/usr/local/psql/lib:$PATH' >> ~/.bash_profile でライブラリへのパスは通っていると思うんですが、 解決策をお教えいただければと思います。
940 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:44:50 ] >>939 /usr/local/lib/ruby/site_ruby/1.8/dbd/Pg.rb は存在するの?
941 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 06:51:08 ] UNIXにおいては、ライブラリパス(というか、soの在処)は LD_LIBRARY_PATH あたりで設定すると記憶しているが。
942 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 14:23:27 ] linuxではldconfig とかも使う。
943 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 21:12:24 ] Solarisならcrleとかね
944 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 21:14:08 ] ldd でlib全部リンクできてるか確認するとかね
945 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 21:35:17 ] Macならotool -L だな。
946 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 21:54:40 ] 939です 皆さんご丁寧にありがとうございます。 >>940 /usr/local/lib/ruby/site_ruby/1.8/dbd/Pg.rb は存在しなくて、 /usr/local/lib/ruby/site_ruby/1.8/dbd/Pg/Pg.rb があります。 PATHやLD_LIBRARY_PATHはOKな筈なんですが、うまく行かないです。 こちらの環境は、macなのでotool -L などでもう少し格闘してみます。
947 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 23:14:53 ] >>946 ruby-pg はインストールしてる? ruby -rpg -e0 を実行して何も出なければ入っているって事なんだが。 それにしても分かりにくいエラーメッセージだな>dbi 真の原因を隠すなよ。
948 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 04:05:46 ] Rubyでシューティングゲームつくってるんですけど
949 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 04:08:31 ] ごめ 途中でカキコしちゃった Rubyでシューティングゲームつくってるんですけど 弾が当たってゲームオーバーになった時に画面全体を赤っぽくしたいんですけど なにかいい方法ありませんか? 一応予定としては 画面全体を赤で塗る 透過する って考えているんですけどがんばっていろいろ探ってみてもやり方がわかりませんorz どうかよろしくおねがいします。
950 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 04:33:13 ] >>949 手順 1.Rubyをアンインストール 2.HSPをインストール 3.「シューティングゲームビルダー」でぐぐる。 4.HSPをアンインストール わざわざRubyで作る意味がわからない
951 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 05:02:34 ] ん十年前の質問を思い出すなぁ C言語でゲームを作りたいんですがどうすればいいですか? しるかーぼけー
952 名前:デフォルトの名無しさん [2008/06/25(水) 07:11:46 ] Rubyかんけえねえw
953 名前:デフォルトの名無しさん [2008/06/25(水) 07:12:54 ] 少し質問があるのですが、数値的なシミュレーションをして 結果を分布図(正規分布の図みたいなの)として出力したいのですが、 適したグラフライブラリはどんなものがありますでしょうか?
954 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 07:20:52 ] Excelとかw
955 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 07:35:18 ] 数値だけ出力して、グラフはgnuplotに任せるとかはダメかな?
956 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 07:59:27 ] gnuplotのラッパあったよな、確か。 後は Rubyist Magazine 0006 号 Ruby Library Report 【第 5 回】 数値計算と可視化 ttp://jp.rubyist.net/magazine/?0006-RLR とか。
957 名前:デフォルトの名無しさん [2008/06/25(水) 09:04:23 ] >>954-956 ありがとうございます。 ああ、gnuplotでもいいか。 GnuplotのRuby用のインターフェースはこれですね。 rgplot.rubyforge.org/ gemにもありました。Windowsでもつかえるかな? あとは、テキストのとかw Histogram class for ruby(Kodama's tips page) www.math.kobe-u.ac.jp/~kodama/tips-ruby-histogram.html#japanese かっこいいグラフとか、 Gruff Graphs for Ruby | Ruby on Rails for Newbies nubyonrails.com/pages/gruff >>956 数値計算のライブラリの詳しい紹介、助かります。 うまく画像化できそうです。一通り試してみようと思います。 ありがとうございました。
958 名前:デフォルトの名無しさん [2008/06/25(水) 09:07:44 ] ちょっとした疑問なのですが、srandとかrandって 何故、クラス化かモジュール化されてないのでしょうか? 徹底的にOOPしているRubyにおいてrandは不思議な存在に思えます。 MLのログなど見てみたのですが、過去にクラス化の議論はされているようで↓ blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-dev/30954?30947-31824+split-mode-vertical パッチが作られていて、1.9で当てられるようなことになっているのですが、 SVNのtrunkや1.9.2とかのソースを見ても当たってないようです???
959 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 09:22:20 ] >>949 どんなライブラリを使ってるのかが分からないと、助言のしようがない
960 名前:デフォルトの名無しさん [2008/06/25(水) 09:56:07 ] ArgumentErrorエラーメッセージのことで質問させてください。 wrong number of arguments(1 for 0) このとき「引数の数が間違えてる」のは文字通りわかるのですが、 (1 for 0)はどう読んだらいいんでしょうか? 引数なし(0)のところに1つ(余計に?)渡してる、みたいなニュアンスでしょうか? 今、あるライブラリを使っていてこのエラーが出ているのですが 引数の数は間違えておらず(関数側にもデフォルト値も設定されている) 原因を探しているところです。
961 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 10:10:38 ] >>960 お前英語苦手だろ
962 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 10:53:50 ] Rubyの入門書はエラーメッセージに 2〜3節割くべきだと思う >>960 1 for 0 は「0 個の代わりに 1個得た」と読む 日本人にはまだわかりにくいな (got 1, required 0) とでも書いてくれればわかりやすいんだが 引数総数しか問題にしてない記述で、引数 0個のメソッドなのに引数が 1個渡されてるというエラーだ このメソッドに引数を渡してはいけないってことだな irb> 'abc'.downcase('param') ArgumentError: wrong number of arguments (1 for 0)
963 名前:960 mailto:sage [2008/06/25(水) 11:03:15 ] >>962 ありがとうございます。 直接呼び出しているメソッド内から呼ばれていたメソッドで 引っかかっていたようでした。 構文が古いのか(?)マニュアル見て書き直してみたらうまくいきましたm(_ _)m
964 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 12:14:18 ] >>958 ttp://doc.loveruby.net/refm/api/view/library/securerandom
965 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 12:30:57 ] >>950 一応Rubyの書き方覚えつつ作ろうかなぁと思ってちまちまつくってます。 ライブラリはSDLとfpstimerはいってます。
966 名前:デフォルトの名無しさん [2008/06/25(水) 12:55:07 ] >>964 んーたぶんそれと違うような。Mersenne Twisterをラップしたのなんだけど・・・ >>965 Rubyでゲーム制作ならこっちのスレの方がよいかと思う 【Ruby/SDL他】Rubyでゲーム制作・総合スレッド pc11.2ch.net/test/read.cgi/gamedev/1207069887/
967 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 13:03:33 ] >>966 普通の乱数ジェネレータのオブジェクト化ね。 多分やってない、やる気がないだけだと思うけど。 確か、過去の議論で、うまい名前とうまいAPIがあれば、みたいな 話になってたかな。
968 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 13:10:11 ] >>966 スレちソマソ 誘導サンクスー
969 名前:958 [2008/06/25(水) 13:20:17 ] MLのその後のRandomパッチの議論を見つけました。 blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-dev/31993?31774-32131+split-mode-vertical なんかグダグダのまま頓挫してますね・・・。