Ruby 初心者スレッド Part 22at TECH
Ruby 初心者スレッド Part 22 - 暇つぶし2ch1:730
08/09/15 17:25:21
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

   【Ruby1.9 は不安定な開発版であり初心者には全く向きません】
   【最新安定版の Ruby1.8.7 の使用をお勧めします】
    ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。
      1.9 の新機能の一部が利用可能なので初学者にお勧めです。
    ※ただし十分安定しているとは言えないので
      プロダクション環境での利用にはお勧めしません。

関連スレやURLは>>2-8あたりを見てください。Ruby on Railsの質問はRailsスレへ。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・モジュール名やエラーメッセージでググる
 ・マニュアルで引っかかったクラスの記述を探す URLリンク(www.ruby-lang.org)
 ・FAQを一応読む URLリンク(www.ruby-lang.org)
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(自力で訳さずなるべくそのままで)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

2:730
08/09/15 17:27:18
【よくあるしつもん】
Q:
いちからRubyを始める初心者向けのRuby入門書は何がおすすめでしょうか?

A:
プログラム作成の初心者だったら
「たのしいRuby 第2版 Rubyではじめる気軽なプログラミング」
URLリンク(www.amazon.co.jp)

他の言語経験があるんだったら
「プログラミングRuby 第2版 言語編」
URLリンク(www.amazon.co.jp)
「初めてのRuby」
URLリンク(www.amazon.co.jp)


3:730
08/09/15 17:31:36
■前スレ
Ruby 初心者スレッド Part 21
スレリンク(tech板)

■関連スレ
Rubyについて Part 32
スレリンク(tech板)

Rubyの宿題教えてください。2限目
スレリンク(tech板)

RubyCocoa 初心者質問【Leopardバンドル記念】
スレリンク(mac板)

【ActiveScript】RubyをWindowsで使うスレ【GUI】
スレリンク(tech板)

Ruby on Rails のスレ が
スレリンク(php板)

デザパタ + Python/Ruby/Smalltalk part2
スレリンク(tech板)

魁け! Ruby 1.9.X
スレリンク(tech板)

Rubyについて(アンチ専用) Part003
スレリンク(tech板)

4:730
08/09/15 17:33:59
■公式/非公式関連リンク
Ruby Home Page
URLリンク(www.ruby-lang.org)

Rubyリファレンス(よくサーバーエラーになります)
URLリンク(www.ruby-lang.org)
URLリンク(www.ruby-doc.org) (英語)

リファレンスのHTMLヘルプ版配布
URLリンク(elbereth-hp.hp.infoseek.co.jp)
# Windowsで便利

Ruby FAQ
URLリンク(ruby-lang.org)

Programming Ruby - The Pragmatic Programmer's Guide
URLリンク(www.ruby-doc.org)
# 好評書籍をWebで公開中、ただし英語

逆引きRuby
URLリンク(www.namaraii.com)


5:730
08/09/15 17:35:01
RAA - Ruby Application Archive
URLリンク(raa.ruby-lang.org)

RubyForge
URLリンク(www.rubyforge.org)
# Rubyのアプリやライブラリが検索できる

GitHub RubyGems
URLリンク(gems.github.com)
URLリンク(github.com)
# 最近は RubyForge より GitHub が人気

日本Rubyの会 公式Wiki
URLリンク(jp.rubyist.net)
# メニューに表示されていない埋もれた情報ページ多数

Rubyist Magazine - るびま
URLリンク(jp.rubyist.net)
# コードレビューが好評

Ruby hotlinks 五月雨版(日記やblogのアンテナ)
URLリンク(www.rubyist.net)

Rubyの本一覧
URLリンク(www.ruby-lang.org)

<rubyXML/>
URLリンク(www.rubyxml.com)

Matzにっき(Ruby作者の日記)
URLリンク(www.rubyist.net)


6:730
08/09/15 17:36:20
■最近できたWiki
Ruby 初心者スレッド Hiki
URLリンク(starlet.s145.xrea.com)

Ruby Portal
URLリンク(ruby.morphball.net)

■プレゼンテーション
Ruby会議2008
URLリンク(jp.rubyist.net)
URLリンク(www.nicovideo.jp)

Ruby会議2007
URLリンク(jp.rubyist.net)
URLリンク(www.nicovideo.jp)

日本 Ruby カンファレンス 2006
URLリンク(jp.rubyist.net)
URLリンク(jp.rubyist.net)


7:730
08/09/15 17:40:14
■他板の関連スレ

【カルト】Ruby開発者Matz【モルモン】
スレリンク(prog板)

【Ruby/SDL他】Rubyでゲーム制作・総合スレッド
スレリンク(gamedev板)

RubyによるWebプログラミングについての質問
スレリンク(php板)

8:デフォルトの名無しさん
08/09/15 21:36:40
1乙
ただいま

9:デフォルトの名無しさん
08/09/15 21:40:43
スレ立て乙です
いきなり質問していいですか?
プロパティファイルの扱いのようにメッセージや設定を管理したい場合の
実装について一般的にどうするのかが知りたいです

定数クラスを作るべきかなと考えたんですが
パラメータを渡して組み合わせたものをメッセージとして表示させる場合に
警告が出て気になります。みなさんはこういう場合どう実装していますか?

10:デフォルトの名無しさん
08/09/15 22:48:07
>>9
>定数クラスを作るべきかなと考えたんですが
それでいいと思うけど。Configクラスとか。

>パラメータを渡して組み合わせたものをメッセージとして表示させる場合に
>警告が出て気になります。みなさんはこういう場合どう実装していますか?
どんな警告?


11:デフォルトの名無しさん
08/09/15 23:08:38
>>10
ああ、それで良かったんですか

警告は定数の値を変更しようとすると出るアレです

12:デフォルトの名無しさん
08/09/15 23:16:52
>パラメータを渡して組み合わせたものをメッセージとして表示させる場合に



>警告は定数の値を変更しようとすると出る

との間に1万光年の距離がある。



13:デフォルトの名無しさん
08/09/15 23:21:00
>>9

class Config
 attr_accessor :host, :user, :password
end
CONFIG = Config.new

と定義しておき、user-config.rb とかなんとかで

CONFIG.host = 'localhost;
CONFIG.user = 'root'
CONFIG.password = 'naisyo'

とかすればいいんじゃね?知らんけど。



14:デフォルトの名無しさん
08/09/15 23:27:51
最近はYAMLがいいんじゃないかね。


15:デフォルトの名無しさん
08/09/16 01:32:31
ネットのWEB上のテキストから
文字列を取得してきて、
変数aに格納するのってできる?
どうやるの?

URLリンク(www.abc.com)

に「あいうえお」って書いてあって、
その「あいうえお」を変数aに入れたい。

16:デフォルトの名無しさん
08/09/16 01:46:58
open-uri

17:デフォルトの名無しさん
08/09/16 02:05:09
>>15
require 'open-uri'
a = open('URLリンク(www.abc.com)') {|f| f.read }
これでいいんだっけ?間違ってたら教えて。

18:デフォルトの名無しさん
08/09/16 09:07:25
open-uriのブロックはわりと無意味

19:730
08/09/16 15:00:47
質問です

ActiveRecordってスレッドセーフなんですか?

20:デフォルトの名無しさん
08/09/16 19:04:42
>>19
多分違うけど、2.2からはthread safeになるかもしれない
ただRuby1.8だとthread safeにしてもあんまりうれしくない

21:デフォルトの名無しさん
08/09/16 21:37:01
今、RubyでiPhone用Webメーラーを作りたいんだけど

#!/usr/local/bin/ruby
require 'net/imap'

HOST = "imap.softbank.jp"
USERID = "takeshi_h"
PASSWORD = "take924"

imap = Net::IMAP.new(HOST)
imap.login(USERID, PASSWORD)
imap.select("INBOX")

まで書いてみたもののその先が分からず挫折中・・・
ここからsubjectだけ抜き出すにはどうすればいいのか詳しい人いたら教えてくださいorz

22:デフォルトの名無しさん
08/09/16 23:07:20
なあ、マシン名、ユーザーID、パスワードはマジなのか?
ここまで露骨だと釣りっぽい気もするが。

23:デフォルトの名無しさん
08/09/16 23:41:58
すみません、書き込んだ瞬間気付いてパス変えました;;

誰かのサンプルを参考にしちゃろうとググってみても全くヒットしないですね・・・
もしかするとRubyでimapっていうのがあまりお勧めできないのかしら
公式マニュアルだけでは何とも理解に時間がかかるので、書籍を買った方が良さそうですね

24:デフォルトの名無しさん
08/09/16 23:44:44
本なんて買うだけ無駄

25:デフォルトの名無しさん
08/09/16 23:51:13
>>23
ぐぐったらこんなのあったけど。ダメかな。
URLリンク(www.caliban.org)

26:デフォルトの名無しさん
08/09/17 00:15:04
use the source >>21


27:デフォルトの名無しさん
08/09/17 00:15:52
IMAPについての知識はあるんだよね

28:デフォルトの名無しさん
08/09/17 02:47:45
rubyって自分のパスワード2ちゃんに
書くようなマヌケが多いの?

29:デフォルトの名無しさん
08/09/17 07:23:00
Rubyなんて使ってるとアホになるよ

30:デフォルトの名無しさん
08/09/17 12:42:52
自動プロクシ設定スクリプト環境でのrubygemsの使い方を教えて下さい

31:デフォルトの名無しさん
08/09/17 13:36:39
パソコンのハードディスクに
「a.txt」
ってファイルを作る。


↑これってできる?

32:デフォルトの名無しさん
08/09/17 15:16:56
>>31
できる

33:デフォルトの名無しさん
08/09/17 16:21:04
>>31

File.open("a.txt", "w"){|f|
# ここでゆっくり好きな処理していってね!
}


34:デフォルトの名無しさん
08/09/17 18:00:02
ruby -rfileutils -e "FileUtils.touch('a.txt')"


35:デフォルトの名無しさん
08/09/17 20:53:08
ruby -e "(/mswin32|mingw|cygwin/===RUBY_PLATFORM)? `echo off > a.txt` : `touch a.txt`"

36:デフォルトの名無しさん
08/09/17 23:11:17
手続きに手続きを渡して実行させたいです。
具体的には
def funcall(fun,x)
return fun(x)
end

def inc(x)
return x+1
end

>> funcall(inc,4) #=>5
というような結果が欲しいです。
lambdaやProcで包んで.callすればできるというのはわかるのですが、
もっと簡単に行う方法ってないものでしょうか。

37:デフォルトの名無しさん
08/09/17 23:14:14
send(:symbol, args...)じゃ簡単にしたことにならないん?


38:デフォルトの名無しさん
08/09/17 23:25:23
>>37
サンクス!!

39:デフォルトの名無しさん
08/09/18 08:22:27
>>33-35

どれが正しいの?
なんでコードだけ張って
日本語の解説が無いの?

40:デフォルトの名無しさん
08/09/18 08:34:19
どれも正しい、>>35はちょっとイタダケナイけど
日本語の解説はリファレンスマニュアルでも読んどけ

41:デフォルトの名無しさん
08/09/18 10:49:11
>>36
Ruby的には
def funcall(x)
return yield(x)
end

x = 10
funcall(x) { x + 1 }
なんだよね。
でも関数合成的に使うには向いてないかも。

42:デフォルトの名無しさん
08/09/18 17:52:57
Enumerable#all? と Enumerable#any? について質問です。
要素が空の場合はどういう結果になるのでしょうか?

手元のrubyでは all? が true 、any? が false を返すようですが
マニュアルには要素が空の場合については書かれていないので
要素が空の場合は処理を分けた方が無難でしょうか?

43:デフォルトの名無しさん
08/09/18 19:14:28
>>42
数学的にはその挙動であってるはずだから、マニュアルに書いてなくても、その挙動を信じていいと思うよ


