[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/16 20:51 / Filesize : 256 KB / Number-of Response : 901
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

Ruby 初心者スレッド Part 22



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

357 名前:デフォルトの名無しさん [2008/10/04(土) 02:53:16 ]
>>355
「全部WSHで書けばいいじゃん」って思うよね?
うん,俺もそう思う.

Jscriptとかも使ってみると意外と便利なんだよなぁ.

358 名前:352 mailto:sage [2008/10/04(土) 02:57:28 ]
深夜に何度もすいません。
キー入力待ちでもsleep後に平行してブラウザが起動してくれました。大丈夫でした。
httpdの起動が遅いせいか、どうもタイミングが悪かったようです。

>>354を実装してみたいと思います。ありがとうございます。

359 名前:352 mailto:sage [2008/10/04(土) 03:33:52 ]
    # Boot web browser before original start
    def start(port, handler_name)
      require 'open-uri'
      require 'resolv-replace'
      
      require_gem('launchy', true)
      
      port ||= 3000
      
      t = Thread.new do
        uri = "localhost:#{port}/"
        loop do
          begin
            exit_loop = false
            open(uri) do |f|
              puts "Eureka #{uri} !";
              exit_loop = true
            end
            break if exit_loop
          rescue
          end
          sleep(1)
        end
        puts "Launching browser..."
        Launchy.open(uri) if defined?(Launchy)
      end
      original_start(port, handler_name)
      t.join
    end

>>354をこんな感じで行けました。
もっと短くかければよかったのですが。

360 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 04:06:35 ]
テキストモードとか意味不明。
ただこういうバグを生むために存在するとしか考えられん。

まあでもそういうのを考慮する環境がクライアント機では90%以上を占めてるので仕方ないか。。

361 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 04:10:20 ]
だからCやれって
テキストモードが生まれたわけがわかるから

362 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 04:35:54 ]
>>361
Cは平素より使用しているが、どうしてテキストモードなるものが存在する必要があるかは理解できない。
ここで、「ググレ」やリンクを貼る行為ではなく、あなたの言葉での説明希望。

363 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 07:12:40 ]
ちゃんとした文責のある文章を拒否して、名無しさんの言葉だけ求めるってw

「知りたい」んじゃなくて「追い込みたい」のが丸わかり。
土曜の早朝から何を厨臭いことを。

364 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 07:17:11 ]
隔離スレにお帰り

365 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 08:31:49 ]
むしろCのstdioがマシンごとに改行の内部表現が異なることを意識して
テキストモードとバイナリモードを用意して抽象性を確保してるんだから
UNIX使いもちゃんと使い分けろって話になりはしないの?



366 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 09:50:05 ]
>>363
煽るだけならCスレへお帰りください

367 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 10:23:42 ]
>>362
>Cは平素より使用しているが、どうしてテキストモードなるものが存在する必要があるかは理解できない。
たんに、プラットフォームによって改行を表す記号が違うので、それを隠蔽して互換性を確保するモードを用意しただけ。

>ここで、「ググレ」やリンクを貼る行為ではなく、あなたの言葉での説明希望。
ほんとにCやってるなら、このくらい分かるだろ。
まずは「教えてください」という言葉を覚えような。

368 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 11:01:03 ]
>>367
>まずは「教えてください」という言葉を覚えような。
お前は文章に「教えてください」って文字列が入ってないと納得できない正規表現脳なのか

369 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 11:10:12 ]
デジタルリサーチとAppleのせいってことで終了にしとけ。
ttp://ja.wikipedia.org/wiki/%E6%94%B9%E8%A1%8C%E3%82%B3%E3%83%BC%E3%83%89

370 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 12:46:31 ]
>>365
普通UNIX使いは改行記号がが\nのとき、\r\nのとき、\rのときそれぞれを考慮したコードを書きます。
なぜならUnix使いはおそらくwindowsをはじめとする他の環境を触ったことがあり、
それらで改行がどう表現されるかを知っていて、
かつbフラグは無視される環境であることがほとんどだから。

