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


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

Ruby 初心者スレッド Part 19



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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。


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が必要なことも含めてちゃんと書いてあるかも。






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

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

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