44:デフォルトの名無しさん
08/09/18 19:16:10
あ、これはマニュアルの不備だね
論理的な動作ではなく、Enumerable の内部処理に依存してる






って 1.8 でそれかよ

45:デフォルトの名無しさん
08/09/18 22:39:17
rubyの勉強をはじめてみたいのですが、
まず、なにとなにとなにを
ダウンロードしてインストールすればいいでしょうか?

OSはWindowsです

46:デフォルトの名無しさん
08/09/18 22:59:48
「ruby windows インストール」でぐぐるといいとおもうよ

47:sage
08/09/18 23:41:06
1.8.7にしたら
[BUG] object allocation during garbage collection phase
などというものがでるようになってしもうた。

GC と win32ole あたりに原因がありそうなんだけど
再現するコンパクトなコードがつくれませんの。

48:デフォルトの名無しさん
08/09/19 00:04:07
スレッド使ってるとよく出ますな

49:デフォルトの名無しさん
08/09/19 01:51:19
>43-44
ありがとうございます。そのまま行きます。

50:デフォルトの名無しさん
08/09/19 03:30:54
FAQだったらすみませんが、質問です。

Rubyのprivateメソッドやインスタンス変数は、Java や C++ のような完全な
隠蔽ではないようです。親クラスのprivateメソッドやインスタンス変数を、
子クラスで知らずに上書きしてしまう可能性があります。

この上書きを避けるには、どのようにしたら良いのでしょうか?親クラスの
privateなメソッドやインスタンス変数の名前をすべて把握する以外にないの
でしょうか?

特に、トップレベルで関数を定義することが、Objectクラスにメソッドを追加
することと同じなので、気づかずに既存のメソッドを上書きしてしまいそうで
不安です。


51:デフォルトの名無しさん
08/09/19 03:33:16
開発者同士でしっかり話し合う

52:50
08/09/19 04:18:50
Rubyの言語仕様や、コーディングの定石による対処法をお願いします。

特に不慣れなフレームワークを使っているときなどに、既存の関数の誤った上
書きによってトラブルが起こるのを避けたいのです。


53:デフォルトの名無しさん
08/09/19 08:21:08
適当に思いついたのを書いてみる

インスタンス変数の上書きは継承ではなく委譲を使うことで回避
フレームワークの都合等で継承せざるを得ない場合は、できるだけ
特殊な変数名を使う
> @HOGE @___hoge___ @projNo_hoge ...
これらの変数もHashや構造体等で入れ子にする事で定義数を減らす
> @projVar[:item] @projVar.item ...

メソッドの上書きはデバッグモード(ruby -d)の出力を確認
独自クラス定義前と定義後のclass#methods(等)の結果を比較

54:デフォルトの名無しさん
08/09/19 08:34:32
Win2000でrubyをはじめたいんだけど、
なんでパッケージが6つもあるの?

どれを入れたらいいのか、
わからないじゃん

55:デフォルトの名無しさん
08/09/19 08:45:37
言語仕様が無いのでいろんなものができてしまいました。

56:デフォルトの名無しさん
08/09/19 09:10:02
rubyでCGIゲーム作るって
イバラの道?

57:デフォルトの名無しさん
08/09/19 09:18:01
てか>>50のやり方はスクリプトの書き方(ライブラリの利用の仕方)としてなんか間違ってね?という気はするんだが

58:デフォルトの名無しさん
08/09/19 09:20:47
>>56
どんなゲーム作りたいかにもよるが、CGIべったりなPHPとかで作るよりはめんどくさい

59:デフォルトの名無しさん
08/09/19 10:06:20
>>58
だとしたらCGIゲーム部分(ブラウザで見る部分)はPHPで作って、
専用ブラウザはruby(RPGツクールVX)ってしたほうがいいかな。

でもそれだと2つの言語を覚えないといけないんだよね。

60:50
08/09/19 11:05:33
>>53
丁寧なご説明、ありがとうございます。ですが、結局「気をつける」以外に無
いようで、少々残念です。

アンダースコアで始まるなどの特殊な変数名は、逆にフレームワーク側も衝突
回避を意図して多用している可能性があり、結局、変数名にプロジェクトごと
のprefixをつけたり、 instance_variables でこまめに確認したりするしかな
いように見えます。

しかしこれでは、グローバル変数しかなかった時代と変わらないと思います。
むしろ、メタプログラミングによって変数名やメソッド名がgrep検索できなく
なったRubyコードでは、名前の衝突の危険性は増しているとすら思います。

PHP5には完全なprivateがあり、Pythonにはマングリングという仕組みがあり
ます。Rubyにそれに類するものがないのは意外でした。

しかしRuby1.9でも変更される予定は無いようなので、実用的にはさほど困ら
ないものなのかもしれません。

ruby -d は知りませんでした。活用させていただきます。


>>57
53さんもおっしゃるとおり、フレームワークに継承を強制される場合をお考え
ください。
URLリンク(www.gesource.jp)
> フレームワークを使っていると、知らないうちに基底クラスのメソッドをオー
> バーライドしてしまい、予期せぬバグに悩まされたりします。


61:デフォルトの名無しさん
08/09/19 11:05:54
rubyインストールしてみた。
ActiveRuby1.8.7いれてみた。

次、エディタは何使えばいい?

62:デフォルトの名無しさん
08/09/19 11:16:11
>>61
RDE

63:デフォルトの名無しさん
08/09/19 11:35:29
ActiveRubyっていうのをいれたんだけど、
本当はOne-Click Rubyっていうのもあったの?

どっちがよかったの?
なんで統一しないの?
なんでインストーラーがいっぱいあるの??

64:デフォルトの名無しさん
08/09/19 11:41:03
One-Click RubyのほうがPATHもセットしてくれるからいいと思う

65:デフォルトの名無しさん
08/09/19 11:41:48
>>60
不味いよね~という話にはなっていて、いくつかの解決策も検討されているようだが
まだ手が回ってないっぽい
URLリンク(www.rubyist.net)

66:デフォルトの名無しさん
08/09/19 11:42:57
1.9は大きな変更しないってことになったから

67:デフォルトの名無しさん
08/09/19 11:55:21
>>63
ActiveScriptRubyは元々の目的が違うからじゃないかな
そもそも、本来は初心者向けのセットじゃないし

68:デフォルトの名無しさん
08/09/19 11:55:27
>>62
RDEいれてみた。abcって表示できた。
これでいいのかな。

69:デフォルトの名無しさん
08/09/19 12:24:08
URLリンク(kazato.run.buttobi.net)

RDE
文字が重なるんだけど、どこの設定を見ればいい?

70:50
08/09/19 12:27:01
>>65
ありがとうございます。なるほど、問題視はされているのですね。

私自身はRailsを業務で半年ほど使った経験があるのですが、クラス継承にお
いて名前空間が独立していないことを途中で知って、たいへん怖くなりました。
自分の書いてきたコードが安全かどうか、確証がないと思ったからです。

しかし、「初めてのRuby」にはこのことは何も書いてありませんでした。ネッ
トでもそれほど多くの声は見つかりません。Ruby コミュニティでこれはあま
り重大な問題だとは考えられていないということなのでしょうか?

しかし、>>53さんのおっしゃるようなことに絶えず注意し続けなければならな
いなら、コーディングに手間がかかって大変だと思うのですが。

ほかにも、クラスが通常はオープンで、requireによってどんどん書き換えら
れていくなど、Rubyは名前空間についてはきわめて楽観的な言語だという印象
があります。できる限り名前空間を独立させるPythonとは、まったく逆の方針
に見えて興味深いです。


71:デフォルトの名無しさん
08/09/19 12:32:55
>>50
local visibilityとかいう新機能とは違うのかな。
ぶっちゃけ1.9使ったことないから適当だけど。。

あと、最近気付いた妙な事例。
URLリンク(www.ruby-lang.org)
> Matrix#[i, j] = x
> (i,j)要素をxに変更する。
> このメソッドは、matrix.rbに定義されていない。以下に、その定義と使用例を示す。

なんて書いてあるけど、実は
URLリンク(svn.ruby-lang.org)
> alias set_element []=
> alias set_component []=
> private :[]=, :set_element, :set_component
なぜかprivateで定義してあり、、でも使われていなくて、、、みたいな謎が

72:デフォルトの名無しさん
08/09/19 12:35:51
>>69
そのテキストエリアで右クリック - [設定] - [フォント]を適当にいじる
大きくするなり、変えるなり

73:デフォルトの名無しさん
08/09/19 13:08:58
>>71
Rubyの数学モジュールは存在が適当
マトモな人は使わない

74:デフォルトの名無しさん
08/09/19 13:12:34
>>70
実行時にほぼ全てをevalで改変できるのはRubyの特徴
だからこそ、初期モックアップに向いていて、大規模開発に向かない

75:デフォルトの名無しさん
08/09/19 13:15:01
「○○ができる」という長所と、「○○ができてしまう」という短所に関しては、
どうしても共存していく以外無いものなぁ。

76:デフォルトの名無しさん
08/09/19 13:15:59
>>74
だよなあ
まあ、制御できたら用途によっては便利だろうなとは思う

というより、そういうのは単にそのフレームワークが行儀悪くてマニュアル不足で邪悪なだけなのでは…
「普通」は、トップレベルにメソッドを定義したりしないし、自身を継承させることを是としない

77:デフォルトの名無しさん
08/09/19 13:20:28
>自身を継承させることを是としない
どんなアホ設計だよ

78:デフォルトの名無しさん
08/09/19 13:21:18
>>76
> 自身を継承させることを是としない
あ、やっぱそうだよね、「カスタマイズは継承で」っていうモジュール設計はよくないよな

79:デフォルトの名無しさん
08/09/19 13:22:35
>>73
実用性の面ではそんな雰囲気を感じるけど、
まあ検討材料としてはw

80:デフォルトの名無しさん
08/09/19 13:23:07
c++のほうがまともだな

81:デフォルトの名無しさん
08/09/19 13:25:02
>>73
別に誰も損しないんだから、もうちょっと良くなってもいいのにね、あれ

82:デフォルトの名無しさん
08/09/19 13:51:21
ちなみにMatrix#[]=云々はこのスレから

URLリンク(thread.gmane.org)
> You can't even divide a Vector by a scalar quantity (you have to v*1/a instead. :/).

いやまあそれはどうでもいいようなw

83:デフォルトの名無しさん
08/09/19 14:21:45
>>72
できた。

84:デフォルトの名無しさん
08/09/19 14:26:59
rubyをインストールして、
エディタも動くようになったんで、
初心者向けのWEB上の入門サイトを
読みたいんだけど、どれを読めばいい?

85:デフォルトの名無しさん
08/09/19 14:30:44
URLリンク(www1.tf.chiba-u.jp)

86:デフォルトの名無しさん
08/09/19 15:24:16
URLリンク(kazato.run.buttobi.net)

ここのフォントの大きさを、
最初から大きくしたいのですが、
どこの設定をいじればいいですか?

いまは、エディタを起動するたびに
設定しなおしてます。

これを、最初からというか
設定を保存したいのです。

一回ごとに毎回、毎回設定するの
めんどいですからね。

87:デフォルトの名無しさん
08/09/19 15:33:45
RDEで「こんにちは」って打ったら、
めちゃめちゃに文字化けするんですけど??

それでいて、実行すると、ちゃんと表示されるんですけど??

88:デフォルトの名無しさん
08/09/19 15:37:13
RDEってもしかしてPerlでも使えるの?

89:デフォルトの名無しさん
08/09/19 15:47:14
>>87-88
聞くよりもまず自分で模索するようにしてください

文字化けはたぶんエディタのフォント設定のせい。perlでも一応使える

90:デフォルトの名無しさん
08/09/19 15:48:14
>>87
は自分で調べたら解決したのでもういいや

91:デフォルトの名無しさん
08/09/19 15:48:55
>>89
perlで使うときは、perlのexeはどこに設定するの?
もしかして、rubyのexeのところにいれるの?
キモー