>>367
だからね、それは「テキストモードが必要な理由」にはならないんだよw
なぜなら普通は上に書いたようなことをやるから。
あれば便利かと思って作ったんだろうが、現状むしろあることのほうが害。バグの原因になる。
こんぐらい少し考えればわかるだろwww



371 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 12:56:18 ]
>>368
その文字列を探す様子をたとえるのに、正規表現はないだろう。

372 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:09:55 ]
pc11.2ch.net/test/read.cgi/tech/1221967332/87
こいつ何言ってるの?

373 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:21:33 ]
>>370
>普通UNIX使いは改行記号がが¥nのとき、¥r¥nのとき、¥rのときそれぞれを考慮したコードを書きます。
書かない。ふつうは printf("foo¥n"); としか書かない。printf("foo¥r¥n") なんて書くわけない。
本気でそんな主張をするなら、世の中のUNIX用ツールで改行コードを使い分けているソースの例を挙げて、
それが一般的であることを示してくれ。

>なぜならUnix使いはおそらくwindowsをはじめとする他の環境を触ったことがあり、
触っただけで、自分のコードにそこまでの移植性を考えるわけない。
たとえばUNIXとWindowsではパス区切り文字が違うが、それを考慮しているコードは多くない。
改行コードの違いなんか考えるわけがない。

>それらで改行がどう表現されるかを知っていて、
>かつbフラグは無視される環境であることがほとんどだから。
bフラグを無視するのはUNIX系だけでは? Windowsでは無視されないんだから、「bフラグは無視される環境であることがほとんど」なわけがない。

374 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:27:07 ]
>>372
お前の存在をズバリ言い当ててるのでは?

375 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 13:50:17 ]
>>373
>それが一般的であることを示してくれ。
まあ\rは無視することもあるな、Macだけだし、はっきり言っておかしいから。
出力は、自分の環境で動けばいいから(移植するときに考えればいい)printf("foo\n")でもいい。
外部に出力する場合は規格通りにすればよい。

当たり前だが、問題なのは出力よりも入力。なぜならどのようなデータがくるか分からないから。
ここで注意すべきなのは、ただ単に改行までシークする場合は
\nと\r\nは改行位置を捜すのに両方\nを捜せばいいから問題にならない。
よって、考慮はしているがそれが実際にコード上に現れないことも多い。
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
しかし、考えなければならない事もある、たとえばhttpの改行は\r\nである必要があるが、
\nである環境もあるかもしれない。例えば、Httpのヘッダとボディ部を分けるのは
"\n\n"と"\r\n\r\n"の両方の可能性がある。
(規格上は後者のみ正しいが、もしかしたら前者の可能性もあるかもしれない。)

よってその場合には分けた処理が必要になる。実例として、MPlayerの
MPlayer/stream/http.cのhttp_is_header_entire()。
wgetのhttp.cなどを参考にしても、もし改行が\nの場合、\r\nの場合両方とも正しく処理できるように
なっている様がわかる。

でもそれが一般的である証明なんて誰にもできませんよ。もちろん一般的でない証明もできません。

>改行コードの違いなんか考えるわけがない。
考えなければならない時は考えるほうがよいです。考えないとバグの原因になる可能性がありますので。

>「bフラグは無視される環境であることがほとんど」なわけがない。
Unix使いは、って書いあるじゃんwwwww
なんで同じ文の中に書いてあって前提が途中で変わっちゃうのwwwww?



376 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 14:08:35 ]
この場合、「一般的であることを示す」のは至難の業だわな。
いったい何百例出せばいいのかと(数例で納得するのは逆におかしい)。

それでいて、いかにも「正当な要求をした俺と、応えられないコイツ」的な構図が
出来上がるから、まぁ、ある種の人間はこの質問をすることを凄く好むんだよね。

