[表示 : 全て 最新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はまさにそれではある。

102 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 23:14:57 ]
OOの前にOOでない言語を身につけた方がいいな
お薦めはCだ

103 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 23:28:43 ]
自分もCから入ったからCじゃないものから入る人の気持ちは分からない
いきなりRubyを使うってどんな感じなんだろう

104 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 00:51:26 ]
LispやCから入れと言ったら挫折する人が多いと思うな
俺はいきなりRubyでも良いと思うけどな
まずプログラムをどんどん書かないと
遊びでも良いから何か実用性を見出せないと強制しないと続かないと思う

昔はBasicで入った人も多いし(俺はFortran→Cで入ったが)

105 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 01:01:25 ]
プログラムをどんどん書くって結構難しい。
家では本を読むだけだから力がつかない。
やっぱ仕事でプレッシャーかからないとダメ。


106 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 01:04:14 ]
作りたいものがないならプログラミング言語なんて覚えなくていいし学び続けられるものじゃない
作りたいものが特にないのならRubyのことなんて忘れて他のことやれ

もし本当にRubyのようなものが必要なのなら、たとえ今離れてもやっぱり戻ってくる

107 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 01:07:58 ]
遊ぶのなら、今日日はJavaとかActionScript(Flash)からとかじゃない?

WEBアプリをSwingやFlexでとか、ぶっちゃけ楽しい。
サーバサイドはRailsでもPHPでもとにかく楽できるし、その辺全部無料で
Windowでも完結できるし。

で、その辺から入ると、最後までCにたどり着かない可能性が高いと。

108 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 01:35:20 ]
>>107
Java使ってるけど正直プログラミング初心者には難しいのでは
Rubyの方がまだ簡単で何かできる感じがするが

たとえばファイル名を整理するとかファイルの中身を整形しなおす
とかデータ合わせるとか実用的でそんなに難しくない

これをJava+Swingでやれといったら初めは大変だと思うんだが

109 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 01:39:36 ]
> たとえばファイル名を整理するとかファイルの中身を整形しなおす
> とかデータ合わせるとか実用的でそんなに難しくない

いや、遊びでそんなことしないし

遊びと言えば、なんか表示して動かす。BASICから入った人なんかは
特にそうじゃね?他には音を鳴らすってパターンもあったけどもさ
そう言う意味で、SwingやらFlashやらって言ってみた

110 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 01:42:11 ]
Rubyは「おまじない」がないか、または最低限レベル(思想的にはBASICに近い)
JavaやC++はあらゆるパラメータを自力で全部指定できるのがメリットだが、初心者にはただの負担だ



111 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 01:44:23 ]
N88-BASICはおまじないの嵐だったがな
もちろん、BASICマガジンに載ってたコードの事だが

112 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 02:01:19 ]
>>106
とりあえず何か書いてから考察なり質問なりすべきw
どうしたらコード書くか言語学習するかなんて100%自分の動機だけの問題じゃんね

113 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 02:29:46 ]
cはゆるゆる過ぎて変な癖がつくと思う。
かといってrubyも変にperl互換な所で、変な癖がつくのは変わらないけど。

ゆるゆるから厳しい所はキツいので、最初から厳しく型宣言必要な言語のほうが、いいかもね。後から緩く成る分には楽で楽しく成るだけだし。
いろいろまんべんなく使ってみるのが無難かもね。

114 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 02:32:45 ]
Rubyを使ってると、しょうもないことを偉そうに語りたがるようになるということはわかった。

115 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 02:54:35 ]
しょうもないことってなに?

116 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 03:01:20 ]
片栗粉はゆるゆる過ぎて変なクセがつくと思う
かといって羊羹も変にこんにゃく互換で変なクセがつくのは変わらないけど
ゆるゆるから厳しいところはキツイので最初から厳しく型成形必要な射出のほうがいいかもね

117 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 03:04:45 ]
意味がわからんが、片栗粉はちゃんとレンジでチンしたのか?

118 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 09:18:26 ]
初めから厳しい言語使えとかまんべんなく使えなんてまず挫折すると思うが
コンパイル一つだって失敗するかも知れないのに

いきなり高い目標設定せずにとにかく自分が入りやすい言語を使う方が良いと思う

119 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 09:52:34 ]
おっさんしゃべり場

120 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 11:07:01 ]
ruby/tkってデフォルトでrubyに入ってるの?
tkだとスレッドに問題が発生することないのか
教えてエロい人!!



121 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 11:14:00 ]
スクリプトを実行する人のマシンにRubyがインストールされていて、
RubyのC言語ファイルの最初のコンパイル時にtkが有効にされていて、
なおかつ同じパソコンにTcl/Tkまたはtklib相当のものが別途インストールされていれば動作する

122 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 11:21:33 ]
…まあ、自分用だよな
他人にウィンドウを提供するために使うようなもんでもない

123 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 11:26:24 ]
横からだけど、じゃあ他人用にするなら何がいいと言うんだ
選択肢が多すぎて逆にどれを選んでいいかわからん

124 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:04:48 ]
rubyだめじゃん
rails以外は何にも作れないじゃん

125 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:15:21 ]
>>123
Rubyは使わない

126 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:17:40 ]
○○するのにはRubyは便利
××するのにはRubyは不便

○○に入るのが自分用スクリプトの作成
××に入るのがウィンドウでGUI

127 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:19:08 ]
なんでこんな中途半端なポジションになってしまったんだろう・・・

128 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:25:22 ]
>>124
早く気付けて良かったですね

129 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:29:07 ]
>>127
どこが中途半端なのかわからない

130 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:31:44 ]
>>129
ウィンドウを作るということに意味があると考えているのだろ



131 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:34:13 ]
少なくともGUI対応はPerlとそう変わらないレベルだと思うんだが何がそんなに劣ってるのだろう

132 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:36:37 ]
rubyはGUIはどうでもいいと思ってるようです

133 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:38:33 ]
・中途半端そうなライブラリがフラットにたくさん並んでいる
・ググっても網羅的な情報がない
・スレでGUI系の質問を見かけるたびに陰気臭い人にネチョネチョとからまれている

134 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:38:36 ]
>>131
言語の問題というよりは
使ってる人達の問題じゃないかな
GUIを便利にしようとするモチベーションがないし
そういう芽を自ら摘んでしまう独特の文化がある

135 名前:デフォルトの名無しさん [2010/03/26(金) 12:39:53 ]
ウィンドウを作ることに意味はないとでも言うのか

136 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:41:03 ]
そう言っている人が Ruby 界隈には多いってことだろ

137 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:44:43 ]
>>135
必ずしも意味があるとは限らない
標準入力から標準出力への流れがプログラムだ
この両方が保証さえされていれば、ウィンドウは必須ではない

>>133
WindowsのAPIべったりだったり特定のGUIバインディング限定の話をだらだらされるからだよ

Railsの話をこのスレでしないのと同程度には、GUIの話はここでは向かない
  Ruby on Railsは全く別物でRuby本体の機能あんま関係ないよな

  RubyのGUIシステムは全く別物でRuby本体の機能あんま関係ないよな
はほぼ同じ

GUIのスレはこことかもあるぞ
ttp://pc12.2ch.net/test/read.cgi/tech/1155031689/

138 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:46:05 ]
>>137
さっそくからんでるしw

139 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:48:23 ]
>>137
それて、windows限定でしょ
意味不明なスレに飛ばそうとするなよ

140 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:50:14 ]
GUIの話の95%くらいはWindows限定の話だからWindows用スレで適当な気もする



141 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:53:58 ]
LinuxでウィンドウアプリケーションをRuby経由のツールキットを利用して作ってて
なおかつRubyの知識が初心者スレレベルという人を見つけるくらいなら宝くじに当たったほうが簡単

