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


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

Ruby 初心者スレッド Part 37



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

★注意★ Ruby 1.9.1 は初心者にはまだ時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
 文字エンコーディング等の外部基礎知識が必要な上、不完全対応の第三者ライブラリでの問題の切り分けが手間です。
 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/05/18(火) 03:39:17 ]
【よくあるしつもん】
Q:
いちからRubyを始める初心者向けのRuby入門書は何がありますか?

A:
プログラム作成自体の初心者なら
 ・「たのしいRuby 第3版 Rubyではじめる気軽なプログラミング」
  www.amazon.co.jp/gp/product/4797357401/
文法は理解済み(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/05/18(火) 03:39:56 ]
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/05/18(火) 03:40:37 ]
●関連スレ
Rubyについて Part 40
pc12.2ch.net/test/read.cgi/tech/1272248179/
●アンチスレ
・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】
pc12.2ch.net/test/read.cgi/tech/1155031689/
●Ruby 1.9 系列スレ
・魁け! Ruby 1.9.X
pc12.2ch.net/test/read.cgi/tech/1201603546/
●GUIの使えなさを堪能するスレ
Ruby で GUI するスレ
pc12.2ch.net/test/read.cgi/tech/1269609576/
●ぶん投げスレ
Rubyの宿題教えてください。2限目
pc12.2ch.net/test/read.cgi/tech/1200175247/

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

5 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 03:41:19 ]
バージョンに関するよくある質問

・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/05/18(火) 03:42:02 ]
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/05/18(火) 05:43:01 ]
 ○  >>1 乙 もうお前に用はない 
 く|)へ
  〉   ヽ○ノ
 ̄ ̄7  ヘ/
  /   ノ
  |
 /
 |


8 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 07:14:50 ]
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所

9 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 07:39:39 ]
前スレ>>974
>「クラス < クラス」の場合はクラスメソッド(クラスの特異メソッド)も継承されるのに、
>「クラス < モジュール」の場合はモジュールの特異メソッドは継承されません。

「クラス < クラス」はクラスを継承してクラスを作っているからクラスメソッドは継承されるが、
「クラス < モジュール」のincludeやextendは継承階層的にはモジュールを継承しているが
作っているのはクラスだから特異メソッドは継承されない。
むしろモジュールクラスのメソッドがクラスクラスに継承されるほうが怖い気がする。
継承の仕組みを流用しているだけで、概念としてはモジュールの機能を組み込んでいる、だからincludeなんだ、と。
実際に継承しているのはモジュールじゃなくて化身クラスなわけだし。

10 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 08:06:04 ]
どちらが正しいかなんて考えるのは馬鹿



11 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 08:18:55 ]
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━-┓
┃ ┌────────────────────────ーーー┐ ┃
┃ │            / ̄ ̄\                      │ ┃
┃ │          /  ヽ_  .\                    │ ┃
┃ │          ( ●)( ●)  |     ____            │ ┃
┃ │          (__人__)      |     /      \          .| ┃
┃ │          l` ⌒´    |  / ─    ─   \       │ ┃
┃ │         . {         |/  (●)  ( ●)  \      .| ┃
┃ │           {       / |      (__人__)      |     │ ┃
┃ │      ,-、   ヽ     ノ、\    ` ⌒´     ,/__      .| ┃
┃ │     / ノ/ ̄/ ` ー ─ '/><  ` ー─ ' ┌、 ヽ  ヽ、   │ ┃
┃ │    /  L_         ̄  /           _l__( { r-、 .ト、 . │ ┃
┃ │       _,,二)     /            〔― ‐} Ll  | l) ).│ ┃
┃ │       >_,フ      /               }二 コ\  Li‐' .| ┃
┃ │    __,,,i‐ノ     l              └―イ   ヽ |   . | ┃
┃ │                l                   i   ヽl   . | ┃
┃ └ーーー────────────────────────┘ ┃
┗-━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
            平成22年5月18日 クソスレにて

12 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 08:21:11 ]
前スレ994ですがスレ間違えました

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

14 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 10:03:29 ]
www.youtube.com/watch?v=1qdlcfqTbDU
            ∩
            | ゝ  <ヽ
.─ ────=≡/ /   ヽ ∨     
           ./  i    / /
 ───=≡.  /  丿   /  ノ      ズザーーーーーッ 見よ!わたしの華麗なダイブ
)⌒`)       (   ヽ、 /  〈
  `)⌒`)     \  /'' ー'' ⌒`/ヽー 、           
  ────=≡ \/       〉   ⌒彡彡ミミ\
  `)⌒`);;;`)⌒`)   ヽ   ,, -‐"      彡彡彡ミヽ
  `)`)⌒`)  )     \/      / ィ. _彡彡彡}
──=≡;;;⌒`)≡⌒)≡≡"ーーーー(,,___/つミ彡ノ

15 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 12:45:35 ]
前スレ >>995

Ruby 初心者スレッド Part 36
pc12.2ch.net/test/read.cgi/tech/1269233796/995

995 名前:デフォルトの名無しさん[sage] 投稿日:2010/05/18(火) 02:10:27
落ちそうだけど質問いいですか?

falseか値がない場合は、
un ||= "unko"
とかできますが、
同じような感じで簡単に文字列の追加はできないもんでしょうか?

un << "unko"
では当たり前ですが aが nil の場合エラーがでます。

(un ||= "") << "unko"

とか考えたんですが、自分で書いておいてかなりギョットします。

16 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 20:46:33 ]
前スレ読んで、ずっと悩んでいた文字化け現象の
原因が p249 のせいだったとは…!

17 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 23:21:45 ]
webrickのWEBrick::Daemonで複数のサーバーを立てる方法ってありますか?
server1 = WEBrick::HTTPServer.new({
:BindAddress = '127.0.0.1',
:Port => 443,
:SSLEnable => true,
:SSLCertificate => OpenSSL::X509::Certificate.new(SSL_CERTIFICATE),
:SSLPrivateKey => OpenSSL::PKey::RSA.new(SSL_PRIVATE_KEY),
:ServerType => WEBrick::SimpleServer
})
server2 = WEBrick::HTTPServer.new({
:BindAddress = '127.0.0.1',
:Port => 80,
:ServerType => WEBrick::SimpleServer
})
Thread.new{server1.start} # サーバー起動
Thread.new{server2.start}
sleep(1) while true
WEBrick::SimpleServerの場合このコードで動きますがWEBrick::Daemonにすると
server2が動きません。何か良い方法があったら教えてください
よろしくお願いします

18 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 23:39:01 ]
>>15
素直に二行で

falseじゃない場合に限れば
un = "#{un}unko"
無駄なオブジェクトができる?しらんがな

19 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 23:57:08 ]
>>16
1.8.7-p249の文字化け(inspectのバグ)はFAQレベルのような気がする。
string.cを自分で修正してmakeすれば対応できるし、
次のバージョンアップ(1.8.8?)では修正されているらしいけど、いつリリースされるか分からないし。


20 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 00:32:38 ]
「自分で修正して」のレベルなら次のパッチレベルリリースで直るでしょ



21 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 00:53:35 ]
パッチレベルでいうと p250 相当で直ってるんだなこれが…
svn diff -c 27145 svn.ruby-lang.org/repos/ruby/branches/ruby_1_8_7
で取ってこれるのでコンパイルが出来る人はやってみよう。


22 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 02:24:39 ]
改行が \r\n のテキストに BB って行があるか調べるために正規表現を使う方法で、
"AA\r\nBB\r\nCC\r\n".match(/^BB$/) と書いたら nil になってしまって予想外だったんだけど
これって match(/^BB\r?$/) とかわざわざ書かないとダメ?