「知りたい」んじゃなくて「追い込みたい」のが丸わかり。
土曜の昼に何を厨臭いことを。

377 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 14:46:13 ]
>>376
久々に切れのある内容のスレを見た。
尊敬する。
あなたの言うとおり!!

378 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 16:17:01 ]
>>376
なに語ってるのか知らんけど、
>普通UNIX使いは改行記号がが¥nのとき、¥r¥nのとき、¥rのときそれぞれを考慮したコードを書きます。
なんておかしなことを書いてあるから、それが「普通」である根拠を示してくれといってるだけ。
答えられないならでしゃばんなよ。


379 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 16:20:17 ]
IDの出ないスレは自演が楽だな。

380 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 16:21:10 ]
>>375
>wgetのhttp.cなどを参考にしても、もし改行が¥nの場合、¥r¥nの場合両方とも正しく処理できるように
>なっている様がわかる。

wget はネットで使うんだから、どちらにも対処できるようにするのは普通だろ。
それこそunixもwindowsもmacも関係ない話。
これをbフラグの話で持ち出すほうがおかしい。

381 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 16:46:28 ]
>>378
> なに語ってるのか知らんけど、
知らんまま反応した当然の結果として、まるで的外れだから、「知る」までは黙ってていいよ。

382 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 18:34:37 ]
unixはバイナリモードしかなくても、改行コードがファイル毎にバラバラでも
テキストを問題なく扱えるし、windowsでも当然可能
# 可能にしてるのはライブラリやアプリケーション、だけど問題はそこじゃない
不必要なテキストモードを残しているばかりに>>340の様な問題が起こる
appleがOSXでCRを捨てたようにwinもさっさとテキストモードを廃止してほしいもんだ

383 名前:340 mailto:sage [2008/10/04(土) 19:03:40 ]
なんか、俺のせいで半荒れ?でスマナイ

俺はネイティブ言語はDelphiくらいしかつかわないけど、
テキストモードとかバイナリモードなんて意識したことない。
File.readのテキストモードとかの区別って結局どこから来てるんですかね?

384 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 19:25:51 ]
>>383
Rubyを作るときのCの…えー、WindowsのCライブラリから来ている
結局としては、テキストであるという判断をどの層で誰がやるかという話に過ぎない

385 名前:352 mailto:sage [2008/10/04(土) 19:33:12 ]
>>384
そっか、C言語のライブラリのせいなのね・・・



386 名前:340 mailto:sage [2008/10/04(土) 19:36:58 ]
ん?レス番残ってた 340です。

387 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 19:42:25 ]
1.9はstdioを捨てたと聞いたが、そうするとテキストモードに関する
状況は変化するの?


388 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 18:24:44 ]
>>387
ユニバーサルニューラインが入ってる。
www.garbagecollect.jp/~usa/d/200808c.html#id20080825_P1

389 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 19:15:07 ]
>>388
> "r"なら、"rt"と"rb"のどちらの扱いになるかはプラットフォーム依存。
> とりあえず、いわゆるUNIXなら"rb"と同様に、mswinやmingwなら"rt"と同様になる。

ちょw 問題解決されてなくないですか?

390 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 19:17:52 ]
ああ、違うのかな?
前みたいに適当に"r" だけだとどっちにしろ環境依存になるから、
バイナリかテキストかを意識しなくちゃいけないわけか

391 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 20:19:17 ]
テキストだとエンコーディングも意識する必要があるしのう。
文字=バイトで凝り固まった外人どもよりはこのへん日本人は意識しやすいだろうけど。



392 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 00:31:26 ]
>>389
本質的に問題なのはテキストモードを区別するという慣習だから、
Rubyだけで解決できる性質の問題じゃない。
Windows全体で「CRLFを使うのはやめよう」という流れにならない
限り解決しようがない。


393 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 01:51:56 ]
結局いつものRubyが糞なのが根源的な原因だけど対応するのが面倒だから
個々の環境(というかいつもWindows狙い撃ち)で対応しやがれというお話ですね。