Linuxのツールキットが使えるような人はRubyも使い慣れてて本スレで聞きそうだと思う

142 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:56:36 ]
GUIが便利なのは、直感的な操作が求められる場合と
問題が本質的にグラフィカルな場合(画像編集とか)

現状じゃRubyって感じではないような……
あれば便利なのは間違いないけど
JRubyからSwingを使うアプローチとかは面白そうではある

143 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:56:51 ]
> Linuxのツールキットが使えるような人はRubyも使い慣れてて本スレで聞きそうだと思う

という認識でFA
Rubyユーザーにとって、GUIはRubyを使い慣れたあとにGUIを司るライブラリ単体で学習して使うもの
Ruby/Tkなら、Tkの使い方を勉強する
Tkの勉強だから、Rubyスレは関係ない
Ruby/GTKなら、GTKの使い方が必要で、やっぱりRubyスレは無関係

GUIライブラリを呼ぶような部分は、慣れたRubyユーザーなら特に質問が出るような障害にはならないと

144 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 12:59:32 ]
こういう長文でスレが埋ま理始めると末期だな。

145 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:00:58 ]
>>144
お前2ch使うの今月が初めてか

146 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:03:01 ]
自分のやり方は間違ってない主張の初心者 vs お前のやり方は間違ってるの主張の古参

という図式は毎年長期休みにたいていのスレで見られるもんだと思われ
たいていの場合、前者が誤りで、後者が大人気ない

147 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:04:37 ]
今年はテンプレが増えるのかどうか生暖かく見守ってます

148 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:06:03 ]
>>141
それ、俺だよ

149 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:07:40 ]
一人やけに沸点低い古参がいて毎回トラブルの元になってるんだよな
初心者スレまで来て何やってんだか

150 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:10:36 ]
初心者スレなので
「RubyでGUIなんて現状誰もやらないし、やっても中級者が趣味として嗜むレベルなんだよ」
というようなことは粘り強く啓蒙していくべきかと
勘違いしてしまう被害者は少なければ少ないほどいい

Ruby初心者にもGUI言語初心者にもわかりやすいGUIバインディングや解説を作るんだという志は大層立派だが、
でもこのスレとは無関係なので完成したら改めて教えてくれ



151 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:29:15 ]
無知のくせに絡んでくるんだよなGUI否定の人は

152 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:31:35 ]
そんなに頻繁に出てきてそのたびに荒れるんならGUI専用スレ作ればいいのに

153 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:32:19 ]
現代的スクリプト言語のうち
一般的なスクリプト用途とGUI用途とOS跨いだ移植に向いててそこそこ解説のある言語はPythonだけだな
「たったひとつの言語」をスクリプト言語に求めるならPythonやれ

本当はC++がいいんだが残念ながらスクリプト言語ではない

154 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:32:20 ]
>>151
同感

155 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:33:04 ]
CUI専用スレでも作ればw

156 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:35:08 ]
完成したら、というが

そんなに素晴らしいなら、作ってみてから
また来てくれ。

1. よし言語バインディングを調べて
2. 各ライブラリのラッパを書いて(これ膨大すぎるだろ)
3. ど、ドキュメントを書くぞ

大抵は1.の段階でほかの方向なり模索すると
思うんだな…(2までやるのでもかなり凄い。下手したら俺言語作るよりよほど難易度高いという…

157 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:37:59 ]
>>153
それ言ってしまうとジャスト1時間前の>>126-127に戻ってまたループに

なんかGUI否定の否定派がいる雰囲気
RubyはGUIに向かない、という事実を述べることのどこがそんなに気に食わないんだ…

158 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:39:45 ]
GUIプログラミングがしたかったら
Windows使えってことか。

159 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:39:45 ]
質問掲示板なんかでよくあるパターンだな
質問に答えることもなく、〜〜すべきでないと言いくるめようとする

160 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:40:48 ]
何がどうGUIに向いてないんだよ
普通に使ってるわボケ



161 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:41:11 ]
>>157
Rubyしか使えない人でなおかつGUIだけをやってる人がいるんだと思う
両方一気に否定されて立つ瀬がない

162 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:42:26 ]
教祖がウィンドウズ使ってないもの。
ウィンドウズの話は異端。地獄に堕ちるよw

163 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:43:31 ]
「向かない」と「できない」には天と地の差が…

>>160
それがスレ相当のRuby初心者にもできるのなら是非

164 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:43:44 ]
オブジェクト指向でGUIに向いてないってどんな言語だよ

165 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:45:40 ]
Ruby部分とツールキット部分を分けて考えられるかどうかが境界な気がする

166 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:47:04 ]
>>165
正直、puts したらアラートウィンドウがポップアップするくらいになってるべきだと思う

167 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:50:12 ]
いやそんな将来がどうとか妄想がどうとかどうでもいいから
現在どうなっていて、初心者はどうすべきかだけ教えてくれ

168 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:54:26 ]
>>167
自分で調べられない人が使えるほど楽ではないから、諦めた方がいいと思う。
英語にアレルギーがなくて、自分で調べられる人なら、問題無いように思う。


169 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:56:05 ]
結構いろいろGUIライブラリのRubyバインディングはある
GUIライブラリ本体やRubyライブラリのインストールにつまづく初心者は潔く諦めて他の方法を探す
使い始めて分からないことはGUIライブラリ本体の勉強をすれば分かるだろう

Rubyに関係ない質問が無ければここもそんなに変な空気にならんだろう

170 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:59:42 ]
>>167
Ruby/○○ の ○○ の使い方を自分で勉強できるなら問題はない(TkとかQtとか、Win32APIとか)
これはRubyとは無関係で、世間様一般では○○単体で使われていて、専用の参考書や解説がある

ただ、GUI提供ライブラリの利用初心者には普通に難しいとは思う
この部分は「Rubyは初心者にもけっこう簡単」という(実は間違った)煽り文句の適用範囲外



171 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 14:05:34 ]
で、これらを物凄く乱暴にまとめた言葉が「RubyはGUIに向かない」「初心者はGUIやめとけ」

172 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 14:07:46 ]
RubyでGUIを扱ってみて質問しに来る人と比べたら、GUI否定のおっさんは初心者にも及ばないカスみたいなもんだな

173 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 14:12:55 ]
>>172はRubyでGUIパーツ扱ったことないな

174 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 14:14:42 ]
GTKとか、ドキュメント少なすぎ。
やっぱりウィンドウズでやるしかないのか。

175 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 14:18:34 ]
Ruby/Tkが学習コストとできることの兼ね合い上おそらくベストと思われるが、
Ruby初心者かつTkの知識がない人にこれが理解できるとはとーてー思えん。
せめてどっちかに習熟しててくれないと発散しすぎて無駄に大変だと思う。

変に分離性が高いので、
「ここからRuby」「ここからTkを呼ぶRuby」「GUI連携はTk独自でRuby無関係」
という…
Rubyに慣れてると学びやすいという説に一票、あと>>173

176 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 14:22:54 ]
Ruby/Tkは「いいよもうこれ全部Tcl/Tkで書いたほうがいいよ畜生」と自棄になってTclに戻らせようとする巧妙な罠

177 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 14:25:45 ]
Windowsでいちばん簡単なのは「HSPでGUI作ってシェル経由でRubyスクリプトを呼ぶ」だと思う昨今

178 名前:120 mailto:sage [2010/03/26(金) 14:29:32 ]
ところで、お前らの結論を教えて欲しいんだけど

結局、お前らは何だかんだ言ってGUIをやったことが無いんだな

179 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 14:31:52 ]
なんだまだいたの

180 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:20:58 ]
エグザイルみたいなもんか



181 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:35:15 ]
>>153
同感
Ruby で無理して GUI やっちゃうと
環境依存になって結局後々苦労するのが見えてる
Python でやっとけばびっくりするほど簡単にどこでも動く