23 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 05:56:12 ]
>>22
Ruby あんま関係ないシリーズ絶好調だな

$ が何にマッチするかというと「\n の直前の幅 0 の隙間(と \n の直後の隙間)」だ
無理矢理可視化すると line1$\n$line2 みたいな感じ

\r は \n ではないので、/line$/ は "line\n" にはマッチするが "line\r\n"にはマッチしない
そんだけ

\r\n を改行フレーズとみなして $ が直前にマッチするようなマッチエンジンはけっこう特殊だと思う
…ああ、まずいなあ、改行文字という言葉を注釈なしで使ってる解説が多すぎる
ttp://www.ruby-lang.org/ja/man/html/_C0B5B5ACC9BDB8BD.html
正規表現の改行文字は \n のみ
irb> p /./ =~ "\r"
0
irb> p /./ =~ "\n"
nil


24 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 07:20:58 ]
>>17
最後に WEBrick::Daemon.start してうまくいってないということなら、
最初にやってみたらうまくいくかも。

fork を発行したスレッド以外は殺されてしまうというあれ。違うかしらんけど。

25 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 10:30:04 ]
ASR版がwin7のx64でインスコできないな
どうにかならない?

26 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 11:36:25 ]
jaとjpの違いって何?
前者が日本語で後者が日本国?

27 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 11:44:45 ]
LOCALEのja_JPの意味としてはそう

28 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 11:46:44 ]
もはや、なぜこのスレで尋ねたのかを説明してもらう必要があるレベルだなw

29 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 12:35:59 ]
なぜwww.ruby-lang.orgのディレクトリはjaで、rubyist.netのサブドメインはjpなのか、
という質問かもしれないw

30 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 13:10:35 ]
>>23
なるほどー。\r の存在はきちんと意識しとかないといけないんですね
改行を含んだ文字列を正規表現に含めるとき無意識に /AA\nBB(.*)/ とか書いてしまうんで。



31 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 13:14:06 ]
jaは日本語、jpは日本国または日本国っぽい地域

32 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 13:51:41 ]
Dir::globとDir.globって書き方の2種類を見かけるんですが同じ意味でしょうか?
後者はわかりますが(クラスメソッド)、前者の「::」がよくわかりません
また、どちらを使うのが一般的でしょうか

33 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 14:04:53 ]
後者
前者は忘れていいし、使ってる人がいたら陰で指差して笑え

34 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 14:12:05 ]
クラスメソッドの :: はそろそろ無かったことにしたい表記だろうと思う
初心者スレ的には使う必要もないし覚える必要もないしこれ使ってるスクリプトを参考にする必要もない
素直にドットで接続すればよろし

保守されてるのはともかく、新しく書かれたライブラリでこれ使ってるのって無い…よね?
:: でクラスメソッドを書いてるのは 1.6.x の臭いがするわん

35 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 15:58:07 ]
def value(x, default='-')
 return x.blank? ? default : x
end
という関数を作ったんだけど、いい名前が思いつかない。
だれかよさげな名前を考えてください。

36 名前:デフォルトの名無しさん mailto:32 [2010/05/19(水) 16:36:52 ]
>>33
>>34
レス遅くなってすみません、ありがとうございます
もうひとつ質問させてください
クラスメソッド以外の意味で「::」を使うことはありますか?ある場合、どういう意味で使われるのか知りたいです
それともRubyでは「::」という記述はどういう意味においても今後使う必要のない記号なのでしょうか

37 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 16:52:48 ]
Ruby では :: はクラスとモジュールと定数のアクセスに使う
Net::HTTP とか
これは :: を使わないと普通書けない
というかそれくらいは適当な解説にでも書いてあるかと思う

Ruby でいうところのクラスメソッドにアクセスするのに :: を使う言語があって、
それに似せておくとわかりやすいんじゃないかなーと Ruby の初期に考えられたことがあった
それが尾を引いてる

38 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 17:05:47 ]
>>37
なるほど、ありがとうございます
クラスメソッドとしてだけ使わない方がいいということですね

39 名前:17 mailto:sage [2010/05/19(水) 17:29:36 ]
>>24
レスありがとうございます
>最後に WEBrick::Daemon.start して
server1 = WEBrick::HTTPServer.new({
:BindAddress => '127.0.0.1',
:Port => 443,
:SSLEnable => true,
:SSLCertificate => OpenSSL::X509::Certificate.new(SSL_CERTIFICATE),
:SSLPrivateKey => OpenSSL::PKey::RSA.new(SSL_PRIVATE_KEY),
:ServerType => WEBrick::SimpleServer
})
server2 = WEBrick::HTTPServer.new({
:BindAddress => '127.0.0.1',
:Port => 80,
:ServerType => WEBrick::SimpleServer
})
WEBrick::Daemon.start{server1.start}
WEBrick::Daemon.start{server2.start}
とやってみましたがこれでは両方とも動きませんでした

>最初にやってみたら
これはどういう事でしょうか?

40 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 21:03:03 ]
>>39

snip
Thread.new {server1.start}
Thread.new {server2.start}
WEBrick::Daemon.start

っていうスクリプトかと思ったんで

WEBrick::Daemon.start
snip
Thread.new {server1.start}
Thread.new {server2.start}

にしてみたらという話をした、だけ。前者だと fork を呼んだ == WEBrick::Damon.start を呼んだ
スレッド以外は死んでしまうから……というところで何で server1 は生きてるんだろうと悩んでしまった。

>>39 のスクリプトからするとそもそもスレッドは関係無かったのね。
こっちで server2 が動かない理由は簡単で、WEBrick::Damon.start が中で fork and exit! してるから
server2 を動かそうとしてる WEBrick::Daemon.start まで制御が行かないだけ。



41 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 21:06:09 ]
>>40 fork and exit! してるから、じゃなくてその後にブロックがあったらブロックに yield してるから、か。
要するに server1.start; server2.start とやっても server2.start に制御が行かないのと同じこと。