92:デフォルトの名無しさん
08/09/19 16:40:15
a = open('URLリンク(www.2ch.net)') {|f| f.read }

これが動きません。
ひょっとして、ウチだけ???

93:デフォルトの名無しさん
08/09/19 16:41:34
require 'open-uri'
a = open('URLリンク(www.2ch.net)') {|f| f.read }
print a;



↑これで動きました。

マジで感動。

94:デフォルトの名無しさん
08/09/19 17:46:17
長い行で改行入っちゃうときはどうしたらいいの?

print
"a";

95:デフォルトの名無しさん
08/09/19 18:06:34
>>94
ここはあなたの質問場ではありません

96:デフォルトの名無しさん
08/09/19 18:51:05
RGSS2なんですけど、requireが使えなくて、
必ず、
Kernel.require("C:\\1.rb")

とかって書かないといけないんです。それで、
open-uri.rbを開くと、その中で、また
require uri
とかって書いてあるじゃないですか。またrequireです。
ここでエラーが出るので(requierは使えないよっていう)
すべてのライブラリの中のrequireをKernel.requireに
置き換えないといけないのかな、、、って今思ってますけど、
どう思いますか。

97:デフォルトの名無しさん
08/09/19 19:02:19
RGSSは内部動作が独自改変されたRubyなので、普通のRubyの知識では太刀打ちできない
RGSSのマニュアルなりなんなりを読んでくれ

98:21
08/09/19 20:33:30
出張のため返信が遅れてしまいすみません
>>25
おお!ありがとうございます!
しかし見てみましたがかなり複雑な感じなんですね・・・
やっぱ色んな状況を想定したり文字コードなんかの処理等でこんなになってしまうんでしょうか
とりあえず俺のような初心者には無理っぽいですのでiPhoneで同じようなこと考えている人がいないか聞いてみることにします

ありがとうございましたおまいら

99:デフォルトの名無しさん
08/09/19 20:53:37
>>96
def require(file)
Kernel.require file
end
ってしておけばKernelいらないと思う。
あとRGSSなら同人ゲ板のツクール質問スレのほうがよさそう。

100:デフォルトの名無しさん
08/09/19 21:21:47
windowsでrailsをテスト的に使って見ていますが、
"ruby script/generate ..."とか"rake db:migrate ..."
とかスクリプトを実行すると、とんでもなく長い間待たされます。
どうしてこんなに遅いんでしょうか?
Core2Duoを使っていますが、20秒以上も待たされるので。。。。

何かよい解決策はないでしょうか?



101:デフォルトの名無しさん
08/09/19 21:42:18
>>100
windowsとrubyの相性が悪いから。
ruby script/generate をすると、
1. 新しいrubyプロセスを起動し、
2. railsと関連ライブラリをすべて読み込んでから
3. scaffoldを実行するから、
そりゃ遅い。とくに 2. が。

102:デフォルトの名無しさん
08/09/19 21:42:25
>>94
明らかに文が終わらないことが分かる場合、たとえば
開いたカッコがまだ閉じてないとか、二項演算子の第2項をまだ書いてないとか
の場合は語句(トークン)の間で行を変えていい。
そうでない場合(そこまでが文として正当に解釈しうる場合)は
¥ (円記号またはバックスラッシュ)を書いてから改行。


103:デフォルトの名無しさん
08/09/19 21:42:53
>>98
>>21のあとに

require 'kconv'
fetch_result = imap.fetch(1..-1, "BODY[HEADER.FIELDS (SUBJECT)]")
print fetch_result[0].attr["BODY[HEADER.FIELDS (SUBJECT)]"].tosjis

ってしたら一通目のメールの件名がSJISで表示された。
公式マニュアル内をsubjectで検索かけたらすぐわかったので
落ち着いてじっくり読めば大抵のことは解決するのでは。
つーかnet/imapの本なんてなくね?

104:デフォルトの名無しさん
08/09/19 21:48:36
>>>103
そもそもIMAPについての知識がロクに無いんだろ
IMAPについての知識があるならnet/imapだけでできるはず
そういう場合は「めんどくさいけどどうすればいいですか」という聞き方になる

メール関連は簡単に扱って欲しくないから、これくらいでいいと思う

105:デフォルトの名無しさん
08/09/20 01:17:39
>>101
開発に使っているマシンは圧倒的にwinが多い
そのwinでまともに動かないrailsは、
やはり個人の趣味サイト作りでしか使ないのか?

海外では非常によく利用されているpythonのdjangoは、
winでもストレス無く使える。


106:デフォルトの名無しさん
08/09/20 01:38:14
運用にwinなんて使わないだろ?


107:デフォルトの名無しさん
08/09/20 01:40:59
>>105
>開発に使っているマシンは圧倒的にwinが多い

Railsだと、世界的にはMacかもしれんぞ。(要調査)



108:デフォルトの名無しさん
08/09/20 01:59:53
>>107
わざわざRailsを使うためにMacを買うか?
しかも会社ならなおさらだ。
だからRailsは圧倒的に個人しか使わないんだろうー
やはりちょっとしたサイトはPHP、
中規規模以上はJavaに落ち着いているんじゃない。


109:デフォルトの名無しさん
08/09/20 03:35:19
個人 →   rails
数人 →   PHP
中規模 → JAVA

110:デフォルトの名無しさん
08/09/20 07:16:22
>>105
>開発に使っているマシンは圧倒的にwinが多い
Rails使いはMacのほうが多い
RailsConf行ってみな、冗談じゃなくてほぼ全員Macだから。
いまだWindows使っているのはJava屋さんだろう

111:デフォルトの名無しさん
08/09/20 07:37:09
MacBookとかよくあんな重くて高いマシン持ち歩けるよな・・・
無印 2.27kg       ¥129,800~¥179,800 ←重すぎ!
Air  1.36kg       ¥229,800~¥325,400 ←高すぎ!
Pro  2.45kg~3.08kg ¥249,800~¥329,800 ←重すぎ高すぎ!

もっと実用的なモデル出してくれたら考えるわ

112:デフォルトの名無しさん
08/09/20 07:42:08
RGSSなんだけど、
ツクールXPがRGSS1で
ツクールVXがRGSS2なのね。

そんで、RGSS1はrequire の使用がOKで、
RGSS2はKernel.require って書かないとだめなのね。

そんで、rubyに付属のライブラリ見ると、
中味が全部、require 'uri'
こういう形式で書いてあるのね。

そんで、そのままRGSSで書くと、エラーになるの。

113:デフォルトの名無しさん
08/09/20 07:44:04
require 'uri'    ←(1)
↑この形式だとエラーが出る。

require("C:\\uri.rb")  ←(2)
↑この形式だとエラーが出ない。

絶対指定だとエラーがでない。
相対指定?だとエラーがでる。
(2)で書いても、その1行だけはエラーにならないけど、
その行で呼び出したライブラリの中味は
(1)の形式で書いてあるので、そこでエラーになる。

どうしたらいいかな?

114:デフォルトの名無しさん
08/09/20 07:46:14
もうプログラミング辞めたほうがいいな

115:デフォルトの名無しさん
08/09/20 07:58:10
URLリンク(questionbox.jp.msn.com)

一応ここにも書いてあるけど
いったいどうしたらいいかな。

116:デフォルトの名無しさん
08/09/20 08:06:06
RGSSでのライブラリrequireの方法

   $: << File.expand_path(".")
   require "ファイル名"
   Game.exeを起動したディレクトリにあるライブラリをロードする
   "."を相対パスに変更すれば、好きなディレクトリを指定できる


↑あとこれをよくみかけるんだが、
どういうことなんだろう??

117:デフォルトの名無しさん
08/09/20 08:16:18
>>112
上でも書いている人がいるが、RGSSはRubyを改造したもので、
改造部分に関するエラーは俺たちには全くわからない

エラーが出る理由も、わざわざそうしている理由もわからない
売り物なんだし、改造した人に聞け

118:デフォルトの名無しさん
08/09/20 08:29:19
RDE

出力をDOSプロンプトにするのってどうやるの?

119:デフォルトの名無しさん
08/09/20 08:48:23
puts 'abcde ' * 20000

たかがこれだけの出力するのに何秒かかってんだよ

perlだったら3秒で出るのに。

120:デフォルトの名無しさん
08/09/20 08:50:20
Rubyに早さを求めるやつなんて初めて見た

121:デフォルトの名無しさん
08/09/20 08:50:25
>>119
まあそのへんはコマンドプロンプトに文句言ってくれ
Rubyの処理自体は3秒くらいで終わってる

122:デフォルトの名無しさん
08/09/20 09:05:04
RDEで出力を下でなくて
DOSプロンプトに出すにはどうしたらいいの?

123:デフォルトの名無しさん
08/09/20 09:12:05
Windowsではirbとかでもイライラするな
irbは返り値の表示の設定ができるが

124:デフォルトの名無しさん
08/09/20 09:19:25
最初からDOSプロンプト立ち上げて、
そこから直接コマンドラインで実行したら
3秒でできた。
でもRDEから実行したいんよ。
どうしたらいいかな?
DOSプロンプトに出力する方法ね。

125:デフォルトの名無しさん
08/09/20 09:33:56
>>110
東京Ruby会議で「主にMac使ってる人」って質問で6~7割手をあげてたような気が

126:デフォルトの名無しさん
08/09/20 09:38:12
MacというかMacOSXとUNIX系開発言語(って何?)との親和性の高さはガチ
Windowsでもプログラミング環境エディションとか出せばいいのに

127:デフォルトの名無しさん
08/09/20 09:45:10
まあみんなカッコよく安楽にプログラミングしたいんだよ
でなけりゃあどべ使い以外にMacが売れる理由がないし、Emacsが死なない理由がないし、Rubyが支持される理由もない

128:デフォルトの名無しさん
08/09/20 11:32:09
TextMateだっけ?あれが人気あるらしいね。開発に。
Windowsにも E Text EditorとかIntypeとしてクローン作られてるっぽいけど。

129:デフォルトの名無しさん
08/09/20 11:56:29
>>128
クローンはどいつもこいつもシェアウェアでな

いや、別にいいんだが、入金めんどい
成功したら安価版とか作ってくれ

130:デフォルトの名無しさん
08/09/20 11:59:26
日本はベクターにないと買うの面倒でかなわん

131:デフォルトの名無しさん
08/09/20 13:42:29
str = 'hoge'

これを説明するのって、「ローカル変数 str に 文字列 'hoge' を

   代 入 す る



でいい? 厳密には代入ではなくて他の表現が妥当だとかそういうのはない?

132:デフォルトの名無しさん
08/09/20 13:48:28
…めんどくさいので代入でOK
最近の議論とか空気とかを元にしてる初めてのRubyではどう書いてある?

とりあえず、誰も文句は言わないと思うよ
束縛するとか言う言い方してる奴がいたら鼻糞ほじっとけ

133:デフォルトの名無しさん
08/09/20 13:51:57
オブジェクトとインスタンスってRubyではどう使い分けますか?

134:デフォルトの名無しさん
08/09/20 13:59:47
>>131
つうか代入ってなによ?

135:デフォルトの名無しさん
08/09/20 14:06:38
>>134
データと名称の関連付け。なまえをつけること。Naming convention。
Rubyでは初期化宣言と同時に行われるのでちょっとわかりにくい。

というのでどう

136:デフォルトの名無しさん
08/09/20 14:23:59
なら「名前をつける」って説明の方が通りがいいんじゃねえか、とおもた。

137:デフォルトの名無しさん
08/09/20 14:27:35
RDEで実行を途中で止めるのってどうすればいいの?
ctrl+C押しても止まんないんだけど。

138:デフォルトの名無しさん
08/09/20 14:37:30
止めるボタンあります

139:デフォルトの名無しさん
08/09/20 14:38:26
緑△アイコンの実行ボタンの隣に、
□アイコンの強制終了ってあるでしょ