394 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 02:00:53 ]
俺の場合、Windows(つかSJIS/CP932)一辺倒の頃は
むしろ「LFなんて糞、CR+LFに統一しる」と思ってた
今はそうでもないが、昔の俺以外にもそう思ってる奴は居るかも

395 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 02:31:20 ]
ラインをフィードしただけで「行の先頭」に行くUNIXは変
キャリッジをリターンしただけで「次の行」に行く旧Macも変
「カーソルを行頭に戻してから行を送る」というCRLFを具現したWindowsが意味的に妥当

とは思う
っていうか電脳化した時点でCRLFという概念作っとけよもう
何が悲しくてコンピュータでタイプライタのエミュレーションなんぞしなければならんのか



396 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 02:38:48 ]
SJISが普通に使われるWindowsでは2バイトあった方が誤読しにくい

397 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 08:21:28 ]
>>395
それは端末を中心に考えているから。だから「行頭に戻る」と「次の行に移動する」をわけて考えてしまう。
UNIX作ったひとはテキストを扱うことを考えてて、それでテキストの「行末」が欲しかっただけだから、
それを1文字で表現したことは、そんなにおかしな話ではない。


398 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 10:46:45 ]
CP/Mの呪縛?
EOFとかCR/LFとか


399 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 11:10:10 ]
read() より下のレイヤであれこれやる Windows が変、ってことで

400 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 12:31:57 ]
>>394
統一しる!までは思わんがw
どっちかというと、UNIXとかの人にバイナリで読む時とかちゃんと、"rb" つけてくれ!頼む!って感じ。
いろんなソースいじっていると本当にそう思うw

401 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 12:33:07 ]
なーーんか、そろそろRuby本スレみたいな雰囲気で
初心者さんが質問しにくくなってきている気がするので移動しませんか?w

402 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 17:10:17 ]
s = "s = 'abcde'"; p s; eval(s); p s
を実行すると↓のようになります。

"s = 'abcde'"
"abcde"

eval の中の変数をローカルにするには、eval(s) の代わりに
eval("def tmpfunc() #{s} end; tmpfunc")
などとするしかないでしょうか?
関数持ちだすのもなんかアレな気がして…

403 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 17:20:59 ]
sandbox_binding = (class << Object.new; binding() ; end)
s = "s = 'abcde'"

p s
# => "s = 'abcde'"

eval(s, sandbox_binding)

p s
# => "s = 'abcde'"

なんか汚してもいいBindingでevalするのはどうでしょう

404 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 09:05:04 ]
>>403
> class << Object.new
こんな書き方できるんだ...
「class <<」の右側って任意の式がかけるの?


405 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 11:37:07 ]
ただの特異クラス定義だから、任意の式というか、メソッドを追加したいオブジェクトを返すものを1個書く
class Hoge < HogeBase
は「HogeBaseクラスに以下のメソッドを追加したHogeクラスを作る」という感じなのに対して
class Hoge << hoge
は「オブジェクトhogeに以下のメソッド動作を一時的に追加して便利に使うぞ」という感じ