182 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 15:39:34 ]
複数の言語を使うことを厭うのは損だよね

183 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 17:38:13 ]
てすと

184 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 18:09:39 ]
ruby で角括弧[]が
browserForm = Form.new()
[browserForm].each do |f|
f.Text = 'hoge'
end
の様に使われているコードがあるのですが、この場合は
どういう意味なのでしょうか?


185 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 18:11:57 ]
array = [browserForm]
array.each 〜
を省略して、生成と同時にメソッドコールしてるだけ

186 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 18:16:55 ]
いちおう追記
質問のために書いたコードや操作対象が複数のときに一括処理する場合に備えているならともかく
このコード自体はこれでいい

browserForm = Form.new()
browserForm.Text = 'hoge'

187 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 19:10:37 ]
>>185
ありがとうございます。
おっしゃる通り一括処理で使われています。
ruby の理解が浅いため何となく分かった程度ですが、
brouseForm = Form.new()
brouseForm.hoge = 〜
といういくつかの処理を f.hoge という形で見やすくしている
と考えれば良いのでしょうか。

188 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 19:19:36 ]
見やすくっていうのも間違いではないけど
ループや関数(メソッド)化して同じ記述を避ける(DRY原則)のほうかな

puts "a"
puts "b"
puts "c"

["a", "b", "c"].each {|str|
puts str
}

3要素1項目ぐらいだから大差ないように見えるけど
これが10要素5項目ぐらいになったらバカバカしいことになる

つーかローマ字やめれw

189 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 19:20:37 ]
ローワーキャメルケースとキャピタライズメソッドのコンボの恐怖
どっちもRubyの主流から外れてるので書くときの参考にはしないように

配列に関してはオブジェクトが「入ってる」という理解でいい
(余裕があるならラベル入りの箱と考えるといいんだが)
箱からいっこ取り出すよ機能のeachで入ってるオブジェクト取り出して、
そのオブジェクトのメソッドを利用してる

190 名前:デフォルトの名無しさん [2010/03/26(金) 19:31:18 ]
確かに [very_long_variable_name].each do |v| … end
で他の言語でいうletみたいなことはできるけど、普通は使わんなw



191 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 20:56:33 ]
あれ、GUI論争ってもう終わったの?
(コンパイルする方法がわからなくて途方に暮れながら)

192 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 21:02:29 ]
Tkのスレッド対応みたいに突っ込んだ話になるとレスがつかないのに
GUI論争するのっておかしい気がするな

193 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 21:03:35 ]
そもそもここで「論争」なるものをしないで欲しいので

194 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 21:10:00 ]
>>192
だってRubyのGUIでスレッドの話するのめんどくさいもん
ネイティブのTkのスレッドとユーザーレベルのRubyのスレッドの両方の話せんといかん

195 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 21:13:35 ]
rake教えてください
前処理が必要ないソース群と必要なソース群があるときruleはどう書けばいいんでしょうか?
下の例で、Bxのために前処理のルールをrule '.src' => '.pre'と書くと前処理が不要なAxまで前処理しようとします。
XはA1.out...An.out,B1.out...Bn.outに依存し、makeX A1.out A2.out...Bn.out -o Xで作成
A1.out...An.outはA1.src...An.srcに依存し、それぞれ makeOut Ax.src -o Ax.outで作成
B1.out...Bn.outはB1.src...Bn.srcに依存し、おなじく makeOut Bx.src -o Bx.outで作成
B1.src...Bn.srcはBn.pre...Bn.preに依存し、 makeSrc Bx.pre -o Bx.srcで作成
Ax,Bxはファイルが複数あることを示すため書いているだけで、ファイル名が連番ということではありません


196 名前:デフォルトの名無しさん [2010/03/26(金) 21:32:13 ]
rule '.out' => '.src'
rule /B.*¥.src/ => proc {|t| t.sub('src', 'pre') }


197 名前:デフォルトの名無しさん [2010/03/26(金) 21:44:15 ]
全部がBで始まるというのもないのか。

Regexp.union(FileList['*.pre'].pathmap('%n.src'))
などと工夫してみて。


198 名前:デフォルトの名無しさん [2010/03/26(金) 22:06:43 ]
正規表現使ってまで rule に固執せずに

FileList['*.pre'].each do |pre|
file pre.pathmap('%n.src') => pre
end

のほうがベタだけどすっきり。


199 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 23:57:10 ]
>>192
春だからな、仕方がないんだよ
ここの人はプログラミングした事無いのに、
そこら辺の宗教戦争が好きだから

200 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 00:19:01 ]
まだ>>120が粘着してるのか



201 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 00:19:02 ]
知らないことを答えようとするとGUI否定の人みたいなのしか出てこないことになる
知らないことは見てるだけでいい

202 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 00:37:34 ]
Ruby/Tkの中の人があれだけがんばってるのに
GUI否定とかやられるとがっかりするよな

GUIスレが立ったみたいだからそっちが機能してくれればいいけど難しいか

203 名前:195 mailto:sage [2010/03/27(土) 00:42:18 ]
thx
単純には書けないんですね


204 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 00:44:34 ]
>>202
どう言葉で表現してもそもそも初心者向けではないはずなのだが、どうもそこに引っかかってる人がいる模様
初心者にもできるべきだと考える理由って何だろうね

205 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 00:47:08 ]
>>204
彼らはGUI肯定をしているわけではないのです
ほんのちょっぴり、初心者であったときのことを忘れてしまっているだけなのです
ここは初心者スレなのに、自分ができるからって相手もできると思ってしまってる

206 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 00:55:29 ]
初心者にも優しいとか散々宣伝してきたツケが回ってきてるだけだろ
自業自得だ

207 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 01:08:29 ]
ルビーのアンチは嘗ての初心者

208 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 01:15:40 ]
Ruby専用GUI
pc12.2ch.net/test/read.cgi/tech/1269609576/

209 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 01:52:19 ]
RubyにGUIは向いてないとか言って馬鹿にされたから、今度は初心者がどうのこうのって
もうアホすぎて死んで欲しいわ

210 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 01:52:54 ]
Linuxだからruby-gnome2で満足してるけど、
ruby-gnome2と呼べばいいのかruby-gtk2と呼べばいいのか悩むことはある



211 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 02:06:10 ]
>>205
Rubyコミュニティそのままだな

212 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 04:00:11 ]
教祖がウィンドウズ使ってないからね。
信者もウィンドウズ使わずに過ごせばいいとしか思ってない。

ルビー使いたければ、教祖と同じデビアン使えば患部も目指せるかもよ。

pc11.2ch.net/test/read.cgi/linux/1267107714/
Debian GNU/Linux スレッド Ver. 63
pc11.2ch.net/test/read.cgi/linux/1154631461/
Debian原理主義者テラモエス
pc11.2ch.net/test/read.cgi/linux/1162356771/
Debian原理主義者ペタキモス
pc11.2ch.net/test/read.cgi/linux/1178083456/
【ubuntu】Debianは終わった?【knoppix】
pc11.2ch.net/test/read.cgi/linux/1237256190/
Debian-Liveに決めました

213 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 08:53:31 ]
Apollo ってなに?

214 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 08:55:02 ]
過去の過ち

215 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 09:07:11 ]
黒歴史になってんの?

216 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 09:13:04 ]
ビッグ・ボンバーズみたいなもんだ
5年遅かったスペシャルマンと5年早かったカナディアンマンのコンビ

217 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 09:24:16 ]
あれはRubyもいいけどDelphiもね!というキャンペーンの一環だった気がする
Delphiは言語自体はよかったんだけどねえ
過去形で話さなければならないのがつらい所