140:デフォルトの名無しさん
08/09/20 15:22:28
他の言語で代入という概念を知ってるなら代入でいいだろ。

a = Hoge みたいな表現が、名前付けなのは Haskell とかだけど、
そっちとは明らかに違うし。

141:デフォルトの名無しさん
08/09/20 16:59:07
RDEはうだつが上がらないし
RDTは糞重いし
もうEmacsしかないじゃないか!

142:デフォルトの名無しさん
08/09/20 17:20:29
>>133
クラスをインスタンス化したものがインスタンス

143:デフォルトの名無しさん
08/09/20 19:22:08
NetBeans使えば。

144:デフォルトの名無しさん
08/09/20 19:35:57
NetBeans以上に重いものなんてこの宇宙に存在するの?

145:デフォルトの名無しさん
08/09/20 19:36:51
責任,ですかね.

146:デフォルトの名無しさん
08/09/20 20:57:24
>140
他の言語っつってもCの代入とは明らかに違うだろうに。
Haskellの代入とも違うけどさ。

147:デフォルトの名無しさん
08/09/20 22:32:07
str = 'hoge'
のように代入された状態で str を使うと 'hoge' という情報を取り出せるという点では
どの言語もだいたい一緒だわな

148:デフォルトの名無しさん
08/09/20 23:27:20
Rubyだけしか使えないのはかっこ悪いのでphpを勉強する

if strpos('ABCDE', 'ABC'){
echo 'true';
}else{
echo 'false';
};

とか書いてみたんだが、どうやらelse部が実行されるらしい
strposは'ABCDE'の中から'ABC'の位置を探して返すんだが、整数の 0 が返ってて、0 はPHPでは偽なんだそうな
なんとなくがっかりさんだ
というか、Perl4 を勉強してたころは真偽判定ってどう書いてたんだっけ、覚えてないな

149:デフォルトの名無しさん
08/09/20 23:31:42
…そういうのはチラ裏スレでやれ

Ruby は nil や false が返って来ない限り真だからな
真偽判定はどんどん書けて気楽だ

150:デフォルトの名無しさん
08/09/20 23:38:04
そういやずっと前から思ってたんだけど、Perl とかで整数の 0(や文字の "0")が真偽値の偽とみなされるようになったのってなんで?
ヌル文字とかの関係? 関係ないよね?

151:デフォルトの名無しさん
08/09/20 23:48:35
スクリプト言語の初心者スレっぽくてよろしい

>>150
0 を偽にしなかったら 1 を偽にしなきゃいけなくなるじゃないか(-1 でも可)

152:デフォルトの名無しさん
08/09/20 23:49:01
さすがRubyスレ
知能が低い

153:デフォルトの名無しさん
08/09/20 23:50:28
>>150
Cから発想すればふつー0が偽になるんだろう。
CにもPerlにもboolean型は無いしな。

154:デフォルトの名無しさん
08/09/21 05:19:55
URLリンク(www1.tf.chiba-u.jp)

これってサブルーチンと何が違うの?

155:デフォルトの名無しさん
08/09/21 07:53:29
Cで関数のポインタを扱うのとさして変わらない。

156:デフォルトの名無しさん
08/09/21 08:00:34
>>155
定義された場所のスコープ(Binding)を受け継いでいるところ

157:156
08/09/21 08:05:56
アンカ間違えだけど、指摘と受け取ってもらっても結構
×155
○154

158:デフォルトの名無しさん
08/09/21 08:23:27
>>154
手続きオブジェクトは原理的にはサブルーチン、雰囲気では関数ポインタでおk
オブジェクトになってしまってるとこと、>>156の言うように定義時の環境が保存されてるとこが一般的なものとは違うけど

サブルーチンオブジェクトと呼んでもよかったシロモノで、Rubyではたまたま手続きと呼んでるだけに過ぎない
プロシージャ(Proc-edure)とサブルーチンに決定的な違いがないのと同じ

159:デフォルトの名無しさん
08/09/21 09:31:58
>>146
> Cの代入とは明らかに違うだろうに。

どう違うの?

160:デフォルトの名無しさん
08/09/21 11:17:02
>>133
適当。分かりやすい基準はたぶん無い

161:デフォルトの名無しさん
08/09/21 11:22:28
rubyのxamppはどこにあるの?
rubyのCGIとか、railsとかやってみたいんだけど。

162:デフォルトの名無しさん
08/09/21 11:39:21
>159
根本的には同じデータのコピーなんだが
Rubyは基本的に「オブジェクトへの参照」を扱うため
代入が基本的に「参照のコピー」になるのに対し
C/C++は参照というクッションが必ずしも存在せず
いきなり「オブジェクトそのもの」を扱うことが出来てしまうため
(参照を扱うなら明示的に参照を扱うよう書く必要がある)
代入が「実体のコピー」(Rubyでいうa=b.dupに近い…がこれも同じではないな)になることが普通にある

163:デフォルトの名無しさん
08/09/21 11:45:01
>>161
InstantRails

164:デフォルトの名無しさん
08/09/21 12:04:46
>>162
構造体(オブジェクト)のコピーが起こること、を問題とするわけね。

変数の実体が値である(C/C++)か、変数の実体が参照である(Ruby/Java/Python...)か、
という点が違いであって、名前に実体を関連付ける、という「代入」で問題ないんじゃないかと。

165:デフォルトの名無しさん
08/09/21 12:56:02
>>150
>そういやずっと前から思ってたんだけど、Perl とかで整数の 0(や文字の "0")が真偽値の偽とみなされるようになったのってなんで?
>ヌル文字とかの関係? 関係ないよね?

Perlは考え方としてCの延長にあるから、booleanがない(つまりfalseがない)からかわりに 0 を偽としている。
RubyはLispやSmalltalkに影響を受けているから、nilとfalseだけを偽にしている。
nullじゃなくてnilってところがポイント。

166:デフォルトの名無しさん
08/09/21 13:01:01
0 が選ばれた理由にはなってないな
ビットの 0 と 1 で 0 が negative だったから、が答かと

167:デフォルトの名無しさん
08/09/21 13:30:26
"0" が偽である理由としてはちょい苦しいかもな
"0" が 0 に同一視されてると見るか

168:デフォルトの名無しさん
08/09/21 13:32:33
perlとかphpは型が曖昧だからまあそんな挙動もするでしょう

169:デフォルトの名無しさん
08/09/21 13:37:26
あっちの言語って型付けが弱いんじゃなかったっけ
自動変換されるという便利だが怖い仕様・・・・・・

170:730
08/09/21 13:40:32
perlもphpも糞ですよ

171:デフォルトの名無しさん
08/09/21 13:49:43
>>148
めんどくさいよな
というかRuby(が参考にしたLisp系列)が条件文のこと優先して動作を作ったというのが正しいのかも

172:デフォルトの名無しさん
08/09/21 14:00:41
0が偽のくせに「真としての0」が返って来る関数があるというのがまあ変といえば変
変態だったら誉め甲斐もあるんだが、ただ変なだけでは…

173:デフォルトの名無しさん
08/09/21 14:04:12
まあ便利なんだけどねPHP

174:デフォルトの名無しさん
08/09/21 14:08:33
それは認めるし、普及言語はどれも大なり小なり批判されるものだが
この挙動は……

175:デフォルトの名無しさん
08/09/21 14:09:24
他の言語を学ぶという姿勢は賞賛に値する
Rubyしかできないとかマジ生ゴミ

176:デフォルトの名無しさん
08/09/21 14:27:08
>>174
うん、だから、偽といえるかどうかではなく、そもそも型が同じであるかどうかを一緒にチェックする
PHP の ==(否定は!=) での比較は単に値が等しいことをチェックするが、 === は型も等しいことをチェックする(否定は!==)

>>148でしたい処理は

if (strpos('ABCDE', 'ABC') !== FALSE){
echo 'matched';
}else{
echo 'unmatched';
};

とか書くのが素直
!= で比較すると 0 が整数であるという情報がチェックに用いられないので常に結果が偽になってしまう

このへんは strpos のマニュアルにもサンプルコードつきで警告として載ってたりする
URLリンク(jp2.php.net)
個人的には Ruby の gsub の挙動が極悪なのと似たような構造上欠陥じゃないかと思う

177:デフォルトの名無しさん
08/09/21 14:31:32
あー、gsubも最初に用意されてる引数の構文の挙動が気難しくてブロックが推奨だったな

178:デフォルトの名無しさん
08/09/21 15:42:20
まぁ値が数値型にも文字列型にもなるのはawkからの伝統だしな

179:デフォルトの名無しさん
08/09/22 02:23:34
>>163
ありがとう。できたよ。
クッキングなんとかがうごいた。

で、次、これの開発ってどうやればいいの?

180:デフォルトの名無しさん
08/09/22 03:37:13
railsのIDEは何を使えばいいの?

181:デフォルトの名無しさん
08/09/22 07:16:08
いい加減、本買うかぐぐるかしようぜ。

182:デフォルトの名無しさん
08/09/22 10:27:50
おっと質問の仕方が悪かったかな。
数あるIDEの中で、どれを使えばいいのかということ。

183:デフォルトの名無しさん
08/09/22 10:32:37
>>182
どれも糞

184:デフォルトの名無しさん
08/09/22 10:34:30
機能的にはNetBeandsがかなりがんばってる感じはするがどの程度実用に耐えるかは知らん。

185:デフォルトの名無しさん
08/09/22 10:38:09
>>183でFA

186:デフォルトの名無しさん
08/09/22 10:45:14
どうせ補間とか望めないからどれ使っても大して変わらん

187:デフォルトの名無しさん
08/09/22 10:48:14
Emacsのような単なる単語文字列としての略語展開が一番マシという困った結論に…

188:デフォルトの名無しさん
08/09/22 10:52:09
NBのコード補完はかなり強力。いつまでもema糞なんぞにしがみついてないで一度試してみるといい。

189:デフォルトの名無しさん
08/09/22 10:57:22
NetBeansの補完は、まあ頑張ってるほうだとは思った
多少いい加減なのは仕方ない

190:730
08/09/22 11:01:46
関数とかクラスが畳めるエディタが良いな。

191:デフォルトの名無しさん
08/09/22 11:04:19
>>190
関数って何ですか???

実際上はEclipse+プラグインかNetBeansかEmacs/Vimくらいしかないんだから順に試しとけ
Javaの実行環境入れるのめんどくさい?もんくゆーな

192:デフォルトの名無しさん
08/09/22 11:07:51
CPUが2Ghz程度しかない前時代のマシンではロクに動作しないので新しいマシン買うこと

193:730
08/09/22 11:09:54
>>191

> 関数って何ですか???
まだそんなこと言ってるんですかw
関数と言い張りますよ。

194:デフォルトの名無しさん
08/09/22 11:15:51
別に言い張ってて構わないと思うよ
Rubyの用語集にも書いてあるくらいだから

195:デフォルトの名無しさん
08/09/22 11:18:09
>>193
クラスに関数があるのか?
あれは多くの言語で「いや、これを関数って呼ぶのはなんか違うな」と判断されてメソッドと呼ばれているものだと思うが
仲間外れはC++くらい?

196:デフォルトの名無しさん
08/09/22 11:22:19
C++はメンバ関数だっけか

ともあれ、Ruby学ぶ気ないんだなと思われるのは必定
それによって起こる結果については暴れないことだ

197:デフォルトの名無しさん
08/09/22 11:31:56
NetBeansとかは最初に何かするときに10秒くらいかかるのが切ない
同じことを2度目にするときは受忍範囲内なんだが

198:730
08/09/22 11:35:27
わかった。
副作用があるものは関数とは呼べないのは同意だけど、
だとしたらプロシージャと呼ぶべき。