irb> s = 'nyonyonyo'
irb> class << s ; def hello; puts 'hello!'; end; end
irb> s.hello
hello!
irb> s = nil
irb> s.hello
NoMethodError: undefined method `hello' for nil:NilClass
from (irb):5
from :0




406 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 17:43:46 ]
gemsのライブラリ見ると、シングルトンでこれ使ってるの多いな

module HogeModule
 class << self;
    def application
      @application ||= HogeModule::Application.new
      @application
    end
    def application=(app)
      @applicaiont = app
    end
 end
end

で、
HogeModule.application.run
みたいな感じで使う

407 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 17:44:23 ]
>  class << self;
 class << self

408 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 20:29:39 ]
初心者の質問じゃないですけど、いいですか?

class Foo
 class << self
  def hello; puts "hello"; end
 end
end



class Foo
 def self.hello; puts "hello"; end
end

は、Foo.hello の挙動はまったく同じですけど、内部での仕組みもまったく同じですか?
class << self のほうは、Fooの特異クラスにインスタンスメソッドを追加することで、
def self.hello のほうは、Fooの特異メソッドを定義するという説明になるかと思いますが、
両者はまったく同一のことを行っているという解釈でいいでしょうか。


409 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 20:36:41 ]

  ☆ チン

        ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・)<  初心者の質問じゃない質問まだー?
             \_/⊂ ⊂_)_ \____________
           / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
        |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
        |           .|/


410 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 20:36:43 ]
いいです

411 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 21:39:55 ]
厳密に言うと

class Foo
 class Bar
  def hello; puts "hello"; end
 end
end



class Foo; end
class Foo::Bar
 def hello; puts "hello"; end
end

くらいは違う。


412 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 22:38:52 ]
両者の違いが問題になるようなクラス設計をしてはいけないな

413 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 02:30:36 ]
>>411の上と下って具体的にどう違うの?

414 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 11:48:06 ]
最近、Rubyの勉強を始めた者です。
先週、RubyのMLに登録し「Welcome to our ruby mailing list」のメールも届いたのですが、
その後メールが1件も届きません。ひょっとしてRubyのMLって、コマンドをサーバーに送って
取得しないといけないのでしょうか?それとも、さらに何か手順を踏まないとメールが
届かないのでしょうか?メールに記載されている説明には、過去の投稿が欲しいなら
サーバーにコマンドを送れ、とは書かれているのですが・・・

415 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 11:57:01 ]
RubyのML、じゃどれかわからん。
MLによっては単に流量が少ないだけということもある。

本来流れているはずのメールが届いてないというなら、そのWelcomeメールに書いてある問い合わせ先に質問メールを投げればいい。



416 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 12:00:10 ]
ruby-ext と ruby-math、非公式の rubyist ML は投稿がないな

正直なとこ、ML は何か発言したい人向けだね
初心者さんはこのスレとかマニュアル独学とかしたほうがいいかも

417 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 12:09:57 ]
>>415,416
素早いレス、ありがとうございます。
登録したのは「ruby-list」です。単に投稿が少ないだけなのか、
それとも自分が何かミスをしていて、メールが届かないのかが分からなかったもので。
とりあえず、MLの管理者に問い合せてみようと思います。

418 名前:デフォルトの名無しさん [2008/10/08(水) 12:27:55 ]
ウインドウズでのrakeの実行が遅すぎる、どうにかならないのか?


419 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 12:42:41 ]
>>418
まだCPUが1個なんですか?
Rails開発者はデュアルコアとか普通ですよ?

420 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 13:22:04 ]
gem update のメモリ超絶消費問題が長らく直らなかったくらいだしなあ
メイン開発者たちのマシンでは一瞬あるいは2秒程度で終わってると考えるのが妥当だな
あるいはWindowsのRuby使ってないとか

421 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 13:26:07 ]
Windows使ってる人なんてハイスペックが当たり前で気にならないかもしれない

422 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 13:51:19 ]
>>418
一応回答すると、WindowsのRubyスクリプトで処理開始までが馬鹿みたいに遅いのはどうにもならない
これを改善する方法を見つけられたらRubyは広まると思うんだがというかWindowsで常用したい

423 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 13:55:23 ]
Core2Duo使ってるレベルだったら遅さなんて感じないけどね

424 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 14:09:02 ]
>>423
俺の環境はCore2Duoだが、体感できるぐらいには遅い

425 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 14:09:55 ]
同じマシンにLinuxとか入れて同じRubyスクリプトを実行するとほぼ一瞬なんだよねえ
Cライブラリとかの違いの関係だと思うんだが、残念だな



426 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 14:18:53 ]
WindowsでRubyってそんな遅いの?
ならJRuby使っても気にならないんじゃね

427 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 14:24:38 ]
>>424
そうなってくると、HDDとかにも問題があるんじゃない?

428 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 14:27:56 ]
VistaはVistaで遅い

429 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 14:46:30 ]
ttp://pc11.2ch.net/test/read.cgi/tech/1215531152/692

@echo off
echo %time%
ruby -e "puts 'hello!'"
echo %time%
ruby -v
echo %PROCESSOR_IDENTIFIER%

を実行して

11:35:25.96
hello!
11:35:26.96
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
x86 Family 6 Model 8 Stepping 6, GenuineIntel

だそうな

430 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 15:04:16 ]
15:03:20.45
hello!
15:03:20.46
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
x86 Family 6 Model 15 Stepping 11, GenuineIntel

XP SP2でこれだったぞい?

431 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 15:04:51 ]
そりゃキャッシュに乗ってるかどうかで全然違うよ

432 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 15:10:08 ]
>>429
どうもその人だけみたいな感じだね
いろいろな要素が絡み合って遅くなってるのかな

433 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 15:19:17 ]
>>430
それはCPUが充分速い
>>429はPentium3だぞ

434 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 15:22:24 ]
>>432
「Windows Ruby 遅い」でぐぐるといくつか症例がある模様
ttp://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=Windows+Ruby+%E9%81%85%E3%81%84&num=50

まあ、2GHzくらいあれば気にならないのだろう
あるいは、「CPUが遅い=OSがWin2000とか」だとかいうのの何かが関連してるのかも

435 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 15:26:11 ]
>>433
424みたいのがいるから、CPUの問題じゃなく、遅くなる何かがあるんじゃないか?



436 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 15:30:25 ]
全員が遅いなら、それこそ「WindowsのRubyは遅くて使えねえ」という大合唱になってるはずだしな
大丈夫な人と大丈夫でない人がいる程度には、ポピュラーな別の原因があるんだろう

437 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 15:38:24 ]
VistaだったらWindows defenderの影響とか

438 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 17:53:12 ]
>>433 うちのK6-2 450MHzだと
17:06:29.07
hello!
17:06:29.16
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-mingw32]
x86 Family 5 Model 8 Stepping 12, AuthenticAMD

Ruby 1.8.7 0.09秒

17:09:52.56
hello!
17:09:52.86
ruby 1.9.0 (2008-10-04 revision 19669) [i386-mingw32]
x86 Family 5 Model 8 Stepping 12, AuthenticAMD

Ruby 1.9.0-5 0.30秒

MingwでRuby 1.9.0をビルドすると90分くらいかかる


439 名前:424 mailto:sage [2008/10/08(水) 18:47:36 ]
書き忘れてたけど、遅くなるのは基本的に初回起動(キャッシュされてない状態)のとき
キャッシュ無しの状態でrake打つと、だいたい3〜5秒ぐらいかかる
二回目以降は0.1秒くらいしかかからない
(WindowsXP Core2Duo 1.86GHz メモリ1024MB ruby-mswin32)

440 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 19:24:07 ]
rakeとか言われても何も比較できない

441 名前:デフォルトの名無しさん mailto:sage [2008/10/08(水) 21:30:31 ]
K6-2 450Mhz Windows 2000
rakeって使ったこと無いけど
Ruby 1.9.0-5 に標準でついてるので
何も無しにrakeすると
No Rakefile found で即終了
約2.5秒 (何回実行しても)


442 名前:デフォルトの名無しさん [2008/10/09(木) 01:22:27 ]
>>419
Core2Duoでも、めちゃくちゃ遅いぞー
今のままではwin上でrailsは開発できない

443 名前:デフォルトの名無しさん [2008/10/09(木) 01:36:48 ]
>>427 >>429 >>430
>>432 >>441
windows上での開発環境のことじゃ。
rake db:migrate reset または ruby script/console
でもしてみな。一日が8時間に感じるほど遅いぞ。
最新のスペックのPCでもだ。win上で開発はできん。

win上でまともに開発できない今のままのrailsでは、
railsバブルははじけるだろうな。もうはじけている予感はあるが...
マーケティング戦略に踊らされたやつの負けー


444 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 01:41:46 ]
根本的にいろいろ勘違いしてるな

445 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 04:54:55 ]
勘違いしているというより、railsを叩くストーリーを語りたかったんだろう。
「この物語はフィクションです。実在の人物・団体・CPU・プログラミング言語とは
一切関係ありません」



446 名前:デフォルトの名無しさん [2008/10/09(木) 08:09:36 ]
Rubyが遅いのはもうすでにだれもが知っている事
耐えられないならJRubyを使えば速くなる




447 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 08:28:26 ]
JRubyの方が速いのは事実だが、
RailsをJRubyで動かすとCRubyより遅くなる。

448 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 08:32:02 ]
結局Pyhon+Zopeが最強ってことか

449 名前:デフォルトの名無しさん [2008/10/09(木) 09:20:44 ]
>>448
Python + Django
だろー

Railsはscaffoldであっと今に雛形が作れるが、
Djangoはもっと強力で管理ページもあっという間に作れる。



450 名前:デフォルトの名無しさん [2008/10/09(木) 10:08:18 ]
>>445
客観的に見れない信者のような連中が出てきたらそろそろかな?
前出のように、ウインドウズ上で仕事として開発するのは無理。
LinuxとWinでrake db:migrateの比較をしてみればすぐわかる。

Railsは、初回は金利0その後徐々に金利が上がるローンと似ている。


451 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 10:29:10 ]
Railsの「生産性」を叩いてる人はVBAで納品される受注プロダクトもあるということを聞いたら卒倒するんだろうなと思ってる
なんでソフトウェアの全部が全部銀行並みの規模でクオリティでなければならんのん?

452 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 10:59:38 ]
なんでWindows上でRailsを実行させないといけないのかがそもそも理解できないわけだが。

453 名前:デフォルトの名無しさん [2008/10/09(木) 11:14:20 ]
>>452
開発環境の事を言っているんだろ
rakeは本番稼動では使わないからなー
Rails信者はMac信者という事だろう
しかしほとんどは最近Mac信者になったやつらだろうが



454 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 11:33:24 ]
Windows → クライアントサイドアプリケーション以外ヘボい
PC-UNIX系 → サーバサイドプログラム以外ヘボい
MacOSX → どっちも不可もなく見掛けが気持ちよい

という単なる選択の収斂の結果に過ぎない
WinでPC-UNIX系プログラムがきちんと動けばWindowsを使うって
あるいはクライアント環境がもっさりでなければPC-UNIXを常用する

WindowsをクライアントにしてUNIX系OSにログインするというのが最強ではあるが、それだとメンテ対象が2つになるんだよね

455 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 11:50:30 ]
WindowsやLinuxとかを我慢して使ってる人のほうがよっぽど信者だと思う…



456 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 12:14:08 ]
質問だよ

適宜更新される200字くらいの説明文が常に200個くらいあって、
それらに特定の日本語群(更新は稀で候補100個くらい)が含まれてるかどうかチェックしたいんだ
スレ全部読み込んで、注目したい語を含むレスがあるかどうか調べて抜き出す、みたいなノリだと思ってくださいな

どうするのが速くて妥当かなあ?
検索語100個の正規表現100個を200文全部に適用する? 2万回正規表現起動?

457 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 12:20:30 ]
数KBのテキストに100回適用を200回とかはRuby的には屁でもない日強茶飯事だと思うぞ
ライブラリの中ではもっとえげつない、力技としか思えない正規表現動作がゴロゴロ…

選択100個入りの正規表現と100個の正規表現をif文で回すのと text.include?(s) とどれが速いかとかそういうのは知らない






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

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

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