黒歴史ではない
ただの過去の遺物
Delphiのコンポーネントの知識があるなら選択肢になるかと思う

218 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 11:11:47 ]
>>208
いきなりクソスレ
ワロタ

219 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 14:47:11 ]
class C
 def a
  …
 end
 def b
  a.scan(re)
 end
 def re
  /…/
 end
end

というのを rspec とかでテストしたいです
a メソッド(と re メソッド)に依存してる b メソッドのテストはどうすればいいですか?
a がいくつかの値をとる場合の b のテストを書きたいです
b のテストで必要になるような値を a に返させるような初期値を与えるべきですか?
それとも全メソッド引数で渡すようにするべきですか?

220 名前:デフォルトの名無しさん [2010/03/27(土) 15:04:59 ]
c = C.new
c.stub!(:a).and_return('ほげふが')
c.stub!(:re).and_return(/ふが/)
c.b.should ...




221 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 17:58:47 ]
>>205
オタクの悪いところだよなぁ
俺はわかるから、分からないお前らがだめなんだよ
みたいな
クソ根性論だよ

222 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 18:02:32 ]
>>221
誰もそんなこと言ってない気がするんだが。


223 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 19:45:29 ]
ちょっと聞きたいんだけど、

>>[1, 2, 3].each do |i|
>> puts i
>>end

>>[1,2, 3].each { |i| puts i }

この二つを実行すると同じ結果が出てくるけど
書き方が違うだけ(『do〜end』が『{〜}』になった)って事でいいのかい?

224 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 19:50:36 ]
>>223
そこに疑問持つくらいならまとまった解説をきちんと読んどいたほうがいいぞ

ちなみに回答はYES
do … end は { … } のブロックに置き換えることができる

全く似ていないものに begin … end があるがこれは置き換えができない
{ … } は Hash リテラルを記述するのにも使用されるがこれを end つき構文に置き換えることもできない

225 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 19:55:35 ]
>>224
うn、ありがとう&ごめん
本とか買わずにリファレンスだけ読んでて、唐突に.each doとか出てきて
『each』と『each do』って二つあんのか!ってびっくりしてしまってな

226 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 20:01:57 ]
do で始まって end で終わるものだけだな
end で終わるならなんでもカーリーブレースで置き換えられると思ってしまう人が結構いるので注意
どちらかというと do の存在のほうに注目してほしいんだが、なぜか end にばかり目が行く模様

227 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 20:21:11 ]
Runnable.new {
public void run(){
//適当な内容
}}
javaではこのようにクラスをオーバーライドすることができますが、
Rubyでこのような事をやるにはどうすればいいんですか?

228 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 20:33:09 ]
Rubyではクラスのオーバーライドはないと思う
ただの定数にクラス定義(とメソッド定義)が入ってるだけだから、
継承するだけで別のクラスオブジェクトになれるはず

元クラスの動作を変更せずに安全にメソッド追加したいだけなら
クラスを継承してからクラス定義を再オープンしてdef追加するかオブジェクトにextendでいいんじゃね

229 名前:227 mailto:sage [2010/03/27(土) 20:42:46 ]
>>228
1つのメソッドをオーバーライドできればいいんです
しかも、そのクラスは1回しかインスタンス化しません
なのでわざわざ、面倒なことはしたくないんです

230 名前:デフォルトの名無しさん [2010/03/27(土) 20:46:35 ]
特異メソッドを使うといいと思う
obj = Runnable.new
def obj.run
puts "foo"
end



231 名前:227 mailto:sage [2010/03/27(土) 20:54:42 ]
>>230
特異メソッドにそんな使い方があったとは
単純にクラスに属すメソッドの定義だと思っていました

ありがとうございます

232 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 20:56:33 ]
>>230
うひょうこの定義のしかた超きめえ今度から使おう

素直に extend する人用

module RunExtender
def run; @run; end
end

r = Runnable.new
r.extend(RunExtender)
r.run

233 名前:デフォルトの名無しさん [2010/03/27(土) 21:00:57 ]
>>231
発想の順番からいうと、特定のインスタンスだけで使えるように
定義するのが特異メソッド。
で、RubyのクラスってのはClassクラスのインスタンスだから、
その特異メソッドはいわゆるクラスメソッドの位置づけに相当するということ。


234 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 21:05:09 ]
ていうか>>219のもこれで用済まないかね

235 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:33:45 ]
普通のメソッドから特異メソッドにアクセスできないみたいですが、
どうにかなりませんか?

236 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:43:16 ]
>>235
>>231と仮定すると、どうにもならない
そもそも所属が違うから、特異メソッドの存在を知らないインスタンスメソッドは特異メソッドにアクセスできない

そうでないのなら、特異メソッドは new されたオブジェクトではなく
new するのに使った Class オブジェクトの持ち物なので self.class.hoge で使え

237 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:44:57 ]
>>236
thx

238 名前:デフォルトの名無しさん [2010/03/27(土) 22:45:24 ]
できるよ。

irb> class Object; def hello; hello2; end; end
irb> o = Object.new
irb> def o.hello2; puts "hello"; end
irb> o.hello
hello


239 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 22:52:12 ]
配列にはattr_writerでアクセッサを指定することはできないんでしょうか?

240 名前:デフォルトの名無しさん [2010/03/27(土) 22:53:26 ]
>>239
どういうメソッドが欲しいの?




241 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 23:02:07 ]
メソッドがほしいというより使い方が知りたいのです
attr_writerを指定すると読み書き両方ともできなくなったので
根本的に配列にattr_readerやwriterを使うのは間違いなのですか?



242 名前:デフォルトの名無しさん [2010/03/27(土) 23:05:09 ]
えーと、

class Array
attr_reader ??? # ここに何書いたの?
end


243 名前:デフォルトの名無しさん [2010/03/27(土) 23:07:14 ]
たとえば、配列にhogeという書き込み専用属性を作りたければ、

class Array
attr_writer :hoge
end
a = []
a.hoge = 10
a.instance_variables #=> [:@hoge]

のようにできるけど。


244 名前:239 mailto:sage [2010/03/27(土) 23:08:53 ]
こういう風にしました
readerArray = Array.new(3, 0)

attr_reader :readerArray


245 名前:239 mailto:sage [2010/03/27(土) 23:17:04 ]
質問のしかたが悪くてすみません・・・
こういう感じだとクラス内の配列は読み取りや書き込み専用にはならないのでしょうか
class Foo
def initialize
@readerArray = Array.new(3, 0)
@writerArray = Array.new(3, 0)
end
attr_reader :readerArray #ダメ
attr_writer :writerArray
end

246 名前:デフォルトの名無しさん [2010/03/27(土) 23:32:41 ]
>>245
オブジェクトを作ってみる。
> f = Foo.new #=> #<Foo:0x000001010e23b8 @readerArray=[0, 0, 0], @writerArray=[0, 0, 0]>
@writerArray
書き込みアクセサで書き換える。
> f.writerArray= [1,2,3] #=> [1, 2, 3]
読み出しアクセサはない。
> f.writerArray #=> NoMethodError: undefined method `writerArray' for #<Foo:0x000001010e23b8>
リフレクションで取得は可能。
> f.instance_variable_get(:@writerArray) #=> [1, 2, 3]
@readerArray
書き込みアクセサはない。
> f.readerArray = [10, 20, 30] #=> NoMethodError: undefined method `readerArray=' for #<Foo:0x000001010e23b8>
リフレクションで書き換えることは可能。
> f.instance_variable_set(:@readerArray, [4,5,6]) #=> [4, 5, 6]
読み出しアクセサで取得。
> f.readerArray #=> [4, 5, 6]
attr_reader しかしていないと言っても、それで得られたオブジェクトが読み取り専用になっているわけではないので、
> f.readerArray.pop #=> 6
> f.readerArray #=> [4, 5]
のようなことは起こる。