それに、メソッドという呼び方をすることがRubyを学ぶことにつながるとは言えない。
俺はもうRubyの大体のことはわかったし、
実際にRubyを使って新しいWEBサービスを稼働させている。

199:デフォルトの名無しさん
08/09/22 11:40:45
>>198
なるほど、では君は初心者ではない
このスレから卒業し早々に立ち去りたまえ

200:デフォルトの名無しさん
08/09/22 11:43:59
ここは純技術的な質問をするスレであって実のところレベルの高低は問わないのさ。

201:デフォルトの名無しさん
08/09/22 11:45:53
>>197
arr = Array.new
arr.m

ここで「arrはArrayだからArray#mapでmap」という判断をして欲しい所存

202:デフォルトの名無しさん
08/09/22 11:48:21
>>201
補完試すたびにソース全体をevalしまくりだな

203:デフォルトの名無しさん
08/09/22 11:51:36
>>195
やっぱりAdaとかSimulaとか、あっちのほうの言語じゃ
メソッドは何が起源なんだろうか。Smaltalkとか?

204:デフォルトの名無しさん
08/09/22 11:59:10
>>201
え、そういう状況に即した判断をするのがIDEの便利なとこなんじゃないの?
そこで「mのつくメソッド全部から選んでね」と表示するんじゃEmacsと変わらんぞ

205:730
08/09/22 12:02:49
>>203
アランケイじゃない?
アランケイごときがsmalltalkを考えて、言語をわかりやすく庶民(笑)に伝えるために
オブジェクトにメッセージを送るという考えかたで説明したのが起源じゃないかな。
で、オブジェクトにメッセージを送る「方法」をそのままメソッドと呼んだだけ。
だから、別に「メソッド」は学術的に意味がある言葉ではない。

206:730
08/09/22 12:12:21
アランケイがもてはやされるようになったのはC++が出てから。
それまでは普通の胡散臭いタイプの学者のおっちゃん。
ただ単に運良くオブジェクト指向が流行ったからアランケイがもてはやされるようになったというだけ。
オブジェクト指向は流行るべくして流行ったというわけでもないから、
本当に運が良かっただけと言うべきだね。
アランケイの言葉を未だに使い続ける理由はそれだけだね。

207:デフォルトの名無しさん
08/09/22 12:26:13
はいはい初心者スレでつまんない自説自慢はやめてね

208:デフォルトの名無しさん
08/09/22 12:31:01
アランケイがもてはやされるようになったのはMacが出てから。
それまでは普通の胡散臭いタイプの学者のおっちゃん。
ただ単に運良くGUIが知られてアランケイがもてはやされるようになったというだけ。
SmalltalkタイプのGUIは流行るべくして流行ったというわけでもないから、
(ジョブズがたまたまAltoで動くSmalltalkシステム=暫定Dynabookを見て感動しただけで、
Alto向けにはSmalltalk以外にもStarとかのいろんなタイプのGUIがあったから)
本当に運が良かっただけと言うべきだね。
アランケイの言葉を未だに使い続ける理由はそれだけだね。

209:730
08/09/22 12:37:54
ともかく、メソッドをプロシージャと呼ぼうが、C言語的な意味で関数と呼ぼうが問題ないわけ。
メソッドと言わないと通じないというわけでもないしね。

210:デフォルトの名無しさん
08/09/22 12:52:54
>>209
どう呼んでもいいのならメソッドと呼べ
Rubyではそれをメソッドと呼ぶ

211:デフォルトの名無しさん
08/09/22 12:58:27
うむ、結論が出たな

212:デフォルトの名無しさん
08/09/22 14:22:12
>>210
どう呼んでも良いことを認めたら、それこそ自由に呼んで良いんじゃないの?w

213:デフォルトの名無しさん
08/09/22 17:38:14
じゃあ俺は各ソースファイルのことをモジュールと呼ぶことにしよう
どう呼んでも問題ないんだよな?

…とまあ、そういう話があるので

「Rubyで def や define_method で定義するのは全てメソッド
 一部メソッドは関数と呼ばれることがあるが
 それらも全てメソッドであることをお忘れなく」

程度にしておこうな
まあ、モジュールほど紛らわしい単語ではないから
関数と書かれていても解るが

214:730
08/09/22 18:30:43
うざいから消えてくれないかな

215:730
08/09/22 18:31:48
おまえがな

216:730 ◆KL6EsW0z.s
08/09/22 18:32:32
これで満足か

217:デフォルトの名無しさん
08/09/22 18:37:29
自覚してんじゃんwww

218:デフォルトの名無しさん
08/09/23 18:50:38
netbeansいれてみたんだが。

新規railsプロジェクト、で、
サーバーのところで
webrickってのしか選べないんだが、
これってなんなの?

WEBサーバーって言ったらアパッチじゃないの?

219:デフォルトの名無しさん
08/09/23 18:52:04
netbeansいれてみたんだが。

すでにinstantrailsで、railsはインストール済みなのだが、
「railsがインストールされていません」
というメッセージが出てきて、勝手にまたrailsをインストール
された。つまり、今パソコンにrailsが2つ入っているわけで
無駄このうえない。どういうこと?

instantrailsのrailsと、
netbeansのrailsと、使い分けろってこと?

220:デフォルトの名無しさん
08/09/23 19:16:13
「実行」ってやったら勝手に
ブラウザ起動して、
localhost:3000がアドレスに入って、
サンプルのページが出てきたんだが、
これってもしかして、netbeans起動中は
勝手にWEBサーバーも起動しているということか?

221:デフォルトの名無しさん
08/09/23 19:53:18
そろそろ解決してる頃だな
自分で調べりゃ早いのに

222:デフォルトの名無しさん
08/09/24 09:18:36
URLリンク(www.thinkit.co.jp)

このページに書いてあるとおりにやっても
うまくいきません

223:デフォルトの名無しさん
08/09/24 09:19:45
RadRailsの右下ペインの「Servers」を選択して
「AddressBookServer」を起動します。
ステータスが「Started」になれば、Web
サーバの起動は完了です。


↑こう書いてあるのですが、
ステータスが
starting...
で10秒たって、
stopped
になってしまいます。

なんでサーバーがスタートしないんでしょうか?

224:デフォルトの名無しさん
08/09/24 12:06:26
URLリンク(www.rubylife.jp)

とりあえずここまでできた。
IDEを使わずコマンドラインでやるのが
結局一番早かった。

225:デフォルトの名無しさん
08/09/24 12:57:46
うごいたーーーーーーーーーーーーーーー
ファイヤーウオールで
アプトナの通信をブロックしてたのが
原因だった

アプトナの通信を
「すべて許可する」
にしたら、マニュアルの通りに動いたーーーーーーーー
ガオーーーーーーーーーーーーーー

226:デフォルトの名無しさん
08/09/24 13:18:38
なんでwebrickとモングレの2つの
サーバーがあるの?

227:デフォルトの名無しさん
08/09/24 13:19:23
ルービーっておかしいわ

まずインストーラーの段階からして3つあるし、
エディターは3つあるし
IDEは3つあるし
サーバーは3つあるしで、

いいかげんにしろっての。

228:50
08/09/24 14:12:41
すみません。大変遅くなりました。都合でネットにアクセスできなかったもの
で。もう少しここで話をさせてください。

>>71
> local visibilityとかいう新機能とは違うのかな。
ちょっと調べてみたのですが、2006年ごろで話は止まっているのではないでしょ
うか?

>>74-76
すみませんが、私が問題視しているのはevalではないのです。evalを持つ言語、
オープンクラスを持つ言語に共通する点ではなく、Ruby固有のクラス実装を私
は問題視しています。

具体的には、以下のようなことです。

・あるクラスを継承するときに、親クラス名.methods などを頻繁に実行して、
存在するすべてのメソッドやインスタンス変数の名前を確認して、衝突を避け
なければならない。

・あるクラス内だけで使う、公開しないツールのようなメソッドを作れるよう
な名前空間がどこにもない。

これらを解決する方法が、コーディング規約によるプレフィックスのみという
のは、ずいぶん原始的で、JavaやC++に慣れた人なら不自由を感じると思うの
ですが。しかもRuby の大クラス主義で、既存のプロパティの数は膨大です。

そこで、皆さんがどのように感じておられるのか、お聞きしてみたいと思いま
したが、このスレの反応を見てもやはりあまり問題視されていないようで、こ
れはやはり意外でした。


229:50
08/09/24 14:13:55
>>76-78
私が言及していた、継承を必要とするフレームワークとは Rails のことです。
継承が危険だとはよく言われますが、、継承を多用しなければ Railsの簡潔さ
はかなり損なわれたことでしょう。

継承そのものが悪という視点には、あまり賛同できません。例えばプロトタイ
プベースの言語なら、委譲でも同様の問題が起こるからです。継承にせよ委譲
にせよ、他のオブジェクトへのプロパティの探索が自動的に行われる仕組みが
ある限り、この問題は必ず起こるでしょう。それは簡潔さとのトレードオフです。

しかしここでは、継承の善悪にはこれ以上踏み入りたくないのです。私は、
Rubyにおいては継承がいっそう危険になっているという点に、話を絞りたいです。

そもそも、継承の良し悪しや好き嫌いにかかわらず、私たちは業務でRailsを使
わざるを得ません。


>>76
トップレベルにメソッド定義というのは、フレームワークが強制するという話
ではなく、初心者プログラマが知らずに作ってしまう危険性を言っています。

トップレベルの関数がObjectクラスのprivateメソッドだというのは確かにう
まい仕組みだと思いますが、これを知っている人は、Ruby利用者の半数以下だ
と思います。これは直感的に予想しづらい、危険な仕様ではないでしょうか?

何も知らないでトップレベルに def object_id; 0 end などと書けば、すべて
のオブジェクトインスタンスのidが0になってしまうのです。そしてこれを書
くことは、プロジェクトに関わるどの人間にも可能なのです。


230:50
08/09/24 14:15:25
最後に、自分の印象ですが、

C++ ... アクセス、改変してはいけないものには、ユーザがアクセスする方法
が決して存在しない。

Python, Java ... アクセス、改変してはいけないものは、ユーザが意図しな
ければアクセス、改変されないが、意図すれば誰もが自由にアクセス、改変できる。

Ruby ... アクセス、改変してはいけないものを保護する方法が乏しく、ユー
ザが意図せずにアクセス、改変してしまうことがある。

つまり、私が問題にしているのは、アクセス、改変が可能かどうかではなく、
それを意図していないのに誤ってアクセス、改変してしまう危険についてなの
です。

この二者は、Rubyはフレキシブルな言語だという主張によって、しばしば混同
されがちだと思います。フレキシブルなのは結構ですが、自分の足を撃ちたく
はないのです。


以上です。長々と失礼しました。

231:デフォルトの名無しさん
08/09/24 14:28:43
>>230
あなたはC++、Python、Javaを10年くらいやりこんで、
それで今回、rubyに入ってきたような人なの?

かなりプロフェッショナルな印象を受けるが。

232:デフォルトの名無しさん
08/09/24 14:42:40
>>228-230
主張はだいたい合ってるし、正しい。
ただ、この問題がRubyで簡単に解決できるかというと、たぶん実装の都合で難しいんじゃないかな。
Pythonのmanglingだっけ、あれが欲しいとは思うんだけど、class_evalとかinstance_evalとかあるRubyでPythonと同じように実装可能かと言われると、分かんない。
ただ、manglingは(不細工ではあるけど)手動でできるので、mangling程度の隠蔽でよければ、手動で頑張ればできるということになる。手動だとほんと不細工だけど。

あとは、Rubyに限らずスクリプト系はどれもそうだけど、「問題があったら直せばいい」という精神をもつしかないと思うよ。
たしかにかぶる可能性はあるけど、そんなにしょっちゅうかぶることはないし、かぶったらかぶったで直せばいい。そんな感じ。


233:デフォルトの名無しさん
08/09/24 14:53:42
質問です。