42 名前:17 mailto:sage [2010/05/20(木) 04:52:39 ]
>>40-41
レスありがとうございます。なるほど、WEBrick::Daemonってそうやって使うのか・・・
WEBrick::Daemonってドキュメントに何も書いていないのでよくわからない(´・ω・`)
とりあえず下の方の書き方で>>39のサンプルは動くようになりました

でも、今作っているのはデーモンになってくれない・・・WEBrick::Daemon.startしちゃうと
エラーメッセージとか出なくなっちゃうからデバッグが面倒だ・・・もう少しがんばってみます

43 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 13:06:43 ]
文字列の%qや配列の%wなどの記法って何由来ですか?あとこのアルファベットって何かの頭文字なんでしょうか
なかなか覚えられなくて…

44 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 13:45:23 ]
qはquote、wはたぶんwords
由来はない(Rubyオリジナル)なんじゃないかと思う

45 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 13:53:48 ]
>>44
なるほど、納得できました
ありがとうございます

46 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 14:04:35 ]
Perlのq//とqw//を踏襲したんじゃないのかな?

47 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 15:00:13 ]
>>46 yes.

48 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 19:23:49 ]
%はどっからでてきたの

49 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 19:55:11 ]
parseに支障のない記号を適当に持って来たんじゃない

50 名前:17 mailto:sage [2010/05/20(木) 21:29:08 ]
自己レス
WEBrick::Daemon.startするとカレントディレクトリが変わるのね
カレントディレクトリを正しい場所に変更するようにしたら動きました



51 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 21:35:38 ]
前スレの974です。
>>9
> 継承の仕組みを流用しているだけで、概念としてはモジュールの機能を組み込んでいる、だからincludeなんだ
この一文でスッキリしました。ありがとうございました。

実際モジュールメソッドが継承されてしまうなら、Mathモジュールをトップレベルでinclude
しただけで、すべてのオブジェクトからsinとか呼べるようになっちゃうわけですしね。

52 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 21:37:05 ]
cd / は、デーモンになるときの作法の一部ですな。


53 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 20:17:20 ]
指定した秒数(UNIX time)からn秒たったら処理を実行させたいのですが、どんな方法がありますか?

54 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 21:14:51 ]
その時刻までsleep

55 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 02:53:38 ]
自分は逆にn秒経ったら停止して欲しいと思って
time = ARGV[0]
t0 = Time.now
t1 = t0 + time.to_i
while t0 <= t1 do
puts "Hello"
t0 = Time.now
end

とやっているのですが(timeは引数じゃなくて中で指定してもいいのですが・・・)
もっといい書き方ありますかね?一応自分の思った通りには動いているのでいいのですが・・・
twitterのstreamを指定時間DLしようと思ってタイマーをどうすればいいか書いているところです

56 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 02:57:22 ]
puts "hello" を sleep(1) とかに変える

57 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 08:12:04 ]
>>55
require "timeout"

Timeout.timeout(n) do
# some task
end

58 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 14:47:21 ]
他スレでも質問したのですが返答頂けなかったのでこちらで質問します。

class Hoge
def foo
end
end
のように普通に定義されたインスタンスメソッドをHoge.fooのように
クラスメソッドのように呼び出しているコードをしばしば見るのですが、
これはRubyの習慣なのですか?
Javaしか知らない自分としては少し気持ち悪いのですが。

59 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 14:51:41 ]
NoMethodError: undefined method `foo' for Hoge:Class


60 名前:デフォルトの名無しさん [2010/05/22(土) 16:30:45 ]
ExerbでWindows用の実行ファイルに変換したものが元のRubyスクリプトに比べ
同一マシン上で異様に高負荷となってしまうのですが何かFAQがありますでしょうか?
使用環境はWin XP SP3/ruby 1.8.7 (2009-06-12 patchlevel 174) [i386-mswin32]/Exerb 5.0.0です
使ったプログラムは
#!/usr/bin/ruby
require 'thread'
require 'date'
threads = []
threads.push(Thread.new{i = 0; loop do; puts DateTime.now.to_s + ' ' + i.to_s if i % 1000 == 0; i += 1; sleep 0.005; end})
threads.each{|t| t.join}
sleepの値は適当に調整してRuby版でCPU負荷がほぼ0%となるような値を選択しました
私のマシン上ではRuby版が1000回転するのにおよそ16秒かかりその間負荷はほぼ0%でした
一方同一マシン上でExerbで変換したWin版では31秒かかり負荷はほぼ25%でした

ためしに新たにThreadを起動せずメインスレッドで上記のループを回してみたところ
Ruby版Win版とも1000回転に16秒かかりその間の負荷はほぼ0%となりもとのプログラムのRuby版とほぼ同じ結果が得られました
このことからThread周りに原因があるのではないかと想像しているのですが
何か間違っている点あるいは回避策アドバイス等ございましたらご指南いただければと思います

現在Threadを使ったソフトを作っているのですがWin版のみ高負荷となってしまい
簡単なサンプルを作って確かめてみたという次第です
よろしくお願いいたします



61 名前:60 [2010/05/22(土) 16:48:07 ]
ごめんなさい
アップデートが出ていたんですね
ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mswin32]/Exerb 5.1.0
にアップデートしたら問題解決しました
テンプレをよく読まずにお騒がせしました

62 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 21:05:50 ]
どんまい

63 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 22:39:08 ]
スレッド内からスレッドの外にある変数を変更することは出来ますか?

64 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 23:16:33 ]
Rubyのどんなスクリプトも、なんらかのスレッド内で実行されてるわけだが。

で、ローカル変数やインスタンス変数やグローバル変数はスレッドローカルではないので、
スレッドと関係なく変更できる。

65 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 00:07:40 ]
なんだこの馬鹿は

66 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 02:56:16 ]
ruby触り始めて2日目。OOP自体Rubyが(ほぼ)初めて。

ソケットと付随するデータを変数として持つクラスを作ったんですが
複数生成したインスタンスのIO多重化をIO.selectで行い結果を受け取った後でそのソケットが属するインスタンスをどうやって取り出したらいいかで詰まりました。

読み出しができるソケットを持つインスタンスを取り出したいというのが目的です。

何かいいやり方はありますか?
もしくは設計自体がまずいでしょうか?

67 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 03:27:37 ]
self

68 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 03:33:40 ]
ダックタイピングなRubyがOOPとは
個人的には言いたくない
どちらかと言うとC++のテンプレートに近い

69 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 05:19:58 ]
>>67
不勉強なせいかまだよくわからんです。

class Hoge
 def initialize(foo, bar)
  @s = TCPSocket("localhost", 2000)
  @foo = foo
  @bar = bar
 end

 attr_reader :s
end

hoge = Hoge.new("foo", "bar")
ret = IO.select([hoge.s])

ret[0].each do |s|
 #ここをどう書く?
end

70 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 06:19:57 ]
>>69
Hoge に alias to_io s して、Hoge を IO のように扱えるようにしてから
IO.select に渡すのを hoge.s でなく hoge そのものにする。
または、ソケット→Hogeインスタンスなハッシュテーブルを持っておく。というのはどうかな。



71 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 06:55:30 ]
ありがとうございました

72 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 08:23:42 ]
>>65 煽るだけのバカは氏ねよクズ

73 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 10:40:41 ]
なんだこの馬鹿は

74 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 11:02:04 ]
素朴な疑問なんだけど
どうしてRubyはBooleanクラス作らなかったの?
単純に不要だったからって理由?
trueとfalseの親がまんまObjectって言語他にあったっけ

75 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 11:07:09 ]
TrueClass と FalseClass があればいらん、と判断したんじゃないかなぁ。
falseもnilも偽だし、それ以外は全部真だから、わざわざBooleanを作る意味が
あまりないし。

76 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 11:11:19 ]
>>75
ありがとうございます。
やっぱりそうなのかな…
そういえば明示的にtrue書くこと自体あまりないですね

77 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 11:59:10 ]
>>68
ダックタイピングだからOOPじゃないってことは流石に意味不明だろ。
SmallTalkだってダックタイピングだし、新しいGoもダックタイピングを全面に押し出してる。

Java流(静的言語流?)OOPじゃないってのが正しい言い方。
しかしJavaのインタフェースすらも、ダックタイピングに制限を加えた
形だと見ることができる。

78 名前:77 mailto:sage [2010/05/23(日) 12:06:49 ]
x ないってこと
o ないっての

79 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 12:15:54 ]
>>74
すべての比較演算子にtrueとfalseでは違う挙動するから、親クラスは必要ない。
Javaみたいにif式がbooleanしか受け取れないみたいのもない(ダックタイピング)だから
やはり親クラスは必要ない。
trueとfalseでは挙動が違うのだから、TrueClassとFalseClassは必要。

80 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 12:17:17 ]
比較演算子じゃなくて論理演算子だった。ゴメン。



81 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 12:18:33 ]
>>77
継承関係関係なしで多態できてしまうのはちょっとねえ、と
まあ動的型付けじゃ仕方ないけど
OOPはそれだけのものじゃないから
まあ部分的にはOOPと呼べるけど

82 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 12:20:58 ]
継承が(仮に)なくてもOOPはOOPなんだし

83 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 12:21:44 ]
部分と全体が逆になってるような気がする