247 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:03:47 ]
Rubyにアクセサという機構はない
attr_* は同名のインスタンス変数を返す(か代入する)メソッドを自動で作成するだけ

def arr
@arr
end

def arr=(a)
@arr = a
end

メソッド定義を自力で書くのを避けたいときに使うだけで、特別な動作はしない
def を書く代わりにできるだけ

248 名前:239 mailto:sage [2010/03/28(日) 00:11:30 ]
>>246
なるほど
アクセッサで指定した配列オブジェクトそのものは読み、書き専用になるけれども、
その中身のwriterArray[0]とかはwriterArrayのオブジェクトから読み込みができないので
各要素オブジェクトにもアクセスできなくなるので、writeArray[0] = 1 はできなくなり
readerArrayの場合は、readerArrayの読み込みはできるのでreaderArray[0]にアクセスできるけれども
readerArray[0]の要素オブジェクト自体は読み取り専用じゃないので readerArray[0] = 1 ができてしまうんですね
大変参考になりました

>>247
やっぱり横着してはならないのですね

夜遅くまでありがとうございました

249 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:15:03 ]
ぶっちゃけ、attr_ はもう名称変えたほうがいい
こんだけ広まったらもう混乱の元にしかならん

250 名前:デフォルトの名無しさん [2010/03/28(日) 00:15:55 ]
rubyでmail送信したいんだけどXPHomeeditionではできない?
できれば携帯におくりたいんだけどできるかな?
ただしSMTPサーバがない状態で。
VB.NET & XP Professionalなら簡単にできたんだど。
だれかそのあたり詳しい人いますか?
条件は
XP Home Edition
携帯にmail送信。(異常時に)
SMTPサーバなし(外部サーバ通じてではできるらしい。VB.NET & Professional
なら不要)





251 名前:デフォルトの名無しさん [2010/03/28(日) 00:15:58 ]
f.writeArray[0] は f に writeArray というメソッドがあってそこから
返ってくる配列に添え字アクセスする意味。
attr_writer :writeArray では writeArray= というメソッドしか
作られないからダメってことですな。


252 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:20:48 ]
どうでもいいけどLCCで書くのやめて欲しいなあ
Rubyではスネークケースで書いて欲しい

そういやスネークケースって言葉ぜんぜん流行らないよね
write_array みたいな全小文字でアンダースコア区切りの書き方ね

253 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:24:46 ]
>>250
require 'net/smtp'
使い方はマニュアル読め

254 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:25:48 ]
>>252
禿げ同。
初心者がスネークケースで質問するスレ立ててよw

255 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:29:24 ]
>>252
Rubyではあらゆる点でアンダースコア区切りが主流だと思って
ライブラリのトップファイル名をアンダースコア区切りにしたら叩かれたでござる

require 'hoge_lib' ではなく require 'hoge-lib' となるように作ろうね
require しないファイルはアンダースコア区切り

256 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:30:49 ]
個人的にはピリオド区切りが好き

257 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 00:59:00 ]
私初心者だけど
クラス命はFooBar
メソッド命もFooBar
変数名はfoo_barって感じで書いてた
こういうの嫌われるの?

258 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 01:00:21 ]
>>257
間違えた
クラス名 => FooBar
メソッド名 => fooBar
変数名 => foo_barでした

259 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 01:03:37 ]
>>255
マジか。アンダースコアで作っちゃった。
でも、active_recordとかもアンダースコアだし、いいよね?
ちなみに、その指針みたいなのどっかに書いてある?



260 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 01:16:19 ]
>>258
Rubyではメソッドを呼ぶ行為とローカル変数を呼ぶ行為は字面で区別しない
LCCを使用するのは特定の外部ライブラリのラッパーとかの特殊用途向け
メソッド名と変数名は全部小文字でアンダースコア区切りが普通
ちなみに大文字メソッド名でも定義はできるし動作もする(ただしレシーバ必須で self.Hoge 等と呼ぶ)
余談だが日本語でもできる(文字エンコーディングに注意)

>>259
そもそも active_support なのか active-support なのか activesupport なのかわかりにくいから
新しいメソッドはもうまとめようぜという話になったと記憶



261 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 01:21:58 ]
こんなとこでどうでもいい宗教論争吹っかけんなよ糞うざいから

262 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 01:25:50 ]
>>261
別に従わなくてもいい
全部のメソッド名を日本語にしても構わない
DSLで自分のルールを作るのさえ自由だ
end を } にするように書き換えてコンパイルすることを別に止めはしない

ただ、それは孤児になる

263 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 02:00:57 ]
Java が 1.1 系列になるときに、クラス定義の規則や、命名規則を厳格にすることで、
JavaBeans が成立し、開発環境でそれらを扱えるようになった。
マウスのD&Dで、イベント定義をしたり。

引数なしのコンストラクターを定義して、
setter/getter とか boolean は isProperty() にするとかそんなの。

命名にも、そういう実益があればいいんだけど、単にスタイルの問題だと従う意味が分からない。

264 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 02:13:14 ]
教祖が適当に決めてるのが現状だしな。
perl互換にしたがる傾向が強いが。

265 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 02:24:29 ]
>>263
Rubyは本当に本当に自由に書くことができるので、逆に記法が散逸してしまったのだな
スタイルというよりはデファクトの決定
読めない上に入力方法もわからない外国語UTF-8クラス名の外国語UTF-8メソッドを使いますとか言われても困る

rubygems は gem install のインストールディレクトリ名と require のファイル名を別個にすることができるので
たいそう混乱した
これは Hoe や Jeweler のサポートで軽減されてきている


別に従わなくてもいい
特に外部に公開しない場合は
公開するような場合でも、別に守らなくても構わない
ただし、それに伴って何か不利益を被ったとしてもそりゃ自己責任で
俺と違うやり方の世界のほうが悪いんだと叫んでくれ

266 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 08:12:01 ]
jrubyのライブラリはネイティブな実装ですか?

267 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 09:54:00 ]
「RubyはGUIに向かない、Pythonにしとけ」ってのは、どういうこと?
Pythonには、LinuxでもMacでもWindowsでも動くことができるGUIライブラリが標準で用意されてるんでしょうか。


268 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:04:22 ]
というかRubyのGUIは全部間借りなのよ
Ruby/TKはTcl/Tkというものを使ってて、Tkの勉強が必要
Ruby/GTKはGTKの、Ruby/QtはQt(Qt4)そのものの勉強をする必要がある
Rubyの文法とか考えとかそういうものとは全く別のものを勉強しなければならない

「GUIはRails並に別」と言われる所以
「わざわざRubyから呼んで苦労背負い込むくらいなら
直接そのプログラミング言語を学んで直接起動させたほうがマシじゃね」という

269 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:07:09 ]
> Pythonには、LinuxでもMacでもWindowsでも動くことができるGUIライブラリが標準で用意されてるんでしょうか。

これに全く答えてないわけだが。
Pythonには間借りでないGUIライブラリがあるわけ?

270 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:15:22 ]
この際だから
はっきり言ってしまうと
Pythonの場合
wxPythonならwxWidgetsは覚える必要はないし
PyQtならQtを覚える必要がない
TkinterだけはTcl/Tkを知らないと使えないとは思うけど



271 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:35:23 ]
Tclの難しいところ(変数/コマンド置換、制御構文のブレース等)はRubyがやってくれるから
Tcl知ってる人がTk使えるようになるのと
Ruby知ってる人がRuby/Tk使えるようになるのに必要な勉強の量は大差ないだろう

問題はLinuxでRuby/Tkが使えるようになるまでだけど
RubyでGUIやりたいって言ってる人はたいていWindowsユーザなんじゃないか
だとすればActiveScriptRuby入れてActiveTcl入れるだけでRuby/Tkが使えるようになるから
PythonでTkinter使うのとたいしてかわらない