rubyを始めようと
URLリンク(rubyforge.org)
からデスクトップにダウンロードしようとしたところ、99%でなぜか止まってしまいます。
cpuが100%になり、ブラウザが固まってしまいます。
186-26を落とそうとしても止まって「応答なし」の状態になってしまいます。
ダウンロードツールでもツールが固まってしまいました。
試しに他のサイトでダウンロードを試すと出来ました。

ruby186-27_rc.exeが取れません。

ブラウザはsleipnir2.8 OSはxp sp3です。
これは僕のPCの問題なのでしょうか?よろしくお願いします。


234:デフォルトの名無しさん
08/09/24 15:26:38
RoRってwebrickを作動させておけば
アパッチいらないんじゃん。

なんでアパッチインストールさせたのさ?

235:デフォルトの名無しさん
08/09/24 17:26:47
>>233
exeファイルをダウンロードしたから、それをアンチウィルスソフトがチェックしているんじゃない?
アンチウィルスソフトを一時的に無効にしてみるとか。

236:デフォルトの名無しさん
08/09/24 21:17:17
>>227
Java の IDE とアプリケーションサーバがいくつあるか調べてから文句言ってくれ。

237:デフォルトの名無しさん
08/09/24 21:21:36
>>229
以下を守れば大丈夫。
・自分の足を打ちがちな馬鹿にはコードを触らせない
・Railsのフレームワーク部分のコードは一通り読む

238:デフォルトの名無しさん
08/09/24 21:26:43
「エディターが3つ」の意味がわからない

239:デフォルトの名無しさん
08/09/24 21:31:05
>>238
エディターズレビューとかあんじゃん

240:デフォルトの名無しさん
08/09/24 21:37:20
音声データをデジタル化するときに
周波数16kHzだから
".unpack("s*") をつかって数値化はできたんだけど
数値が25000くらいあって。

その単語は1.3秒くらいなんだけど
単位がわからなくて。わかるひといますか?

241:デフォルトの名無しさん
08/09/24 21:41:32
> 周波数16kHzだから.unpack("s*") をつかって数値化
日本語でおk
てか周波数と整数のBit数ってなんか関係あるん?
書いててなんかありそうな気もしてきたが、たぶん関係ないんじゃね?

というかそういうバイナリ扱うのはRubyは不得意なんだが外部プログラム使えないのか

242:デフォルトの名無しさん
08/09/24 21:43:38
まあこれ完全に専門的な内容だから
知らない人かなり多いのかな。。。

243:デフォルトの名無しさん
08/09/24 21:46:22
まあRubyをメインにやるような人はふつう知らない
外部プログラム使えというアドバイスはけっこう正しいかと

244:デフォルトの名無しさん
08/09/24 21:47:27
デジタル化されてんじゃん

245:デフォルトの名無しさん
08/09/24 21:48:43
このデータをフーリエ変換しないといけないんだけど
単位がわからなくてはね。

246:デフォルトの名無しさん
08/09/24 21:49:30
240はアホすぎて自分が何をやりたいのか説明できてない

247:デフォルトの名無しさん
08/09/24 21:52:22
スレ違い

サウンドプログラミング4
スレリンク(tech板)

248:デフォルトの名無しさん
08/09/24 21:53:39
音声データから
特徴抽出したい。
これは普通ツールによって行われるが
今自分で作ってる

以上

249:デフォルトの名無しさん
08/09/24 21:55:39
247のスレで聞くからもういいです。
アホ扱いされるのなら

250:デフォルトの名無しさん
08/09/24 21:56:41
RIFFだったら URLリンク(www.kk.iij4u.or.jp) の通りかと。
フォーマットの仕様読んでわからないなら諦めたほうが。

251:デフォルトの名無しさん
08/09/24 21:57:16
まあ Ruby はあんま関係ないな
そのファイル形式の構造の問題だ

252:デフォルトの名無しさん
08/09/24 22:58:25
Rubyとは関係ないかもしれないのですが、Rubyで実装しているのでここで質問させてください。

普通、ウェブアプリで検索とかのリクエスト送って、リクエストの結果を
送ったページと同じページに表示させる場合、リクエストを送るのは同じページのメソッドにしたほうがいい?

なんか一緒に作ってる人が
Aページ⇒Bメソッド⇒Aページのメソッドって感じにしててどうなのかな?って思ったんです

なんかわかりにくくてごめん

253:50
08/09/24 22:58:28
>>231
プロフェッショナルとは恥ずかしくてとても言えませんが、経歴と年数はだい
たい当たっています。


>>232
大変参考になりました。ありがとうございます。

instance_eval等ですか。なるほどこれがあると、マングリングとの両立は難
しい気がします。念のため確認しましたが、Pythonには instance_evalに当た
る機能はないようです。

内部プロパティ名のコーディング規約は、なるほど手動マングリングが、不恰
好ですが現実的ですね。

最後に、名前は早々衝突しないし、もし衝突したなら直すというのが、Rubyコ
ミュニティ(というかスクリプティング界隈)の精神なのですね。すると自動
テストが、推奨というより必須になるわけですね。当たり前のことですが、改
めて目からうろこが落ちました。

質問してよかったです。ありがとうございました。

254:デフォルトの名無しさん
08/09/24 23:00:29
Rubyとは関係ないかもしれないのですが、Rubyで実装しているのでここで質問させてください。

普通、ウェブアプリで検索とかのリクエスト送って、リクエストの結果を
送ったページと同じページに表示させる場合、リクエストを送るのは同じページのメソッドにしたほうがいい?

なんか一緒に作ってる人が
Aページ⇒Bメソッド⇒Aページのメソッドって感じにしててどうなのかな?って思ったんです

なんかわかりにくくてごめん

255:デフォルトの名無しさん
08/09/24 23:01:25
2回送ってしまった、スマン

256:デフォルトの名無しさん
08/09/24 23:03:32
>>254
Ruby関係ないしそもそもそのへんは設計どうでもいいからわかりやすいほうにしろ
メソッドって言葉の使い方間違ってねーか?まあいいや

257:デフォルトの名無しさん
08/09/24 23:05:17
>>246
どっちかというと基本から何をどうすればいいのか分かっていないのでは。

>>240
音声圧縮についてのことでもなさそうだし、普通のPCMの話だとおもうけど
音声がどのようにしてデジタルに符号化されているのかを理解していれば、
単位が分からんとか言い出すはずがないんだが。

データサイズ[bit] = 量子化ビット数[bit] * サンプリング周波数[Hz] * 時間[s] * チャンネル数

ここまではRubyと何の関係もないのでもう一つ言っとくと、packでの"s"は
その環境のエンディアンに依存しているので、よそでは動かないかもよ。
ちゃんとフォーマットにあわせて"n"とか"v"を使うように。

258:デフォルトの名無しさん
08/09/25 00:42:13
>>253
>最後に、名前は早々衝突しないし、もし衝突したなら直すというのが、Rubyコ
>ミュニティ(というかスクリプティング界隈)の精神なのですね。すると自動
>テストが、推奨というより必須になるわけですね。当たり前のことですが、改
>めて目からうろこが落ちました。

いちおう補足しておくけど、エラーはテストで見つかるけど、もしコンパイル時に見つかるならそれにこしたことはない。そっちのほうが作業効率いいしね。
ただ、実はコンパイル時の検査は必須ではなく、テストで見つけるというアプローチでも十分実用的というだけ。
いままで「コンパイル時にできるだけエラーを見つけないといけない」「名前の衝突による思わぬバグを防ぐような仕組みを用意してないといけない」と
思いこんでいたんだけど、実はそうでもなかったよ、慣れればなんとかなるよ、という経験をしてほしいなー

というおっさんのひとりごとでした。

259:デフォルトの名無しさん
08/09/25 00:46:04
>>254
>普通、ウェブアプリで検索とかのリクエスト送って、リクエストの結果を
>送ったページと同じページに表示させる場合、リクエストを送るのは同じページのメソッドにしたほうがいい?

送信先は同じメソッド、ただし中身は別メソッドとかでいいんじゃないの?

def index
 if params['q'] # q パラメータがあれば検索結果を表示
  show_search_result()
 else
  show_items()
 end
end

とか

def index
 if ENV['REQUEST_METHOD'] == 'POST' # postメソッドなら検索結果を表示
  show_search_result()
 else
  show_items()
 end
end

とか。
しかし日本語下手だな。なんとかしてくれ。

260:デフォルトの名無しさん
08/09/25 00:58:11
>>252
PRGってやつ?

261:デフォルトの名無しさん
08/09/25 07:30:35
>258
ある程度慣れた人だと、shebang や require 以外で最初に書くのは
module になる気がする
要るか判らんが、とりあえず空間切っておくか、みたいな

262:デフォルトの名無しさん
08/09/25 09:05:11
アホばかりでやんなっちゃうよ

263:デフォルトの名無しさん
08/09/25 12:11:04
表示端末の文字エンコードを自動判別して変換することはできますか?
ファイル内容を puts した瞬間に
「しまったこれShiftJISかようわ矢印キー効かね」
というようなことを大多数の端末で避けたいです


264:デフォルトの名無しさん
08/09/25 12:21:02
>>263
ENV に情報がなければ無理だろな
Windowsのコマンドプロンプトでは特に情報がないようだ

265:デフォルトの名無しさん
08/09/25 15:36:52
あー、スクリプト例で文字列を puts とかさせるときちょっと困るね
toeuc 決め打ちしておくのも変だし

266:デフォルトの名無しさん
08/09/25 16:08:59
rubygemで特定のパッケージをupdate対象から外すことはできる?
要はholdしたいんだけど

267:デフォルトの名無しさん
08/09/27 01:13:27
TkcItem.newはrequire 'tk' だけでできるのに
TkcItemのサブクラスを作ろうとするとrequire 'tk/canvas'が必要になるのはなぜ?

268:デフォルトの名無しさん
08/09/28 03:56:41
rubyをつかって刑務所からプログラミングしてるんですか?

269:デフォルトの名無しさん
08/09/28 14:35:51
Rubyでバイナリを16進数文字列に変換するのはどうしたらできますか。
packとかunpackがわかりくすぎて、理解できません

270:デフォルトの名無しさん
08/09/28 14:55:34
packとか使え
packはC参考にしれ

271:デフォルトの名無しさん
08/09/28 15:22:39
open(ARGV[0], 'rb'){|f|
while bin = f.read(16)
bin.each_byte{|byte|
print '%02X ' % byte
}
puts
end
}

272:デフォルトの名無しさん
08/09/28 15:46:05
class XY
attr_reader :x, :y
def xy=(x, y=nil)
@x = x
@y = y || x
end
end

a = XY.new
a.xy=(1, 2)

というのを実行すると、
SyntaxError: compile error
syntax error, unexpected ',', expecting ')'
となってしまいます。
普通にメソッド呼んでいるだけなんですが、何が悪いんでしょうか。。
=のつかないメソッド名だと大丈夫なんですが…

273:デフォルトの名無しさん
08/09/28 17:00:00
URLリンク(www.ruby-lang.org)
リファレンスマニュアルによると、代入演算子は次の形で再定義できるという
def foo=(value) # obj.foo = value

なので、xy=(x, y=nil) のメソッドを呼ぶには次のようにする
a.xy = 式
そのエラーは式の部分が (1,2) なので文法エラーになっているということ。
value = (1, 2) という式はRubyでは解釈できない。

という話だと思う。 たぶん。 信用度 80% くらい。

274:デフォルトの名無しさん
08/09/28 18:47:03
RoR動くレンタルサーバーって
高いところしかないの?

さくらのライトプランで動かないの?

なるべく月500円以下のところを
紹介してほしいんだけど。

275:デフォルトの名無しさん
08/09/28 18:58:38
500円以下はありえない

そもそものRoR動かすこと自体がかなりサーバ負荷の高い行為だから、
収容人数の多い安いレンタルサーバでは実用的な速度ではまず動作しない

