[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 05/09 14:24 / Filesize : 97 KB / Number-of Response : 383
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

Ruby 初心者スレッド Part 36



1 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:56:36 ]
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

★注意★ Ruby 1.9.1 は初心者にはまだ時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
   (理由:現時点では有名ライブラリやアプリが 1.9.1 に完全には対応していないためです)
 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 を習得すれば将来スムーズに 1.9 系に移行できるでしょう。

関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・モジュール名やエラーメッセージでググる
 ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/
 ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(自力で訳さずなるべくそのままで)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。

■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

2 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:57:18 ]
【よくあるしつもん】
Q:
いちからRubyを始める初心者向けのRuby入門書は何がありますか?

A:
プログラム作成自体の初心者なら
 ・「たのしいRuby 第2版 Rubyではじめる気軽なプログラミング」
  www.amazon.co.jp/dp/4797336617/
文法は理解済み(orリファレンスで乗り切る既言語習得者)の場合のRuby様式を知る必携2冊目
 ・「初めてのRuby」
  www.amazon.co.jp/dp/4873113679/

以下は外れが少ないとされている本です。必ず立ち読みした上で自分の目的とレベルに応じて購入してください。
 ・「Rubyレシピブック 第2版 268の技」(初心者向け)
  www.amazon.co.jp/dp/4797340045/
 ・「プログラミングRuby 第2版 言語編」(初心者向け)
  www.amazon.co.jp/dp/4274066428/
 ・「Ruby Way 第2版」(脱初心者向け)
  www.amazon.co.jp/dp/4798115339/
 ・ 「Rubyクックブック ―エキスパートのための応用レシピ集」(脱初心者向け)
  www.amazon.co.jp/dp/4873113245/

以下の本は言語作者が書いた最新本ですがとりあえず初学者向けではありません。
 ・「プログラミング言語 Ruby」(言語として深く知りたい人向け)
  www.amazon.co.jp/dp/4873113946/

3 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:57:59 ]
Ruby 公式・非公式便利サイト2009

・Ruby Home Page 【公式、お役立ち度が微妙】
 www.ruby-lang.org/ja/
・Rubyリファレンスマニュアル 【検索機能休止中、Googleなどの併用を】
 www.ruby-lang.org/ja/man/
 www.ruby-doc.org/ 【詳しい英語版】
・HTMLヘルプ版リファレンスマニュアル配布さん 【Windowsで便利、検索も無論可能】
 elbereth-hp.hp.infoseek.co.jp/ruby.html
・Programming Ruby - The Pragmatic Programmer's Guide 【好評書籍の初版がネットで、ただし英語】
 www.ruby-doc.org/docs/ProgrammingRuby/
・Rubyist Magazine - るびま 【ライブラリ紹介などの読み物、過去のコードレビューは一読の価値あり】
 jp.rubyist.net/magazine/

・逆引きRuby 【やりたいことから探すWiki、最近元気ないので編集者募集】
 www.namaraii.com/rubytips/
・はてなキーワード > Ruby 【うっかりどっさりまとまったリンク集、説明なし】
 d.hatena.ne.jp/keyword/Ruby

・RubyForge 【○○をやりたい管理されたライブラリを探すならここ、英語】
 www.rubyforge.org/
・GitHub 【○○をやりたいコードをとにかく探すならここ、英語】
 github.com/

・日本Rubyの会 【最近はオフライン勉強会の寄り合い場と化しているので近くで勉強会があれば】
 jp.rubyist.net/

4 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:58:40 ]
●関連スレ
Rubyについて Part 39
pc12.2ch.net/test/read.cgi/tech/1265467681/
●アンチスレ
・Rubyについて(アンチ専用) Part004
pc12.2ch.net/test/read.cgi/tech/1249737531/
●Railsスレ
【Ruby】Ruby on Rails Part9
pc11.2ch.net/test/read.cgi/php/1266563593/
●Windows用スレ
・【ActiveScript】RubyをWindowsで使うスレ【GUI】
pc11.2ch.net/test/read.cgi/tech/1155031689/
●Ruby 1.9 系列スレ
・魁け! Ruby 1.9.X
pc11.2ch.net/test/read.cgi/tech/1201603546/

●前スレ
Ruby 初心者スレッド Part 35
pc12.2ch.net/test/read.cgi/tech/1267668057/
Ruby 初心者スレッド Part 34
pc12.2ch.net/test/read.cgi/tech/1264635554/
Ruby 初心者スレッド Part 33
pc12.2ch.net/test/read.cgi/tech/1259990485/