84 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 12:22:09 ]
booleanがないんじゃなくて、全てがbooleanなんだお

85 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 13:20:53 ]
>>68>>81を見てデザインパターンを覚えたばかりの頃に無駄に継承したくなった過去を思い出したw

86 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 13:58:02 ]
>>81
> 動的型付けじゃ仕方ない
むしろダックタイピングのために動的型付けになってる(特にRuby)
> 部分的にはOOP
>>83も言ってるけど、静的言語のOOPがダックタイピングOOPの特殊例。
ってか多態性はOOP3大機能のひとつなのに、なんでそれを制限する静的型付けの方
が全体になるのかわからん。

>>85
それはあるw

87 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 15:24:16 ]
どっちかというと、C++やJavaをオブジェクト指向言語と呼ぶのに抵抗がある
別に厳密な定義があるわけじゃないし、自身がそういうならそうなんだろうけどさ
>>68みたいなのを生み出す要因になってるよね

本来クラスよりインスタンスの方が重要なんだけど、あの辺の言語に染まっていると
クラスがオブジェクト指向の本質だと思い込みがち

88 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 16:04:12 ]
ちょっとライブラリの質問です。
Rubyのちょっとしたスクリプトで、エラーというか例外が起きて中断されたような場合に
メールを送ってくれるようなRubyGemsで入れられるようなライブラリはありませんでしょうか?

Railsでは以下のものが見つかりましたが、Rails依存があり素のRubyスクリプトではそのままで使えないようです。

rails's exception_notification at master - GitHub
github.com/rails/exception_notification

89 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 16:12:32 ]
>>88
ライブラリは知らないけど、全体をbegin 〜 rescue Exceptionで括って一般的なメール送信方法を行えばいい
構文エラーが予想されるときは該当部分(スクリプト本文)を別の.rbファイルにしてbegin内でrequireもしくはload

たぶんtDiaryやHikiあたりが参考になる
エラー発生時に例外処理でエラー文をアウトプットしてるから、それをメール送信処理に差し替え

90 名前:88 mailto:sage [2010/05/23(日) 16:51:14 ]
ありがとうございます。hikiのtrunkのソースのwebrickでの処理を見ていたんですが、
rescueで例外処理をトラップしてメッセージやスタックトレースを表示しているだけなんですね。
これをメールで送ればいいと。

misc/webrick/hikilet.rb:95:
      rescue Exception => err
        res.status = 500
        res['content-type'] = 'text/html'
        res.body = [
          '<html><head><title>Hiki Error</title></head><body>',
          '<h1>Hiki Error</h1>',
          '<pre>',
          CGI.escapeHTML( "#{err} (#{err.class})\n" ),
          CGI.escapeHTML( err.backtrace.join( "\n" ) ),
          '</pre>',
          "<div>#{' ' * 500}</div>",
          '</body></html>',
        ].join('')
      end

ついでにログ残せたらなと、log4rやloggingというライブラリを見ていたら
ログをメール送信する機能もありましたので、そちらも合わせてみてみたいと思います。
ありがとうございました。



91 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 18:46:33 ]
>>79
>すべての比較演算子にtrueとfalseでは違う挙動するから、親クラスは必要ない。
なんでやねん


92 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 19:20:54 ]
>>87
>本来クラスよりインスタンスの方が重要なんだけど、あの辺の言語に染まっていると
>クラスがオブジェクト指向の本質だと思い込みがち

これJavaから入った自分には耳が痛いのですがw、ダックタイピングとポリモーフィズムって厳密な違いはなんですか?同じこと?

93 名前:15 mailto:sage [2010/05/23(日) 19:37:55 ]
>>18
> un = "#{un}unko"
代入時と同時に未定義のunを式展開で使う場合はエラーでないですね。初めて知りましたw
あ、でもfalseの場合は "falseunko"になるのかー。

気になってirbで確認したのですが、代入しないとやはり未定義だとエラーでるんですね。