専用サーバと呼ばれる、少人数あるいは自分たちだけの買い取りサーバを使うんだね

276:272
08/09/28 19:02:27
>>273
ありがとうございます。

a.xy=(何か)
という形は単なるメソッド呼び出しだと思っていたのですが、
実際には代入用の特別な呼び出しで、「何か」の部分は代入の右辺に
使えるような式である必要があり、普通のメソッドと同じようには
いかない、ってことなんでしょうか。

結局、調査の末これならできるということがわかりました。。
a.send(:xy=, 1, 2)
実際は ActiveRecord::Base#attributes= なんですが。

277:デフォルトの名無しさん
08/09/28 19:09:56
a.xy=1, 2とかa.xy=*[1, 2]でもよさそうに思う

278:272
08/09/28 19:41:41
>>277
それだと @x が [1, 2] になっちゃうんです…
ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin8]

279:デフォルトの名無しさん
08/09/28 20:17:45
class XY
  attr_reader :x, :y
  def xy=(v)
    @x, @y = v
  end
end

a = XY.new
a.xy = 1, 2

280:デフォルトの名無しさん
08/09/28 20:55:34
Rubyで、パイプのようなものを実現するにはどうしたらいいですか
input = "aaa¥nbbb¥nccc¥n"
output = open("|cat -n", "r+b") do |io|
 io.write(input) if input
 io.read
end
でいけるかなと思ったのですが、io.read()でブロックされるようで、うまくいきません。

281:デフォルトの名無しさん
08/09/28 21:06:48
>>280
io.close_write()をいれるとできました。
input = "aaa¥nbbb¥nccc¥n"
output = open("|cat -n", "r+b") do |io|
 io.write(input) if input
 io.close_write() ## 追加
 io.read
end


282:デフォルトの名無しさん
08/09/28 21:17:08
popen

283:デフォルトの名無しさん
08/09/28 21:29:15
じゃあ俺はreadpartialを推しておく

284:デフォルトの名無しさん
08/09/28 21:41:56
windows版のrubyが起動に物凄く時間がかかるんですがなぜでしょうか・・・?

285:デフォルトの名無しさん
08/09/28 21:57:46
rubygems読み込んでるんだろ

286:デフォルトの名無しさん
08/09/28 22:18:04
>>276
URLリンク(www.ruby-lang.org)
>プログラミングの利便のために一部のメソッド呼び出しと制御構造は演算子形式をとります。
>ほとんどの演算子は特別な形式のメソッド呼び出しですが、(後略)

ということだそうだから、普通のメソッド呼び出しとは違うんだろう。
だいたい2項演算子の引数が複数だったりすると混乱の元にしかならんしな。
f( a + 1, 2) と書いたら、実は f( a+(1, 2) ) でしたとか。

287:デフォルトの名無しさん
08/09/29 04:05:45
ちょっと質問なのですが、Vistorパターンがいまいちわかっていません。
サンプルコードを見ても実際にどんな時につかうのかが?

Rubyのライブラリなんかで、Vistorパターンを実際に使っているソースはありませんでしょうか?

288:デフォルトの名無しさん
08/09/29 04:09:01
>>274
安いRailsのホスティングサーバー - Core
URLリンク(d.hatena.ne.jp)

野ログはノロキュアMaxHeart - SlicehostでそれなりにRailsを使っている感想 , Rails動かす環境が欲しい人必見
URLリンク(cureblack.com)

まともに動かすには、VPSぐらいでないと無理くさいです。

レンサバでRamaze動かしている人(CGI駆動でw)はいた。

rubyの軽いWebアプリケーションフレームワークを試してみた - NAT’s Programming Champloo
URLリンク(d.hatena.ne.jp)
さくらのレンタルサーバでramazeを動かしてみた - NAT’s Programming Champloo
URLリンク(d.hatena.ne.jp)


289:デフォルトの名無しさん
08/09/29 04:14:09
>>227
C/C++とか触れそうにないなw
あなたには選択肢が少ない、ひまわりとかDelphiがオススメ

290:デフォルトの名無しさん
08/09/29 08:23:51
>>287
Visitorははまるときはピッタリはまるんだけどね。

Visitorパターンの例題として見るだけなら少し大きめだが、RDのパーサとか
URLリンク(rubyforge.org)


291:デフォルトの名無しさん
08/09/30 00:28:47
Mac OSXにRails環境を作ってみたのですが、プロジェクトを作成すると
ファイルの文字コードが全て iso-2022-jp-3で作成されてしまいます。

プロジェクト作成時にutf8でファイル生成するオプションなどはありますか?

292:デフォルトの名無しさん
08/09/30 08:23:04
railsコマンドが作る初期プロジェクトに使われる文字の範囲では
ISO-2022-JP-3(初期ASCIIでスタート)とUTF-8は同じだと思うんだが。

293:デフォルトの名無しさん
08/09/30 10:00:53
どんなソフトやらでISO-2022-JPでなくISO-2022-JP-3だと判定されたのかはちょっと気になるな

cat > hoge.txt とかで作ったファイルも同じ判定ならコンソールか何かの設定の問題か、その判定ソフトの癖だな

294:デフォルトの名無しさん
08/09/30 11:52:43
RoR のフォームヘルパには Smarty でいう html_options みたいなヤツはないの?

295:デフォルトの名無しさん
08/09/30 14:09:23
>>294
html_optionsみたいなのがなにかを説明しないと、わかるわけがない

296:デフォルトの名無しさん
08/09/30 14:20:57
>>295
URLリンク(www.smarty.net)

297:デフォルトの名無しさん
08/09/30 15:39:13
まずは「rails select option」でぐぐろうぜ

298:デフォルトの名無しさん
08/09/30 17:10:47
うぉーあった。ありがとうございます >>297
Rails入門(本)には text とか radio は載ってたのにこれは載ってない。
でもないのはおかしいなと思ってた。date_select まであるじゃんかよ…。

299:287
08/09/30 17:21:04
>>290
thanx 見てみます。

300:デフォルトの名無しさん
08/09/30 23:36:49
>>292
特に気にする必要はないっていうことですか?
今のところ特に問題はないですが、聞いたことない文字コードだったので
そのうち何か問題がでないかと心配です。

>>293
vimに読み込ませた時の文字コードがiso-2022-jp-3で表示されてます。
linux上で作成したutf8のファイルは、問題なくutf8で表示されていますし
他の文字コードに関しても作成時と同じように表示されてるので
ファイルの認識自体は特に問題ないと思いますが。。。
catで作成したファイルもiso-2022-jp-31で作成されているようですし
FInder上で作成したファイルもiso-2022-jp-3なので、たぶんMacOSXでは
指定がない限り、その文字コードで作成してしまうのではないでしょうか。
なにぶん昨日Macにはじめて触りまして。。。詳しいことが。。。

とりあえずOS側の問題のような気もするので、そっちで聞いてみます。

301:デフォルトの名無しさん
08/10/01 08:21:11
>>300
とりあえずodなどで問題のテキストをバイナリダンプしてみては?



302:デフォルトの名無しさん
08/10/01 11:09:10
>>300
文字エンコード自動評価の順が iso-2022-jp-3 が最初なんだろう
vimrcの文字エンコード推測設定がMacOSX向きじゃないんだと思う
きっとどっかのサイトのを意味もわからず丸コピペしたのだと推測

303:デフォルトの名無しさん
08/10/01 12:05:42
>>298
書名をさらして著者に改善を要求しよう

304:デフォルトの名無しさん
08/10/01 12:13:37
バージョンアップ後のフォローを求めるアホもいるので注意
ちゃんと冒頭に「バージョン○○を対象にします」って書いてあんじゃんよ

305:デフォルトの名無しさん
08/10/01 15:00:25
>>304
今回の select option に限って言えば、どのバージョンでもあるわな

306:デフォルトの名無しさん
08/10/01 19:14:46
ruby gemsでdescriptionで検索することってできないのでしょうか?

 gem search --details --both --all hoge

とやっても、名前でしか検索ができません。
説明欄も検索したいのですが・・・

307:デフォルトの名無しさん
08/10/01 21:24:06
searchは最終的にSourceIndex#searchに処理を委譲してて、
そこでは名前がマッチするモノを探しているだけのようだ。
rubygems/source_index.rbの

spec.name =~ gem_pattern and

というところ(手元だと272行め)を

(spec.name =~ gem_pattern or spec.description =~ gem_pattern) and

のように変更すればdescriptionも検索対象にできる。
他にsummaryなども、orで連結して探すようにできるはず。

残念ながら、--detailは出力をkwskするためのオプションだな。


308:デフォルトの名無しさん
08/10/02 11:44:41
OSはXP Home SP3、Rubyは1.8.6(最終版)です。
以下のプログラムを実行してもうまく動かず、何がいけないのか分からず困っています。

sum =0
puts "点数を入力してください。"
a=0                     ←なんとなく初期化してみた。あってもなくてもダメ
for i in 1..5
  print i, "番:"
  a = gets.chomp
  sum += a                ←ここが鬼門。ためしにforのiにするとちゃんと動く
 # print a,"\n"
 # sleep 1
end
print "sum=#{sum}"

おそらく7行目のsum += aが問題なのですが何がいけないんでしょうか・・・?
助言頂けるとありがたいです。

309:デフォルトの名無しさん
08/10/02 11:49:49
"うまく動かず"を出し惜しめせずに書けw

310:デフォルトの名無しさん
08/10/02 11:51:06
sum += a.to_i
かな

311:デフォルトの名無しさん
08/10/02 12:07:40
>>309
コマンドプロンプトだと1つ目の数値を入れたとたん終了・・・
>>310
できた!thx!
getsで入力した数値を文字列だと思ってたのか・・・orz
ほんとありがとう、数値ひとつ入力するのに1時間奮闘してた・・・

312:311
08/10/02 12:26:45
またすぐに聞きに来てごめんなさい・・・orz
aを配列にしたとたん動かなくなりました・・・
実行しても「点数を入力してください」すら表示されず終わります。

sum =0
puts "点数を入力してください。"
a[]              ←いらなそうだけど一応宣言
for i in 1..5
  print i, "番:"
  a[i] = gets.chomp   
  sum += a[i].to_i      
end

.to_iの使い方がおかしいのかもと思い、その行をコメント化してみたりしましたがうまくいかず・・・
gets辺りで躓いてると思います。
お手数ですがどなたかアドバイスください。
入力で躓きまくってる私はRuby向いてないのかなぁ・・・orz


313:デフォルトの名無しさん
08/10/02 12:34:11
sum = 0
ary = []
puts "点数を入力してください"
for i in 1..5
    print i, "番: "
    ary[i-1] = gets.chomp.to_i
end
sum = ary.inject(0) {|a, x| a + x }
print "合計: ", sum, "\n"

314:デフォルトの名無しさん
08/10/02 12:37:37
どういう勉強の仕方をしてるのか気になる。

315:デフォルトの名無しさん
08/10/02 12:39:51
>>312
「実行」って、コマンドプロンプトから ruby hoge.rb とかしてる?
普通はこうなる