とういわけでRubyでGUIスレの発展を切に願います

272 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:39:34 ]
Ruby/Tkが学習距離的にいちばんマシではある
「とりあえずウィンドウとかボタンとか入力欄とか出せればなんとかなんじゃね」
というコンセプトがRuby寄りだ
「Tcl/Tkでいちばん難しいのはTcl」という本末転倒な症状もRubyなら軽減

が、Rubyを一通り学んでからGUIに手を出すという順番自体は重ねて推奨

273 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:48:22 ]
>>270
それは>>269の答えになってるの?それともただの独り言?

274 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:50:05 ]
>>273
半分くらい答えになってるんじゃね?真偽は置いておいて。
というか何故そんなに喧嘩腰なんだ

275 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:54:18 ]
wxPythonなんかも結局wxWidgetsのマニュアル見ることになるから
あんまりRuby/Tkなんかと変わらないよ
その辺はどこのGUIインタフェースも一緒

276 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 10:56:24 ]
深い使い方しないという範囲限定の話だと思う

277 名前:267 mailto:sage [2010/03/28(日) 11:02:09 ]
>>268
プログラム言語によらず、GUIライブラリなんてそんなもんだと思っていたので、
RubyじゃなくてPythonだと何が嬉しいのかを知りたかったのです。

>>270
> wxPythonならwxWidgetsは覚える必要はないし
> PyQtならQtを覚える必要がない
GUIライブラリ固有の知識がなくてもPythonの知識だけでGUIが作れるということでしょうか。
これはにわかには信じられないのですが、ちょっとPython勉強して出直してきます。


278 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 11:08:16 ]
ttp://www.ibm.com/developerworks/jp/linux/library/l-qt/
> Ruby/Qt の使い方は、PyQtにかなり似ています。どちらの言語も同じような動的特性 (dynamism) と
> 簡潔性を備えていますので、個々の要素に名前の違いはあるにしろ、似た感じのコードになっていても
> 不思議はありません。
RubyもPythonも似たようなもんなんじゃね?

279 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 11:08:42 ]
でも俺はある程度Tcl/Tk知ってるからPerlでもRubyでもPythonでもTcl/Tk単体でも
学習コスト最低レベルでウィンドウを扱える

まあ要は用途次第だな
GUIを提供することだけが最重要で、その裏にあるプログラムの動作はどうでもいいとか

280 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 11:14:18 ]
そもそものあれとしてGUIが必要な人はRubyを使わないし、
Ruby使ってる人はRubyからGUIライブラリを呼ぼうなんて考えない
GUIが必要なときは素直に他の言語で書く



281 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 11:17:23 ]
>>280
んなこたーない。
…とは思うものの、自分も Ruby で書かれた GUI アプリは Rabbit くらいしかしらない。

282 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 11:17:35 ]
>>280
で、つまりRuby上のGUIは初心者の領域ではないという話になるわけか
別スレ立ったんだしとりあえずそっちでいいじゃん

283 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 11:18:38 ]
>>280
それはそうだろうけど、その「他の言語」ってところでPythonを勧められることがままあると。
んで、PythonとRubyではそんなに違いないんじゃないの?ってのが>>267の疑問では。

C#やらJavaやら勧められるんなら、そういう疑問は出てこないと思う。

284 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 11:20:22 ]
>>281
goRua…は終わったか
ホントにGUI部分の処理が面倒だなあ
ウィンドウ処理と滅茶苦茶高次に融合したRubyとかないの

285 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 11:25:03 ]
いいからこっちでやれ
Railsとスレ分けられるんだからGUIとだってスレ分けられるだろ

Ruby で GUI するスレ
pc12.2ch.net/test/read.cgi/tech/1269609576/

286 名前:デフォルトの名無しさん [2010/03/28(日) 11:39:52 ]
ここは初心者スレだからGUIの話もオッケーよ

287 名前:デフォルトの名無しさん [2010/03/28(日) 11:46:26 ]
プログラミング初心者には、GUIってのは、すでに出来上がって動いている
ものを操作するのは分かりやすいが、それをそう見えるように作るのは面倒
くさいということは知って欲しいなー。

テキストメッセージ1つのウィンドウを出す程度で満足なら別だけど。


288 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 11:59:32 ]
Rubyで使えるGUIライブラリってどんなのがあるの?
WndowsFormは使えんよね?

289 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 12:03:19 ]
attr_writer :hogeとdef hoge=(h);@hoge = h; endは
同じ意味だと思いますが、どっちを使うべきなんですか?

290 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 12:10:29 ]
>>289
前者は後者の意味であるということを理解してるならどっちでもいいよ

作ってる最中は attr のことが多いと思う
条件演算子→if式→case式 と移行するのと似たような感じで
結局後者(でメソッド内部で正規化処理つき)になることが少なくない



291 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 12:17:26 ]
>>288
Ruby/Tk
VisualuRuby
Ruby/Qt4
Ruby/GTK2
WxRuby
FxRuby
Apollo
Ruby/FLTK
RubyShoes

なんか終わってるのもいくつかあるが気にするな

292 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 12:22:24 ]
>>290
ありがとうございました

293 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 12:22:57 ]
>>291
ありがとうございました

294 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:01:29 ]
test do
例外が発生する可能性のある処理
end
----------------------------------------------------------------------------
def test
begin
例外が発生する可能性のある処理
yield
ensure;end
end
このようなコードを書いたのですが、test do; endの適切な処理がわかりません
教えてエロ人!!


295 名前:デフォルトの名無しさん [2010/03/28(日) 13:06:36 ]
発生したときどうしたいのさ?


296 名前:294 mailto:sage [2010/03/28(日) 13:18:57 ]
>>295

test do endの中で全ての例外を処理し、
例外が発生した時はメソッドをreturnで終了させたい

297 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:24:46 ]
> test do endの中で全ての例外を処理
えー
そういう場合はメソッドのユーザーが自分の責任で begin で括る

begin
 test do ... end
rescue => e
 error_handling(e)
end


298 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:30:30 ]
>>297
THX

299 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 15:51:35 ]
チルダとダブルクォーテーションの使い分けって何かあったっけ?
何か重要なものがあったような気がするけど思い出せないんだ

300 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 15:55:41 ]
質問が微妙によくわからないけどこれ置いとく
doc.okkez.net/187/view/spec/literal
ja.wikipedia.org/wiki/%E3%83%81%E3%83%AB%E3%83%80



301 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:01:10 ]
チルダ ( ~ ) ?
Ruby で ~ を使うのは、マッチング演算子の =~ とその否定の !~ と、
前置の単項演算子で、整数のbitwise-not、正規表現オブジェクトと $_ とのマッチ、
IPAddr オブジェクトのbitwise-not、なので、ダブルクォートとの使い分けをする場面は
ないと思うが...

302 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:08:37 ]
間違ったプライムだ
文字やら文字列列をくくる時なんかに使うアレ

303 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:10:41 ]
′や″をRubyで使うことはない

304 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:13:32 ]
「円記号でエスケープ」と聞いて¥を使ってしまうようなピュアな人がここにも…ッ

というか文字列括る記号はさっき出てた
ttp://doc.okkez.net/187/view/spec/literal#string
このへんで用が済みそうだが

305 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:17:51 ]
うーn?%記法とやらを使えってか?
>>doc.okkez.net/187/view/spec/literal
とりあえずこれ読んでくる

306 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:20:10 ]
LispやErlangなんかのフォーマット文字列だっけ
チルダ使うの

307 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:20:46 ]
親クラスのアトリビュートにアクセスするためには、どうすればいいんですか?