5 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:59:20 ]
バージョンに関するよくある質問

・Ruby 1.8.5
 レンタルサーバ等にいまだに残ってる非安定な古いバージョン
 1.8.6 にすらなってない理由はたぶん管理の手抜きなので怒ってよい

・Ruby 1.8.6
 過去の長期政権と数の暴力で一大勢力圏を維持中の旧安定版
 公開スクリプトはこれでも動作するべきではあるんだがそろそろ 1.8.7 に譲ってくれ

・Ruby 1.8.7
 1.9 シリーズの機能をいくつか足したハイブリッドなバージョン、初学者にこそお勧め
 1.9 系機能は 1.8.6 では動かないが「えーマジ1.8.6!? 1.8.6が許されるのは小(AA略」と煽ってよい

・Ruby 1.9.0
 不安定にして先鋭機能が超満載の開発版バージョンだったもの
 1.9.x は本来全てが開発版の呼称だったのだが、事情が変わって(ここ笑うところ)1.9.1 は安定板に

・Ruby 1.9.1
 満を持して登場の 1.9 系列安定板(本体は 1.8.6 程度には使えるということになっている)
 本体と添付ライブラリの動作は問題がないのだがgem等外部第三者ライブラリの対応が超適当特に英語圏産
 初心者を脱した人が外部ライブラリの開発コミュニティに参加してくれたりすることを期待中

6 名前:テンプレここまで mailto:sage [2010/03/22(月) 14:04:20 ]
Windows で Ruby を使う初心者はとりあえず ActiveScriptRuby の 1.8.7 をインストールして慣れろ
OneClickInstaller は単に古すぎ、RubyInstaller は MinGW32 版で現状扱い怪しい、cygwin 版は cygwin マニア専用
IDE のお勧めは特にない(せいぜい汎用のEclipseかNetBeans)、RDE は古くて独自すぎで Ruby に慣れた人向け

■ Windows でとにかく迷いたくない普通の人 … ActiveScriptRuby 1.8.7
ttp://arton.hp.infoseek.co.jp/indexj.html
 の題字のでかい 「ActiveScriptRuby 1.8.7(p249) with-winsock2 tcl-stub」

 マニュアルはWebで見ることもできるが手元にあると便利、1.8.7 の HTML ヘルプ版が
ttp://www.ruby-lang.org/ja/documentation/
 の「Rubyリファレンスマニュアル刷新計画 chm版 1.8.7用」

 夢のお告げ等、何かの間違いで Ruby の知識がないうちから 1.9.1 を使って苦しみたいマゾい人は
ttp://www.artonx.org/data/asr/ の「Ruby-1.9.1-p数字 Microsoft Installter Package」

7 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:11:58 ]
これは >>1 乙じゃないんだからねうんたらかんたら

8 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:12:39 ]
ちょっと補足

>>2の『たのしいRuby』は第3版が3/31に発売予定だとか
ttp://www.amazon.co.jp/gp/product/4797357401/


ところで↓はテンプレに載っててもいいと思うんだけど
何かまずいんだっけ?

『プログラミング入門 - Rubyを使って - 未来のプログラマのためのチュートリアル』
ttp://www.ie.u-ryukyu.ac.jp/~kono/software/s04/tutorial/index.html
(訳した西山先生のサイトは現在行方不明)

9 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 14:16:24 ]
 ○  >>1 乙 もうお前に用はない 
 く|)へ
  〉   ヽ○ノ
 ̄ ̄7  ヘ/
  /   ノ
  |
 /
 |


10 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 19:42:32 ]
      ,―ヽ_(((((_、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-――-、   ・ /
    i、  <(EEEEE)> ∵/    IPA Rubyスレは誰でもウェルカム
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |



11 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:21:15 ]
Dir.globじゃなく、ただワイルドカードを判定ってどうやるんですか?
if match("aaa", "*a*") 〜みたいな感じで

12 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:30:30 ]
正規表現じゃだめなの?
/a/.match("aaa") とか

13 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:30:52 ]
どういうことをしたいのかいまいちよくわからんが、
ファイル一覧の文字列を含んだ配列の各要素に対して
正規表現でマッチするかどうかをチェックすればいいのではなかろうか


14 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:31:38 ]
>>11
File.fnmatch
ただしglobで使える一部のパターンは使用不可

15 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:37:51 ]
>>14
オリジナルのfnmatchの知識がある人向けだな、これ…