> ruby hoge.rb
点数を入力してください。
hoge.rb:3: undefined local variable or method `a' for main:Object (NameError)

あと入門書嫁

316:デフォルトの名無しさん
08/10/02 12:49:11
本題に関係ないとはいえ一応書いておくが、Rubyでforはめったに使わない
普通はブロックを使う

317:312
08/10/02 12:50:02
>>313
おお・・・ちゃんと動く・・・ありがとです。
for文の中でsumに足していかないとは・・・!
sum周りが初見なんで調べないとですね。
ともあれthxです。

>>314
Cは多少やってたのでCの頃に書いた簡単なプログラムをRubyに書き直してみてるところです。
文法がずいぶん違って躓きまくりです・・・

>>315
いや、「.rb」をそのままダブルクリックで実行してます。
だからsleep入れたりしてすぐに消えないようにしてたり・・・
基本はRDEで実行してます。
「たのしいRuby 第2版」を参考にしてますが、必要な所だけ探して読んでるのがいけないかもですね・・・

318:デフォルトの名無しさん
08/10/02 13:19:11
コマンドライン実行のスクリプトをダブルクリックしてどうする
正常終了でウィンドウ閉じるだろ

319:デフォルトの名無しさん
08/10/02 13:36:57
最後にsystem('pause')入れたりする

320:デフォルトの名無しさん
08/10/02 14:02:52
>>317
RDE使ってるなら、プログラムを実行した後
下の出力ウインドウにエラーメッセージとか出てるんじゃないか?
それを貼り付けるべし

出ないようならコンソールから実行

321:デフォルトの名無しさん
08/10/02 14:22:57
>>318
いやだからsleep入れたりしてるんですが、エラーの時は関係なく終わるんです。

>>319
Rubyの場合はスタンダードライブラリを読み込まなくても使えるんですね。(Rubyには存在しない?
活用させていただきます。

>>320
一応出ますね。以後貼り付けます。

みなさんありがとうございます。またすぐに来そうで心配ですが、その時はよろしくお願いします。

322:デフォルトの名無しさん
08/10/02 18:02:43
バッチファイルにしてやればエラーが出てもポーズさせるようにできるよ。
ruby -x "%~0" || pause
と書けばエラーが出たときに限ってとまる。

test.bat
ruby -x "%~0"
pause
goto :eof

#!ruby
put "hello"


323:デフォルトの名無しさん
08/10/02 19:08:34
>>322
横からだがサンクス
これを.rbに関連付けしておけばよいのか・・・
|| でエラー時だけ止まるのかいいな、これ

324:デフォルトの名無しさん
08/10/02 22:15:24
rdocで#:nodoc:と指定されてる要素も無理矢理ドキュメント化するような
オプションとか方法とかってありますか?

325:デフォルトの名無しさん
08/10/02 23:44:42
>>324
そんなのはないから自分で #:nodoc:を消せばいいじゃん
cp -pr src1 src2
find src2 -type f | xargs perl -pi 's/:nodoc://'


326:デフォルトの名無しさん
08/10/03 01:37:13
>>325
なるほど
参考にさせていただきます
ありがとうございました

327:デフォルトの名無しさん
08/10/03 02:38:35
>>325
そこでrubyでもsedでもなくperlかよw


328:デフォルトの名無しさん
08/10/03 11:54:46
>>327
1 linerでの置換ならrubyよりperlのほうが便利
sedは-pオプションがない

329:デフォルトの名無しさん
08/10/03 12:52:51
URLリンク(www.goto.info.waseda.ac.jp)
これ教えてもらってpythonから宗旨替えするのを検討してるんだけど
本当にpythonのモジュールが問題なくつかえるの?
ctypes
boost.python
numpy
matplotlib
PIL
が使えるかが一番問題なんだけど

330:デフォルトの名無しさん
08/10/03 13:02:03
>>329
現在の Ruby は 1.8.7 です

331:デフォルトの名無しさん
08/10/03 13:09:37
(いろいろとpython側もruby側も追随してないだろうから、やめるのが吉、ってことか...)

332:デフォルトの名無しさん
08/10/03 15:59:38
>>329
作者に聞くか、自分で試してみるしかない。
つうか、PerlやPHPならまだしも、Pythonから宗旨替えする理由って何?

333:デフォルトの名無しさん
08/10/03 17:24:32
>>332
借りてるレンタルサーバーでRubyは動くけど
pythonが動かない

railsが便利なら使ってみたい

334:デフォルトの名無しさん
08/10/03 17:30:26
>>333
Railsを実用的な速度で使うなら、
別プロセスのサービス(MongrelやFastCGI)か
Apache組込のPassengerが必要になる。
レンタルサーバではどちらもできないことが多いので、注意。

335:デフォルトの名無しさん
08/10/03 21:35:41
Windowsで、text ディレクトリのテキストファイルに対して start コマンドを使おうと

require 'shell'
sh = Shell.new
Dir.glob("text/*.txt").each do |path|
path.gsub!(/\//,"\\")
sh.system("start", "#{path}")
end

というスクリプトを作りましたが

c:/ruby/lib/ruby/1.8/shell/command-processor.rb:352:in `find_system_command':
Command not found(start). (Shell::Error::CommandNotFound)

というエラーが出ます。どうしたもんでしょうか。

336:デフォルトの名無しさん
08/10/03 21:46:08
普通にsystem使ったら?

337:デフォルトの名無しさん
08/10/03 22:09:57
>>328

sedのデフォルトの動作が -p 指定時のPerlと同じだろ。
おまえさんが言いたいのは -i じゃないのか?
でもこれも GNU sedならあるけどね。


338:デフォルトの名無しさん
08/10/03 22:12:47
>>335
gsub!の置換後の文字列だけどそれでいいのか?

あと startはcmd.exe の内部コマンドだからそれだとまずいだろう


339:デフォルトの名無しさん
08/10/03 23:13:37
>>337
>おまえさんが言いたいのは -i じゃないのか?
その通りだ orz
エスパーさんくす

340:デフォルトの名無しさん
08/10/03 23:40:05
nanoc: a Ruby CMS that generates static HTML ≫ home
URLリンク(nanoc.stoneship.org)

nanocというRuby製のCMSを使ってみています。
nanoc autocompileコマンド時にhttpdサーバーが立ち上がります。
しかし、ブラウザでURLリンク(localhost:3000) というデフォルトのアドレスにアクセスしても
画像が何故か読まれません。

そこで、autocompileコマンドのソースを追って調べていたのですが、

nanoc: lib/nanoc/extra/auto_compiler.rb@55a1480e2719
URLリンク(nanoc.stoneship.org)

(ちょうど上記ソース)、255行目の File.read(path) ってもしかして、
Window環境だとバイナリ読めなくないですか?
irbで試しましたが、pngを読むと、

irb(main):028:0> a = File.read "gradient-nav-white.png"
=> "\211PNG\n"

みたいになってしまいます。

341:デフォルトの名無しさん
08/10/03 23:58:19
>>340
ソース読んでないけど、たぶんその通り
UNIX畑の人間が書いたスクリプトには、バイナリモードを考慮してないものがある
最近だとRackでも見た

342:デフォルトの名無しさん
08/10/04 00:00:57
nanoc は面白そうだと思ってはいるんだが

>>340
読めませんねえ

module Nanoc::Extra
class AutoCompiler
def serve_file(path)
[
200,
'Content-Type' => mime_type_of(path, 'application/octet-stream') },
[ File.open(path,'rw'){|f| f.read} ]
]
end
end
end

をスクリプトの前に書いて再チャレンジだ

>>341
ある意味とてもカッコ悪いよな

343:デフォルトの名無しさん
08/10/04 00:01:14
PNGのマジックナンバーに含まれるEOF文字で止まっているようですね。
バイナリモードのopenを使うように書き換えないといかんのかな。


344:デフォルトの名無しさん
08/10/04 00:03:24
なんか足りなかった

module Nanoc::Extra
class AutoCompiler
def serve_file(path)
[
200,
{'Content-Type' => mime_type_of(path, 'application/octet-stream') },
[ File.open(path,'rw'){|f| f.read} ]
]
end
end
end

Ruby のモジュールの多くは自前のスクリプトの先頭で書き換えることができる
きっとこれから何度もお世話になると思うので覚えておくといい
けっこう明確なバグ(で、自前で何とかなるもの)が残ってたりするもんだ

345:デフォルトの名無しさん
08/10/04 00:07:32
あれ、アクセスフラグrbじゃなくてrwなの?

346:デフォルトの名無しさん
08/10/04 00:10:45
rb だな

347:デフォルトの名無しさん
08/10/04 00:16:27
msっていつになったらテキストモードをなくすの?

348:デフォルトの名無しさん
08/10/04 00:24:32
>>347
Cやれ

349:340
08/10/04 00:48:47
みなさんありがとう。上手くいきました

trap::IO - Rubyリファレンスマニュアル
URLリンク(www.sakalab.org)
> IO.readはファイルを開くときにバイナリモードにしないので、
> バイナリモードの存在する環境でバイナリファイルの読み込みに使うと 内容が壊れることがあります。

これかい!しかし何でこんな罠があるんだ。
罠ってのはバイナリモードじゃなくてIO.readのことだけど。
nanocの作者 mac っぽいし?

-----lib/binary_patch.rb-----
module Nanoc::Extra
  class AutoCompiler
    def serve_file(path)
      # Build response
      [
        200,
        { 'Content-Type' => mime_type_of(path, 'application/octet-stream') },
        [ File.open(path, 'rb'){|f| f.read } ]
      ]
    end
  end
end
-------------------
>>344参考に、これをサイトデータの lib 以下に放り込んでおくとOK的な。
後でさくーしゃにパッチ投げるか……

しかし、grepかけたら、他にも File.read あったり、
File.openでバイナリモードにしてないところがあるから、
直すところがいくつもありそうw

350:デフォルトの名無しさん
08/10/04 01:18:38
これはホントは標準添付の便利メソッドのフリしてバイナリモードガン無視の File.read が悪いんだよね
ライブラリ作者はあんまり悪くない(注意不足なだけ)
2.0 では直ってたりするのかしら

351:デフォルトの名無しさん
08/10/04 01:29:27
1.9にはIO.binreadというのがあるようだ。
あと、1.9以降はstdioと絶縁したんだっけか?


352:デフォルトの名無しさん
08/10/04 01:48:42
ついでに別の質問があります。
nanoc で nanoc autocompile コマンド時にhttpサーバーと一緒にブラウザも起動したいのだけど、
httpサーバー起動前にブラウザが立ち上がりきってしまって上手くいかない・・・。

gemにあった launchyで起動させているんだけども、httpサーバー(デフォではThin)
起動後かもしくは、数秒後に起動することはできないでしょうか?

当初はこんなコードです。

require 'rubygems'
require 'launchy'

module Nanoc::Extra
  class AutoCompiler
    alias original_start start # :nodoc:
    
    # Boot web browser before original start
    def start(port, handler_name)
      port ||= 3000
      Launchy.open("URLリンク(localhost:#{port})") if defined?(Launchy)
      original_start(port, handler_name)
    end
  end
end

353:デフォルトの名無しさん
08/10/04 01:51:50
で、Threadを使ってみようとしたんだけどもネイティブスレッドじゃないせいか
上手くいきませんでした。何かよい方法はないものでしょうか?

    def start(port, handler_name)
      port ||= 3000
      t = Thread.new do
        Sleep(3)
        Launchy.open("URLリンク(localhost:#{port})") if defined?(Launchy)
      end
      original_start(port, handler_name)
      t.join
    end


354:デフォルトの名無しさん
08/10/04 02:37:21
>>352
while (3000ポートに接続できない)
 sleep(1) # 1秒待つ
end

355:デフォルトの名無しさん
08/10/04 02:44:59
>>335
WindowsでRubyならWIN32OLEで一択.

require 'win32ole'

fso = WIN32OLE.new('Scripting.FileSystemObject')
shell = WIN32OLE.new('WScript.Shell')

Dir.glob('text/*.txt').each do |path|
 shell.Run(fso.GetAbsolutePathName(path))
end

下記記事も参照すると吉
URLリンク(jp.rubyist.net)


356:352
08/10/04 02:52:37
>>354
どうも original_start() でキー入力待ちになってしまうのです。
sleepするところだけメインと平行して走らせることができないかな、と思ったしだいです。

gemにあった win32-thread もつかって見ましたが、

> nanoc autocompile
win32 thread mode
(rubyパス)/lib/ruby/gems/1.8/gems/launchy-0.3.2/lib/launchy/b
rowser.rb:25: [BUG] cross-thread violation on rb_thread_schedule()
ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32]

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

とか出るしダメポ……


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch