Ruby 初心者スレッド ..
[2ch|▼Menu]
375:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/04 14:08:35
この場合、「一般的であることを示す」のは至難の業だわな。
いったい何百例出せばいいのかと(数例で納得するのは逆におかしい)。

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

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

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

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


379:デフォルトの名無しさん
08/10/04 16:20:17
IDの出ないスレは自演が楽だな。

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

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

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

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

383:340
08/10/04 19:03:40
なんか、俺のせいで半荒れ?でスマナイ

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

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

385:352
08/10/04 19:33:12
>>384
そっか、C言語のライブラリのせいなのね・・・

386:340
08/10/04 19:36:58
ん?レス番残ってた 340です。

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


388:デフォルトの名無しさん
08/10/05 18:24:44
>>387
ユニバーサルニューラインが入ってる。
URLリンク(www.garbagecollect.jp)

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

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

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

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



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


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

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

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

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

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

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


398:デフォルトの名無しさん
08/10/06 10:46:45
CP/Mの呪縛?
EOFとかCR/LFとか


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

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

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

402:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/07 09:05:04
>>403
> class << Object.new
こんな書き方できるんだ...
「class <<」の右側って任意の式がかけるの?


405:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/07 17:44:23
>  class << self;
 class << self

408:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/07 20:36:41

  ☆ チン

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


410:デフォルトの名無しさん
08/10/07 20:36:43
いいです

411:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/07 22:38:52
両者の違いが問題になるようなクラス設計をしてはいけないな

413:デフォルトの名無しさん
08/10/08 02:30:36
>>411の上と下って具体的にどう違うの?

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

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

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

416:デフォルトの名無しさん
08/10/08 12:00:10
ruby-ext と ruby-math、非公式の rubyist ML は投稿がないな

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

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

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


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

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

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

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

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

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

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

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

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

428:デフォルトの名無しさん
08/10/08 14:27:56
VistaはVistaで遅い

