5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Ruby について Part 3

1 :デフォルトの名無しさん:03/01/08 14:45
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

Ruby Home Page
http://www.ruby-lang.org/ja/

<前スレ>
Rubyについて Part 2
http://pc3.2ch.net/test/read.cgi/tech/1028906179/

<過去スレ>
Rubyについて
http://pc3.2ch.net/test/read.cgi/tech/1012096319/

2 :デフォルトの名無しさん:03/01/08 14:47
<関連スレ>

rubyを語るスレッド 2
http://pc.2ch.net/test/read.cgi/unix/1040496222/l50

goRua(Ruby/Gtkによる2chブラウザ)ってどうよ。
http://pc.2ch.net/test/read.cgi/unix/1008120213/l50


3 :デフォルトの名無しさん:03/01/08 14:49
3げっと

4 :デフォルトの名無しさん:03/01/08 18:30
ttp://rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name=Ruby+in+2002
どうよ?

5 :IP記録実験:03/01/08 21:28
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。

6 :デフォルトの名無しさん:03/01/09 01:05
age

7 :デフォルトの名無しさん:03/01/09 01:08
>>315答えは出てるけど。

8 :デフォルトの名無しさん:03/01/09 01:25
>467
すでに・・・すでに!?

9 :IP記録実験:03/01/09 01:43
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。

10 :デフォルトの名無しさん:03/01/09 01:44
名スレの予感

11 :デフォルトの名無しさん:03/01/09 01:56
漏れ達がひろゆきを愛したように、ひろゆきも漏れ達を愛してほしい!

12 :デフォルトの名無しさん:03/01/09 02:52
IP表示すればいいじゃん。
田舎者の煽りは酷い。

13 :デフォルトの名無しさん:03/01/09 03:37
>>138
メガビだからって安心なわけじゃないような。

14 :デフォルトの名無しさん:03/01/09 06:57
なんか誤爆が激しいが、
2ch壊れたのか?

15 :デフォルトの名無しさん:03/01/09 12:32
>>139
で結局IP記録に賛成なの?

16 :デフォルトの名無しさん:03/01/09 16:09
前スレの RDT だけど、JRuby のパーサを使おうという話は出てないのかな。

17 :デフォルトの名無しさん:03/01/09 18:05
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────

18 :デフォルトの名無しさん:03/01/09 21:09
去年は2回しか新バージョンがリリースされなかったんだが、
ちょっと淋しいねえ。
いいかげん 1.8 も出してもらいたいし。

19 :デフォルトの名無しさん:03/01/09 23:01
被ってる上にかなり出遅れてるし。

20 :デフォルトの名無しさん:03/01/10 00:55
>>567
そういう状況なってみないと分からんよ。

21 :デフォルトの名無しさん:03/01/10 01:40
>>16
JRuby触ってみたけど、結構いい感じ。
まだまだ細かいところで未完成の部分はあるけどな。
でも、起動がスゲー重いよ。
Javaの遅さにRubyの遅さがプラスされて…。
$ jruby -e "puts 'hello, world'"
だけで、数秒かかるのはJRubyの所為というよりやっぱJavaの所為かな…。
でも、何となく期待している。
Jythonに負けるな!

まあ、本家Rubyにほぼ完全対応って感じでないと、
パーサとして使うのは難しいかも知れないね。

22 :デフォルトの名無しさん:03/01/10 02:00
>>21
irb・rtags・RDocのパーサー(と言えるか怪しいけど)は
Rubyの文法に完全対応していないけど、そこそこ使える。
JRubyは完全対応しないといけないだろうけど、
結局、適材適所じゃないかな。

ちなみに、Rubyのパーサーに本当に完全対応させるのはかなり面倒だと思う。
Rubyではローカル変数等に日本語が使えるので、そこまでやりはじめると…。

23 :デフォルトの名無しさん:03/01/10 09:36
某○○は相手が事実を認識しえたと判った段階でレス汁w

24 :デフォルトの名無しさん:03/01/10 09:56
某○○は相手が事実を認識しえたと判った段階でレス汁w

25 :デフォルトの名無しさん:03/01/10 10:14
>>65
むしろ懐かしさすら覚えるよ。

26 :デフォルトの名無しさん:03/01/10 10:48
って言うよりも俺たちがひろゆき氏を助けなければ
こんな面白い遊び場作ってくれたんだから・・・何とかしてやろ〜ぜ!

27 :デフォルトの名無しさん:03/01/10 11:30
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
はいっはい、日本生命の時からみんな、
その場でぎゃーぎゃー騒いでばかりで
何も勉強しようとしないよね、2ちゃんねらーって。
┏                                       ┓
  http://www.geocities.co.jp/Technopolis-Mars/6820/hoken/
┗                                       ┛
ここがよくまとまているから、熟読して出てこい。
読んで理解するのに3時間かかるかもしれんが
それだけの価値はあるぞ。できたら
┏                                       ┓
   http://cocoa.2ch.net/hoken/kako/987/987605232.html
┗                                       ┛
批判要望板で「2ch以外も含めて、俺が見たなかで最高のスレだ。」
と絶賛されたスレだ。ジオの元スレだからな。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


28 :デフォルトの名無しさん:03/01/10 11:57
うわ、まじだよ。

29 :デフォルトの名無しさん:03/01/10 12:50
こんなスタイルになるのかな?

誰かが他の掲示板で密告→第三者が2chでスレ建て→祭り

30 :デフォルトの名無しさん:03/01/10 15:40
>>22
ruby本体にparser API みたいなのが欲しいねえ

31 :デフォルトの名無しさん:03/01/10 16:18
なるほど

32 :デフォルトの名無しさん:03/01/10 22:42
ひろゆき
仕事紹介してくれ

33 :デフォルトの名無しさん:03/01/10 22:49
IP取ろうが取るまいが
捕まるときは捕まるし
別に今までと大して変わらんと思われ。
ただ、今はちと過渡期なので
まわりが様子見な感じだけど
すぐに元に戻ると思われる

34 :デフォルトの名無しさん:03/01/10 23:46
ぼすけて

35 :デフォルトの名無しさん:03/01/10 23:52
切っ掛けは匿名だったかもしれないけど、今ではそんなに重要性ないでしょう。
アングラな内容も1ジャンルって感じだし。
昔はカテごとに雑談できるのも(目に付くところでは)珍しかったし
いち早くUG系から離れたのもあるんでない?


