トップページ⇒tech
1001コメント311KB

Ruby初學者スレッド Part 9

■ このスレッドは過去ログ倉庫に格納されています
0001紅寶石2006/11/21(火) 08:33:42
まずはマニュアル

マニュアル
http://www.ruby-lang.org/ja/man/
Ruby FAQ
http://ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
逆引きRuby
http://www.namaraii.com/rubytips/
Ruby リファレンスマニュアルの Windows HTML Help版
http://elbereth-hp.hp.infoseek.co.jp/ruby.html
Rubyリファレンスマニュアル刷新計画
http://doc.loveruby.net/


前スレ
Ruby初心者スレッドPart8
http://pc8.2ch.net/test/read.cgi/tech/1159424939/

>>2-10
0755デフォルトの名無しさん2007/01/05(金) 15:31:16
>>754
本スレでもやらんでいい
0756デフォルトの名無しさん2007/01/07(日) 11:02:52
数値かそうじゃないかを判別するメソッドがあったら教えてください
integer?のFloatでもtrueを返すような物を探しています
0757デフォルトの名無しさん2007/01/07(日) 11:07:45
ヒント
1.class.ancestors
1.0.class.ancestors
0758デフォルトの名無しさん2007/01/07(日) 14:44:03
>756
ヒント
・クラス間の親子関係
・Object#is_a? / Object#kind_of?
0759デフォルトの名無しさん2007/01/08(月) 02:11:33
RDoc::usage の出力先を標準エラー出力に変更するには
どのような指定をすればよいでしょうか?
0760デフォルトの名無しさん2007/01/08(月) 03:29:47
* 標準出力を標準エラー出力につけかえる
* RDoc::usageを再定義する

のどちらかだと思う
0761デフォルトの名無しさん 2007/01/08(月) 04:02:09
Rubyというやつに挑戦しようと思い検索したところvs2005stdにそのままインストール出来る
ようなので、したのですがRubyProjectを立ち上げて、新しい項目としてtest.rbという名前にし
print 123
とだけ打って実行してみたのですが、まったく駄目です。
というか、c/c++を今まで勉強してきたのですが今回rubyの入門サイトをgoogleで検索して
一通りみたのですがさっぱりわからず、mainに当たる部分はどこなんだ?
という、たぶんスクリプト言語?ってのをやってる人にとっては「何いってんだ?」という
質問かもしれませんが、できたら何をどうして、どのページを参考にしたら良いのか
教えていただきたいです。
お願いします。
0762デフォルトの名無しさん2007/01/08(月) 04:37:32
ttp://www.google.com/search?num=50&lr=lang_ja&ie=utf8&q=vs2005std
おー結構あるな

それはいいとして、お前はこれまで一体何をやってきたんだ
何も身についてないじゃないか
0763デフォルトの名無しさん2007/01/08(月) 04:47:52
>>761
何がどうダメなのかちゃんと書いたほうがいいんじゃないか。
一体どういう状況なのか全く読めないぞ。それと、そのスクリプト自体は間違ってない。
0764デフォルトの名無しさん2007/01/08(月) 04:49:59
Visual Studio 2005スレ Part18
http://pc10.2ch.net/test/read.cgi/tech/1167788121/72

72 名前:デフォルトの名無しさん[sage] 投稿日:2007/01/08(月) 04:02:57
Rubyというやつに挑戦しようと思い検索したところvs2005stdにそのままインストール出来る
ようなので、したのですがRubyProjectを立ち上げて、新しい項目としてtest.rbという名前にし
print 123
とだけ打って実行してみたのですが、まったく駄目です。
というか、c/c++を今まで勉強してきたのですが今回rubyの入門サイトをgoogleで検索して
一通りみたのですがさっぱりわからず、mainに当たる部分はどこなんだ?
という、たぶんスクリプト言語?ってのをやってる人にとっては「何いってんだ?」という
質問かもしれませんが、できたら何をどうして、どのページを参考にしたら良いのか
教えていただきたいです。
お願いします。
0765デフォルトの名無しさん2007/01/08(月) 05:02:07
マルチはどうでもいいが、VisualStudio2005用のRubyプラグインがあるんすか?マジ?
0766デフォルトの名無しさん2007/01/08(月) 05:13:06
検索すればいいと思うよ。
0767デフォルトの名無しさん2007/01/08(月) 06:20:07
Ruby.NET
0768デフォルトの名無しさん2007/01/08(月) 08:24:34
>>761
Rubyというやつとvs2005stdというやつの間には何の関係もない。
07697612007/01/08(月) 09:13:05
いや、でも
http://www.sapphiresteel.com/IMG/pdf/rubyinsteel_userguide.pdf
のページにvs2005std以上だと使えてインストールの仕方が書いてあるんですが
まぁ、興味本位で、Rubyに触ってみたく検索したら環境を統合できそうだったので
インストールの仕方見ながらやって、環境は統合され認識もされるけど
コンパイル実行の段階で、エラーに、/Cや-rといったリンカ関係か〜?と思うような
メッセージしかでず、結局、初心者の自分には、何が足りないのかが分からずで
実行できないままで、もうめんどくさいので全部いったん消して、普通にRuby落として
PATH通して、なんかのフリーのエディタ使ってやってみます。
ずっとC/C++ばっかやっててJAVAはやったけど重いし好きじゃないし
C#はインテリセンスがうっとおしいしってな具合でそれら以外の言語をちょっと
さわりたくなったわけで・・・
まぁ、その、あれだ
マルチしてすんませんでした。
0770デフォルトの名無しさん2007/01/08(月) 10:18:01
>>761
Rubyはインタプリタ言語です コンパイルは不要です
Rubyに限らず、動的な言語にはコンパイラーはありません
ネットでインタプリタ言語を少し調べてみてください
0771デフォルトの名無しさん2007/01/08(月) 10:48:25
ソース解析して構文木つくるのも、コンパイルと言えばコンパイルだけれども…
0772デフォルトの名無しさん2007/01/08(月) 10:58:02
>>761が言ってるのは、Railsの開発環境だな
0773デフォルトの名無しさん2007/01/08(月) 11:30:04
>>769
> C#はインテリセンスがうっとおしいしってな具合でそれら以外の言語をちょっと

いやそれ言語の機能じゃないしw
0774デフォルトの名無しさん2007/01/08(月) 11:40:33
>ずっとC/C++ばっかやっててJAVAはやったけど重いし好きじゃないし
>C#はインテリセンスがうっとおしいしってな具合でそれら以外の言語をちょっと
>さわりたくなったわけで・・・