16 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 00:35:36 ]
わざわざfnmatchをやりたいつってんだから、fnmatchの知識は要求してもいいんじゃね。

17 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 01:30:25 ]
Fileメソッドなのはおかしい
String#matchに文字列渡したら発動するようにしようぜ

18 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 02:20:21 ]
OK わかった ここまでまとめてこうか

wild_card = "*a*"
if Regexp.new(wild_card.gsub(/\*/, '.*')).match("aaa") then ...

うん。絶対違うな

19 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 11:10:04 ]
proc と lambda って違うの?
Proc オブジェクトという名前で lambda 使ったらだめ?

20 名前:デフォルトの名無しさん [2010/03/23(火) 11:16:57 ]
doc.okkez.net/static/192/method/Kernel/m/proc.html

正直覚えきれない。
関数的ならlambda、手続き的ならprocという感じ?




21 名前:デフォルトの名無しさん [2010/03/23(火) 11:21:38 ]
ttp://d.hatena.ne.jp/shunsuk/20090101/1230816826
これはわかりやすいかも


22 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 11:29:12 ]
>>19
「ここにはProcオブジェクトを指定します」というところでlambda使ったら駄目
「ここにはProcオブジェクトかlambdaを指定します」ならlambda使ってもOK
「ここにはlambdaを指定します」というマニュアルだったらProcオブジェクトでは駄目な理由を問い詰めろ

23 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 11:37:35 ]
指定したい場合は「手続きオブジェクト」という日本語で逃げてる俺
実際問題として、引数増減させたり内部でreturnしたりしてエラー出されても俺はそんなん知らん

24 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 15:16:05 ]
>>21
> 正直、lambdaがなぜMethodオブジェクトでないのか解りません。
> おそらく、Rubyの後のバージョンでは変更されるのではないでしょうか。
lambdaは作られたところのコンテキストを保存するので、Methodとは決定的に異なる。


25 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 15:53:39 ]
> キーワード [binding] は発見できませんでした。
さもありなん

26 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 19:46:49 ]
そこら辺の概念がよく分からない
C++で説明してくれないか

27 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 20:45:47 ]
javaのequalsに相当するメソッド?を教えてください
そして、オブジェクト同士を比較する時は、それをオーバライドする必要があるのですか?

28 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 20:54:26 ]
self == other
  self と other が等しければ真を返します。デフォルトでは equal? と同じ効果です。
  このメソッドは各クラスの性質に合わせて再定義するべきです。

self === other
  このメソッドは case 文での比較に用いられます。
  デフォルトは Object#== と同じ働きをしますが、この挙動はサブクラスで所属性のチェックを実現するため適宜再定義されます。

eql?(other)
  二つのオブジェクトが等しければ真を返します。Hash で二つのキーが等しいかどうかを判定するのに使われます。
  このメソッドを再定義した時には Object#hash メソッドも再定義しなければなりません。
  eql? のデフォルトの定義は equal? と同じくオブジェクトの同一性判定になっています。

equal?(other)
  other が self 自身の時、真を返します。
  このメソッドを再定義してはいけません。
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

複雑だよねー

29 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 20:54:48 ]
>>26
c++ の人ならlambdaはC++にもある(boost)から概念ならそこから理解できるはず

30 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 20:57:47 ]
>>27
irb> "str" == "str"
true
irb> "str".equal?("str")
false

ということで String#equals?

>>28
そう複雑でもない
プリミティブなクラスを発明しない限り普通は === も eql? も再定義することはない
クラスごとに「おなじとみなしていいもの」の判定を == で定義すればいい



31 名前:27 mailto:sage [2010/03/23(火) 21:38:42 ]
>>28
複雑だとは思いませんが、条件式としては微妙だと思います

>>28,>>30
ありがとうございます

32 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 21:49:02 ]
rubyにはconstやfinalのみたいな、再代入を防ぐ方法は無いんですか?

33 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 21:50:29 ]
普段使うのは == と equal? だけだな

>>32
Object#freeze

34 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 21:55:08 ]
>>32
ない
変数名の再使用を禁止することはできない

オブジェクトの内容が変更されることを防ぐことならできる
のが>>33

35 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 22:08:38 ]
定数(名前が大文字から始まる変数)がいちおうそれだけど、効力としては警告止まり
警告を無視するようなバカには効果はないが
javaと違って基本的にプログラマを疑っていない言語だからそこは割り切ってくれ