308 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:26:42 ]
記号の区別の知識があることがやっぱ前提だよな
"''゛“"”′″`'‘’

309 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:29:56 ]
>>307
Rubyにはアトリビュートというものはない
継承されたクラスの a というメソッド内部から継承元の同名のメソッド a にアクセスするには super を使う

310 名前:307 mailto:sage [2010/03/28(日) 16:34:42 ]
>>309
そんじゃ、親クラスで定義した@hogeには
サブクラスから(メソッドを通さず)アクセスできないってことですか?



311 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:40:09 ]
>>310
え、いやふつーにアクセスできると思うんだが
irb> class C; def initialize; @hoge="hoge"; end; end
irb> class C2 < C; def hoge; @hoge; end; end
irb> p C2.new.hoge
"hoge"


312 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:59:36 ]
読み方いくつかバリエーションあるんだが

" ダブルクォート(ダブルクォーテーション)
' シングルクォート(シングルクォーテーション)
` バッククォート

でいいよな
表記の揺れは許容

313 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 17:05:59 ]
( ) カッコ、パーレン、小カッコ
{ } ブレース、波カッコ、カーリーブラケット
[ ] ブラケット、角カッコ

314 名前:デフォルトの名無しさん [2010/03/28(日) 17:08:01 ]
シェルスクリプトやPerlの知識はいくらか前提にしたいなー。


315 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 17:15:11 ]
プライムは 1′23″ とか書くときに使う記号だな

316 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 17:58:23 ]
>>312
「マーク」を付けないところが童貞っぽい。
IPアドレスをIPって略しちゃうのと一緒で。

317 名前:307 mailto:sage [2010/03/28(日) 18:00:19 ]
>>311
JRubyでJavaのコードを継承しているんだけど
なぜかnilになっちゃう

318 名前:307 mailto:sage [2010/03/28(日) 18:20:48 ]
どうやら、JRubyからJavaのフィールドにアクセスするためには
絶対publicじゃないとダメみたい
しかもJRubyではローカル変数としてアクセスするみたい
class Super{
public String str = "str"
}
class Sub < Super
def initialize
p str
end

319 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 19:11:37 ]
>>315
わかったからもうやめて
俺のHPは0だ

320 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 19:20:27 ]
>>316
ダブルクオーテーションとダブルクオーテーションマークに何か違いでも



321 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 19:43:07 ]
フルだとどうにも長いからな
IPアドレスなんかとは違って紛らわしい候補はないから縮めてもらっても意味はわかるが

そもそもがダブルクとかシングルクとかそれくらい短いといいのに

322 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 20:04:45 ]
一重引用符、二重引用符で各5文字だ。

323 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 20:19:17 ]
>>322
それは、カギカッコと区別がつきづらいので使わないで欲しい。

324 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 20:21:07 ]
半角単引用符
半角複引用符
6文字でFA

325 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 20:24:53 ]
ほほう«ギュメ»は‹引用符›ではないと申されるかこれは異なことを

…いいよもうシングルクオートで

326 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 20:27:50 ]
次の瑣末粘着者さんどうぞ

327 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 00:06:44 ]
メソッドの名称とかモジュールの名称って
短い方がプログラムの実行速度が速くなるとかありますか?

328 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 00:12:59 ]
…いつのBASICだ
気にする必要はない
変な省略はせずにわかりやすい長めの名称推奨

329 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 00:38:43 ]
大きなオブジェクトを変数に入れた後は変数に nil を明示的に指定すると
メモリ内に巨大なデータがいつまでも残ったままになったりしません

とか書いたら信じて実行してくれるだろうか

330 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 00:49:44 ]
irb だとわかるけど、 require するとけっこうメモリ食うよね



331 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 01:56:45 ]
win32版Ruby1.87(OSはWindowsXP)9で、漢字を表示するようなスクリプトをUTF-8で保存して
スクリプト一行目に#! ruby -Kuと入れて実行したら文字化けした
-KsにしてS-JISで保存して実行したら直った

・・・ちゃんとBOM無しとやらにしたのに何でかしら?Ruby本体の設定とかあって、それを間違えてるとかかしら?
ちなみに使用したのはサクラエディタ

332 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 02:12:20 ]
>>331
Windowsという事は、コマンドプロンプトで実行したという事ですね。
コマンドプロンプトはデフォルトではSJISしか正しく表示できないのです。
コードページをUTF-8に変更すれば表示できると思われます。
方法は「コマンドプロンプト コードページ UTF-8」でググってみて下さい。


333 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 02:38:29 ]
>>332
d
コマンドプロンプトちゃんの設定が悪かったのか
にしてもこんな設定があったとは・・・

334 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 07:43:46 ]
chcp65001 のことだったらまともに動かないし使えねーんだが

335 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 07:47:45 ]
>>334
全く問題ない文字を表示してるだけなら問題はない
>>333はそのパターンだろう

336 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 12:48:03 ]
QueueにデータAが無かったら、データAを追加する
処理を書きたいのですが
どのようにして確認すればいいのでしょうか?

337 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 13:23:48 ]
デフォルトではQueueは存在しないので、
自分で作るかArrayで代用するか適当なライブラリインストールする必要がある

…で、Arrayで代用する場合はまあ include? でいいんじゃね

queue = Array.new
queue.push('one')
queue.push('two')
queue.push('three')

puts queue.shift
puts queue.shift

queue.push('four') if queue.include?('three')

338 名前:デフォルトの名無しさん [2010/03/29(月) 13:24:23 ]
RubyのQueueはスレッド間のデータ受け渡し用に用意されているもので、
汎用のデータコンテナではないと思う。

一応 Queue のインスタンス変数 @que が内部で持ってるデータのリスト
なので、これを無理矢理参照して include? でデータの存在をチェック出来
るけど、素直にArrayをshift/pushもしくはunshift/popのペアを使って
キューと見なすほうがよいと思う。


339 名前:336 mailto:sage [2010/03/29(月) 13:33:19 ]
>>337-338
よーくわかりました。
Array.newとQueue.newの2つを使いたいと思います
ありがとうございました

340 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 19:12:32 ]
File.exist?(filename)とFile.exists?(filename)
の違いがわからない
単に書き方が違うだけか?



341 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 19:21:06 ]
>>340
前者推奨
sつきの後者は互換性のために残されているだけで1.9では既に無い
ttp://www.ruby-lang.org/ja/man/html/obsolete.html#FileTest.2eexists.3f
見つけるの苦労したぞ
わかりやすいとこに置いておいてくれ

342 名前:デフォルトの名無しさん [2010/03/29(月) 20:15:24 ]
その後復活したけどな
svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/file.c?view=diff&r1=14389&r2=14390
しかもobsoleteもなくなってるという

343 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 21:37:30 ]
>>340
なるほど、んじゃあexist?(hoge)を使うようにしよう
ともかくありがとう

344 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:56:56 ]
javaのつもりでcase 文で一行ごとにbreakを入れたら酷い目にあった
知ったかは危険だ・・・

345 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 23:40:13 ]
スレッドの中から@arrray.shift()としたのですが、
スレッドの外から@arrayを見るとちゃんと動作していません

どうやったら、整合性が取れるようになりますか?

346 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 00:38:52 ]
>>345
> どうやったら、整合性が取れるようになりますか?
typoを無くす

347 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 05:58:33 ]
>>336
それはキューではない。

348 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 08:12:10 ]
>>346
何それ?

349 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 10:23:04 ]
>>342
まあ 1.9.2 で実際に出たら考える

350 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 10:25:27 ]
shiftできるんだから、@arrrayの方が正しんだな。



351 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 19:18:13 ]
BitmapArrayって何ですか?

352 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 08:49:43 ]
def hoge *argsのとき、
hoge {:fuga => :piyo} で呼ばれたのか、
hoge :fuga => :piyo で呼ばれたのか判断する方法ってあるんですか?