irb(main):001:0> "#{un} unko"
NameError: undefined local variable or method `un' for main:Object
from (irb):1

ローカル変数unでなくフィールド(?Rubyだとなんというでしたっけ?)の@unの場合は未定義でもいけるんですね。

> un = un << "unko"
だとやはりエラー出ますし、これって評価のタイミングなんですね。


可読性やfalseの時も考えると、2行でいいかという気もしますし、
キモいのが嫌ならコメントつけるなりメソッド化してみます。

ありがとうございました。

94 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 21:06:15 ]
>>92
ポリモーフィズムはもっと概念的な話で、名前空間の親戚
javaで継承やinterfaceを使わなくてもメソッド名が同じならポリモーフィズム

>>93
一度も使われていない可能性のあるローカル変数を呼ぶ、という事態そのものが不自然
if false then un = 1 end
p un #=> nil


95 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 00:46:00 ]
プログラミング言語Rubyを読んでいるのですが、

オブジェクトoがStringクラスのインスタンスであることを確かめるために、
o.class == String
というコードが書かれています。

この場合の==演算子ってClassクラスのインスタンスメソッドって認識で合ってます?
どういう条件で真偽を返してるのでしょうか。

96 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 00:55:22 ]
合ってるけどちょっと怪しいな、右辺Stringの==メソッドではない
(o.class)の返値がClassインスタンスで、その==メソッド
便宜的に書き換えるならo.class.equal?(String)

>どういう条件
Classで定義されてなくて親のModuleにも定義されてないからさらに親のObject#==に従う
つまり一般的なオブジェクト同士の==と同じ
doc.okkez.net/187/view/method/Object/i/=3d=3d

97 名前:95 mailto:sage [2010/05/24(月) 01:08:18 ]
>>96
ご丁寧にありがとうございます。
ただまだ分からない点があります。

Object#==をそのまま引き継いでるとすると、
o.class == String
は常に偽になってしまいそうに思うのですが、
考え方が間違ってますか?

oがStringのインスタンスだったとしても、
o.classとStringは同じクラスですが異なるオブジェクトですよね?

98 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 01:25:05 ]
StringはClassインスタンス
o = ""とすると、oはStringインスタンス
o.classは「Stringインスタンスのクラスのオブジェクト」、つまりStringオブジェクトそのもので
ClassインスタンスでありStringという定数(ここポイント)の値と同一

おまけ
obj = Object # 定数だから値を読み出したりそれを代入することができる
o = obj.new # その値(Objectオブジェクト)を使ってnewもできる
o.instance_of? Object # 当然Objectのインスタンス

99 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 01:31:33 ]
おまけ部分の肝心なところを忘れてた
class C; end
C = Class.new
この二つはほぼ同一(厳密には微妙に差があったかもしれない)

本題にも蛇足しとくと、p Stringとかp o.classとか
さらにそれらのObject#object_idとか確認してみるといいかもね

100 名前:95 mailto:sage [2010/05/24(月) 02:22:52 ]
度々ありがとうございます。とても勉強になりました。
なるほど、String定数自体は一つだから同じオブジェクトになりますね。。



101 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 02:57:49 ]
Rubyレシピブック第二版で文字列操作の章を読んでると、「マルチバイト文字は扱えません」と注意書きされたメソッドが結構でてきます(ex. deleteやchrなど)

これって今の最新のRuby(1.9?)でも同じすか? 改善される予定はあったりしますか?

102 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 09:13:48 ]
1.9 では大幅に変わった。バイト列じゃなく、文字を扱うようになった。

chrはエンコーディングを付けることでマルチバイトに対応 例 12354.chr("UTF-8")
deleteもたとえば "あいうえおあお".delete "あ" とできる。

103 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 09:16:37 ]
言語はどれほど重要ですか?

104 名前:101 mailto:sage [2010/05/24(月) 09:51:11 ]
>>102
おお、これは嬉しいですね!
日本語で使えないやつばっかりじゃん、とちょっとガッカリしてましたが、頑張る気になれました
ありがとうございます

105 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 10:01:30 ]
1.9使うともっとガッカリできるぞ

106 名前:101 mailto:sage [2010/05/24(月) 10:05:35 ]
>>105
まじすかw
具体的にどんなところが?

107 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 13:32:44 ]
1.9でテキスト処理すると、理解不能なエラーが出てきてforce_encodingだらけになるからね

108 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 16:18:55 ]
んなわけない。アホか。

109 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 17:12:27 ]
前に試した時は謎のASCII_8BIT文字列が出てきたり大変だったよ
今もRailsの人が困ってるようだけど

110 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 19:08:10 ]
質問です。
Rubyでインスタンスメソッドがあるかないかを確かめる方法は以下の方法でよいものでしょうか?

Unkoクラスをインスタンス化した場合にseeds_of_watermelonメソッドがあるか確かめたい場合は

>> Unko.instance_methods.include? "seeds_of_watermelon"
=> true

でよいでしょうか?

define? Unko.seeds_of_watermelon
だと、クラスメソッドで判定されてしまいます。
もちろん define?をUnkoのインスタンスに使えばいいのですが、
その場合インスタンス化する前に知ることができません。


何でこんな疑問がうかんだかといいますと、Railsのプラグインがあるモデルに組み込まれているかどうかを確かめる方法が知りたかったのです。
例えばRailsでは大概プラグインは必要な時に自動でincludeされ、
モデルのクラス定義で acts_as_nantoka として実際のモデルごとに組み込むことがあります。

Ruby的(ダックタイピング的)には、acts_as_nantokaが呼ばれたか?というよりも
実際にメソッドがあるかないか?で判断した方がよいと思ったためです。



111 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 19:24:59 ]
RVMsugeeeeeeeeeeeeeeeeeeeeeee

112 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 22:15:50 ]
>>110
method_defined? というのが使えます。

class Foo
 def hello
  puts "Hello"
 end
end

Foo.method_defined?(:hello) #=> true



113 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 22:50:18 ]
>>110
そういう用途なら respond_to? が適切と思う。

if obj.respond_to?(:seeds_of_watermelon)
obj.seeds_of_watermelon
end

114 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 00:58:44 ]
rubyって+とか-もメソッドなんですよね?
1 + 5
って式は、1.+ 5って書くべきじゃないの?
どうしてピリオドが無いのにエラーにならないの?

115 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 01:03:14 ]
ピリオド付けたければどうぞ

116 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 01:08:23 ]
糖衣構文だな
ピリオドあったら変だしめんどくさい

117 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 06:28:46 ]
>>113
おまえは>>110
>その場合インスタンス化する前に知ることができません。
が読めんのか。バカなの?
こういう、明後日の回答をえらそうにする上級者がすげーきらい。


118 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 06:32:14 ]
上級者は明後日の回答はしませんことよ

119 名前:デフォルトの名無しさん [2010/05/25(火) 08:55:09 ]
適当な答えで
からかうことはある

120 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 13:48:43 ]
>>114
演算子は、構文解析時は通常の演算子として解釈され、
実行する時はメソッドとして動作する。
ただそれだけのこと。



121 名前:110 mailto:sage [2010/05/25(火) 14:24:33 ]
>>12
サンクソ
Unko.method_defined? :seeds_of_watermelon
でインスタンスメソッド有無判定いけました。

>>113 >>117
レシーバーがインスタンスの場合はrespond_to?でいけるんですね。勉強になりました。

ありがとうございました

122 名前:110 mailto:sage [2010/05/25(火) 14:35:44 ]
Railsのドキュメントをついでに読んでたんですが、
動的に評価されるメソッド、例えばActiveRecordでいえば
dynamic filnderやdyanamic scopeを使うときは
method_defined?では引っかからないようで、
その辺が考慮されてるrespond_to?を使うのがよいようです。

注意した方がいいかと思います。

>> Unko.method_defined? :find_by_id
=> false
>> Unko.respond_to? :find_by_id
=> true

123 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 15:59:59 ]
>>122
Unko.method_defined? :find_by_id
がfalseなのは、method_defined? がインスタンスメソッドを調べるものなのに、find_by_idがクラスメソッドだから。


124 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 06:33:56 ]
今日からお前はルビ夫だ。

125 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 16:45:48 ]
Hashのエントリを複数削除したいときはHash.deleteを複数回実行しないといけないですか?
引数は1つか取らないのでなにかうまいやり方はないですか?

126 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 17:00:14 ]
じゃああたしルビ子ね。と書こうと思ったがそれは結城さんだっけ。

127 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 17:04:45 ]
>>125 hash.delete_if {|k,v| list.include?(k) } くらいかのー

128 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 17:06:36 ]
keys = [:a, :b, :c]
hash.reject!{|k,v| keys.include? k }

結局ループするなら
keys.each{|k| hash.delete k }
でいいじゃんと思う

129 名前:125 mailto:sage [2010/05/26(水) 17:25:03 ]
>>127-128
投稿後,条件にあるものだけコピーすればいいじゃん!
と思っていましたが,うまく行きました.
なんで,deleteが複数引数とらないんだろう・・・・

130 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 17:50:37 ]
ぶっちゃけいらね、ループやdelete_ifで事足りない状況のほうが稀だし
>>129だって結局いらなかったんだろ?



131 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 18:53:28 ]
>>129
>なんで,deleteが複数引数とらないんだろう・・・・
同意する。delete_allとかあっても良さそうなもんだけどね。

132 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 19:01:06 ]
ハッシュの delete_all ってなんか意図しない削除が起こりそうで恐いよw
たまたま同じ値を持ってた削除されるべきでないエントリまで誤爆で削除しそう

133 名前:110 mailto:sage [2010/05/26(水) 23:41:08 ]
>>122
x dynamic filnder
o dynamic finder

>>123
> find_by_idがクラスメソッドだから。
あれ?
singleton_methosで出てこないような

>> Hoge.singleton_methods.include? "find"
=> true
>> Hoge.singleton_methods.include? "find_by_id"
=> false
>> Hoge.find_by_id Hoge.first.id
=> #<Hoge id:1 (以下略)

134 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 17:39:55 ]
concatとか破壊的メソッドなのに!が付いてないのがあるのはどういう基準ですか?

135 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 17:53:40 ]
>>134 !ありとなしの両バージョンを用意するならば、 より注意が必要なほうを!ありとせよ、という基準。 破壊的かどうかとは必ずしも一致しない。 concatは1バージョンしかないので!を付ける必要がない。

136 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 18:10:53 ]
>>135
あぁ、そういう基準でしたか
!は破壊
?は真偽
と勝手に思い込んでました
ありがとうございます

137 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 18:26:11 ]
常に破壊に!を付けるなら
代入も!=になっちゃうぞ

138 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 18:26:19 ]
もうひとつ質問させてください
配列aとbを連結して新たな配列cを作りたい。ただし、aとbは破壊しないこと。という場合

c = a.clone.concat b

と書くのが最小でしょうか?
concatが破壊しなければ(2つあれば)、スマートに書けたのになぁというのがさっきの質問につながっています

レファレンス見た限りそれっぽいのはなさそうでしたが、もっと簡潔に書けたりしますか?


と、ここまで書いてから
c = a + b
が頭に浮かびました。Rubyさん素晴らしいっす…

139 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 18:32:37 ]
図工

140 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 23:05:26 ]
ptn="(あ|い|う|え|お)"
scanv = Array.new
if (条件式) then scanv = "かあきくけこ".scan(ptn) end
これでscanvがnilになってしまうのですが、原因分かりますか?
ちなみにputs "1"などとして条件式がtrueになることは確認しました。



141 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 23:19:52 ]
>>140
scanに渡してるのが正規表現でなく文字列になってるよ
一度マニュアル読むべき

142 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 20:47:04 ]
gemから取得したJSONを使って遊んでいるのですが、
取得したデータを一旦JSONファイルにして(例えば {"name":"ORE","text":"ひまなう"} とかいった内容)
別のプログラムからそのファイルの一行一行をJSON.loadしていっているのですが、
load後の日本語の末尾が \343\201\206とかになってしまいます。ひまな\343\201\206 のように
JSONファイルはUTF8、プログラム内ではとりあえず、文字コードは指定していません。
吐き出しているJSONファイルではちゃんと日本語がみれるのでloadの時に何か起こっているとは思うのですが
JSONではないデータにすればいいのかもしれませんが、どーしても気持ち悪くて解決したいのですが
何が起こっているかわかりますか?よければ対処策を教えてもらえますか?




143 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 20:55:41 ]
>>142
文字列の最後の1文字だけが化ける状態なら、
ruby 1.8.7-p249の p (というかString#inspect)のバグ。
実データがおかしくなっているわけではない。

putsしてみて。


144 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 22:24:41 ]
state = "福岡|熊本|大分|宮崎|鹿児島"
val = kyushu.scan(/#{state}/u)
とすると、
["福\345\263\266"]
となります。実行するときに-Kuとしているのですが、なぜでしょうか?

145 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 22:27:49 ]
>>144
>>143

146 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 22:37:55 ]
>>145
真上にあったのに気がつきませんでした。ありがとうございます

147 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 00:12:30 ]
このバグはやくなおしてほしいね

148 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 01:26:21 ]
>>143
まさにそのバージョンです。ありがとうございます。
テスト出力の時はpまたはppを使ってましたので気がつきませんでした。
>>147さんが言ってるように早く直してほしいですね。


149 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 17:24:34 ]
自分も>>148 と同じようにruby 1.8.7-p249だった。
うぶんちゅ10.04でruby1.8.7のデフォがp249か・・・
ruby1.9やruby1.9.1だとsqlite3-rubyつかったらもじばけすんし・・・・
自分でビルドするしかないかな・・・

150 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 19:00:44 ]
sqlite3-rubyも1.9のエンコード対応完了版はあるんだが、
まだリリースされてないからな……





151 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 22:49:35 ]
解析したリストを作ってそのリストに載っていないファイルを解析しようと思ってます。
解析したリストの配列とそのディレクトリの中にあるファイルのリストの配列を作って
その差分ではみ出したモノを解析して、解析が終わったら解析したリストに追加。
というモノを書いているのですが、
ディレクトリには1.dv 2.dv 3.dv 解析済みのリストlistには
1.dv
2.dv
が入っています
中身をコピーしたファイルを新しいファイルとして*.bbbと作るようにしています.
しかし、新しいファイルが作成されません。見てもらってもよろしいでしょうか?

endfile_list = Array.new
File.open("list") {|f|
while l = f.gets
endfile_list << l.chomp
end 
}
filelist = Dir::glob("*.dv");fileanaly = filelist -endfile_list
File.open("list","a") {|ll| ll.puts("\n#{fileanaly}")}
fileanaly.each {|dd|
File.open("#{dd}") { |abc|
addlist = "#{dd}.bbb"
File.open("#{addlist}","w") { |de|
while aaa = abc.gets
de.puts("#{aaa}")
end
}}}

152 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 23:22:19 ]
3.dv.bbb なら普通に作成されたけれども。
あと fileanaly.join("\n") じゃないか?

153 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 23:37:48 ]
>>152
ほんとですね。もう一度やったら作成されました
末尾にjoinすればOKっすね。ありがとうございます。

154 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 23:57:36 ]
>>153
末尾にjoin?

152で指摘しているのは
× ll.puts("\n#{fileanaly}")
○ ll.puts(fileanaly.join("\n"))
てことじゃないのか

155 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 00:36:39 ]
&&と||の優先度は違うのに
どうしてandとorの優先度は同じなの?
色んな状況妄想して考えてみてもこの仕様の意図が分からない。

156 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 00:57:26 ]
記号の方はC由来、and/orは a() or b() and c() が直観と同じ順序でコールされるようにってことじゃないか?

優先順位最低のand/orに上下関係がないからこそ
順位から開放されて限りなく文に近い存在になっているとも思う

157 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 01:07:40 ]
記号の由来はPerlじゃないのかなあ
でも、ぐぐるとandのほうが高優先度らしいんだよね

158 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 01:28:18 ]
>>157
Perl由来で合ってるし、Perlも&& ||は優先度が高く、and or の優先度は低い。


159 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 01:29:40 ]
まちげーた。andとorの間の優先度か。
Perlはandのほうが高いな。


160 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 01:44:39 ]
どの言語でもandとorではandの方が高いのが普通だ



161 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 02:07:13 ]
じゃあ&&の優先度も||より高くすべきだな

162 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 03:36:32 ]
>>154
了解です!

163 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 11:22:39 ]
>>161
どの言語でもそうだろ
Prologみたいにandやorがデフォルトで用意されていなくて
自分で好きに優先度指定できるというケースはともかく

p(true && true || true && false)     → true
p(((true && true) || true) && false)   → false

p(true && true || false && false)     → true
p(((true && true) || false) && false)   → false

164 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 14:45:35 ]
うん、いやだからrubyも&&の優先度を||より高くすべきじゃないかと。
java辺りから来た人は絶対間違えるだろ。
エラーが出ないわけだし原因不明のまま時間が経って埋もれてしまうこともあり得る。

165 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 14:47:27 ]
ああ間違えた&&と||じゃなくてandとorの話ね。

166 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 14:48:48 ]
Rubyでも && > || だという話なんだが

167 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 14:51:36 ]
って、and/or 演算子の話をずっとしてたのか
最初から読んでなかった
すまん

168 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 17:09:25 ]
Javaから来た奴は&&と||使うだろうから間違うことは無いだろ
敢えてand/or使う場合は仕様ぐらい確認するだろうし

169 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 17:50:49 ]
いや、and/or は優先順位があるだろう、という先入観はあるだろ。

170 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 18:58:55 ]
そんなくだらん先入観にも対応しなきゃならんのか



171 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 20:19:41 ]
JavaとRubyは別物だよね?
だったら、それぞれの言語を使うときは言語仕様を調べるのが当然だと思うけど。
使う人間の先入観とかどうでもいいわ





172 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 21:01:20 ]
じゃあ、
3 + 4 = 12
3 * 4 = -1
3 / 4 = 7
3 - 4 = 0
のような演算子を定義しても問題ないな

173 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 21:13:25 ]
言語仕様として明記されているのであれば、問題ない。
その言語仕様を見て使う気になるかどうかは利用者次第だけど。


174 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 21:26:01 ]
C言語プログラマが全員JIS X 3010の規格票を持ってるかというと
そんなことはないわけで。

175 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 21:27:18 ]
ネットで普通に見れるけど

176 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 22:36:54 ]
+ - * /の対応はかなり直感的だから、特段の理由なしにそれを裏切るのはよろしくないが
and orの優先順位はそこまで直感的でもないからな。その違いは大きい。

細かいところが言語ごとにちびちび違っててうざいんだよという主張は分かるが。

177 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 23:17:38 ]
Pascalから移行したときに
pascalのつもりでand or 使ってたら、意図と違うけっかになりまくったな。
&& ||に置き換えたら何事もなく。
当時のことはよくは覚えていないが、優先順位だったのか。

178 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 23:45:17 ]
まあ正直&&/||やand/orあたりは
優先順位に頼らず括弧をつけるようにしてるので
何事も無いけどな

179 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 01:20:05 ]
改行が含まれる文字列同士を比較してdiffの結果みたいな文字列を得るライブラリがないかと思い、
gem search diff すると37個マッチしました。

$ gem search diff -r | grep -i diff
adamsanderson-ruby_diff (0.2)
alexyoung-rsyncdiff (0.0.2)
algorithm-diff (0.1)
artemv-diff_to_html (1.0.3)
briandoll-rails_framework_diff (0.0.1)
※全部で37行

名前から推測・除外しつつ自分で一つ一つ試していく方法以外に、
目的のライブラリに早く辿りつくコツなどはないでしょうか?

できれば、ただ目的にあったものを見つけるのではなく、
・テストがしっかり書かれている
・コードが綺麗
・メンテナンスされている
ものを探し出したいです

180 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 06:04:30 ]
>>179
意図とはちょっとずれるけど、おれもdiffのいいライブラリが知りたい



181 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 09:29:42 ]
あんまりいろいろ入れたくないので、cucumberが依存しているdiff-lcsだけ入れてる。


182 名前:デフォルトの名無しさん [2010/05/31(月) 22:53:30 ]
GzipReaderオブジェクトってflockできないけど
GzipReaderでファイル読む場合flock(LOCK_SH)しなくていいの?

f = open(file)
f.flock(LOCK_SH)
g = GZipReader.new(f)
しろってこと?

183 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 02:02:23 ]
>>179
結果的にはよくわからなかったがレス

俺のRubyGems探すときのパターン

RubyGemsで主流っぽいものを探すときは、まずはRuby Toolbox探すと
ジャンル別によく使われているのがさがせて楽・・・
The Ruby Toolbox - Know your options!
www.ruby-toolbox.com/

なのだがサイト内検索してもdiff関連のものはなかった

それとRubyGems.org だとダウンロード数順で検索もできるので、
search | RubyGems.org | your community gem host
rubygems.org/search?query=diff

・・・と目立ったのはdiff-lcsくらいか

あとは"ruby diff" とか "ruby diff github" とかでググてgithubで新しい目のものを見つける
(見つかりにくい時は googleで”1年以内”の範囲とかで検索したりする)

でも、結局diff-lcs以外特によさそうなの見つからんな・・・
力になれずスマソw


あと、gem search diff で "-" がついているものはgithubのものが含まれている可能性が高い
ので注意な(-dつけて詳細表示したら Homepage: の欄でわかるはず)
今はgithubはRubyGemsの生成やってなかったと思ったが、以前にgithubがgem作れたときのものが

 ユーザー名-プロジェクト名

みたいな感じでgemが作られて残っている(今はrubygems.orgに移行してるはず)

184 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 02:05:52 ]
>>179
ついでにrspecやcucumberは差分表示のオプション合ったと思って依存gem調べたんだが、
>>181の通りdiff-lcsって奴だったわ
とりあえず diff-lcs 試してみたらどうかなあ

185 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 09:35:25 ]
diff-lcsが目立ってるのは単にcucumberと一緒に入ってくるせいだろうから、
評判がよいとは限らないところが気になるけど。こればかりは使って試すしか。


186 名前:179 mailto:sage [2010/06/01(火) 11:13:55 ]
>>183
今までライブラリ探すときは gem search だけを使ってたんですが
紹介していただいたサイトではなんとダウンロード数やスコアまで出てるんですね。

どこでスコアなどを管理しているのかわかりませんが、
もし gem と連携できるなら gem search でオプションつけてダウンロード数やスコアまで出して
ソートしてくれたり、個人的な贅沢な希望としては「何に依存させているか」みたいな情報も
まとめてサクッと出ると嬉しかったりします。

が、とりあえずは、diff 以外でもライブラリ探しに苦労したりするので、
Ruby Toolbox などのサイトの存在を知れただけでも助かりました。ありがとうございます。

diffの方はdiff-lcsから試してみます。

187 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 15:28:34 ]
itpro.nikkeibp.co.jp/article/NEWS/20100531/348631/
IPAが大学などでOSS教育を実施、報告書とRubyなどの教科書を無償公開

Rubyの初級、中級向けのテキストが公開されてたので。
組版されたものだからディスプレイで読むにはまったく不向きだが、、、
印刷して紙ベースで読みたい人にはいいかもしれんね。

188 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 16:35:55 ]
UUIDを生成するクラスくらい標準でついてて欲しいんですけど。

189 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 16:39:01 ]
>>188
ほんとだ。標準ではないのか。
これはたしかに標準でほしいよなあ。

ほかに標準で欲しいライブラリってなにがあるかな。
JSONパーサが1.8.7でまだ標準じゃないのにはがっかりだ。

190 名前:デフォルトの名無しさん [2010/06/02(水) 00:28:14 ]
範囲を現すリテラルの「..」と「...」ですが、直感的には点が多いほうが終了位置を含むと思ったんですが実際は逆でした

1..5 #5を含む
1...5 #5を含まない

これって何か納得できる理由とか、何かの影響でこうなったとかありますか?



191 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 00:52:49 ]
直感っていうのは人によって違うからなんともいえないな。
1..5は自分にとっては、5を含むのが自然と感じる。


192 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 01:02:33 ]
リテラル自体は、まあたぶん例によってPerl由来
Perlにも二つ点と三つ点があるんだっけ?
挙動の違いは……Perlerを召喚しないとちょっと分からんが

193 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 01:16:53 ]
少なくとも昔のperlに三つはなかった
perlのは以下だから、未満はruby拡張ということなんだろう

194 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 01:49:13 ]
Perlの3ドット ... はラクダ本初版(4.019対応)で見た気がするけどな。

195 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 01:49:31 ]
よく使う方が短くあるべきとか

196 名前:194 mailto:sage [2010/06/02(水) 02:00:48 ]
Perl 4.036のソース取ってきてman見てみたが .. しか載ってなかった。
俺がPerlを使わなくなる以前には ... は存在してたから、5の初期かなぁ。


197 名前:194 mailto:sage [2010/06/02(水) 02:17:30 ]
気になったのでもう少し。
5.003_97e に "Mention '...' operator in precedence table" というのがあった。
ドキュメントに追記したってだけなので、実装はそれ以前なのだろうな。

ellipsisとしての ... が多すぎて探せやしねぇ。



198 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 02:19:04 ]
終点じゃなくて始点を含めない版がほしいときがある

199 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 03:15:09 ]
二つの点の次が終点
1..5なら5まで
1...5なら.まで。ここで.は後続の5の一つ前の値4

200 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 07:20:49 ]
なんでやねん



201 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 11:33:01 ]
>199 ありがたや。これでもう迷わない

202 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 13:43:10 ]
>>186
rubygems.orgの検索の方はダウンロード数でソートされてるけど、
>>185もいうように、diff-lcsでいえばcucumberやrspecの依存関係になってて
意識せずに一緒にダウンロードされてるはずだから、評判がよいとは別か

Ruby Toolboxの方は、githubで開発がさかんかどうかみたいなのも評価対象みたいだ。

確かにgemコマンドでRuby Toolboxみたいなスコア出すオプションあって、
ソートしたりできても面白な

203 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 07:20:10 ]
AutoCADのAddTextサンプルコードと同様のことを
WIN32OLEを使ってやろうと考えています。

VBAサンプルコード
Sub Example_AddText()
Dim textObj As AcadText
Dim textString As String
Dim insertionPoint(0 To 2) As Double
Dim height As Double
textString = "Hello, World."
insertionPoint(0) = 2: insertionPoint(1) = 2: insertionPoint(2) = 0
height = 0.5
Set textObj = ThisDrawing.ModelSpace.AddText(textString,
insertionPoint, height)
End Sub
---------------------------------------------------
require 'win32ole'

textString = "Hello, World."
insertionPoint = WIN32OLE_VARIANT.new( [2, 2, 0], WIN32OLE::VARIANT::VT_ARRAY)
height = 0.5
ac = WIN32OLE.connect('AutoCAD.Application')
ac.ActiveDocument.ModelSpace.AddText(textString, insertionPoint, height)
---------------------------------------------------
C:/dev/ruby/confirmation/rbB0.tmp:7:in `method_missing': (in OLE
method `AddText': ) (WIN32OLERuntimeError)
OLE error code:80070057 in <Unknown>
<No Description>
HRESULT error code:0x80020009
例外が発生しました。
from C:/dev/ruby/confirmation/rbB0.tmp:7:in `<main>'
Complete(1)

204 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 09:58:34 ]
逆引きRubyのトップの意味がわからず使い方がわかりません。
house for sale in eaton ohioとはどういう意味なのでしょうか?

205 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 10:16:02 ]
どうみてもwiki spam

206 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 12:07:33 ]
>>204
スパム
スパムフィルターみたいなのとかcaptchaとかついてないのかね

戻そうと思ったんだが履歴ないからわからん。他のwikiみたいに履歴見れないの?



207 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 12:24:03 ]
うわ。俺がさっき直したのに、もう差分も残ってない...

絶え間なく書き込み攻撃くらってるなこれ。

208 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 12:30:08 ]
スパムフィルタのないwikiを認証なしでネットで運用することは
裸でブエノスアイレスを歩くことに等しい

hikiだっけ?スパムフィルタプラグイン(captcha推奨)とか認証プラグインないの?
手っ取り早い方法はhttacessとかでPOSTだけでもBasic認証かければいい

209 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 20:42:31 ]
スパムだったのですね、危うくURL踏むところでした。ありがとうございます。

210 名前:203 mailto:sage [2010/06/03(木) 20:48:25 ]
どうすればVBAで配列を渡しているところを、
RubyのWIN32OLEで渡せるか教えて下さい。
ruby は 19.1 です。



211 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 22:10:09 ]
>>208
なくもないけど、逆引きRuby自体、今よりのどかな時代に作られたもので、
設置した本人もHikiの開発自体から遠ざかって別の人が引き継いでいるような
状態なので、気付いていないんじゃないだろうか。

212 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 22:11:21 ]
あ、補足。
逆引きRuby Wikiのあるnamaraii.comのたけうち氏がHikiの原作者です。


213 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 22:34:46 ]
>>210
insertionPoint = WIN32OLE_VARIANT.new( [2, 2, 0], WIN32OLE::VARIANT::VT_ARRAY|WIN32OLE::VARIANT::VT_R8)
かな?

AutoCADのことは知らないけど

214 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 07:49:02 ]
裸でブエノスアイレス歩くとどうなるんですか

215 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 13:58:54 ]
>>214
ご安心下さい。サッカーのワールドカップやる予定のような国なので、
別に危険はありません

216 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 20:52:41 ]
superclass メソッドの名前はどうして super_class じゃないんですか?

217 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:33:50 ]
用語としては superclass でひとつの単語だから
Wikipedia の見出しにもなってる。subclass なんかもそう

en.wikipedia.org/wiki/Superclass_(computer_science)

218 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 00:46:47 ]
マジでか

219 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 01:11:22 ]
そうだったのかー
間違えたけどいまさら直せなくなってるのかと思ってた

220 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 01:12:07 ]
super classだと・・・「特上クラス」?



221 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 01:57:26 ]
Windowsにてrmagickをインストールしたのですが、
require 'rubygems'; require 'rmagick'するとエラーがでて使えません

プロシージャ エントリ ポイント SelectiveBlurImageChannel がダイナミック リンク ライブラリ CORE_RL_magick_.dll から見つかりませんでした。


インストールには rubyforge.org/frs/?group_id=12&release_id=39888 のrmagick-win32にあるRMagick-2.12.0-ImageMagick-6.5.6-8-Q8.zipをダウンロードし、
中の rmagick-2.12.0-x86-mswin32.gem を
gem install -l rmagick-2.12.0-x86-mswin32.gem
してgemをインストールしつつ同梱の
ImageMagick-6.5.6-8-Q8-windows-dll.exe
をインスコしました。


aruy.net ≫ Blog Archive ≫ RMagickをインストールした。
aruy.net/archives/221

を参考に念のため
Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)とSP1用のものもインストールしてみたのですが
同じエラーがでてしまいます。

何か対処法はないものでしょうか?

222 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 02:00:34 ]
221
環境書き忘れました
ruby 1.8.7 win32です


223 名前:221 mailto:sage [2010/06/05(土) 02:15:12 ]
>>221-222
ruby/bin の中に旧バージョンの CORE_RL_magick_.dll 等のImageMagickのDLL
が入っていたようです。
削除したらうまくいきました

ImageMagick-6.4.8-Q8のDLLがごっそり入っていたようです。
なんでかはわかりませんが、
ImageMagickを別途インストールしてパス通すのが面倒くさくてコピーしてたのかもしれません


224 名前:203 mailto:sage [2010/06/05(土) 13:53:52 ]
>>213
行けました。ありがとうございます!

225 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:34:09 ]
Rubyでキーワード抽出のライブラリありますか?
言語処理で遊んでみようと思ったのですが、検索しても
PERLのLingua::JA::SummarizeやTermExtractばかり引っかかってしまいます。
そこの処理の部分だけPERLで書くのもRuby勉強したばっかで辛いです.

226 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:26:46 ]
>>225
形態素解析って奴だろ?
chasen,kakasi,mecabとか

227 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:27:46 ]
形態素解析から一歩進んで、自動要約みたいなことをやりたいんじゃないかな?
自動要約Rubyで検索すると論文が1個ひっかかるけど、その研究者のサイトは今つながらないみたいだ。

228 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 00:49:04 ]
Enumerableってなんて発音してる?
いなむれーぶる?
えにゅめらぶる?

正しさより、Ruby界隈でのメジャーな発音知りたいな

229 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 08:54:28 ]
いにゅめらぶる


230 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 15:09:47 ]
イーナムイレイブル?



231 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 16:53:50 ]
稲無 選ぶれ

232 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 19:45:03 ]
Base64のライブラリってどうなっちゃったの?
=?iso-2022-jp?B?〜はもう変換できないの?

233 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 21:01:47 ]
require 'base64' できると思うけど?
nkf の -m オプションは今でもデフォルトだけど?

234 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 00:38:37 ]
それがダメなんですよ
昔は行けたのに

235 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 09:48:01 ]
どのバージョン?

236 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 19:44:31 ]
1.9

237 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 20:06:32 ]
俺の環境で

ruby19 -v -rbase64 -e 'p Base64.encode64 "foo"'

ruby19 -v -rnkf -e 'p NKF.nkf "-w", "=?ISO-2022-JP?B?GyRCJCIbKEI=?="'

どちらもできてるけど?(nkfのオプションは端末の環境に合わせて)

238 名前:デフォルトの名無しさん mailto:sage [2010/06/10(木) 20:11:33 ]
てか、できないってどうできないんだよ。
エラーでてるならエラー書けよ






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

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

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