36 名前:26 mailto:sage [2010/03/23(火) 22:23:55 ]
>>29
ありがとう。Boostは使ったことない

37 名前:32 mailto:sage [2010/03/23(火) 22:25:40 ]
>>33-35
ありがとうございます

まだrubyプログラミングに慣れていないので、間違えて再代入しないようにしたかったのですが
ムリぽですね

38 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 22:26:58 ]
そもそもそういう動機で再代入を禁止してはいけない

39 名前:デフォルトの名無しさん [2010/03/23(火) 22:30:04 ]
Haskellやればいい

40 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:00:36 ]
グーニーズくるー?



41 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 10:19:10 ]
現在、Threadが実行中か調べる方法を教えてください

42 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 10:25:25 ]
Thread#status

43 名前:デフォルトの名無しさん [2010/03/24(水) 10:25:51 ]
t.status #=> "run" or "sleep" or "aborting" or false or nil
t.alive? #=> true or false


44 名前:41 mailto:sage [2010/03/24(水) 10:52:29 ]
>>42-43
ありがとうございます

Rubyのスレッドって寿命があるんですかね
Thread.start {
for i in 1..10000
puts i
end
}
最後まで表示されないので

45 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 10:56:51 ]
…あれ、なんだこれ

46 名前:41 mailto:sage [2010/03/24(水) 10:58:41 ]
メインのスレッドが終わっているから、全部表示されないのかも

47 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 11:03:47 ]
t = Thread.start {
for i in 1..10000
puts i
end
}
t.join

48 名前:41 mailto:sage [2010/03/24(水) 11:12:33 ]
>>47
そこまで、すぐにわかりました

IOに時間がかかるので、GUIを描写を止めないようにしたいんです
def〜endの間でしかスレッドを使えないんですかね?
デーモンみたいな感じで使えたらいいんですが

def hoge
t = Thread.start{}
end

49 名前:41 mailto:sage [2010/03/24(水) 12:43:59 ]
def buttonPush ←ボタンがクリックされた時に呼び出される
t = Thread.start{
適当な処理(時間がかかる)
storeBinary()
}
end

def storeBinary
大きいデータを書き込む
end

buttonPushが呼び出された時に、GUIを止めたく無いんです

50 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 13:09:52 ]
よくわからんけど、バックグラウンド処理用のスレッドを管理する仕組みを作って
GUIのスレッド(ここではbuttonPush)から呼び出すとかじゃダメなのかな。



51 名前:デフォルトの名無しさん [2010/03/24(水) 13:13:05 ]
全体の最後に Thread.list.each {|t| t.join} を置いておけばいいのかな。
メソッドを抜けたときに参照がなくなってGC対象になってしまう?



52 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 14:35:57 ]
環境(OS, Ruby, GUI, IOの種類)を書いた方がいいんじゃないかな

>>51
生きていればThread.listが参照してる

53 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 14:37:14 ]
参照してるっていうのは正確じゃなさげ
でもThreadクラスオブジェクトが知ってるということはどこかしらで参照してるんだろう

54 名前:41 mailto:sage [2010/03/24(水) 15:14:58 ]
>>51
わからないよ

>>52
OS:Gentoo Linux 2.6.32-r7
Ruby:1.8.7 (2010-01-10 patchlevel 249) [x86_64-linux]
GUI: KDE-Smoke 4.4.1(QtRuby)
IO:ネットワークからデータを取ってきて保存する

55 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 18:06:29 ]
>>54
>>50 と同じようなことだと思うけど、ワーカースレッド作って buttonPush で
ワーカースレッドにキューを投げるようにすればいいんじゃないの?
雰囲気は、こんな感じ。(動くかどうかは未確認)
def initialize
 @queue = Queue.new
 Thread.start do
  while q = @queue.pop
   storeBinary
  end
 end
end
def buttonPush
 @queue.push(:store)
end


56 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 18:34:13 ]
メッソドAがやっている事に、プラスαの操作をつけたい

def MethodA
処理A
処理B
end

def methodB
処理A
yield
処理B
end

yield以外はまったく同じ操作なんですが、やっぱり2つメソッドを作るしかないんですか?

57 名前:デフォルトの名無しさん [2010/03/24(水) 18:55:12 ]
yield if block_given?


58 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 19:04:15 ]
>>57
thx

59 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 21:33:34 ]
>>54
スレッドが回っていないんじゃない?多分。
GUI起動したmainスレッド側で実行権つかみっぱなしな悪寒
GUI起動直前に、タイマーかなんかで定期的に
Thread.passでスレッド回すコード追加してみたら
いけるかもね


60 名前:54 mailto:sage [2010/03/24(水) 22:05:26 ]
>>59
GUIでボタンをクリック→スレッドのスタート→Net::HTTPのライブラリーが呼び出される
という順番でプログラムを書いているのですが

Net::HTTP#get()が呼びだされた瞬間に、勝手にスレッドが終了してしまうようです(rubyのバグ?)
シングルスレッドでテストしてみると、何にも問題がありません

ひとまず、違う処理系でも実行してみたいと思います



61 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:09:56 ]
なんらかの例外が起きてるんじゃないか?
ruby に -d オプション付けてみた?

62 名前:デフォルトの名無しさん [2010/03/24(水) 22:23:40 ]
状況を再現できる短いコードが用意できればベストなのだが。


63 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:27:19 ]
GUIやるかスレッドやるかどっちかにせえやという気は若干しなくもなく…

64 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:29:46 ]
>>61
例外でスレッド終了か
シングルスレッドだと動いてるみたいだしなさそうだが



65 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:31:13 ]
>>63
GUI + スレッドは正しい道のりな気が


66 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 22:50:43 ]
>>59
他の GUIツールキットの事情は知らないけど
wxruby はもろにそれだな

t = Wx::Timer.new(self, 9999)
evt_timer(9999) { Thread.pass }
Thread.new { hoge }
t.start(100)

こんな感じでタイマー使って定期的に Thread.pass してた

67 名前:54 mailto:sage [2010/03/24(水) 23:17:15 ]
>>61
ttp://www.darshancomputing.com/qt4-qtruby-tutorial/chapter_01
これくらいでも、例外が発生していました
LinuxでもWindowでも例外が発生します

>>62
簡単なコードを書きました
ボタンを押すと、コンソールに"test"と表示されます
ずーっと"test"と表示されていて欲しい所ですが、2〜3回しか"test"と表示されません
ttp://loda.jp/textliving/?id=28

windowsの人は「gem install -r qtruby4」でインストールしてください
Linuxでは「kde-base/kdebindings-ruby(Gentooの場合)」というパッケージをインストールしました

>>60
ここでは、バグかな〜と思ったのですが
Active Script Rubyでも、同じ所でスレッドが終了してしまいました
どうやら、処理系のバグってのは勘違いっぽそうです

68 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 00:40:13 ]
>>67
ASR1.8.7でそのコードを試した感触だと>>66がビンゴっぽい

69 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 00:42:24 ]
jrubyはネイティブなrubyの処理系を必要としますか?
NetBeansのRubyだけで、おk?

70 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 00:55:13 ]
なにがなんだかさっぱりわからんが、JRuby は Java の実行環境上で動作する
インストールに必要なのは Java の実行環境



71 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 00:59:12 ]
説明しよう!
Java で動作してる NetBeans には JRuby が最初から同梱されて使える状態になっているのだ!
だから cruby を別途インストールしなくても Ruby スクリプトそのものは作れるんだ! すごいね!

72 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 01:11:46 ]
Rubyは雑務や仕事の効率化UPのためのちょこっとスクリプトに使う人がよくいるみたいですが
シェルスクリプトとはできることが違うのでしょうか?
シェルスクリプトにできなくてRubyなら出きることって何かありますか?

73 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 01:15:40 ]
シェルスクリプトつかったことないならむりしてわだいにださなくていいよ

74 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 01:29:39 ]
shell script だけではできる事は非常に限られている
shell の種類にもよるが四則演算すらできないしカウンタも使えない
``を多用すればruby 以上の事はできるが面倒で煩雑
ruby の方が shell script より楽ってこと

75 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 03:17:53 ]
InterfaceやAbstractがないことに驚いたんですけど!
動的言語では型付けがいらないからInterfaceを返してキャストとが要らないのは
分かったものの、ダックタイピングというのが分からない
とりあえずInterfaceおいてダックであることを明示、保証するのが当たり前だと
思ってたけど、この必要がない理由と動的言語の性格って関連があるの?

76 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 03:40:37 ]
必要な時に必要なだけメソッド定義すれば

77 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 05:22:26 ]
動的言語に何の保証があるというのか

78 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 06:14:26 ]
静的型付け言語なら定義済みのクラスやインターフェースからコンパイル時に
型チェック(引数や型による代入制限、メソッドの有無等)を行えるが
変数が型を持たないrubyではそれらが意味をなさない