36 :デフォルトの名無しさん:03/01/10 23:59
我ながら好き勝手にほざいてしまいますた・・(汗
もし実現しても回線細そうですしね。。。



37 :デフォルトの名無しさん:03/01/11 03:11
新しいwww.ruby-lang.org、python.jpの後追いみたいで何だか...。

38 :デフォルトの名無しさん:03/01/11 06:01
>>30
まつもと氏はRiteでは用意するとか言っていた気がする。
この辺のライブラリの整備のされ方はpythonと大きく違うよね。

今はFreeRIDEのようにripperを使うのが一番良い気がする。

39 :デフォルトの名無しさん:03/01/11 09:23
氏ね

40 :デフォルトの名無しさん:03/01/11 09:23
   /⌒∞、 ずさー♥
  ./ ゚∀~・:ヽ、 
  ι、,,,,、,,,,,,、,,,,ゝ

41 :デフォルトの名無しさん:03/01/11 09:59
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────

42 :デフォルトの名無しさん:03/01/11 11:21
快速たん(・∀・)イイ!!

43 :デフォルトの名無しさん:03/01/11 12:24
さん
10桁トリップの時に、トオルさんとマァヴさんが、話してましたわね、

44 :デフォルトの名無しさん:03/01/11 12:56
スレ違いのレスはよくないな。
ここは快速スレですよ

45 :デフォルトの名無しさん:03/01/11 15:19
Vector 見てたら、
C/C++統合開発環境 WideStudio が
「Ruby 言語(v3.20から)」も使えるようになったようですな。

誰か使ってみた人いる?
ちょっと試したけど、Rubyのサンプルが見あたらないので訳わからん。

46 :デフォルトの名無しさん:03/01/11 15:35
何で前スレスレストかかってんの?

47 :デフォルトの名無しさん:03/01/11 15:41
sports3鯖死んでる??
国内サッカー板が見れない…

48 :デフォルトの名無しさん:03/01/11 18:39
>>45
前に見たときは Linux 版しか対応してなかったけど、
Windows 版も出てるようだから試してみるね。

49 :デフォルトの名無しさん:03/01/11 19:24
>>45
おなじく ruby によるサンプルをはげしく希望

50 :デフォルトの名無しさん:03/01/11 23:33
お前のは議論じゃないよw
「これ言っていいですか?」 「これ言うとヤバイですか?」 って他人に聞いてるだけw

寝るのがイヤなら、教えて厨は初心者板に逝ってねw

51 :デフォルトの名無しさん:03/01/11 23:33
もしこれが実行されたらにちゃんは閉鎖だな、きっと

52 :デフォルトの名無しさん:03/01/11 23:43
wって2ちゃん発祥なの?
ださくないか?
(笑)もザサイから、(^^)がナウイよ。

53 :デフォルトの名無しさん:03/01/12 00:26
>>52
なわけねーだろ。
ネット初心者がこーゆーとこに来るのは、どうかと思うぞ。

54 :デフォルトの名無しさん:03/01/12 02:22
吉と出るか凶と出るか

55 :デフォルトの名無しさん:03/01/12 02:26
レスありがとう。
俺素人だからよくわからないが
アク禁にしないのは何か理由るのかな・・?

56 :名無しrubyist:03/01/12 03:10
荒らしと見分けるために、名前欄に何か入れるようにしない?

>>45
ガイシュツだったような気がする。

つか、WideStudioって結構使われているの?
使いやすい?

57 :45:03/01/12 04:16
今検索したら、前スレ666で既出でしたね。
すみませぬ。

#これ荒らしなの? 2chがイカレタのかと思ってた。

58 :case 名無し::03/01/12 04:46
http://pc3.2ch.net/test/read.cgi/tech/1040297337/110
> 荒らしというより、スクリプトのバグでは?IP実験を始めた途端に他のスレの
> 書き込みがPC板全般に流れてきてるみたい。
という噂が。

59 :名無しrubyist:03/01/12 04:57
>>57
うん、荒らしらしい。
詳しくは自治スレ見るとわかるよ。

プログラム板自治スレッド
http://pc3.2ch.net/test/read.cgi/tech/1029122103/

60 :デフォルトの名無しさん:03/01/12 09:40
昨日、ruby-talkに登録してみたら、本日分だけで70通以上来てびびった。
これと比較するとruby-listはおとなしめだな。

興味を持った話題。
Win32Serial Extension Library for Ruby
WindowsのシリアルポートをRubyで使うライブラリ。
ttp://grub.ath.cx/win32serial/

Rubyで制御とかできるのかな。

61 :デフォルトの名無しさん:03/01/12 09:57
だれかに突っ込むの手伝ってくだいよぉ

62 :デフォルトの名無しさん:03/01/12 09:58

実質的には上告はもう無理らしい。

うれしいなぁ。




63 :デフォルトの名無しさん:03/01/12 11:23
>>56
徹底できるわけがないから無駄なことやめて unix 板へでも逝け。
ここはもう人いないよ。

64 :名無しrubyist:03/01/12 12:57
>>63
それもそうだな。
俺、窓使いだけどおじゃまさせてもらいます。

65 :デフォルトの名無しさん:03/01/12 20:46
あーっはっは!
久しぶりに笑ったよ!

66 :デフォルトの名無しさん:03/01/12 20:48
公開トリップ?そんな魅力も何にもないトリップなんて
わざわざ使う人いないと思うけど…
どこで公開されてるの?そんな糞トリップ公開されてもねぇ
同じ人が串でも使っているんじゃ?

67 :デフォルトの名無しさん:03/01/12 20:58
お疲れさまでした〜

68 :山崎渉:03/01/13 18:38
(^^)

69 :irbについて:03/01/14 15:48
irbを電卓代わりに使いたいのですが
自前のモジュール(関数郡)を組み込んだり
一度プロセスを終了しても変数の値を保存しておいたりすることはできますか?

70 :デフォルトの名無しさん:03/01/14 15:58
1. 普通に require すればいい
2. Marshal や PStore

71 :山崎渉:03/01/15 17:46
(^^)

72 :irbについて :03/01/15 20:43
>2. Marshal や PStore
使った変数すべてを自動的に保存復旧したいのです。
a=3
exit
再起動
p a
3
みたいに。

73 :デフォルトの名無しさん:03/01/15 22:52
>>72
irb で打ち込んだのを全て保存しておいて、
起動時に読ませるようにすれば?

74 :デフォルトの名無しさん:03/01/16 02:19
>>72
irb を終了させなければいいのでは?

75 :デフォルトの名無しさん:03/01/16 05:31
>>72
local_variables()を使えばいけそう。
と思ったが、ローカル変数だと、ちいと辛いな・・
bindingでうまくいかないかな?

ちと、やってみます。

76 :75:03/01/16 06:16
require 'pstore'

class VarsStore
  def initialize(storefile)
    @store = PStore.new(storefile)
  end
  
  def save(bind)
    hash = {}
    eval("local_variables", bind).each do |name|
      val = eval("#{name}", bind)
      if val.equal?(self)
        next
      end
      hash[name] = val
    end
    @store.transaction do
      @store["local"] = hash
    end
  end

-----
つづく

77 :75:03/01/16 06:17
つづき
-----

  def load(bind)
    hash = nil
    @store.transaction do
      hash = @store["local"]
    end
    hash.each do |key, val|
      $varsstore_val = val
      eval("#{key} = $varsstore_val", bind)
    end
  end
end


78 :75:03/01/16 06:21
requireして、
セーブ
VarsStore.new("hoge").save(binding)
ロード
VarsStore.new("hoge").load(binding)

とする、今のところBindingを指定しないとだめ。
ローカル変数にダンプできないオブジェがあるとエラーを吐く。
保存できるクラスは限定させた方がいいかな?(NumericかStringのみとか、、、)
あとは、適当に改造してみてね。>>72

79 :デフォルトの名無しさん:03/01/16 10:17
Win32APIを使う必要が出てきたのですが、
Win32API.new に関するリファレンスは
どっかに転がってないでしょうか?

80 :デフォルトの名無しさん:03/01/16 12:35
>>79
ほれ。
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Win32API


81 :デフォルトの名無しさん:03/01/16 16:22
http://www.ruby-lang.org/~rubikitch/refm/
ここのページのファイルって拡張子が.gzだけど、どうして?
(ダウソして中身みてみたらアーカイブになってなかったけど)

82 :デフォルトの名無しさん:03/01/16 17:15
>>81
君がダウンロード時に自動的にgzip展開するブラウザを使ってるんだろう。

83 :デフォルトの名無しさん:03/01/17 02:17
>>81
http://www.ruby-lang.org/ の設定がヘボいから。

84 :デフォルトの名無しさん:03/01/17 14:27
RubyUnit の Ruby 標準添付バージョン Test::Unit では、
サンプルコードとして以下のようなものが添付されてます。

-- tc_adder.rb

class class TC_Adder < Test::Unit::TestCase
..

--

ファイル名、クラス名なんですけども、もはや
ファイル名の頭に「tc_」、クラス名の頭に「TC_」っていうのは、
業界標準なんでしょうか。

85 :デフォルトの名無しさん:03/01/17 16:59
ruby-modeでC-jをenterでできるようにしたいのですが、.emacsにどのような設定をすれば
よいのでしょうか。

86 :デフォルトの名無しさん:03/01/17 18:56
>>84
TestCaseの略では。

87 :デフォルトの名無しさん:03/01/17 19:54
C-m

88 :デフォルトの名無しさん:03/01/17 23:55
>>84
漏れは RubyUnit(runit) の表記の方が好き。
Adder -> AdderTest のように suffix をつける。

89 :デフォルトの名無しさん:03/01/18 06:56
>>84
Adder -> TestAdderって付ける漏れは標準でないのか…。
そして、ファイル名はtestadder.rbだし。

ファイル名とクラス名を同じにするのは普通なんじゃないの?
それとも漏れがJavaなんかやっている所為でそれになれているから?

90 :デフォルトの名無しさん:03/01/18 09:42
ちゅうか、RubyUnit じゃなくて Test::Unit をRuby の標準添付ライブラリに採用するっていうのが
どうにも違和感がある。RubyUnit からの移行は、Ruby の動的な言語仕様のおかげで、移行のための
コードもそんなに書かなくて済むけど(今後、XML::Dom だの出てくるだろう)ちょっとな。

(メソッド名でも assert_equals, assert_equal という違いがある なんで統一しない? < Test::Unit)

今更、Rubyにライブラリのネーミング規則云々っていうのは似合わないような気がしてる。

91 :デフォルトの名無しさん:03/01/18 10:00
eaocf-18p157.ppp15.odn.ne.jp

92 :デフォルトの名無しさん:03/01/19 00:18
Rubyって最近、すごい分野の狭い話題で1冊の本になってるのが多いですよね。
Ruby+GtkとかeRubyとかRuby+XMLとか…
あんなんでよく本が1冊も書けるなあ、っていうか、買う人いるの?
他の言語の開発者だったら、あんなの1冊ずつ買ってたら絶対置き場所なくなる。

93 :デフォルトの名無しさん:03/01/20 10:37
>>92
そっか? Amazonで、Javaあたりで検索すれば、Swingで、Appletで、DBで、XMLで、
Webサービスで、……という具合なんだが。アプリケーションドメイン毎に本が出る
のは当然じゃないだろか?

94 :デフォルトの名無しさん:03/01/20 12:27
>>92
入門書だけで10冊や20冊ぐらいある言語を見ると、
そっちの方がある意味おかしくないかい?

まあ、256本のやつは確かに異常だけどさ…。
でも、極道編は俺にとって面白かったぞ。
UnitTestの入門書としては。

95 :デフォルトの名無しさん:03/01/20 22:45
www.ruby-lang.orgもやっと最近流行のWeblog風になりましたけど、なんだかまだ
寂しげですね。素直にZope使ってはいかがですか?

96 :デフォルトの名無しさん:03/01/20 23:13
確かに他の言語と比べたらアート的な部分に関して(RWiki といい)今ひとつモダンな感じがしないね。

97 :デフォルトの名無しさん:03/01/20 23:48
そーだね。Ruby界隈はカタい雰囲気ある。
HTMLはStrictじゃないと許さん、みたいな。

98 :デフォルトの名無しさん:03/01/21 00:50
オンラインでリファレンスを見てると、たまにやたらと重いときがあるんで、
ローカルで見るようにしよと思ってドキュメントをダウソして解凍してみたら
形式がRDでやんの。
HTMLの形式でも配ってくれればいいのに。

HTMLのやつもあったけど、リンク切れがあちこちにあるし、
ひとつのファイルに連結されてるからIEじゃ重くて使いにくいし。

99 :Rubist@田中ノーベル賞:03/01/21 01:38
そんなチミにはミラーサイトをお勧めする

http://www.vsl.gifu-u.ac.jp/freeman/misc/ruby-docs-1.6.7/refm-ja/


100 :デフォルトの名無しさん:03/01/21 01:41
オブジェクト指向原理主義、オープンソース界のアルカイーダ
HTMLはStrictにしる!ドキュメントはRDにしる!!
Windows、Mac OSは消去してLinux/BSDにしる!

スローガン:
 欲 し が り ま せ ん 勝 つ ま で は

101 :デフォルトの名無しさん:03/01/21 03:10
rd2 で HTML に変換すれば?

102 :Rubist@カラアゲ:03/01/21 04:20
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ

103 :Rubist@カラアゲ:03/01/21 04:21
>97
俺のようなマイルドな奴もいるぜ、ヒヒヒ。。

104 :98:03/01/21 09:14
http://www7.tok2.com/home/misc/ruby.html
よくさがしてみたら、Windows版のHTML Helpってのがあった。

105 :デフォルトの名無しさん:03/01/21 09:45
>103
ごめん, 厨のこと忘れてた。

106 :デフォルトの名無しさん:03/01/21 12:27

美的感覚といえば、Ruby はインデントの主流が2なのもどうかと思う。
正直見づらい。

(RDフォーマットは賛美両論ありながらも、俺は気に入ってる)

107 :デフォルトの名無しさん:03/01/21 13:45
>>106
賛否、だろ。
賛美なら一論。


108 :デフォルトの名無しさん:03/01/21 17:15
>>106
何の言語でもインデント 2 で書きますが何か?
…趣味で作るやつは、だけど。

109 :デフォルトの名無しさん:03/01/21 18:04
>>108
原理主義者だから、GNUスタイルのインデント 2なのね。

110 :デフォルトの名無しさん:03/01/21 18:34
ruby は2がしっくりくるなぁ
C あたりは4

111 :デフォルトの名無しさん:03/01/21 18:42
文字列にある文字列が含まれてるか判断するのに正規表現より
index()を使ったほうが速いだろうと思っていて、いままで全部index()
を使ってきたけど、念のために速さを調べてみたら正規表現のほうが
速かった。
ちょっとショック。

if str.index('hoge') ...

if str =~ /hoge/ ... # こっちのほうが速い

112 :デフォルトの名無しさん:03/01/21 19:49
>>109

あれ、linux カーネルは tab の 8 で書かれてなかったっけ。

113 :デフォルトの名無しさん:03/01/21 20:56
インデントにスペース使う奴はドキュソ

114 :デフォルトの名無しさん:03/01/21 21:30
オレはスペース派。
違う環境に持っていってもインデントが崩れないのが好き。

115 :デフォルトの名無しさん:03/01/21 22:29
>>111
え?ほんとう?

116 :デフォルトの名無しさん:03/01/21 23:49
>>111
String#indexをBM searchでも使って書き直して送るべし。



117 :デフォルトの名無しさん:03/01/22 09:32
>>115
調べなおしてみたら、文字列が短いときとか最初のほうでマッチするとき
は、index()のほうが速かった。

118 :デフォルトの名無しさん:03/01/22 09:56
if text.upcase == 'HOGEHOGE'
if text =~ /^hogehoge$/i

大文字小文字無視して等しいか調べるときも、正規表現が速かった。
1.7ではcasecmpというのがあるみたいだけど、入れるのが面倒だから
調べられない。

119 :名無しさん:03/01/22 10:18
http://i.loveruby.net/ja/ruby/codingstyle.html
にrubyのコーディングスタイルについての文章がある。
俺も3スペースインデントしてたけど、最近は2スペースだな。

ま、どんな言語でもその標準ライブラリが何で書かれてるかに
従ったほうがいいと思う。あんまり変なスタイルだと、それだけ
で気も悪がられる気がする。
だからCで外部モジュール書くときもついK&Rで書いてしまう。


120 :デフォルトの名無しさん:03/01/22 10:24
2スペースだと、年とってから苦労しますよ。4ぐらいにしときなさい。

121 :デフォルトの名無しさん:03/01/22 11:14
普段、抽象化抽象化と煩い奴に限って、
インデントをタブ文字で抽象化しないのは何故だ?


122 :デフォルトの名無しさん:03/01/22 13:30
環境依存だからです。

123 :デフォルトの名無しさん:03/01/22 14:15
スクリプト言語でタブインデントする根拠は希薄

124 :デフォルトの名無しさん:03/01/22 16:59
スクリプト言語でオブジェクト指向する根拠は希薄

125 :デフォルトの名無しさん:03/01/22 20:39
動的オブジェクト指向は書き捨てでも役に立つぞ

126 :Rubist@カラアゲマイルド:03/01/23 05:40
Rubyyyy>>>>>>>>>>>>>>>perl.
HTML>>>>>>>>>>>>>>>>>>rd

127 :デフォルトの名無しさん:03/01/23 10:29
http://mapbrowse.gsi.go.jp/mapsearch.html
で検索できる地形図から2.5万、5万、20万の地形図を合成
して作ろうと思っています。
例えば、5339は東京(20万分1地勢図)で、
5339??(??は00〜77)が東京(1/20万地勢)に含まれる1/2.5万地形図で、計64枚あります。
(メッシュコードの概念はhttp://www.biodic.go.jp/kiso/col_mesh.html参照)
Web上からは以下で落とせます。
for j in {1..4}
  do
    for i in {00..77} 
      do 
        wget -q "http://mapbrowse.gsi.go.jp/mapimagef25k/5339/5339${i}${j}.png"
      done
  done
このpng画像は1/2.5万地形図を約*4分割したもので、
1→南西、2→南東、3→北西、4→北東となっていて、4枚合わせて2.5万になります。
(*:実は少しダブって分割されています。)


128 :デフォルトの名無しさん:03/01/23 10:31
一気に合成する方法として、例えば、ImageMagick の
% convert -crop (ca)x(db)+a+b orange.gif blue.gif
の機能を使って、
png画像→1/2.5万
1/2.5万→1/5万
1/2.5万→1/20万
1/5万→1/20万
とする方法が考えられます。
この変換スクリプト、誰か書いてくださいませんでしょうか。
僕にはそこまでできません。

す み ま せ ん が 誰 か 助 け て く だ さ い 。






129 :デフォルトの名無しさん:03/01/23 10:39
winのmutexみたいに、プロセスをまたいで排他処理を行う方法は
rubyには無いのでしょうか?

(flockくらいしか方法は無いのでしょうか?)

130 :127:03/01/23 10:40
メッシュコードの概念は
http://nlftp.mlit.go.jp/ksj/mesh.html
の方がわかりやすいかも。

% convert -crop
を使うのは2.5万の4分割がダブっているからです。
きれいに分割できればあとはタイルのようにくっつけるだけですが
僕にはできませんでした‥‥‥












131 :デフォルトの名無しさん:03/01/23 10:55
>>111でindex()より正規表現が速いって書いたものです。

↓このように書いてたものを
while true
text.index('hoge')
end

↓このように書き直してみたら、正規表現とほぼ同じ速さになりました。
t = hoge
while true
text.index(t)
end

リテラルがあると遅くなるのかなぁ?

132 :デフォルトの名無しさん:03/01/23 12:46
>>129
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Mutex
これでいいか?thread.rbにあるので、
require 'thread'
して、使ってね。

133 :デフォルトの名無しさん:03/01/23 12:49
>>132
それはプロセス内でしか使えないのでは?

134 :デフォルトの名無しさん:03/01/23 13:08
>>129
RAAで、semaphoreとかSysV IPCとか入れて探してみれば。



135 :デフォルトの名無しさん:03/01/23 13:16
>>133
あ、勘違いスマソ。
プロセス間ね、スレッド間だと思っていた。

136 :デフォルトの名無しさん:03/01/23 13:40
勘違いばかりなので責任感じて…

>>134さんが言っているのはたぶん、
http://www.ruby-lang.org/raa/list.rhtml?name=sysvipc
これのことでしょ。
でもプラットフォームによっては使えなさそう…。

flockもプラットフォームによるので、、まあ、UNIX系なら問題ないか。
つか、簡単に使えるのがあったら、CGIがめちゃくちゃ楽になるな〜。

137 :デフォルトの名無しさん:03/01/23 15:09
>> 131
> リテラルがあると遅くなるのかなぁ?

構文解析結果のノードの中の文字列をそのまま使用できないので、
毎回、'hoge'文字列のコピーが行われます。
変数を使用する場合は、その変数の値の文字列が
そのまま使用されます。


138 :山崎渉:03/01/23 19:58
(^^)

139 :デフォルトの名無しさん:03/01/24 11:13
>>137
> 構文解析結果のノードの中の文字列をそのまま使用できないので、
> 毎回、'hoge'文字列のコピーが行われます。

補足すると、文字列自体はStringオブジェクトの間で共有されるので、
文字列のコピーというよりは、Stringオブジェクトのコピーが
毎回行われるということです。


140 :デフォルトの名無しさん:03/01/24 11:40
arr.each{|i|...}
の|i|を省略可能にしてくれ。

141 :デフォルトの名無しさん:03/01/24 11:57
その場合決め打ちで i になるわけ? そんなのヤだ。

142 :デフォルトの名無しさん:03/01/24 16:33
文字列linesをファイルに書き出したいのですが
もっと簡潔に書けないでしょうか?
open("log", "w"){|f|
lines.each{|s|
f.puts s
}
}


143 :デフォルトの名無しさん:03/01/24 16:35
>>142
f.puts lines.join("\n")

144 :デフォルトの名無しさん:03/01/24 16:35
http://jsweb.muvc.net/index.html
 ★こんなサイト見つけました★

145 :デフォルトの名無しさん:03/01/24 16:36
>>144 ブラクラ

146 :デフォルトの名無しさん:03/01/24 17:17
>>143
joinはいらないのでは?

f.puts lines

147 :デフォルトの名無しさん:03/01/24 18:06
IO.popenで起動したプロセスが終了したのを認識するのってどうすればいいんでしょうか?
厨な質問でスマソ

148 :デフォルトの名無しさん:03/01/24 19:43
>>147
読み込みならそれが終わるまででいいんでないの。
書き出しなら先に終了されたらエラーになるでそ。

どうしてもやりたきゃ pid をとって waitpid。



149 :デフォルトの名無しさん:03/01/24 19:49
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Process

150 :デフォルトの名無しさん:03/01/24 20:58
スレ違いかもしんないですが、
Rubyで実装されたWikiを利用するとしたら、

* Tiki
* asWiki

どちらをオススメしますか? パッと見、似たような感じだけど……。
# RWikiはdaemonが必要だからちょっと敬遠。

amritaを使っているのでaswikiかなあ、とは思っているんですが、
「Tikiのほうがイイってば!」ってなポイントがあれば知りたい。


151 :デフォルトの名無しさん:03/01/24 21:00
☆★▼▽▲△●○■□◆◇◇◆□■○●△▲▽▼★☆

今月もお小遣いすくなってきたよ・・・トホホ。
そんなあなたにこのサイト!!あなたのお小遣いを
1円でも多くして見せます!!
損はさせません!!早速アクセスをどうぞ!
↓   ↓   ↓
http://finito-web.com/kanemou/index.html

☆★▼▽▲△●○■□◆◇◇◆□■○●△▲▽▼★☆

152 :デフォルトの名無しさん:03/01/25 00:02
>>150
Hikiっていうのもあるよ
http://www.namaraii.com/hiki/

153 :デフォルトの名無しさん:03/01/25 01:01
>>152
tDiaryのプラグインが使えるってのがちょっと面白い。

154 :デフォルトの名無しさん:03/01/25 17:36
>>127

合成するって、めちゃくちゃにでかい画像ファイルができそうだが。
Ruby でグラフィックを扱うなら Ruby/GD を使うのがいいよ。

155 :デフォルトの名無しさん:03/01/25 22:25
やっとrubyがわかってきますた。
慣れたら簡単やね

156 :デフォルトの名無しさん:03/01/26 01:35
RDのフォーマットってもうこれ以上変わらんのかな?
オブジェクト(イメージ)の埋め込みが出来てほしい
PODに乗り換えようかと思ったけど、
RDの方が分かりやすかった。
この仕様だけなんだけど。


157 :デフォルトの名無しさん:03/01/26 06:03
>>156
もともとはテキストの為のフォーマットなので、
画像を扱うというのは考えられていないと思われ。
RWikiとかみたいに自分で拡張する分には自由でしょう。


158 :デフォルトの名無しさん:03/01/26 06:09
>>156
まつもとさんは以前RDをこれ以上複雑にしたくない、
という趣旨の発言をしていたんで、RDという枠組みでは無理じゃないかな。
んで、拡張するのならRDという名前は捨ててくれ、ということだった。
だから、欲しいのなら君が拡張してRDじゃない名前をつけて発表すれ(w

159 :牛丼うまうま:03/01/26 12:58
>>127
http://ha9.seikyou.ne.jp/home/sweetbasil/topography-get-from-web
rubyとは関係ないので、他スレへ。



160 :デフォルトの名無しさん:03/01/26 17:53
名前付パイプでプロセス間通信をしようとしています。

サーバー[1] <- クライアント[多]

クライアント(送信がわ)のデータが512バイト以下であれば、
データは交じり合わない(アトミック)であるということは調べたのですが、
RubyのIOバッファはどのくらいの大きさなのでしょうか?
512バイトの書き込みをして、2回に分けて書き込みがなされることはないと
考えてもよいのでしょうか?

data = 512バイト以下のデータ
open('パイプのパス', 'w') do |f|
 while ...
  f.print data
  f.flush
 end
end

↑このようにして、手元の環境で、複数のプロセスからパイプに書き込んで、
実験したところ、データが混じりあうことは無かったのですが…

161 :160:03/01/26 18:30
>>160
syswrite()でやればOKそうな気がするので、syswrite()でやります。


162 :デフォルトの名無しさん:03/01/26 22:46
>>111
そういえば、以前、index を速くするパッチ投げたんですけど、
$= 見てなかったりいまいちだったんで、その後放置してたのを思い出しました。

あの頃から実装変わってるのかな?まあどうでもいいか。

163 :デフォルトの名無しさん:03/01/27 21:05
質問です。
-------------------------------
c:/src/hello.rb(↓中身)
def hello()
print("Hello ruby.\n")
end
-------------------------------
c:/src/call.rb(↓中身)
require "hello"
hello()
-------------------------------
c:/bat/hello.bat(↓中身)
ruby c:/temp/call.rb
-------------------------------
上記のような状態で3ファイル有り、
c:/bat>hello.bat(←コマンドプロンプト)
のような状態でバッチファイルを実行するとエラーになります。
そこで次のような形でとりあえず解決しました。
-------------------------------
c:/bat/hello.bat(↓中身)
cd c:
cd temp
ruby call.rb
-------------------------------
もしこれをRubyのみで解決する場合どのようにするのが賢いでしょうか?
どうか教えてください。
よろしくお願いします。

164 :デフォルトの名無しさん:03/01/28 06:08
>>163
いつもいつも言われることだが、エラーの中身を書け、と。
あと、ruby -vの結果も。ついでにWindows(だよな?)のバージョンも。

ついでなので、環境変数PATHの中身とrubyがインストールされている
場所も書くとなおよいだろう。


165 :デフォルトの名無しさん:03/01/28 06:28
>>163
環境変数 RUBYLIB に hello.rb のあるディレクトリを記述しる

166 :デフォルトの名無しさん:03/01/28 08:40
>>163
call.rbの先頭に次の一行追加する。

$:.unshift(File.dirname($0))

これで、call.rbと同じディレクトリにあるファイルを
requireするようになる。


167 :デフォルトの名無しさん:03/01/28 11:50
>>163
hello.batの中身を
ruby -IC:/temp C:/temp/call.rb
とするか、
ruby -CC:/temp call.rb
とする。

って、結局、*.rbはC:/srcとC:/tempとどっちにあるんだよ!


168 :デフォルトの名無しさん:03/01/28 12:20
Exerb 使って単一ファイルにすれ。

169 :163:03/01/28 12:59
こんなまともな回答が来るとは思ってなかったので、正直ビビっております。
昨晩の時点でレス無くてあきらめてたんで、なおさらでした。

まず、 >>164-168 皆様回答ありがとうございます。

んで、回答ですが、私の求めていた形は >>166さんのものでした。
私の作った*.rbを他者が使用する場合、
各環境によってbatやPATHを変更するのがどうにも具合が悪かったためです。
たくさん回答していただきありがとうございました。ホント感激です。
2chなめててスマソ。

>>164
まず質問の書き方を知りませんでした。
以後気を付けます。

>>167さん
srcです。tempじゃ無いです。
ごめんなさい、逝ってきます…

>>168さん
Exerbの存在を知りませんでした。
こういう方法もあるのですね。
勉強になります。ありがとうございました。


170 :デフォルトの名無しさん:03/01/28 13:09
>>162
> そういえば、以前、index を速くするパッチ投げたんですけど、
どこにあるの?

171 :デフォルトの名無しさん:03/01/29 02:43
>>166
$0より__FILE__の方が良いかも。

172 :デフォルトの名無しさん:03/01/30 00:29
Windows(not cygwin)でrdrt2使うとOpen3.popenでforkが実装されていないよとエラーになるのですが解決策があればおしえてください。

173 :デフォルトの名無しさん:03/01/30 07:29
>>172
http://ruby-talk.com/60221
http://home.nownuri.net/~phasis/popen/win32_popen_1.6.8.zip
http://home.nownuri.net/~phasis/popen/win32_popen_1.8.0.zip


174 :デフォルトの名無しさん:03/01/31 00:36
>>171
なんで?

175 :166:03/01/31 02:11
>>174
call.rbが更に別ディレクトリにある他のスクリプトからrequireされると、
File.dirname($0)では困るからとか?


176 :デフォルトの名無しさん:03/01/31 09:11
よいかどうかというより、意味が違う。
$0は最初に与えられたスクリプトファイル名、
__FILE__は現に実行中のファイル名(この場合はcall.rb)。
call.rbを基準にロードしたいなら、>>171のいう通りFile.dirname(__FILE__)。

はっきりいって散々外出。

177 :デフォルトの名無しさん:03/01/31 23:23
ありがとうございます。
win32 環境で rttool を利用する手順です。

(1) rttool をインストール
(2) win32_popen をインストール
(3) rd/tree.rb:20 を以下のように書き換える
TMP_DIR = ENV["TEMP"] || ENV["TMP"] || "/tmp"


178 :172 iなので2分割:03/01/31 23:26
(4) ~/.rd2rc の external_filterを以下のように書き換える

#pipe[0] .close だとブロックしてうまくいかなかった。。。
def external_filter (prog)
require "win32_popen"
pipe = IO.win32_popen3(prog)
pipe[0] .print self
pipe[0] .print "\C-z"
pipe[1] .read
end
(5) rt2 を実行する rt2.bat を作る
ruby %YOUR_RUBY_HOME%/bin/rt2 %*



179 :デフォルトの名無しさん:03/02/04 17:40
すいません。すごい馬鹿なこと聞きます。

たとえば、a.txtっていうファイルを作って、
そこに I have a pen って内容を書きたかったらどうしたらいいですか?
次の様に書いたら動きませんでした。

new_file = File.new("a.txt")
new_file.print("I have a pen")
new_file.close

180 :デフォルトの名無しさん:03/02/04 17:47
>>179
> new_file = File.new("a.txt")
open modeを省略すると"r"(読み込み)と解釈されるんで、当然書けない。


181 :デフォルトの名無しさん:03/02/04 17:51
>>180
これで2時間悩んでました。
ありがとうございました。

182 :デフォルトの名無しさん:03/02/04 17:53
>>178
> #pipe[0] .close だとブロックしてうまくいかなかった。。。
win32_popen3は三つのIO全部にpidをセットしてるので、どれかをcloseしよう
とすると子プロセスの終了を待ってしまう。

> def external_filter (prog)
> require "win32_popen"
> pipe = IO.win32_popen3(prog)
stderr垂れ流しでもいいんなら、1.8.0ではIO.popen(prog, "r+")でいけるよ
うになってるはず。


183 : :03/02/07 06:23
rubi-1.6.7で
makeの時わざとconfigure消してautoconfigしたらreadlineの所で
エラーになったんだけど、これってreadlineが古いから?(1.??使用)
ちなみに、元々入ってるConfigreで、./configre、make、make test
だと問題無い。


184 :デフォルトの名無しさん:03/02/07 08:32
>>183
rubiの話は専用スレへ。

autoconfのバージョンとエラーの内容は?


185 :デフォルトの名無しさん:03/02/08 18:06
mswin32版で拡張ライブラリをmakeするばあいVC++が必須なん?

186 :デフォルトの名無しさん:03/02/08 18:08
VC++くらい買えよ

187 :デフォルトの名無しさん:03/02/08 18:41
>>185
mingwでコンパイルできるはずだが、rbconfig.rbをいじらんと無理だろうな。

188 :デフォルトの名無しさん:03/02/08 19:06
javaでunicodeからshiftJisへの変換ってどうやるの〜????

189 :名無しさん:03/02/08 19:10
できません。rubyを使いましょう。

#!/usr/bin/env ruby
system('nkf -Ws #{ARGV[0]}')


190 :デフォルトの名無しさん:03/02/08 19:22
>>188
激しくすれ違い。
java.nio.charsetパッケージのリファレンスを読んで自分で調べろ。

191 :デフォルトの名無しさん:03/02/08 19:35
>>189
そりゃrubyでやってるとはいわんだろ。
せめてuconvかiconv

192 :デフォルトの名無しさん:03/02/08 22:23
>>187 やっぱそうなんだ。
しょうがないのでmingw版のバイナリをもってきて、バイナリエディタでruby-mingw32.dllにリンクしている情報をmswinに書き替えちゃったよ。

193 :デフォルトの名無しさん:03/02/09 17:52
>>192
素直にmingw版を使えばいいのにとは思うが、
1.8ではmingwとmswinは拡張ライブラリを共有できるようになってる。

194 :質問スレではスルーされた:03/02/10 07:15
Rubyプログラミングを大学でやるらしいのですが、こちとら生まれて此の方
プログラミングなんていう高等技術をやったことがありません。
初心者Rubyプログラマーのポータルサイトなど御座いますでしょうか?

195 :デフォルトの名無しさん:03/02/10 09:05
http://www.google.com/search?q=ruby+%93%FC%96%E5&hl=ja

196 :名無しさん:03/02/10 10:28
>>194
教授に聞けよ。授業料払ってんだろ。

197 :デフォルトの名無しさん:03/02/10 11:03
つーか授業でRuby使うって、島根大学?

198 :デフォルトの名無しさん:03/02/10 23:42
>>195-197
入門って入れればいいのか・・・
何やってんだろう、ずっと初心者とかで検索してた。
すいませんでした。今度から徹底的に検索してから参ります。

199 :デフォルトの名無しさん:03/02/11 11:44
DelphiのExtractFileExt/Pathのようなパス操作関数ってないですか?

200 :デフォルトの名無しさん:03/02/11 12:05
ExtractFileDir: File::dirname
ExtractFileName: File::basename
ExtractFileExt: File::extname

201 :MoonWolf:03/02/11 12:27
>>200
使ったことないけど、こんなのもある。
http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/rough/lib/pathname.rb


202 :デフォルトの名無しさん:03/02/12 22:57
hikiのソースって、まだダウンロードできないのかな?


203 :デフォルトの名無しさん:03/02/13 01:41
まだっぽい。早く公開してくれないかねぇ。

204 :デフォルトの名無しさん:03/02/13 01:45
2/9「変更点は以下の通り。あと、プラグイン周りを見直してページの凍結を作り込んだら細々と公開させてもらいます。 」
もうしばらく待つが吉。


205 :202:03/02/13 04:50
文法がWardCunninghamっぽい、tDiaryの匂いがする、ってことで
ヒジョーに期待しています。
って、ここに書かないでHikiに書いたほうがいいのかもしれないが、
向こうではガイシュツだからここに書こう。



206 :デフォルトの名無しさん:03/02/13 07:35
Hiki 良さそうですね。

ひとつだけ気になったのが、画像URLがデフォルトで<img>にされて
しまうこと。コピペしたテキストとかの中身に注意を払わないと、
含まれてた画像URLが意図せず埋め込まれちゃいそう。


207 :>>Hiki:03/02/15 01:49
あまりあれこれ機能を足さず、シンプルなまま公開してほすい

208 :デフォルトの名無しさん:03/02/15 15:11
Windows版ってパス名をC:\RUBY\HELLO.RBみたいに指定したり
SJISのファイル名をちゃんと処理できないんですか?

209 :デフォルトの名無しさん:03/02/15 15:31
DOSISH 対応は漸進的に進められているので 1.8-cvs を使って。

210 :デフォルトの名無しさん:03/02/16 17:44
すみません。
つかぬことをお聞きしますが、'r+'で開いたファイルを操作する時に、
いままでそのファイルに記述してあったところの途中で、ファイルを終わらせたい場合には、
どのようにすればよいのでしょうか。
部分的に削除をしたいのです。

211 :デフォルトの名無しさん:03/02/16 18:07
File#truncate

212 :210:03/02/16 18:17
truncateなんてあったのですね。
なんとかできたようです。
ありがとうございました。

213 :デフォルトの名無しさん:03/02/16 18:35
>>212
基本的に、UNIX系の標準ライブラリやシステムコールを知ってると類推できる
ことが多い。


214 :デフォルトの名無しさん:03/02/16 22:07

オブジェクト指向っていっても、rubyのは単に .でつなぐだけでしょ?


215 :デフォルトの名無しさん:03/02/16 22:58
>>214
そうだよ。 Perl にはそれすらできないんだってさ。

216 :デフォルトの名無しさん:03/02/17 00:44
perlの話でもうしわけないんだけど、

日本語変換モジュールのJcodeは
Jcode->new($str, 'sjis')->euc;
みたいにできるのに
同じ作者のEncodeは
encode('euc', decode('sjis', $str));
みたいな仕様にしたのかな?
->を使ってOOっぽく見せるのはやめて
関数型でやるのがPerl的には美しいの?


217 :デフォルトの名無しさん:03/02/17 00:55
>>216
> Jcode->new($str, 'sjis')->euc;
対応するエンコーディング名があらかじめ決まってないといけないからじゃないの。

218 :デフォルトの名無しさん:03/02/17 00:56
あ、なんでこうしなかったかってことか。

Encode->decode($str, 'sjis')->encode('euc')


219 :デフォルトの名無しさん:03/02/17 10:58
>>218
ですです
関数型の方が語順が英語と似るからかな。
ruby本に書いてありましたよね。

220 :デフォルトの名無しさん:03/02/17 10:59
Jcode.pmのOO風変換インターフェイスは失敗だったと思うから、採用しなくて良かったと思う。


221 :デフォルトの名無しさん:03/02/17 15:22
>>220
どういうとこが失敗だったと思う?

222 :デフォルトの名無しさん:03/02/17 21:05
>>221
個々のメソッドのインターフェイスがバラバラ。
例えば、下の例の前者は問題なくて後者は実行時エラー
print Jcode->new('文字列')->h2z()->sjis();
print Jcode->new('文字列')->sjis()->h2z(); 
文字列化演算子をオーバーロードするのなら、
両方の構文をサポートしてもよかったのではないかと思うのだが。

更に、convert()のエンコーディング指定文字列も、
正式名称"EUC-JP"などを受け付けるようにしていれば、もっと便利だったはずだ。

223 :デフォルトの名無しさん:03/02/17 21:38
>>222
なるほど。
しかしそれはOO風にしたための失敗とはいえないのでは?

224 :デフォルトの名無しさん:03/02/17 22:28
>>223
いや、まあ、元々不満だったのは「Jcodeのインターフェイス」であって、
「OO風インターフェイス」だから不満だったわけじゃないのだ。

Encode.pmはというと、インターフェイスこそ手続き型だけど、
その実装はOO無しには語れず、ただの関数を多態的に動作させるようになってる。
にもかかわらずあえて公開OOインターフェイスを備えていないのは、
関数の方が楽だから、だと思う。これは想像だが。
Encode->find('EUC-JP')->encode($str); # タイプが面倒
Encode->encode("EUC-JP", $str); # 悪くないが、まだ長い
encode("EUC-JP", "文字列"); # 短い。楽だ。



225 :デフォルトの名無しさん:03/02/17 22:47
スマートにコンマ区切りのCSVを処理したいのですが
どうsplitすればいいのでしょうか?


226 :デフォルトの名無しさん:03/02/17 23:10
>>225
聞く前にRAAとかGoogleを検索しろよ。

cols = text.split(/,/)で駄目なら
http://raa.ruby-lang.org/list.rhtml?name=csv 使えば?


227 :デフォルトの名無しさん:03/02/18 10:29
>>224
なるほどね。

> Encode->find('EUC-JP')->encode($str); # タイプが面倒
Rubyでいうと、iconvがこのスタイルだな

Iconv.new("shift_jis", "euc-jp").iconv(str)

> Encode->encode("EUC-JP", $str); # 悪くないが、まだ長い
これもあるようだが。
Iconv.iconv("shift_jis", "euc-jp", str)


228 :デフォルトの名無しさん:03/02/18 10:58
>>227
Iconv はストリームを処理する状態機械だから str を引数に渡すのは派生だな

229 :デフォルトの名無しさん:03/02/18 14:58
>>228
派生?


230 :202:03/02/19 00:31
TidyみたいなライブラリのRuby実装ってご存知の方、いらっしゃいますか?
マークアップがぐちゃぐちゃなHTMLをwell-formedなXHTMLに変換してくれ
るようなものを探しています。

html-parser.rbがそうかな?と思ったんですが、
探しているのとちょっと違うような気がするんです……。




231 :デフォルトの名無しさん:03/02/19 00:46
>>230
つい最近ruby-extにその話題が([ruby-ext:02143]から)
Ruby-TidyLib: http://arika.org/ruby/tidylib

232 :デフォルトの名無しさん:03/02/19 01:03
htmlrepair に手を入れて使うとか。

233 :デフォルトの名無しさん:03/02/19 06:01
>>229
ああ「strを引数に渡すの」じゃなくて「クラスメソッド」だったyo

234 :202:03/02/19 16:48
>>230
ありがとうございます。ruby-extはsubscribeしてませんでした。
tidy.rbのAgeが4hoursとはこれまたホットですね。ヲチしたいと思います。



235 :202:03/02/20 00:07
キタ━━━━(゚∀゚)━━━━ッ!!
ttp://www.namaraii.com/hiki/hiki.cgi?%28Hiki%29%A5%C0%A5%A6%A5%F3%A5%ED%A1%BC%A5%C9

236 :デフォルトの名無しさん:03/02/20 00:23
http://pc.2ch.net/test/read.cgi/unix/1040496222/990-996
教えてね♥

237 :デフォルトの名無しさん:03/02/20 00:23
amritaはしょうがないとして、strscan前提ってのはやめてもらえないかねえ。

238 :デフォルトの名無しさん:03/02/20 00:26
>236
class Foo; p self; end

239 :デフォルトの名無しさん:03/02/20 00:44
>>237
1.8なら標準

240 :デフォルトの名無しさん:03/02/20 01:15
>>237
shim 入れろ。

ていうか、HTML を自分でパースしようと思ったら、strscan ってめっちゃ便利よ。

241 :デフォルトの名無しさん:03/02/20 06:22
現在の1.8の安定度ってどんなもん?

242 :デフォルトの名無しさん:03/02/20 08:40
仕様の安定度なら、かなり低い

243 :デフォルトの名無しさん:03/02/20 19:15
Ruby の仕様と実装の関係はイデア理論で説明できる。
仕様はイデアである。実装はその影に過ぎない。
従って、イデアを求めて実装は変化するのである。

244 :デフォルトの名無しさん:03/02/20 19:33
実装の過程でイデアも変化したりするがな。

245 :デフォルトの名無しさん:03/02/20 23:48
>>240
strscan って ML みてるとインストールのトラブルがあったりで印象が悪いんだよね。
それに strscan を使わなくても じゅうぶん速く parse できるよ。
pure ruby の xml parser だってあるし。

246 :デフォルトの名無しさん:03/02/21 01:28
>>245
だから1.8かshimを使えと。

247 :デフォルトの名無しさん:03/02/24 01:45
RubyでJISX0208の記号(EUCで\xA1\x??〜\xA2\x??)にマッチするような正規表現を教えて下さい

248 :デフォルトの名無しさん:03/02/24 01:48
EUCで?
/#{"[\xa1\xa1-\xa2\xfe]"}/eo
かな。

249 :デフォルトの名無しさん:03/02/24 01:57
>>248
ありがとうございます。
これってそのままPerlでも通用するのでしょうか?

250 :デフォルトの名無しさん:03/02/24 02:28
最近のPerlのI18N動向はよく知らないんだが、少なくとも#{}というのはRuby
独自なのでそのままは動かない。


251 :デフォルトの名無しさん:03/02/24 02:36
あ、-Keつければ直接書けるよ。
/[ -◯]/


252 :デフォルトの名無しさん:03/02/25 01:13
10執念あげ。

253 :デフォルトの名無しさん:03/02/25 01:15
>>249
jperl なら通用するかもしれない。と後ろ向きなアドバイス。

254 :デフォルトの名無しさん:03/02/25 14:07
[ruby-talk:65710]はなかなかお茶目だな。

255 :デフォルトの名無しさん:03/02/27 17:49
BBSとか作るときに管理者パスワードとかはどうすればいいのかな。
安全で使いやすいのは、
BASIC認証? ruby-shadow? ruby-password?

それともこんな程度のセキュリティでOKなの?
http://www5e.biglobe.ne.jp/~access_r/hp/cgi/rb_light.html

256 :デフォルトの名無しさん:03/02/28 01:52
>>255
思いっきりスレ違いやんけ!

257 :デフォルトの名無しさん:03/02/28 11:19
ruby-shadow は後ろに立っている人から守る(ブラウザからは利用できない)。
ruby-password は統計的に弱過ぎるパスワードをつける不注意から守る。
BASIC認証は盗聴されない前提で比較的低頻度の総あたり攻撃から守る。

盗聴の危険が高い回線なら、SSLでBASIC認証を使い、
ruby-password で検査するくらいで適当。それでも弱いと思うなら、
BASIC認証を使わず、POSTでより長いパスワードを提供するしかない。
その場合はクッキーなどでセッションを維持することになる。

しかし通常のBBSならSSLでBASIC認証を使えば十分だと思うし、
SSLでなくてもBASIC認証だけでも構わないと思う。

258 :_:03/02/28 17:31
クラス変数をpublicにしたいのですが、どうしたらできますか?

259 :デフォルトの名無しさん:03/02/28 17:39
>>258
他にやり方があるかもしらんが

class Mona
 @@val
 def val=(v)
  @@val = v
 end
 def val
  @@val
 end
end


260 :デフォルトの名無しさん:03/02/28 18:32
>>259
クラス変数をインスタンスメソッドで変更するのはキモくないか?

class Mona
 @@val
 def self.val=(v)
  @@val = v
 end
 def self.val
  @@val
 end
end


261 :デフォルトの名無しさん:03/02/28 19:28
>>260
確かにキモいと思いつつ書いてた。

262 :初心者:03/03/01 08:07
文字コードから、文字を得るのと
文字から文字コードを得るのって、どうすればいいですか?

263 :デフォルトの名無しさん:03/03/01 08:28
>>262
文字というのがStringオブジェクトだとして
Integer#chr
String#[](index)
を使う

p 64.chr # '@'
p '@'[0] # 64

264 :初心者:03/03/01 09:21
なるほど、ありがとうございました。

265 :デフォルトの名無しさん:03/03/04 00:44
2.8.0preview2が出たというのに、静かだなぁここは。

266 :デフォルトの名無しさん:03/03/04 00:45
違う、1.8.0preview2だ。鬱。

267 :デフォルトの名無しさん:03/03/04 00:49
>>266
一瞬どういうネタだ? と思ったよ(w

268 :デフォルトの名無しさん:03/03/04 01:48
「ここだけ時間が5年進んでいるスレ。」からの誤爆とか。


269 :デフォルトの名無しさん:03/03/04 09:56
previewはもういいよ。早く2.0出してくれ。

270 :デフォルトの名無しさん:03/03/04 21:51
まだやること山のように残ってんので無理。

271 :デフォルトの名無しさん:03/03/05 10:40
rubyでCGIを書いているのですが、

printf('<p class="%s">%d<p>', ck, num)
print '<input name="'+name+'"' 〜

上記のような処理を下記のように全部書き直したら、
表示に6秒ほどかかってたのが3秒ほどになって、ちょっと感動しますた。

print '<p class="',ck,'">',num.to_s,'<p>'
print '<input name="',name,'"' 〜

文字列の連結とか時間がかかるんだなぁ。


272 :デフォルトの名無しさん:03/03/05 20:51
>>271
前者のprintfはいちいち書式指定文字列をパースしているから。
前者のprint は余計な文字列オブジェクトを生成しているから。


273 :デフォルトの名無しさん:03/03/05 20:54
>271
前者だと演算子のたびに新しい文字列オブジェクトを生成するからね。
ま、ふつうは

print %Q(<p class="#{ck}">#{num}<p>)
print %Q(<input name="#{name}"〜)

とか書くわけだが。


274 :デフォルトの名無しさん:03/03/05 21:24
Person オブジェクトには、Person#name や Person#addr といったメソッドがあり、
実際には DB への問い合わせを行っているものとします。
DB の host 名や user や password などの設定を /etc/personrc に記述したい場合、
Person クラスへこの設定をくべるには、どのような設計にするのが良いでしょうか?

>>273
"#{num}" は新しい String オブジェクトを生成しないんでしょうか?
それとも生成してしまう?

275 :デフォルトの名無しさん:03/03/06 00:31
>>274
> "#{num}" は新しい String オブジェクトを生成しないんでしょうか?
> それとも生成してしまう?

そこだけは新しいStringオブジェクトを生成する。num.to_sと同じ。
今までそんな文字列はどこにも存在しないんだから当然。


276 :デフォルトの名無しさん:03/03/06 00:50
>>274
「くべる」って薪かよ。

すべてのPersonオブジェクトは単一のDBを共有するわけ?
最初にコネクションを張るときに読めばいいんじゃないの。

""ってだけでも常に新しいStringオブジェクトを生成するわけだが、
"#{num}"は(1.8では)""<<num.to_sと等価。


277 :デフォルトの名無しさん:03/03/07 18:55
/.J が珍しく面白いことをやってる。

インタビュー:Rubyの まつもとゆきひろ に聞け!
http://slashdot.jp/articles/03/03/07/0413248.shtml?topic=86

278 :デフォルトの名無しさん:03/03/07 19:18
趣味は聞くまでもないだろう。と思った。

279 :デフォルトの名無しさん:03/03/09 21:53
「ケサランパサラン」って、どんな生物?
ttp://www.asahi.com/kansai/030308a.html

280 :デフォルトの名無しさん:03/03/10 01:54
truncate ってどこで区切って、なんて読むんですか?


281 :デフォルトの名無しさん:03/03/10 02:02
普通の英単語なんだが

282 :名無しさん:03/03/11 23:05
>>280
「とらんかて」という関西弁のアルファベット表記です。

283 :デフォルトの名無しさん:03/03/12 03:33
> お気に召さない場合は「インライン・コールバック」でも「ケサラン・パサラン」
> でも,なんでもお好きな名前に自由に読み換えてください.
ってなんだかなあ…

284 :デフォルトの名無しさん:03/03/16 20:16
インタビューおもしろかった。

285 :デフォルトの名無しさん:03/03/17 02:43
まつもとさんのインタビュー読んで思ったのだけど、Ruby はギャグ、ユーモア
という点で、Perl や Python に完全に負けてると思う。
Larry Wall や Tim Peters みたいにシャレの効いた言い回しのできる人がいない。
これけっこう重要なことだと思う。

286 :デフォルトの名無しさん:03/03/17 02:49
うーん。
しかし、日本人のプログラマでユーモアのセンスがある人って見たことない。

287 :デフォルトの名無しさん:03/03/17 03:27
>>286
namazuの高林さんてどう?
ユーモアのセンスありすぎだと思うけど、
ちょっと方向性が違うか。

288 :デフォルトの名無しさん:03/03/17 14:36
高林さんっていうか、ソニーCSL絡みの人はみんな面白いですね。


289 :デフォルトの名無しさん:03/03/18 10:14
こういうのをまじめくさって話す時点で
もうシャレが通じないっていうか...。


290 :デフォルトの名無しさん:03/03/18 12:27
ML によく投稿してる中田さんの
>--- 僕の前にBugはない。
>--- 僕の後ろにBugはできる。
っての俺好きだなぁ。
初めて見たときニヤリとしたよ。

291 :デフォルトの名無しさん:03/03/18 14:27
ユーモアの感想をいうことほど面白くないものはない

292 :デフォルトの名無しさん:03/03/18 17:03
>>290
人によっていろいろ解釈があるみたい

293 :デフォルトの名無しさん:03/03/18 19:40
「ふえろ! わかめちゃん作戦ですえ但」は今年に入って消えたのな


294 :デフォルトの名無しさん:03/03/18 20:29
「え但」って?


295 :デフォルトの名無しさん:03/03/18 20:40
ハートマークが化けた状態か?
そういう化け方は見たことないが

296 :デフォルトの名無しさん:03/03/18 23:19
>>292
ん、どんな解釈?

297 :デフォルトの名無しさん:03/03/19 01:42
>>296
僕の書いたコードにバグはないが、後から続く者がバグを産む。
僕が書く前にはバグはないが、僕が書いた後にはバグを産む。

298 :デフォルトの名無しさん:03/03/19 04:39
道程なんだから前者ってことはなかろう

299 :デフォルトの名無しさん:03/03/19 05:44
>>296
http://sourceforge.net/mailarchive/message.php?msg_id=1349966
化けるので引用
> 「バグばっかりつくってごめんなさい」
> というのが、いちばん単純な解釈でしょうが、
> 謝ることができるということの裏には、
> 実際にコードを書いて働いていることや、
> 誤りを自ら認める心の広さが表現されているように
> 思えます。あるいは、「Bugはない」というのは
> 「コードそのものがない」ということを意味するとすれば、
> 開拓者魂の表現のようにも見えます。
> いずれにせよ、Bugの理由を、「コードは一般的にBugを
> 含むものだ」と「単に中田さんの技量の問題だ」の
> どちらの立場で解釈するかが、最初の分れ道ですね。


300 :デフォルトの名無しさん:03/03/19 12:15
まさに >291 の言うとおりユーモアの解説は無粋だ。
>299 を攻めてるんじゃなくてそのリンク先の人ね。
笑えりゃOK、笑えなければポイでいいと思うんだがなぁ。

301 :デフォルトの名無しさん:03/03/19 14:55
↓こういう感じで書けば圧縮ファイルができます。
o = open('|gzip -c > a','r+')
o.print 'aaaaaaaaaaaaaaaaaaaaaa'
o.close

それをファイルに書き出さないで、メモリに読み込む方法はありますか?
↓こういうイメージです(このコードは動かない)
o = open('|gzip -c','r+')
o.print 'aaaaaaaaaaaaaaaaaaaaaa'
data = o.read
o.close

リファレンスのIO.popenのサンプルで、catを使ってそういう
ことをやっているので、なにか方法がありそうなのですが。

302 :デフォルトの名無しさん:03/03/19 15:52
Warlus のひとの
「stableでなければ生きていけない。unstableでなければ生きてる意味がない」
ってのが好き


303 :デフォルトの名無しさん:03/03/19 16:58

                         _人
                      ノ⌒ 丿  うんこ〜♪
                   _/   ::(
                  /     :::::::\ うんこ〜♪
                  (     :::::::;;;;;;;)_  うんこ〜♪
                  \_―― ̄ ̄::::::::::\
              \  ノ ̄     ::::::::::::::::::::::)  /うんこ〜♪
                \(     ::::::::::::::;;;;;;;;;;;;人/
                / ̄――――― ̄ ̄::::::::\
               (    ● \__/::●:::::::::::::)
                \__::::::::::\/;;;;;;;;;;;;;;;;;;;;;;ノ
   うんこ〜♪

304 :301:03/03/19 18:08
http://www.tcn.zaq.ne.jp/sheepman/diary/200108.htm#23
検索してたら解決方法がわかりました。
(こんなことに一日かかってしまった…)

305 :デフォルトの名無しさん:03/03/19 21:37
Rubyで作られているらしい
http://www6.big.or.jp/~beyond/bbsnews/


306 :デフォルトの名無しさん:03/03/20 07:17
Rubyで作られているらしい
http://qwerqwer1234.hp.infoseek.co.jp/mudah/mudah.swf?Target=%82%E9%82%D1%82%AB%82%BF%82%B3%82%F1


307 :デフォルトの名無しさん:03/03/21 19:17
おしえてください。
次の変形はどうやるの?
str = "123"
#=> "1,2,3"

308 :デフォルトの名無しさん:03/03/21 19:54
>307
p "123".gsub(/(.)(?=.)/, "\\1,")
p "123".split(//).join(",")

309 :デフォルトの名無しさん:03/03/24 23:45
>307
こんなのはどう?
p "123".scan(/\d/).join(',')


310 :デフォルトの名無しさん:03/03/25 02:11
p("1,2,3") if str == "123"

311 :デフォルトの名無しさん:03/03/25 06:23
>>310
こんなのにウケてしまうのが、自分で悔しい。

312 :デフォルトの名無しさん:03/03/25 06:43
>>310-311
アハハ


313 :デフォルトの名無しさん:03/03/26 14:30
RubyがANSIとかで標準化されるのはいつですか?

314 :デフォルトの名無しさん:03/03/27 00:59
松本がアメリカに帰化するとき

315 :デフォルトの名無しさん:03/03/27 07:05
その前に、JISで標準化されます。

316 :デフォルトの名無しさん:03/03/27 09:03
RubyがJISとかで標準化されるのはいつですか?

317 :デフォルトの名無しさん:03/03/27 20:45
マツモトの偽者、Rubyのルイジ貧が出てこない限りは、
標準化する必要がないです。

318 :デフォルトの名無しさん:03/03/28 00:48
俺はそんなものは望まない!

319 :デフォルトの名無しさん:03/03/28 01:02
すでに大部分の機能をPythonにパクられているわけだが

320 :デフォルトの名無しさん:03/03/28 01:03
>>319
これまでのPythonがダメダメだったんでいいんでないかい

321 :デフォルトの名無しさん:03/03/28 01:19
>>319
え?そうなん?
どのへんがパクられたのか、どっかでまとめられてたりするかな?

322 :デフォルトの名無しさん:03/03/28 02:07
foo = 7 if !foo
をすっきり書くには
foo ||= 7
が定石だけど,
foo = (foo ? foo.to_i : 7)
はなんかうまく書けないでしょうか?
foo を 3 回も書くのがいやすぎ.

-s オプションお手軽で好きなんだけど…


323 :デフォルトの名無しさん:03/03/28 02:33
foo = (foo || 7).to_i

324 :デフォルトの名無しさん:03/03/28 02:45
ちょっと話しずれるけど、foo = 0 にもできるようにしたい場合を考えると、
Perl じゃなくてよかったと思えるね。

325 :デフォルトの名無しさん:03/03/28 19:18
メソッドチェインで、途中でnilになったらそこでエラーにせずに止める、とい
うようなオペレータがかつて議論にのぼったことがあったような気がするが、
どうなったんだろう。
最近追い掛けてないのでage.


326 :デフォルトの名無しさん:03/03/28 19:52
>>325
立ち消え状態だと思うが、こんなのはどうよ?

module Kernel
 def ifnil?
  self
 end
end
class NilClass
 def ifnil?
  yield
 end
end

catch(:nil) {
 hoge.foo.ifnil?{throw :nil}.bar.ifnil?{throw :nil}.zot
}


327 :デフォルトの名無しさん:03/03/28 21:27
>>326
こんなのは?

class Object
 BLACKHOLE = Object.new
 def BLACKHOLE.to_s() "()" end
 def BLACKHOLE.method_missing(*x,&y) self end
 def default(v=BLACKHOLE,&b) self or BLACKHOLE end
 def and() default end
end

class NilClass
 def default(v=BLACKHOLE,&b) block_given? ? yield : v end
end

puts ARGV.shift.and.hex
puts ARGV.shift.default("0").hex

328 :デフォルトの名無しさん:03/03/28 21:52
>>327
>  def default(v=BLACKHOLE,&b) self or BLACKHOLE end
 def default(v=BLACKHOLE,&b) self or v end


329 :デフォルトの名無しさん:03/03/28 22:24
もっともだ

330 :デフォルトの名無しさん:03/03/28 22:39
Ruby界で標準のXMLライブラリってどれですか?

用途は、XML文章を操作するというのかなんというかDOMやらSAX
が使いたいんです(まだどっちがどうなのかよくわかっていませんが)。
配布する環境はUNIXなんですが、開発はWindowsなんで、
どちらでも使えるとうれしいです。

331 :デフォルトの名無しさん:03/03/28 22:41
REXML
余裕があるなら xmlscan をいじってみると面白いと思う。

332 :デフォルトの名無しさん:03/03/28 22:49
標準って何?
オープンソースって同一機能の複数実装が魅力なわけ。
標準なんてあるわけない。
もしも標準なんてあってそこを精密爆撃で狙われたら
標準が消滅しちゃうでしょ。
そのリスクを回避するために一見無駄な冗長性を持たせてるわけ。

333 :デフォルトの名無しさん:03/03/28 23:01
すごい簡単なことかもしれないけど、質問させてください。

Ruby であるテキストファイル中の特定の語句を置換したいとします。
例: いぬ いぬ いぬ ねこ -> いぬ いぬ いぬ いぬ (ねこをいぬに置換)
(要するに sed みたいなことがやりたい)

単純に File.open して each_line で置換したい語句があるかどうか調べていき、
マッチしない場合にはそのままの行を、マッチした場合には置換した行を一時ファイルに書き出し、
最終的に一時ファイルを元のファイルに rename する、ということを考えました。

この例だと一時ファイルを使ってしまいますが、一時ファイルを使わずに each_line で
見ていきながら、マッチする部分を直接書き換える、ということってできますか?

もしあれば、コード例を示していただけると助かります。


334 :デフォルトの名無しさん:03/03/28 23:11
>>333
よくわからんが、ruby の -i オプションを使えば解決されるような話?

335 :デフォルトの名無しさん:03/03/28 23:13
なんか正規表現の変更の話が出ているみたいだけど、

[-0-9]

のような表現って多用しませんか?
いまさら

[\-0-9]

と書けって言われても、って感じ。

336 :デフォルトの名無しさん:03/03/28 23:16
>>333
デカいファイルを突っ込むとメモリ馬鹿食いするけどこんなの。

TEXTFILE = 'inuneko.txt'

if (s = IO.readlines(TEXTFILE).map!{|line| gsub(/ねこ/, 'いぬ')})
 open(TEXTFILE, 'w').print(s)
end

337 :336:03/03/28 23:21
あ。だめだ。これだとどんな場合でも書いてしまう。

if (s = IO.readlines(TEXTFILE).map!{|line| gsub(/ねこ/, 'いぬ')}) # ×
if (s = IO.read(TEXTFILE).gsub!(/ねこ/m, 'いぬ')) # ○



338 :デフォルトの名無しさん:03/03/28 23:32
>>336
これならデカいファイルでも安心。
どんな場合でも書いちゃうし非 unix 環境でちゃんと動くかは知らないけど。

File.open(file) { |src|
 File.unlink(file)
 File.open(file, 'w') { |dest|
  src.each_line { |line|
   dest << line.gsub(/ねこ/, 'いぬ') }}}

339 :デフォルトの名無しさん:03/03/28 23:38
ruby -i -pe 'gsub(/ねこ/, "いぬ")' *.txt
じゃだめ?

340 :デフォルトの名無しさん:03/03/28 23:41
>>335
正直いやん

341 :デフォルトの名無しさん:03/03/29 00:06
rubyさわっててつまってます。

text = <<-AHYA
fooTEXTboo
AHYA

hoge = '\1000yen'
p text.sub(/TEXT/, hoge)

このスクリプトで出力が
foo\1000yenboo\n
となるのを期待してるのですが\1が消えてしまいます。
消えないようにするにはどうしたらいいのでしょうか?

342 :デフォルトの名無しさん:03/03/29 00:10
\を¥にする

343 :デフォルトの名無しさん:03/03/29 00:12
>>335
perlとかでも多用されているもんな。

344 :341:03/03/29 00:13
>>342
そんな一休さんみたいな答えじゃなくて他の案をお願いします・゚・(ノД`)

345 :デフォルトの名無しさん:03/03/29 00:20
hoge = "('1000yen'.to_i / 10 - 10 + 10 / 10).chr.succ" + "1000yen"

346 :デフォルトの名無しさん:03/03/29 00:22
>>341

text.sub(/TEXT/) {hoge}

347 :341:03/03/29 00:49
>>346
ありがとうm(__)m

>>345
わからないです…_| ̄|○

348 :デフォルトの名無しさん:03/03/29 00:52
>>341
hoge = '\\\\1000yen'


349 :デフォルトの名無しさん:03/03/29 01:00
>>347
誰かがまとめてたの見たことあるよ
本家マニュアルサイトの「落し穴」あたりをあたってみては

350 :デフォルトの名無しさん:03/03/29 01:35
>>348
それは直感的にわかりにくい。

>>346 のほうが新婦瑠でわかりやすいから、暗号的なプログラムを書きたい
のでないかぎり、ブロックを使ったほうが良いと思う。

351 :デフォルトの名無しさん:03/03/29 02:06
>>335
POSIX regex で許されてる表現はそのまま通って欲しいな。

352 :not333な初心者:03/03/29 13:02
>>338
の解説キボウ。お願いします。
なぜ、これなら、でかいファイルでもメモリを浪費しないんでしょうか?
2行目のunlinkが関係してるようなんですが。。
openしたブロックの中でunlinkって??

353 :338:03/03/29 13:37
>>352
1. each_line なので全行をいっぺんにメモリに格納しません。

2. ファイルを open した状態で unlink してもファイルの中身は消えません。
(open したプロセスが一個も無くなってから消えます)
unlink 後に同名のファイルを open しても旧ファイルの中身に触れることはできません。

354 :not333な初心者:03/03/29 13:52
>>353
じゃあ、メモリを浪費しないのは、each_lineを使ってるからで、
処理前と処理後を、同名のファイル名にしたい今回のような場合は、
一行ごと、each_lineするためには、unlinkして、
旧ファイルの内容と、新ファイルの内容を別々に扱ってるってことですね。

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

355 :デフォルトの名無しさん:03/03/29 14:22
>>354
だから結局一時ファイルを使っているのと変わらないのよ。

356 :333:03/03/29 19:36
どうも、ファイル書き換えについて質問させていただいた 333 です。

338 さん、プログラムリストと解説ありがとうございました。


357 :デフォルトの名無しさん:03/03/30 17:09
>>338
少なくともDOSISH(mswin32, mingw32, bccwin32, djgpp, たぶんhuman68kも)
ではopenしているファイルを削除することはできない。
それ以外は分からん。


358 :デフォルトの名無しさん:03/03/31 14:22
RUBYってSmalltalkのぱくりだったんですね

359 :デフォルトの名無しさん:03/03/31 15:09
んなこと言ったら、Rubyにオリジナルなとこなんて無い

360 :デフォルトの名無しさん:03/03/31 15:32
色んな言語の良いとこ取りですよ?

361 :デフォルトの名無しさん:03/03/31 21:40
mswin版のruby使ってるんですけど、
倍精度の浮動小数点数使うにはどうしたらいいの?

362 :デフォルトの名無しさん:03/03/31 21:43
Float で間に合わないときは BigFloat

363 :デフォルトの名無しさん:03/03/31 22:19
今ならBigdecimal。

364 :デフォルトの名無しさん:03/03/31 22:50
>オリジナル
本当にオリジナルな言語なんて数えるほどしかないだろうし、
これからさらに減っていくのでは。

365 :デフォルトの名無しさん:03/04/01 00:41
>>359
Rubyオリジナルなのは、モジュールを使ったMix-inあたりかなあ。

366 :デフォルトの名無しさん:03/04/01 00:55
イテレータの柔軟な扱いは他の言語にはない・・・こともないか。
Lispじゃ常套手段だしな。

変数のスコープをprefixで区別するのはRubyオリジナルかな?

367 :デフォルトの名無しさん:03/04/01 02:05
>>361
というか倍精度しか提供されてないのだが

368 :デフォルトの名無しさん:03/04/01 13:50
名前空間ってこんな感じでいいの?

module ORE_NAME_SPACE
 class Main
 end
end

369 :デフォルトの名無しさん:03/04/01 14:43
>368いい

370 :デフォルトの名無しさん:03/04/01 16:06
るびきち氏ついにHP閉鎖?
http://www.ruby-lang.org/~rubikitch/
http://rubyist.net/~rubikitch/
我、詳細求む

371 :デフォルトの名無しさん:03/04/01 16:08
>>370
「ついに」って、いままでなんかあったの?

372 :370:03/04/01 16:15
>>371
るびきち氏
http://enya-mp3.tripod.com
Ruby撲滅スレ part 2
http://pc.2ch.net/tech/kako/1009/10091/1009193707.html

撲滅スレ内をキーワード"るびきち"で辿っていきますと...


373 :デフォルトの名無しさん:03/04/01 16:21
★賞金が当たる★彼女が出来る★未成年クリック禁止★
http://www.pink-angel.jp/betu/linkvp2/linkvp.html

374 :デフォルトの名無しさん:03/04/01 20:52
>>370
http://www.rubyist.net/~rubikitch/

つーか単純にURLが変わっただけ。

375 :デフォルトの名無しさん:03/04/02 09:07
>>370
糠喜びさせやがって。まぁあの粘着君が閉めるわきゃねーわな。

376 :デフォルトの名無しさん:03/04/02 15:27
Rubyなんて言語仕様がころころ変わるもんは使えないと上司に言われてしまいました。
(´・ω・`)ショボーン

377 :デフォルトの名無しさん:03/04/02 17:27
バージョン番号振ってある様な言語は信用できんな。

378 :デフォルトの名無しさん:03/04/02 17:39
正直バージョン番号の無い言語って何だろう。
C/C++ はライブラリ無いと何も出来ないし。

379 :デフォルトの名無しさん:03/04/02 20:53
C も C++ も Perl も言語仕様が結構変わっているわけだが。
結局メジャーかどうかだな。

380 :デフォルトの名無しさん:03/04/02 21:11
確かにC++なんて初期のころと比べたら仕様は変わりまくってる。
rubyなんかの比じゃない。

381 :デフォルトの名無しさん:03/04/02 21:12
Windows も API が突然使えなくなったりとかしてるけど、
だから使うの止めたとか聞かないし。

382 :デフォルトの名無しさん:03/04/02 21:52
すみません。数字をバイナリでファイルに出力、そして読み込むことを目的で以下のメソッドを書いたのですが、
もっと簡単な方法はないのでしょうか??またはこう書いた方が速いとか。
それとネーミングセンスがないので、良い名前がありましたら教えてください (^^;

class Integer
  def fixedByte(byte)
    fixedByte_(byte, self.abs, 1, (self < 0 ? 0b10000000 : 0b00000000))
  end
private
  def fixedByte_(byte, target, count, flg)
    nexttarget = target / 256
    if count != 1
      str = (target % 256).chr
    else
      str = ((target % 256) | flg).chr
    end
    if byte > count
      str = fixedByteS_(byte, nexttarget, count + 1, flg) << str
    end
    str
  end
end


383 :デフォルトの名無しさん:03/04/02 21:52
class String
  def b_to_i
    ssize = self.size - 1
    i = 0
    for x in 0..ssize
        y = 1
        for z in 1..(ssize - x)
          y *= 256
        end
        if x != ssize
          i += self[x] * y
        else
          flg = ((self[x] & 0b10000000) > 0 ? -1 : 1)
          i += (self[x] & 0b01111111) * y
          i *= flg
        end
    end
    i
  end
end

384 :デフォルトの名無しさん:03/04/02 21:54
pack unpack じゃだめなの?

385 :デフォルトの名無しさん:03/04/02 21:54
お仕事の場合はゴルァって電話をかける先があるかどうかが問題じゃないかね

386 :デフォルトの名無しさん:03/04/02 22:01
end読みにくいなあ。LISPみたい

387 :デフォルトの名無しさん:03/04/02 22:11
今日は釣りが多い気がする。

388 :デフォルトの名無しさん:03/04/02 22:38
lispのほうが256倍読みやすいYO

389 :デフォルトの名無しさん:03/04/02 22:42
(・∀・)イイヨイイヨ-

390 :デフォルトの名無しさん:03/04/02 23:00
>>382
Marshal.dump

391 :デフォルトの名無しさん:03/04/03 09:56
>>382
fixedByteS_ってのがないがfixedByte_のtypoか?
任意のバイト数のビッグエンディアンで書き出そうという意図に見えるが、
最下位に符号をつけるのはまずかろう。


392 :デフォルトの名無しさん:03/04/03 17:15
PealユーザーのためのRuby入門
吉田 和弘 (著)
http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06515-4
http://www.amazon.co.jp/exec/obidos/ASIN/4274065154/

393 :382:03/04/03 20:12
こんばんは〜。
ビッグエンディアン‥そうですねそのようです。
その用語はじめて触れました (^^;
はじめ、符号なしを書いて、上で書いていたメソッド名にして、
そのあと、符号つきを書いてその名前の後ろに'S'を付けてました。
バグありましたね。符号つきを書くとき、あまり考えず、テストをしないでいたようです (^^;
ここにカキコする際に、符号つきを'S'を取り払った状態でカキコしたつもりでそうなりました。

pack unpackは〜機能を限定すればスッキリ書けるようですね。同等の機能を持たせるには複雑になりそうな予感‥
Marshalは〜、そもそも使いたくありません。すみません。

取り敢えず、方法としては、あまり間違ってないんですね??
ところで、メソッド名とかいい名前はありませんかね‥

394 :デフォルトの名無しさん:03/04/03 20:41
>>393
> 取り敢えず、方法としては、あまり間違ってないんですね??
方向としては間違ってないが、再帰を使う必要はないだろう。

> ところで、メソッド名とかいい名前はありませんかね‥
うーん、いい名前があればなぁ。前からこういうのは提案しようとは思ってる
んだけど。

# ワンライナー版
class Integer
def to_bin(width = self.size)
n = self
(0...width).inject([]) {|a,i| a << (n & 0xff); n >>=8; a}.reverse.pack("cC*")
end
def self.from_bin(s)
s.unpack("cC*").inject(0){|i,j| (i<<8)|j}
end
end


395 :デフォルトの名無しさん:03/04/03 21:35
>>392
まだ、ruby2perlないですか?


396 :393:03/04/03 21:36
394さんありがとうございます!
わー短くてカッコイイなァ〜 (笑
そもそも私が用いた方法では、マイナスの表現方法がダサイしね (苦笑
はじめinjectでひっかかりましたが、それを使える方法で置き換えたらばっちりでした!

397 :395:03/04/03 21:40
ちがた。ほすぃのは、perl2ruby


398 :デフォルトの名無しさん:03/04/03 21:43
どぞ
http://www.google.co.jp/

399 :393:03/04/03 21:44
うっ、ばっちりと思っていましたら、
文字列から数字に変える変換で、ちょっと複雑になりそうな感じです‥

400 :395:03/04/03 21:51
>>398
ぐぐってきたけど、ない。
みんなhttp://pluto.im.uec.ac.jp/~sekita-n/jdocs/perl2ruby.htmlへの
リンク。これ見てrubyべんきょしますだ。a2pなんかもだめだったしさ、
どうせさんこにならないだろとはおもてますたがね。


401 :デフォルトの名無しさん:03/04/03 22:10
現実的には、Perl 処理系を Ruby から使うか、
Ruby で Perl をエミュレートするライブラリを使うかくらいなので、
速度が糞遅くなることを考えれば、手で移植した方がまし。

402 :デフォルトの名無しさん:03/04/03 22:26
perl2ruby程度なら作れそうだけど、
問題はライブラリなんじゃないかと。
おれは興味ないが。

403 :デフォルトの名無しさん:03/04/04 23:26
>>393
仕様がよく分からないのだけど、これであってる?

class Integer
  def dump(w) f = f(self,w); (1..w).map{|i|(f>>(8*(w-i)))&255}.pack("C*") end
  private; def f(x,w) n = 2**(8*w); (x+n)%n; end
end

class String
  def undump(w) g(unpack("C*").inject(0){|i,j| (i<<8)|j},w) end
  private; def g(b,w) n = 2**(8*w); (b+n/2)%n-n/2; end
end

20.times do
  w = rand(10)+1
  x = (-1)**rand(2)*rand(256**(w-1))
  d = x.dump(w)
  u = d.undump(w)
  p [x == u, d.size == w, w, x, d.unpack("H*")[0].scan(/../).join(" ")]
end

404 :393:03/04/05 00:31
すみません。
私のinjectの分解方法が悪かったです。
injectをArrayに実装して、そのままで動かしたら、
394さんのもので、符号付きでしっかり動きました。
ありがとうございました。

符号付きでしたら、文字(?)から数字に変えるときはunpackを使ったほうが速そうですが、
そうでない場合はもunpackを使わないほうが速かったりするのでしょうか。
packは使わないほうが速そうです。
あまりまともには速度のテストしてませんけど (^^;

405 :デフォルトの名無しさん:03/04/05 01:08
>>404
そりゃコードによるがたいていは組み込みメソッドが早い。

406 :デフォルトの名無しさん:03/04/06 10:23
str = 'efgh'
str2 = 'abcd'
str = str + str2

より

str = 'efgh'
str2 = 'abcd'
str << str2

のほうが遅いのですが、どうしてでしょうか??

ruby 1.6.7 (2002-03-01) [i586-mswin32]
です。


407 :デフォルトの名無しさん:03/04/06 13:20
>>406
http://www1.u-netsurf.ne.jp/~brew/mine/ja/ruby/optimize.html

408 :デフォルトの名無しさん:03/04/06 14:05
>>406
どうやって計ったかを書くべし。これで計ったらどうよ?

N=1000000
t0=Time::times; N.times{str='efgh';str2='abcd';str=str+str2}; t1=Time::times
u,s=t1.utime-t0.utime,t1.stime-t0.stime
printf("%-2s user %7.4f, system %7.4f, total %7.4f\n", "+",  u,s,u+s)
t0=Time::times; N.times{str='efgh';str2='abcd';str<<str2};    t1=Time::times
u,s=t1.utime-t0.utime,t1.stime-t0.stime
printf("%-2s user %7.4f, system %7.4f, total %7.4f\n", "<<", u,s,u+s)

409 :デフォルトの名無しさん:03/04/06 14:57
406ではないがやってみた。

[分かったこと]
・ オレの環境では << の方が少々早い。
・ その差は1ケタパーセント。これが大きいのか小さいのかよーわからん。
・ 1.8 の方がちょい遅い。そんなもん?
・ 1.8 では Time::times が obsolete。

% ruby -v ~/hoge.rb
ruby 1.6.8 (2002-12-24) [i686-cygwin]
+ user 3.6150, system 0.0000, total 3.6150
<< user 3.3850, system 0.0000, total 3.3850

% ruby-18 -v ~/hoge.rb
ruby 1.8.0 (2003-03-03) [i386-cygwin]
./hoge.rb:2: warning: obsolete method Time::times; use Process::times
./hoge.rb:2: warning: obsolete method Time::times; use Process::times
+ user 3.7350, system 0.0100, total 3.7450
./hoge.rb:5: warning: obsolete method Time::times; use Process::times
./hoge.rb:5: warning: obsolete method Time::times; use Process::times
<< user 3.4750, system 0.0000, total 3.4750


410 :デフォルトの名無しさん:03/04/06 17:18
>>409
> ・ 1.8 では Time::times が obsolete。
ちょっとワロタ

同じく406ではないがやってみた。

ruby 1.6.8 (2003-03-11) [i386-netbsdelf1.6]
+ user 3.4000, system 0.0200, total 3.4200
<< user 3.2600, system 0.0100, total 3.2700

ruby 1.8.0 (2003-04-04) [i386-netbsdelf1.6]
+ user 3.6600, system 0.0000, total 3.6600
<< user 3.6200, system 0.0100, total 3.6300

全然変わらねぇ…

411 :デフォルトの名無しさん:03/04/06 18:12
a)
for i in 0..10000000
1+1
end



b)
for i in 0..10000000
2
end

ではb)の方が早い。
a)10.21s user 0.03s system 100% cpu 10.208 total
b)5.85s user 0.00s system 100% cpu 5.802 total

rubyは毎回のループごとに1+1をいちいち計算してるわけか…

412 :デフォルトの名無しさん:03/04/06 18:14
>>411
> rubyは毎回のループごとに1+1をいちいち計算してるわけか…

その手の最適化って一切しないのけ?

413 :デフォルトの名無しさん:03/04/06 19:31
>>412
Fixnum#+が再定義されないとも限らないので、「最適化」しちゃうわけにはいかない。
この議論はdevでもtalkでも繰り返し出てるんで、検索してみるのがよろしいかと。

414 :デフォルトの名無しさん:03/04/06 19:33
>>404
http://raa.ruby-lang.org/list.rhtml?name=shim-ruby16_18

415 :デフォルトの名無しさん:03/04/06 22:39
>>409 >>410
str='efgh';str2='abcd' を N.times の外に出したら変わるのかも

416 :デフォルトの名無しさん:03/04/07 21:26
PerlのInline::Ruby使ってる人いる?
これでレンタル鯖にRubyインスコされてなくてもCGI書けるね。
http://search.cpan.org/author/NEILW/Inline-Ruby-0.02/lib/Inline/Ruby.pod


417 :デフォルトの名無しさん:03/04/07 21:53
うーんしかしこういうのはいかがなものか

#define BEGIN {
とかいうのとあんまり変わらないような気もする(そんなこともないかな)

418 :デフォルトの名無しさん:03/04/07 22:03
つーか Ruby が入って無いと使えないんじゃないのか?

419 :デフォルトの名無しさん:03/04/08 00:54
正規表現の互換性を無くす話だけど、ruby-talk側には常識的な人が
多いようで、少し安心した。

420 :デフォルトの名無しさん:03/04/08 01:24
頭が逝かれてるのは作者と一部の信者だけだろ

421 :デフォルトの名無しさん:03/04/08 01:26
>>408-410
同じく406ではないがやってみた。
$ ruby -v ./time.rb
ruby 1.6.4 (2001-06-04) [i586-linux]
+ user 9.3900, system 0.0500, total 9.4400
<< user 10.1600, system 0.0400, total 10.2000

何故だ......_| ̄|○

422 :デフォルトの名無しさん:03/04/08 05:50
>>421
<< の測定前にGCしたら変わったりして

N=1000000
t0=Time::times; N.times{str='efgh';str2='abcd';str=str+str2}; t1=Time::times
u,s=t1.utime-t0.utime,t1.stime-t0.stime
printf("%-2s user %7.4f, system %7.4f, total %7.4f\n", "+", u,s,u+s)
GC.start
t0=Time::times; N.times{str='efgh';str2='abcd';str<<str2}; t1=Time::times
u,s=t1.utime-t0.utime,t1.stime-t0.stime
printf("%-2s user %7.4f, system %7.4f, total %7.4f\n", "<<", u,s,u+s)


423 :421:03/04/08 06:27
406ではな(ry

>>422
変わらなかったっす。
くっだらねーイージーミスであることを恐れてソースを>>422からコピペして動かしてみましたが結果変わらず。
+ user 9.0300, system 0.0800, total 9.1100
<< user 9.7100, system 0.0800, total 9.7900

ちなみに
$ rpm -qi ruby
Name : ruby Relocations: (not relocateable)
Distribution: Kondara MNU/Linux 2.0(Mary) Vendor: (none)
Version : 1.6.4 Option: (none)
Release : 2k Build Date: 2001年06月07日 13時12分4

時代に取り残された環境です(〃▽〃)♪

424 :デフォルトの名無しさん:03/04/08 06:47
http://www.k-514.com/
(σ・∀・)σゲッツ!!

425 :デフォルトの名無しさん:03/04/08 06:58
>423
1.6.4ってえらく古いな
kondaraの動向は知らんがmomongaに乗り換えたら新しいrpmが使えるのかな

426 : ◆hMJAPH9PWA :03/04/08 09:55
一見<<演算子のほうが速いように思えるが…どういう実装なんだろう。
<<の実装と+の実装が同じなのかな。

427 :デフォルトの名無しさん:03/04/08 19:01
jpegのデータを読み込んだStringから
GD::Image.newFromJpeg(file)でimage instanceを作りたいのですが
ファイルを作らずにStringから直接image instanceを作れないでしょうか?

428 :デフォルトの名無しさん:03/04/08 19:10
ローカル変数のアクセスが微妙に影響してるような。

N=1000000
t0=Time::times; N.times{'efgh'+'abcd'}; t1=Time::times
u,s=t1.utime-t0.utime,t1.stime-t0.stime
printf("%-2s user %7.4f, system %7.4f, total %7.4f\n", "+", u,s,u+s)
GC.start
t0=Time::times; N.times{'efgh'<<'abcd'}; t1=Time::times
u,s=t1.utime-t0.utime,t1.stime-t0.stime
printf("%-2s user %7.4f, system %7.4f, total %7.4f\n", "<<", u,s,u+s)

$ ruby-1.6 -v /tmp/s.rb
ruby 1.6.8 (2003-03-26) [i686-linux]
+ user 4.7000, system 0.0300, total 4.7300
<< user 4.6700, system 0.0300, total 4.7000


429 :デフォルトの名無しさん:03/04/08 19:21
>>427
gdImageCreateFrom*Ctx()はサポートしてないみたいだな。
作者にリクエスト汁。

430 :デフォルトの名無しさん:03/04/09 16:09
1.8はいつ出るの?

431 :デフォルトの名無しさん:03/04/09 16:10
作者の気が向いたら。

432 :デフォルトの名無しさん:03/04/09 22:06
>>431
Preview releaseが出てるのに気が向いたらも糞もあるか

433 :デフォルトの名無しさん:03/04/09 22:30
子供の日とかじゃないの?

434 :デフォルトの名無しさん:03/04/09 22:48
もう一回くらいはpreview必要だろ。五月でもどうかなぁ。

435 :デフォルトの名無しさん:03/04/09 23:27
作者はイラクに人間の盾に行ったので、戻ってきません。

436 :初心者:03/04/10 00:51
class Insertion_sort
def mini_sort(index,array)
i = index
unsorted_array = array
judge = true
while judge
if unsorted_array[i - 1] > unsorted_array[i] || i != 1
tmp = unsorted_array[i - 1]
unsorted_array[i - 1] = unsorted_array[i]
unsorted_array[i] = tmp
i--
else
judge = false
end
end
end
def Insertionsort.sort(unsorted_array)
i = 1
while i < (unsorted_array.size)
mini_sort(i,unsorted_array)
i++
end
sorted_array = unsorted_array
return sorted_array
end
end

test_array = [2,4,45,6,3,677,32,64,453,1,3,56,7,0]
p Insertionsort::sort(test_array)

437 :初心者436:03/04/10 00:54
配列とし渡した、数字の並びを挿入ソートしたいのですが
上のように書いたら次のようなメッセージで動きません。
test3.rb:12: parse error
test3.rb:22: parse error
test3.rb:29: parse error
p Insertionsort::sort(test_array)
^
Ruby始めたばっかりで、どこがおかしいか検討がつきません。
endの閉じ忘れとかは注意したはずなんですが。。
なにかおかしなところ指摘してください。
動かない理由以外でも、書き方のへんなところとか教えて下さい。


438 :デフォルトの名無しさん:03/04/10 01:07
i++やi--はないのでi+=1やi-=1とかいてください

439 :初心者436:03/04/10 01:16
>>438
そこを直すと、違うエラーメッセージがでてきて進みそうです。
よくみたらクラス名もおかしかった。。

もうちょっと自分でやってみます
アドバイスありがとうございました



440 :できた436:03/04/10 06:17
class Insertion_sort
def self.mini_sort(index,array)
i = index
unsorted_array = array
judge = true
while judge
if unsorted_array[i-1] > unsorted_array[i] && i != 0 then
tmp = unsorted_array[i - 1]
unsorted_array[i - 1] = unsorted_array[i]
unsorted_array[i] = tmp
i -= 1
else
judge = false
end
end
return unsorted_array
end

def self.sort(unsorted_array)
i = 1
while i < unsorted_array.size do
unsorted_array = mini_sort(i,unsorted_array)
i += 1
end
sorted_array = unsorted_array
return sorted_array
end
end

test_array = [2,4,45,6,3,677,32,64,453,1,3,56,7,0]
p Insertion_sort::sort(test_array)

441 :デフォルトの名無しさん:03/04/10 06:41
>>440
これだと破壊的だがそれで良い?

例えば
test_array = [2,4,45,6,3,677,32,64,453,1,3,56,7,0]
p test_array.sort, test_array # Array#sort は test_array を破壊しない
p Insertion_sort::sort(test_array), test_array # Insertion_sort::sort は破壊的

結果
[0, 1, 2, 3, 3, 4, 6, 7, 32, 45, 56, 64, 453, 677]
[2, 4, 45, 6, 3, 677, 32, 64, 453, 1, 3, 56, 7, 0]
[0, 1, 2, 3, 3, 4, 6, 7, 32, 45, 56, 64, 453, 677]
[0, 1, 2, 3, 3, 4, 6, 7, 32, 45, 56, 64, 453, 677]

442 :デフォルトの名無しさん:03/04/10 15:49
>>440
breakというものを教えて上げたいような上げたくないような。

443 :436:03/04/10 18:58
>>441
もとのsortメソッドの名前をsort!に改めて
新しく次のようにsortメソッドを作りました。
普段、あまり破壊的、非破壊的ということを意識してませんでした。
単純にcloneメソッドを使ってつくりました。
def self.sort(unsorted_array)
i = 1
cloned_unsorted_array = unsorted_array.clone
while i < cloned_unsorted_array.size do
cloned_unsorted_array = mini_sort(i,cloned_unsorted_array)
i += 1
end
sorted_array = cloned_unsorted_array
return sorted_array
end


444 :436:03/04/10 18:59
>>442
breakを使うとしたら、mini_sortのwhile文中でしょうか?
loopとbreakを使うとすっきりしました。
def self.mini_sort(index,array)
i = index
unsorted_array = array
loop{
if unsorted_array[i-1] > unsorted_array[i] && i != 0 then
tmp = unsorted_array[i - 1]
unsorted_array[i - 1] = unsorted_array[i]
unsorted_array[i] = tmp
i -= 1
else
break
end
}
return unsorted_array
end


445 :デフォルトの名無しさん:03/04/10 19:01
なんで>>443でwhile使っときながら>>444ではloop&breakになっちゃうんだよ。


446 : :03/04/10 19:01
私だったこう書く

module InsertionSort
  module_function

  def insertion_sort!(array)
    modified = nil
    for n in 0..array.size-1
      n.downto(1) do |i|
        break unless array[i-1] > array[i]
        array[i-1], array[i], modified = array[i], array[i-1], true
      end
    end
    modified and array
  end

  def insertion_sort(array)
    insertion_sort!(copy = array.dup) or copy
  end
end


447 :デフォルトの名無しさん:03/04/10 19:03
しまった、ら抜き言葉を発明してしまった

448 :デフォルトの名無しさん:03/04/10 19:19
漏れだったこう書く(w

module Enumerable
def insertion_sort
array = []
each do |a|
if array.each_with_index {|b, i|
if b > a
array[i, 0] = [a]
break
end
}
array << a
end
end
array
end
end


449 :デフォルトの名無しさん:03/04/10 19:21
>>448
かちゅで読むとインデントされてないから無茶苦茶読みにくい

450 :デフォルトの名無しさん:03/04/10 21:11
>>446 もしnavi2ch使ってたら
ttp://pc.2ch.net/test/read.cgi/unix/1046402063/360

451 :デフォルトの名無しさん:03/04/10 23:42
RubyでCGIを作ってIISで実行するとrubyプロセスがIISサービスを
殺してしまい、ワトソンくんが出現します。(スタックオーバーフロー)
rubyは1.6.7のmswinです。
あと意味はないですが、CGIの先頭行に#!を記述しています。
もし何か知っている方いられましたら教えてください。


452 :デフォルトの名無しさん:03/04/11 01:03
>451
RubyでCGIがうんぬんというより、そもそもスクリプトがスタック食いまくりとか
だったりしませんか?

453 :デフォルトの名無しさん:03/04/11 01:30
>>451
Apacheに汁!

454 :デフォルトの名無しさん:03/04/11 01:33
>>449
そりゃ悪かった。かちゅーしゃって行頭の空白消しちゃうのか。

module Enumerable
 def insertion_sort
  array = []
  each do |a|
   if array.each_with_index {|b, i|
      if b > a
       array[i, 0] = [a]
       break
      end
     }
    array << a
   end
  end
  array
 end
end


455 :デフォルトの名無しさん:03/04/11 07:31
>>452
もしそうならWindowsはスタックサイズの上限を指定できないの?

456 :デフォルトの名無しさん:03/04/11 15:28
>>455
できまっせ。
標準で1メガはあるはずだけど。
でもスタックオーバーフローを起こす様なプログラムは
アルゴリズム修正した方がいいんじゃねえの?

457 :デフォルトの名無しさん:03/04/11 15:37
それはそうだがサーバプロセスが死ぬような設定もよろしくない

458 :デフォルトの名無しさん:03/04/11 19:40
サーバプロセスを殺せるってことはmod_rubyなのか?
IISでmod_rubyって使えるんだっけ?

459 :デフォルトの名無しさん:03/04/11 23:29
451です。
ただのRubyプロセスでIISがシニマス。
プロセス空間を別にしてもシニマス。
CGIスクリプトは最後まで完了していて、その後もRubyがガリガリしていて
まもなくIISがシニマス。
自分のちびマシンのAN HTTPDでは問題なく動作します。
Apache+Linuxでも問題なく動作します。
仕事の都合上IISしか使えません。
ということでマイっています。


460 :デフォルトの名無しさん:03/04/12 00:42
>>459
スタックオーバーフローって出るのはrubyに対して、それともIIS?
サーバを殺してしまうということだと、吐いてるデータに問題があるような気
がするが、nphモードにしてみるとどうなる?



461 :デフォルトの名無しさん:03/04/12 09:04
>>460
451です。
IISに対してオーバーフローが発生します。
そのときRubyは終了しています。
一時的に標準出力に出さないようにしてテストしてみます。
勉強不足ですみませんが、nphモードって何でしょうか?


462 :デフォルトの名無しさん:03/04/12 09:37
No Parse Header mode の略。CGIスクリプトの吐くヘッダを鯖が解釈しないモード。
ttp://CGI-Spec.Golux.Com/draft-coar-cgi-v11-03-clean.html#7.0
IISではCGIスクリプトを nph- で始まるファイル名にすることでNPHモードになる。
NPHスクリプトは最初に "HTTP/1.0 201 Created\r\n" を出力しなければならない。
またヘッダの改行コードは \r\n にする。

463 :デフォルトの名無しさん:03/04/12 21:42
>>462
451です。
詳細にありがとうございます。月曜日に試してみます。
HTTPヘッダでの方法でやってみます。


464 :デフォルトの名無しさん:03/04/14 23:29
pai...

465 :デフォルトの名無しさん:03/04/15 00:15
>>462
やってみましたが、結果は同じでした。
RubyプロセスがIISを殺せるなんてやっぱりおかしいので、IISのバグあたりが
妥当ではないかと思っています。


466 :デフォルトの名無しさん:03/04/15 01:10
>>465
AN HTTPDでは動くってことは、その可能性が高いと思われ。
rubyを使わずに、固定のデータを送るようなCGIにしても同じかな?

467 :デフォルトの名無しさん:03/04/15 08:19
添付ライブラリのURIクラスがあんまり遅いんでワラタ
使うのやめたら、10秒以上掛かってた処理が1秒を切ったよ。

これに限らず、Rubyの添付ライブラリは玉石混淆過ぎ
つか、地雷原(w


468 :デフォルトの名無しさん:03/04/15 10:31
どういう使いかたしてたんだ?

469 :デフォルトの名無しさん:03/04/15 11:17
漏れも実例が見てみたい

470 :デフォルトの名無しさん:03/04/15 11:42
>>467の玉と石の分類を見てみたい。
煽りではなく、参考にさせてもらいたいので。


471 :デフォルトの名無しさん:03/04/15 20:40
URI使う所の多くで、URIのインスタンスを使ってたの。
プロファイラに掛けたら、URI.parseも遅かったが、
URI#+は失禁するぐらい遅かった。

URIライブラリは、UriValidatorとUriUtilに分けたらどうだ?

CGIライブラリもなぁ、なんか使いにくいよ。
Ruby唯一の処理系に付属するオフィシャルな
おまけライブラリにしては、実装者のアクが強すぎ。
なんつーか、ツブシの効かない感じ。


472 :デフォルトの名無しさん:03/04/15 23:03
>>471
プロファイラの結果見たい。遅いのはどのへん?
# URI::Generic#mergeあたりかな。

473 :デフォルトの名無しさん:03/04/16 01:15
XMLを出力したいのですが、適当なライブラリって何になるのでしょうか?
xml-parserでできますっけ。


474 :デフォルトの名無しさん:03/04/16 03:15
parserってんだから入力じゃないの。使ったことないので分からんけど。
http://raa.ruby-lang.org/cat.rhtml?category_major=Library;category_minor=XML
libxmlとかかねぇ。


475 :デフォルトの名無しさん:03/04/16 13:13
そも「るるる」とは何ぞや?

476 :デフォルトの名無しさん:03/04/16 22:47
単純な質問ですが、しばらくわからないままなので教えてください。

X ターミナルの表示可能なカラム数を Ruby から得るにはどうしたらいいですか?
やりたいことは、Debian や RedHat の apt-get を実行したときに、画面右端に出る
[38%] などのパーセント表示を右端ぴったりに出したい、ということなのですが。


477 :デフォルトの名無しさん:03/04/16 22:50
age

478 :デフォルトの名無しさん:03/04/16 23:35
>>476
安直でよければ
columns = (columns.to_i if columns = ENV["COLUMNS"])

ウィンドウリサイズに追従したければcursesでも使うべきだろう。
$ ruby -rcurses -e 'Curses.init_screen;l,c = Curses.lines,Curses.cols; Curses.close_screen;puts "#{c}x#{l}"'
100x50


479 :476:03/04/17 06:05
>>478
ありがとうございました!その方法でやってみます。

480 :山崎渉:03/04/17 15:16
(^^)

481 :デフォルトの名無しさん:03/04/17 23:35
>>473
print文でいいんじゃねえの?

482 :デフォルトの名無しさん:03/04/18 23:25
>>465
CGIでRubyがIISを落とす件です。
なんとなくわかりました。
httpdはIIS4です。フォームからCGIにデータを送信して、CGIの中で
Locationヘッダを使って自分のCGIに戻すことをしています。
掲示板なんかでの再読み込み防止策としてやったのですが、
これがなぜか無限ループに陥ってしまうのです。
リクエスト内容を見るとLocationにはクエリを渡していないのに
その前のフォームのデータが流れてきています。
そしてまたLocation。
ちなみにただLocationでループさせても適度な回数でたたききられます。


483 :デフォルトの名無しさん:03/04/19 12:47
>>482
RFC2616 の
10.3 Redirection 3xx
14.30 Location
をよく読んだら何か分かるかも。

484 :デフォルトの名無しさん:03/04/19 15:36
'a' =~ /(a*)*/
のマッチのあと、$1 が 'a' ではなく '' になるのはなぜでしょうか?

485 :デフォルトの名無しさん:03/04/19 15:56
"a" に (a*) が2回マッチするからじゃないかのう。

486 :デフォルトの名無しさん:03/04/19 16:44
>>482
つまりスレ違いだったわけでつね

487 : ◆hMJAPH9PWA :03/04/19 23:52
>>484
空文字列にマッチするから。

488 :山崎渉:03/04/20 03:46
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

489 :デフォルトの名無しさん:03/04/20 04:21
>>487
それじゃあ説明になってないんじゃ?
普通に考えると、a* が貪欲に 'a' にマッチすると思うんだけど。

/((a*)*)/.match('a').to_a # => ["a", "a", ""]

↑これは、ちょっと理解し難いです。
(a*) が空文字にマッチしてるのに、
どうしてその外側の ((a*)*) が 'a' にマッチし得るの?

490 :デフォルトの名無しさん:03/04/20 05:48
>>489
だから内側のカッコは2回マッチしてるんだってば。
最終的な $~ は最後のマッチが有効になる。

これなら分かる?
$ ruby -e 'p /((ba*)*)/.match("bab").to_a'
["bab", "bab", "b"]

491 :デフォルトの名無しさん:03/04/20 14:09
$~ が最後にマッチしたデータになるというのは分かります。
でも、なぜ(a*)が2回マッチするのかが分かりません。
1回目のマッチで文字列全部を取ってしまってるので、それで終了にはならないのですか?

492 :デフォルトの名無しさん:03/04/20 15:23
>>491
.{0,0} は空文字列に最低一回マッチする。

493 :489 (not (484 or 491)):03/04/20 16:53
>>490
あぁ、なるほど。理解できました。

(a*) は、1回目のマッチで 'a' を食べて、
2回目のマッチで '' を食べたところで繰り返しが終了し、
その時点のマッチの状態ってことで $1 = '' がセットされたってわけですね。

494 :デフォルトの名無しさん:03/04/20 17:39
>>493
まあこういうのはマニュアルなんかにはあまり詳しく書かれてないから
Friedl の Mastering regular expressions でも買って読むのが吉

495 :491:03/04/20 17:50
えっと、.* が空文字にヒットするのは分かるので、
2回目のマッチが行われれば $1 に '' が入るのは分かるのですが、
1回目のマッチですべての文字列を食べ終わっているのに
2回目のマッチを行おうとするというのがどうも理解できません。

文字列の最後に仮想的な空文字を想定して、
1回目のマッチ後ではそれがまだ残っているというふうに考えるのでしょうか。

496 :デフォルトの名無しさん:03/04/20 23:48
>>495
まあそうなんだが「仮想的な空文字を想定して」というのはよく分からん。
まず空文字ではなくて空文字列というべきだろう。
そして仮想的に想定しているのでなく実際にある。

497 :デフォルトの名無しさん:03/04/23 23:15
Time#to_s をそのまま Time.parse しても元に戻らないってのは不便じゃないですか?

irb(main):008:0> t = File.stat('foo').mtime.to_s
=> "Fri Jul 26 23:01:14 GMT+9:00 2002"
irb(main):009:0> Time.parse t
=> Sat Jul 26 23:01:14 UTC 2003

498 :デフォルトの名無しさん:03/04/24 04:37
Time#to_s のフォーマットは好きに変えられるんだからいいじゃん?

499 :デフォルトの名無しさん:03/04/24 05:47
Time#to_s って %Z とかあるからOS依存なのでは

500 :デフォルトの名無しさん:03/04/24 07:28
>>497
そういうTZってありだっけ?

begin-base64 644 tz.diff.gz
H4sIAAAAAAACA71Ry2rbQBRde77iLAKRMh7r4dgmA0IJKZQssknclWWKLI3C
gCyZGdmkxvTbM3rFSeqmi0LuQvcx95xzxbkrUvHMkcuVk8aVcLJSreNqpFYk
+P8gD7ePyGQuOJxkpx21Xf1ytEra4k/N4Y4oUSkpdrJ4gjJJy7KAN5qSVGYZ
2BbMB9uAKTPD8VbG2IlfGPhXuI8VfNcdw53y8RWfuGCuiUHNSSk9iRrjZtOh
fJ/7U+52KHJ9bQ64nAxnoG0ygySPtcY3w0EwGACI9EVXWYQ1GVjEbL+kVsgj
TVNd2WG0IrR7M9OndXXYVokdLhhdRmm9yEOT7Y7ocCT6uEA/UWjBLYkdkruj
15Vciy8zuRP7q7ued8Jez0N/ZO9u139uqyHrfX3d/2DojHuXbwyducMJaPN9
tXNuoARtlOa0AIXM+8G+LISZ1Gm03SSxFoS1LzKDE91YC8qWthWlUWrzsM3R
3kHwu8EQ+m455N/v54cf81s7/BcQeHeSdeYhCHDOzhGCeeDwbFyYsT+qyp/S
lFMXFGfjprWbvucQuW71a8la6K3OCx+CUAoVBAAA
====


501 :デフォルトの名無しさん:03/04/24 07:30
あ、lib/time.rbのほうは不要だった。

502 :デフォルトの名無しさん:03/04/24 14:07
初歩的なことですが、どなたか教えて下さい。
実行結果、「123aaa456789」を期待していたのですが、
「123aaa789」となってしまいました。ファイルの途
中に追加書き込みするには、どうしたらよいのですか。

f = open("text","w")
f.print("123456789")
f.close

f = open("text", "r+")
f.seek(3, IO::SEEK_SET)
f.print("aaa")
f.close


503 :デフォルトの名無しさん:03/04/24 14:13
>>502
直接的な手段はない。
ファイルの途中に直接挿入はできないので、
挿入したい位置から先を後ろへずらす必要がある。



504 :デフォルトの名無しさん:03/04/24 14:34
>>502
ファイルがそれほど大きくなければ
f = open("text", "r+")
img = f.read       # 全部読んで
img[3,0] = "aaa"   # ファイルイメージを文字列として編集して
f.truncate(0)      # ファイルを切り詰めて
f << img           # 書き出すのが頭を使わなくて楽
f.close


505 :497:03/04/24 14:56
OS依存というのは知りませんでした。
>>497はWindows2000のcygwin環境です。

>>500 どうもありがとうございます。

506 :デフォルトの名無しさん:03/04/24 15:18
>>505
そのTZフォーマットの典拠を明示できるなら、
bugs-jaにでも投げといてくれるとありがたい。

507 :502:03/04/24 17:39
>>503,504
どうもありがとうございます。

ファイルが大きく、編集箇所も多いので、
結局、以下のようにしました。

f_read = open("text1","w+")
f_read.print("123456789")
f_read.rewind

f_write = open("text2", "w")
f_write.print f_read.read(3)
f_write.print ("aaa")
f_write.puts f_read.gets

f_read.close


508 :デフォルトの名無しさん:03/04/24 23:07
>>http://pc2.2ch.net/test/read.cgi/tech/1045074808/721
def random_permutation(n,k) (0..n-1).sort_by{rand}[0,k] end

sort_by は便利だ

509 :デフォルトの名無しさん:03/04/25 14:42
>>508
(0..n-1).sort_by{rand}
(0..n-1).sort{rand<=>0.5}
確率的な違いをどう表現したらいい?

510 :デフォルトの名無しさん:03/04/25 18:16
>>509
(0..n-1).sort_by{rand} が以下と等価かどうかすら分からん

def perm(a, k=0, v = [])
n = (a = a.to_a).size-1
n == k ? v<<a : (k..n).each{|i| perm((b=a.dup;b[k],b[i]=b[i],b[k];b),k+1,v)}
v
end

perm(0..n-1)[rand((1..n).inject(1){|v,x|v*x})]

511 :デフォルトの名無しさん:03/04/27 00:43
qsortが平均n・log(n)っていうときの平均ってどれ?

512 :デフォルトの名無しさん:03/04/27 02:07
>>511
どれ?と聞く以上は選択肢を出していただきたい。


513 :デフォルトの名無しさん:03/04/27 04:52
>>512
qsortの平均コスト評価で想定している分布って
(1) (0..n-1).sort_by{rand} # n個の一様乱数の順序
(2) (0..n-1).sort{rand<=>0.5} # ランダムな2分割による入れ換え?
(3) >>510 # 順列上の一様分布
(4) 上記以外
のどれ?

514 :デフォルトの名無しさん:03/04/27 12:28
>>513
それは (3) だが (1) や (2) が (3) と等価なのかは知らん。

515 :デフォルトの名無しさん:03/04/28 02:15
RubyUnit で自動テストを cron 等で行い、テスト結果を html で出力したいのですが、
そいういったことをしてくれるツールが検索しても見当たりませんでした。

こんなツールがあるよといった情報や、他の Ruby 用 Unit Test ツールでは実装
されているという情報がありましたら、教えてください。


516 :デフォルトの名無しさん:03/04/28 10:33
>>515
cronの方はどうとでもなるとして、htmlのそれっぽい出力はないんじゃないかな。
ui/gtk/やui/fox/のtestrunner.rbを参考に書いてみては?

517 :デフォルトの名無しさん:03/04/28 14:49
>>515
RubyUnitはTest::Unitに統合されてるのでそっちを使ったほうがいいかも。
HTMLでの出力というのがどういうものを求めてるのかよく分からんが、
test/unit/ui/html/testrunner.rbを他のtestrunnerを参考に書いてくれると
嬉しい人が増えると思われ。


518 :デフォルトの名無しさん:03/04/28 14:50
ちゃんと>>516が書いてるじゃん。なんで見落とすかな。


519 :デフォルトの名無しさん:03/04/30 23:23
rubyのスコープがわかりません


スクリプトファイルはじまり
#!/ruby

if なんとか
 i = 10 #ここではじめてiが出てくる
end

print "#{i}\n" # 10
おわり

ifの中で初めて使う変数が、ifの外でも使えます。
これってあり!?

520 :デフォルトの名無しさん:03/04/30 23:28
制御構造はスコープを導入しないよ。

http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=trap%3A%3A%A5%B9%A5%B3%A1%BC%A5%D7%A1%A2%C0%A9%B8%E6%B9%BD%C2%A4

521 :デフォルトの名無しさん:03/05/01 04:44
a=Hash.new([])
b=a["3"]
b[4] = b[4].to_i + 1

で、a["3"][4] が1になって欲しいんですがならないのはどーして?

522 :デフォルトの名無しさん:03/05/01 04:55
それで、a["3"][4]は1を返すよ。
ただし、多分意図している動作とは異なる。
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=trap%3A%3AHash

523 :521:03/05/01 11:30
>522
ほんとだ、a["3"][4]は1を返しますね。
でも、 a.inspect => {} となってしまいます。
a.each do |key,val| とかなにも返って来ませんし、、、

Ruby 1.6.7 です。


524 :デフォルトの名無しさん:03/05/01 12:52
>>523
調べればあちこちに書いてあると思うけど、
Hash.new(obj) の引数 obj は Hash#default の値として保持され、
このオブジェクトは存在しないキーへの参照があったときに返される。
  h = Hash.new("Go Fish")
  h["a"] = 100
  h["b"] = 200
  h["a"]    #=> 100
  h["c"]    #=> "Go Fish"
  h.default #=> "Go Fish"
  h["c"] << "pond"
  h["c"]    #=> "Go Fishpond"
  h.default #=> "Go Fishpond"
  h["c"] = 300
  h["c"]    #=> 300
  h.default #=> "Go Fishpond"
  h["d"]    #=> "Go Fishpond"


525 :デフォルトの名無しさん:03/05/01 13:59
>>523
>>522のリンクを読めよ。

526 :デフォルトの名無しさん:03/05/01 18:31
>>522 のリンクの説明、「デフォルト値」っていう表現が良くない気がする。
「デフォルトオブジェクト」とかにすれば勘違いしづらいかも。

527 :デフォルトの名無しさん:03/05/01 18:53
そう思ったら直せばいい。

528 :デフォルトの名無しさん:03/05/01 19:22
http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06515-4
↑これ読んだ人、乾燥キボンヌ。

529 :デフォルトの名無しさん:03/05/01 20:27
>>528
乾いてたよ。

530 :デフォルトの名無しさん:03/05/01 20:29
乾いて候

531 :デフォルトの名無しさん:03/05/02 00:22
「クラスのインスタンス変数」って何に使うんですか?
クラスのインスタンス変数をインスタンスのインスタンス変数として使っちゃだめ?


532 :デフォルトの名無しさん:03/05/02 00:32
クラスのインスタンスのインスタンス変数してなら使えるけど?

533 :デフォルトの名無しさん:03/05/02 02:12
>>532
では、クラスのインスタンスのインスタンス変数として使っちゃ駄目?
つまり「クラスのインスタンス変数」と「そのクラスのインスタンスのインスタンス変数」
の使い分けを教えて欲しいのれす。

534 :デフォルトの名無しさん:03/05/02 02:45
テンプレ

535 :デフォルトの名無しさん:03/05/02 03:02
JaMing/Ruby って面白そうね。

536 :デフォルトの名無しさん:03/05/02 03:14
>>533
それは全然違うと思うけど。
クラスのインスタンス変数は、継承したくなくて(クラス変数じゃ駄目)、
公開もしたくない(定数も駄目)が、クラスに所属させたい名前じゃないかな。
例えば特異メソッドで使う値とか。

537 :533:03/05/02 03:29
この結果を見ると、どうもクラスに所属してない気がしてしまうのですが、なぜこうなるのでしょう。
--(コード)--
class Person
@name
def initialize(name)
@name = name;
end
def say
p @name
end
end

p1 = Person.new("foo");
p2 = Person.new("bar");
p1.say();
p2.say();
--(結果)--
"foo"
"bar"
--
両方とも "bar" ってなってほしかったのですが、、

538 :デフォルトの名無しさん:03/05/02 03:33
@name じゃなくて @@name

539 :デフォルトの名無しさん:03/05/02 03:45
>>537
> class Person
> @name
この@nameと
> def initialize(name)
> @name = name;
この@nameは別物。

前者はPersonというClassオブジェクトのインスタンス変数。
後者はPersonクラスのオブジェクトの持つインスタンス変数。

540 :デフォルトの名無しさん:03/05/02 04:03
ありがちなクラスのインスタンス変数の使い方

class C
  @n = 0
  def self.n() @n end
  def self.new() @n += 1; super end
end

class S<C
  @n = 0
end

S.new; C.new; C.new; C.new; S.new;
p [C.n, S.n] #=> [3, 2]

541 :デフォルトの名無しさん:03/05/02 04:15
>>427

ファイル無しでimage instance作りたいってこと? フツーに new すりゃいいし

542 :デフォルトの名無しさん:03/05/02 04:46
クラス変数使いこなしてるってひといますか?
イマイチどんなつかいでがあるのかわかんない。
サブクラスでの変更がスーパークラスへ反映されなければいいのに、
と思うことが多い。

543 :デフォルトの名無しさん:03/05/02 08:13
>>542
つかってるよ。例えばなんかのデフォルト値とか。
サブクラスでも同じデフォルト値を使いたいからね。
定数でもいいんだけど、デフォルト値を変更したいときもあるから。

目的に応じて、クラス変数とクラスインスタンス変数を
つかいわければいいんじゃない?
サブクラスでの変更を親クラスへ反映させたければクラス変数、
させたくなければクラスインスタンス変数。

544 :デフォルトの名無しさん:03/05/02 13:07
>>543
おお、クラスインスタンス変数ってのがあるんですね (←節穴野郎) 。
>>540 みたいに使うのか。
なんか漏れにもうまいこと使い分けれそうです。ども。

545 :sage:03/05/03 23:27
あのーすみません。なんか呼び名がごちゃごちゃしているのですけど、
正しい読み方ってどういう風に呼ぶのでしょうか??? > @、@@
クラスのインスタンスが持つ変数を「インスタンス変数」
クラスが持つ変数を「クラス変数」
という風に覚えていたのですけど、違ったのですか???

546 :デフォルトの名無しさん:03/05/03 23:28
はうっ。
sage間違えた‥

547 :デフォルトの名無しさん:03/05/04 00:32
>>545
あってる
@instance_variable オブジェクト毎
@@class_variable クラス毎
クラスはそれ自身がオブジェクトでもあるので両方持てる

548 :デフォルトの名無しさん:03/05/04 04:32
mswin用gdbm.so バイナリを公開している所はないですかね。
http://jarp.jin.gr.jp/win32/aは知っているのだけれど、gdbm.soはないです。
Makefile が妙でnmake失敗してしまうです。


549 :デフォルトの名無しさん:03/05/04 04:33
ttp://jarp.jin.gr.jp/win32/ でした。

550 :デフォルトの名無しさん:03/05/04 04:38
gdbm.dllを.soにリネーム

551 :548:03/05/04 05:06
ぐわっ、こんな簡単なことだったなんて。
ありがとうございました。

552 :デフォルトの名無しさん:03/05/04 05:28
windowsの.dll=*nix系の.so
って事を知らない人、結構いるね。
この板だと話が通じない事多い。


553 :デフォルトの名無しさん:03/05/04 05:49
同じだったの?ELFとCOFFとかって違わないの?

554 :デフォルトの名無しさん:03/05/04 05:54
同じと思っててイイヨ

555 :デフォルトの名無しさん:03/05/04 06:45
この板だと
>>553みたいに
話が通じない事多い。

556 :Rubyist@553:03/05/04 09:43
ウゼェェェェェエエェェェーーーーーーェェーェーェ>>>>>>>>>>>>>555
しらなかったんだよシラネーよ知って根ーよシラララララララネネネネネネネシラネー
ヨヨヨヨヨヨヨヨヨヨヨヨヨヨヨヨ
ブァベブチャグチャグハアァァアアアアァァブァァアアァアアウアウアアウアウウウウウアウウアウウアあうアウアアウアウガアアアアアウゥァウガアカカカガ゙カクククセゼグギ

557 :デフォルトの名無しさん:03/05/05 00:59
http://jarp.jin.gr.jp/win32/gdbm-1.8.3-1-mswin32.zip
をダウンロードし、
\bin\gdbm.dll 21,504 03/04/22
を、gdbm.soとリネームし、
require 'gdbm' したところ、

\hage.rb:1:in `require': 127: 指定されたプロシージャが見つかりません。 - Init_gdbm (LoadError)
./gdbm.so

が出てしまいました。
ruby 1.6.8 (2002-12-24) [i586-mswin32] です。


558 :デフォルトの名無しさん:03/05/05 15:25
嘘を嘘と見抜けない人は……(ry

まあ、元の聞き方が悪いから仕方がないけど。
それはrubyから(gdbmモジュールを通して)使うgdbmライブラリ本体だよ。
それくらいzipファイルの中身を見て見当つけなさい。



559 :デフォルトの名無しさん:03/05/06 00:48
つーか、jarpのwin32ディレクトリの存在を知ってるのにその意味を知らない
というのはいかがなものか。


560 :デフォルトの名無しさん:03/05/06 00:51
Ruby のスレで嘘を付かれるなんて、信じていたのにッ。

561 :デフォルトの名無しさん:03/05/06 01:05
>558
後学のためにどう聞けば良かったか教えてください。

562 :デフォルトの名無しさん:03/05/06 02:29
>>561
558じゃないけど。

Makefileがどう妙なの?
どうやってMakefileを作ったの?
rubyのバージョンは?(557に書いてあるけど)

あたりは最低限必要かと。
それがわかれば、もうちょっとましな質疑応答になると思われ。

ちなみに、今回の場合は、550が嘘で552は本当だけどミスリーディング。


563 :デフォルトの名無しさん:03/05/07 20:27
RDってHTMLと比べて何が嬉しいんですか?


564 :デフォルトの名無しさん:03/05/07 22:24
生でも読みやすいところ?

unix板の情報整理スレでも「メモはRDで書いてる」ってのが
何度か挙げられていたから、良いモノなのかも。


565 :デフォルトの名無しさん:03/05/07 22:46
タグが少ないからうちやすい

566 :デフォルトの名無しさん:03/05/08 00:33
RD って plain2 と比べて何が嬉しいんですか?

567 :デフォルトの名無しさん:03/05/08 13:45
Apacheのログの解析してるんですが、
ttp://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&q=Google+UTF-8+%E6%A4%9C%E7%B4%A2%E6%96%87%E5%AD%97%E5%88%97+Ruby&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
のq=???の日本語部分のデコードができなくて困っています。
CGI.unescape や NKF してたんですが、うまくいきません。
UTF-8だからかな?
できればポインタなどお願いします。

568 :デフォルトの名無しさん:03/05/08 14:12
>>567
UTF-8は現nkfでは扱えない(nkf自体Unicode制定前のものだから当然だが)ので、
uconv,iconv,unkfあたりを使う。在処は

uconv: RAA
iconv: 1.8では標準、1.6ならshim
unkf: rough



569 :デフォルトの名無しさん:03/05/08 14:19
>>568
さがしてやってみます。

570 :567:03/05/08 14:43
できました。
unkfをインストールして、
require "cgi"
require "unkf"
q="%93%FA%96%7B%8C%EA"
NKF.nkf("-e", CGI.unescape(q))
で、EUCの文字列が取得できました。

どうもありがとうございます。

571 :デフォルトの名無しさん:03/05/08 21:30
print nil
とすると、nilと表示されてしまうのですが、これを何も表示されないようにしたい。

class NilClass
def to_s
''
end
end
としても、
def nil.to_s
''
end
としても、nilと出力されてしまう。

どうすればよいか、知恵を拝借したい。
printを再定義しないとだめ?

572 :デフォルトの名無しさん:03/05/08 21:36
inspect を再定義。
つか、print 対象に nil がこないようなロジックにすべきじゃないかと。

573 :デフォルトの名無しさん:03/05/08 21:39
>>571
諦めてprintを再定義してくれ。

>>572
inspectをどれだけ変えても無駄では?
なにしろ、printのソースが
 case T_NIL:
  rb_io_write(out, rb_str_new2("nil"));
だ。



574 :デフォルトの名無しさん:03/05/08 21:43
>>573
あ、ほんとだ。早とちりだった。

575 :デフォルトの名無しさん:03/05/08 21:51
>>573
まじで?ソースコード埋め込みだったのか。

質問の背景を説明すると、RubyでCGIを作成してて、
cgi = CGI.new
user, = cgi['user']
mail, = cgi['mail']
print user, "<br/>\n"
print mail, "<br/>\n"
としてるんだけど、このときuserやmailがnilと表示されるので
どうにかしたかった。いちいち
user ||= ''
mail ||= ''
とするのもうざったいし。
こんなとき、みんなはどうしてるの?

576 :デフォルトの名無しさん:03/05/08 22:12
>>575
もっといい方法がありそうだが、
user = cgi['user'].first || ''
なんてのはどうだろう。一行で書けるし。

577 :デフォルトの名無しさん:03/05/08 22:19
print "#{user}<br/>\n"
print "#{mail}<br/>\n"


578 :デフォルトの名無しさん:03/05/08 22:25
>>575
576+577で脳内idiom化済み。


579 :デフォルトの名無しさん:03/05/08 22:28
>>576
最初はこうしてたんだけど、
http://localhost/login.rbx

http://localhost/login.rbx?username=&password=
とを区別したかったので(前者ではcgi['username'][0]はnil、
後者では "" )、使わないことにした。

>>577
これ、うまくいくね。ありがとう。
でもなんで?もし仕組みをしってたら教えてください。

580 :デフォルトの名無しさん:03/05/08 22:37
#{} は String 以外は to_s で String に変換するから。

もちろん明示的に
print user.to_s, "<br/>\n"
としても望み通りになる。

581 :デフォルトの名無しさん:03/05/08 22:51
>>580
うー、そういうことか。
def nil.to_s() とか class NilClass; def to_s() ... とか
していたおれはアホやね。すでにそうなっていたのか。
さんきうです。

582 :デフォルトの名無しさん:03/05/08 23:58
そもそも、CGIの入力を無加工で出力するなんて考えられないのだが。


583 :デフォルトの名無しさん:03/05/09 00:15
だって、質問のためのサンプルだもん。
現実のコードが複雑なら、質問するときは本質部分だけをとりだした
簡単なものを示すのが普通では?


584 :デフォルトの名無しさん:03/05/09 02:51
>>583
その「簡単なもの」が571だというならそれはそれで納得なんだけど。

575のようにCGIの入力を無加工でprintに渡すわけはないので、
それまでに別のところでnil問題に遭遇するだろう、ということだよ。
なので、575でいう「こんなとき」はありえない。


585 :デフォルトの名無しさん:03/05/09 14:58
Cygwinにpackage: ruby-1.6.8-1が出たわけだけど、
ソース取ってきて自分でビルドするのと比較して何が嬉しいの?


586 :デフォルトの名無しさん:03/05/09 15:06
ソース取ってきて自分でビルドしなくてもいい

587 :デフォルトの名無しさん:03/05/09 19:14
ruby捨てるのが簡単に


588 :デフォルトの名無しさん:03/05/09 23:06
>>585
ソース取ってくるほど熱心でないユーザも使う可能性が増える。

589 :デフォルトの名無しさん:03/05/10 00:05
そしてリリースがますます慎重に

590 :デフォルトの名無しさん:03/05/10 05:41
cygwinのバイナリをビルドした設定って後から参照できるように記録されているの?
だとしたら、使ったバイナリをビルドした設定を記録するのがちょっとは楽になるかな。


591 :デフォルトの名無しさん:03/05/10 05:49
>>590

???
今いち言いたいことが分からないけど、Un*x と変わらないよ?


592 :デフォルトの名無しさん:03/05/10 09:14
Cygwin 環境だと configure につけるオプションって --enable-shared くらいじゃ。

593 :デフォルトの名無しさん:03/05/10 19:13
yamlインポートage


594 :デフォルトの名無しさん:03/05/10 23:11
>>593
でも動かない。


595 :デフォルトの名無しさん:03/05/10 23:16
インポート?

596 :デフォルトの名無しさん:03/05/10 23:21
addだな。いやそういうことはどうでもいいんだが。


597 :デフォルトの名無しさん:03/05/11 14:04
YAML.rb って Racc で真面目にフル実装しようとしてるせいか、かなり重くないですか?
機能限定でいいから軽い YAML 実装ってないですかね?
無きゃ自分で書くしかないんだけど・・・

598 :デフォルトの名無しさん:03/05/11 18:48
>>585
Cygwin入れてない環境でも、Cygwin DLLさえあれば使える。
…mswin32版との具体的な差が気になるところではあるけれども。

599 :デフォルトの名無しさん:03/05/12 22:20
プログラミング自体初心者なんだけど、
「これは見とけ」とか言うサイトや本ある?
もう、馬鹿でも分かるような。

600 :デフォルトの名無しさん:03/05/12 22:53
ruby本で?
「たのしいruby」あたりはどうかね。


601 :名無しさん@xyzzy:03/05/13 00:29
Ruby ホームページ
http://www.ruby-lang.org/ja/

ユーザーズガイド
http://www.ruby-lang.org/ja/uguide/uguide00.html

リファレンスマニュアル
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Ruby%A5%EA%A5%D5%A5%A1%A5%EC%A5%F3%A5%B9%A5%DE%A5%CB%A5%E5%A5%A2%A5%EB


602 :599:03/05/13 07:55
ありがとうございます。
Rubyのオフィシャルサイトはもちろん見ましたよー。
でもRubyって、どのサイトも
「プログラミングそこそこ理解できる」が前提みたいな感じで、
まるっきりの初心者対象にしたようなページはあまり見つからないんですよね。
その点で多少敷居が高いと感じたり…。

603 :デフォルトの名無しさん:03/05/13 11:28
やっぱり「たのしいruby」とか「Rubyプログラミング入門」くらいしか思い浮
かばんなぁ。

ところで、「プログラミング初心者」であっても「コンピュータの初心者」じゃ
あないよな?


604 :597:03/05/13 14:29
結局 YAML.rb 使わないことにしますた。
しかし、-ryaml するだけで重いんですよね。
そもそも Racc 自体が重いのかしら・・・?

605 :デフォルトの名無しさん:03/05/13 17:55
1.8に入ったsyckはracc使ってないと思う。

606 :デフォルトの名無しさん:03/05/13 18:28
高橋 麻奈で「やさしいRuby」か
結城 浩で「Ruby言語プログラミングレッスン」キボン
いや、Rubyはプログラミング初心者にはやさしいつくりではあるが、
解説書で初心者(他言語経験者を除く)にやさしいのはっていうとちょっと?だったりする。
他言語のいい初心者本からRubyにきたほうがいいかもって、本末転倒。
ひと頃と比べるとRuby本の出るペースも落ちてきてちょっとさびしい。

607 :597:03/05/13 18:29
>>605
どうもです。ちょうどさっき Syck の存在を知って調べ始めたところでつ。
# 1.6 ユーザなので流行に乗り遅れてますね・・・

608 :597:03/05/13 18:46
Syck でつが、コメントの扱いとかダメダメな悪寒。
ほかにも気になるところが沢山あるのですぐには使えないな・・・
もうちょっと調べてみよう。

609 :デフォルトの名無しさん:03/05/13 19:16
>>608
詳しくレポートきぼん。
量が多ければruby-bugsかruby-devへ。

610 :599:03/05/13 20:29
>>603
どのくらいの知識と経験を積めば「コンピュータの初心者」から脱出できるのか
分からないので何とも言えませんが、少なくとも、
PCを昨日今日買ってきたというレベルではありません。

以前、まつもとゆきひろ氏の「Rubyプログラミング入門」を入門書として購入しましたが
余計な注釈や、読みづらい本文で(゚Д゚)ポカーン
この本では「楽しいRuby」は無理だと感じました。

611 :デフォルトの名無しさん:03/05/13 22:17
「Rubyプログラミング入門」は原先生のはずだが。

注釈云々からすると「オブジェクト指向スクリプト言語Ruby」(通称Ruby本)じゃ
ないかと思うが、あれはまったく初心者向けじゃないよ。


612 :デフォルトの名無しさん:03/05/13 22:20
Rubyの初心者向けであって、(オブジェクト指向)プログラミングの初心者向けじゃない。
つーことね。

613 :デフォルトの名無しさん:03/05/13 22:52
>>610
個人的経験からいうと、初心者向けのサイトを作ると覚えるよ。

614 :599:03/05/14 02:10
>>611
スマソ、今見直したら
「原信一郎 著 まつもとゆきひろ 監修」と書かれてますた。
「著 まつもとゆきひろ」部分だけ見て激しく勘違い。
本の名は間違い無く「Rubyプログラミング入門」。

615 :名無しさん@xyzzy:03/05/14 03:34
>>599
目的がないからおぼえないんだよきっと。tdiaryとか導入していま流行の
bloggerになってみれば?tdiaryのpluginをかくためにrubyを覚えたひと
もいるよ。



616 :デフォルトの名無しさん:03/05/14 04:03
オレも「たのしいRuby 」に一票。

617 :597:03/05/14 19:29
>>609
syck-0.15 とかいうのだとダメだったんで、
CVS 最新を取り寄せて試してみたところ、問題なさそうでした。
また何か問題が見つかったら適宜報告するようにします。

618 :597:03/05/14 19:32
つーか、 Syck は全然重くないっすね。快適快適。
YAML もっと普及するといいなぁ。

619 :デフォルトの名無しさん:03/05/14 23:55
結城 浩(の本)に−1票

620 :デフォルトの名無しさん:03/05/15 03:10
Perlをちょっとやったことあるなら「Rubyプログラミング入門」がいいね。
これ読むまで、
オブジェクト?はぁ?クラス?はぁ?インスタンス?はぁ?
って感じの漏れだったが、これ読んだら概念がちょこっとわかったよ。
ちなみに「たのしいRuby」を読んでもオブジェクト指向がなんなのか
全然理解できなかった。これを読んだあとも
オブジェクト?はぁ?クラス?はぁ?インスタンス?はぁ?
の状態に変わりはなかった。
けど、超基礎から説明してるので、
プログラム自体が初心者の人は「たのしい」から読むべきだろうね。
「Rubyプログラミング入門」はUNIXの基礎とか、プログラムの基礎とか知らないと、
わけの分からん用語の連続になっちゃうよ。

621 :デフォルトの名無しさん:03/05/15 05:34
プログラムスーパー初心者です。
Rubyに興味を持ち、先日初めてオフィシャルページを
みてきました。Rubyはvariable declarationがいら
ないようなんですが、そこで質問です。
functionがinteger valueにreturnするときなんか
はどうなるのでしょう?例えばc++で
int function(int i, int j)
{
return i+j;
}
これをRubyでかくと、どうなるのでしょうか?
簡単すぎる質問ですみません。



622 :Ruby知らない:03/05/15 05:36
関数(とは言わない?)の書き方くらいマニュアルや初心者本でも載っているんじゃなかろうか。

623 :621:03/05/15 05:40
>>622
すみません。海外在住なのです。
日本の本が手に入らない僻地にいるので、webだけが
たよりなのですが、なかなか簡単なサンプルがないの
で、ここで聞きました。

624 :_:03/05/15 05:40
  ∧_∧
 ( ・∀・)/< こんなのみつけたっち♪ 
http://www.hiroyuki.zansu.com/hankaku/jaz03.html
http://hiroyuki.zansu.com/hankaku/jaz10.html
http://www.hiroyuki.zansu.com/hankaku/jaz08.html
http://hiroyuki.zansu.com/hankaku/jaz09.html
http://www.hiroyuki.zansu.com/hankaku/jaz06.html
http://hiroyuki.zansu.com/hankaku/jaz05.html
http://www.hiroyuki.zansu.com/hankaku/jaz01.html
http://hiroyuki.zansu.com/hankaku/jaz02.html
http://www.hiroyuki.zansu.com/hankaku/jaz07.html
http://hiroyuki.zansu.com/hankaku/jaz04.html

625 :デフォルトの名無しさん:03/05/15 06:41
>>621

def function(i,j)
 return i+j;
end

とも書けるけど、大半のヤシは

def function(i,j)
 i+j
end

と書くだろう。


626 :デフォルトの名無しさん:03/05/15 13:14
>>597
YAMLは、現在開発中の新バージョンは拡張ライブラリになって
おり、これはとっても速いらしい。まだα状態だろうけど。

627 :デフォルトの名無しさん:03/05/15 14:11
>>621
def function(i,j) i+j end
p function(1,2) #=> 3
p function("foo"+"bar") #=> "foobar"

型を指定するための方法というのはない
どうしても検査したければ obj が Klass のインスタンスであることを
obj.is_a? Klass によって検査することはできるがあまり使わない

628 :デフォルトの名無しさん:03/05/15 14:39
>>627
> p function("foo"+"bar") #=> "foobar"
p function("foo","bar") #=> "foobar"



629 :621:03/05/15 19:42
マトリックスを観てきて、今帰ってきました。
夜12時のshowだったのですが、すごい混雑ぶりでした。

>>625, 627
どうもありがとうございます。
本当に型がないのですね。(笑) javaとC++しかしらな
い私にとっては、とても不思議です。

630 :デフォルトの名無しさん:03/05/15 19:44
>>629
> 本当に型がないのですね。
変数にはない。オブジェクトが型を持っている。

631 :_:03/05/15 19:45
  ∧_∧
 ( ・∀・)/< こんなのみつけたっち♪ 
http://www.hiroyuki.zansu.com/hankaku/jaz03.html
http://hiroyuki.zansu.com/hankaku/jaz10.html
http://www.hiroyuki.zansu.com/hankaku/jaz08.html
http://hiroyuki.zansu.com/hankaku/jaz09.html
http://www.hiroyuki.zansu.com/hankaku/jaz06.html
http://hiroyuki.zansu.com/hankaku/jaz05.html
http://www.hiroyuki.zansu.com/hankaku/jaz01.html
http://hiroyuki.zansu.com/hankaku/jaz02.html
http://www.hiroyuki.zansu.com/hankaku/jaz07.html
http://hiroyuki.zansu.com/hankaku/jaz04.html

632 :デフォルトの名無しさん:03/05/15 21:36
>>597
開発中のYAML次期バージョンは拡張ライブラリとして実装
されているため、とても速いらしい。

633 :( ´w`):03/05/15 21:52
http://www13.big.or.jp/~fubuki/
ここの管理人は『2chに行くヤツは全員オタクだ。
2ch用語発言したボケはアク禁』などとほざくゴミだ。
これはひろゆき氏及び全ての2ちゃんねらーに対する侮辱である。
ここに行って2ch用語を連発して頂きたい。

634 :デフォルトの名無しさん:03/05/15 23:29
>>633
藻前一人でいきがってれば?

635 :デフォルトの名無しさん:03/05/16 02:46
>>634
藻前
konnnakotobadukaisuruyatuniiwaretakunaiyona.

636 :デフォルトの名無しさん:03/05/16 04:24
>>597
開発中の次期バージョンの Ruby は拡張ライブラリとして
現在とても速いα実装をしており、とても YAML らしい。

637 :デフォルトの名無しさん:03/05/16 10:52
人工無能のテスト中なのか…?

638 :デフォルトの名無しさん:03/05/16 17:03
Array を shuffle したいのですが、スマートな方法はありますか?

639 :638:03/05/16 17:17
試しに自分でも書いてみた。非破壊的バージョン。でもいまいちだよなぁ。

class Array
def shuffle
src, dst = self.dup, []
while not src.empty?
dst << src.delete_at(rand(src.size))
end
dst
end
end

640 :デフォルトの名無しさん:03/05/16 17:46
古いのが出て来た。

class Array
 def shuffle!
  size.downto(2) do |i|
   j = rand(i)
   self[i], self[j] = self[j], self[i] unless (i -= 1) == j
  end
  self
 end

 def shuffle
  dup.shuffle!
 end
end


641 :デフォルトの名無しさん:03/05/16 18:32
class Array
 def shuffle!
  size.downto(1){|i|
   push delete_at(rand(i))
  }
  self
 end
end

642 :デフォルトの名無しさん:03/05/16 18:46
rand(1)は常に0だから1までdowntoするのは無駄。

それと、delete_atはそれ以降を全部ずらすから、大きいArrayに対しては効率
が落ちる。


643 :デフォルトの名無しさん:03/05/16 19:21
要素数がトランプの枚数くらいだったら>>641のが速い(Ruby1.6.8)…が、それくらいならそもそも速度気にしない罠

おまけ(実用性はたぶんない)
class Array
 def shuffle!
  sort!{
   rand - 0.5
  }
 end
end

644 :デフォルトの名無しさん:03/05/16 23:35
sort{ rand - 0.5 } がランダムな入れ替えになるというのがいまだによく分からない。

いや、もちろんなんだかぐちゃぐちゃになりそうだなってのは分かるけど
ちゃんとn!通りの並びの全てが等確率で出るのかどうかよく分からない。

645 :デフォルトの名無しさん:03/05/17 00:23
しかも終わらなさそーだし。


646 :デフォルトの名無しさん:03/05/17 03:08
>>645
ソートのアルゴリズムも知らない中学生ですか?

647 :デフォルトの名無しさん:03/05/17 04:08
>>646
試してみるとわかると思うが、終わらない。

648 :デフォルトの名無しさん:03/05/17 05:52
>>647
% ruby -e 'class Array; def shuffle!() sort!{ rand - 0.5 } end end ; a=[0
,1,2,3,4,5,6,7,8,9]; a.shuffle!; p a'
[1, 7, 9, 3, 5, 0, 8, 6, 2, 4]
%
終わるけど?

649 :デフォルトの名無しさん:03/05/17 17:33
class Array
  def shuffle!(&block)
    if block
      1.upto(size-1){|i| j = block[i+1] ; self[i],self[j] = self[j],self[i]}
    else
      1.upto(size-1){|i| j = rand(i+1) ; self[i],self[j] = self[j],self[i]}
    end
    self
  end
end

上の方法だとrand(n)かblock[n]が0,…,n-1を等確率で返すことを仮定すれば
すべての要素が異なるときにそれぞれの順列が等確率になることを証明できるが
他の方法はどう?

650 :デフォルトの名無しさん:03/05/17 19:10
>>643の場合を、quick sortで考えてみる。
中央値はランダムに決定されることは自明だと思うので省略。
残りの要素はランダムに振り分けられるので、左右どちらに行くかは等確率。
これを再帰的に繰り返せば全体も等確率と考えていいんじゃないかな。
ただ、最後はselection sortを使ってるんで、これは等確率じゃないような気がする。
n個の要素から最小値を選び出す場合、最初に比較された要素が選ばれる確率は
2**(1-n)だけど、最後に比較されたものが選ばれる確率は1/2。

おまけ
def tossup
  rand(2)*2-1
end


651 :デフォルトの名無しさん:03/05/17 20:40
for i := 0 to length(arr)-1 do
 swap(arr[i], arr(rand(length(arr))));

652 :デフォルトの名無しさん:03/05/18 05:42
>>644 ダメポ
def hist(n,k)
a, h = 1..n, Hash.new(0)
(a.inject{|i,j|i*j}*k).times{ h[yield(a)]+=1 } ; h
end

n, k = (ARGV[0]||3).to_i, (ARGV[1]||100).to_i
h = hist(n,k){|a|a.sort{rand-0.5}}
h.sort_by{|i,j| [j*10/k,i]}.each{|i| p i}

>>650 スマン、最後はselection sortってどういうこと?
それは抜きにしても左右に振られるのがランダムであることから
等確率であることをいうのは飛躍が大きいと思われ。

653 :デフォルトの名無しさん:03/05/18 06:19
ary.sort_by { rand }


654 :デフォルトの名無しさん:03/05/18 06:50
Enumeration#sort_by の実装の話?

655 :デフォルトの名無しさん:03/05/18 12:33
Enumerable の typo だとしても、何を言いたいか分からない。


656 :デフォルトの名無しさん:03/05/18 21:57
>>652
> >>650 スマン、最後はselection sortってどういうこと?
勘違い。ruby_qsort()は切替えたりしてないな。

> それは抜きにしても左右に振られるのがランダムであることから
> 等確率であることをいうのは飛躍が大きいと思われ。
というか、順次比較して行くから等確率じゃないな。

657 :デフォルトの名無しさん:03/05/19 00:01
>>645の意図が分かった気がする。
>>643の場合、停止確率は1だが停止しない場合もあると言いたかったんだろう。
それならば正しい。
しかし>>647は間違いだな。確率0の事象を実際にみることはないに等しい。

658 :デフォルトの名無しさん:03/05/19 02:10
>>657
>>643については正しいが、確率1だからといって見ることができるとは限らないので
「確率0の事象を実際にみることはないに等しい」は言い過ぎかと。

class Array
  def shuffle!()_=self;1.upto(size-1){|i|j=rand(i+1);_[i],_[j]=_[j],_[i]};_ end
  def shuffle() o = dup ; o.shuffle! ; o end
  def sorted?() empty? or !! inject{|i,j| i <= j ? j : break} end
  def bogosort!() until sorted? do shuffle! end ; self end
  def bogosort() o = dup ; o.bogosort! ; o end
end

100.times do |i|
  STDERR.printf("%2d: ", i)
  a = (1..i).to_a.shuffle ; t0 = Time.now ; b = a.bogosort ; t1 = Time.now
  STDERR.printf("%f sec [%s] --> [%s]\n", t1-t0, a.join(","), b.join(","))
end

659 :デフォルトの名無しさん:03/05/19 02:11
>>656
> というか、順次比較して行くから等確率じゃないな。

それも明らかじゃないと思う。難しい。

660 :653:03/05/19 02:14
>>653って何かおかしい? スマートな実装だと思ったんだけど……。


661 :653:03/05/19 02:14
つーか、>>508 あたりから既出なのか。スマソ。

662 :デフォルトの名無しさん:03/05/19 19:55
[ruby-dev:20209] からのスレッドを見ると、>>491 のような疑問は尤なような。

663 :デフォルトの名無しさん:03/05/19 19:59
rdoc なんだけど、ここ
ttp://rrr.jin.gr.jp/doc/http-access2/
の rdoc の出力は、rdoc-0.9.0 の標準 (Squeak のクラスブラウザみたいに、上半分に
クラス階層やメンバが表示されているやつ) とは違って、左半分にクラス階層やメンバが
表示されているんだけど、

これって rdoc の CVS 版使うとこうなるのかな?誰か知っている人いますか?



664 :663:03/05/19 20:08
>>663
すいません、自己解決しました。

ttp://rrr.jin.gr.jp/doc/Makefile
をみたら、--template kilmer っていうオプションが rdoc にあるみたいね。


665 :デフォルトの名無しさん:03/05/20 00:40
rubyで、文字列が'aaa', 'bbb', 'ccc'のどれかであれば真、
それ以外では偽という条件を書くとき、
if str=='aaa' || str=='bbb' || str=='ccc' then
 ...
end
としているのですが、もっとうまい書き方はありますか?

case str
 when 'aaa', 'bbb', 'ccc'
 ...
end
でもよかったんだけど、if修飾子としても使いたいので
できればif文での書き方を希望。

666 :デフォルトの名無しさん:03/05/20 00:46
>>665
Rubyスレをあげないでください。

667 :デフォルトの名無しさん:03/05/20 00:50
>>665
if %(aaa bbb ccc).include?(str)

668 :667:03/05/20 00:51
うおお、ミスった。
if %w(aaa bbb ccc).include?(str)

669 :デフォルトの名無しさん:03/05/20 01:00
>>668
なるほど、配列の要素として含むかどうかで判断するのね。
ちなみにこれ、実行するたびに配列が作成されるのかな?
erubyやmod_rubyで使用すると、実行するたびにオブジェクトが
増えてしまう?
(仕方ないか)

670 :667:03/05/20 01:09
>>669
実行のたびに配列は生成されちゃうだろうね。
それがいやだったら、配列を定数に入れとくとか。

ifの評価が終わったら参照されない配列になるから、
gcされちゃうんで増え続けることはないだろう。

671 :デフォルトの名無しさん:03/05/20 01:13
漏れならこっち
if /\A(?:aaa|bbb|ccc)\z/ =~ str

672 :669:03/05/20 01:46
どうもありがとう。
いろんなやりかたがあるのね。

673 :デフォルトの名無しさん:03/05/20 09:55
>>671
なるほど。正規表現のリテラルだったら毎度同じオブジェクトなのか。

$ ruby -e '2.times do p /hoge/.id end'
538146270
538146270

$ ruby -e '2.times do p ["hoge"].id end'
538146160
538146130

VALUE * を使い回す話とごっちゃになってた。

674 :デフォルトの名無しさん:03/05/20 23:31
>>673
> VALUE * を使い回す話とごっちゃになってた。
何それ?

675 :デフォルトの名無しさん:03/05/21 05:40
>>674
たぶんC言語レベルでのソースコードの話。
VALUEって型があって、それへのポインタのことでは?

676 :デフォルトの名無しさん:03/05/21 05:49
>>673
そうとも限らないんだけどね。

ruby -e '2.times do |i| p /mona/.id end'
ruby -e '2.times do |i| p /#{i}/.id end'
ruby -e '2.times do |i| p /#{i}/o.id end'

677 :デフォルトの名無しさん:03/05/21 06:46
真中のは厳密にはリテラルと言わないような気もする。


678 :デフォルトの名無しさん:03/05/21 09:35
真中のは言わなくても最後のは言うの?

679 :デフォルトの名無しさん:03/05/21 11:19
>>675
それは分かるんだけど、「使い回す」ってのが何の話だかが。

680 :デフォルトの名無しさん:03/05/21 20:28
>677 はリテラルとは何か定義してみれ。
# 最近fj.lang.cでフレームになってたような気もするが。

681 :デフォルトの名無しさん:03/05/22 19:26
fj.lang.cだと最近じゃないわけだが。


682 :デフォルトの名無しさん:03/05/22 21:29
文脈によっては、たとえ100年前でも最近ていうからなぁ。

683 :デフォルトの名無しさん:03/05/23 18:11
で、そういう文脈なの?


684 :デフォルトの名無しさん:03/05/23 18:22
俺様のニュースサーバで expire されてなければ最近。

685 :デフォルトの名無しさん:03/05/24 00:06
で、あなた様のニュースサーバはどこにあるんですか?


686 :山崎渉:03/05/28 12:56
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

687 :デフォルトの名無しさん:03/05/29 02:33
http://www.rubyist.net/~matz/slides/ipsj-hi103/index.html
にあるグラフはどっからのデータのグラフなんだ
もしかしてmatzが主観で書いたグラフか?

688 :デフォルトの名無しさん:03/05/29 04:27
客観データだとしたらむしろびっくりだ

689 :デフォルトの名無しさん:03/05/29 07:41
lzhやzipなどの書庫ファイルの中身を
Rubyからアクセスしたいのですが、どうしたらいいでしょうか。


690 :デフォルトの名無しさん:03/05/29 09:49
list = `"lzh lq #{archive}")`.split(/\n/)
list = `"zipinfo #{archive}"`.split(/\n/)[1...-1]

691 :デフォルトの名無しさん:03/05/30 00:53
Array#sort が比較関数をブロックで渡せるんだから、
Array#uniq も比較関数をブロックで渡せたら…と思いませんか?

692 :デフォルトの名無しさん:03/05/30 01:29
>>691
思わないなぁ。めんどくさいと思うよ。
それなら俺様 uniq を作った方が早いと思う。

693 :デフォルトの名無しさん:03/05/30 03:39
>>690
どうも。
書庫内のファイルの中身も見たいので、DLLのAPIヘルプを見ているところです。



694 :デフォルトの名無しさん:03/05/30 18:28
>>693
環境はWindowsなのか?
なら「Ruby+統合アーカイバ+DLL」でぐぐるとなんか出てくる。

zlibを使ったRubyZipってのもあったはず。

695 :デフォルトの名無しさん:03/05/31 05:19
というか、RAA。

696 :デフォルトの名無しさん:03/05/31 05:35
>>694
情報どうもです。いろいろ試してみます。

697 :デフォルトの名無しさん:03/06/01 14:11
pythonマンセ〜

698 :デフォルトの名無しさん:03/06/04 21:38
http://pc2.2ch.net/test/read.cgi/tech/1047970129/782 に出ている、
遅延評価に対応した ruscheme というのを試してみたいのですが、
どこかダウンロード可能なところは無いでしょうか?

699 :デフォルトの名無しさん:03/06/04 21:51
>>698
ぐぐれ。ちなみに綴りが間違ってる。 Rucheme だ。

700 :デフォルトの名無しさん:03/06/04 22:03
綴り間違い失礼。

rucheme003 はまだ遅延評価に対応していないみたいなんです。
もっと新しいのはダウンロードできないんでしょうか?


701 :デフォルトの名無しさん:03/06/05 02:18
まつもっちゃんよ・・・

頼 む か ら ソ ケ ッ ト の g e t c で デ ッ ド ロ ッ ク す る の 直 し て く れ

これじゃネットワーク全然使えねーよ

702 :デフォルトの名無しさん:03/06/05 02:20
>>701
再現出来る短いコードを書き環境を明示して晒してみたら?

703 :デフォルトの名無しさん:03/06/05 02:38
ごめ。スレッド使えばデッドロックにはならないぽい。
でもスレッドは止まる。timeoutも効かん。

再現?簡単だYO!
TCPServerとTCPSocketで試してみ。

ソケットオープソ

接続

getc (getsでもreadでも何でもいいが)

受信データを送らない

あぼーん


704 :デフォルトの名無しさん:03/06/05 02:45
>>703
だから、再現コードと再現環境を晒せっての。
どんなコードや環境でも再現するようなら
今頃 Ruby なんか使ってる香具師なんかいねえよ。

705 :デフォルトの名無しさん:03/06/05 02:46
>>704
ワカタ。ゴメン。ちょと待ってろ

706 :703:03/06/05 03:08
uwaaaaaaan

書き込めねえよ

でけえとかなげぇとか言うなよ

>>704スマソ
環境だけ書かせてもらうわ

Ruby1.6.8 無印とCVS版200304全般
mswin32、mingwは全滅。Cygwinは送信だか受信のどっちか×だった。

1.8pre2のLinux版では問題なし。

707 :デフォルトの名無しさん:03/06/05 05:35
ttp://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=trap%3A%3Atimeout
これってまだ直ってないんだっけ

708 :703:03/06/05 06:20
少なくとも上の環境では無理ぽ

709 :デフォルトの名無しさん:03/06/05 10:03
>>706
> mswin32、mingwは全滅。
winsockの呼び出しは中断できないから。

ついでにいっとくと、Windows対応はまつもとさんにいっても無意味。


710 :デフォルトの名無しさん:03/06/05 12:41
つか、デッドロックの意味がわかってない悪寒

711 :デフォルトの名無しさん:03/06/05 20:54
Rubyでcrc32を求める一番無難な方法は何でしょう?
それともMD5使っとけばいいんですかね。

712 :デフォルトの名無しさん:03/06/05 21:01
単なるブロックをデッドロックと言うのは最近の流行か何かですか?

713 :デフォルトの名無しさん:03/06/05 22:09
ネットワークプログラミングをするべきでない人たちが
ネットワークプログラミングをするのが流行っているようです。

714 :デフォルトの名無しさん:03/06/05 22:23
こうしてRubyは消えていったとさ。



     〜〜 完 〜〜

715 :デフォルトの名無しさん:03/06/05 22:50
まだ粘着がはりついてるのか(藁

716 :デフォルトの名無しさん:03/06/06 00:47
藁って久々に見ました。

717 :デフォルトの名無しさん:03/06/06 01:20


701 名前: デフォルトの名無しさん [sage] 投稿日: 03/06/05 02:18
まつもっちゃんよ・・・

頼 む か ら ソ ケ ッ ト の g e t c で デ ッ ド ロ ッ ク す る の 直 し て く れ

これじゃネットワーク全然使えねーよ



718 :デフォルトの名無しさん:03/06/07 04:25
module ComparisonChainable
def self.append_features(mod)
mod.module_eval do
alias lt < ; def <(x) lt(x) && x end
alias gt > ; def >(x) gt(x) && x end
#ailas le <= ; def <=(x) le(x) && x end
alias ge >= ; def >=(x) ge(x) && x end
alias eq == ; def ==(x) eq(x) && x end end end end
class FalseClass
def <(x)false end; def >(x)false end; def <=(x)false end; def >=(x)false end
end
[Fixnum, Bignum, Float, String, Module].each do |k|
k.class_eval do include ComparisonChainable end end

p 1<2<3
p 1<2<2

文法スレ読んでてこういうの考えたんだけど、
コメントアウト外すと parse error になるのはバグ?

719 :デフォルトの名無しさん:03/06/07 12:25
>>709
selectはできるかな。

720 :デフォルトの名無しさん:03/06/08 21:50
ruby 1.6 と 1.8 の両方で動作するプログラムを書こうとしていますが、
Hash#indexes をつかうと 1.8 だと warning がでます。
Hash#values_at をつかうと 1.6 では動きません。
どうすればよいですか?

721 :デフォルトの名無しさん:03/06/08 22:15
class Hash
alias values_at indexes unless self.instance_methods.include? "values_at"
end

こう?なんか違ってそう。

722 :デフォルトの名無しさん:03/06/08 22:23
method_defined?
つーかshim使えよ。

723 :デフォルトの名無しさん:03/06/08 22:24
>>719
ソケットに対しては使える。

724 :デフォルトの名無しさん:03/06/08 22:26
>>718
ailas

ruby-mode.elとか、強調表示できるエディタを使え。

725 :デフォルトの名無しさん:03/06/08 22:37
>>722
shim は嫌

726 :デフォルトの名無しさん:03/06/08 22:44
>>721-722
なんかかっこ悪いなあ。1.8 でも indexes で warning を出さないべきだと思うのは
漏れだけ?
warning を出したければ 1.9 以降にして欲しい。

727 :デフォルトの名無しさん:03/06/08 23:21
>>726
いまさらそんなこと言っても...

728 :デフォルトの名無しさん:03/06/08 23:43
>>727
1.8はまだ出てないじゃん。

次のレスの予想:
ここでそんなこと言っても...

729 :デフォルトの名無しさん:03/06/08 23:47
Rubyの質問スレがないようなので,ここに投稿させてもらいます.

10人が受講する科目Aの成績平均を計算するため
「氏名,成績点」をキーボードから入力して,
連想配列に格納する.得られたデータから平均値を算出し,
最後に,氏名,素点,平均からの偏差を画面出力したい.

という問題があり
dt = ArrayScore.new(10);
dt.inputData();
dt.meanCalc();
dt.outputData();
と実行するみたいなんですけどうまくできません.
リファレンスマニュアル見ながら作ってみたんですが
エラーが直りません.どなたか直してもらえませんか.
次に全文載せます.


730 :デフォルトの名無しさん:03/06/08 23:48
class ArrayScore
@hash = {}; @num = 0; @mean;

def new n
@num = n; return self;
end

def inputData
@hash.clear;
for i in 1..@num
gets;
tmp = split(",");
@hash.store(tmp[0],Integer(tmp[1]));
end
end

def meanCalc
@mean = 0;
@hash.keys.each do |key|
@mean += @hash[key];
end
@mean /= @hash.size;
end

def outputData
@hash.keys.each do |key|
p key, ",", @hash[key], ",", @mean - @hash[key];
end
end
end

731 :729:03/06/08 23:49
dt = ArrayScore.new(10);
dt.inputData();
dt.meanCalc();
dt.outputData();

これで全文です.

732 :デフォルトの名無しさん:03/06/08 23:56
- def new n
+ def initialize n

733 :729:03/06/09 00:13
>>732
ありがとうございます
最初のエラーが消えました.
ただ次に
`inputData': undefined method `clear' for nil (NameError)
と出てきてしまいました.
リファレンスマニュアルのHashのところには
たしかメソッドとしてclearがあったと思うんですが
これはどういうことでしょう.
hashを使うのに最初になにか宣言がいるんでしょうか.

734 :デフォルトの名無しさん:03/06/09 00:22
頭悪すぎ……。メッセージよく読めよ。


735 :デフォルトの名無しさん:03/06/09 00:25
>>728
1.7 で既に出ている warning を 1.8 で出すなとおっしゃるのですか?

736 :デフォルトの名無しさん:03/06/09 00:26
>>733
@hash = {}; @num = 0; @mean;
を initialize メソッドの中に。

どのスコープの中にいるかをよく考えてね。

737 :デフォルトの名無しさん:03/06/09 00:51
>>735
1.7は開発途上のバージョンだし、最初のほうと今では仕様が違っている点は
いくらでもあるし、別に関係ないんじゃない?

738 :729:03/06/09 00:59
>>736
ありがとうございます.
やっと動きました.
メソッドの中に入れたら
他のメソッドで使えないとか思ってました.

739 :デフォルトの名無しさん:03/06/09 01:06
Ruby用の、Windowsで使えるおすすめエディタってどんなのがありますか?

740 :デフォルトの名無しさん:03/06/09 01:12
>>739
なんでんかんでんMeadowでよかとよ。

741 :デフォルトの名無しさん:03/06/09 01:13
>>739
とくにおすすめはしないがMeadow。
おれはとても便利に使ってるが、
windowsアプリケーションとして見たら癖ありすぎだもんで。

742 :デフォルトの名無しさん:03/06/09 01:15
>>740
どうもです。探してみます。

743 :デフォルトの名無しさん:03/06/09 01:17
Emacsみたいなエディタかぁ

744 :740:03/06/09 01:18
Linuxやるときに、CUIでエディタ使えるようになるから一石二鳥。

745 :740:03/06/09 01:19
>>743
emacsのwin版 = Meadow

746 :デフォルトの名無しさん:03/06/09 01:20
Ctrlキーに指が届かないからvi使っている。。。

747 :デフォルトの名無しさん:03/06/09 01:21
>>742
もしMeadowを使うことに決めたのなら、
rubyのパッケージについてくるruby-mode.elを使うようにしなよ。
これを使わないとMeadowを使う意味が半減だ。

748 :デフォルトの名無しさん:03/06/09 01:30
xyzzy用のruby-mode.lもあったよな。

749 :デフォルトの名無しさん:03/06/09 01:35
RDEも挙げてみる。使ったことないけど。

750 :デフォルトの名無しさん:03/06/09 01:52
自分自身の言動を「〜していたらしい」と書く人がいるが何度見てもキモい

751 :デフォルトの名無しさん:03/06/09 03:07
Eclipse はどうなん?

752 :740:03/06/09 03:49
>>746 余談だが・・・
Ctrlキーを指ではなく、手のひら(小指の付け根よりちょっと下)
で押すと良いらしぃ。

753 :デフォルトの名無しさん:03/06/09 04:14
>>746
ESC キーの方が遠くないか?

754 :デフォルトの名無しさん:03/06/09 07:16
窓使いの憂鬱で CapsLock と Ctrl を変えれば。

755 :デフォルトの名無しさん:03/06/09 07:57
>>750
昨日ウェブを巡回していたらしいたけ皮膚炎という病気の存在を知った。

756 :デフォルトの名無しさん:03/06/09 11:41
>>752
変換/無変換をCtrlに割り当てる。これ最強。

757 :デフォルトの名無しさん:03/06/09 14:12
>>756
そのどっちかをshiftに割り当てようよw

758 :デフォルトの名無しさん:03/06/09 14:35
>>757
いや、shiftよりCtrlの方が使用頻度高いし。
代わりにカタカナひらがなをshiftに割り当ててみたんで、しばらくこれで試してみよう。

759 :デフォルトの名無しさん:03/06/09 17:38
あるクラスの中で、

def +=(i)
end

def -=(i)
end

def *=(i)
end

def /=(i)
end

がsyntax errorになります。
これらの実装はどうやんの?

760 :デフォルトの名無しさん:03/06/09 17:41
+=などは+などから自動的に定義されます。
独立して定義することはできません。

761 :デフォルトの名無しさん:03/06/09 18:12
>>753
上(ESC)は届くけど、下(Ctrl)はホームポジションから離れないと届かないよぉ ちなみにノートPCのキーボード

762 :デフォルトの名無しさん:03/06/09 18:16
++も自動的に定義してくれよ。

763 :デフォルトの名無しさん:03/06/09 18:25
++ など必要ではありません。

764 :デフォルトの名無しさん:03/06/09 18:44
はっちゃけた!!
succ!のaliasにすればいいんだよ>++

765 :デフォルトの名無しさん:03/06/09 18:44
実際のところ++があったとしてRubyで使う場面てそんなにないような。
…ってこのての議論はもう飽き飽きw

766 :デフォルトの名無しさん:03/06/09 18:46
まつもとさんは確か++を実装しないと言ってたと思った。
だから誰か++を実装したRubyをブランチしなよ。名前はRuby++w

767 :デフォルトの名無しさん:03/06/09 19:20
Emacs系エディタを使うか使わないかに関わらず,
AltIME等でCtrlとCapsLockを入れ替えたほうがなにかと左手小指にやさしいかと。
保存やコピペなど,Ctrlキーを使う機会は多いから。
ついでに"Ctrl+["でESCを押したのと同じだからviユーザにとっても
押しやすいCapsLockの位置にCtrlがあったほうが幸せでしょう。

768 :デフォルトの名無しさん:03/06/09 19:44
>>767
Aの隣にCtrlがあったほうがいいか、というとそうでもないらしい。
おれはそっちのほうがいいんでmayuで設定しているが。

一般的な106とか109キーボードのCtrlの位置(左Shiftの手前)に
あったほうが使いやすいという意見もある。
それはそれでうなずける主張だと思うんだな。

769 :デフォルトの名無しさん:03/06/09 20:35
CapsLockはCapsLockとして使うよ

770 :デフォルトの名無しさん:03/06/09 20:43
つまらない話題ですね。

771 :デフォルトの名無しさん:03/06/09 20:46
rubyって何に使うの?
車輪の再発明?


772 :デフォルトの名無しさん:03/06/09 20:48
>>771
そういう批判をするならばCOBOLでも使ってろw

773 :デフォルトの名無しさん:03/06/09 21:12
>>770
この間の読書会ではこれでかなり盛り上がってた。

774 :デフォルトの名無しさん:03/06/09 22:40
ルビ基地に逢いたい

775 :デフォルトの名無しさん:03/06/09 23:24
マツモト ユキヒロ どっかの店みたい・・・
ハァハァ(°д°;)ハァハァ

776 :デフォルトの名無しさん:03/06/09 23:38
>>766
メソッドの実体は実装しなくていいから、せめて演算子として ++ 使わして欲しい。

777 :デフォルトの名無しさん:03/06/10 00:25
まだ ruby 初心者だった頃、++演算子はあるもんだと思って

++i

とかやって、無限ループになってはまった。

778 :デフォルトの名無しさん:03/06/10 01:26
ょぅι゙ょ

779 :デフォルトの名無しさん:03/06/10 01:55
 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
 |  次でボケて!    |
 |_________|
    ∧∧ ||
    ( ゚д゚) ||
    / づΦ

780 :デフォルトの名無しさん:03/06/10 01:58
goto >>778

781 :名無しさん@xyzzy:03/06/10 13:17
だれかLL Saturday行く人いる?

782 :デフォルトの名無しさん:03/06/10 13:51
郁代。

783 :デフォルトの名無しさん:03/06/10 22:03
ょぅι゙ょ

784 :デフォルトの名無しさん:03/06/10 22:05
refe.elの最初の補完リストを作るのに失敗するのですがどうすれば
いいんですかぁ。

環境が Meadow + ruby 1.6.8 (2002-12-24) [i386-mingw32] なので
(refe-call-process t "*") の * を ruby が自前で展開して
refeに*が渡らないのが原因だと思うのですが・・・
* を '*' にして展開しないようにしてもだめでした。


785 :デフォルトの名無しさん:03/06/10 22:07
>>784 追記
M-x refe して * を指定するとrefeのusageが出て
'*'だとno such class or method: '*'になりまちた。
微妙にスレ違いですけど、どなたか・・・たすけて・・・

786 :デフォルトの名無しさん:03/06/10 23:15
>>784
まず、ReFeのバージョンは0.7だよね?
それが大丈夫なら、refe '*[#,]*' でやってみ。


787 :デフォルトの名無しさん:03/06/10 23:35
>>786
ReFe 0.71でつ。
M-x refe '*[#,]*'の結果は
not match: '*[##]*'だそうです。



788 :784:03/06/10 23:57
さらに実験。
(defvar refe-program-args
'("-e" "puts ARGV"))
と書き換えてみると
M-x refe * の結果は refe.elをおいてるディレクトリのファイル一覧が出ました(゚Д゚)
'*'だと'*'と出ました。

もしかしてワイルドカードの展開ってmeadowさんがやってるの???

789 :デフォルトの名無しさん:03/06/11 00:38
>>787
わかった。ruby を経由するのは潔くあきらめよう。
ReFe のデータベースディレクトリに method_document_comp という
ファイルがあるから、それを elisp を使って読み込んでくれ。
構造は中を見れば一瞬でわかるから。


790 :デフォルトの名無しさん:03/06/11 00:58
>>784
(refe-call-process t "*")

(refe-call-process t "")

にしたらどうなるん?


791 :789:03/06/11 01:11
>>790
あ、そうか。そっちのほうが賢いな。すまん。

792 :784:03/06/11 07:02
>>790
> (refe-call-process t "*")
> を
> (refe-call-process t "")
no such class or method: ""
です。というか最初は""だったけどruby-listでWindowsでうごかねーよ
ってなって"*"になったんです。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/37546

>>789
こんなナイスなものがあったんですね。ありがとうございます。


・・・でも、なにがだめなんだろう。
xyzzyではうまくいくのになぁ。meadowさんがなにかごにょごにょしてるのかな。
まあいいやmeadowつかわねーし。

793 :784:03/06/11 07:06
> > (refe-call-process t "")
> no such class or method: ""
> です。というか最初は""だったけどruby-listでWindowsでうごかねーよ
> ってなって"*"になったんです。
> http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/37546
スマソ。勘違いだった。
最初は引数なしだったんですね。


794 :デフォルトの名無しさん:03/06/11 16:35
ruby foo.rb みたいに直接呼ばれたのか
他のスクリプトから load 'foo.rb' されたのかを,
foo.rb の中で見分けるにはどうしたらいいんでしたっけ?


795 :デフォルトの名無しさん:03/06/11 16:41
if __FILE__ == $0

796 :デフォルトの名無しさん:03/06/13 06:56
Hashの中身を表示する際に
「値」で降順ソートして「キー」と「値」を出力するのに
簡単な方法ありませんか?

valuesで全値の配列を返してもらって
それをsortメソッドでソートして
次にkeysで全キーの配列を返してもらって
そのキーに対応する値を順に見ていって
ソートした値の配列の前から順に対応してるのが
見つかったら出力していくって方法しかないでしょうか

これは一つ一つのキーで毎回値の配列を
全部確認するので効率悪い気がします

値は重複しているものもあるので
index(val)は使えなさそうです



797 :デフォルトの名無しさん:03/06/13 08:06
Hash 使うの止めれば。

798 :デフォルトの名無しさん:03/06/13 08:15
Hash#to_a


799 :デフォルトの名無しさん:03/06/13 09:30
hash.map{|k, v| [v, k]}.sort.reverse_each{|v, k| puts "#{k} => #{v}"}

1.8ならこうもできる。
hash.sort_by{|k, v| v}.reverse_each{|k, v| puts "#{k} => #{v}"}


800 :デフォルトの名無しさん:03/06/13 13:43
よくわかんねーけど、こういうこと?

hash = {'a' => 3, 'b' => 1, 'c' => 2}
p hash.sort {|a,b| b[1] <=> a[1]}
----------------
[["a", 3], ["c", 2], ["b", 1]]

801 :デフォルトの名無しさん:03/06/13 13:48
あ、800ゲト

802 :デフォルトの名無しさん:03/06/13 17:55
ordered_hashみたいなのって誰か作ってなかったっけ

803 :デフォルトの名無しさん:03/06/13 19:26
>>802
http://raa.ruby-lang.org/list.rhtml?name=pseudohash
これかな。使ったことがある。
でもvalueに重複があってしかもinvertした結果、
つまりkeyが重複するようなのにつかえんだろう。

804 :デフォルトの名無しさん:03/06/13 19:28
>>803
う。意味がとおらねえ。
valueに重複がある場合invertして果たしてそれが使い物になるかどうかわからん、
といいたかった。

805 :デフォルトの名無しさん:03/06/14 01:11
拡張ライブラリについて質問!
Integer から size_t に入れたいときはどうすればよろしいの?
NUM2ULONG でいい?

806 :デフォルトの名無しさん:03/06/14 07:36
hash.keys.sort {|a, b| hash[a] <=> hash[b]}.each do |key|
  p hash[key]
end

807 :デフォルトの名無しさん:03/06/14 07:41
<=> の両辺が反対か。
値でソートしたいならすりゃいいじゃんってこった。

808 :796:03/06/14 09:23
>>798>>799>>800>>806
ありがとうございます.

やりたかったことは>>799>>806です.
おかげでできました.

hashにmapなんてのがあるんですね
http://www.ruby-lang.org/ja/man-1.6/index.cgi?cmd=view;name=Hash;em=hash
ここにあるHashのメソッドしか知りませんでした.

809 :デフォルトの名無しさん:03/06/14 14:15
>>808
> hashにmapなんてのがあるんですね
> ここにあるHashのメソッドしか知りませんでした.

漏れもよくはまるんだけど、Array や Hash は Enumerable を include してるので、
そっちのメソッドもチェックしる。

810 :デフォルトの名無しさん:03/06/14 15:33
>>809
そうね。Hashに限らず何を継承(include含む)してるか見ないとね。
おれの場合マニュアル見るときFileを見るべきかIOを見るべきか
迷うことがよくあるw

811 :デフォルトの名無しさん:03/06/14 18:44
リフレクションかなんか使って
オブジェクトが持ってるメソッド全部を
列挙できなかったっけ?
まあ列挙しただけじゃ使い方はわからないから
結局リファレンスを見ないとダメか。

812 :デフォルトの名無しさん:03/06/14 19:32
>>811
できるしそういうブラウザもある。

でもやっぱり Hash や Array の場合、Enumerable のメソッドもマニュアルに
書いておいたほうが親切だと思うなあ。

813 :796:03/06/14 20:59
>>809
なるほど
今後はもっとチェックしまつ

814 :デフォルトの名無しさん:03/06/14 21:07
irb使ってるか?


815 :デフォルトの名無しさん:03/06/14 21:59
irbってもっとカッコイイ名前だったらいいのになー。

816 :デフォルトの名無しさん:03/06/14 22:11
iRuby?


817 :デフォルトの名無しさん:03/06/14 22:20
ょぅι゙ょ

818 :デフォルトの名無しさん:03/06/14 22:54
ムーア

819 :デフォルトの名無しさん:03/06/14 22:57
伊良部でいいよ

820 :デフォルトの名無しさん:03/06/14 23:03
irbと書いて I love Ruby と読む。これ最強。

821 :デフォルトの名無しさん:03/06/14 23:58
電卓代わりに使ってる

822 :デフォルトの名無しさん:03/06/15 00:32
>>821
電卓代わりならPerlとどっちがいいかな?
俺Perlつかってるけど

823 :デフォルトの名無しさん:03/06/15 00:36
電卓代わりだったら、MAXIMAかSciLab、Risa/asirあたり
の方が強力だよ。

824 :デフォルトの名無しさん:03/06/15 00:46
irb をログインシェルに使ってる香具師の数 →

825 :デフォルトの名無しさん:03/06/15 00:52
0だな。


826 :822:03/06/15 01:05
>>823
全部知らないや・・・調べてみよ―っと

827 :デフォルトの名無しさん:03/06/15 01:14
>>823
電卓というにはちとオーバースペックな気もする
俺はちょっとした計算は
emacsの*scratch*バッファでelisp使ってます。

828 :デフォルトの名無しさん:03/06/15 01:32
俺はbcだな。

829 :デフォルトの名無しさん:03/06/15 01:44
ちょっとした計算なら俺は M-: だな。

830 :デフォルトの名無しさん:03/06/15 01:45
俺はexprだな。

831 :デフォルトの名無しさん:03/06/15 01:45
俺はRだな。

832 :デフォルトの名無しさん:03/06/15 02:04
俺は電卓だな

833 :デフォルトの名無しさん:03/06/15 02:22
俺はcalcだな

834 :デフォルトの名無しさん:03/06/15 02:28
俺は指だな。

835 :デフォルトの名無しさん:03/06/15 02:30
俺は爪楊枝です
つまようじ最強

836 :822:03/06/15 02:46
>>835
計算してるときにケガしないように気をつけてね

837 :デフォルトの名無しさん:03/06/15 03:24
俺は算木だな

838 :デフォルトの名無しさん:03/06/15 09:13
俺はおなーにだな

839 :デフォルトの名無しさん:03/06/15 11:23
>>827

elispって、(/ 3 2)が1になっちゃうんですけど、
その程度でいいってこと?


840 :デフォルトの名無しさん:03/06/15 11:57
晒しあげ。

841 :デフォルトの名無しさん:03/06/15 11:58
俺は計算尺だな。

842 :デフォルトの名無しさん:03/06/15 12:07
俺は脳内妄想電卓だな。

843 :デフォルトの名無しさん:03/06/15 12:42
>>839
rubyって 3/2 が1になっちゃうんですけど(ry


844 :デフォルトの名無しさん:03/06/15 13:18
exprって 3 / 2 が1になっちゃうんですけど(ry

845 :デフォルトの名無しさん:03/06/15 14:06
俺は gosh だな。

846 :デフォルトの名無しさん:03/06/15 14:26
>>843
必要に応じて
require "mathn"

847 :デフォルトの名無しさん:03/06/15 14:33
int/int が rational なのは結局Cプログラマが多いせいなんだろうな

848 :デフォルトの名無しさん:03/06/15 14:34
間違えた逆だw

849 :デフォルトの名無しさん:03/06/15 14:46
100万回ループの所要時間を調べようと思ったのですが

starttime = Time.now.to_f
for i in 1..1000000;end
p [Time.now.to_f - starttime]

と、

def bench
starttime = Time.now.to_f
yield
p [Time.now.to_f - starttime]
end
bench {for i in 1..1000000;end}

では 1割くらい前者のほうが速いのですが、何故でしょう?

850 :デフォルトの名無しさん:03/06/15 14:50
$ruby -rprofile hoge.rb

851 :デフォルトの名無しさん:03/06/15 15:00
Range#each の速度が、トップレベルで使う場合と yield で呼び出された中で使う場合
で、かなり差があるように見えるんだけど、何か勘違いしている?

852 :849:03/06/15 19:47
def forloop
for i in 1..1000000;end
end

starttime = Time.now.to_f
forloop
p [Time.now.to_f - starttime]

だとさらに結果が違うよう。わけわからん。

853 :827:03/06/16 00:47
>>839
847 で答え出てるけど一応教えておく。
C でも 3 / 2 は 1 になるだろ!
小数値がほしかったら (/ 3.0 2.0) にしろや、ボケ。

854 :デフォルトの名無しさん:03/06/16 02:39
>>849
後者はiがブロックローカル変数になるから。

855 :デフォルトの名無しさん:03/06/16 07:40
>>853
だから、そんな面倒なことしてちゃ、今の時代生き残れないよってこと言いた
かったんよ。
rubyでcalc作ってる。自分用のoptionもたくさんあって、これ最強。

856 :デフォルトの名無しさん:03/06/16 09:24
訳の分からないことを言いたがらないでください。

857 :デフォルトの名無しさん:03/06/16 09:29
>>855
おまえは生き残れない

858 :デフォルトの名無しさん:03/06/16 09:33
なるほど!伊良部の略だったのか、なるほど。
で、伊良部とrubyのつながりはどこにあるのだろうか?

わからない


859 :デフォルトの名無しさん:03/06/16 09:46
>>853
ではCに合わせてるとみてよろしいか

860 :855:03/06/16 10:41
>>857
俺は生きる、生き抜いてやる。


861 :デフォルトの名無しさん:03/06/16 11:38
計算機が欲しければ普通にmaximaとかmupad使うのがいいと思うけど。
お金があるならmathematicaとかmatlabを使えばいいわけで。
分数計算で十分なら irb -m でもいいだろうが変数の入った式は扱えない。

862 :デフォルトの名無しさん:03/06/16 21:52
Emacsじゃ(/ 3 2) => 1 かもしれないけど
Xyzzyなら (/3 2) => 3/2 だよ。
有理数のまま計算していって、答えを出す手前で + 0.0 して実数に直すと
丸め誤差が少なくてイイ!

863 :862:03/06/16 21:55
/ と 3 がくっついてしまった。
誤: Xyzzyなら (/3 2) => 3/2 だよ。
正: Xyzzyなら (/ 3 2) => 3/2 だよ。


864 :デフォルトの名無しさん:03/06/17 00:39
>>854
なるほど。たしかにbench {...} の前に i=nil を入れると速度差は誤差の範囲になりました。
しかしブロックローカルの変数って何で遅いんだろ?

865 :デフォルトの名無しさん:03/06/17 13:46
Rubyの勉強にruby-dbiとPostgresを利用してるのですが、
select文で取得したレコードの、日本語の部分が化けてしまうのです。
原因・解決方法など教えてもらえませんか・・・?



866 :865:03/06/17 13:54
化けた文字は

テスト
\245\306\245\271\245\310

こんなかんじです。


867 :デフォルトの名無しさん:03/06/17 14:42
>>866
pの多バイト文字の出力はそんな感じになる。
print/putsあたりを使えば?

868 :865:03/06/17 15:11
>>867
なるほど。print/putsは日本語表示されました。
pはprintの略なのかなぁと思ってました。
ありがとうございあす。

869 :デフォルトの名無しさん:03/06/17 15:25
>>868
あるいは$KCODEを指定しとく。

870 :デフォルトの名無しさん:03/06/17 15:28
>>864
メソッドスコープのローカル変数は配列になってるのに対して、
ブロックローカルはIDとVALUEのlinked listになってるから、
それをたどる分だけ遅くなる。

871 :デフォルトの名無しさん:03/06/18 01:08
>>870
やっぱり Ruby Hacking Guide を読まなきゃならんか。

872 :デフォルトの名無しさん:03/06/18 20:15
>>870
あんたすげーよ。勉強になった。

873 :デフォルトの名無しさん:03/06/18 20:20
インスタンス変数へのaccessorは attr_accessor :v1, v2, ... を
使うことで簡単に定義できる。
では、クラスインスタンス変数へのaccessorはどうすればよい?
今は
class Foo
def self.v1=(v)
v1=v
end
def self.v1
@v1
end
end
とチマチマ定義している。
これをもっと簡単に定義したい。

874 :デフォルトの名無しさん:03/06/19 00:12
>>873
class Foo
class << self
attr_accessor :v1,:v2,:v3
end
end


875 :デフォルトの名無しさん:03/06/19 00:23
ようやくwww.cygwin/setup.exeにrubyが標準搭載されたので
次はRuby.netがVS.NETで使えるようにして欲しい。

876 :デフォルトの名無しさん:03/06/19 11:00
>>874
ごっつさんくす。
かなーりたすかった。
今度おごるよ。

877 :デフォルトの名無しさん:03/06/19 11:35
>>874

この書き方だとRubyスクリプトとしてはまったく問題ないけど、
RDocがうまく解釈してくれないね。惜しい。

(RDocのバージョン:RDoc Vbeta-2: 2002/07/22 21:07:31 (1.67))

878 :874:03/06/19 23:22
>>877
class Foo
 class << self
  # v1 - Foo's instance variable
  attr_accessor :v1
 end
 # v1 - Foo's attribute
 attr_accessor :v1
end

みたくコメントを工夫するしかなさそうだね。


879 :デフォルトの名無しさん:03/06/20 00:10
>>878

あれー、それでうまくいった?
試したけど、どちらもインスタンス変数へのアクセッサと
してしか認識されなかったよ。
RDocのバージョンが古いのかな?

880 :デフォルトの名無しさん:03/06/20 17:23
win32api の SendInput() を使いたいんですが、誰か書いてませんか。
引数が Struct 使う場合にどうすればいいのかよくわからないんです。


881 :デフォルトの名無しさん:03/06/20 20:31
>880
配列をpackした文字列を渡す。


882 :デフォルトの名無しさん:03/06/21 02:52
ブロックローカル変数をローカル変数と同様の実装にできないのはなんでだろ

883 :デフォルトの名無しさん:03/06/21 03:24
>>882
Rite では直すのかな?

884 :デフォルトの名無しさん:03/06/21 11:50
eRubyをはじめて使ってみたんだけど
index.rhtml:1:missing end delimiter (ERuby::CompileError)

こういうエラーがでてしまう。
何が悪いのだろうと調べて、キーワという文字列を抜くと動く。
日本語を含んだ文を書き出すには、なにか必要なのでしょうか。


885 :デフォルトの名無しさん:03/06/21 12:27
よくは分からんがこういうことかな

require "kconv"
s = "ーワ".toeuc
d = ""
s.each_byte{|c| d << (c&0x7F)}
$KCODE = "n"
p s # "\241\274\245\357"
p d # "!<%o"

$KCODE を変えてみれば動くかも

886 :デフォルトの名無しさん:03/06/21 17:41
Proc.new {|a|}.arity => -1 になるのが俺の悪い頭では理解できません。
引数の数だから、1 になるんじゃないかと思うんだけど、
なんで -1 になるのか誰か教えてー。


887 :デフォルトの名無しさん:03/06/21 19:06
arityが-Nってのは、N-1個以上の引数を取れるって意味ってとこまではOK?
で、ブロック引数は多重代入と同じセマンティクスを持つので、

a = 1, 2, 3 # => a == [1,2,3]

と任意の個数の引数を取れるということ。

だったんだが、1.8.0 preview3ではそれは1になる模様。


888 :デフォルトの名無しさん:03/06/21 20:58
Paint Shop Pro 8のマクロ言語としてPythonが採用されたそうだ。
Rubyが採用された市販アプリって有るのか?
まぁ、PSPは米国製だからってのもあるんだろうが。

つか、Rubyを採用しようにも、簡単に組み込めるようなライブラリが
無いよな? Pythonにはそれが有るらしいが(伝聞)。
そのへんどうにゃのよ?


889 :デフォルトの名無しさん:03/06/21 21:25
Rubyも組み込むのはそんなに難しくないよ。
最近の俺的には、ネイティブスレッドに対応してないのでRubyは選べないけど。


890 :886:03/06/22 00:31
>>887 さん
わかりやすい説明どうもありがとう。

> で、ブロック引数は多重代入と同じセマンティクスを持つので、
はじめて知りますた。。。
なるほど納得です。

> だったんだが、1.8.0 preview3ではそれは1になる模様。
ふむ!こっちのほうが俺にはわかりやすいです。

ためになる情報ありがとうございました。






891 :デフォルトの名無しさん:03/06/22 02:22
>>887
> だったんだが、1.8.0 preview3ではそれは1になる模様。

lambda{|x|}[] とか def f() yield end ; f{|x|} が出来なくなるということ?

892 :デフォルトの名無しさん:03/06/22 09:30
>>891
> lambda{|x|}[] とか def f() yield end ; f{|x|} が出来なくなるということ?
できるけど、警告が出る。

$ ruby -ve 'lambda{|x|}[]'
ruby 1.8.0 (2003-06-21) [i686-linux]
-e:1: warning: multiple values for a block parameter (0 for 1)

任意個の引数を取るときには|*x|、一個だけなら|x,|と書けば、1.6以前でも問題ない。

ちょうど同じ話題が出てる
ttp://jarp.jin.gr.jp/diary/200306c.html#200306211


893 :デフォルトの名無しさん:03/06/22 09:33
>>888
Becky!用のRuby pluginってのはある。
あとtalkではたびたびアプリケーションに組込むって話がでてるけど、
具体的な製品名は分からない。


894 :デフォルトの名無しさん:03/06/22 14:07
Rubyを自作アプリに組み込むHowToマニュアル出して欲しいな。
できれば、Win版とUNIX版両方で。


895 :デフォルトの名無しさん:03/06/22 14:19
C++用だけどこういうのがあることはある。
ttp://metaeditor.sourceforge.net/embed/

896 :デフォルトの名無しさん:03/06/22 14:21
>>892
ああ、それなら知ってるけど、どうしていまさら後方互換性をなくす方向に
動き出したんだろ。2.0への布石?

897 :デフォルトの名無しさん:03/06/22 14:39
>>896
> 動き出したんだろ。2.0への布石?
そんなとこだと思うけど。
arityに関しては、たしかに分かりにくいという声が以前からあったし。


898 :デフォルトの名無しさん:03/06/22 18:16
>>894
一時期の出版ラッシュのついでに出しておいてくれれば良かったのに。

899 :デフォルトの名無しさん:03/06/22 18:27
>自作アプリへの組み込み
Cマガあたりに記事がなかったっけ?
Web上でも読めた気がする。


900 :デフォルトの名無しさん:03/06/22 18:56
>>899
本じゃないが、erubyなんかはいい例にならないかな。

901 :デフォルトの名無しさん:03/06/23 18:22
1.8.0 preview3出ますた。

902 :784:03/06/23 20:01
標準入力ってなんでopenできないの。

>ruby -ve "File.open '-'"
ruby 1.6.8 (2002-12-24) [i386-mingw32]
-e:1:in `open': No such file or directory - "-" (Errno::ENOENT)
from -e:1


903 :デフォルトの名無しさん:03/06/23 20:05
- は標準入力ではないです。

904 :デフォルトの名無しさん:03/06/23 20:16
標準入力は $stdin

905 :デフォルトの名無しさん:03/06/23 22:01
あぁ。すんません。
具体的に質問します。

コマンドラインでファイル名が指定されたらそれを、
指定されなければ標準入力を開くって処理をしたいんです。

Perl だと
push(@ARGV, "-") if no @ARGV
foreach (my $file @ARGV) {
open(F, $file);
#ほげほげ
}

とかできて楽なんですけど、Rubyだとどう書くんですか。
ファイル単位で(ファイル名を意識して)処理したいんで、ARGFは却下です。


906 :デフォルトの名無しさん:03/06/23 22:03
>>905
なんかいろいろ間違ってる・・・Perl久しぶりとはいえ・・・欝だ。


907 :デフォルトの名無しさん:03/06/23 22:06
ARGV.each do |file|
f = (file == '-' ? STDIN : open(file))
begin
# ほげほげ
ensure
f.close unless f == STDIN
end
end


908 :デフォルトの名無しさん:03/06/23 22:11
def reading(file, &block)
if file == '-'
yield STDIN
else
open(file, &block)
end
end

ARGV.each do |file|
reading(file) do |f|
# ほげほげ
end
end



909 :デフォルトの名無しさん:03/06/23 22:27
>>905
>ファイル単位で(ファイル名を意識して)処理
ARGF.file や ARGF.filename 使えば。

910 :デフォルトの名無しさん:03/06/23 22:46
なんで場合わけしなきゃいけないの。
tar だって cat だって UnixTool はみんな - が標準入力じゃないか。
なんで STDIN を特別扱いしなきゃいけないだ。
めんどくさいだけじゃないか。

#ほげほげ

そうか、いろんな - がありえるんだ
- が標準入力じゃなくてもいいんだ。
Perl がやりすぎなんだ・・・
ボクは Ruby が好きなんだ!
ボクはここいいたい!!
ボクはここにいてもいいんだ!!!

ところで amrita って便利ですね。


911 :デフォルトの名無しさん:03/06/23 23:00
>>909
> ARGF.file や ARGF.filename 使えば。
うーん。そうなんですけど、なんかうまくいかなくて。

やりたいのはファイル名とファイルの全内容を
もとに処理をしたいのです。

def hogehego(filename, content)
# ほげほげ
end

↑こんな感じ。で・・・

while not ARGF.eof?
puts ARGF.filename
puts ARGF.file.readlines.size
end

こうすると最初のファイルしか処理されなくて、
じゃあ while not ARGV.empty? ってすると
標準入力から読み込んでしまってわけわからん。

ARGFの挙動が理解できないんですけど。


912 :784:03/06/23 23:19
>>911
こうすれば全ファイル処理された。

while not ARGF.eof?
puts ARGF.filename
puts ARGF.file.readlines
ARGF.skip
end

でもファイルを指定しなかった場合の挙動がいや・・・

というか誰か↓を解説してくれ。まじでわかんねぇ。

>ruby -e "puts ARGF.filename" hoge.rb
-

>ruby -e "ARGF.eof?; puts ARGF.filename" hoge.rb
hoge.rb


913 :デフォルトの名無しさん:03/06/23 23:19
>>911
$ ruby -e '%w(foo bar).each{|f| File.open(f,"w") << "1\n1\n"}'
$ ruby -ne 'BEGIN{p ARGF.filename}; p ARGF.filename' foo bar
"-"
"foo"
"foo"
"bar"
"bar"
$ awk 'BEGIN{print FILENAME}; {print FILENAME}' foo bar

foo
foo
bar
bar
$

914 :デフォルトの名無しさん:03/06/24 00:22
>912
ARGVで指定されたファイルを触るのをぎりぎりまで先送りにしたいからでは?
ファイルを開かないことには eof? の真偽を知ることが出来ないから
eof? のあとでは指定された名前のファイルの存在も分かる。
しかしfilenameを知るために(詳しくいえばfilenameで返される名前のファイルの
存在を保証するためだけに)ファイルを開くのは許せないとか。
存在を保証するためなら File::readable?(ARGV.first) という手もあるが、
readable? では実際に読みにいったときにファイルがまだあることを保証できない。
もっともこれだけでは最初にSTDINをさしている理由は説明できないがね。

915 :R:03/06/24 21:47
ルビー初めて2週間目の初心者です。
いま、自分で考えているオンラインゲームがありまして
それの実現に、Rubyを使ったサーバプログラムを考えているので
第1歩として、多人数向けのチャットサーバを作ろうと思い作り始めたのですが

多人数向けのエコーサーバは「Rubyライブラリ編」を参考に(ほとんどそのまま)で
つくり、うまくいったのですが、ある端末から他の端末へ文字を送る方法で
悩んでいます。

配列を使い、TCPServerのインスタンスを配列の中に入れようと考えたのですが
どうも、うまくいきません。
先輩方、どうかアドバイスをお願いいたします。

916 :デフォルトの名無しさん:03/06/24 21:52
>>915
「どこまでやって、どこでつまづいたか」を具体的に書いた方が
回答を得やすいと思われ。

917 :R:03/06/24 22:08
>916
はい、了解しました。
エコーサーバを改造してこんな風に書いてみたんです。
require "socket"
gs = TCPServer.open(8888)
online = []
while TRUE
ns = gs.accept
print(ns, " is accepted\n")
Thread.start {
s = ns
online.push(ns)
while str = s.gets
x = 1
while x <= online.size do
online[x].write(str)
x+=1
end
end
print(s, " is gone\n")
s.close
}
end
うまくいけば、接続している人全部にメッセージを送ることが
できるはずなんですが、誰にもメッセージが帰ってこないのです。
自分なりに調べたところでは、配列の中身がいつの間にか
無くなっているっぽいのです。

918 :デフォルトの名無しさん:03/06/24 23:01
>>917
とりあえず、while str = s.gets ... end の中がよくわかんないんだけど、
こんなんでどう?

online.each do |c|
c.write(str)
end

あとは、s.close のあとで online.delete(s) とか。

919 :R:03/06/24 23:35
>918
うまくいきました、ありがとうございます。
while str = s.gets ... end の中が間違っていたってことなんですよね
どこが良くなかったのだろ?
でも、online.each使ったほうが簡潔で解りやすいですね。

またお世話になるかもしれません。そのときは皆様よろしくお願いいたします。

920 :デフォルトの名無しさん:03/06/25 00:57
>>919
クライアントが一つだけ接続に来たとき、そのソケットは online[0] のはずだが、
x = 1 から始まるので online[1] を参照にいき、online[1] == nil であるから、
nil.write(str) が実行される。この時点でそのスレッドは死ぬが、
デフォルトでは Thread 内で例外が起こっても黙っているので分かりにくい。
ruby -d server.rb のように -d つきで実行すると上の状況が分かるだろう。

921 :デフォルトの名無しさん:03/06/25 01:10
>>917 もう見てないかも知れんが、
> Thread.start {
> s = ns
> online.push(ns)

もし online.push(ns) する前にメインスレッドに切り替わって
ns = gs.accept が成立すると、ns は予期しないものになっている。
よってこうした方が良い

Thread.start(ns) { |s|
online.push(s)

あるいはロジックは少し変わるがこれでも良い

online.push(ns)
Thread.start(ns) { |s|

922 :R:03/06/25 10:56
>920
配列は、0からはじまるのですか。
だからnilを参照してたのですね。
自分の間違えが、わかりすっきりしました。

>921
了解しました。
仰るとおりに、タイミングしだいではnsは
不定になります。
下のほうが、より確実っぽい気がするので
これでいってみたいと思います。

みなさま、ありがとうございました

923 :デフォルトの名無しさん:03/06/25 11:25
def f0
aa = 111 #0
return binding
end
def f1(bb, a_bind) #1
cc = 222 #2
eval "p aa, bb, cc", a_bind #3
end
f1(333, f0)

上のスクリプトで、#3 の eval のとき、aa(#0), bb(#1), cc(#2)
の指すオブジェクトを eval に評価させる式の中でいっしょに使い
たいのですが、よい方法はあるでしょうか? この場合の結果は
111
333
222
が欲しいということになります。

質問の意図がわかりにくいかと思いますが、誰か教えてくれるとうれしい。


924 :デフォルトの名無しさん:03/06/25 13:11
これじゃあかん?

def f0
aa = 111 #0
return binding
end
def f1(bb, a_bind) #1
aa = eval("aa", a_bind)
cc = 222 #2
eval "p aa, bb, cc" #, a_bind #3
end
f1(333, f0)


925 :923:03/06/25 14:56
>>924
解答ありがとう。でもそれではだめなんです。923で説明が足りなくてスマソ。

f1の定義の時点で a_bind のコンテキストに存在する変数aaについては知らんのです。

#3 のところでやりたいことは、a_bindにメソッドf1の定義で出てきたローカル変数を
追加したコンテキストで #3 の行の評価をする、ということです。以下のスクリプト
の方が923のより多少は意図が伝わりやすいかも…


def f0
aa = 111 #0
return binding
end
def f1(bb, expr, a_bind) #1
cc = 222 #2
eval expr, a_bind #3
end
f1(333, "p aa, bb, cc", f0) #4


926 :923:03/06/25 15:23
923のスクリプトは、私のやりたいことの意図を正確にあらわして
いませんでした、すまそ。以下のスクリプトみたいな方法で、とり
あえず問題は解決できそうです。

class Data
attr_accessor :aa
end

def hoge(bb, expr, bind)
data = eval("self", bind)
cc = 111
data.instance_eval(expr)
end

d = Data.new
d.aa = 222
bind = d.instance_eval { binding }

hoge(333, "p aa, bb, cc", bind)


927 :デフォルトの名無しさん:03/06/25 15:35
なにー!せっかく考えたから送る

def empty_binding
  binding
end

def marged_binding(*bindings)
  dst = empty_binding
  bindings.each do |src|
    eval("local_variables",src).each do |var|
      id = eval(var, src).id
      eval("#{var} = ObjectSpace._id2ref(#{id})", dst)
    end
  end
  dst
end

def f0
  aa = 111                     #0
  return binding
end

def f1(bb, expr, a_bind)       #1
  cc = 222                     #2
  eval expr, marged_binding(binding, a_bind)
end
f1(333, "p aa, bb, cc", f0)    #4

928 :923:03/06/25 17:05
>>927
なんかすげー。理解するのにちょっと時間がかかりそうだけど、使えそうな予感。
ありがとう!


929 :デフォルトの名無しさん:03/06/26 12:10
>>926
Dataは標準の組込みクラスで、new(1.6)やallocate(1.8)は定義されてない。

930 :デフォルトの名無しさん:03/06/27 02:26
Data って Ruby API だけ使ってる人は知らない罠

931 :デフォルトの名無しさん:03/06/27 02:45
>>930
まぁそうだろうな。
ともあれDataのインスタンスは作れないし、拡張ライブラリ使うならDataはい
じらんほうが身のため。


932 :デフォルトの名無しさん:03/06/27 03:48
そりゃそうなんだけどDataってそれほど存在が知られてない割に
名前が一般的過ぎてよくないよね。

933 :デフォルトの名無しさん:03/06/27 05:28
なんか、知らずに Data ってクラス作って(使って)ハマりそう・・・

つか、漏れは obj.id とか obj.hash とかでハマったことあり・・・

934 :デフォルトの名無しさん:03/06/27 06:25
>>933
idははまったなあ。hashは知ってたんで、はまったことないけど。

935 :デフォルトの名無しさん:03/06/27 11:10
Kernel#idは廃止予定。
__id__かobject_idならかぶらんだろ。

936 :デフォルトの名無しさん:03/06/27 11:54
Data -> ExternalData とかに変更してほしい

937 :デフォルトの名無しさん:03/06/27 11:56
まずは、二つのプログラム
1.
while $in = STDIN.gets
$in.chomp!
print $in + "\n"
end

2.
while $in = "11"
print $in + "\n"
end

なぜ1のプログラムは動いて、2のプログラムは
動かないのでしょうか?
僕が考えると、1が動く方が不思議なんですが。
というのも、while文というのがwhileのうしろが
trueの時に処理を行なっているのなら、
上のプログラムのように、whileの後で代入をおこなっている(つまり、なにも値を返していない)
ような場合は、ともにエラーがでると思います。

どう考えればいいのでしょうか?

938 :デフォルトの名無しさん:03/06/27 11:56
ありゃ、Dataってクラスは作れないのか。初めて知った。
とは言え、Dataという名前のクラスは作りそうで作らない気がする。

939 :デフォルトの名無しさん:03/06/27 12:19
さて、まず>>937が釣か否かが問題となるわけだが

940 :デフォルトの名無しさん:03/06/27 12:35
>>937は釣りである」の値はtrueとなるので問題ないと思います。

941 :937:03/06/27 12:49
釣りでないです。
プログラミング自体、畑違いなので
聞ける人がまわりにいません。
教えてください。お願いします。

942 :デフォルトの名無しさん:03/06/27 12:53
>>937
2のほうも動くだろ。

943 :デフォルトの名無しさん:03/06/27 13:11
↓↓↓釣りにマジレス

944 :デフォルトの名無しさん:03/06/27 13:17
>>937
次の二点を確認して、放課後までに職員室に来なさい。

・代入は値を返さない?
・偽はfalseとnil。では真は?

945 :デフォルトの名無しさん:03/06/27 13:22
C言語の関数で、rintとlogに成り代わる関数ってなんでしょう?

946 :デフォルトの名無しさん:03/06/27 13:27
>>945
C言語の質問?

947 :デフォルトの名無しさん:03/06/27 13:43
>>946
rubyの質問なんですが・・・?

948 :デフォルトの名無しさん:03/06/27 14:25
まず日本語の勉強を・・・

949 :デフォルトの名無しさん:03/06/27 16:19
ライブラリ同士の名前空間の重複を回避したいのです、例えば、

hoge1.rb:
class Hoge
def hoge
"ほげ1"
end
end

hoge2.rb:
class Hoge
def hoge
"ほげ2"
end
end

があるとき、自前でファイルを開いて

require 'hoge1'

module A; end

File.open("./hoge2.rb"){|f|
A.module_eval f.read
}

p Hoge.new.hoge   #=>"ほげ1"
p A::Hoge.new.hoge #=>"ほげ2"

のようにやっているのです、もっとシンプルにTop Levelではなくユーザの導入した名前空間への
requireやloadのようなことを行う方法はありますか?

950 :945:03/06/27 19:19
>>948
私の発言のなにが解らないのか教えてもらえますか?


951 :デフォルトの名無しさん:03/06/27 19:37
「C言語の関数で、」なら答えはC言語の関数でなければならないのだが…

もしも「C の rint と log に相当するのはRubyでは何?」ってことなら、
log(x) は Math::log(x) で rint(x) は x.round

ちなみに rint は C の標準関数じゃないよ。

952 :デフォルトの名無しさん:03/06/27 20:57
>>950
句読点の使い方

953 :デフォルトの名無しさん:03/06/27 21:00
>>949
今んとこ、ない。loadの第二引数にModuleを使えるように、という話はtalkで
ちょっとだけ出てるようだ。


954 :デフォルトの名無しさん:03/06/27 21:03
>>938
作れないわけじゃないよ。

消しちゃうなり、Object以外を継承させれば別物になる。
class Object;remove_const(:Data);end
class Data < NilClass;end

955 :945:03/06/27 21:21
伝わっていることが解って安心しました。

> log(x) は Math::log(x) で rint(x) は x.round
ご教示ありがとうございます。

956 :デフォルトの名無しさん:03/06/27 22:09
> C言語の関数で、rintとlogに成り代わる関数ってなんでしょう?

1.CのrintとlogにあたるものはRubyではどんな関数なんでしょう?
2.CではRubyのrintとlogにあたるものはどんな関数なんでしょう?

1だろうか、と思いきや2だったか。

957 :デフォルトの名無しさん:03/06/27 23:05
rintがRubyにはないことから推理。まあCにもないわけだが。

958 :デフォルトの名無しさん:03/06/27 23:21
推理してまで答える必要なし

959 :デフォルトの名無しさん:03/06/28 01:12
質問!OSXでTk使えるようになりませんか?
require "tk"とすると見つからないようです。
/usr/lib/ruby/1.6/tk.rb:7:in `require': No such file to load -- tcltklib (LoadError)
from /usr/lib/ruby/1.6/tk.rb:7
from ./btn:3:in `require'
from ./btn:3

960 :945:03/06/28 01:32
man rint
(snip)
準拠
rint() 関数は BSD 4.3 に準拠する。その他の関数は C99 から導入された。

(snip)
失礼しました。

961 :デフォルトの名無しさん:03/06/28 10:30
man rint
(snip)
HISTORY
     A rint() function appeared in Version 6 AT&T UNIX.
(snip)
失礼こきます

962 :デフォルトの名無しさん:03/06/28 13:23

[A,B0,B1,C0,C1,D]を
foo.a #->A
foo.b[0] #->B0
foo.b[1] #->B1
foo.c[0] #->C0


と代入する方法を教えてください

963 :962:03/06/28 13:30
競馬のデータ(固定長レコード形式)から構造体を作成するときに躓いてしまいました
言葉足らずなところもあると思いますが、よろしくお願いします。

964 :デフォルトの名無しさん:03/06/28 13:56
>>962
foo.a = A
foo.b[0] = B0
foo.b[1] = B1
foo.c[0] = C0



965 :デフォルトの名無しさん:03/06/28 13:56
foo.a, foo.b[0], foo.b[1], foo.c[0] = [A,B0,B1,C0,C1,D]


966 :デフォルトの名無しさん:03/06/28 17:03
>>960-961
ハイハイ、とりあえず、rintはPOSIXやC99にはない環境依存な関数だってことはわかったからね。



967 :デフォルトの名無しさん:03/06/28 19:39
Rubyの本はもう出ないんですか?
最近さびしいので。

968 :デフォルトの名無しさん:03/06/28 19:40
>>967
書いてくれ。

969 :967:03/06/28 20:37
どんな本がいい?


970 :デフォルトの名無しさん:03/06/28 21:07
walrus

971 :デフォルトの名無しさん:03/06/28 22:05
rubyでOSを作る本

972 :デフォルトの名無しさん:03/06/28 22:25
rubyでrubyを作る本


973 :デフォルトの名無しさん:03/06/28 22:28
RUNIX

974 :デフォルトの名無しさん:03/06/28 23:22
rubyが必要なくなる本

975 :デフォルトの名無しさん:03/06/28 23:35
>>949
モジュールを名前空間独立に書くっていつでもできるの?
例えば、以下の状況で A#bar() がこの A::foo() を
呼ぶことを保証できるんだろうか?

module A
def A::foo() end
def bar() A::foo() end
end

976 :デフォルトの名無しさん:03/06/28 23:44
>>975
> module A
> def A::foo() end
> def bar() A::foo() end
> end
この後でA.fooを再定義されたら、当然「この A::foo()」が呼ばれることはないけど、
クラス/モジュールやメソッドの定義時の名前空間のネストは実行時に再現される。


977 :デフォルトの名無しさん:03/06/29 00:13
dlopen関係を使って、動的にsoライブラリの関数を呼び出す方法ってありませんか?

978 :デフォルトの名無しさん:03/06/29 00:18
>>977
http://ttsky.net/ruby/ruby-dl.html

>>980
次スレよろ

979 :デフォルトの名無しさん:03/06/29 10:48
RHGの第二版が欲しい。

980 :デフォルトの名無しさん:03/06/29 22:11
Riteが出てからじゃないか?

981 :980:03/06/29 22:30
これも<関連スレ>に入れる?

Rubyの実装に疑問あり!
http://pc2.2ch.net/test/read.cgi/tech/1004873294/


982 :980:03/06/29 22:38
あとこういうのもあるんだが。

【Ruby】RubyでCGI
http://pc2.2ch.net/test/read.cgi/php/988948655/

983 :デフォルトの名無しさん:03/06/29 23:02
ついでにこれもよろ。
Ruby Weekly News @ Ruby Garden
http://www.rubygarden.org/rurl/html/index.html

984 :デフォルトの名無しさん:03/06/29 23:11
<rubyXML/>
http://www.rubyxml.com/

985 :デフォルトの名無しさん:03/06/29 23:28
【UNIX板】rubyを語るスレッド 3
http://pc.2ch.net/test/read.cgi/unix/1045705000/

【UNIX板】goRua(Ruby/Gtkによる2chブラウザ)ってどうよ。
http://pc.2ch.net/test/read.cgi/unix/1008120213/

【プログラム板】Ruby について Part 3
http://pc2.2ch.net/test/read.cgi/tech/1042004759/

【プログラム板】Rubyの実装に疑問あり!
http://pc2.2ch.net/test/read.cgi/tech/1004873294/

【WebProg板】【Ruby】RubyでCGI
http://pc2.2ch.net/test/read.cgi/php/988948655/

【WebProg板】ゲームを作ろう!【PHP】【Perl】【Ruby】【ASP】
http://pc2.2ch.net/test/read.cgi/php/1030267927/

【WebProg板】/*Perl.Ruby.php以外でCGI*/
http://pc2.2ch.net/test/read.cgi/php/1004107967/

986 :980:03/06/30 00:17
<title>Ruby について Part 4</title>

オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

Ruby Home Page
http://www.ruby-lang.org/ja/

= 前スレ
* Ruby について Part 3
  http://pc2.2ch.net/test/read.cgi/tech/1042004759/

= 過去スレ
* Rubyについて Part 2
  http://pc3.2ch.net/tech/kako/1028/10289/1028906179.html
* Rubyについて
  http://pc3.2ch.net/tech/kako/1012/10120/1012096319.html



987 :980:03/06/30 00:17
= 関連スレ

== [UNIX板]
* rubyを語るスレッド 3
  http://pc.2ch.net/test/read.cgi/unix/1045705000/
* goRua(Ruby/Gtkによる2chブラウザ)ってどうよ。
  http://pc.2ch.net/test/read.cgi/unix/1008120213/

== [プログラム技術板]
* Rubyの実装に疑問あり!
  http://pc2.2ch.net/test/read.cgi/tech/1004873294/

== [WebProg板]
* 【Ruby】RubyでCGI
  http://pc2.2ch.net/test/read.cgi/php/988948655/
* ゲームを作ろう!【PHP】【Perl】【Ruby】【ASP】
  http://pc2.2ch.net/test/read.cgi/php/1030267927/

= その他リンク
* Ruby Weekly News @ Ruby Garden
  http://www.rubygarden.org/rurl/html/
* <rubyXML/>
  http://www.rubyxml.com/


988 :980:03/06/30 00:18
でいいかな? RD風味。

989 :デフォルトの名無しさん:03/06/30 00:27
あぁ、すまん、<rubyXML/> は半分冗談。
それよりこっちのがじゅーよー。

Matzにっき
http://www.rubyist.net/~matz/

990 :980:03/06/30 00:32
りょーかい。「その他」でOK?

991 :980:03/06/30 12:36
異論はないものとみなしてたてますた。

Ruby について Part 4
http://pc2.2ch.net/test/read.cgi/tech/1056944114/

992 :デフォルトの名無しさん:03/06/30 14:18
乙であります。

993 :デフォルトの名無しさん:03/07/01 03:03
>>966

C99 は BSD 4.3 より新しいんだから >>960 からは「rint がC99 にない」と
いう結論は出ないと思うんだが。

というかrintはC99にあるよ。(7.12.9.4)




994 :デフォルトの名無しさん:03/07/01 18:51
ルビー世水楽ね?

995 :デフォルトの名無しさん:03/07/01 18:51
ああ、次スレあるのね
じゃあ埋めるわ

996 :デフォルトの名無しさん:03/07/01 18:51
996

997 :デフォルトの名無しさん:03/07/01 18:52
a

998 :デフォルトの名無しさん:03/07/01 18:52
書くことがない

999 :デフォルトの名無しさん:03/07/01 18:52
まいいや

1000 :デフォルトの名無しさん:03/07/01 18:53
1000


1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

231 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)