429:デフォルトの名無しさん
08/10/08 14:46:30
スレリンク(tech板: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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/08 15:04:51
そりゃキャッシュに乗ってるかどうかで全然違うよ

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

433:デフォルトの名無しさん
08/10/08 15:19:17
>>430
それはCPUが充分速い
>>429はPentium3だぞ

434:デフォルトの名無しさん
08/10/08 15:22:24
>>432
「Windows Ruby 遅い」でぐぐるといくつか症例がある模様
URLリンク(www.google.com)

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

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

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

437:デフォルトの名無しさん
08/10/08 15:38:24
VistaだったらWindows defenderの影響とか

438:デフォルトの名無しさん
08/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
08/10/08 18:47:36
書き忘れてたけど、遅くなるのは基本的に初回起動(キャッシュされてない状態)のとき
キャッシュ無しの状態でrake打つと、だいたい3〜5秒ぐらいかかる
二回目以降は0.1秒くらいしかかからない
(WindowsXP Core2Duo 1.86GHz メモリ1024MB ruby-mswin32)

440:デフォルトの名無しさん
08/10/08 19:24:07
rakeとか言われても何も比較できない

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


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

443:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/09 01:41:46
根本的にいろいろ勘違いしてるな

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

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




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

448:デフォルトの名無しさん
08/10/09 08:32:02
結局Pyhon+Zopeが最強ってことか

449:デフォルトの名無しさん
08/10/09 09:20:44
>>448
Python + Django
だろー

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



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

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


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

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

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



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

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

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

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

456:デフォルトの名無しさん
08/10/09 12:14:08
質問だよ

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

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

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

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

458:デフォルトの名無しさん
08/10/09 12:45:02
>>455
会社にあるPCを見て見ろ、Macなんてあるか?
ほとんどないだろう、どこの会社だって同じだ。
Railsが新しい物好きな連中以外に普及するためには、
Winでまともに使えないとだめなんだろうね。
個人的にはRailsのIDEがもっとコード補完が上手になってもらいたい。

結局、
小規模サイト:PHP
大規模サイト:Java


459:デフォルトの名無しさん
08/10/09 12:47:53
候補や説明文がよほど膨大なら、
Karp-Rabin法も考えられるかもしれんが・・・・・まあその程度なら

460:デフォルトの名無しさん
08/10/09 12:52:25
yieldはなんだかんだ言って遅いから
語群を|でつなげた正規表現200回起動がよさそうに思う
ブロック使わずにif文ずらずら並べるならわからんけど

461:デフォルトの名無しさん
08/10/09 12:53:39
個人的用途を除くと、イメージ的には
Macはデザイン、クリエイター、
Linuxは学術用
UNIXはサーバー
Windowsはビジネスその他って感じだな

462:デフォルトの名無しさん
08/10/09 13:10:44
Ruby/Tkで
EntryウィジェットやTextウィジェット上でドラッグすると
フリーズします。原因として考えられることは何でしょうか?

463:デフォルトの名無しさん
08/10/09 13:18:57
ドラッグしたときの動作をプログラムしてないからじゃね

464:デフォルトの名無しさん
08/10/09 13:20:10
語群があまり変わらないという話だから、俺も>>460に賛成

465:デフォルトの名無しさん
08/10/09 13:22:01
>>456
正規表現でやるならRegexp.unionっていうのがあるよー

466:デフォルトの名無しさん
08/10/09 13:22:15
学術的なウンタラカンタラならともかく、業務サポートかカジュアルな用途だろうしな(いやわからんが)

467:デフォルトの名無しさん
08/10/09 13:28:13
Regexp#union は p で表示したときの正規表現が自動生成ですって感じでとても不安でイマイチ使う気になれない

irb> arr = ['a', 'bb', 'ccc', 'dddd', 'eeeee']
irb> p Regexp.new(arr.join('|'))
/a|bb|ccc|dddd|eeeee/
irb> p Regexp.union(*arr.map{|e| Regexp.new(e)})
/(?-mix:a)|(?-mix:bb)|(?-mix:ccc)|(?-mix:dddd)|(?-mix:eeeee)/

きちんと動くのかね、これ

468:デフォルトの名無しさん
08/10/09 13:29:26
Ruby用の高速HTTPライブラリ/サーバMongrelの作者もあきれているようだ。

URLリンク(slashdot.jp)
より抜粋
。 Ruby on Railsに関わる人々の技術力の低さや閉鎖性、また「どいつもこいつもRoRでアホなソーシャルネットワークを作って商売にしたがる」風潮に愛想が尽きたとのことで、今後はRubyから手を引き、PythonやFactor、Luaに軸足を移すそうだ。


469:デフォルトの名無しさん
08/10/09 13:31:22
はいはい初心者スレだよここは

470:デフォルトの名無しさん
08/10/09 13:35:36
>>468
Javaを知らないからそんなことになる
Javaを知ってればRoRはJavaで負けたスーツ連中が持ち上げてるだけだと早々に気づけたろうに
いい社会勉強になったことだろう

471:デフォルトの名無しさん
08/10/09 13:36:44
>>467
動くよそりゃw
inspectがごちゃごちゃするのには確かに同意するが

472:デフォルトの名無しさん
08/10/09 13:41:02
>>468
みんな、そこはもう大分前にとおりすぎたのだがwww

473:デフォルトの名無しさん
08/10/09 13:41:51
そもそも ?-mix: って何よマニュアルに書いとけよって感じではある > Regexp.union

474:デフォルトの名無しさん
08/10/09 13:42:54
>>468
あとZed Shawの記事はネタなので釣られないようにな。
単体の記事で見ると本当にそう思っているのかと思うもんだよ。

よくはてなブックマークとかでたくさんブックマークされている、煽り気味のエントリーとか
他の記事よむとネタじゃんってすぐにわかる、みたいなの

475:デフォルトの名無しさん
08/10/09 13:43:20
Rubyしか知らないと悲惨なのにはこっそり同意しておく

476:デフォルトの名無しさん
08/10/09 13:46:23
CとJavaとPerlとPHPとPythonとSchemeはオレオレライブラリを作れる程度には齧っておいたほうがいい

…多いな

477:デフォルトの名無しさん
08/10/09 13:48:55
PerlとPHPは真っ先に除外できるな

478:デフォルトの名無しさん
08/10/09 13:53:31
>>477は何もわかってない
キャッチセールに真っ先に引っかかるタイプ

479:デフォルトの名無しさん
08/10/09 13:59:54
アレな方々が流入してくるとすぐスレがおかしくなるな

480:デフォルトの名無しさん
08/10/09 14:02:47
PerlやPHPを知らないっていうのは一番悲惨なパターンのRubyユーザーなのでは…

481:デフォルトの名無しさん
08/10/09 16:01:00
PerlやPHPを生半可に知ってる方が、変にRubyに入れ込んじゃって不幸になる気もする。

482:デフォルトの名無しさん
08/10/09 16:29:26
Rubyって何に適してる言語なの?

483:デフォルトの名無しさん
08/10/09 16:53:30
>>482
オブジェクト指向テキスト操作ネット通信言語です

484:デフォルトの名無しさん
08/10/09 17:09:03
>>470
もっともなご意見です。
周りがみんな騒ぐので、こっそりRailsを触って見たが、
scaffoldまでは良かったがIDEが無いのでこつこつとコーディング
をしなければ行けず、こんなんで生産性がいいか?
と思っちゃいましたね。あと遅いし。

会社ではJavaで開発しているが、Eclipseを使った開発は超快適、
Ctl+スペースを打てば自動的にコードを挿入してくれるし、自動的に関数のヘルプも出るしね。
したい事を実現するためのライブラリはほぼ間違いなくのあるし、その数も桁違いに多いし。

Rubyに比べれば見た目のコーディング量は多いが、ほとんどはIDEが自動的に挿入したものだから、
実質は同じ量か下手すれば少ないだろう。

Railsは、一時の流行じゃないかなと思うね。
結局、ビジネスを企んでいるいるやつらに、うまく乗せられたんだよ。
「うそも100回言えば真実となる。」と誰かが言ったが、これが当てはまる気がする。生産性に関して言えば。


>>458
に一部賛同
PHP or Python:小規模
Java:大規模
でしょう。

どうもRails + Macで、私は先端を行くというような事を見せ付けているような感じが嫌いだ。
所詮、他の方の意見どおりwinでまともに使えなければこれ以上流行はしないだろう。


485:デフォルトの名無しさん
08/10/09 17:14:11
RailsはRubyのヘビーユーザーが適当に活用して小ぶりなアプリケーションを連続生産するのに向いている
RailsのためにRubyを学ぶような人や、Railsのソースを読んでも何してるかさっぱりわからんような人が使ってもどうにもならんな

という魔術師(志向)の人向けのフレームワークだったはずなんだが、当初からそのはずだったんだが、誰が捻じ曲げたのやら…

486:デフォルトの名無しさん
08/10/09 17:14:19
すごい初歩的な質問していい?
ゲーム作ってみたいと思って、つい最近Ruby始めたんだけど。
講座HPみたいなところで、Ruby/SDLでつくったスクリプトをexeファイルにしても、
Ruby/SDLのdllファイルが全部同じディレクトリにはいってないと動作しないって書いてあったんだけど、
てことは作ったゲーム配布するときはdllファイルも全部つけて配布しなきゃいけないってこと?

487:デフォルトの名無しさん
08/10/09 17:19:27
>>484
MacOSXでRubyを使うことに決めた人は、もともとPC-UNIX上でRuby使い倒してたような人が多い
そういう人の使うRoRは、その人のプロダクト作成に非常に役立つものになると思うよ

>>486
Exerbでひとつにまとめることが…DLLはできないのかな
というか、DLLは普通実行ファイルと一緒に配布するもんなんじゃね

あとRubyでゲーム作るのはマゾさんのすることなんだけど、あなたはマゾですか?

488:デフォルトの名無しさん
08/10/09 17:22:03
>>484
Railsを擁護する気は全くないけれど
一応、IDEを使ってRailsの開発することはできるよ(EclipseとAptana)

>>486
その通り

>>487
俺は自分のことをSだと思ってたが、本当はMだったのか

489:デフォルトの名無しさん
08/10/09 17:41:03
URLリンク(www.domo2.net)

490:デフォルトの名無しさん
08/10/09 17:45:19
>>487
>>488
回答ありがとうございますm(__)m
一緒に配布するんですか〜。16個くらいあったんでまとめられれば見栄えがいいんだけど。

Rubyはゲームに向いてないですか;
大学の講義でRubyを軽く使うらしいから、ついでにと思って始めたんだけど・・
Rubyはわかりやすいって評判ですけど、Rubyでプログラミングに慣れてからC言語勉強した場合、
共通点が多くてサクサク覚えられますか?それとも違いが大きくて効率悪いですか?

491:デフォルトの名無しさん
08/10/09 17:49:36
>>490
人によるんじゃないかな
共通してる部分も確かにあるけど
片方をしっかり身に着けない内に他に手を出すと
ごっちゃになって混乱しそう

492:デフォルトの名無しさん
08/10/09 17:49:46
C言語を使って便利な機能を便利な概念でまとめたのがRubyだ

493:デフォルトの名無しさん
08/10/09 17:54:36
>>491
>>492
回答ありがとうございます。
ある程度身につくまでRubyで頑張ってみて、限界感じたらC言語勉強することにします〜

494:デフォルトの名無しさん
08/10/09 18:02:07
C→Rubyは曖昧さを感じて戸惑う
Ruby→Cは堅苦しさ、面倒くささを感じる

495:デフォルトの名無しさん
08/10/09 18:07:31
>>490 >>491 >>492 >>493
CとRubyはまったく用途が違うだろう。無理に使う事ができるけどね。
Cを勉強するならC++じゃないか。
Rubyでゲームか? 話にならない。
ゲーム開発している人間に聞いてみな。笑われるだけだ。

後々の資産として、C++を先に勉強したほうが得だと思うよ。


496:デフォルトの名無しさん
08/10/09 18:24:53
またC++厨が…
C++を学ぶのとCを学ぶのでは意義が違うと何度言えば

497:デフォルトの名無しさん
08/10/09 18:26:11
そろそろスレタイ嫁

498:デフォルトの名無しさん
08/10/09 18:30:38
>>496
説明してみぞ




499:デフォルトの名無しさん
08/10/09 18:34:39
うぜぇ

500:デフォルトの名無しさん
08/10/09 18:37:16
こういう香ばしい人って、なんでみんなageるんだろうね

501:デフォルトの名無しさん
08/10/09 18:45:48
>>484,488
業務でAptana使ってるが、コード補完はやはりイマイチ。
候補が無駄に多いうえに欲しいのが出てこなかったりする。
特に、ハッシュで引数与える関数は全滅だ。
この辺はNetBeansも大差ない。
abbrevのあるemacs系の方がまだ使える。

Eclipse + JDT で幸せなJava開発環境を味わってる人には物足りないだろう。

502:デフォルトの名無しさん
08/10/09 19:29:58
Rubyと共に使うなら純Cだろうね。
C++はそれ単体で使うもの。
ゲーム作りならC++オンリーがパフォーマンス的に一番だろうなあ。
ただ、Rubyでも処理速度がさほど求められないならゲームに一応使えると思うが
ゲーム用のライブラリはCかC++だろうしなあ。
一応、RPGツクールはRuby使えるのもある。

503:デフォルトの名無しさん
08/10/09 20:03:58
>>502
Ruby/SDLでだいたい満足してたから、他のゲーム用ライブラリ触ったことないんだが
CやC++にはそんなに良いライブラリがあるのか?

504:デフォルトの名無しさん
08/10/09 21:45:12
とりあえず、SDLはC/C++でも普通に使える。

505:デフォルトの名無しさん
08/10/10 10:57:55
>>503
SDL

506:デフォルトの名無しさん
08/10/10 18:18:11
わざわざCからSDL使わなくても、Ruby/SDLでよくね
性能が要求されるなら直接DirectX使うべきだし

507:デフォルトの名無しさん
08/10/10 18:27:06
ゲームってのはけっこうハイレベルな感じに常時性能が要求されるもんだと思ってたが違うのか?

508:デフォルトの名無しさん
08/10/10 18:29:11
ゲームによるよ
3Dでエフェクトも激しいアクションゲームなんかは大変だけど
そうじゃないゲームもたくさんある

509:デフォルトの名無しさん
08/10/10 18:36:43
専用スレがあるんだからそっちでやればよくね?

510:デフォルトの名無しさん
08/10/10 18:47:04
>>508
マジレスするとそうでもない
画像表示してブラーかけてるだけのADVなのにDirect9c対応グラフィックボード要求するとかもうアホかと

511:デフォルトの名無しさん
08/10/10 18:55:54
「DirectGraphicsの初期化に失敗しました」は昨今けっこう有名なメッセージだと思う

512:デフォルトの名無しさん
08/10/10 19:29:48
誘導:
【Ruby/SDL他】Rubyでゲーム制作・総合スレッド
スレリンク(gamedev板)

513:デフォルトの名無しさん
08/10/10 20:31:46
>>510
それはその例がそういうゲームってだけだろ

514:デフォルトの名無しさん
08/10/11 10:27:03
玉金破裂ゲーム

515:デフォルトの名無しさん
08/10/11 15:25:43
Arrayを継承したクラスのオブジェクト.find_all{|e| e.cond?}

がArrayを継承したクラスのオブジェクトに自動でならないことにほんのりがっかりした

516:デフォルトの名無しさん
08/10/11 15:30:32
>>515
gem のライブラリで時々見るな、そういう中途半端実装
そこはレシーバのコレクションクラスのオブジェクトを作って返せと…なんのための独自配列なのかと…

517:デフォルトの名無しさん
08/10/11 16:00:49
>>515
find_all は Array じゃなくて Enumerable のメソッドだから
実際のところ自分のクラスは関係ない


518:デフォルトの名無しさん
08/10/11 21:09:09
Arrayは継承するな…とcompositionを使えと

519:デフォルトの名無しさん
08/10/11 21:59:40
Arrayを継承するってどういうシチュエーションなんだ??


520:デフォルトの名無しさん
08/10/11 22:08:31
なんで継承を毛嫌いするかね

521:デフォルトの名無しさん
08/10/11 22:09:37
いらんメソッドが付いてくるから

522:デフォルトの名無しさん
08/10/11 22:13:23
アホすぎて笑えない

523:デフォルトの名無しさん
08/10/11 22:13:39
継承は怖い

524:デフォルトの名無しさん
08/10/11 22:18:59
>>520
作るのは簡単だが使うときに面倒
あと作り直すときにも面倒

525:デフォルトの名無しさん
08/10/11 22:20:50
すごいとこまできてるねRubyistはw

526:デフォルトの名無しさん
08/10/11 22:21:13
>>515
ハッシュからハッシュを返すselectやmapはたまに欲しくなる

527:デフォルトの名無しさん
08/10/11 22:22:01
カンペキに活用した継承は非常に強力だが、ほとんどの継承はそうではない
っていうか、組み込みクラスは継承しないで委譲しろ、継承は自作クラス間でどんどんやれ

528:デフォルトの名無しさん
08/10/11 22:23:05
本当にアホばかりで嫌になる

529:デフォルトの名無しさん
08/10/11 22:24:49
ライブラリを書くくらいに使ってる人がいないってだけ

530:デフォルトの名無しさん
08/10/12 10:56:19
Integerのaとbのobject_idを常に同じにする方法ってありますか?
a.object_id = b.object_id
みたいなことがやりたいんですが

531:デフォルトの名無しさん
08/10/12 11:51:41
>>530
object_id を同じにしたい理由が良くわからんが…
普通に代入すれば同じになるでしょ。

今の実装では Fixnum の場合は即値だから必ず同じ値になるんじゃないかな。



532:デフォルトの名無しさん
08/10/12 12:05:34
>>530
できませんという答が妥当な気がする

>>531の言うように、Ruby の整数の数値の値とオブジェクトIDは紐付けられてる
整数の 1 のオブジェクト ID は常に一定だ

533:デフォルトの名無しさん
08/10/12 13:33:03
>530
多分参照を扱いたいんだと思うが
そういう場合は配列やオブジェクトにくるんで受け渡しするのがベスト。

534:デフォルトの名無しさん
08/10/12 13:57:54
>>531,532,533
ありがとうございます
そのままでは無理でしたか

ちなみに、何故やりたかったかというと(railsの話になりますが)
class A; attr_accessor id; end
class B; attr_accessor a_id; end
と二つclassがあり、AのidとBのa_idを同じにしたかったのです。
今までは

A.transaction do
@a.save!(ここで、a.idに代入される)
@b.a_id = @a.id
@b.save!
end

としていましたが、

@b.a_id.object_id = @a.id.object_id(みたいなことができれば。。)
A.transaction do
@a.save!
@b.save!
end

とできると、updateでもcreateでもtransaction内が共通になるため、2つのclassをまとめたclassが定義しやすいなと

535:デフォルトの名無しさん
08/10/12 15:39:09
>>534
なぜそうなってしまうのかわからない。
スキーマはどうなってるの?


536:デフォルトの名無しさん
08/10/12 16:27:25
>>534
ごめん
その話聞いても,idとa_idを同じオブジェクトIDにしたい理由がわかんないわ
それにそもそも代入やFixnumみたいなやつ以外で同じオブジェクトIDになることない気がする

なにか勘違いしてるんじゃ…

537:デフォルトの名無しさん
08/10/12 16:47:40
そんなことできたらそれはIDって言わないんじゃないの

538:デフォルトの名無しさん
08/10/12 16:56:36
要するに,例えばaとbっていう変数があったときに
b.object_id = a.object_id
としておけば
a = 10
としたときに,bも自動的に10になってくれませんか?

っていう話でしょ

object_idはそんな用途に使えません

539:デフォルトの名無しさん
08/10/12 17:01:37
>>538
すげー
よく検討ついたな

540:デフォルトの名無しさん
08/10/12 17:54:01
>> 538
その通りです
分かりにくい説明で申し訳ないです

用は参照を使いたかったんですが。。

541:デフォルトの名無しさん
08/10/12 18:32:47
なんかa_idって名前が気になるな
すっげー憶測だけど、Bはインスタンス変数でAを持つのが素直な設計だったりしない?
それならB#save!で@a.save!するだけで済むから楽なんだけど

542:デフォルトの名無しさん
08/10/12 18:38:16
>>538
おまえ、ほんとエスパーだな。
おれはさっぱり読み解けなかった。

543:デフォルトの名無しさん
08/10/12 19:03:44
>>534
railsというかActiveSupportはそういう関連づけを自動化してくれなかったっけ?

あるいは>>541のようにしてB#a_idは@a.idを返すようにするとか。

544:デフォルトの名無しさん
08/10/12 20:48:21
>540は自分の頭にあるオブジェクトのイメージをER図やクラス図で
さらっと描きだせるくらいのレベルになるまでARを封印すべきだ。
もし仕事でやってるなら合掌。


545:デフォルトの名無しさん
08/10/12 21:00:36
>>541, 543
確かにModelはそんな感じの設計です。
@a.b = @b
で関連付けて、
@a.save!
とすればbも入るってことですよね。

ただ、viewに2つのmodelを分けて書くのが面倒だったので、調べているとActivePresenterなるpluginを発見し
URLリンク(jamesgolick.com)
利用してみたところ、さきほどの参照のようなことをしたいなと思った次第です。

このpluginは2つのModelを結合してくれるもので、
 @ab = AB.new(params[:ab])
 @ab.save
で、AもBもsaveできちゃうよということでした。
ただ、DBの保存時に決定される@ab.a_idと@ab.b_a_idが関連づかずに困っていたというわけです。
あまり、plugin自体には手を入れてくなかったので、
@ab.a_idと@ab.b_a_idが同じだよということができれば良いなということでした。

546:デフォルトの名無しさん
08/10/12 23:11:18
プライマリキーの値を変更するな、テーブルの設計からやり直せ

547:デフォルトの名無しさん
08/10/12 23:24:26
>>545
自己レスです
とりあえず、参照は素直にはできないということは分かりました。
ありがとうございました。
もう少し試行錯誤して、無理なら普通のARにしてみます。

548:デフォルトの名無しさん
08/10/13 01:37:23
>>544
初心者として気になるんだけど
そのレベルになるまではどんな感じやるのが上達する?

549:デフォルトの名無しさん
08/10/13 01:44:19
>>548
1週間に3日書く
今週はRubyスクリプト書いたり改良の試行錯誤が無かったなあという週が無いという状態にする

制御構造覚えたらマニュアル見つつたまに使う程度のカジュアルさでももちろん一向に構わないが、
その場合はRubyが上達することはないだろうし、上達するほど頑張る理由もそもそも無いことだろう

550:デフォルトの名無しさん
08/10/13 01:56:31
Rubyのクラス分けやモジュール分けはてきとーで良いということがわかった頃から
スクリプト作るの早くなったような気がする

今でも特異メソッドとかわからんが
インスタンスメソッドとクラスメソッドしか作ってない
Proc はライブラリで要求されないと作らない
yield は使う機会が無いのでわけがわからない

551:デフォルトの名無しさん
08/10/13 06:21:15
yield は each 作ったりしたらすぐ覚える

552:デフォルトの名無しさん
08/10/13 06:31:29
おれはテストを書く気が全く起こらないんだよなあ…
少しづつでも書けばいいんだろうけど
つまらないから全く続かない…

553:デフォルトの名無しさん
08/10/13 07:56:06
どう考えても

 テストを書くのに悩む時間 >> 変なバグで悩む時間

なのでテストを書く理由がない俺
他人様に提供するライブラリ書くんじゃない限り要らないもんだと割り切ってる
書き方指南がないということは本当はみんな不要だと思ってる証拠

554:デフォルトの名無しさん
08/10/13 08:32:04
>>553
書き方指南いろいろあるじゃん
本にもwebページにも

俺も有用であるという自信はないが

555:デフォルトの名無しさん
08/10/13 08:43:49
テスト書くためのスクリプトでテスト書く説明するだけだしなあ
お前そんなスクリプトなんて普段絶対書かないだろ、というのが多々…(特にテスト駆動)

556:デフォルトの名無しさん
08/10/13 08:54:11
スクリプト序盤から中盤での書き方がよくわからないのがテスト駆動の特徴
というかMockとかあのへんを理解しないと関数的スクリプトのテストしかできん

557:デフォルトの名無しさん
08/10/13 09:23:47
色々書き方の作法もあるけど、むしろ形式に捕らわれず自由にテスト書くようにしたら
それはそれで楽める部分もあると思う。

558:デフォルトの名無しさん
08/10/13 09:42:39
俺はテスト書かなくて困るのってリリース後なんだよなぁ。
デグレ出るたびに書いときゃよかったって思う。

559:デフォルトの名無しさん
08/10/13 10:07:10
ちゃんとテストが書けるようになったら、もう上級者だよ。
つまり上級者になるためには、テストがきちんと書けるようにならないといけない。

おれはまだうまく書けないんだけどな。
UIのテストなんか、どうしたらいいのかさっぱりだ。

560:デフォルトの名無しさん
08/10/13 10:36:29
他人様のライブラリのgitのtestディレクトリとか眺めてるとよくわかる

本文コードの追加変更に対してテストが異常に適当というか不足
時間かけてまでして作りたくないかどうすれば網羅するか考えるの面倒なんだろうな

561:デフォルトの名無しさん
08/10/13 14:01:54
テストなしでロジック修正とかコードの整理(リファクタリング)とか、
怖くてできない体になった。


562:デフォルトの名無しさん
08/10/13 15:01:22
ZenTest試用中。なかなか良さげ。
URLリンク(mono.kmc.gr.jp)
URLリンク(zentest.rubyforge.org)

gem install ZenTest
でインストール。

563:デフォルトの名無しさん
08/10/13 17:14:28
>>561
わかります

564:デフォルトの名無しさん
08/10/13 17:30:17
テスト書くとメソッド単位でしか検証できないからめんどくさい
あと、GUIアプリのTestってどうやるの?

565:デフォルトの名無しさん
08/10/13 17:35:59
できない

566:デフォルトの名無しさん
08/10/13 17:55:46
入力の自動化をすれば出来る。
が、チェック項目をリストにして人力でやったほうがなんぼかマシ。

567:デフォルトの名無しさん
08/10/13 18:30:55
RubyでGUIつーと、テスト以前に環境が貧弱だからのう。
WebならSeleniumとか。


568:デフォルトの名無しさん
08/10/13 18:32:59
>>564
自動でマウス動かしてクリックしたりフォーム埋めたりするよプログラムを併用する
稀にどうしても自動化できないところが出てくることがあり、そういうときは漏れのない操作一覧図を書いて手動

569:デフォルトの名無しさん
08/10/13 18:58:10
>>564
ビューとコントローラを極力分離すれば、ある程度までは機械的にテストできる

570:デフォルトの名無しさん
08/10/13 19:02:19
GUI自体をテストしたい場合は?

571:デフォルトの名無しさん
08/10/13 19:15:36
GUI自体のテストって具体的にどんなの?

572:デフォルトの名無しさん
08/10/13 19:52:47
マウスクリックのタイミングとか

573:デフォルトの名無しさん
08/10/14 02:10:57
サブネットマスクにマッチするような判定って簡単に出来ますか?
例えば、
"192.168.0.45".in_mask?("192.168.0.0/24") # => true
"192.168.0.45".in_mask?("192.168.0.0/29") # => false
となってほしいのです。


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

4712日前に更新/256 KB
担当:undef