ダックタイピングは乱暴に言っちゃうと
メソッドが無かったり引数があわなければどっちにしろエラーになるんだから
それでええやん、て感じ

79 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 08:25:53 ]
実際は別にダックタイピングを駆使してるわけでも意識してるわけでもない
どう考えたって逆にめんどくさいからな

「○○するメソッド名ってやっぱ××だよな」程度の使われ方になる
クラス作成者とクラス利用者の間における命名規則の紳士協定みたいなもんだ

80 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 10:59:42 ]
あれ時間が戻った?



81 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 15:58:55 ]
>>75 どっかの面接みたいな問だな

82 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 17:18:31 ]
・Rubyの変数には型がない(代入に制約がない)
・Rubyは動的型付けの言語(=型が実行時に定まる)
 型が無いわけではない

この辺が混同されやすいのかなあ

83 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 17:29:12 ]
「いわゆる型」がないんだよね
型って言われたら「その型って具体的に何を指してるんですか」とか聞かないと駄目かなあ

84 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 17:38:40 ]
クラスと型ってどう違うの?
なんとなく同じ様なもののイメージなんだけど

85 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 17:41:20 ]
うだうだ言ってないで文法書とサンプル読みあさった方が手っ取り早い。
先にRuby的言葉遊びから入って得られるものは少ない。

86 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 17:43:55 ]
オブジェクト指向の知識があるならそれでOKなんだよ

問題はオブジェクト指向と称して実はただの「C++の知識」「Javaの知識」だったりするから

87 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 18:48:07 ]
Rubyの場合は話してる最中に
「いやこれはたぶんRuby依存の特有の話だな…」
とか気づけるからまだマシなような気もする
Javaの実装がオブジェクト指向だと思い込んでる人は結構困る

88 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 18:52:33 ]
聞き手そっちのけのオナニー喩話はどうでもいいよ。
ちっとも理解が促進されないし。
既に解ってる連中同士の内輪ネタでしかない。

89 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 18:52:38 ]
Rubyでオブジェクト指向の基礎を学ぶのは厳しい

こんな感じなんだ〜程度なら十分だけど

90 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 18:59:41 ]
実際に実行可能な言語に落とした時点でオブジェクト指向でもなんでもないものになる
オブジェクト指向は実行しないからこそ美しい
実行のための仕組みは邪魔



91 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 19:08:43 ]
たのしいRuby 第3版がもう出てた。

92 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 19:19:12 ]
>>78-79
なるほど
振舞いやパターンを明示することを積極的に排除する理由があるわけじゃなかったのか
いわれてみれば静的な型に頼らないってことと振舞いをまったく規定しないってことには大きな開きがあったね

>>76-77
instance_evalとか使いまくりがデフォなの?

93 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 19:55:17 ]
これから学ぶweb関連のプログラミング言語としてはrubyでいいでつか?

94 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 20:03:11 ]
> でつ

95 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 20:06:10 ]
Javascriptと、PHPかJava辺りがいいんじゃないかな

96 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 20:41:58 ]
かなーり微妙臭いふぃんきではある

主要なフリーウェアでスクリプト書くときなんか大概Python主流だし
RubyもPythonも両方やるのが吉

97 名前:デフォルトの名無しさん [2010/03/25(木) 22:17:44 ]
ひとつやっとけばOKという発想は捨てよう。


98 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 22:31:57 ]
そういう意味ではライブラリが共通の.NETは楽だわな

99 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 22:35:11 ]
>>89
真面目な質問だがOOPの基礎を学ぶのが簡単な言語はどれ?

OOPなんてcode書かなきゃわかるようにならん
codeを書きやすいか,書く気になるかどうかのトレードオフが大きいからね




100 名前:99 mailto:sage [2010/03/25(木) 22:50:23 ]
>>99
> codeを書きやすいか,書く気になるかどうかのトレードオフが大きいからね
→…どうかとのトレードオフ…

すまん




101 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 23:13:35 ]
LISPかな。

いや、冗談半分本気半分なんだけど、OOPとはなんぞやってのが
あまりにも難しすぎる。
オブジェクトが自立性を持っていて、受け取ったメッセージを自分で判断して
振舞う(メッセージを拒絶することも含む)ような処理系でのプログラミングが
OOPなんだぜ! という学派からすれば、Rubyはまさにそれではある。






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

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

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