353 名前:352 mailto:sage [2010/03/31(水) 09:06:16 ]
あ、
hoge {:fuga => :piyo}じゃブロックになっちゃうから
hoge({:fuga => :piyo})ですね。

354 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 09:14:02 ]
Ruby にはキーワード引数というものは存在しない
Symbol キーの Hash をそれっぽく使っているだけ
メソッドの引数内に限り、解釈の混乱の起きない範囲で Hash リテラルは { } を省略することができる

hoge(:key1 => val1, :key2=>val2)

hoge({:key1 => val1, :key2=>val2})
は同じだ

huga(param, {:key1 => val1, :key2=>val2})

huga(param, :key1 => val1, :key2=>val2)
も同じ

355 名前:352 mailto:sage [2010/03/31(水) 10:02:08 ]
どもです。わかりました。

356 名前:デフォルトの名無しさん [2010/04/02(金) 04:53:24 ]
正規表現で得た複数のデータをそれぞれ配列に格納して、
その配列を比較するにはどうすればよいのでしょうか。

357 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 10:02:28 ]
そのまんま1処理ずつ書けばいいじゃん
なんでもかんでも1フレーズに押し込めようとするのは損

358 名前:デフォルトの名無しさん mailto:sage [2010/04/03(土) 13:57:20 ]
>>356
String#scan
www.ruby-lang.org/ja/man/html/String.html#scan

359 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 01:27:32 ]
鬼車を使いたいんですが、1.87に実装されていますか? 1.91は不安なので。

360 名前:デフォルトの名無しさん [2010/04/04(日) 02:47:06 ]
リテラルは無理だが、oniguruma gemはある。




361 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 12:02:56 ]
>>360
どうもありがとうございます。今から試してみます。

ところでみなさん、1.9系統への移行はいまだに時期尚早だと思いますか?
正式リリースから一年以上経ったし、そろそろ良いかなーとも思っているんですが。
みなさんはいまだに何か不都合とかありますか。

362 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 14:42:20 ]
system("make")等でmakeを実行しつつログを保存したいのですが
良い方法はないでしょうか?IOクラスのパイプとかリダイレクトとか良く分からなくて…

text=`make`ではmakeの出力がリアルタイムで確認できず
system("make 2>&1 | tee hoge.txt")では、$?でmakeの戻り値を
取得できなくなってしまうので困ります(失敗したらexitしたいのです)。

363 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 14:52:42 ]
>>362
1.8 なら fork と exec で自分でがんばるしかないと思う。
1.9.1 なら spawn で、1.9.2 なら open3 で、できるかもしれない。

364 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 15:32:31 ]
spawn for legacy
github.com/ujihisa/spawn-for-legacy

365 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 17:33:45 ]
Structを要素とする2次元配列の消費メモリが大きくて困っています
500個 * 約13000個 * 要素数5の構造体(整数4つ+文字列)のデータで
2Gbyte以上消費します(Cで書けば150Mbyte程度で収まる)

Rubyではこの程度のメモリ消費は普通なのでしょうか?
あるいは使い方やコツ等が分かっていないのでしょうか?
環境はruby1.8.7 on MacOSXです

366 名前:362 mailto:sage [2010/04/04(日) 17:34:10 ]
>>363>>364
ありがとうございます。1.9.1だったので以下のようにしてみました。
こういうコードでいいのか分かりませんが、とりあえず目的は達成できました。

r,w = IO.pipe
pid = spawn("make", STDOUT=>w)
spawn("tee build.log", STDIN=>r)
ret = Process.waitpid2(pid)[1].to_i
w.close
if ret != 0
puts "[Error] (build) #{src}"
exit 1
end

367 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 17:40:08 ]
>Rubyではこの程度のメモリ消費は普通なのでしょうか?

普通

368 名前:デフォルトの名無しさん mailto:sage [2010/04/04(日) 18:56:57 ]
ruby1.8.7がruby1.9系の良いところをフィードバックしたバージョン
rails3がruby1.9対応だからみんなそれまでは焦って動くことはなさそう。

メモリ消費でCと比べるのはrubyがかわいそう
javaだってcの10倍以上使っておかしくないんだぜ?
ruby1.9系が1.8系よりも良い所って
今のところガーベージコレクションが良いって記事しか読んだ事無いな。


369 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 10:54:00 ]
>>366
わざわざtee使って複数プロセスにするから面倒な事になるんだろ。

ret = IO.popen("make", "r") {|mk|
open("build.log", "w") {|log| IO.copy_stream(mk, log)}
Process.wait2(mk)[1]
}
unless ret.success?
abort "[Error] (build) #{src}"
end

IO.copy_streamがなければそのくらい作れ。


370 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 10:55:53 ]
あ、teeになってないな、これだと。
copy_streamの代わりにこうでもしてくれ。
mk.each{|line| log.puts(line); puts(line)}




371 名前:365 mailto:sage [2010/04/05(月) 17:58:32 ]
>>367,368
そうですか・・
倍程度かなと勝手に予想してましたが、そんなに甘くはないですね
ありがとうございました。

372 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 22:51:12 ]
書きやすくて実行しやすくてなおかつ投げ出したくならない程度の実行速度も求めた結果、
Ruby においてはメモリはすっげぇ大量に消費される

ご存知の通り、プログラムにおいて実行速度とメモリ使用量はトレードオフだ
どっちも良くしたい場合はアセンブラかせめて C で書か「ねばならない」

大量のデータを処理するのでなければ常識的な範囲内に収まるものではあるのだが、
大量のデータを処理することが事前にわかっているのなら Ruby を使わないほうがたぶん幸せ

373 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 23:17:25 ]
馬鹿な事いってんじゃないよ、
ムーアの法則知らないのか?
それは、10年前のpcの話だろ

374 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 23:22:18 ]
>>373
何言ってるの
いつの時代もCPUは100パーセント使用されるし
メモリはスワップにまで突っ込むし
HDDは90%まで埋まるもんだよ

10年前のデータ量を現在のマシンで取り扱うなら、君の言ってることは真だろうね

375 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 23:34:47 ]
ムーアの法則を知っていてパーキンソンの法則を知らないのはニワカ


376 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 23:35:36 ]
>>372
大量のデータでまったく同じ処理を何回もするならそうかも知れない
(大量の定義にもよるが)
あるいはとにかく速さを要求されるならそうかも知れん
ただ,大量のデータでもそんなに何度もしないならRubyの方が幸せかも知れん

たとえばRubyで処理に1日かかってアセンブラなら半分の時間でできるとしよう
coding/debug でその差以上得しなければ時間的にさえ得にならない
人件費ではさらに得にならない

coding のオーバーヘッド評価しないと意味が無いから状況に依りすぎる

有名な教訓を思い出すなぁ
"premature optimization is the root of all evil"

377 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 23:45:13 ]
>>374
いわゆるデスクトップ版Linuxを使ってるとその思いが強くなる

10年くらい前は「もうちょっとマシンが早かったらこれすげえ快適なんじゃね!?」と思い
5年くらい前には「もうちょっとマシンが早かったらこれすげえ快適なんじゃね!?」と思い
今年インストールしたLinuxでも「もうちょっとマシンが早かったらこれすげえ快適なんじゃね!?」と思ってる

378 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 23:59:29 ]
>>377
いいかげんマシン買い換えようよ

379 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 00:31:18 ]
>>378
えっ


380 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 14:16:53 ]
今すぐtwmに変更するんだ!



381 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 15:39:04 ]
通年重いのはツールキット部分だな
起動するGUIアプリケーションが全部OpenMotif使うようになるとかなら歓迎だがそうでもあるまい

382 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 18:11:00 ]
Ruby 使うって時点で GTK だったりするのがアレだ罠






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前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