あほが
0775デフォルトの名無しさん2007/01/08(月) 13:50:53
Javaが遅いと嘆く奴 ≒ Swing使用者 + JavaのI/Oはデフォでバッファリングしないのを知らない奴
0776デフォルトの名無しさん2007/01/08(月) 14:00:59
さすがRuby使いはキチガイだ
0777デフォルトの名無しさん2007/01/08(月) 15:11:22
>>769
なぜ、/C や -r がリンカ関係なんて発想が出てくるんだ?
0778デフォルトの名無しさん2007/01/08(月) 16:19:01
Matzしつけー
0779デフォルトの名無しさん2007/01/08(月) 16:56:45
Python最高!(by秋山)
0780デフォルトの名無しさん2007/01/09(火) 14:27:07
殺伐としてきたな
0781デフォルトの名無しさん2007/01/09(火) 16:04:07
教祖様からして「PHPは言語として(ry」とか言ってる厨なんだから、しかたないでしょう。
0782デフォルトの名無しさん2007/01/09(火) 17:37:55
おおっぴらに、人気のあるものを批判すると変な目で見られるのはしかたないな。
言ってることは別に間違っちゃいないと思うけど。

実際まともな反論もないし、批判の内容は誹謗中傷と大して変わらないw
無駄なのにね。
0783デフォルトの名無しさん2007/01/09(火) 18:52:35
Rubyは言語として(ry
0784デフォルトの名無しさん2007/01/09(火) 19:03:26
Matzしつけー
0785デフォルトの名無しさん2007/01/10(水) 06:25:15
Ruby Cheatsheet v.1
http://ruby.cenophobie.com/rubycheat.php
0786デフォルトの名無しさん2007/01/10(水) 06:26:06
>>781
なんで、phpをあーだ言っただけで、厨なんだ?
厨じゃない俺から言わせれば、phpは言語として(ry
だが・・・
0787デフォルトの名無しさん2007/01/10(水) 06:44:13
黙ってRubyを崇めろ。
他の言語がクズであることを理解するまで。
0788デフォルトの名無しさん2007/01/10(水) 07:00:36
とりあえず初學者スレよりは本スレ向きの話題だな
変な流れを断つ為にも質問は受付中
0789デフォルトの名無しさん2007/01/10(水) 09:56:45
質問してきた人を馬鹿にするのがRuby使い
0790デフォルトの名無しさん2007/01/10(水) 10:35:45
>>789
おまえが馬鹿にして、そしてそういう台詞を言ってるんだろう。
0791デフォルトの名無しさん2007/01/10(水) 10:38:35
では質問を。

Linuxで、書いたスクリプトに#!行を付けて、PATH通してコマンドみたいに使いたいんですが、なにかrequireしてると実行されません。
直接コマンドラインからrubyに読ませると、スクリプトは問題なく動きます。
requireがあるスクリプトを#!行で実行する手だてはありますでしょうか。
0792デフォルトの名無しさん2007/01/10(水) 10:39:56
>>791
ソースを晒すよろし
0793デフォルトの名無しさん2007/01/10(水) 11:24:48
なんか勘違いしてそうだね
0794デフォルトの名無しさん2007/01/10(水) 12:06:38
ttp://www.asahi-net.or.jp/~AN4J-UEHR/homepage.en/jp/.NETplaf/Lisp.rb
が落ちるんだけど、漏れだけ?
0795デフォルトの名無しさん2007/01/10(水) 12:15:50
実行されてる ruby のバージョンが違うんじゃないの?
0796デフォルトの名無しさん2007/01/10(水) 13:10:40
とりあえずスレ違いなので初心者スレにでも池
0797デフォルトの名無しさん2007/01/10(水) 13:12:53
ここ初心者スレちゃうんかと
0798デフォルトの名無しさん2007/01/10(水) 13:25:20
>>792

#!/usr/bin/ruby

require 'kconv'
STDOUT.print STDIN.read.toeuc

この程度のものなんですが、PATH通してrehashしても
コマンドが見付かりません、と言われます。
(Vine Linux3.2 + tcsh + Ruby1.8.2[i386-Linux])
0799デフォルトの名無しさん2007/01/10(水) 13:50:10
エラーは全文書け
略すな
訳すな
0800デフォルトの名無しさん2007/01/10(水) 14:04:58
>798
Rubyあるいは使っている人間のどちらかに重大なバグがある。
どちらにしろ使うの止めたほうがいい。
0801デフォルトの名無しさん2007/01/10(水) 14:29:55
まさか r-x にしてないとか
./hogehoge じゃなくて hogehoge で実行とか
0802デフォルトの名無しさん2007/01/10(水) 15:15:50
改行コードが cr lf になっているということもある。
0803デフォルトの名無しさん2007/01/10(水) 15:48:02
>>799
コマンドが見付かりません、で全文です。
(Rubyにではなくシェルが付けて来た文句)
紛らわしくてすみません。

で、結局>>802さんの指摘の通りだったようです。
結果スレ違いな質問ですみませんでした。
0804デフォルトの名無しさん2007/01/10(水) 19:16:33
PHPですらlfで動くのにRubyは(ry
0805デフォルトの名無しさん2007/01/10(水) 19:22:26
#! の行を解釈するのはカーネルです。
そのため /usr/bin/ruby\r を実行しようとしますが、
そのコマンドは存在しないのでエラーになります。
ruby かどうかには関係ありません。
0806デフォルトの名無しさん2007/01/10(水) 19:24:28
Rubyはカルトなので、いかなる批判も許しません!
0807デフォルトの名無しさん2007/01/10(水) 19:26:41
男らしくてステキ!
0808デフォルトの名無しさん2007/01/10(水) 20:54:14
Rubyの世界ではカーネルが#!の行を解釈するのか。
シェルじゃないのか。
すごいな。
0809デフォルトの名無しさん2007/01/10(水) 21:37:59
>>804
馬鹿だなお前
0810デフォルトの名無しさん2007/01/10(水) 21:42:18
>808
shebangの解釈はexecve(2)が行う。
これまでシェルが頑張ってるとでも思っていたのか。
0811デフォルトの名無しさん2007/01/10(水) 21:47:30
いくら荒そうとしてもニワカ君じゃあ間抜けでだめだねw
0812デフォルトの名無しさん2007/01/10(水) 21:51:03
素直に飛行機から投げ捨てられたコーラ瓶で肉叩いてろ
0813デフォルトの名無しさん2007/01/10(水) 22:35:48
812
歳が判るような判りにくいネタを・・・ww
0814デフォルトの名無しさん2007/01/10(水) 23:48:59
>>808

#!/bin/sh
↑こういう行で何か思うところはないかね
0815デフォルトの名無しさん2007/01/10(水) 23:59:05
>814
808じゃないが、>810を知る前は
単純にシェルがshを起動してるんだと思ってましたorz ハイアホデス
0816デフォルトの名無しさん2007/01/11(木) 00:05:02
実行はカーネルからだけど
どうみても#!の行はshellが解釈してるだろ
本当にありが(r
0817デフォルトの名無しさん2007/01/11(木) 00:07:05
>>816
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man2/execve.2.html
0818デフォルトの名無しさん2007/01/11(木) 00:27:23
コマンド叩いたときに、シェルがやってるのは大筋で、

1. 入力を、変数展開とかクォート処理ののちトークンに分割。
2. 環境変数PATHの要素のディレクトリそれぞれについて
一覧を見て、第1トークンに一致する実行ビットの立っているなものを探す。
3. 見つかったらそいつに残りトークンを添えてexec(2)系システムコールを発行してwait。
見つからなければCommand not found.

あとはカーネルの仕事。
0819デフォルトの名無しさん2007/01/11(木) 03:01:26
>>808=816 が間抜けすぎて泣ける。
0820デフォルトの名無しさん2007/01/11(木) 03:16:51
>>818
パイプとか
リダイレクトとか
ヒストリーとか
他には?
0821デフォルトの名無しさん2007/01/11(木) 03:29:21
>>819
一所懸命皮肉を言おうとして、全部失敗してるもんな。
0822デフォルトの名無しさん2007/01/11(木) 07:07:44
でもシェルの存在を知ってたのは偉いぞ。大したものだ。
0823デフォルトの名無しさん2007/01/11(木) 08:38:41
>820
そりゃほかにも、変数の展開とか、ifなどの制御とかはあるだろうよ。
0824デフォルトの名無しさん2007/01/11(木) 09:28:23
大筋って書いてあるだろ。
0825デフォルトの名無しさん2007/01/11(木) 10:58:44
>>808のシステムでは、今でもtexec(3)ががんばってるんだよ。
ほっといてやれ。
0826デフォルトの名無しさん2007/01/11(木) 19:56:13
WIN32OLE を使用して、
ブラウザー操作をしています。
JapaScriptポップアップが出現したら消すよう制御したいのですが
可能でしょうか?

できればWIN32OLEでの実現法を知りたいです。
宜しくお願いします。

0827デフォルトの名無しさん2007/01/11(木) 21:23:54
そもそもjavascriptを無効にしておくという選択肢はない?

まじめに考えると、
自分でそういうポップアップ「だけ」出るページを作って実験するのがいいと思う。
irbからでも操作できるので実験するのがいいよ。
0828デフォルトの名無しさん2007/01/11(木) 21:30:26
すげえ的はずれ
0829デフォルトの名無しさん2007/01/11(木) 22:30:47
「プログラムの追加と削除」
↓
「コンポーネントの追加と削除」
↓
「スクリプトデバッガ」をアンインストール
08308262007/01/12(金) 13:52:49
上記の質問引き続き宜しくお願いします。
ブログを巡回して自作ブログ検索エンジンを作成しているのですが、
やはり net/httpだとJavaScript周りの値が拾えなくて困っています。
0831デフォルトの名無しさん2007/01/12(金) 13:58:49

ここで聞いてみたら?
http://pc10.2ch.net/test/read.cgi/tech/1166172047/

あと2chもうすぐとまっちゃうみたいなのでお早めに
0832デフォルトの名無しさん2007/01/12(金) 20:16:21
質問なんですが、Windowsで、メッセージボックスを簡単に出す事はできないでしょうか・・・

>>831
2ch止まるの?
0833デフォルトの名無しさん2007/01/12(金) 20:18:37
できますよ
0834デフォルトの名無しさん2007/01/12(金) 20:40:41
>>833
氏ね
08358322007/01/12(金) 20:45:19
行けました!
WSH使うんですね!

require 'win32ole'
WIN32OLE.new('WScript.Shell').Popup("hoge", 0, "error")
08368322007/01/12(金) 21:05:59
続きです。

unixなど、win32oleが上手く行かない環境の場合に、フラグ立てて、
違う処理をしたい(例えば、標準出力にメッセージを出す)のですが

begin
require 'hoge'
rescue
end

とかでも普通にエラーが出てしまいます。
コンパイル時にエラー出しているんですかね
なんとかする方法はないでしょうか?
0837デフォルトの名無しさん2007/01/12(金) 21:07:34
>>836
eval をうまく使ってみるとか。
0838デフォルトの名無しさん2007/01/12(金) 21:10:42
rescue LoadError
0839デフォルトの名無しさん2007/01/12(金) 21:12:58
irbで実験
0840デフォルトの名無しさん2007/01/12(金) 21:13:02
無指定rescueで捕まえられるのはStandardErrorとそのサブクラス。
08418322007/01/12(金) 21:39:07
>>838
それだ(゚∀゚)

is_win32 = begin
  require 'win32ol'
  true
rescue LoadError
  false
end
0842デフォルトの名無しさん2007/01/12(金) 23:57:56
wineがあるとロードできてしまう罠。
0843デフォルトの名無しさん2007/01/13(土) 00:04:24
PLATFORMみるのじゃダメなのん?
0844デフォルトの名無しさん2007/01/13(土) 00:54:29
win32oleが動く環境かどうかを見たいだけなんだから、これはこれでいいんじゃね?
0845デフォルトの名無しさん2007/01/13(土) 10:01:15
スクリプトの途中で irb を起動することってできないでしょうか?

たとえば
0846デフォルトの名無しさん2007/01/13(土) 10:05:08
すいません。途中で書き込んでしまいました。
たとえば、以下のようにしたいと思ってます。

class Foo
end

foo = Foo.new
# ここまで実行して、そのコンテキスト(?) で irb を起動したい。
# require "irb"
# IRB.start
# ↑だと Foo クラスは見えるのですが、foo が見えません。
0847デフォルトの名無しさん2007/01/13(土) 10:56:23
>>846
irbの呼び出しはそのとおりでいいけど、fooが見えない、というのは
スコープの問題と言っていいのだろう。
あるファイル中のトップレベルで定義したローカル変数は、同じ
ファイルの関数や、他のファイルから参照できない。
たとえ同じファイルでも、異なるメソッドからはローカル変数って
引数として渡さない限り参照できないだろ?
グローバル変数か、定数にするしかないな。
0848デフォルトの名無しさん2007/01/13(土) 11:04:58
bindingをどーにかして渡せないもんかな。
0849デフォルトの名無しさん2007/01/13(土) 12:32:53
vrubyについての質問です。

Edit1 と Edit2 があったとします。

Edit1にフォーカスが当たった状態でタブキーを押すと
Edit2にフォーカスが移動するようにしたいのですがどのようにすればよいのでしょうか?
0850デフォルトの名無しさん2007/01/14(日) 03:12:43
条件式としての範囲式の用法を勉強しているのですが、
 i=0
 while i<4
  print i if (1<=i)..(2<i)
  i += 1
 end
を実行すると、12が表示されるのではなく、123が表示されてしまいます。
期待する12という表示はなぜ得られないのでしょうか?
0851デフォルトの名無しさん2007/01/14(日) 06:31:47
Rubyにおいて条件式、
 if x
などで偽と判定されるのは、
・xがfalseだったとき
・xがnilだったとき
の場合のみだ。Rangeオブジェクトはそのどちらでもないので、真になる。
0852デフォルトの名無しさん2007/01/14(日) 07:40:29
ifの中でnilは偽にならないときがあるような・・・
0853デフォルトの名無しさん2007/01/14(日) 07:50:33
>>852
例を挙げよ。
0854デフォルトの名無しさん2007/01/14(日) 07:57:30
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/52
0855デフォルトの名無しさん2007/01/14(日) 08:06:38
>>852
それは単にnilになってないだけでは
空(empty)であることとnilであることは違う

irb> unless nil then puts 'NIL' else puts 'NON-NIL'end
NIL
irb> unless '' then puts 'NIL' else puts 'NON-NIL'end
NON-NIL
irb> unless ''[0] then puts 'NIL' else puts 'NON-NIL'end
NIL
irb> arr=Array.new
irb> unless arr then puts 'NIL' else puts 'NON-NIL'end
NON-NIL
irb> unless arr[0] then puts 'NIL' else puts 'NON-NIL'end
NIL
irb> hash=Hash.new
irb> unless hash then puts 'NIL' else puts 'NON-NIL'end
NON-NIL
irb> unless hash['hoge'] then puts 'NIL' else puts 'NON-NIL'end
NIL
■ このスレッドは過去ログ倉庫に格納されています