Rubyについて Part 19

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

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

= 前スレ
Rubyについて Part 18
http://pc8.2ch.net/test/read.cgi/tech/1133988248/
2デフォルトの名無しさん:2006/02/24(金) 15:28:04
: ruby-doc (ドキュメント群:英語)
http://www.ruby-doc.org/
: 日本語リファレンスマニュアル
http://www.ruby-lang.org/ja/man/
: Ruby Hotlinks (Ruby関連のページや日記のアンテナ)
http://www.rubyist.net/~kazu/samidare/
: 日本Rubyの会
http://jp.rubyist.net/
: Rubyist Magazine (日本Rubyの会有志によるwebzine)
http://jp.rubyist.net/magazine/
: RCRchive (Rubyの仕様変更提案(RCR)と議論のアーカイブ)
http://www.rcrchive.net/
: RAA (Rubyで書かれたプログラムやライブラリの登録場所)
http://raa.ruby-lang.org/
: RubyForge (Rubyで作るオープンソースプロジェクトをホスティング)
http://rubyforge.org/
: blade (Ruby関連MLのアーカイブ)
http://blade.nagaokaut.ac.jp/ruby/
: Ruby Garden Wiki (RubyについてのWiki:英語)
http://www.rubygarden.org/ruby
: The RWiki (Ruby関連の話題が豊富なWiki)
http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=top
: Matzにっき
http://www.rubyist.net/~matz/
3デフォルトの名無しさん:2006/02/24(金) 15:28:49
: Exerb Project (Rubyコンパイラもどき)
http://exerb.sourceforge.jp/

: VisualuRuby (Windows 用 GUI ライブラリ)
http://www.osk.3web.ne.jp/~nyasu/software/vrproject.html
http://vruby.sourceforge.net/cgi-bin/wiki.cgi

: 上記二つをまとめて Windows GUI アプリ(exe) の作成
http://www.osk.3web.ne.jp/~nyasu/vruby/madobe/index.html

: 『Rubyソースコード完全解説』 (Ruby Hacking Guide)
http://i.loveruby.net/ja/rhg/


:MoonWolf Corporation
http://www.moonwolf.com/

:Script/Ruby
http://www.moonwolf.com/ruby/

:Devlog
http://devlog.moonwolf.com/
4デフォルトの名無しさん:2006/02/24(金) 17:29:06
5デフォルトの名無しさん:2006/02/24(金) 20:54:04
前スレの 1000
イナバウアの AA で爆笑したよ。w
6デフォルトの名無しさん:2006/02/25(土) 13:26:17
>>1
7デフォルトの名無しさん:2006/02/26(日) 01:57:10


人少なくなった?
8デフォルトの名無しさん:2006/02/27(月) 14:20:26
Sync_mの使い方がいまいちわからないのだけど、
リーダーライターロック付きの配列を作るとしたら、こういう感じの使い方でいいの?
--
require "sync"
class RWArray
  include Sync_m
  def initialize(size)
    super
    @list = Array.new(size, 0)
  end
  def get(no)
    begin
      lock(Sync_m::SH)
      return @list[no]
    ensure
      unlock(Sync_m::SH)
    end
  end
  def set(no, val)
    begin
      lock()
      @list[no] = val
    ensure
      unlock()
    end
  end
end
9デフォルトの名無しさん:2006/02/27(月) 15:00:58
いいんじゃない?
どうせなら、

def get(no)
 synchronize(SH) do
  @list[no]
 end
end

def set(no, val)
 synchronize(EX) do
  @list[no] = val
 end
end

かなあ、とは思うが。
10デフォルトの名無しさん:2006/02/27(月) 16:23:39
>>9
サンキューです。
11デフォルトの名無しさん:2006/02/27(月) 18:29:33
Rubyも有名になったもんだ
----------------
http://comic6.2ch.net/test/read.cgi/doujin/1140974901/172
From: [172] 395 ◆veZNGgrqUc <sage>
Date: 2006/02/27(月) 15:27:31 ID:FyWv97xb

パッと見、AntiLoとは内部構造が大幅に違うようです。

というのも、今回のはRubyで書かれている様なんですね。
(AntiLoはDelphiのWin32ネイティブでした)

インタプリタなので、解析しにくい事この上ないです。
投稿する文字、ターゲットとなるスレッドの特定も一筋縄にはいかない?かもです。
12デフォルトの名無しさん:2006/02/27(月) 19:30:15
↑ウィルスの作者乙
13デフォルトの名無しさん:2006/02/27(月) 20:38:21
exerb製ですか。
誤認識とかMLに流れてなかったっけ?

14デフォルトの名無しさん:2006/02/27(月) 23:18:42
:【緊急事態発生】 自シ台スレッド5【ウイルステラヤバス】
http://comic6.2ch.net/test/read.cgi/doujin/1140974901/

612 :395 ◆veZNGgrqUc :2006/02/27(月) 23:07:59 ID:FyWv97xb
>>331で言っているメモリ内から摘出したウイルスのソースうp
rubyに詳しい方が居らっしゃいましたら、更なる分析をお願い申し上げます

ttp://security.s182.xrea.com/tmp/antidojin.rb
(注:そのままrubyで実行しても、クラスの関係で動きません)
15デフォルトの名無しさん:2006/02/27(月) 23:33:59
これはひどい
16デフォルトの名無しさん:2006/02/28(火) 00:44:13
def の引数部分に括弧が要らないことをはじめてしった。
17デフォルトの名無しさん:2006/02/28(火) 10:18:25
def の引数部分に括弧をつけないスタイルで書く人というと・・・
18デフォルトの名無しさん:2006/02/28(火) 10:55:14
>>14
なにこのスパゲティコード
19デフォルトの名無しさん:2006/02/28(火) 11:26:11
コードが汚いのはともかく、真面目にデバッグした形跡とかあってワラタ
20デフォルトの名無しさん:2006/02/28(火) 11:40:15
>#なんか知らんがエラー


これにちょっとワロス。

こんな汚いソースでも何やってるかはわかりやすいRubyは凄いな。
21デフォルトの名無しさん:2006/02/28(火) 12:39:09
>>17
すぐに思い出すのはやっぱりあの…
22デフォルトの名無しさん:2006/02/28(火) 13:07:32
>>21
そういえばあの人、Windows も使ってるし・・・
23デフォルトの名無しさん:2006/02/28(火) 14:09:18
俺は誰か知らんけど、そんなことで疑い掛けられたら溜まったもんじゃねーな。

というか、疑いかける奴って永田レベルじゃん。
24デフォルトの名無しさん:2006/02/28(火) 14:17:36
本人乙
25デフォルトの名無しさん:2006/02/28(火) 14:34:32
26デフォルトの名無しさん:2006/02/28(火) 15:28:08
ネタにマジレスされても…
27デフォルトの名無しさん:2006/02/28(火) 15:38:46
でも疑われた方としては冗談じゃ済まなくなる可能性も無くはないわけで、
あまり趣味の良いネタとは言えんな。
28デフォルトの名無しさん:2006/02/28(火) 16:10:59
永田議員もネタにマジレスされた気分なのだろうか
29デフォルトの名無しさん:2006/02/28(火) 16:44:48
ネタがネタで済むか見抜ける人でないと(ネタレスをするのは)難しい
30デフォルトの名無しさん:2006/02/28(火) 16:54:58
で、今回はネタで済んでるの?
31デフォルトの名無しさん:2006/02/28(火) 16:58:21
判断できないならいつまでもひっぱらないのが吉。
32デフォルトの名無しさん:2006/02/28(火) 17:49:55
でも疑われた方としては冗談じゃ済まなくなる可能性も無くはないわけで、
悪ノリはしない方がいいかもしれませんよ?>疑われた方
33デフォルトの名無しさん:2006/02/28(火) 18:02:04
疑われた方ってどっち?
34デフォルトの名無しさん:2006/02/28(火) 19:50:11
悪ノリって・・・。
コーディングスタイル如きで悪ノリとか言われたらたまったもんじゃねーな。
35デフォルトの名無しさん:2006/02/28(火) 20:04:57
もはや何がなにやら。
36デフォルトの名無しさん:2006/03/01(水) 06:26:18
まーた、サイト落ちてるのか。
RoR 効果もあるんだし、なんとかした方が良いんじゃないか?
37デフォルトの名無しさん:2006/03/01(水) 14:45:52
どこのサイトが落ちてるの?
38デフォルトの名無しさん:2006/03/01(水) 21:00:46
http://www.ruby-lang.org/
今朝方、繋がらなかった。
39デフォルトの名無しさん:2006/03/01(水) 22:01:12
自分ところから繋がらないくらいで落ちてるとかアホ言ってんじゃねぇよ、素人かお前は!
40デフォルトの名無しさん:2006/03/01(水) 23:47:37
41デフォルトの名無しさん:2006/03/02(木) 00:11:13
まあ一時的に落ちてることはちょくちょくあるようなので、いちいち報告されてもなあという気はする。
42デフォルトの名無しさん:2006/03/02(木) 00:15:57
元プログラマのソープ嬢がPerl、Pythonは知っているのに
Rubyは知らないと言うのでチンコ萎えますた。
43デフォルトの名無しさん:2006/03/02(木) 00:41:01
>>42
ソープってこっちのSOAPか?
44デフォルトの名無しさん:2006/03/02(木) 06:13:40
def procedure_foo
 ...
 tmp_ary.each { ... }
end

みたいなコードは結構書くと思うんだけど、
procedure_foo が tmp_ary を外に漏らしてしまうのが気になる。
かといって明示的に nil を返すのは面倒だしださいので避けたい。

そもそも Array#each が self を返すのを活用しているコードってあるの?
one-liner とかがやりたがるのかな……。
45デフォルトの名無しさん:2006/03/02(木) 07:11:27
>>44
> 漏れる
なるほど。今まで気付いてなかった。

ただ、
・漏れると困るケースなら明示的に nilを返す
・「漏れるのが気持ち悪い」くらいのケースなら、どうせ GC されるんで気にしない
でいいような。で、ほとんどが後者だと思う。

> Array#each が self を返す
・オレは使ったことがない
・まさに>>44の例みたいに、tmp_ary を返したい時に使ってるのを見たことはある。
・あとは ary.each{〜}.each{〜} とか。ほとんど見たことないけど。
46デフォルトの名無しさん:2006/03/02(木) 07:52:14
>まさに>>44の例みたいに、tmp_ary を返したい時に使ってるのを見たことはある。

>>44のコードではtmp_aryを返す意図があるようには見えないので
メンテナンス性に問題があるんじゃないかなぁ。
例えばtmp_ary.each { ... }の後に新たなコードを追加した時、
ちゃんとtmp_aryを返すようにするのを忘れるとか。

Array#eachは最終的なプログラムには頻出する重要なメソッドだから、
可読性を下げる嫌らしい使用例しか挙がらないようなら
仕様変更の希望を出してみてもいい気がする。
47デフォルトの名無しさん:2006/03/02(木) 07:53:12
最終的なプログラムには頻出 → 最終的なプログラムにも頻出
48デフォルトの名無しさん:2006/03/02(木) 08:41:58
仕様変更を出すほど(そしてMatzを説得できるほど)の
nil を返すメリットや self を返すデメリットが思いつかない。

> Array#eachは最終的なプログラムにも頻出する
のは確かだけど、その大部分は返り値がどっちでも問題ないわけで。
49デフォルトの名無しさん:2006/03/02(木) 09:02:44
反対はしないけど賛成もしない。
行儀の悪いプログラム(やそれを許す仕様)がどれだけ憎いかは主観の問題だから、
希望出したい人は出してもいいんじゃない。通るかどうかはともかく。

しかしmatzを説得な。この程度じゃ確かに難しいかもね。
自分で思いついた仕様変更は多少の反対があろうと押し通すけど、
他人が提案した仕様変更には賛成の声があっても従わないことの多い人だから。
まあ、そこがmatzなんだが。
50デフォルトの名無しさん:2006/03/02(木) 09:23:15
Matzを生暖かく見守るスレはここですか?
51デフォルトの名無しさん:2006/03/02(木) 10:02:05
このスレも Mats に生暖かく見守られているわけだが
52デフォルトの名無しさん:2006/03/02(木) 10:02:29
>>49
しょうがねぇじゃん、matzの作ったmatzの希望を満たすための言語なんだから。

今はユーザがいっぱいいるけどさ。
53デフォルトの名無しさん:2006/03/02(木) 10:05:03
defの変わりにvoidを指定するようにすればすべて解決
54デフォルトの名無しさん:2006/03/02(木) 10:20:29
ということにしたいのですね?
55デフォルトの名無しさん:2006/03/02(木) 10:26:15
>>54
ちがーう!
56デフォルトの名無しさん:2006/03/02(木) 10:28:05
デフォルトで self を返すようにして欲しい。値を返したい場合は ^returnValue で。
57デフォルトの名無しさん:2006/03/02(木) 12:28:34
それだと既存のコードの挙動変わりまくるだろw
58デフォルトの名無しさん:2006/03/02(木) 12:54:20
じゃあ def* を追加してそっちで。
59デフォルトの名無しさん:2006/03/02(木) 13:17:59
標準ライブラリでゴミ参照返してるメソッドってある?
60デフォルトの名無しさん:2006/03/02(木) 13:23:34
>>44 は Array#each が何を返すべきと思うの? nil ?
61デフォルトの名無しさん:2006/03/02(木) 13:57:03
>>59
山ほどある
6244:2006/03/02(木) 16:45:30
>>60
nil です。
63デフォルトの名無しさん:2006/03/02(木) 16:49:55
問題(なのかどうかは置いといて)は言語仕様であってeachの戻り値じゃないような・・・
eachさえ直せばOKって事?
64デフォルトの名無しさん:2006/03/02(木) 16:55:07
break すると戻り値が nil になることを知ってて言ってる?
6544:2006/03/02(木) 17:12:42
>>63
言語仕様というよりライブラリ設計の慣習を問題にしてる。
俺の中での代表格が Array#each 。
each は制御構文さながらに使われることが多いから。

>>64
あー、なるほど。そういえばそうすね。
今は break が引数を取れるからそれ使った方がいいと思うけど、
互換性が思ったよりは問題になるかもしれないすね。
66デフォルトの名無しさん:2006/03/02(木) 17:19:23
慣習の問題なら自分も最後にnilつける慣習を守ればいいじゃんw
67デフォルトの名無しさん:2006/03/02(木) 17:44:03
ライブラリがユーザに対して妙な慣習や制約を課すのは原則としてダメだろ。
今回の話がどうかはともかく。
68デフォルトの名無しさん:2006/03/02(木) 17:59:31
この話って、単に自分が Array#each が返す値を知らずに
nil だと思い込んでて、現実がそうでなかったから文句を
言ってるだけに見えるんだけど。
69デフォルトの名無しさん:2006/03/02(木) 18:19:06
仮にそうだとしても、改善の議論の種を投げるのはいいことだ。
本当にダメダメな提案だったらレスもつかないはずだし、
>>43までの流れに比べればずっと有意義だ。
70デフォルトの名無しさん:2006/03/02(木) 18:29:02
map もあんだしさ。値返すのが普通だと思うそんな俺は lisper。
71ヽ(´ー`)ノ ◆.ogCuANUcE :2006/03/02(木) 18:39:34
>>70
俺も lisp かじってるから自然な動作だと思うんだけど…。

例えば、if のような制御構文だって値を返すんだから、繰り返しだけが
常に nil を返すってのは違和感があると思うけど。
72デフォルトの名無しさん:2006/03/02(木) 18:40:10
ブロックの返り値を無視して問答無用で self を返すのがキモイと思うそんな俺も lisper 。
つーか手続き的なメソッドに lisp の philosophy はあわないんでないの。
73デフォルトの名無しさん:2006/03/02(木) 18:47:44
おれも lisp は好きだけど、たとえば for-each の戻り値は未定義だし、 self を返すのは上手くないと思うな。
実際問題として、「each が self を返すこと」によるメリットを感じたことがない。
7444:2006/03/02(木) 18:49:07
>>68
今のところはまったことはない。
いい意味でも悪い意味でも純粋に精神衛生上の問題。

>>70
each が map の alias なら名前以外は納得。メモリの無駄遣いだが。

>>71
かといって常に self を返すってのも違和感があるんだよね。俺には。
利用価値がないなら、デフォルト値としての nil を返したほうがいいのではないかと。
if だって else 節を省略したときに返す値は nil だしね。

>>72
>ブロックの返り値を無視して問答無用で self を返すのがキモイ
それもある。同意。
75デフォルトの名無しさん:2006/03/02(木) 19:10:40
if ary.each { |x| break if ... } then ...
みたいなコードを書いてたことがあるけど、all?やany?の存在に気づいてやめた。
76デフォルトの名無しさん:2006/03/02(木) 19:19:45
>>74
>利用価値がないなら、デフォルト値としての nil を返したほうがいいのではないかと。

利用価値がないと決め付けるのはいかがなものか。


>if だって else 節を省略したときに返す値は nil だしね。

え、else 節を省略して、かつ、if 節に入らなかったとき、だよね?
その場合 nil になるのは当然ではないかと。エラーでもいいけど。


ブロックの返り値の方がいいんじゃないか、とは俺も思う。
問答無用で nil を返すのは今よりもっとキモイので反対。
77ヽ(´ー`)ノ ◆.ogCuANUcE :2006/03/02(木) 19:20:54
> if だって else 節を省略したときに返す値は nil だしね。
そりゃそもそもブロックが無いからでしょ。
if に与えられた条件が true だったらブロックの値を返すよ?

>>72
まぁ、なんで self なのかなぁとは思うな。

>>73
あー、while なんかも nil だしな…。

……でも、結局は Matz 次第だよな…。
7844:2006/03/02(木) 22:05:32
>>76
>利用価値がないと決め付けるのはいかがなものか。
ない『なら』だって。だから活用してるコードはあるのかって聞いたの。

>え、else 節を省略して、かつ、if 節に入らなかったとき、だよね?
もちろんそう。

>その場合 nil になるのは当然ではないかと。
当然。つまり nil は、返り値としてふさわしい値がない場合の
デフォルト値としての地位を確立してる。
そして Array#each はそういう場合だと思う。

>>77
ああ、while の方がいい例すね。
やっぱり matz 次第なんだけど。
79デフォルトの名無しさん:2006/03/02(木) 22:15:26
nilなりyaccなり
80デフォルトの名無しさん:2006/03/02(木) 23:02:52
好きに throw
81デフォルトの名無しさん:2006/03/02(木) 23:03:27
直感的な議論だけではアレなので、ruby のパッケージ内を調べてみた。
array.c をいじって、make と make test-all をしてみたところ、
とりあえず 2 箇所見つかった。

lib/optparse.rb の 195 行目:
 RCSID = %w$Id: optparse.rb,v 1.40.2.4 2004/12/05 10:39:58 nobu Exp $[1..-1].each {|s| s.freeze}.freeze

lib/rss/0.9.rb の 632 行目から:
 def _tags
  %w(title description name link).each do |name|
   send(name).nil?
  end.collect do |elem|
   [nil, elem]
  end
 end

optparse の例はちょっと納得した。後者は .nil? の意味がよくわからない。

この 2 つを直したら test-all は全部通った。
そこまで大きな影響はなさそうだけど、ゼロではないね。
82ヽ(´ー`)ノ ◆.ogCuANUcE :2006/03/02(木) 23:08:05
>>81
あー、optparse みたいな書き方はするなぁ。

nil 返すようになったら結構困るかも。
83デフォルトの名無しさん:2006/03/02(木) 23:22:27
◆.ogCuANUcE は反対することありきで話してないか。
もうちょっと建設的に議論しようぜ。

とりあえず RAA を "each freeze" で gonzui してみたところ、
optparse くらいなものだった。作者の中田さんの意見を聞いてみたいね。
8444:2006/03/02(木) 23:44:26
optparse の例はちょっと説得力あるな。それでも俺の感覚では

 optparse の例の嬉しさ×頻度 < >>44の例の嫌さ×頻度

なんだが、思ったより同意がないようだから、この提案はだめっぽいね。
取り下げる。意見くれた人たちサンクス
85デフォルトの名無しさん:2006/03/03(金) 00:38:34
44は、関数が勝手に値を返すの反対、というのじゃなかったのか。

eachがself返すの反対なだけだったの?
86ヽ(´ー`)ノ ◆.ogCuANUcE :2006/03/03(金) 01:22:49
>>83
そんなことはないけど。
互換性を最重要視するのはそんなにおかしい?
87デフォルトの名無しさん:2006/03/03(金) 01:46:17
最初の発言 (>>71) は互換性がどうのというより、
「今の挙動の方が正しい」という主張だったけどな。
88デフォルトの名無しさん:2006/03/03(金) 02:15:50
>>84
あー、今更だが俺も同意しとく。
つか、プログラマとかその手の人種は他人を否定したがるというか、
反対の時は饒舌だが賛成の時は黙ってるやつが多いから、
賛成と反対の数だけ気にしてもしょうがないよ。
89デフォルトの名無しさん:2006/03/03(金) 10:18:57
別に他人を否定、とかじゃなくて、俺の意見としては、
* self を返すことは別に気持ち悪くない
* ブロックの値を返すのでも悪くはない
* nil でも悪くはないがよくもない
なので、現状を変更する理由にならん。
話を聞いても全然説得されなかった。

nil にしたらこんなに嬉しい!ってのがないとなあ。
90デフォルトの名無しさん:2006/03/03(金) 10:22:19
簡単な話が十人十色ってことで終了?
91デフォルトの名無しさん:2006/03/03(金) 10:40:28
値を返す必要がないときには、
メソッドチェーンするかもしれないケースに備えてとりあえず self を返しとく、
というのはそれほど悪くない convention だと思うんだけど、どうだろ?

あと、 >>44 の例で「外に漏らしてしまう」と言っているけど、
これは each に限った話ではないよね?

procedure_foo の実装者は
「かといって明示的に nil を返すのは面倒だしださいので避けたい。」
と思っているかもしれないけれども、
それは each の実装者にしても同じことだよね?
92デフォルトの名無しさん:2006/03/03(金) 10:48:40
each の実装は C なので return self; みたいなのを明示的に書いているぞ。
とか本質的でないツッコミ。
9391:2006/03/03(金) 11:00:05
>>92
あぁ、 Array#each はそうでしょうけど、私は一般的な each の話を言っています。

>>44 は、もし tmp_ary が Array じゃなかったとしても、
あるいは、最後に呼んだメソッドが each 以外だったとしても、
「外に漏らしてしまうのが気になる」
と思ってしまうのではないかと思うのですが、
違ってたらすいません。
94デフォルトの名無しさん:2006/03/03(金) 11:03:17
ruby で値を返さない手続き的なメソッドを書こうというのが
そもそもの間違いなんじゃないか。
95デフォルトの名無しさん:2006/03/03(金) 11:30:38
超厳格に話をするなら
習慣としてあらゆるパスにselfを配置するのは面倒で
Cのように警告してくれないのでよろしくない。
とかって話になるんだろうけど

結局所詮スクリプトだし〜の一言で終わる話じゃね。
メソッド内でたまたま最後に参照した生パスワードが参照できちゃって
それがセキュリティホールにつながるわけじゃなし。
96デフォルトの名無しさん:2006/03/03(金) 12:02:06
話を整理しなおすと、
(1) Rubyのメソッドは最後に評価した文の値を返り値とする
(2) Array#eachはselfを返す
(3) (1)・(2)より、メソッドの最後でArray#eachを使ったらそのArrayが返される
ということだよね。
そこで(2)を問題視するのっておかしくないか?
97デフォルトの名無しさん:2006/03/03(金) 12:05:44
組み込みクラスの each は全て self を返してるけど、これも全て nil にすべき?
98デフォルトの名無しさん:2006/03/03(金) 12:23:05
>>96
おかしいですね。
いやなら明示的にnilを書けばいいこと
99デフォルトの名無しさん:2006/03/03(金) 13:09:40
漏れるのが気持ち悪い、は全てこれが原因だと思うけど。
>(1) Rubyのメソッドは最後に評価した文の値を返り値とする

Array#eachの場合はself返るのを見落としやすいというだけ。
例えばプライベートな変数に代入する処理を末尾に書くだけで
プライベートなデータも漏れる。

返値はreturnで明示した方が読みやすいコードになるし、それを
強要するのもいいと思う。でもreturn省略できてメソッド定義を
すっきりできるのはRubyの魅力の一つでもあるし。
この件は「Rubyの落とし穴」止まりじゃない?
100デフォルトの名無しさん:2006/03/03(金) 13:11:28
>>96
出発点はそこだけど、今の議論は「Array#each が self を返す必然性はあるのか」
という話に推移してると思う。
101デフォルトの名無しさん:2006/03/03(金) 16:06:51
>>100
nilに変えろという奴がいて、nilに変えないといけない必然性はあるのか、という話なんじゃないの?
102デフォルトの名無しさん:2006/03/06(月) 00:44:47
i rub ruby!
103デフォルトの名無しさん:2006/03/06(月) 15:51:54
endが一個多いとか少ないってエラーが出たときどうやって探すのが効率的なんだろ。
エディタの支援とかは抜きで。
トップレベルに置かないとエラーが出る要素があったら
そればら撒くと洗い出すのが簡単になりそうなもんだが。

HOGEHOGE <= ここだとOK

begin
  HOGEHOGE <= ここだとNG
end



while true
begin
end

HOGEHOGE <=ここでNGならもうおかしい


104デフォルトの名無しさん:2006/03/06(月) 16:55:45
>>103
試してないけど、これでどーだろ。
raise "not TOPLEVEL" unless TOPLEVEL_BINDING == binding
105デフォルトの名無しさん:2006/03/06(月) 18:40:27
>>103
一箇所ずつしか使えないけど__END__とか?
106デフォルトの名無しさん:2006/03/06(月) 21:59:55
[ruby-list:41879]
>訴えられたくない訴えられたくない訴えられたくない :)
コーヒー吹いた
107デフォルトの名無しさん:2006/03/06(月) 22:48:04
>>106
知ってるとは思うけど念のため。 [ruby-list:30086] ね。
108デフォルトの名無しさん:2006/03/06(月) 23:05:39
Ruby-list読んでないんだが、ライセンスで何かややこしい事にでもなってるの?
109デフォルトの名無しさん:2006/03/06(月) 23:07:49
初心者スレに出てるmsvcrt-ruby18.dll絡み?
GPLインフェクションかな。
110デフォルトの名無しさん:2006/03/07(火) 02:51:15
おまいら、ruby/gtk2 ruby/tk 
どっちが (゚д゚)ウマー
111デフォルトの名無しさん:2006/03/07(火) 06:57:13
tk は今更感が否めない。
112デフォルトの名無しさん:2006/03/07(火) 07:47:37
VisualuRuby (゚д゚)ウマー
Apollo (゚д゚)ウマー

Windowsユーザーですが何か?
113デフォルトの名無しさん:2006/03/07(火) 07:56:00
Delphi どうなるのよ?
114デフォルトの名無しさん:2006/03/07(火) 08:21:53
どうなる、とは?
115デフォルトの名無しさん:2006/03/07(火) 09:31:35
>VisualuRuby (゚д゚)ウマー
になったの?手元に大昔のSoftware Design誌があって、不安定ながら記事掲載してたようだが
116デフォルトの名無しさん:2006/03/07(火) 10:41:21
>>104
bindingで作られるBindingオブジェクトって毎回別物だったのか。
すまんかった。
117デフォルトの名無しさん:2006/03/07(火) 11:56:12
>[ruby-list:41879]
>>訴えられたくない訴えられたくない訴えられたくない

ちょっと残念な感想だよね...。

GNU GPLって他人に資することでソフトウェアの発展を目的としているのに(...だよね?)、結果的に「すげぇめんどくせー、つーかマジうぜーライセンス」「一種の呪い」扱いだもんな。
118デフォルトの名無しさん:2006/03/07(火) 12:24:27
>>117
rubyをバイナリ配布しようとして安全な公約数を取るとGPLになる、ということなんじゃないの?
当人がどう思ってるかはともかく、別にGPLがうざいなどという意味が含まれてるとは思えないんだが。
119117:2006/03/07(火) 12:36:05
>>118
>当人がどう思ってるかはともかく、別にGPLがうざいなどという意味が含まれてるとは思えないんだが。

うーむ、見直してみるに、どうやら一番うざいと思ってたのは俺だったみたいだ。ご指摘感謝、つーか、なかむら(う)さんに失礼しました、ごめんなさい。
120デフォルトの名無しさん:2006/03/07(火) 12:38:45
msvcrt-ruby18.dllやインタプリタ自身がGPLだとして現実的になんか問題あるのか?
121デフォルトの名無しさん:2006/03/07(火) 12:50:41
>>120
それを組み込んだ時にGPLに従わなければならなくなる。
それが問題だと思う人には問題。
122デフォルトの名無しさん:2006/03/07(火) 12:53:00
組み込めんの?
123デフォルトの名無しさん:2006/03/07(火) 13:10:57
でも、まあ・・・

GPL うざいよね。
124デフォルトの名無しさん:2006/03/07(火) 13:16:26
組み込めんだろ
125デフォルトの名無しさん:2006/03/07(火) 13:18:49
もうさ、 msvcrt-ruby18.dll は別途配布、でいいじゃない、そうしようよ、ね。
126デフォルトの名無しさん:2006/03/07(火) 13:30:57
動的リンクしただけでGPL感染するっていうのがGNUの見解だった気がする。
127デフォルトの名無しさん:2006/03/07(火) 13:38:00
ああそうか、動的リンクなら O.K. なのは LGPL か。
128デフォルトの名無しさん:2006/03/07(火) 13:56:51
プロプラなソフトでRubyを組み込むという事ができないわけか。
129デフォルトの名無しさん:2006/03/07(火) 14:27:03
RPGつクールとかはどうなんだったっけ?
130デフォルトの名無しさん:2006/03/07(火) 14:29:17
>>129
とりあえず ML (ruby-list) の流れを追ってから質問してくれい。
131デフォルトの名無しさん:2006/03/07(火) 16:53:17
>>130
129じゃないが、ML読む気がしないので、
こっちに書いてくれれば嬉しい。
132デフォルトの名無しさん:2006/03/07(火) 18:15:05
133デフォルトの名無しさん:2006/03/07(火) 18:19:30
>>131
それは横着すぎじゃね?
一応 ML がベースで進んでる議論なんだからわざわざ fork すんのは無駄だべさ。
134デフォルトの名無しさん:2006/03/07(火) 18:21:12
議論も何もイエスかノーか半分かできっちり答えの出る話だろう。
135デフォルトの名無しさん:2006/03/07(火) 18:24:29
そうですか。それではきっちり答えを出してください。
136デフォルトの名無しさん:2006/03/07(火) 19:23:44
RPGツクールがどうなのかについては、答えが出てないの?

ポインタ示してくれれば読むけど、全メールを読むのはちょっと面倒。
せめて、過去ログが2ch viewerで読めりゃね。
ウェブインターフェースで一つ一つ読むなんて面倒。
137デフォルトの名無しさん:2006/03/07(火) 19:31:32
わざわざ>>132みたいなリンクの張り方するやつがポインタ示すつもりがあるようには思えんが。
138デフォルトの名無しさん:2006/03/07(火) 19:56:22
馬鹿の相手なんかこれ以上するなよ、くだらねぇ。
139デフォルトの名無しさん:2006/03/07(火) 21:07:04
>>130
ってかML機能してんの?
140デフォルトの名無しさん:2006/03/07(火) 21:18:01
>>137
まあね。>>132がポインタを示すとは思ってないよ。

ツクールに関しては結論が出てないって事か。
141デフォルトの名無しさん:2006/03/07(火) 22:08:33
商用アプリがオプソの成果を盗用しようとすれば
どういう報いを受けるかということがこれでわかったはずだ。
もうすぐツクールの全ソースが公開され商用としての価値は消失し
会社に多大な損害を与えることになるだろう。
142デフォルトの名無しさん:2006/03/07(火) 23:30:48
RPGツクールはregexの代わりに鬼車で回避してるっぽい。
つか、今試してみてる。
だが、今やっとVC++Toolkitで、rubyコンパイルできたばかり・・・。
143デフォルトの名無しさん:2006/03/07(火) 23:50:09
regex も LGPL だから、リンクすること自体は問題にならないよ。

もうひとつ問題になっている util.c と win32/win32 も、 Artistic ライセ
ンスの方を採用すれば、プロプライエタリなソフトウェアに組込むことそれ自
体は問題ではない筈。たぶん。
144デフォルトの名無しさん:2006/03/08(水) 00:46:43
GPL以外でリリースしちゃだめ。フリーウェア運動に貢献しなさい。
145デフォルトの名無しさん:2006/03/08(水) 00:52:03
宗教は避けて通ってますんで。
146デフォルトの名無しさん:2006/03/08(水) 02:03:45
まぁ、お前らは社内システムでも作ってりゃいいんですよ
147デフォルトの名無しさん:2006/03/08(水) 02:43:28
ワーイ。鬼車組み込めたよー。
これで安心して寝られる・・・
148デフォルトの名無しさん:2006/03/08(水) 07:02:38
>>115
正直微妙
Apolloと比べると実装・ドキュメントともに力不足に感じる
自力でハンドラを調べなくてはならない場面も多いし…

ただ、外部ライブラリを必要としない点は○
いいラッパーさえ書ければ十分使えると思う
149デフォルトの名無しさん:2006/03/08(水) 09:26:35
いいラッパーキボンヌ。
だがデザインは面白そうだが実装はつまらなそうだ。
150デフォルトの名無しさん:2006/03/08(水) 11:29:06
rubyスレっていつもこれ麦価。淀んでるな
151デフォルトの名無しさん:2006/03/08(水) 12:55:27
今度はVC7のライセンスと絡んで配布できないんじゃねーの?
152デフォルトの名無しさん:2006/03/08(水) 23:50:12
話のながれをきってすまんが、
アスキー文字のうち、アルファベットと数字以外の記号
を表すような正規表現ってどうしたらいい?
[^a-zA-Z0-9]
だと、日本語にもマッチしてしまうので。
今は
[-^%$#@!*()=_+`~,.¥/¥¥?<>¥[¥]{};:'"]
とか書いてるんだけど、なんか頭悪いから、いい方法あったら教えて。
153デフォルトの名無しさん:2006/03/09(木) 00:20:36
文字コードがSJISとかきまってるなら[!-~]とか?
154デフォルトの名無しさん:2006/03/09(木) 00:27:12
>>152
[:punct:] で日本語のオプション付ければ良いかと。
155デフォルトの名無しさん:2006/03/09(木) 00:27:37
>>153
それだとアスキー文字全部じゃね?
そこからアルファベットと数字だけ除きたいんだが。
正規表現って、集合の差分とか表現できないよね?
156デフォルトの名無しさん:2006/03/09(木) 01:00:40
こうか?
(?=[\x00-\x7f])[^a-zA-Z0-9]
157デフォルトの名無しさん:2006/03/09(木) 01:32:26
1.9ならこれでいけるんだっけ?
[\x00-\x7f&&[^a-zA-Z0-9]]
158デフォルトの名無しさん:2006/03/09(木) 02:14:08
1.9にenum入れてくれ
159デフォルトの名無しさん:2006/03/09(木) 02:16:59
YARVって未踏に2連続で通ったんだね
アルファギークの思いつきだとばかり思ってたけど歓心感心
160デフォルトの名無しさん:2006/03/09(木) 02:18:44
>>155,157

irb(main):001:0> /^[[A-Za-z]&&[^A-Ea-e]]+$/.match("foobar")
=> nil
irb(main):002:0> /^[[A-Za-z]&&[^A-Ea-e]]+$/.match("quux")
=> #<MatchData:0x29361f4>
irb(main):003:0>

1.9(つーか鬼車)ね。
161デフォルトの名無しさん:2006/03/09(木) 02:38:39
サンプル訂正

irb(main):005:0> /^[[[:ascii:]]&&[^[:alnum:]]]+$/.match("ほげ")
=> nil
irb(main):006:0> /^[[[:ascii:]]&&[^[:alnum:]]]+$/.match(" a1")
=> nil
irb(main):007:0> /^[[[:ascii:]]&&[^[:alnum:]]]+$/.match("$%,")
=> #<MatchData:0x2a01cdc>
irb(main):008:0>

こんなとこでどだ?
ブラケットのネストがうざったいが。
162154:2006/03/09(木) 02:48:58
それなら [:punct:] の方が良いと思うのですが・・・
163デフォルトの名無しさん:2006/03/09(木) 21:06:08
>>158
詳しく
164デフォルトの名無しさん:2006/03/09(木) 21:13:46
enumはenumであってenum以外の何物でもない
165デフォルトの名無しさん:2006/03/10(金) 00:39:11
>>162

スペースとかタブはどーすんだっけ?
punctにはこの辺ないよ。まあ逆に付け加えればいいだけだけど。

あと、現状のRuby(つか鬼車)はlocaleでこの手の文字クラスの範囲が
変わらないみたいだけど、世の中には変わるのもあるからね。
たとえば[:pumct:]に 、とか , が入ったりとか。

166デフォルトの名無しさん:2006/03/10(金) 10:28:21
るびまの添削記事をきっかけに少しは他人のコードも読もうと思い立って
標準ライブラリを少し眺めてるんだけど、単発クラスばっかり。
クラスの設計とかがもう少し入り組んでるようなプロジェクトでソースのきれいな物おせーて。
167デフォルトの名無しさん:2006/03/10(金) 10:31:47
>>165
>>152 はタブやスペース入れてないからいいかなと。
ロケールで変わりそうというのは確かにそうですね。

[:ascii:] つうのは Perl 拡張ですかね?
man ctype しててしばらく悩んでしまった。
168デフォルトの名無しさん:2006/03/10(金) 10:52:46
>>166
青木さんのBitChannel
というか俺がコード読んだのがこれくらいなだけだが。
Rubyアプリケーションとしても、Wikiの実装というかCGIの実装としても秀逸だとオモタ。
他になんかあったら俺も教えて欲しい。
169デフォルトの名無しさん:2006/03/10(金) 11:02:53
>>166
WEBrickが参考になると、るびまのなんかの記事に書いてあった。
170デフォルトの名無しさん:2006/03/10(金) 11:04:59
入り組んでるのならrdocとかも。
171デフォルトの名無しさん:2006/03/10(金) 11:20:31
美しくないソースならいくらか知ってるんだが
172デフォルトの名無しさん:2006/03/10(金) 11:34:17
美しいソースなんて知らないんだが
173デフォルトの名無しさん:2006/03/10(金) 14:03:55
rand(-100..100)
rand(10...16)
ってしたい
174デフォルトの名無しさん:2006/03/10(金) 14:37:52
>>173
天才。激しく同意。
175デフォルトの名無しさん:2006/03/10(金) 14:44:13
Range#randキボンヌ
176ヽ(´ー`)ノ ◆.ogCuANUcE :2006/03/10(金) 15:02:45
def rand(n)
if n.instance_of?(Range) then
n_a = n.to_a
i = rand n_a.size
return n_a[i]
else
return Kernel.rand(n)
end
end

こんな感じでいいんか?
177デフォルトの名無しさん:2006/03/10(金) 15:04:07
class Range
  def rand
    n = 0
    y = nil
    each do |x|
      y = x if Kernel.rand(n += 1) == 0
    end
    y
  end
end
178デフォルトの名無しさん:2006/03/10(金) 15:08:55
Enumerable あたりに持たせた方が綺麗な気がしてきた
179デフォルトの名無しさん:2006/03/10(金) 15:16:35
rand(1.0..3.0)もサポートすべきでは?
そもそもこういうのは標準のRubyで対応すべきだと思う。
180デフォルトの名無しさん:2006/03/10(金) 15:21:47
Kernel::rand が Range を引数に取れるようにってのもありかも
181デフォルトの名無しさん:2006/03/10(金) 15:23:55
Kernel::randだとifの分岐が増えて嫌な感じ
rand(n) a.rand end
に丸投げなら有かも。
182ヽ(´ー`)ノ ◆.ogCuANUcE :2006/03/10(金) 15:29:57
>>181
それが良さそうだ。
183デフォルトの名無しさん:2006/03/10(金) 15:38:18
>>179
で、誰が鈴をつけるんだ?(ワラ
184デフォルトの名無しさん:2006/03/10(金) 16:09:08
C/C++だろうと結局ライブラリの仕様次第って事だろ。
一般論として100も200もレス伸ばすような話題でもない。
185デフォルトの名無しさん:2006/03/10(金) 16:44:14
標準の Ruby に期待するのはやめた。
ActiveSupport で対応してくれさえすればいいや。
186デフォルトの名無しさん:2006/03/10(金) 16:55:54
まぁ,そのうちgemsに入ればいいやとか言い出すんだよな
187デフォルトの名無しさん:2006/03/10(金) 17:01:07
(1.0..2.0).randって実装できるの?
188デフォルトの名無しさん:2006/03/10(金) 17:29:54
>>187
こんなのとか。

class Float
def rand(limit = 0.0)
(limit - self) * Kernel::rand() + self
end
end

class Range
def rand
if first.respond_to?(:succ)
# 中略
else
first.rand(last)
end
end
end
189デフォルトの名無しさん:2006/03/10(金) 17:41:00
いや、rand()は 0.0 ... 1.0しか生成できないから
0.0 .. 1.0はどうやるんだろうかって事。
190デフォルトの名無しさん:2006/03/10(金) 17:47:05
ああ、そうか。
でも (0.0..1.0).rand が 0.0 とか 1.0 になることってあるのかな?

教えて、数学の偉い人!
191デフォルトの名無しさん:2006/03/10(金) 17:52:41
まあ仕様ですで逃げても誰も困らないかな。
192デフォルトの名無しさん:2006/03/10(金) 17:53:12
これは興味深い
193デフォルトの名無しさん:2006/03/10(金) 20:35:59
new Random().nextInt(10);でJavaなら0〜9が取れる
構文でサポートする必要はないと思う
194デフォルトの名無しさん:2006/03/10(金) 22:02:55
構文?
195デフォルトの名無しさん:2006/03/10(金) 22:08:16
個人的にはこれで十分だな

class Range
   def rand
       if first.kind_of?(Integer)
           Kernel.rand(max-min+1)+min
       elsif first.kind_of?(Float)
           Kernel.rand() * (last-first)+first
       else
           raise TypeError.new(first.class.name)
       end
   end
   public :rand
end

a=[]; b=[]; c=[]; d=[]
for i in 1..20 do
   a.push((1..5).rand)
   b.push((1...5).rand)
   c.push((1.0..2.0).rand)
   d.push((1.0...2.0).rand)
end
p a.sort, b.sort, c.sort, d.sort
puts ("A".."F").rand # err

[1, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5]
[1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4]
[1.01266720239073, 1.01478989003226, 1.03025444666855, 1.06008591223508, 1.07785816979595, 1.24921685433947, 1.33628733176738, 1.34473595488817, 1.40971731534228, 1.49617777764797,
1.59997416939586, 1.6395130623132, 1.65759115992114, 1.68046701466665, 1.75532641983591, 1.77737815189175, 1.80818298063241, 1.81937686935999, 1.85303344926797, 1.90426424588077]
[1.07483099680394, 1.14998408732936, 1.19250788423233, 1.26004932681099, 1.26708384230733, 1.27689886838198, 1.28458853322081, 1.29509600717574, 1.41609804634936, 1.49863598425873,
1.66031795437448, 1.67920556757599, 1.73509335005656, 1.74326395476237, 1.78267445997335, 1.83928591781296, 1.84696579352021, 1.86383298388682, 1.94829077110626, 1.9503703576047]
196デフォルトの名無しさん:2006/03/10(金) 22:30:13
とてもよい
197デフォルトの名無しさん:2006/03/11(土) 00:11:26
Rangeクラスについて常々思ってたんだが
値を範囲内に収めてくれるメソッドが(標準で)欲しい

range = 1..10
range.fold(4) #=> 4
range.fold(-2) #=> 1
range.fold(300) #=> 10
198デフォルトの名無しさん:2006/03/11(土) 00:30:52
この手のユーティリティメソッドって>>195的に
元クラスにぼこぼこ追加していくスタイルって推奨なの?
それともMyLib.range_rand/range_foldとかにした方がいい?
199162:2006/03/11(土) 00:35:57
>>167

調べてみたら、punct も POSIX 1003.2にはなかった。

 ttp://www.unusualresearch.com/regex/regexmanpage.htm

ascii はGNU拡張が先にあったような気がするけどどうだったかな?
200デフォルトの名無しさん:2006/03/11(土) 03:28:26
>>199
ありゃ、そうなんですか。
てっきり ISO C90 に ispunct(3) あるから POSIX regex にもあるものとばかり。
201デフォルトの名無しさん:2006/03/11(土) 08:36:15
>>198
推奨されもしないが嫌われもしない、ってぐらいじゃないかな
(個人の好き嫌いもあると思う)
元クラスに追加するにしても
ライブラリとしてまとめてrequireすれば、それなりに分かりやすくなるし

元クラスに追加しない場合、モジュール関数にするよりは
Rangeのサブクラス(NewRange?)を作って
そっちでメソッドを追加したほうがいいと思う
202デフォルトの名無しさん:2006/03/11(土) 09:27:36
>>201
>Rangeのサブクラス(NewRange?)を作って
>そっちでメソッドを追加したほうがいいと思う

全然よくねーよ。それじゃ結局 rand(0...10) と書けないだろアホ。
203デフォルトの名無しさん:2006/03/11(土) 13:30:42
>>202
>>195, >>198, >>201 はもう rand(1...10) の話をしてない。よく読め。
204デフォルトの名無しさん:2006/03/11(土) 14:04:48
Programming Ruby 2nd Ed. の翻訳っていつ出るのでしょうか?
以前 ruby-list で3月頃に出るって流れてたような記憶があるのですけど
205デフォルトの名無しさん:2006/03/11(土) 14:21:26
>>203
お前が読めドアホ。

>>201
>Rangeのサブクラス(NewRange?)を作って
という一文から分かるように、どう見てもrand(1..10)に関連した話だ。

このユーティリティ関数を
Rengeのサブクラスに定義するのはまるで意味が無い。
モジュール関数にした方がマシ。
206デフォルトの名無しさん:2006/03/11(土) 14:26:42
207デフォルトの名無しさん:2006/03/11(土) 14:46:42
ActiveScriptRuby固有の拡張子ってなんか決まってる?
208199:2006/03/11(土) 14:56:55
>>200
すまん。posix 1003.2でぐぐって一番上のページ(英語)のページを
見たんだけど、ここ以外のページも見るとpunctが入っているのばかり
だったから、このページが間違っているのだと思う。
209デフォルトの名無しさん:2006/03/11(土) 16:27:10
>>206
まともな本を1冊欲しいと思ってたんだが、Rails 本を買ったばっかなんだよなぁ。
しかも、ライブラリ編もあるのか……ぐへぇ。
210デフォルトの名無しさん:2006/03/11(土) 16:34:39
合わせて8000円ですからね。英語版買ったほうがいいキガス
211デフォルトの名無しさん:2006/03/11(土) 23:58:01
ライブラリ編だけ買うか?
初版は持ってるが、標準ライブラリが1.6 -> 1.8で大量に増えたから
まとまった日本語の説明欲しかったんだよな
212デフォルトの名無しさん:2006/03/12(日) 03:35:27
Ruby製のCMSてないですかね?
213デフォルトの名無しさん:2006/03/12(日) 04:48:46
ftpupってもうないのかな?検索して出てきたけど、
raaにはないみたいだし・・・
214デフォルトの名無しさん:2006/03/12(日) 07:45:10
>>210
だよね。1版持ってればなんとか読めるキガス。

1版日本語版は印象わるいんだよね。誤植が多い気がするし、
索引の作り方も気に入らない。なんてったってDavidがデビッ「ト」に
なってたのが笑った。ピアソンの中の人仕事雑過ぎ。
215デフォルトの名無しさん:2006/03/12(日) 16:18:54
>>212
WikiEngineがいくつかあるのと
有名どころでRuby on railsがあるのと
後一つ、どこかにCMSが置いてあったような…ダメだ思いだせない


↑とは関係ないけど、Googleで探してたらこんなライブラリ発見
ttp://vce.ce-lab.net/ja/fasthtmltmpl.html

eRubyに拒否反応を覚えてしまう自分は、非常に便利そうだと感じた
誰か使ってみた人いる?
216デフォルトの名無しさん:2006/03/12(日) 17:46:41
どーでもいいけどirb.batの二行目に
title irb %1 %2 %3 %4 %5 %6 %7 %8 %9
と入れとくとタスクバーの表示がC:\Windows...から
irbに変わって識別しやすくなる。
217デフォルトの名無しさん:2006/03/12(日) 17:47:26
書き方がいやで試してない
218117:2006/03/12(日) 23:36:39
結城先生降臨。

ttp://d.hatena.ne.jp/rubyco/about
219デフォルトの名無しさん:2006/03/13(月) 00:15:25
なにを今更…
220デフォルトの名無しさん:2006/03/13(月) 00:21:34
やっぱクイズ好きだなぁこの人
221デフォルトの名無しさん:2006/03/13(月) 01:08:57
222デフォルトの名無しさん:2006/03/13(月) 01:13:00
two.rbの呼び出したone.rb
one.rbの呼び出したtwo.rb
one.rb自身

ruby知らないが、たぶんこんな理由だろうな
223デフォルトの名無しさん:2006/03/13(月) 01:28:17
>>221
$LOADED_FEATURES
224デフォルトの名無しさん:2006/03/13(月) 01:35:37
おお、なるほど。。
こういうの見ると、Rubyが言語設計がよいといわれるのが納得できるなぁ
225デフォルトの名無しさん:2006/03/13(月) 01:45:29
いや・・・こんなの普通でしょ・・・Pythonだったらファイルとクラス対応を変えることもできるしね。
もっとブロックを使ってないとRuby-Wayとはいえない!
226デフォルトの名無しさん:2006/03/13(月) 01:53:40
$LOADED_FEATURESはどの段階でセットされるべきなのか
227デフォルトの名無しさん:2006/03/13(月) 15:28:02
>>227
現状に問題があるってこと?
228デフォルトの名無しさん:2006/03/13(月) 15:36:04
そんなことよりWinで"\\"をそのまま使えるように
パス区切り文字なグローバル変数導入してくれ。
229デフォルトの名無しさん:2006/03/13(月) 17:46:14
いや、内部では/で統一する方がいいよ。なまじ'\\'なだけに、
そのまままた文字列を処理するなんかに食わせると問題になりかねん。

taintを応用して、プログラム外から来たデータにビットを立て、
それを内部でパス名等として使用するときには
自動的に'\\'->'/'がかかるようにするというアイデアを思い付いた。
taintビットはセキュリティにしか使われてないが、応用すれば
こういう自動サニタイズみたいなことの実現にも使えるんじゃないか。
最近の流行的には、タグ?
230デフォルトの名無しさん:2006/03/13(月) 20:52:21
今の所 pure ruby なYAMLライブラリってどこにもない?
RAAでも探したんだけど見つからないし
yaml4rはダウンロードできないみたいだし
231デフォルトの名無しさん:2006/03/13(月) 21:23:45
>いや、内部では/で統一する方がいいよ。なまじ'\\'なだけに、
>そのまままた文字列を処理するなんかに食わせると問題になりかねん。
文字コードなんかは対応しているのにWindowsのパスに関してはなぜか
問題になる可能性を問題にする不思議。

そして文句あるならお前がやれでいつものように終了。
そしてRubyはWindowsで全く流行らず。
232デフォルトの名無しさん:2006/03/13(月) 23:15:28
へー。だから?
233デフォルトの名無しさん:2006/03/13(月) 23:19:40
Python陣営はRubyをライバル視してるのかな?
234デフォルトの名無しさん:2006/03/13(月) 23:19:50
外人がつくってくれるのを待てばいいさ
235デフォルトの名無しさん:2006/03/14(火) 00:15:11
>>231
よく知らないが、File.join って OS によって変わらないの?
変数くらいなら、自分で放り込めば良い気がするけど。
しかも、文字コード云々の言い分が良く分からん。>>229 の方が説得力あるんだが。
C# は、パスは @"..." で明示的に区別していた気がする。

Windows オンリーの人は釈然としないのかな。
236デフォルトの名無しさん:2006/03/14(火) 00:15:23
>>228
そのまま使えるし、File::ALT_SEPARATORってのもあるんだが。
237デフォルトの名無しさん:2006/03/14(火) 00:20:15
>>229
以前、このスレあたりで Object にタグを(ry とネタを振った記憶が。
最近、誰かの blog でも見掛けたような。
238デフォルトの名無しさん:2006/03/14(火) 13:05:19
Ruby発祥のOS hogehogeのパス区切りが@だから
Linuxで使う場合ARGVや``, system call, putsの前後に
必ず@<=>/の変換入れましょうとか言われたらぶちきれる罠。
239デフォルトの名無しさん:2006/03/14(火) 13:12:19
そういえば、田中哲さんの言う pathname の「リテラルのシンタックス」って、
具体的にはどんなものを言っているんだろう?
http://jp.rubyist.net/magazine/?0008-Hotlinks-3
240デフォルトの名無しさん:2006/03/14(火) 13:28:23
そんなこと言っても、WindowsのAPIでは \ も / 普通にパス区切りとして使えるし。
241デフォルトの名無しさん:2006/03/14(火) 14:40:59
>>239
その話は無いものねだりだと思うけどね。パッと思い付いたのは、

ruby_path = %path|usr bin ruby|

とかだけど、これだと空白の扱いとかが疑問だし。

そもそも、表記の長さを気にするなら Pathname じゃなくて Path にしろよ、
とか思うんだけどw

コンストラクタで配列を取れるようにするだけで大分違うと思うんだけどね。

ruby_path = Pathname.new %w(usr bin ruby);
242デフォルトの名無しさん:2006/03/14(火) 16:28:00
'a' =~ /a(?!=b)*?c/
というパターンマッチングを行うと暴走するんだけどバグかな。
普通に使っていてこれを踏むことはないとは思うけど。
243デフォルトの名無しさん:2006/03/14(火) 17:40:57
>>242
Perl では同じ正規表現が使えた。当然結果は偽だったけど。

先読みや否定先読みは本来の使い方からすると、後に quantifiers が来ると
エラーにするべきだと思うんだけど、なんでそうなってないんだろう。
Perl にしても Ruby にしても。
244デフォルトの名無しさん:2006/03/14(火) 18:02:51
hash = Hash.new しないで、
いきなり hash[:foo] = bar できるようにならないかなぁ
245デフォルトの名無しさん:2006/03/14(火) 18:34:39
>>243
鬼車だとエラーになるね。

% ruby -e "'a' =~ /a(?!=b)*?c/"
-e:1: target of repeat operator is invalid: /a(?!=b)*?c/
246デフォルトの名無しさん:2006/03/14(火) 18:45:15
Common Lispのリーダーマクロのように、
%<文字>(...) の解釈器をRubyで書けるようにすればいいと思うんだよね。
そうすればRubyでDSLを作るのにも便利がいいと思う。
ただし今のように全部まとめてパースしてから処理というわけにはいかなくなるが。
247デフォルトの名無しさん:2006/03/14(火) 19:03:11
>>246
俺もそれができると良いと思うんだが、
他人に読めなくなってしまうのが難点なのと、
<文字> が競合した場合にえらいことになりそうなのでダメだと思った。
248デフォルトの名無しさん:2006/03/14(火) 20:35:53
多分に使い様の問題ではあるが、後者はたとえば扱いをファイル単位にして、
カレントファイルの以後の処理のみに適用、もしくはKernel#loadの
オプショナル引数として渡すようにする等が考えられるね。
249デフォルトの名無しさん:2006/03/14(火) 21:53:20
>>248
> 扱いをファイル単位にして、カレントファイルの以後の処理のみに適用
パーサの中で評価期を呼べるようにしなけりゃならないので、
まずそういうシンタックスを考える必要がある。

> Kernel#loadのオプショナル引数として渡すようにする
こっちは意味がよくわからん。
250デフォルトの名無しさん:2006/03/14(火) 23:01:46
実装方法は必要だがシンタクスを別に考える必要なんかないけどな。
251デフォルトの名無しさん:2006/03/14(火) 23:04:47
>>244
[] というメソッドは Hash 以外にも存在するので、
Hash だけ特別扱いしすぎるのもねえ。

hash = {
:foo => :bar,
}

くらいで我慢しといて。
252デフォルトの名無しさん:2006/03/15(水) 03:56:15
244は ||= をご存じないのかな。
(hash ||= Hash.new)[:foo] = :bar   # Hash.newは{}でもよい
p hash
253デフォルトの名無しさん:2006/03/15(水) 08:31:35
それは流石にキモい。
しかも ||= である必要性がないし。

(hash = {})[:foo] = :bar
254デフォルトの名無しさん:2006/03/15(水) 08:59:04
そんなに汚く詰まったコードが好きならPerl使えばいいのに。
255デフォルトの名無しさん:2006/03/15(水) 09:15:17
もうシンタックスは変えないで・・・

 (´Д`;)ヾ ヨロシクオネガイシマス
   ∨) 
   (( 

 (;´Д`)  ホントニオネガイシマス
 (  八)
   〉 〉

    ヾ
 (´Д`;)、  コノトオリデス
   ノノZ乙

例のブロックパラメータのバグと実行速度の高速化だけに注力してください・・・
256デフォルトの名無しさん:2006/03/15(水) 09:25:15
>>253
あほ
257デフォルトの名無しさん:2006/03/15(水) 09:55:58
>>255
例のブロックパラメータの「バグ」ってシンタックス変えずに解決可能なんだっけ?
258デフォルトの名無しさん:2006/03/15(水) 09:59:35
>>253のコードが駄目な理由が分からないんだけど
汚いコードって意味じゃ>>252も同じじゃない?
259デフォルトの名無しさん:2006/03/15(水) 10:11:23
>>252のコードは hash に既にHashオブジェクトが代入されていてもされていなくても
正しく動作するが、>>253は有無を言わさずhashに{}を代入して初期化している。
それをやりたいなら
hash = {:foo => :bar}
で良いわけだし。

あとhashという変数名も良くないね。hash ||= {} というのが思ったとおりに動くのは、
rubyが賢いからなんだろうけど。
260デフォルトの名無しさん:2006/03/15(水) 10:24:40
hash という変数名にしててはまったことが何度かある。
261デフォルトの名無しさん:2006/03/15(水) 10:25:15
hoshu
262デフォルトの名無しさん:2006/03/15(水) 10:41:59
>>259
それなら (hash ||= {})[:foo] = :bar でもいい話だし、
このケースで ||= を使うなら、その例だって hash ||= {:foo => :bar} にするべきじゃね?
263デフォルトの名無しさん:2006/03/15(水) 10:54:13
>>262
読解力ゼロ?
264デフォルトの名無しさん:2006/03/15(水) 10:55:46
つーか >>244 の機能要らない
265デフォルトの名無しさん:2006/03/15(水) 10:57:47
だな。 Perl だと >>244 みたいなことができるのだが、あれ気持ち悪くてしかたない。
266デフォルトの名無しさん:2006/03/15(水) 11:52:22
>>263
> >>252のコードは hash に既にHashオブジェクトが代入されていてもされていなくても
> 正しく動作するが、>>253は有無を言わさずhashに{}を代入して初期化している。
ここに対する反論なんだけど

> それをやりたいなら
> hash = {:foo => :bar}
> で良いわけだし。
ここは同意するよ
俺も>>244みたいな機能はいらんと思ってる
267デフォルトの名無しさん:2006/03/15(水) 11:57:52
||=の人は勘違いしてるんでしょ
268デフォルトの名無しさん:2006/03/15(水) 11:59:54
結局perlのほうが柔軟性が高いということでFA?
269デフォルトの名無しさん:2006/03/15(水) 12:08:56
ま、そういう「柔軟性」が必要な人は、perl でも何ででも使ってくださいな。

で、そういう柔軟性に嵌って、自分で自分の首を絞めることになるけどね。
270265:2006/03/15(水) 12:09:44
>>268
Perl は型の種類が貧弱だからああいう無茶ができるんじゃないかな。

と、煽りにマジレスしてみる。
271デフォルトの名無しさん:2006/03/15(水) 12:29:24
ちとCから見てて気付いたんだが、なんか↓のコードおかしくね?
これがGCされないのはちょい困るのだが。
仕様だろうか…?

再現コード@mswin32 1.8.4
#!ruby
Object.new();
#nil; #<-これを追加するとGCされる(nilである必要はなく、どんな式でもいい)

GC.start();
ObjectSpace.each_object{|o|
p o; # => <#Object:...>があることを確認。
}
__END__
272デフォルトの名無しさん:2006/03/15(水) 12:43:35
>>271
Cから見るとどんなロジックのGCの実装が適切なの?
273273:2006/03/15(水) 12:47:24
>>272
いや、ロジック云々は関係ない。

GCされるはずのものがGCされないってまずくない?って話。
具体例がほしいなら、たとえばmod_rubyのような常駐アプリとかでね。
274272:2006/03/15(水) 12:50:38
いや、どのアルゴリズムのGCを希望してるの? と聞いてるんだけど?
で、別にGCされなくてもまずくないと思うよ。なぜまずいの?
275デフォルトの名無しさん:2006/03/15(水) 12:52:31
どうせ保守的 GC なんだし、その1個が解放されようがされまいがどうでもいいと思うが
276デフォルトの名無しさん:2006/03/15(水) 13:16:45
つまり現状のGCだとこれで仕様ってこと?
それならそれでしょうがない。諦めるよ。

>>274
よりよいGCアルゴリズムが何かなんて一般人が答えられると思うか?

>>275
これが保守的GCの意味なんね。よくわかったよ。
277272:2006/03/15(水) 13:41:37
>>276
初心者スレじゃなくてここでGCについていちゃもんつけてるんだから、
当然GCのアルゴリズムをわかった上でをしてるのかと思ったよ。
278デフォルトの名無しさん:2006/03/15(水) 13:48:45
>>277
「これがGCされないのはちょい困るのだが。」と書いてる時点で
どう見ても初心者だろ。
279デフォルトの名無しさん:2006/03/15(水) 13:56:32
>>278
GCとオブジェクトが所持してるリソースの解放(ファイルIOとかね)をごっちゃにしてる人じゃないのかなと思った。
オブジェクトの記憶域の始末を付けるのがGCであってそれ以外の資源はちゃんと自分で後始末を付ける物だと言うことを
自覚しないといけないのだけど、そういう事って入門書じゃかかれてないんだよね。
280デフォルトの名無しさん:2006/03/15(水) 13:57:49
Ruby は初心者でも、「Cから見てて」って言うくらいだから、
GC のコードくらい見てるんだよなー、と思った。
281デフォルトの名無しさん:2006/03/15(水) 13:58:14
喪前らいちいち性格悪いな
282デフォルトの名無しさん:2006/03/15(水) 13:59:56
>>281
そうかなぁ?
元の書き方が知識人な人だからもっと高尚なオハナシかと思って皆期待したのに裏切られただけなんとちゃうのん?
283デフォルトの名無しさん:2006/03/15(水) 14:02:40
初学者の割に「俺様ルールの決めつけ」から入ってるような香具師には
辛く当たりたくなるのが心情ってもんじゃなかろうか。
284271:2006/03/15(水) 14:27:01
>>280
そりゃ書き方がまずかった。単に拡張ライブラリを作るレベルで、という話のつもりだった。
というか、別にCレベルのコードの話は出してないだろ。
サンプルコードだって100% pure rubyなのに。

というか、本気で諸兄らは>>271のコードに違和感無いのか??
これが開放されないのに違和感を感じるのは俺様ルールの決めつけなのか…。
285デフォルトの名無しさん:2006/03/15(水) 14:30:36
>>284
そもそも GC って何か知ってるのか?
286デフォルトの名無しさん:2006/03/15(水) 14:31:01
違和感を感じるあなたが precise GC を実装してください。
ついでに incremental & generational GC にしてくださいな。
287デフォルトの名無しさん:2006/03/15(水) 14:33:33
>>284
100% pure ruby のサンプルコード出しといて、何がどう「ちょい困る」んだよ?
288デフォルトの名無しさん:2006/03/15(水) 14:33:49
>>284
あのコードで問題になるようなオブジェクトにどのような物を想定してるのですか?

289デフォルトの名無しさん:2006/03/15(水) 14:36:44
そういや rubyco にも似たような話があったね。
http://d.hatena.ne.jp/rubyco/20060304/objectspace
290271:2006/03/15(水) 14:37:01
>>285
「使わなくなったアクセス不能なリソースを開放する機能」だと思ってたが、その口ぶりじゃどうも違うらしいね。
せっかくだから、GCとはなんなのか後学の為に教えてもらえると嬉しい。
291271:2006/03/15(水) 14:44:16
>>289
同じ現象だね。
俺の認識が異常なのかと思い始めていたところだが、そうでもないらしい。

>>287-288
Data_Wrap_Structに指定するfree()でリソースを開放するつもりが、思ったように呼ばれなかった。
それで調べてみたらRubyレベルでも再現することがわかった。
そして再現コードを最小にまとめて書き込み、という流れ。
これで満足?

292デフォルトの名無しさん:2006/03/15(水) 14:58:03
>>290
ttp://en.wikipedia.org/wiki/Garbage_collection_(computer_science)
で、君の定義に従って話をすれば、
p o で出てくる <#Object:...> はなんで『アクセス不能』なの? 俺様ルール?
単に >>271 が『使わなくなった』だけでしょ?
293287:2006/03/15(水) 15:35:20
>>291
いや、具体的にどう困ったのかわからんので不満足です。
271氏の理解の範囲を越えていて困ったってこと?
294デフォルトの名無しさん:2006/03/15(水) 15:41:32
>>271
そのような動作を期待しているのならば、使うのは GC.start ではありません。
GC.always(仮称)を用いなければなりません。(実装されていませんが)
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/27991
これも使わなくなったら直ちに回収、ではありませんけれどね。

参考までに
「平均的にLが小さいユーザプログラムでは手動freeよりも GCの方が効率的になる場合があると言える」
http://www.is.s.u-tokyo.ac.jp/~vu/jugyo/processor/process/soft/compilerresume/gc/gc.html

とりあえず、GCについてもう少し調べてから見直すとよろしいかと。
295デフォルトの名無しさん:2006/03/15(水) 15:50:26
>>294
GC::always は名前が変わって (GC::stress) 実装されたんじゃなかったっけ?
296デフォルトの名無しさん:2006/03/15(水) 18:41:41
>>271のコードを見て、そもそもそのコードなら
nilを付けようが付けまいが、生成したObjectは
GCされる可能性があるんじゃないか、と思ったんだけど……
(どこからも参照されていないはずだから)

GCに関する理解のある方、解説をお願いします
297デフォルトの名無しさん:2006/03/15(水) 18:49:52
何を解説してほしいのかね。
298デフォルトの名無しさん:2006/03/15(水) 19:32:20
エスパーのオレが来ましたよ。

>>271の主張
「GC.start では、GCの対象になる全てのオブジェクトは解放されるべきではないか。」

・それに対する解答
「Ruby は GC のアルゴリズムとして conservative GC を採用している。
アルゴリズムの特性上、解放されないオブジェクトがあるのは当然だ。」

>>271の属性
ドジッ子・いじっぱり

ちなみに GC.stress は、「GCされるかもしれないタイミングでは、
常に GC の動作が始まる(通常はメモリに余裕があれば行なわない時もある)」
という話で、今回の件とは関係ないと思う。
299デフォルトの名無しさん:2006/03/15(水) 19:34:03
Rubyだと全ての式は値を持つ。
だから「直前に評価した式の結果」を持つレジスタが内部的にはあると
考えられる。
そう考えれば271は別におかしくないのでは。
300デフォルトの名無しさん:2006/03/15(水) 20:30:13
>>295
GC.stressという案が出ているのは出したメールのスレッドにありますがー、
実装されていたんですね、知りませんでした。
http://www.ruby-lang.org/ja/man/?cmd=view;name=GC
フォロー有難うございます。

>>298
確かにそうですね、ruby1.9でGC.stress=trueとしても回収されませんでした。
というか、ruby 1.8.4で、nilの行を加えても回収されないような?
#時と場合によるはずですけれど

>>299
GC.startの戻り値がありますから、その時点で「直前に評価した式」じゃなくなっていると思うのですが。
301デフォルトの名無しさん:2006/03/15(水) 20:56:30
>>300
GC.start の戻り値は GC.start が実行された後で返るんだから
関係ないのでは。
302デフォルトの名無しさん:2006/03/15(水) 21:07:38
みんないじっぱりでつね
303デフォルトの名無しさん:2006/03/15(水) 21:31:35
つか271の言ってるリソースって明示的に解放するべきものじゃないのか?
304デフォルトの名無しさん:2006/03/15(水) 22:09:15
それ気付いてないの本人だけだから黙ってた方がいいのにw
305デフォルトの名無しさん:2006/03/15(水) 23:17:27
>>299
制御構造なんかも最後の式の結果が戻り値になるからそれかもな
306デフォルトの名無しさん:2006/03/16(木) 00:32:26
で、RubyのGCはレジスタの値なんか見てるんでつか?
307デフォルトの名無しさん:2006/03/16(木) 01:15:05
レジスタじゃなくても似たようなもので何かありそうじゃん。
308デフォルトの名無しさん:2006/03/16(木) 01:23:42
Ruby2.0とPHPとではどっちが速くなりそう?
309デフォルトの名無しさん:2006/03/16(木) 01:35:53
>>308
早い遅いというか、そもそもRuby2.0はいつ出るか決まってるんだっけ?
310デフォルトの名無しさん:2006/03/16(木) 01:41:49
>>306
CPUのレジスタも見るよ。そんなことも知らないの?
311デフォルトの名無しさん:2006/03/16(木) 01:47:38
最近急にスレが厨臭くなったな
312306:2006/03/16(木) 01:51:07
>>310
たしかにgc.c見てると、レジスタ見てそうだな。thanx
313デフォルトの名無しさん:2006/03/16(木) 01:55:04
>>309
未踏の発表会も終わったし、今年中でしょ
314デフォルトの名無しさん:2006/03/16(木) 02:50:50
え? Ruby2.0 って今年中にでるの?

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/41733
というか、出るのか? (汗
315デフォルトの名無しさん:2006/03/16(木) 03:37:50
年 3 回…。
316デフォルトの名無しさん:2006/03/16(木) 13:28:11
逆に考えるんだ。
「年三回しかリリースされない」と考えるんだ。
317デフォルトの名無しさん:2006/03/16(木) 13:38:44
四月はもう無いよね。まあ今年は二回だろうね。
318デフォルトの名無しさん:2006/03/16(木) 15:24:23
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/28362
というわけで、1.8.5は8月です。

まぁ、今のrubyのリソースだと年2回が妥当でしょうねぇ。
319デフォルトの名無しさん:2006/03/16(木) 20:22:23
8月・12月だと、12月がきつくない?
320デフォルトの名無しさん:2006/03/16(木) 20:30:00
再起動すればGCなんて不要だよ。
Javaだって運用するなら定期的な再起動が必須だし。
321デフォルトの名無しさん:2006/03/16(木) 20:33:32
ヒント: 冬コミ
322デフォルトの名無しさん:2006/03/16(木) 20:38:59
見事に夏コミと冬コミにあたるなw
323デフォルトの名無しさん:2006/03/16(木) 20:42:45
つか12/24がすべての基準なんだろ
324デフォルトの名無しさん:2006/03/16(木) 20:54:07
>>319
大規模な変更がなくてもリリースって結構負担になるもんなのかな。
325デフォルトの名無しさん:2006/03/16(木) 21:00:07
データをヒープに持つ実装をやめればGCなんて不要だよ。
326デフォルトの名無しさん:2006/03/16(木) 21:33:25
>>325
ほう。興味深い話だ。ではどこにデータを持つようにすれば良いのか
教えてくだされ。
327デフォルトの名無しさん:2006/03/16(木) 22:23:57
DB(藁
328デフォルトの名無しさん:2006/03/16(木) 22:25:58
>>326 返信が来る前に賭けてみる(こないと思うけど)
フラットメモリ一杯もらって結局自分でチョン切ってヒープになるに1カノッサ(w
329325:2006/03/17(金) 03:57:52
えー、そんな真剣に答え求められても・・・

・全部スタックに積む
・アドレスを求められたらいちいち先頭から数え直す
・値を変更されたら最後尾のアドレスに積み直す
・使わなくなったメモリはそのまま放置

とかかな?
ハードウェアが無限に性能向上したら、可能になるよ
330デフォルトの名無しさん:2006/03/17(金) 05:02:30
(゚Д゚)
331デフォルトの名無しさん:2006/03/17(金) 05:03:14
ハードウェアが無限に性能向上したら、データをヒープに持っててもGC不(ry
332デフォルトの名無しさん:2006/03/17(金) 10:42:34
おまえらが無限に性能向上したら、データを脳内に保持しておけるのでGC不(ry
333デフォルトの名無しさん:2006/03/17(金) 14:31:35
参照が残ってるはずの記憶もGCされちゃうんですが、これはバグ?
334デフォルトの名無しさん:2006/03/17(金) 15:21:11
コードを
335デフォルトの名無しさん:2006/03/17(金) 15:28:56
>>333
とりあえず、お前の頭をオープンソース化しる!
336デフォルトの名無しさん:2006/03/17(金) 15:44:49
>>333
ゲロ吐いてない?
337デフォルトの名無しさん:2006/03/17(金) 15:46:23
>>336
core dumped?

338デフォルトの名無しさん:2006/03/17(金) 19:46:21
>>271

>#!ruby
>Object.new();
>#nil; #<-これを追加するとGCされる(nilである必要はなく、どんな式でもいい)
>
>GC.start();
>ObjectSpace.each_object{|o|
>p o; # => <#Object:...>があることを確認。
>}

このコードを試してみましたが、3行目のnilあるなしにかかわらず、<#Object:...>が残りました(Linux2.6, Ruby1.8.4)。Windowsでは試してません。
このコードだけを見ると確かにGCで回収されてもおかしくないように見えます。たぶん直前に実行した式の値をRuby内部で保持しているせいだと思うんですが、
確信はないのでここじゃなくてメーリングリストで聞いてみることをおすすめします。

保守的GC(conservative GC)がどうのこうのという意見もありますが、今回はたぶん関係ないでしょう。
たしかに保守的GCではすべての未参照オブジェクトが回収されるという保証はないですが、>>271 の場合はnilがある場合はきちんと回収されているそうなので、今回の件についてはGCが保守的であることは関係ないと思われます。
つーか、どうみてもGCのアルゴリズムとは関係ない話でしょ。だれだよ、そんな話にもっていったやつは。

なんか271につらくあたってる書き込みがおおいですが、的外れな回答はきにせずスルーしてください。ごめんね>271
339デフォルトの名無しさん:2006/03/17(金) 21:14:20
>>338
>保守的GC(conservative GC)がどうのこうのという意見もありますが、今回はたぶん関係ないでしょう。

根拠は?
340デフォルトの名無しさん:2006/03/17(金) 21:19:58
コンサバティブでいてくれさえすればどうでもいい。いまはメモリの使用量を気にするのは貧乏人。
まあ、webrickを一ヶ月立ち上げっぱなしで動かすとかいうんなら話は別だけどね。
341デフォルトの名無しさん:2006/03/17(金) 21:23:35
RoRのPodcastでwhyが登場してる件について
342デフォルトの名無しさん:2006/03/17(金) 21:39:17
GC の話を続ける奴は、とりあえず、この人を論破してみせろって。
http://www.namikilab.tuat.ac.jp/~sasada/diary/200603.html#d15
343デフォルトの名無しさん:2006/03/17(金) 22:00:23
論破?? (⊃д`)??
344デフォルトの名無しさん:2006/03/17(金) 22:31:33
ロンパールーム
345デフォルトの名無しさん:2006/03/17(金) 23:20:22
>>333
コードを見ないとなんともいえない
346デフォルトの名無しさん:2006/03/17(金) 23:53:59
>>332を承けて>>333だろ?
347デフォルトの名無しさん:2006/03/18(土) 00:18:49
>>333
バグっつーか寄生虫に脳を喰われたって事かも


>>346
これでいいの?
348346:2006/03/18(土) 00:42:11
>>347
ちょっとずれてると思うけど、おれは別にどーでも構わんよ。
349345:2006/03/18(土) 09:14:44
>>333 >>346
ごめん、気づかずマジレスしてしまった
350デフォルトの名無しさん:2006/03/18(土) 11:00:43
どっかのパワーの有り余ってる外人さんがLinuxの基本的なコマンドをrubyでリプレースプロジェクトとかやってたりしないの。
たまにコマンドカスタマイズできると便利だと思ったり思わなかったり。
351デフォルトの名無しさん:2006/03/18(土) 12:15:14
>>338
どうみても保守的なGCにありがちな挙動だと思うが、
何を根拠に「関係無いと思われます」なんていってんの?

「オブジェクトがGCされない」という話が
なぜ「GCのアルゴリズムとは関係無い話」と思うの?

「なんとなく」とか「直感で」とか言ったり、そもそも答えなかったら低脳すぎんぞ。
352デフォルトの名無しさん:2006/03/18(土) 12:19:09
2chだと突然口調も正確も豹変してしまう件
353デフォルトの名無しさん:2006/03/18(土) 12:28:05
2ch以外ではネット上に自分の文章特にありませんが
354デフォルトの名無しさん:2006/03/18(土) 12:40:17
>>353
平素の言動や文章と匿名投稿との比較とおもいたまへ
355デフォルトの名無しさん:2006/03/18(土) 12:46:21
>>354
普段の言動と違うのは当たり前だろ。

お前は同じなのかよ?

お前平素の言動や文章に「おもいたまへ」とかいってんの?キモスギ
356デフォルトの名無しさん:2006/03/18(土) 12:51:08
>>355
あふぉですか?
357デフォルトの名無しさん:2006/03/18(土) 12:51:12
重いタマへ
358デフォルトの名無しさん:2006/03/18(土) 12:53:15
>>351
どうみても保守的関係ありません。
直前の式の値を記憶していれば不思議でもなんでもありません。
保守的なGCにありがちな挙動ならstrictなGCで起こらないことを示さねばなりません。
359デフォルトの名無しさん:2006/03/18(土) 13:03:54
タマ姉さいこう
360デフォルトの名無しさん:2006/03/18(土) 13:11:55
>>358
>直前の式の値を記憶していれば不思議でもなんでもありません。

はぁ?あふぉですか?
直前の式の値は記憶されませんが。

どうみても保守的GCのせいです。
361デフォルトの名無しさん:2006/03/18(土) 13:15:41
なぜ直前の式の値が保持される、と思ったんだろう?
362デフォルトの名無しさん:2006/03/18(土) 15:14:26
ソースを読んだからだけど。
conservative GCの"conservative"が指す意味わかってないだろ。
363デフォルトの名無しさん:2006/03/18(土) 15:16:35
分かってないのはお前だろ
364デフォルトの名無しさん:2006/03/18(土) 15:26:38
じゃあ説明してみ。
俺の理解している定義ではRubyが値を保持している以上
conservativeかどうかは関係ない。Rubyが保持していることはソースで確認済。
(厳密に言うとRubyの内部コード上での直前の値なので必ずしも
字面のそれとは一致しないが、この場合は同じ)
365デフォルトの名無しさん:2006/03/18(土) 15:33:14
具体的にソースのどこか言ってみろよ。
366デフォルトの名無しさん:2006/03/18(土) 15:44:51
先に君のconservativeの定義と、271の理由がGCがそのconservativeだから
であることの説明をどうぞ。

これがどこかなんてRubyに限らずインタプリタを読める人なら
すぐに当たる場所だから、場所を明示しなくても真偽は判定できる。

心配しなくても、読めない君のためにその後で場所は示してあげるよ。
367デフォルトの名無しさん:2006/03/18(土) 16:06:15
お前がconservative GCの意味が分かってないんだから、説明するのはお前だあふぉ。

意味が分かってる?

じゃあ説明してみ。
368デフォルトの名無しさん:2006/03/18(土) 16:09:00
何このスレ・・・・・・・?
             /ヽ       /ヽ
            / ヽ      / ヽ
  ______ /U ヽ___/  ヽ
  | ____ /   U    :::::::::::U:\
  | |       // ___   \  ::::::::::::::|
  | |       |  |   |     U :::::::::::::|
  | |      .|U |   |      ::::::U::::|
  | |       | ├―-┤ U.....:::::::::::::::::::/
  | |____ ヽ     .....:::::::::::::::::::::::<
  └___/ ̄ ̄      :::::::::::::::::::::::::|
  |\    |           :::::::::::::::::::::::|
  \ \  \___      ::::::
369デフォルトの名無しさん:2006/03/18(土) 16:10:21
Rubyスレです。

参照しないでください。

そのうちガーベジコレクションされます。
370デフォルトの名無しさん:2006/03/18(土) 16:12:27
>>369
上手すぎ、笑わせてもらった!
371デフォルトの名無しさん:2006/03/18(土) 17:18:19
>>367
自説の根拠の提示を相手に求めるのですか?

貴方の主張は271の理由がGCがconservativeであるためであるというものであり、
当方の主張はそうではない、言いかえれば271はconservativeでないGCにおいても
起きるというものです。

従って当方の主張はconservative GC固有の性質に依存しておらず、conservative GC
の定義を当方が示さずとも、或いは仮に当方が理解していなくとも論旨の構成に
問題はありません。一方、貴方の主張はGCがconservativeであるということの意味、
conservative GC特有の性質の説明抜きには成立し得ません。

ここまで言えば、どちらが説明すべきかは普通は理解できると思うのですが?
372デフォルトの名無しさん:2006/03/18(土) 18:00:36
以下は専用スレでやってください。

Garbage Collection (GC)について語るスレ
http://pc8.2ch.net/test/read.cgi/tech/1141646850/
---------------終冬------------------------------
373デフォルトの名無しさん:2006/03/18(土) 18:09:56
>心配しなくても、読めない君のためにその後で場所は示してあげるよ。
終わる前にこれキボンヌ
374デフォルトの名無しさん:2006/03/18(土) 19:03:02
>>371
はいはい。結局conservativeGCが何か理解できてないし、ソースの位置も示せないんだね。
よかったよかった。
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?

376デフォルトの名無しさん:2006/03/18(土) 19:49:46
>>375
http://pc8.2ch.net/test/read.cgi/tech/1130680264/957
スレ違い。
あとマルチ死ね。
377デフォルトの名無しさん:2006/03/18(土) 19:52:10
>>376
>>375は上位スレ全部に投下してるみたいだね。

【Java】NetBeans【Sun】
http://pc8.2ch.net/test/read.cgi/tech/1132079321/576
こんなとこにも投下してて笑った。
378デフォルトの名無しさん:2006/03/18(土) 20:08:41
何故説明しないのか分かんなけいど(わらい)
「`自説の'conservative GC」説明すれば済む話じゃんね。

>>372
春だよね、もう
379デフォルトの名無しさん:2006/03/18(土) 20:55:41
>>378
春だから、お前が2chにいるわけで
380デフォルトの名無しさん:2006/03/18(土) 20:57:30
なんか必死な奴が居るなw
381デフォルトの名無しさん:2006/03/18(土) 21:01:17
分かんなけいど
382デフォルトの名無しさん:2006/03/18(土) 21:03:57
Rubyは直前の値を記憶してないので、GCされないのは保守的GCだから。説明オワリ。

>このコードを試してみましたが、3行目のnilあるなしにかかわらず、<#Object:...>が残りました(Linux2.6, Ruby1.8.4)。Windowsでは試してません。

直前の値を記憶しているんなら、nilあるなしで<#Object:..>は残るか消えるか変わるだろバカ(わらい)
383デフォルトの名無しさん:2006/03/18(土) 23:38:05
Rubyの実行環境ヒープエリアに件のオブジェクトへの参照が存在するなら言語的には参照不可な場所であってもGCされないって事だろう?
コンサバGCなら全く持って不思議じゃねぇじゃん。
384デフォルトの名無しさん:2006/03/19(日) 01:28:27
で、>>271, >>338, >>358, >>362, >>364, >>367, >>374 の自説の展開まだぁ〜?
ID 無い上に、参照されまくりで、もう何が何だか分からねぇw
とりあえず、まだ回収されてないよね?
385デフォルトの名無しさん:2006/03/19(日) 04:53:10
>>383
件の例だと ObjectSpace からは参照されてるようだけど、
これは「言語的に参照不可な場所」じゃないよね?
そのへんがいまいちわからない。
386デフォルトの名無しさん:2006/03/19(日) 07:08:08
>>373
そうしたいのは山々ですが先に、で示した条件を満たしてくれる方がいないので
今のところご希望に添えず残念です。とりあえずファイル名だけ示しておきます:
eval.c

>>378
371で述べた通り、私の主張にconservative GCの説明は必要ではないですから。

>>382
371で忠告申しあげた通り、保守的GCの定義が抜けていますから、それで説明
オワリとしてしまうと主張は成立しませんよ。
ちなみに
> 直前の値を記憶しているんなら、nilあるなしで<#Object:..>は残るか消えるか変わる
とは限りませんよ。338の内容からはRubyが直前の値を記憶しているという主張は
なんら否定されません。

>>383
「言語的には」の指すところが不明確です。また383の定義を言葉通り適用すると、
循環参照のあるオブジェクト群は永遠に回収できませんね。再提出してください。
387271:2006/03/19(日) 08:57:27
因みに俺は書き込むときは番号書いてるから。

>>385
ObjectSpace.each_objectは「存在する全てのオブジェクト」にアクセスできる。
これに例外はなく、次にGCされるはずの参照できないオブジェクトにも参照できる。
試しにGC.start前と後でオブジェクトの数を数えてみれば分かる(ただし数えるだけ。pやputsは文字列を生成するのでこの試みには不適)


にしてもちょっと前にも同じこと主張してたやつがいるな。
なんでRubyの仕様すら分かってないヤツにまで叩かれなきゃならんのだ。
388271:2006/03/19(日) 09:11:33
>>342
>いや,Ruby以外は全然知らないから嘘かもしれないけど.

Perlの拡張書いたことあるけど、Rubyの方が圧倒的に書きやすいと思う。
メモリマネージメントだけじゃなく、funcallとかもうね。Perlのサブルーチン呼び出すためにいちいち引数をスタックに押し込んで…とかやってらんない。
argcとargvだけ用意すればいいのはすごく楽だ。

ただ、Rubyは拡張ライブラリ用のユーティリティが圧倒的に不足してるね。
rb_str_newf(fmt, ...)とか、rb_str_catf(str, fmt, ...)とか、
rb_protectn(func, argc, ...)とかほしいと思った。
389デフォルトの名無しさん:2006/03/19(日) 11:40:19
>>386
>>378>>367 宛てのつもりだったんだが、既に俺には状況把握できてないのかも。
誰か、一旦、状況整理するか blog で纏めてくれ ('A`)

とりあえず WBC 観ようぜ、みんな。
390デフォルトの名無しさん:2006/03/19(日) 12:33:32
>>386
>371で忠告申しあげた通り、保守的GCの定義が抜けていますから、それで説明
>オワリとしてしまうと主張は成立しませんよ。
保守的GCでググれ。それが定義だアホ。

>> 直前の値を記憶しているんなら、nilあるなしで<#Object:..>は残るか消えるか変わる
>とは限りませんよ。338の内容からはRubyが直前の値を記憶しているという主張は
>なんら否定されません。

はぁ?オマエ頭大丈夫か?

お前の主張は、
「保守的GCが一切関係ない、直前の値が記憶されているから消えない」
だろうが。

直前の値がnilで上書きされてんのに、お前の環境では消えなかった。
で、271の環境では消えた。

なぜお前の環境で消えなかった?保守的GCが関係してるからだろうが。

この現象を保守的GCとまったく関係無い、とかアホほざいてるヤツが
逆に「コンサバGCって何かわかってる?」とか寝言言ってんだぜ。
死ねよと。
391デフォルトの名無しさん:2006/03/19(日) 12:40:24
保守的GCをちゃんと理解してれば、>271は保守的GCが影響してるため、と判断できる。

「まったく関係ない」と主張してるバカは、理解できていない。

よって、「保守的GCの説明」、というか「保守的GCのお勉強」をしないといけないのは、

まったく関係無いとほざいてるアホのほうです。
392デフォルトの名無しさん:2006/03/19(日) 13:04:21
というか、>>342のリンク先の、Rubyの仮想マシン作ってる人が、
「保守的GCだから」と言ってるじゃん。
俺らよか、かなりRubyの内部に詳しい人のはずがそう言ってる訳だ。

>>338の保守的GCは関係無いと主張してる方。
どうみても保守的GCの関係してる話です。

保守的GCの理解が足りないようです。勉強してくださいね。
393デフォルトの名無しさん:2006/03/19(日) 13:07:18
モチツケ
394デフォルトの名無しさん:2006/03/19(日) 13:11:20
ごちゃごちゃうるせーよ、全部ささたんに任せておけばいい
先進のGC実装によるRubyの刷新とかいう名目で、
また政府に食わせてもらえばよし
395デフォルトの名無しさん:2006/03/19(日) 14:27:39
つーかそろそろGC論争はよそでやってください、頼むから
396デフォルトの名無しさん:2006/03/19(日) 14:36:09
>>395
同意。そーゆう議論なら開発MLでやれ。
ななしじゃなく、オープンに議論してくれんぞ
397デフォルトの名無しさん:2006/03/19(日) 14:40:25
398デフォルトの名無しさん:2006/03/19(日) 19:38:00
>>271
いるなら、>>292,>>293に答えろよ。喪前が偉そうな発言するのはそれからだ。
399271:2006/03/19(日) 20:43:52
>rb_protectn って何だろう。
rb_protect()の任意個の引数を受け取るバージョン。

たとえばこんな風に:
rb_protect(rb_respond_to, &state 2/*argc*/, self, method)
現状、これをやるのってものすごくめんどくさくて。
あとついでに、rb_funcall_protect(self, method, &sate, argc, argv)もほしい。
これもめんどうだった。
400デフォルトの名無しさん:2006/03/19(日) 20:47:26
コントリブーしてよせっかくだし
401デフォルトの名無しさん:2006/03/20(月) 14:50:43
GNOME 2.14 で新しくなったこと

いくつかの Python ファイルを開き、GNOME.org 上にその一つを保存している Gedit

また新機能として Gedit のためのプラグインを Python で記述できるようになっています。
これによって強力なプログラマでなくとも Gedit の機能をを簡単に拡張、カスタマイズできます。
外部コマンドの実行、タグに基づいた補完のサポート、
そして対話的な Python コンソールといった便利ないくつかのプラグインが Gedit に含まれています。

http://www.gnome.org/start/2.14/notes/ja/figures/figure-gedit-mdi.png
http://www.gnome.org/start/2.14/notes/ja/rnusers.html


 ま た 差 が つ い て し ま っ た な


402デフォルトの名無しさん:2006/03/20(月) 14:55:35
今頃 YARV が完成していたなら・・・
403デフォルトの名無しさん:2006/03/20(月) 16:25:42
釣れないだろ、さすがに。
404デフォルトの名無しさん:2006/03/20(月) 16:50:33
Gedit なんて使わないからどうでもいいや。
405デフォルトの名無しさん:2006/03/20(月) 16:59:51
el4rがあるじゃないか。
素直にelispで書けと言われそうだが。
406デフォルトの名無しさん:2006/03/20(月) 17:01:12
GPL汚染と嫌がらせのようなドキュメント不足を何とかしていたら
Rubyの組み込みだったかもしれないのにな。
407デフォルトの名無しさん:2006/03/20(月) 17:06:48
rubyはシンプルで美しい言語でいてくれれば十分だ
過去の互換性とかいらないから…

あとGUI使いやすくしてくれれば授業とかで使えそうだ
最近は、見栄えも大切だと思うようになった

漏れがスクリプト言語に望むものなんて、即時実行出来ることと
タイプ量と行数が少なければいいってことくらいだけど
一般にはそうはいかないらしい
408デフォルトの名無しさん:2006/03/20(月) 17:19:25
>>407
GUIはとりあえずWebブラウザでいいのではないか。
それなりに簡単に公開できるし。
409デフォルトの名無しさん:2006/03/20(月) 19:15:47
>>405
前にちょっと試したが、el4r は動かすところまで行かなかった。
作者の環境に依存しすぎだよ、るびきちタン。
無論、真面目に問題点を修正すれば動くだろうが、やってるうちに馬鹿らしくなってやめた。
Plamo 使ってるんだが、個人的には make じゃないのも痛かった。ゴミにしたままだ orz
あと、勝手に .emacs 弄られて嬉しいものなんだろうかねぇ。
410デフォルトの名無しさん:2006/03/20(月) 19:23:43
EmEditorがWSHなVBS, JSでマクロ書けるらしいから
ActiveScriptRubyに対応できるような
技術協力するとかしたら面白そうだな。
411デフォルトの名無しさん:2006/03/20(月) 20:08:58
>>410
現に今でもActiveScriptRubyでマクロ書けるって
どこかで聞いたような希ガス
俺はWindowsMeだから試せないが

ところで皆、Rubyスクリプトを書くときにどんなエディタ使ってる?
俺は支援機能の便利さと見た目からJmEditorメイン、たまにVxEditor
以前はRDE使ってたんだけど不安定すぎて嫌になった
412デフォルトの名無しさん:2006/03/20(月) 20:14:37
emacs + ruby-mode
エディタの話題は定期的に出るね
413デフォルトの名無しさん:2006/03/20(月) 21:03:30
>現に今でもActiveScriptRubyでマクロ書けるって
>どこかで聞いたような希ガス
VBSからASRスクリプト呼び出して実行することが可能ってだけ。
それを対応しているとは言いがたいな。
414デフォルトの名無しさん:2006/03/20(月) 23:45:25
サクラエディタ

外部ソフト持ち込み禁止なのに
何故かこれは入っていた。
古いバージョンではあったがメモ帳じゃなくてホッとしたよ。
415デフォルトの名無しさん:2006/03/21(火) 01:16:28
>414
そういやそのサクラエディタもWSHでマクロ書けるからASR使えるね。
ついでに編集中のファイルのディレクトリでコマンドプロンプト開く車輪を再生産してみたw
416デフォルトの名無しさん:2006/03/21(火) 01:20:23
>>389
それは失礼しました。

>>390
> 保守的GCでググれ。それが定義だアホ。
それでは答えたことになりませんから、いまだあなたの主張は成立してませんね。

> お前の主張は、
> 「保守的GCが一切関係ない、直前の値が記憶されているから消えない」
> だろうが。
「271の」と書いている通り、271のnilを入れない場合において、GC.start直前の
Object.newの返り値が、ですよ。

> 直前の値がnilで上書きされてんのに、お前の環境では消えなかった。
> で、271の環境では消えた。
> なぜお前の環境で消えなかった?保守的GCが関係してるからだろうが。
そんなこと問題にしていませんが。371などで述べている通り、私の主張は
「271でnilを入れる・入れないで消える・消えないが変化するのは」
conservative GCゆえにではなく直前の値が保持されているから、です。
271でnilを入れた場合と338を対比してどうの、などとは言っていません。
当初から直前の値の保持の有無を問題にしているので、それと関係ない事柄を
問題に含めるわけがありません。そもそも338は私ではありませんし。
しかも、338は直前の値も消えた、というものではありませんから、
私の主張には全く関係ありません。
念のために書いておくと、この件に関する私の最初の投稿は>>299です。
「内部的な」レジスタと書いてあるのは、Ruby表面に現れない記憶(レジスタ
または変数)であって、CPUレジスタに限定したものではありません。
ま、インタプリタなんだからこんなことは言うまでもないですね。
417デフォルトの名無しさん:2006/03/21(火) 01:28:13
>>392
ささだ氏が、>>296の「>>271のコードを見て、nilを付けようが付けまいが、
生成したObjectはGCされる可能性があるんじゃないか」を肯定したのなら
それは氏の誤りです。
なぜなら既に述べているようにRubyの評価器は直前の式の値を記憶していて、
nilを付けない場合にGCがもしこれを回収するならば、それはGCのバグだからです。
GC.startも当然その評価器の中から(念の為に書くと非末尾呼び出しで)呼ばれ、
RubyのGCは現状stop-the-worldで回収までやってしまいますから。

YARVの実装はまた別かも知れませんけどね。例えばレシーバを得る際に入れ子
呼び出しによらないようになっていたら、「直前の値」がレシーバで上書きされる
だろうとかね。いずれにせよ、今はYARVの話はしていないので関係ないですけどね。
418デフォルトの名無しさん:2006/03/21(火) 04:18:04
xyzyy fundamental-mode
419デフォルトの名無しさん:2006/03/21(火) 12:14:08
>>271 == >>299 と思って話を追ってたのだが、わけがわからなくなったので寝よう。
420デフォルトの名無しさん:2006/03/21(火) 12:14:08
4/28 に延期になっちゃったね (´・ω・`)
http://www.cbook24.com/bm_detail.asp?sku=4274066428
421デフォルトの名無しさん:2006/03/21(火) 12:46:12
>>419
>>271はそこ(>>299)までの知識もないだろ。自称「一般人」なんだから。
422デフォルトの名無しさん:2006/03/21(火) 18:07:39
>>416
アホ。お前の主張も成立してないんだよ。

直前の値を保持してるという証拠を提出してない。さっさと出せよ低脳が。
423デフォルトの名無しさん:2006/03/21(火) 18:57:15
1. nilがあっても消えない
 →「直前の式の値が記憶されるかされないか」
   にかかわらず、他の要因によってGCされていない。
2. nilがあれば消える。
 →「直前の式云々」が要因である可能性、
   上の場合と同一の他の要因の可能性、
   どちらもありうる。

1によって、「他の要因」が、何であれ存在することは確か。
「直前の式云々」の存在は、いまのところ確かではない。


「他の要因」が保守的GCであるという仮説があり、
これを採ると1と2の両方に説明がつく。

「直前の式の値が記憶される」という仮説があり、
これを採ると1のみ説明がつく。
424デフォルトの名無しさん:2006/03/21(火) 18:59:44
>そもそも338は私ではありませんし。

>「271でnilを入れる・入れないで消える・消えないが変化するのは」
>conservative GCゆえにではなく直前の値が保持されているから、です。

はぁ。じゃあもうそういうことでいいよ。



「338でnilを入れる・入れないで消える・消えないが変化しないのは」
conservative GCだから、ということでいいね。
425デフォルトの名無しさん:2006/03/21(火) 18:59:53
>>423訂正

誤:
> 「直前の式の値が記憶される」という仮説があり、
> これを採ると1のみ説明がつく。

正:
「直前の式の値が記憶される」という仮説があり、
これを採ると2のみ説明がつく。
426デフォルトの名無しさん:2006/03/21(火) 19:05:41
何が目的で話題を引っぱるのか知らないけど(結論は出てるんだよね?)、
相手を言い負かすのが目的なら2ch、特にIDのない板は不向きだよ
427デフォルトの名無しさん:2006/03/21(火) 19:09:04
わたしまけましたわ
428デフォルトの名無しさん:2006/03/21(火) 20:09:14
GC ネタ結論出てたのか、結局どうなのか良くワカンネ
そんなに自信があるなら、ML 逝けよってのは禿同だな。
429デフォルトの名無しさん:2006/03/21(火) 20:45:07
>>271 は逃げたか
430デフォルトの名無しさん:2006/03/21(火) 21:27:41
MLでも迷惑だろ。
議論してるやつはソース読んで納得したらクソして寝ろと言いたい。
431271:2006/03/21(火) 22:42:47
>>271
俺?別に俺は逃げてないが。逃げる必要も無いし。
とりあえず、ささだ氏の「(問題が起きる可能性はあるが)そういうのはレアケースなので,あまり問題になっていない」というので一応納得したので引っ込んだだけ。

しかし結局仕組みはよく分からないな。
直前値の保存かと思ったら環境によっちゃ再現しないみたいだし、
conservative GC主張者からは「conservative GCだから。以上!」の一点張りで具体的な解説は一切なしだし。
432デフォルトの名無しさん:2006/03/21(火) 22:47:18
というか、なんで conservative GC で納得しないんだ?
433デフォルトの名無しさん:2006/03/21(火) 22:58:22
>>431
な ぜ グ グ ら な い !
434デフォルトの名無しさん:2006/03/21(火) 23:09:44
>>431=>>271
ttp://en.wikipedia.org/wiki/Garbage_collection_(computer_science)
も読んでないのかよ?さっさと、>>292,>>293に答えろ。
435デフォルトの名無しさん:2006/03/22(水) 00:00:26
何度諭しても聞き入れないヤツなんて見捨てちまえよ…
436デフォルトの名無しさん:2006/03/22(水) 00:07:36
いろんな意味でバカだしな。>>271
437デフォルトの名無しさん:2006/03/22(水) 04:27:28
>>431
議論の前提になる知識もないし、資料を提示しても読みもしない、理解もしない。
話にならんよ。
438デフォルトの名無しさん:2006/03/22(水) 09:12:14
じゃ あ な ぜ 放 置 で き な い ?
439デフォルトの名無しさん:2006/03/22(水) 09:25:56
ちとスレ違いだけど
UTF-8Nって認識精度が極端に低いのが困る…

UTF-8Nでソースを書いていると、先頭に日本語コメントを置いても
認識を誤ることがしばしば
(しかも使うエディタによって認識の可否が違ったりするし)
潔くSJISかEUCを使うべきなのだろうか

っていうかrubyでもBOM付きUTF-8を扱えるようにならないのだろうか?
440デフォルトの名無しさん:2006/03/22(水) 10:05:34
>>439
俺もそれに悩んでる。知らない間に文字化けしてて
動かなくなってるんだよな。
441デフォルトの名無しさん:2006/03/22(水) 11:11:30
#!/unco/ruby -Ku
でもだめダメなん?
442デフォルトの名無しさん:2006/03/22(水) 11:12:22
エディタの不具合の話をしているの?
443デフォルトの名無しさん:2006/03/22(水) 13:48:28
> UTF-8Nって認識精度が極端に低いのが困る…
認識アルゴリズムにもよるけど、全角空白(U+3000)を入れると多少認識精度が上がるかと。
UTF-8 で \xE3\x80\x80 なので、Shift_JIS / EUC-JP と重ならないんで。

蛇足かもしれないけど、coding pragma を書いておくのも一つの方法。
「ソースコードのエンコーディング指定」のEmacs版が、
http://www.python.jp/Zope/articles/japanese/Python4Japanese-2
rubyでも1.9では入っているので、
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/16134
これを利用しつつ、使っているエディタの作者さんに対応を頼んでみると幸せになれるかも。

> っていうかrubyでもBOM付きUTF-8を扱えるようにならないのだろうか?
ruby インタプリタはBOM付きUTF-8も扱えるよ。
動かなくなるのはインタプリタを起動する前の段階、
#!行を解釈するシェル側の問題なので、rubyの問題ではないよ。
444デフォルトの名無しさん:2006/03/23(木) 14:09:01
FedoraCore5でインストールパッケージ選択の際
Rubyだけが独立したカテゴリになってるな。
gccもperlもpythonもhaskellも同一カテゴリなのに。
その割には標準でoffになってるしわけわからん。
445デフォルトの名無しさん:2006/03/23(木) 14:13:09
むしろ FedoraCore がわけわからん。
446デフォルトの名無しさん:2006/03/23(木) 14:16:58
>>444
隔離されてることに気付け。
447デフォルトの名無しさん:2006/03/23(木) 14:20:07
ということにしたいのですね :)
448デフォルトの名無しさん:2006/03/23(木) 14:58:00
void ktkr
449デフォルトの名無しさん:2006/03/23(木) 15:58:56
Rakeがやたら面倒そうだったんで
もう少しシンプルな自分用ruby make作ってるんだけど
こういうのって需要ある?

require 'rubymake'
include RubyMake

TARGETS['application.exe'] = Target.new(''application.exr'){
 `exerb.exe -v 'application.exr`
}
TARGETS[''application.exr'] = Target.new('*.rb'){
 `ruby.exe -r exerb/mkexr 'application.rb`
}
TARGETS['*.rb'] = Target.new

RubyMake.operate('application.exe')
450449:2006/03/23(木) 16:00:34
ところどころに余分なクォートが入ってるのはミスなので忘れてください
451デフォルトの名無しさん:2006/03/23(木) 16:32:00
残念ながら、その程度ならRakeの方がてっとり早くて便利そう。
452デフォルトの名無しさん:2006/03/23(木) 16:36:52
>こういうのって需要ある?
それなりに使い込んで至れり尽くせりな機能が揃っていて
なおかつドキュメントがちゃんとしてればあると思う。
453デフォルトの名無しさん:2006/03/23(木) 17:31:53
至れり尽くせりな機能……難しい
454デフォルトの名無しさん:2006/03/23(木) 18:41:10
evalではファイル名と行番号を指定できますが、procでも指定できたりしませんか?
Proc#filename=, Proc#linenum= とかあるとうれしいんですけど。
455デフォルトの名無しさん:2006/03/23(木) 18:49:40
自己レス
>>454
eval "proc { ... } ", filename, linenum
でできますね。
456デフォルトの名無しさん:2006/03/23(木) 21:20:49
Rakeと大差ないなあ。
無理に記述はrubyプログラムにしない方がいいような気がする。
rubyでパースして実行すればいいじゃん程度で十分。
Makefile形式も読めて、RDocっぽい記述程度をネタとしては考えている。


仕様が練り上がってないけどイメージとしてはこんな感じ。
#!/usr/local/bin/ruby-make
target = [test1.rb, test2.rb]
prefix = /usr/local/
all: target
test: exec(target, -test)
install: install(target, 'bin', {:own => 'root:wheel', :mode => 0755})

#!/usr/local/bin/ruby-make
:suffixes: .java, .class
target = test1
all: target + '.class'
exec("java", target)
run: target + '.class'
exec(appletviewer, target + '.html')
clean:
rm_rf('*' + '.class')
:suffixe: .java: .class:
exec("javac", "-deprecation", :depend:)

457どないでしょう?:2006/03/24(金) 10:19:38
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=FAQ%3A%3A%A5%AF%A5%E9%A5%B9%A1%A2%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB#a6.2e11.20load.a4.c8require.a4.cf.a4.c9.a4.a6.b0.e3.a4.a4.a4.de.a4.b9.a4.ab

6.11 loadとrequireはどう違いますか

loadはRubyで書かれたソース(*.rb)のみロードします。

requireは*.oファイルもロードします。さらに一度 requireしたファイルは2度requireしてもロードしません。

ロードパスも違います。



loadはRubyで書かれたソースのみロードします。ただし拡張子は自由に指定できます。

requireは*.soファイルもロードします。ただし、拡張子が.so, .rbのもののみロードできます。さらに一度 requireしたファイルは2度requireしてもロードしません。

ロードパスも違います。
458デフォルトの名無しさん:2006/03/24(金) 10:42:21
>457
なぜここに書くのかはよくわからないが、そうするなら原文を気にしないで
詳しく解説した方がいいと思う。


6.11 load と require はどう違いますか

どちらも指定した Ruby プログラムを読み込むという点では似ています。しか
し、 load が指定したファイルを Ruby プログラムとして読み込むのに利用す
るのに対し、 require では拡張ライブラリの読み込みが可能で、拡張子が so
や rb のもののみを探索します。また require では拡張子を省略できますし、
一度読み込んだファイルは二度と読み込まないようになっています。 load は
指定すれば何度でも読み込みます。

したがって、 require はライブラリのロードに利用し、 load は設定ファイ
ルの読み込みなどに使うのが一般的です。また、両者はファイルのサーチパス
も異なります。


とか。
459デフォルトの名無しさん:2006/03/24(金) 12:18:52
>両者はファイルのサーチパスも異なります。

どうちがうのかも解説した方がいいんじゃまいか。
460デフォルトの名無しさん:2006/03/24(金) 13:03:05
>>459
組み込み関数のところに書いてあるよ、たぶん。
リンクすりゃいいよきっと。
461デフォルトの名無しさん:2006/03/24(金) 13:15:38
まあ、ここで議論する暇があったら、さっさと編集すりゃいいと思うよ。
462458:2006/03/24(金) 14:47:18
んじゃ書いてみたよ
463デフォルトの名無しさん:2006/03/24(金) 14:59:12
サーチパスってどう異なるの?具体的におながいします。
464デフォルトの名無しさん:2006/03/24(金) 15:39:30
loadだとライブラリを検索してくれないのかな?と思ったけど

load 'yaml.rb'

が正常に実行されることを見ると、そうでもないらしい
465デフォルトの名無しさん:2006/03/24(金) 15:54:58
つーかloadに第二引数があったんだな
初めて知った
466デフォルトの名無しさん:2006/03/24(金) 23:30:20
>458
GJ
467デフォルトの名無しさん:2006/03/25(土) 00:21:33
良スレあげ
468458:2006/03/25(土) 00:34:54
>463
require は $: しか見ない。
load は指定したファイルが絶対パスのときは $: を見ない。相対パスのときは $: を見る。

いちおう load にも require にもリンクしてるし、リンク先を見れば一目瞭
然なのでいちいち書くほどでもない気がする。
469デフォルトの名無しさん:2006/03/26(日) 10:27:31
Module#define_method で、特異メソッドを定義するにはどうしたらいいですか。
やりたいことは、Procオブジェクトを使って特異メソッドを定義することです。
470デフォルトの名無しさん:2006/03/26(日) 11:54:51
>469
こういうこと?

module DefineSingletonMethod
private
def define_singleton_method(name, &block)
(class << self; self; end).__send__(:define_method, name, &block)
end
end

module M
extend DefineSingletonMethod
define_singleton_method(:f){|*a| [self, a]}
end

p M.f(1,2) #=> [M, [1,2]]
471469:2006/03/26(日) 13:48:36
>>470
やりたいのは、モジュールの特異メソッドではなくて、インスタンスの特異メソッドです。
イメージとしてはこんな感じ。
class Foo
 def initialize(name, &block)
  define_singleton_method(name, &block)
 end
end

obj1 = Foo.new(:f) { |arg| puts "<#{arg}>" }
obj1.f(10) #=> <1>
obj2 = Foo.new(:f) { |arg| puts "`#{arg}'" }
obj2.f(10) #=> `1'
472デフォルトの名無しさん:2006/03/26(日) 14:07:48
それなら同じだよ
モジュールも Module のインスタンスなんだもん
>470 の DefineSingletonMethod の定義を読んでちょ

class Foo
def initialize(name, &block)
extend DefineSingletonMethod
define_singleton_method(name, &block)
end
end
473デフォルトの名無しさん:2006/03/26(日) 14:14:08
いちいち extent することもないね

class Foo
  include DefineSingletonMethod
  def initialize(name, &block)
    define_singleton_method(name, &block)
  end
end
474469:2006/03/26(日) 15:01:10
どうもありがとうございます。やってみたらできました。

(class << self; self; end) で返されるのは、そのインスタンスオブジェクトの特異クラスということでしょうか。これがよくわからなかったので。
またそうだとして、インスタンスオブジェクトの特異クラスを取得する方法というのは、この方法しかないんでしょうか。なんかもっとスマートな方法があってもいいような気がするんですが。

あと、Ruby1.9からは Object#__send__ でもprivateメソッドは実行できないということらしいですが、その場合はinstance_evalを使って
(class << self; self; end).instance_eval "define_method(name, &block)"
ということでよろしいでしょうか。
475デフォルトの名無しさん:2006/03/26(日) 15:52:01
そうそう、その self は特異クラス。正統なとり方は知らない。
本来見えちゃいけないものだからキレイな方法はないんじゃない?

instance_eval で普通に文字列を渡すと name, &block が渡らない気がする。
1.9でもいけるマシな方法はあるのかな。eval を使えば出来るのは分かるんだが。

module DefineSingletonMethod
  private
  def define_singleton_method(name, &block)
    (class << self; self; end).instance_eval{
      eval("define_method(name, &block)", binding)
    }
  end
end
476デフォルトの名無しさん:2006/03/26(日) 16:22:17
module DefineSingletonMethod
  private
  def define_singleton_method(name, &block)
    (class << self; self; end).instance_eval{
      define_method(name, &block)
    }
  end
end
477デフォルトの名無しさん:2006/03/26(日) 16:24:07
pukipaってどっから落とすの?
あの添削版が最新版?
478469:2006/03/26(日) 18:19:18
>>475
どうもありがとうございます。
>instance_eval で普通に文字列を渡すと name, &block が渡らない気がする。
Ruby1.8.4で試したところ、うまくいくようです。

>>476
なるほど、instance_evalはブロッックをとれるんですね。すげー参考になりました。
479デフォルトの名無しさん:2006/03/26(日) 18:33:13
〜.rbのファイル名からインスタンスを生成する方法ってありますか?
480デフォルトの名無しさん:2006/03/26(日) 18:36:13
>479何クラスのインスタンス?
481デフォルトの名無しさん:2006/03/26(日) 18:39:12
eval("#{File.basename($0).gsub(/(\..*?$)/, "")}.new")
482デフォルトの名無しさん:2006/03/26(日) 18:46:08
>>481
これってhoge.rbからhoge.newを行うだけですよね。

>>480
hoge.rbにHogeクラスが定義されてた場合に
hoge.rbのファイル名からHogeのインスタンスを生成したいんです。
483デフォルトの名無しさん:2006/03/26(日) 18:58:52
んなもん、テキスト検索して
class Hoge
がマッチしたらrequireだかloadしてeval "Hoge.new"すればいい
484デフォルトの名無しさん:2006/03/26(日) 19:06:41
ヒント: const_get

つうかつい最近そういう記事見たぞ。はやってんのか?
ttp://www.devsource.com/article2/0,1895,1928561,00.asp
485デフォルトの名無しさん:2006/03/26(日) 19:56:32
const_getで思い出したが、クラス名からクラスを得るAPIが無いんだよな。未だに。
486デフォルトの名無しさん:2006/03/26(日) 20:08:24
>>485
あんまり使うものでもないだろうし
どういう仕様にするか揉めそう
Classに限定するのかとか
スコープはどこなのかと
:: は許すのかとか
487デフォルトの名無しさん:2006/03/26(日) 20:29:23
「ない」から使わないだけで、あればそれなりに使うんじゃ?
自ら実装したこともあるし、そういう質問を見たこともあるし。

仕様としては、eval("Foo::Bar") == class_get("Foo::Bar")になってほしい。
これがあらゆる意味で自然だし、議論の余地はないと思うのだが。
488デフォルトの名無しさん:2006/03/26(日) 20:55:38
そんなことはまつもとに言えよとしかいいようがないな・・・
489デフォルトの名無しさん:2006/03/26(日) 21:11:47
const_getの質問は前スレで出たんだっけか
490デフォルトの名無しさん:2006/03/26(日) 21:34:06
eval("Foo::Bar") では何故ダメの?
491デフォルトの名無しさん:2006/03/26(日) 21:52:56
-T1 ですら動かないからなんではないかと邪推
492490:2006/03/26(日) 22:49:32
class_get("Foo::Bar") だって -T1 で動かなくなる (する) んじゃないかと邪推するんだけど・・・
493デフォルトの名無しさん:2006/03/26(日) 23:10:12
eval("Foo::Bar")は遅いし、意図がつかみにくいし、何よりダサいでしょ。

> -T
const_get("Foo")は-T4でも動くんだから、const_get("Foo::Bar")だって動かない道理が無いよ。
494デフォルトの名無しさん:2006/03/26(日) 23:51:31
> eval("Foo::Bar")は遅い
その遅さがボトルネックになるほど頻繁に呼ぶようなケースがあれば教えて。

> 意図がつかみにくいし、何よりダサい
それは主観ですよね。「私はそうは思わない」んですが。

> const_get("Foo")は-T4でも動くんだから、
え?
495HSPスレからきますた:2006/03/26(日) 23:58:44
Ruby on HSPはまだですか?
もっとGUIとか使いやすくしてください
JAVAの方がまだ遊べます
と言うわけで

        ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・)<  Ruby on HSPマダーーー
             \_/⊂ ⊂_)_ \__________
           / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
        |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
        |           .|/
496デフォルトの名無しさん:2006/03/26(日) 23:59:47
>>495
馬鹿をさらしに来たのですね?
497デフォルトの名無しさん:2006/03/27(月) 00:01:07
Rubyのマニュアルそんなに悪くねーじゃんと思ってたんだけど、
今日zlibを調べようとしたら、「詳しくはzlib.hを見てください」って説明が多い・・・。
確かにひどいのかもしれないなあ。
498デフォルトの名無しさん:2006/03/27(月) 00:02:21
プラットフォームに依存してない言語で
依存する機能を求めるのはどうかと思うw
JRuby使えばいいんじゃないかな
499デフォルトの名無しさん:2006/03/27(月) 00:06:25
>494
つまらない用事でいちいちeval()したくない、と思ってるのって俺だけ?
そりゃまぁ、確かにRubyスクリプトで速度を語るのはナンセンスだけどさ。

ダサい云々はともかく、ではeval("Foo::Bar")とconst_get("Foo::Bar")(またはclass_get)と、
どちらが意図がつかみやすい?
これがどちらも同じように見えるというのなら、確かに単に主観としか言えないね。

-T4については、聞き返すよりもまずやってみたら?
っていうかどうみても煽りです。本当に(ry
500デフォルトの名無しさん:2006/03/27(月) 00:09:34
YARVが解決することをいつまでも蒸し返さない
501デフォルトの名無しさん:2006/03/27(月) 00:10:33
>498
×プラットフォームに依存してない言語で
○Unix環境中心の言語で



502デフォルトの名無しさん:2006/03/27(月) 00:15:27
>>499
「意図がつかみにくい」件については、
const_get があれば class_get とか module_get とかの alias 的なメソッドは
要らないんじゃないかということです。

-T4 については、やってみて eval と const_get が同じになりましたよ。
503デフォルトの名無しさん:2006/03/27(月) 00:19:43
>>495
そんなあなたにApolloがお勧め
504デフォルトの名無しさん:2006/03/27(月) 00:24:46
>>502
一体どんなRubyを使ってんだよw
505デフォルトの名無しさん:2006/03/27(月) 00:35:23
こんなスレでぐだぐだやるよりも
http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
ここの6.15を見た上でMLなりなんなりでまつもとに聞いたほうが話が早いと思う
506デフォルトの名無しさん:2006/03/27(月) 00:39:03
>>502
class_get/module_getが必要とは思ってないよ。
と思ってレス見返したらclass_get()を最初に言い出したのは俺だった。それについてはスマソ。

要望としては、const_get()が'::'を受け付けるようになってくれればそれで満足。
エイリアスやタイプチェックはいらない。

セキュリティについては手元で再度試みたらよくわからなくなってきた。
ただ、const_get()は単に「定数参照」でしかないので、セキュリティ面でeval()と比較すること自体ナンセンスなのは確かでしょ。

507デフォルトの名無しさん:2006/03/27(月) 00:45:26
>>505
どっかで見た気がしてたが、本家のFAQだったか。

…なんで必要性を認識しつつも実装してないんだろう。不思議だ。
508デフォルトの名無しさん:2006/03/27(月) 00:47:27
>>507
だからまつもとに(ry
509デフォルトの名無しさん:2006/03/27(月) 00:51:11
使うことをお薦めしないから使いにくくしているんじゃない?
理由は知らんけど。
510デフォルトの名無しさん:2006/03/27(月) 00:56:11
>>503
WindowsだけならVisualuRubyでいいじゃない?
Delphiもいまさら…

>>507
日本語で質問出来るんだし逝ってこい
511デフォルトの名無しさん:2006/03/27(月) 00:59:17
そもそも名前は class_get なのかな。
module_get じゃなくて。
module_get だと Class も含むのかな。
512デフォルトの名無しさん:2006/03/27(月) 01:08:42
>>511
いや、だから const_get でいいじゃーん、という話に収束してきているわけで
513デフォルトの名無しさん:2006/03/27(月) 02:02:09
>>494
http://pc8.2ch.net/test/read.cgi/linux/1141465277/334
なんか、これを思い出して笑ってしまった。

>>497
この間、FileUtils の options の説明が無く、曖昧でちょっと詰った。
ソース読めば解決するのだけど。
File クラスにコピーが無いので、
大抵 FileUtils を require するハメになるな。
514デフォルトの名無しさん:2006/03/27(月) 08:06:47
>>495
勝手に組み合わせて使えばいいじゃない。HSPからRubyスクリプトの実行結果を
取得できないこともないんだから。
515469:2006/03/27(月) 08:24:50
>>478
なんか、結局おれのやりたかったことは、わざわざブロックから特異メソッドをつくるまでもなく、
instance_evalにブロックをわたせば済んでしまいました。

やりたかったことは、Procのselfがmainになってしまうので、これを別のオブジェクトにすることでした。
マニュアルを探しているとModule#define_methodがブロックを引数にとれるので、これで妥協しようとしてたけど、instance_evalにブロック渡すほうが直接の解でした。

あらためて>>476 ありがとうございました。
516デフォルトの名無しさん:2006/03/27(月) 10:01:16
Procというかブロック渡しはそういうものというか
呼び出し側のバインディングで処理が書けるのが嬉しいのだと思われ

instance_eval は自制しないと分からなくなりがちなので
おれなら第一ブロック引数がselfをとるようにしちゃう
517デフォルトの名無しさん:2006/03/27(月) 10:37:56
>>516
kwsk
518デフォルトの名無しさん:2006/03/27(月) 13:51:55
>>497
Zlib に関しては、
http://www.ruby-lang.org/ja/man/?cmd=view;name=zlib
とそこからリンクされているページに詳しく載っている。
519デフォルトの名無しさん:2006/03/27(月) 17:07:07
evalを評価するときだけインタプリタを使う。
というのはさすがに富豪すぎますな。

とりあえずevalのコンパイル結果が再利用出来るようになっていれば、
なんとかなるんでないかと思いますが。


520デフォルトの名無しさん:2006/03/27(月) 19:41:41
>>495
どんなの創造してる?
もっと詳しく

Ruby on DirectXとか作ったら需要ありそうなんだけどね
521デフォルトの名無しさん:2006/03/27(月) 19:48:09
処理速度考えるとあんまなさそうな。
Ruby.NETでManaged DirectXできるしそっちのが先だな。
522デフォルトの名無しさん:2006/03/27(月) 20:12:40
>>495,520
Rubyの人は言語には興味有るけど、それ以外には興味がない
HSPの人があまり言語に興味が無いのと逆かw
Rubyの不得意な分野=HSPの得意な分野だよな
と言うわけで

        ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・)<  便利ライブラリマダーーー
             \_/⊂ ⊂_)_ \__________
           / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
        |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
        |           .|/
523デフォルトの名無しさん:2006/03/27(月) 20:25:14
GUIライブラリなら色々あるんじゃないの?
RubyでGUIプログラミングって相性よくなさそうなので使ったことないけど。
524デフォルトの名無しさん:2006/03/27(月) 20:31:16
RubyのGUIライブラリってオプソの典型的なリソース分散のドツボに陥ってるよな。
525デフォルトの名無しさん:2006/03/27(月) 20:37:25
Ruby に限らず GUI ライブラリは開発が分散しすぎ。
どれも中途半端だから「じゃ俺が作る」と作り始めて
そもれも中途半端だから別の人が「じゃ俺が作る」の繰り返し。
526デフォルトの名無しさん:2006/03/27(月) 20:42:25
DBのインターフェイスとして「a>=13&b<=5&(c=100|d=200|(e<=40))|(a<30&a>=2)」みたいなのをパースしてDBを検索したいのですが
上手い方法が思いつきません。正規表現で最内の括弧だけマッチさせられないかやってみましたが出来ませんでした
何か良い処理方法、ライブラリ等あったら教えて下さい
527デフォルトの名無しさん:2006/03/27(月) 21:02:56
>正規表現で最内の括弧だけマッチさせられないかやってみましたが出来ませんでした
たぶんできるよ。kwsk
528デフォルトの名無しさん:2006/03/27(月) 21:19:51
>>526
正規表現じゃムリじゃないだろうか。Racc使ってパーサ作るのがまっとうな方法だと思う。
529デフォルトの名無しさん:2006/03/27(月) 21:20:45
/\([^()]*\)/
530デフォルトの名無しさん:2006/03/27(月) 21:22:00
>>523
どの辺が相性悪い?
俺はMacのXcode+InterfaceBuilderがお気に入りだが
あれは言語の相性より開発環境だと思う
言語自体が不適ってあるかな?
531デフォルトの名無しさん:2006/03/27(月) 21:28:16
相性悪いって言うか論外だな。
GUIしたいと思ったらRubyは選択肢には上らない。
言語が悪いとか悪くないとかどうでもいい。
532デフォルトの名無しさん:2006/03/27(月) 22:28:33
>>531
理由は全く理解できないが
選択肢にないというのなら仕方ないな

ちなみに俺は5年ぐらい前にHSPを触ってたが
GUIに関してもやっぱりRubyのほうが上だと感じてしまう
何だかんだ言ってもApolloは強い
533デフォルトの名無しさん:2006/03/27(月) 22:33:10
たぶん、ポトペタの IDE 前提の話をしてるんだろ。
>>530 の言う通り、環境の話をゴッチャにしてる無知様の言として流すのが吉かと。
534526:2006/03/27(月) 22:47:14
>>529
マッチできました。更に粘ってみます
535デフォルトの名無しさん:2006/03/27(月) 22:59:24
>>530

>俺はMacのXcode+InterfaceBuilderがお気に入りだが

わかるー。あれ、GUI作成に関しては最強の開発環境だよね。
HTML書くより簡単にGUI作れるんだもん。
あれをみると、JavaのSwingとかEclipseとか「なにやってるんだろ」と思ってしまう。

>あれは言語の相性より開発環境だと思う
>言語自体が不適ってあるかな?

たぶん環境も含めて言語といっているのでは?
そう考えると、最初からGUIライブラリがバンドルされているHSPやJavaは有利。
Rubyは自分でGUIライブラリインストールしなきゃいけない時点でやっぱ負けだよ、GUIに関しては。Ruby/TkはバインディングだけでTkが必要だし。
これはもう言語仕様とは関係ない話だけど、でも使う側からみたら大きな問題だと思うよ。

>>524,525
はげしく同意。決定版がないんだよね。XULRunnerが使えればいいんだけど。
536デフォルトの名無しさん:2006/03/27(月) 23:02:09
>>535
> SwingとかEclipseとか
なんか物凄い勢いで間違ってると思う
537デフォルトの名無しさん:2006/03/27(月) 23:35:34
>>536
なんで?GUIフレームワークとしてSwingを、開発環境としてEclipseを挙げただけなんだけど。
それとも「InterfaceBuilderに対応するならVisualEditorかMatisseだろ」ということ?
538デフォルトの名無しさん:2006/03/28(火) 00:00:31
> たぶん環境も含めて言語といっているのでは?
言いたいことは察っするが、それ、変だから。

> Rubyは自分でGUIライブラリインストールしなきゃいけない時点でやっぱ負けだよ
"お前にとって" "お前の中だけ" で負けなだけでしょ。
何でもかんでも載せりゃあ良いってものじゃないし、嬉しくない人も居る訳で。

本命は wxRuby?
539デフォルトの名無しさん:2006/03/28(火) 00:10:20
UNIX周りの本命は未来永劫なさそうな飢餓
WinはVS.NETで吐いたAvalonなXML食わせればそれでおしまい。





とかわけもわからず言ってみる。
540デフォルトの名無しさん:2006/03/28(火) 00:48:41
puts obj.to_s # objを文字列形式に変換
obj.to_s = "objの内容を文字列形式で指定"

こういうインターフェースってキモいですか?
他に一般的な名前あったら教えてください。
541デフォルトの名無しさん:2006/03/28(火) 00:52:53
>>540
前者はいいが、後者がキモい。
そんな風に指定できてしまったら、実際のobjの内容と乖離してしまいかねないと思わないか?
単に「入れもの」が欲しいなら、attr_accessor あたりを使うべし。
542デフォルトの名無しさん:2006/03/28(火) 00:57:06
文字列を放り込む時のインターフェースは
どういうのがいいのかという話で
そのこと自体の是非はとりあえずおいといてください。
543デフォルトの名無しさん:2006/03/28(火) 01:02:27
>>534
正規表現だけで括弧の入れ子を解析することが出来ないことを知っててやってるなら
まあがんばれ。
544デフォルトの名無しさん:2006/03/28(火) 01:09:08
>>542
だから attr_accessor とか attt_writer とか。

>>543
べつに解析なんてしなくても、全ての括弧をSQL的に置換できればいいんだし。
gsubじゃなくて、subあたりで地道にループさせていけばOK.
545デフォルトの名無しさん:2006/03/28(火) 01:20:51
いぜん、全く同じ目的の、そういう実装のコードを引き継いだことがあるんだけど、
バグがあった上に sql injection 回避するのがめんどくさくて、racc で書き直した。
まさに racc 向きだと思ったよ。
546デフォルトの名無しさん:2006/03/28(火) 01:28:33
>>540
漏れなら Obj#description あたりにする。
547デフォルトの名無しさん:2006/03/28(火) 01:29:50
>540
つMarshal
548デフォルトの名無しさん:2006/03/28(火) 02:53:47
>>530
GCがMark and Sweepなのがちょっといや。
CUIだとそうでもないんだけど、GUIだといきなり固まるとイライラする。
549デフォルトの名無しさん:2006/03/28(火) 03:19:58
>>540

Obj#to_xml=

とか言ってみる
550デフォルトの名無しさん:2006/03/28(火) 07:08:48
>>540
YAML
551デフォルトの名無しさん:2006/03/28(火) 07:09:39
問題はtoという一方向性を表す前置詞にあって
to_xmlにしたからといって問題は解決しないと思う

>>540
というわけで、toを使うのはキモい
obj#str=(value) とか
obj#set_str(value) みたいなインターフェースがいいと思う
552デフォルトの名無しさん:2006/03/28(火) 07:15:46
> obj.to_s = "objの内容を文字列形式で指定"

と書かれると、(独自形式の)文字列を元にオブジェクトを生成したいのかなと思ってしまうのだが。
そうだとすると俺ならクラスメソッドにしてこんな感じかな。
ObjClass.load_from_hogehoge(str) # hogehoge は何か形式の名前
553デフォルトの名無しさん:2006/03/28(火) 08:26:44
独自形式を YAML に変えて取り込めば良いんでないかい?
554デフォルトの名無しさん:2006/03/28(火) 08:35:10
逆変換可能ならasでいいんじゃないかな
555デフォルトの名無しさん:2006/03/28(火) 09:52:37
>>543
正規表現というのがチョムスキーのタイプ3を指しているならその通りだが、
最近の言語の正規表現は拡張されているからどうだろうね。
perlならできるはず。rubyはしらない。
556デフォルトの名無しさん:2006/03/28(火) 10:38:18
>>555
へー。
$s =~ /\A[\(\)]*\z/ が成り立ってるとして、
括弧のバランスがとれてる時だけ $s にマッチする正規表現はPerlでどうかくの?
557デフォルトの名無しさん:2006/03/28(火) 11:04:26
>>542
インターフェイスというか名前だけの話なら、export, import じゃまいか。
558デフォルトの名無しさん:2006/03/28(火) 12:09:52
マカってアフォだな。
JavaのGUI開発ツールを使ってない悪寒。
むしろ、IBが無いと何も出来ない方が痛いけどね。
独自のウィンドウ生成とか、IBの範囲外は手も足も出ない。


YAMLベースに独自形式も扱えるようにしちゃえば、YAML同様に扱えるよ。
わざわざYAMLを使う必要も無い。書式変だし。
559デフォルトの名無しさん:2006/03/28(火) 12:15:55
>>558
本気でいってるの?
560デフォルトの名無しさん:2006/03/28(火) 12:19:21
>>558 の言ってることが理解できてる >>559 はすごいと思った。
561デフォルトの名無しさん:2006/03/28(火) 13:44:01
>>556
あくまでPerlでは、の話だけど、postponedな正規表現を使う(試験実装中)。
ttp://www.din.or.jp/~ohzaki/regex.htm#GetNestedParen
ttp://search.cpan.org/~nwclark/perl-5.8.8/pod/perlre.pod#Extended_Patterns ( (??~)の項 )
$openclose = qr/\([^()]*(?:(??{$openclose})[^()]*)*\)/;
$s =~ /^$openclose*$/;
562デフォルトの名無しさん:2006/03/28(火) 14:40:33
ぐは、循環的な定義が出来るのか。
ちょっと大きな文字列を試したらすぐにスタック使い果たしたりしないんだろうか。
うーむ、なんか羨ましいから鬼車でもゼヒ。
563デフォルトの名無しさん:2006/03/28(火) 17:40:44
>>558
>マカってアフォだな。
>JavaのGUI開発ツールを使ってない悪寒。

Javaユーザってアフォだよな。
Eclipseしか知らないで、IBもVBもDelphiも触ったことない悪寒。


>むしろ、IBが無いと何も出来ない方が痛いけどね。

むしろ、IBがあれば他に何もいらないけどね。


>独自のウィンドウ生成とか、IBの範囲外は手も足も出ない。

カスタムクラスつくってIBに登録するだけだよね。何がどうできないのか詳しく。


>YAMLベースに独自形式も扱えるようにしちゃえば、YAML同様に扱えるよ。
>わざわざYAMLを使う必要も無い。書式変だし。

ようやくRubyの話になったっぽいけど、なんの話?
564デフォルトの名無しさん:2006/03/28(火) 17:41:24
>>563
ごめん、「Javaユーザ」じゃなくて「558」にしといて。
正直すまんかった。
565デフォルトの名無しさん:2006/03/28(火) 17:58:33
>>555
たしか、Perl6では正規表現という名前をやめたんじゃなかったっけ?
拡張しすぎて、本来の正規表現の能力を大幅に越えてしまったからだとかなんとか。
566デフォルトの名無しさん:2006/03/28(火) 18:15:07
Perl6 の話をすると鬼が笑う
567デフォルトの名無しさん:2006/03/28(火) 18:16:55
regexって統一仕様ってあるの?
568デフォルトの名無しさん:2006/03/28(火) 18:35:34
仕様とかじゃなくて数学的な定義があるんだよ。
でもまあ、後方参照マッチがある時点で既に正規表現から逸脱しているから、
そこのところは気にしすぎても仕方ないという話はある。
569デフォルトの名無しさん:2006/03/28(火) 18:42:09
やべえ
どうしても拡張性器表現って書き込みたくなった

許してもらえるとは思ってない
みんなにはそれでも謝っておきたい
570デフォルトの名無しさん:2006/03/28(火) 18:44:12
>>567
一応 POSIX というのはある。

数学的な定義としては「正則表現」って名前の方が適切なのかな。
Wikipediaから引用すると、
アルファベット A={a_1,...,a_n} 上の正規表現とは
1. 空記号列 ε は正規表現である
2. a_i(Aの任意の要素)は正規表現である
3. X と Y が正規表現ならば、
1. X|Y も正規表現である
2. XY も正規表現である
3. {X} も正規表現である
だって。後方参照マッチが逸脱してるってのはどれにひっかかってるんだろう?
571デフォルトの名無しさん:2006/03/28(火) 19:48:58
つ【Nerodeの定理】
572デフォルトの名無しさん:2006/03/28(火) 19:57:01
>>570
たぶんその定義の一番下は
3. {X}* も正規表現である
かな?(クリーネスターってやつ)

全ての正規言語は>>570の正規表現を組み合わせるだけで必ず表現できるけど、後方参照マッチとかが入るとその正規表現をどう組み合わせても表現できない。
後方参照マッチする言語は「正規言語ではない」なんていう言い方をする。(文脈自由言語ではあるけど)
>>568の言う「逸脱してる」ってのはそういう意味じゃないかな。
573デフォルトの名無しさん:2006/03/28(火) 20:43:47
証明キボン
574デフォルトの名無しさん:2006/03/28(火) 20:55:38

575デフォルトの名無しさん:2006/03/28(火) 22:29:44
誤解する人がいるといけないけど、後方参照があることが問題なんじゃなくて、
後方参照マッチね。たとえば Ruby では、
/([^,]*),\1/
とか書けるが、これは正則言語ではないですよということ。

570は正則表現の正しい定義だが、なぜ違うかというのは、そのどれかにひっ
かかるからダメとかいうシンプルな理由じゃないよ。
証明がほしけりゃ反復補題で調べれ。
576デフォルトの名無しさん:2006/03/28(火) 23:10:25
そうなの? 例えば "a"*(n**2) とか "a"*n + "b"*n あたりがポンプ出来ない例として
よく紹介されてるけどこういう文字列は \1 使えばちょうどマッチできるの?
pumping lemma は必要条件だから backreference でちょうどマッチできて
pump 出来ない例を持ってこないと駄目じゃね?
577デフォルトの名無しさん:2006/03/28(火) 23:50:40
正直すまんかった。
確かに w,w (w ∈ Σ-{,}) はポンプ出来んから正則じゃないな。サンクス
現実の処理系では |w| < ∃n だから実際は正則。
578デフォルトの名無しさん:2006/03/29(水) 01:36:21
張っとく

Ruby初心者スレッドPart5
http://pc8.2ch.net/test/read.cgi/tech/1143403165/l50
579デフォルトの名無しさん:2006/03/29(水) 08:31:29
正規表現がリテラルにあるように、BNFがリテラルとして使えたら便利だと思わないか?
580デフォルトの名無しさん:2006/03/29(水) 09:59:20
% 記法が拡張できるようになればあるいは
581デフォルトの名無しさん:2006/03/29(水) 10:10:35
C++のboost::spiritみたいに演算子オーバーロードで頑張ってみるとか
582デフォルトの名無しさん:2006/03/29(水) 10:24:44
>>579
イメージがまったくわかないんだけど、なにかサンプルあげてもらえるとうれしい。
583デフォルトの名無しさん:2006/03/29(水) 12:26:53
rubygemsでインストールしたライブラリをautoloadで使うことはできますか?
例えば gem install hogehoge を実行して
require 'rubygems'
autoload :Hogehoge 'hogehoge'
とすると、
no such file to load -- hogehoge (LoadError)
というエラーになります。
もちろん
require 'rubygems'
require 'hogehoge'
はうまくいきます。

rubygemsはautoload未対応なんでしょうか。
584デフォルトの名無しさん:2006/03/29(水) 12:28:52
Appoloインストーラの関連付けは凶悪だな。
Appolo追加してデフォルトの関連付けを変えるだけでいいのに
Editや他の操作もすべて消滅した・・・orz
585デフォルトの名無しさん:2006/03/29(水) 16:24:09
>>584
もしかして:Apollo

Tcl/TkみたいにRubyと言えばRuby/xxって言えるくらいのがあればね
Railsだけじゃ、廃れるのも時間の(ry
586デフォルトの名無しさん:2006/03/29(水) 18:03:53
>>579
リテラルじゃないけど、
abnf - converter from ABNF to Regexp
ttp://cvs.m17n.org/~akr/abnf/
とゆーのがある。
587デフォルトの名無しさん:2006/03/29(水) 18:45:44
なんか GUI 厨が必死だな。
Ruby に GUI を期待してる奴の方が少ないと思うんだが。
気のせい?
588デフォルトの名無しさん:2006/03/29(水) 19:05:30
>>586
おもしろいかも。thx!
589デフォルトの名無しさん:2006/03/29(水) 19:56:16
>>587
いや、GUIは欲しいよ。
ブラウザも含めれば問題は減るけど。
処理に時間が掛かるようなスクリプトだとレンタルサーバのCGIで動かすのは無理だしな。

あとX?HTML吐くのとGUIコンポーネントをオブジェクトとして操作するのでは結構違いがある。
Railsだとスクリプト<->erubyの間で意識を切り換えなければいけないし。

まあリッチになったらなったで要望のハードルがあがって大変になることもあるだろうけど、ともかくGUIは欲しいと思う。
590デフォルトの名無しさん:2006/03/29(水) 20:33:05
>>589
はげどう。特にゲームつくりたいという人は多いぞ。
そんなときGUIに弱いRubyは負け組。せっかくいい言語なのにね。
なんでGUIを拒否するのかわからんけど、Rubyの活躍の場を広げることができるチャンスをわざわざ否定するやつがわからん。
591デフォルトの名無しさん:2006/03/29(水) 20:52:03
かといって、HSPがGUIに強いとは到底思えんが。

なにあのバッドノウハウの塊は。
592デフォルトの名無しさん:2006/03/29(水) 20:57:05
ゲームをスクリプト言語で作ろうってのがよくわからん
593デフォルトの名無しさん:2006/03/29(水) 21:20:45
> いや、GUIは欲しいよ。
> ブラウザも含めれば問題は減るけど。
> 処理に時間が掛かるようなスクリプトだとレンタルサーバのCGIで動かすのは無理だしな。

よくわからんのだが、レンタルサーバのcgiと手元のGUIとどういうつながりが?
CGIを通じてdRubyですか?w
594デフォルトの名無しさん:2006/03/29(水) 21:24:19
2行目と3行目の間に
「しかしローカルで鯖立ては面倒だし、」
を追加すればOK
595デフォルトの名無しさん:2006/03/29(水) 21:34:52
まーゲーム作るのにあえてRuby使おうとは思わんけどな
手軽に作るんだったらFlashとか使う

それでもRubyにも手軽に使えるGUIのスタンダードがあったら
あったにこしたことないけどな
596デフォルトの名無しさん:2006/03/29(水) 21:36:10
>>592
いやいや。今はデスクトップアプリもスクリプト言語で作る時代だぞ。w

ttp://www.sooey.com/journal/2006/02/01/90/
597デフォルトの名無しさん:2006/03/29(水) 22:00:02
3Dでマシンスペックが要求されるようなものならスクリプトは使わないけど
そうじゃないゲームはいっぱいある
テーブルゲーム シミュレーション RPG などなど
ロジック書くのが楽ならスクリプトもいいよ
598強制移転:2006/03/29(水) 22:00:41
152 名前:デフォルトの名無しさん[sage] 投稿日:2006/03/29(水) 20:28:11
>>148
>obj==nilがobj.nil?になったところで

違う、obj.equals? nil と等しいと考えないと

153 名前:デフォルトの名無しさん[sage] 投稿日:2006/03/29(水) 20:32:40
超秋田。

154 名前:デフォルトの名無しさん[sage] 投稿日:2006/03/29(水) 21:07:02
>>151
> 「○○がない理由」はあくまで「○○がない理由」であり、
> それがどうして「Object#nil?やArray#firstがある理由」の補強になるのでしょうか。
それは、
否定する根拠が再反論によって消滅したため、
 > いまのところ、すでに示された理由を否定する理由はありません。
となるからです。

あと、話が分からないときに比喩を使うのは、混乱の元ですからやめましょう。
> 「裏の裏は表」ということですか?今の場合は「右の右は後ろ」でしょう。
という文を、具体的な文にしましょう。

155 名前:デフォルトの名無しさん[sage] 投稿日:2006/03/29(水) 21:31:53
議論してる奴ら全員Ruby本スレに行け
ていうかそろそろ議論止めろ
156 名前:デフォルトの名無しさん[sage] 投稿日:2006/03/29(水) 21:43:53
本スレに湧かせないようにしてるのに何を言い出すか

157 名前:デフォルトの名無しさん[sage] 投稿日:2006/03/29(水) 21:57:03
だからここは初心者スレなんだってばww

こんなよくわかんない空気かもしだしてたら、質問したくてもしにくくなるんじゃない?
599デフォルトの名無しさん:2006/03/29(水) 22:33:29
まずは標準で使える文字入力ダイアログボックスを用意するんだ。
600デフォルトの名無しさん:2006/03/29(水) 23:10:11
ただGUIっつーても、WindowsなのかLinuxなのかで結構違う気がするんだけど。
601デフォルトの名無しさん:2006/03/29(水) 23:22:23
RubyCocoa でいいじゃん。

=終了=
602デフォルトの名無しさん:2006/03/30(木) 00:21:06
いやいや、そこでこれ
つRuby/SDL
603デフォルトの名無しさん:2006/03/30(木) 00:50:57
いやいや、そこでこれ
つCurses
604デフォルトの名無しさん:2006/03/30(木) 02:23:53
gameといえばBattleField2がPhythonで色々動かしている
みたいだよ。他にも描画以外の振る舞いはスクリプトの方が
効率良いんじゃないかねえ。
605デフォルトの名無しさん:2006/03/30(木) 09:45:28
gameといえばRGSSが(ry
606デフォルトの名無しさん:2006/03/30(木) 14:20:52
ゲームではなにかしらスクリプトとか使うから、最初からスクリプトだと楽かもわからんね
607デフォルトの名無しさん:2006/03/30(木) 14:21:25
何を言っているんだお前は
608デフォルトの名無しさん:2006/03/30(木) 19:19:46
5/22 に延期になっちゃったね (´・ω・`)
http://www.cbook24.com/bm_detail.asp?sku=4274066428

http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?&ISBN=4-274-06643-6
では「2006/04」だけども。

それと、オーム社のページには主要目次が掲載されたけど、
ライブラリ編が……。
609デフォルトの名無しさん:2006/03/30(木) 19:22:54
ああ、間違えた。
>>608 のオーム社へのリンクは
http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?&ISBN=4-274-06642-8
のつもりだった。
610デフォルトの名無しさん:2006/03/30(木) 19:34:22
> ライブラリ編が……。

ワッフルワッフル
611デフォルトの名無しさん:2006/03/30(木) 19:42:16
ブロックについて質問。

[翻訳]RubyについてJavaプログラマが知るべき10の事柄
http://d.hatena.ne.jp/brazil/20050816
>ブロックはオブジェクトではありません。
>しかし、そこに大差はありません。
>それを必要とする時までには、自動的にProcオブジェクトに変換されるからです。

ブロックはProcオブジェクトだとおもっていたんですが、違うの?

def foo(&block)
p block.class
end

foo() { 1 } #=> Proc

これは自動的にProcオブジェクトに変換された結果?
612デフォルトの名無しさん:2006/03/30(木) 20:25:21
rubyでゲーム作る理由は無いな。
むしろゲーム作るから、ゲーム作れる環境に合わせた言語を選ぶ方が正しい。
目的はあくまでゲームであってrubyじゃない。
613デフォルトの名無しさん:2006/03/30(木) 20:27:51
>611
&block で受け取る段階で Proc オブジェクトになったはず。
引数として受け取らず、 yeild でブロックを実行すれば Proc にはならない。
614デフォルトの名無しさん:2006/03/30(木) 22:16:17
>>612
Rubyを使うことによってゲームが作りやすくなるなら
Rubyでゲームを作る理由はあると思うよ
615デフォルトの名無しさん:2006/03/30(木) 23:22:35
>Rubyでゲーム
少々面倒だが組み込みRuby
616デフォルトの名無しさん:2006/03/30(木) 23:31:38
>>613
さんくす。
じゃあyieldで実行したとして、Procじゃなければ何なのでしょうか。
Blockクラスというのはないし。
617デフォルトの名無しさん:2006/03/30(木) 23:32:40
>Rubyでゲーム
コンパイラ作成競争
618デフォルトの名無しさん:2006/03/30(木) 23:44:30
Rubyでゲームだと現状の選択肢は

RGSS(RPGツクールXP)
Ruby/SDL
Ruby/OpenGL
Miyako(旧EGSR)

ぐらい?
619デフォルトの名無しさん:2006/03/30(木) 23:55:30
>>616
何でもねぇよ
620デフォルトの名無しさん:2006/03/31(金) 00:04:16
>>618
Ruby/DirectXって無かったっけ。
もしくは Apollo + Delphi用DirectXコンポーネント とか。
621デフォルトの名無しさん:2006/03/31(金) 01:12:12
>>616
block だね (Blockじゃなくて)。
622デフォルトの名無しさん:2006/03/31(金) 08:19:11
Confabulator とか Widget を Ruby で書けたらな
と思わなくもない

まぁだいぶ js にも慣れたけど
623デフォルトの名無しさん:2006/03/31(金) 09:03:17
>>622
JavaSrciptはJavaScriptで奥が深くておもしろいよね。
624デフォルトの名無しさん:2006/03/31(金) 10:38:31
Time で任意のタイムゾーン扱えるようにならないかな。
libc が utc と localtime しか扱えないからなのかな。
625デフォルトの名無しさん:2006/03/31(金) 10:59:41
>616
ブロックは「そういう言語構造」。if とか while がクラスやメソッドでないようなもん。
でも「オブジェクトとして扱いたければ自動的に Proc オブジェクトに変換
されるから気にする必要なし」ってのがもとの文章。
626デフォルトの名無しさん:2006/03/31(金) 11:40:03
PR第2版てピアソンじゃないんだ。まあ1版は誤植の嵐だったからな。
その方がいいのかも。今度は頼むよまじで。
627デフォルトの名無しさん:2006/03/31(金) 11:59:09
しかし「オブジェクトじゃないけどオブジェクトと考えて問題なし」って誤解を招きやすいとは思う。
「ブロックでさえもオブジェクトです」とでも書いたほうがより現実に近いし、誤解も招かないよなぁ。
628デフォルトの名無しさん:2006/03/31(金) 12:41:23
嘘じゃん。
629デフォルトの名無しさん:2006/03/31(金) 14:07:59
>>624
Windowsにzoneinfoがないからじゃなかった?
630デフォルトの名無しさん:2006/03/31(金) 14:10:34
>>626
でも翻訳者、監訳者は変わらないしなぁ。悪くなることはないだろうけど。
631デフォルトの名無しさん:2006/03/31(金) 16:00:18
>>629
全部自前で実装すればいいじゃない
632デフォルトの名無しさん:2006/03/31(金) 16:14:29
>>631
タイムゾーン情報のアップデートはどうすんの?
633デフォルトの名無しさん:2006/03/31(金) 16:29:05
混乱するからマニュアルでとある部分を隠しリンクにしろとか、
嘘書いた方がわかりやすいからそうしろとか、もうねw
634デフォルトの名無しさん:2006/03/31(金) 17:01:04
>>632
全部自前でアップデートすればいいじゃない
635デフォルトの名無しさん:2006/03/31(金) 17:07:37
>>634
つ[いいだしっぺ以下略]
636デフォルトの名無しさん:2006/03/31(金) 17:14:37
>>634
だれがどんなタイミングでどっから情報をとってきて?
637デフォルトの名無しさん:2006/03/31(金) 17:52:36
zoneinfo なくても Time::now.timezone = + 9 * 3600 とかでも良いんだけどな。
638デフォルトの名無しさん:2006/03/31(金) 18:23:04
>>637
んなもんなら、Time#+でいいんじゃないか。Timezoneとは話が別。
639616:2006/03/31(金) 18:55:18
>>619,621,625
ありがとう。そういうもんだと思うことにします。

>>627
同意。ifやwhileは制御構造だからオブジェクトとはならないけど、ブロックはオブジェクトとしたほうがすっきりする。
640デフォルトの名無しさん:2006/03/31(金) 23:28:14
>>638
それだと time.rb の Time#iso8601 や Time#rfc2822 が使えないですよね。
641デフォルトの名無しさん:2006/03/31(金) 23:41:43
>>639
直接MLに投稿すれば一発で解決するものを、何だって遠回りな手段を選ぶのか、
その思考回路からして理解できない。
642デフォルトの名無しさん:2006/03/31(金) 23:44:15
MLって面倒臭いと思うけどな。

わざわざsubscribeしないといけないし、
自分のメアドや名前晒してメール出さないといけないんだから。

2chで気軽に書き込めるのが楽でいいよ。
643デフォルトの名無しさん:2006/03/31(金) 23:50:36
2chは嘘が多い
644デフォルトの名無しさん:2006/03/32(土) 00:03:48
各々好きな方でやれ
いじょ
645デフォルトの名無しさん:2006/03/32(土) 00:48:52
>>640
意味不明。Timezoneとは関係ないだろ。
646デフォルトの名無しさん:2006/03/32(土) 01:02:56
>>643
しかし、マニュアルに嘘を書いてくれと言われてる今日この頃。
647デフォルトの名無しさん:2006/03/32(土) 08:35:49
>>646
ブロックのことか?
「よく見ようと思って目を凝らすと暗黙のうちにオブジェクトに変換され、結果的にオブジェクトにしか見えないモノ」をオブジェクトと書くのが「嘘」だと?
648デフォルトの名無しさん:2006/03/32(土) 09:30:35
>>647
Ruby レベルでいくら目を凝らしても真実は見えん。
C言語ソース嫁。
649デフォルトの名無しさん:2006/03/32(土) 11:15:12
>>647
それはどう考えてもウソだろ。

シングルトンメソッドがオブジェクト特異的だからって、プロトタイプベース言語と
同様にクラスでなく、オブジェクトに直接定義される…と書くのと同じくらいには。

648も言っとるが、疑問があったら、とにかくソース嫁。話はそれからだ。
650デフォルトの名無しさん:2006/03/32(土) 12:41:06
>>647
http://pc8.2ch.net/test/read.cgi/tech/1137927749/614
これも。
あと、よく考えてから発言してくれ。レスに困る。もしくは荒れる。

つか、ぱるま読破中、おもすぃれぇ
対談、rubyco の中の人だよ……
651デフォルトの名無しさん:2006/03/32(土) 13:09:08
>>648
来ました!何かあるとすぐ「インタプリタのソース嫁」!
これだからRubyistは嫌われるんだヴォケが。
652デフォルトの名無しさん:2006/03/32(土) 13:11:14
じゃあ「nil,true,false,Fixnum,Symbol等も全てオブジェクト」も嘘だな。
真実は「Rubyレベルではオブジェクトのように振舞うとある定数」だろ。
653デフォルトの名無しさん:2006/03/32(土) 13:41:24
つーかソースも読めんのに、プログラム言語使うのが無謀。
アプリケーションでも使っとれ。
654デフォルトの名無しさん:2006/03/32(土) 13:43:24
C言語書くときはコンパイラ自体とコンパイル後の機械語読めないといけないのか
655デフォルトの名無しさん:2006/03/32(土) 13:58:46
>>652
嘘じゃないよ。例えVALUEに埋め込まれていようが、オブジェクトはオブジェクトだ
656デフォルトの名無しさん:2006/03/32(土) 14:08:49
>>655
なるほど。
「オブジェクトのように見え、実際にオブジェクトとして扱えるモノ」をオブジェクトだというのは嘘で、
「オブジェクトのようなモノとして振舞うが、実際にはオブジェクトとしては扱えないモノ」をオブジェクトだというのは真実だと主張するわけだ。
657デフォルトの名無しさん:2006/03/32(土) 14:20:05
またやってるよこいつらわ
658デフォルトの名無しさん:2006/03/32(土) 14:20:35
>>656
特異メソッドを定義できないだけで、実際にはオブジェクトとして扱えるだろアフォ

お前はnil,true,false,Fixnum,Symbolを非オブジェクトとして扱ってるか?

頭使ってから発言しなさい。
659デフォルトの名無しさん:2006/03/32(土) 17:27:31
>>658
おまいの言うとおり本物のオブジェクトだったらよかったんだがなぁ…。
こいつらが「ニセモノ」なせいで、taintフラグをたてることが出来ないのはご存知?
おかげでRubyのセキュリティシステムは信用できないわけだが。

660デフォルトの名無しさん:2006/03/32(土) 17:43:44
>>659
kwsk
661デフォルトの名無しさん:2006/03/32(土) 17:50:23
>>651
C言語やSchemeとかなら仕様が定められているからそちらを読むという手がある。
しかし、Rubyは実装以外に仕様書は存在しないからソース読まないと。
LLでもECMA Scriptとかは仕様書あるんだけどねぇ。
まぁ、言うことが「ソース嫁」から「仕様書嫁」に変わるだけだと思うが。
662デフォルトの名無しさん:2006/03/32(土) 17:53:15
「オブジェクトとして扱う」ってどういう意味なの?
663デフォルトの名無しさん:2006/03/32(土) 17:58:32
そんなのに汚染フラグが立てられなくても、大した影響は無いだろ。

Rubyのセキュリティシステムはもっと根本的なところで信用できるものではない。
バグで落とせるし。
664デフォルトの名無しさん:2006/03/32(土) 18:06:16
> バグで落とせるし。

極端な一般論でお茶を濁すアフォ発見。
665デフォルトの名無しさん:2006/03/32(土) 18:11:59
極端じゃねーよアフォ。
666デフォルトの名無しさん:2006/03/32(土) 18:20:47
667デフォルトの名無しさん:2006/03/32(土) 18:25:22
>>660
kwskもなにも、そのまんま。

例えば、ファイルから読み込んだデータは「汚染されているべき」なのだが、
getc, each_byteなどで読み込んだデータはtaintフラグが立っていない(汚染されていない)。
だから、これらを「本来汚染チェックをするはずの操作」に渡すときは、自前で汚染チェックをしなければならない。
これがRubyのセキュリティシステムの、その言語仕様レベルにおける欠陥というわけ。
システムのバグならPerlにもPythonにもPHPにもある(はず)だが、これは仕様なのでどうしようもない。
668デフォルトの名無しさん:2006/03/32(土) 18:26:17
>>666
空気読めてないコメント欄にワロス
669デフォルトの名無しさん:2006/03/32(土) 18:37:07
>>667
taintのような機構がPerl、Python、PHPに無いので、比べるお前はアホ
670デフォルトの名無しさん:2006/03/32(土) 18:47:13
>>669
taint機構はPerlにインスパイアされたと知った上での発言か?
671デフォルトの名無しさん:2006/03/32(土) 18:54:52
じゃあ、taintのような機構がPython、PHPに無いので、比べるお前はアホ、で宜しいかね?
672デフォルトの名無しさん:2006/03/32(土) 19:02:43
>>666
こいつらハズカシス

_ ひろのぶ (2006-04-01 15:35)

「経験と資産の蓄積がものを言います」じゃ、彼らの最初の選択肢はCOBOLのはずだ。なんでPerlなんか使うんだろう:-P
_ び (2006-04-01 16:01)

「馬齢を重ねる」なんて言葉もあるんだけどなぁ... 挑発的な割には思慮の足りない言説は見苦しいものです。
673デフォルトの名無しさん:2006/03/32(土) 19:18:45
志村ー日付日付と書きたいワタクシ(w
674デフォルトの名無しさん:2006/03/32(土) 19:46:04
是非、書いて来いw
675デフォルトの名無しさん:2006/03/32(土) 19:55:05
日付以前に、ぱるまの記事の著者を見ようよとw
676デフォルトの名無しさん:2006/03/32(土) 20:03:45
>>674
4/1の間はダメだよ
677デフォルトの名無しさん:2006/03/32(土) 20:44:33
>>676
今日はまだ3/32だから…4/1は明日?
678デフォルトの名無しさん:2006/03/32(土) 21:11:01
>>675
その前にURLをみるべきだと思うが、もう頭に血が上っしまってダメポなんだろうなぁと。

679デフォルトの名無しさん:2006/03/32(土) 21:13:28
つかRubyユーザってperlユーザとの間に溝があることが図らずも発覚したというか、痛いというか。
語るに落ちるっつーかね。


あの書き込み自体ネタかと小一時間以下略
680デフォルトの名無しさん:2006/03/32(土) 21:19:34
>>679
一部を見て全体もそうだと決め付けるお前考えの浅さに驚き。お前も痛い。

それとも、お前の書き込みもネタというかw?
681デフォルトの名無しさん:2006/03/32(土) 21:34:52
>>680
すまんな、「あそこに書き込んでる」の一文が抜けてたよ。
682デフォルトの名無しさん:2006/03/32(土) 21:44:49
「あそこに書き込んでる一部の」な。ホント考えが浅いつうか…
683デフォルトの名無しさん:2006/03/32(土) 21:50:38
やれやれ
684デフォルトの名無しさん:2006/03/32(土) 22:59:17
YAMLで日本語文字列を出力しようとすると、変なエンコードがされて読め
ません。無理やりでも良いので、「そのまま」出力する方法は、ありませ
んか? YAML::Store で { :a => 'あ' }のようなハッシュや ['あ','い']の
ような配列が出力できれば、それでいいです。

ためしに、String.is_binary_data? を再定義してみたけど、だめでした。
to_yamlの再定義でも、エラーが出てだめでした。

def to_yaml(opts={})
"--- " + self.to_s + "\n"
end
685デフォルトの名無しさん:2006/03/32(土) 23:08:14
>>684
rubyのバージョンは、1.8.4 です。
686デフォルトの名無しさん:2006/03/32(土) 23:08:57
syckだからなぁ。
687デフォルトの名無しさん:2006/03/32(土) 23:18:09
>>684
文字コードの指定はどうしてる?
688デフォルトの名無しさん:2006/03/32(土) 23:48:48
YAML は UTF が仕様だったと思うが
689デフォルトの名無しさん:2006/03/32(土) 23:50:38
>>687
sjisでもeucでもutfでもおんなじなんですが、YAML::Store.newのオプションの
:encoding が実装されてないみたいなんで、無理やりやらないと駄目だと思い
ます。
690デフォルトの名無しさん:2006/04/02(日) 00:00:22
お試しコード

ーーーーーーーーーー
#! ruby -Ks

require "nkf"
require "yaml/store"

s = "ああああいいいをいいういう"
db = YAML::Store.new( "test_yaml.yml" )
db.transaction {
db[ "u" ] = NKF.nkf( "-w", s )
p NKF.guess( db[ 'u' ] ) == NKF::UTF8
}
ーーーーーーーーーー
---
u: !binary |
44GC44GC44GC44GC44GE44GE44GE44KS44GE44GE44GG44GE44GG
691デフォルトの名無しさん:2006/04/02(日) 02:08:44
YAMLはutfなのか。
世界視野としての仕様としては正しいけど、個人的にはJISにしたいからヲレ独自フォーマットに改変にしよう(w
692デフォルトの名無しさん:2006/04/02(日) 10:44:18
http://comic6.2ch.net/test/read.cgi/doujin/1141361573/500-501
> targets << winny_thre.min{|a, b| a.key - b.key}

やっぱりrubyを知らない人にはさっぱりわからないようだw
693デフォルトの名無しさん:2006/04/02(日) 15:19:45
>>692
基本的な正規表現もわかってないやつに、何を期待してる?
694デフォルトの名無しさん:2006/04/02(日) 16:47:13
>>691
データの保存形式としてはまだ安心して使えない
ってことだよね。us-ascii だけで設定だけ記述
するのが正解だと思うよ

Perl とか Python の YAML 実装はもうマルチバイト
周りの問題とか解決しちゃってるのかな?
695デフォルトの名無しさん:2006/04/02(日) 17:00:47
696デフォルトの名無しさん:2006/04/02(日) 19:57:32
>>694
Syckを使ってるかぎり、一緒だろう。
697デフォルトの名無しさん:2006/04/02(日) 23:00:27
そらそうだ
おれが言ってるのは Syck 以外の実装の話
698デフォルトの名無しさん:2006/04/02(日) 23:37:03
YAMLってあんまwritableじゃないね。
えぢたでガリガリ書いてる人っているの?
699デフォルトの名無しさん:2006/04/03(月) 00:02:38
yaml-mode が欲しいよなぁ
700デフォルトの名無しさん:2006/04/03(月) 02:10:36
emacs使いか。
漏れはウェブ経由で弄って、rubyスクリプトに整形させてる。
701デフォルトの名無しさん:2006/04/03(月) 04:20:34
「YAMLは、XMLよりイイ」とか言ってたやつは、XMLに謝罪しろよ
702デフォルトの名無しさん:2006/04/03(月) 04:38:10
YAML は場合によって XML よりイイ
703デフォルトの名無しさん:2006/04/03(月) 05:58:54
>>698
オートインデントを利用してJmEditorでガリガリ書いてる

しかし、できればスペース以外の記号で
インデントを表現したいと思うことがある
行頭に>記号をつけるとインデントとか
704デフォルトの名無しさん:2006/04/03(月) 07:59:56
JSON にするのがいいんじゃないだろうかと思う今日この頃
705デフォルトの名無しさん:2006/04/03(月) 09:59:15
俺もそう思う。

のだが、システム運用者とかには YAML のフォーマットは受けが良いみたいなのよね。
706デフォルトの名無しさん:2006/04/03(月) 10:07:12
sexp最強
707デフォルトの名無しさん:2006/04/03(月) 11:47:29
そういうことなら sexp リーダを標準添付して欲しい。
708デフォルトの名無しさん:2006/04/03(月) 19:00:14
JSON::Store を標準添付してください。
709デフォルトの名無しさん:2006/04/03(月) 19:05:59
>>706
まずは名前を変えるんだ。話はそれからだ。
710デフォルトの名無しさん:2006/04/03(月) 21:08:54
etheRapeとかたまに変な名前つける奴いるよな
711デフォルトの名無しさん:2006/04/03(月) 21:21:56
エーテル猿
712デフォルトの名無しさん:2006/04/03(月) 21:44:46
BrainFuck
713デフォルトの名無しさん:2006/04/04(火) 00:34:12
XMLはあまりに可読性が悪過ぎる。
テキスト読み込んだ方がマシ。
714デフォルトの名無しさん:2006/04/04(火) 00:38:07
rubyの成分解析結果 :

rubyの40%は言葉で出来ています。
rubyの34%は情報で出来ています。
rubyの24%は度胸で出来ています。
rubyの1%は欲望で出来ています。
rubyの1%は海水で出来ています。



意外とあってるかも。
715デフォルトの名無しさん:2006/04/04(火) 01:01:26
>>713
文字化けして、データが壊れるYAMLより、100倍まし。
テキスト>XML>>>>>>越えられない壁>>>>>>>YAML
716デフォルトの名無しさん:2006/04/04(火) 03:29:07
>>715
アフォか。
XML はドキュメト等、YAML は設定ファイル等に向いてるって Matz タソも言ってと思う。
用途次第だって上にもあったろうが。
というか文字化けって、YAML というより、単に Syck がヘボいだけじゃないのか?
717デフォルトの名無しさん:2006/04/04(火) 09:25:28
>>716
厳密に言うと Syck はパーサだから関係ないような。 Emitter は pure Ruby だよね?

それはともかく、「文字化けして、データが壊れる」ってのは嘘だよね? >>713
718デフォルトの名無しさん:2006/04/04(火) 09:44:55
XMLは人力で読むものじゃない。
と何度言ってもMatzはわかってくれません。
719デフォルトの名無しさん:2006/04/04(火) 09:45:00
日本語がバイナリでエンコードされてしまうという話は聞くが、
文字化けというのは初耳だ。kwsk>>713
720719:2006/04/04(火) 09:48:20
- >>713
+ >>715
orz
721デフォルトの名無しさん:2006/04/04(火) 09:49:11
フォーマットは何でもいいけど
永続化ってオブジェクトのプロパティの追加と削除ですぐヘタるから
いまだにiniファイルでチマチマやってる。
722717:2006/04/04(火) 10:02:33
- >>713
+ >>715
漏れも間違えてたのか orz
723デフォルトの名無しさん:2006/04/04(火) 11:20:25
>>717
いえ、壊れます。
文字化けか改行か原因は不明ですが、YAML::PStoreでは、ある時突然、壊れます。
{:BestWidth=>1000} とかやっても、壊れるときは壊れます。
BestWidth を忘れてたら、確実に壊れます。
YAML::PStoreのせいか、syckのせいか知りませんが、日本語を保存すると、
再度読み込もうとしても読めないことが多々あります。
724デフォルトの名無しさん:2006/04/04(火) 11:39:03
>>723
「BestWidth を忘れてたら」がよくわからない。

あと、もし可能であれば再現コードぷりーず。
「なんかわかんないけどこわれる」だけではちょっと俄には信じ難いです。
725デフォルトの名無しさん:2006/04/04(火) 13:11:04
>文字化けか改行か原因は不明ですが
おいおい「文字化け」って明言してたやつはどこいった?
そりゃ、どんなファイルだって壊れるときは壊れるよな。
726デフォルトの名無しさん:2006/04/04(火) 13:15:38
あまずは環境とお前のコードを疑え。ライブラリは一番最後だ。



と言い切れないのがsyckクオリティ
727デフォルトの名無しさん:2006/04/04(火) 15:10:15
もし知っている人が居たら、で良いのですが。

FasterCSV って、どれくらい速いの?
標準添付の CSV を使っていた場合、コードの変更量は少ない?それとも多め?
http://rubyforge.org/projects/fastercsv
728デフォルトの名無しさん:2006/04/04(火) 16:05:56
FasterCSV のベンチマーク
ttp://d.hatena.ne.jp/miyamuko/20060301#p1
729デフォルトの名無しさん:2006/04/04(火) 16:17:57
これも2nd Editionが出るんだね。

Programming the Ruby Way (2nd Edition)
http://www.amazon.com/gp/product/0672328844/
730デフォルトの名無しさん:2006/04/04(火) 20:02:48
忘れる方が悪いとしかいい要が無いなあ。
ヲレラッパーでも書いて自動的に実行するようにしとけばいいじゃん。
基本的にスクリプトは楽するために書くモノだよ。
731デフォルトの名無しさん:2006/04/04(火) 21:14:25
こんな感じで、aにデータを追加していったら、ある時、突然読めなくなります。
データの順番にもよるみたいなので、再現コードは難しくて出せません。
このあたりのURLが参考になるのですが、これだけでは解決出来ないときが
あります(出来るときもある)。
http://moonrock.jp/~don/d/200401.html#d10_t2
http://yoosee.net/d/archives/2005/01/19/004.html#s1

#! ruby -Ks

require "yaml/store"
require "nkf"

a = [
["http://pc8.2ch.net/test/read.cgi/tech/1140762419/l100", "Rubyについて Part 19"],
["http://pc8.2ch.net/test/read.cgi/tech/1135082582/l50", "「コンパイラ・スクリプトエンジン」相談室9"],
]

db = YAML::Store.new( "store_test.yml" )
db.transaction {
 db[ 'date' ] = Time.now
 db[ 'a' ] = a
}
732デフォルトの名無しさん:2006/04/04(火) 21:20:10
>>723
ruby -vの結果とどうインストールしたか、その「確実に壊れる」というコードをだしてくれ。
733デフォルトの名無しさん:2006/04/04(火) 21:35:22
$ ruby -v
ruby 1.8.4 (2005-12-24) [i386-freebsd4]
ruby 1.8.4 (2006-01-31) [i386-cygwin]
どっちでも現象は、同じです。

データは、18Kbyte以上あるので出せませんし、内容を出すとプライベートな
ことが分かるので出せません。

エラーコードとしては、こんな感じ。このときのデータは、:BestWidth=>10000を
付けて書き出したら正常に読み込めました。

/usr/local/lib/ruby/1.8/yaml.rb:133:in `load': syntax error on line 87, col 38:
`8FW" (ArgumentError)

該当行の前後10行程度を抜き出してテストしてみると、再現しません。
734デフォルトの名無しさん:2006/04/04(火) 21:56:04
733とは別人ですが、再現しました。

#!/usr/local/bin/ruby -Ks

require "yaml/store"
require "nkf"
a = Array.new(1000){["#{rand}", "Rubyについて Part 19"]}
db = YAML::Store.new( "store_test.yml" )
db.transaction {
db['date'] = Time.now
db['a'] = a
}
db.transaction {
p db['a'] == a
}

$ ruby-1.8.4 -v test_yml.rb
ruby 1.8.4 (2005-12-24) [i686-linux]
false

$ ruby-1.8 -v test_yml.rb
ruby 1.8.4 (2006-02-12) [i686-linux]
true

$ ruby-1.9 -v test_yml.rb
ruby 1.9.0 (2006-03-05) [i686-linux]
true

というわけで、開発版では修正済みのバグのような気もします。
735デフォルトの名無しさん:2006/04/04(火) 22:14:49
>>721
俺もだ
汎用性があるのはいいんだけど、仕様変更に弱いんだよなぁ
736デフォルトの名無しさん:2006/04/04(火) 22:52:03
>>731
文字列がShift_JISだからじゃなくて?
737てけとー:2006/04/04(火) 23:57:22
RubyでGUI周りのプログラム書きたいんですけど、
何か良いツールキットみたいなのがあったら教えてください。
簡単なツールとかゲームとか作ってみたいので。
738デフォルトの名無しさん:2006/04/04(火) 23:58:20
DelphiかC#かHSP使え。
Rubyは最悪の選択肢だ。
739デフォルトの名無しさん:2006/04/05(水) 00:05:29
JAVAとかもいい選択肢だぞ
Ruby開発者は言語以外の事に、あまり関心がないからな
740デフォルトの名無しさん:2006/04/05(水) 00:32:45
gui考えるとjavaは現実的ではあるね。
DirectX描画機能付きのwinrubyなるものがあれば、遊べるかもね。

何かシフトJISの原因ポイね。そう言う不具合あるから、JISが出来たような(w
多分、全部2byteだと問題ないと思う。1byteと2byteの切り換えで問題が出てる。
741デフォルトの名無しさん:2006/04/05(水) 00:56:22
良く分からんけど、文字化けでデータが壊れることは、あるんだよね?
対応しているはずのUTFはバイナリ判定されるのに、SJISはされないって
こと?

>>740
2byteだから問題ないんじゃなくて、バイナリだから問題ないのでは?
742デフォルトの名無しさん:2006/04/05(水) 01:04:43
>>740
「そういう不具合があるから」、EUCができた、ですね。
2bytes文字が途中で折り返されて〜、とか、
あとは「表」等のyen sign問題だと予想。

UTF-8じゃないstringはBASE64かけて保持するとか、
ちゃんと円記号等をエスケープするとか対策すればいいだけなきもするんだけど。
743デフォルトの名無しさん:2006/04/05(水) 04:11:27
734の文字列の、どのあたりがシフトJISの問題なんですか?
744デフォルトの名無しさん:2006/04/05(水) 04:35:44
Net::FTP#puttextfile を実行しようとすると止まってしまうんですが、
何で?
putbinaryfileは正常に動きます。
cygwin上の、1.8.4 で実行しています。

Net::FTP.open( host, user, pass ) { |ftp|
ftp.putbinaryfile( filename ) # <= 正常
ftp.puttextfile( filename ) # <= 異常。CTRL+Cも効かない
}
745デフォルトの名無しさん:2006/04/05(水) 05:37:30
734テストしてみたけど、UTF-8でも問題になるね。
全部2byteでもダメだった。

失敗した時のstore_yaml.txt見てみると、途中で切れてる。
746デフォルトの名無しさん:2006/04/05(水) 06:54:16
>>737
Windowsだけで動けばいいならApolloがお勧め

俺は738、739の言うほどRubyがGUIに不向きだとは思ってない
というかむしろGUI向きだと思っている
「簡単なツールとかゲームとか作ってみたい」なら尚更だ
747デフォルトの名無しさん:2006/04/05(水) 09:32:29
漢字コードのことを分かってない人が多すぎ。
i18nとかm17nとか、もっと勉強してほすい
何でもかんでもsjisのせいにしてればいいってもんじゃない。
748デフォルトの名無しさん:2006/04/05(水) 10:00:01
アメリカの書籍を見ていると良さそうなのがいっぱいあるんだけど。
これって日本産の言語だよね?

Ruby Cookbook (Cookbooks (O'Reilly))
http://www.amazon.com/gp/product/0596523696/
749デフォルトの名無しさん:2006/04/05(水) 10:26:16
>>748
いまいちパンチの効いてない釣りだな。
750デフォルトの名無しさん:2006/04/05(水) 10:54:30
>>747
是非とも _why に言ってやってください。
751デフォルトの名無しさん:2006/04/05(水) 11:20:33
>>746
Apolloってインストールしないと使えなくない?
zip解凍して、requireするだけで使えないと使う気起きん
752デフォルトの名無しさん:2006/04/05(水) 11:23:08
使わなければいいのでは?
753デフォルトの名無しさん:2006/04/05(水) 11:28:26
RubyでGUIは向いてないって事で
754デフォルトの名無しさん:2006/04/05(水) 13:14:23
スクリプトで GUI が向いてるのってなんだろうね。
755デフォルトの名無しさん:2006/04/05(水) 13:16:44
>>754
Ruby
756デフォルトの名無しさん:2006/04/05(水) 13:16:52
Tcl
757デフォルトの名無しさん:2006/04/05(水) 13:22:36
アポロって.dfmそのまま食えたりするの?
GUIはDelphi IDEで作って
それをRubyで読み込んでイベントハンドラ書くんだったらかなり使えそうな気が。

逆にどんなライブラリでもコードでUI記述するのは勘弁だな。
758デフォルトの名無しさん:2006/04/05(水) 15:20:06
コードでUIの最強は実はHTMLと言ってみるテスト
759デフォルトの名無しさん:2006/04/05(水) 15:28:48
>>751
Rubyを含まないzipアーカイブは存在する。
msvcrt用のはずだがmsvcrt71で動くかは知らない。

>>757
sample\dfm_to_rb.rb
760デフォルトの名無しさん:2006/04/05(水) 16:12:21
>>747
昔のYAMLは「表」とかで普通に壊れてたのよ。
さすがに今は対策入ってるみたいね。
761デフォルトの名無しさん:2006/04/05(水) 16:28:05
>>738
HSPってwwwそれこそ最悪ww
762デフォルトの名無しさん:2006/04/05(水) 17:04:09
>>761
知らないのか?HSPはオブジェクト指向を捨てて
関数型に移行しつつあるらしい。
画面遷移を全部モナドで記述するっていうし。
うかうかしておられんぞ。
763デフォルトの名無しさん:2006/04/05(水) 18:01:47
>>762
何そのHaspell
764デフォルトの名無しさん:2006/04/05(水) 20:24:11
>>762
いいえ、関数も定義しにくい糞言語でしたよ
765デフォルトの名無しさん:2006/04/05(水) 20:47:15
昔HSPでツール作ってたが…
何つーか昔のBASICの雰囲気かな?
プログラミング初心者がちょっとしたミニゲーム作る言語。
766デフォルトの名無しさん:2006/04/05(水) 22:19:41
767デフォルトの名無しさん:2006/04/06(木) 00:53:46
そういやBASICの頃はGUIなんてコードで書くのがあたりまえだったんだよな〜ナツカシス
現実的ではないけど、GUIをコードで書く文化が継承されていたら
ベーマガとかも、もうちっとは長生きしたんだろか
768デフォルトの名無しさん:2006/04/06(木) 01:17:57
>767
やっぱPC立ち上げて最初にBASICインタプリタが起動しなきゃ。
しかしスクリーンエディタがあってインラインで実行できてプログラムも記録できて、って
ある意味立派なIDEだったんだなぁあれ。


……PC立ち上げるとirbがいきなり起動ってどーだろう。だめですかそうですか。
769デフォルトの名無しさん:2006/04/06(木) 01:18:54
>>768
スタートアップに irb.bat へのショートカットを入れておくといいと思います。
全画面にしておくとなおよし。
770デフォルトの名無しさん:2006/04/06(木) 02:36:33
Windows 前提なのにワロタ
771デフォルトの名無しさん:2006/04/06(木) 09:29:15
/etc/rc に irb を入れておくといいと思います。嘘です。
772デフォルトの名無しさん:2006/04/06(木) 17:28:50
スレ違いなのでこっちに移動して、

個人的にはRuby.NETが本命だと思ってるんだけどな。
GUI含めて潤沢な多言語向けクラスライブラリの土壌の上にこそ
言語仕様で勝負できるRubyの特徴が生きると思っている。
というわけで作者がんばれ。



# といいつつ関数型言語として進化しつつあるC#3.0に一番期待w
773デフォルトの名無しさん:2006/04/06(木) 17:35:11
http://wota.jp/ac/?date=20060331#p01

_ 从*’w’) (2006-04-03 01:30)
先駆者がいたかー!つーか、moonwolf さんは時代を先取りし杉!
774デフォルトの名無しさん:2006/04/06(木) 18:46:40
>>772
つJRuby
775デフォルトの名無しさん:2006/04/06(木) 19:28:25
土台が腐ってるプラットフォームは意味ないな。
776デフォルトの名無しさん:2006/04/06(木) 19:29:34
HSPか!
777デフォルトの名無しさん:2006/04/06(木) 19:41:12
>>772
同じくスレ違いなのでこっちに移動して。

初心者スレ >>294
税金を渡した方は評価も成果も発表して仕事を完了してるからね。
その評価および成果方向によると、さらに完成度を高めて早期に公開、ということになってるから、その後どうなってるのかが気になってるわけだが。
778HSP使ってます:2006/04/07(金) 03:44:49
結局.NETなのね
Pythonはだいぶ先を行ってるけど、スクリプトかも微妙じゃないの?

MatzってWindows使いじゃないんでしょ
きっとHSP大好きな凡人の気持ちが分からないんだよ

で、凡人でも悲しいので今日Linuxって言うのいれてみようと思います
Rubyの人たちは、どのディストリ使ってるんだすか?
Debianサーバーが乗っ取られたのは覚えてるんだけどコレでいいのかな…
779デフォルトの名無しさん:2006/04/07(金) 06:00:11
a = Array.new(1000){["#{rand}", "Rubyについて Part 19"]}
じゃなくて、
a = Array.new(1000){["#{rand}", "Rubyについて Part 19"]}
だと問題なかったりしない?
780デフォルトの名無しさん:2006/04/07(金) 06:15:13
>>778
Windows使いの俺にも
HSP大好きな凡人の気持ちがよくわからないんだが
781デフォルトの名無しさん:2006/04/07(金) 06:41:44
>>780
DQN は相手にしちゃダメだよっ!
782デフォルトの名無しさん:2006/04/07(金) 09:23:04
Ubuntuにしとけよ。
面倒ないから。
XとかいらんのならコツをつかめばGentooが楽。
783デフォルトの名無しさん:2006/04/07(金) 09:24:28
今日もスレ板問わず精力的な布教活動ご苦労様でございます。
784デフォルトの名無しさん:2006/04/07(金) 09:39:22
そういやRubuntuってどうなった?
785デフォルトの名無しさん:2006/04/07(金) 09:41:07
UbuntuやGentooは信者が痛いからな
786デフォルトの名無しさん:2006/04/07(金) 11:20:29
それをこのスレで言うかw
787デフォルトの名無しさん:2006/04/07(金) 11:32:20
このスレの信者の痛い発言を挙げてくれ
788デフォルトの名無しさん:2006/04/07(金) 13:12:52
>>778
Windows使ってて、かつGUIを必要としないなら、cygwinかcolinuxでいいと思うけどなー。VMWareという手もあるし。
へたにLinux使うとエディタでキレると思う。
789デフォルトの名無しさん:2006/04/07(金) 15:00:11
俺はCygwin版でエディタは秀丸。
大規模なもの作らないなら、こんなので十分。
790デフォルトの名無しさん:2006/04/07(金) 21:46:22
そんな報告しないでいいです
791デフォルトの名無しさん:2006/04/07(金) 22:46:55
俺はCygwin版でエディタはterapad
100行以下のスクリプトなら、こんなので十分。
792デフォルトの名無しさん:2006/04/07(金) 22:49:19
俺はCygwin版でエディタはterapad
100行以下のスクリプトなら、こんなので十分。
793デフォルトの名無しさん:2006/04/07(金) 22:51:42
俺はCygwin版でエディタはterapad
100行以下のスクリプトなら、こんなので十分。
794デフォルトの名無しさん:2006/04/07(金) 22:52:14
俺はCygwin版でエディタはterapad
100行以下のスクリプトなら、こんなので十分。
795デフォルトの名無しさん:2006/04/07(金) 22:52:52
俺はCygwin版でエディタはterapad
100行以下のスクリプトなら、こんなので十分。
796デフォルトの名無しさん:2006/04/08(土) 01:09:13
100行以下ならメモ帳で十分使えるよ。
797デフォルトの名無しさん:2006/04/08(土) 01:21:28
そんな報告しないでいいです
798デフォルトの名無しさん:2006/04/08(土) 01:24:49
viとかemacsがあるのにキレるわけない
799デフォルトの名無しさん:2006/04/08(土) 01:38:21
俺はOSX付属のrubyでエディタはmi
数行スクリプトなら、こんなので十分。

800デフォルトの名無しさん:2006/04/08(土) 01:41:15
emacs を覚えとけば、Win/Unix/Mac どれでもいけるじゃん。
ruby-mode もあるし。
801デフォルトの名無しさん:2006/04/08(土) 02:57:39
だが覚える手間がかかるのではないか
802デフォルトの名無しさん:2006/04/08(土) 06:54:45
emacsは操作に慣れるのに手間がかかる
確かにあの非Windows的なキーボードストロークに慣れれば
便利に使えそうな感じはするんだが…
803デフォルトの名無しさん:2006/04/08(土) 09:31:43
>>802
他のエディタが全然使えなくなる諸刃の剣
Unix 系のツールには Emacs キーバインドで
操作できるものが意外とあるから、使えると
世界が広がるよ
804デフォルトの名無しさん:2006/04/08(土) 12:02:32
世界が狭くなるという一面も。
805デフォルトの名無しさん:2006/04/08(土) 12:08:28
Emacsの良さは周辺環境が劣悪なら劣悪なほど生きてくる。
806デフォルトの名無しさん:2006/04/08(土) 12:43:11
そんな報告しないでいいです
807デフォルトの名無しさん:2006/04/08(土) 12:49:13
死を待つばかりのIRIXでも
emacsでルbyスクリプトかけてます
808デフォルトの名無しさん:2006/04/08(土) 12:57:14
ところでemacsって何て読むの
えまくす?
809デフォルトの名無しさん:2006/04/08(土) 13:00:46
るびぃえでぃた
810デフォルトの名無しさん:2006/04/08(土) 14:47:34
俺はE-MAXって呼んでるぜ!
811デフォルトの名無しさん:2006/04/08(土) 14:58:30
そんな報告しないでいいです
812デフォルトの名無しさん:2006/04/08(土) 17:31:49
>>810
懐かしいな。(昔、 Emu 社の廉価版サンプラーでそういうのがあった)
813デフォルトの名無しさん:2006/04/08(土) 17:44:15
おれE-mulatorって呼んでるぜ
814デフォルトの名無しさん:2006/04/08(土) 17:55:56
いいかげんつまらん
815デフォルトの名無しさん:2006/04/08(土) 17:56:59
プロジェクトのサイトのトップページが RDOC だと萎えるのは俺だけ?
816デフォルトの名無しさん:2006/04/08(土) 18:16:45
Ruby-win32 + xyzzy + Ruby-mode
な、俺がきましたよ
817デフォルトの名無しさん:2006/04/08(土) 18:17:50
神の自己展開キター
818デフォルトの名無しさん:2006/04/08(土) 19:38:19
うが、リリースまだ?
819デフォルトの名無しさん:2006/04/09(日) 00:02:30
マカの時点で負け。
今時代はXPだし。マカも喜んでXP入れてる。

rdocブラウザって作るとおもしろいかもね。
ルビキチのサイトはことごとく、HTMLの代わりにrdocになってるとかさ。
にちゃんも有る意味datサイトなんだけどね。ねらーはdatブラウザ使ってるし。
820デフォルトの名無しさん:2006/04/09(日) 00:07:34
いまだに2000ですいません
821デフォルトの名無しさん:2006/04/09(日) 00:54:24
Ruby使うのに最適な環境はXPですか。
そうですか。
822デフォルトの名無しさん:2006/04/09(日) 01:25:12
>821
(´・ω・`)つなんでやねん
823デフォルトの名無しさん:2006/04/09(日) 02:35:39
eXtreme Programmingには最適なんじゃね?
824デフォルトの名無しさん:2006/04/09(日) 11:45:40
2000じゃマクで動かないはず。
825デフォルトの名無しさん:2006/04/09(日) 12:32:05
初心者質問スレを見てて思ったんですが
Marshalってなぜあんなにコロコロ仕様が変わるんでしょうか
おかげで怖くてPStore使えません……

Marshalといいcgi.rbといい
Rubyは互換性に関する考え方が何かおかしい
826デフォルトの名無しさん:2006/04/09(日) 12:48:48
>>825
互換性が必要な箇所で Marshal を使う方が間違いでしょ。
元々そういう(後方互換性しか保証しない)仕様なんだから。

cgi.rb については同意だけど。
827デフォルトの名無しさん:2006/04/09(日) 14:42:22
まあ保存はヲレフォーマットでテキスト保存が最強ですよ。


採用時に無いからとはいえ、中途半端なのが標準添付になると不幸の再生産だとは思う。
変に互換性気にしないと逝けないから、新しく出来ないし。
最近、diff.rb欲しい。今はsystemからdiff呼んでお茶濁してるけど。
828デフォルトの名無しさん:2006/04/09(日) 14:46:25
cgi.rb って何?ふつー webrick/cgi でしょ。
829デフォルトの名無しさん:2006/04/09(日) 20:52:41
>>828
いや、普通 Rails です。
830デフォルトの名無しさん:2006/04/09(日) 21:51:28
例えば、こんなのだったら何を使って作るのが一番手数が少なくてすむのでしょうか?

* textareaとsubmitボタンとドロップダウンリストが一個ずつあるフォームがある。
* textareaに元ネタを書き込んでsubmitすると変換結果がtextareaに表示される。
* ドロップダウンリストで選ぶ値によって変換の仕方を指定できる。

自分は、cgi.rbを使ってサクッと済ませたんですけど、何か問題ありますか?

変換ロジック自体は別で作成済みとして、表示部分にwebブラウザを
使うということで考えてみてください。
831デフォルトの名無しさん:2006/04/10(月) 00:30:13
832デフォルトの名無しさん:2006/04/10(月) 00:31:22
ぢff大杉・・・
これだからオプソって・・・
833デフォルトの名無しさん:2006/04/10(月) 01:03:14
ほとんどはゴミdiffだけどね。
配列のdiffなんて要らんよ。
834デフォルトの名無しさん:2006/04/10(月) 01:42:13
一番使いやすいdiffライブラリを教えてくれまいか
835デフォルトの名無しさん:2006/04/10(月) 01:46:05
俺的にはdiff-lcs
diff/patch/spatchの全てをサポートしてるし
返値がちゃんと独自のクラスで返るから使いやすい
836デフォルトの名無しさん:2006/04/10(月) 01:49:01
俺的には`diff`でいいやという気分になりますた
837デフォルトの名無しさん:2006/04/10(月) 02:04:38
>>835
サンクス
入れてみた
838デフォルトの名無しさん:2006/04/10(月) 03:34:12
dev と list で NKF の仕様変更の話が出てるけどおまいらどう思いますか
839デフォルトの名無しさん:2006/04/10(月) 06:08:55
携昆布の話なら勝手にしやがれと思います
840デフォルトの名無しさん:2006/04/10(月) 09:29:54
>>838
後で騒いだほうが面白いから今は黙ってる
841デフォルトの名無しさん:2006/04/10(月) 09:34:29
>>840
本家 nkf は既に仕様変更してるみたいなのでそっちでちょっと騒いでもらえないか。
842デフォルトの名無しさん:2006/04/10(月) 10:12:41
>>841
本家はまだだね。
2.1.0で変更するとか言ってるけど。
843デフォルトの名無しさん:2006/04/10(月) 10:34:56
ありゃ、ホントだ。結局仕様変更しなかったんだ。
んじゃ、後で期待してます。>>840
844デフォルトの名無しさん:2006/04/10(月) 16:34:30
テラウマソス
ttp://www.rubytuesday.com/
ハラヘリ。
845デフォルトの名無しさん:2006/04/10(月) 17:46:25
マクドいってこよ
846デフォルトの名無しさん:2006/04/10(月) 21:23:59
>>828
ドキュメントないじゃん
847デフォルトの名無しさん:2006/04/10(月) 22:24:25
848デフォルトの名無しさん:2006/04/11(火) 03:00:18
メソッド内で引数の値が変えられない(或いは変えられたことを検知できる)
ようにしたいんだけどJavaでいうところの
public void hoge(final String str) {...}
みたのってできる?
849デフォルトの名無しさん:2006/04/11(火) 06:31:40
>>847
Wall: ええ、「ドロボー」ですね。もっとも、我々言語デザイナーは皆そうですが(笑)。
850デフォルトの名無しさん:2006/04/11(火) 10:42:19
>>848
Object.freeze
851850:2006/04/11(火) 10:44:20
間違えた obj.freeze (Object#freeze) だな
852デフォルトの名無しさん:2006/04/11(火) 22:55:26
WWW上でのアンケート受付や掲示板システムを可能にするCGIの1種で、
Perlのよいところを引き継いで、オブジェクト指向を取り入れたプロ
グラム言語の名称。詳細情報はURL(http://www.netlab.co.jp/ruby/jp/)
で知ることができる。Windows用のバージョンはURL
(ftp://ftp.netlab.co.jp/pub/lang/ruby/pc/)で公開されている。ただし、
Windows上でrubyを動かすためには、cygwin.dllも一緒にインストールしな
ければならない。

http://www.jiten.com/dicmi/docs/r/10287s.htm
853デフォルトの名無しさん:2006/04/11(火) 23:14:04
>852
なんつーか「誤解されるニッポン・各国教科書編」のノリだな
854デフォルトの名無しさん:2006/04/11(火) 23:55:05
perl
UNIXの世界でデータの操作性が高いC言語と、やりたいことを素早く作成できる
「Shell」の利点を兼ね備え、C言語とshellの利点をフォローする言語として開
発された開発言語です。
http://www.jiten.com/dicmi/docs/p/9309.htm

オブジェクト指向
コンピュータの中に、現実の物や人などを、そっくりそのまま存在させたように
指向する方法論で、オブジェクトに注目して考えを進めていこうとするプログラ
ミング方法論もあります。
http://www.jiten.com/dicmi/docs/k5/14682.htm
855デフォルトの名無しさん:2006/04/12(水) 00:05:21
……というか「海外で見かけたヘンな日本語」のノリだったのか
856デフォルトの名無しさん:2006/04/12(水) 00:26:08
>>848
>public void hoge(final String str) {...}

のfinalって
str = "hoge";
と参照先を変えることを出来なくなるようにする機構だぞ。そんなのが欲しいのか?
857デフォルトの名無しさん:2006/04/12(水) 09:47:14
>>851
> 間違えた obj.freeze (Object#freeze) だな

のfreezeって
hoge(obj)
を抜けてからもobjの変更が出来なくなるようにする機構だぞ。そんなので良いのか?
858デフォルトの名無しさん:2006/04/12(水) 11:14:27
859デフォルトの名無しさん:2006/04/12(水) 11:22:52
>>858
Haskell のインタラクティブシェルかと思った
860デフォルトの名無しさん:2006/04/12(水) 11:25:49
irbで文字列""でくくらないような仕組みは用意できないのかね。

>def cd(path) Dir.chdir(path) end

>cd /usr/bin

とかできるとがんばってラップしていけばすごい事になりそうな気が。
861デフォルトの名無しさん:2006/04/12(水) 11:28:50
path が path なのか "path" なのかはどう区別するの?
862デフォルトの名無しさん:2006/04/12(水) 11:31:39
^\s*(\w+)がcd, ls, mkdir, ...の時だけ特別扱いするw
863デフォルトの名無しさん:2006/04/12(水) 11:39:01
それは確かにすごい事になりそうな気が。
864デフォルトの名無しさん:2006/04/12(水) 11:48:21
初心者スレで出てた小ネタを拝借して
ShellCommand = %w(ls cd ...)
と登録しておいて入力行にフィルタかまして
Shell.ls(*args), ...
に飛ばせたら面白そうだな。弄ってみよ
破綻すっかな?
865デフォルトの名無しさん:2006/04/12(水) 11:49:26
>>857
って事はdupしてからか
何にしても質問者の意図が判らんのがなぁ
866デフォルトの名無しさん:2006/04/12(水) 12:37:22
>>856
848じゃないが、ほしい。
俺は他の言語も使ってるとほしくなる。
引数には、変更する変数でない限りconstつけるので。

むしろ、デフォルトでfinalでいいよ。
変更したいときだけ、mutableをつける。
まあ、俺言語の話。
867デフォルトの名無しさん:2006/04/12(水) 13:17:18
引数を代入できないようにして何が嬉しいのかわからん。
そんなことでバグが出るとも思えん。


void foo(const int* p);
ならわからんことはないが、finalつけて得られるのは

void foo(int* const p);
だぞ。
868デフォルトの名無しさん:2006/04/12(水) 14:13:58
>>867
最近の言語の動向を知らない人ですねw
869デフォルトの名無しさん:2006/04/12(水) 14:22:21
そういうのって静的言語がコンパイルの際にエラーを検出できるようにするための機構じゃないのかなあ
Rubyに入れることに意味があるのかわからん。
870デフォルトの名無しさん:2006/04/12(水) 14:22:27
>>868
最近の言語の動向の説明もできない人ですねw
871デフォルトの名無しさん:2006/04/12(水) 15:59:28
まーRubyみたいなゆるゆるな動的言語にはいらんかもな
872デフォルトの名無しさん:2006/04/12(水) 23:13:08
Winnyウィルス("○○の秘密動画.mpg     .exe"みたいなやつね)を
削除するスクリプトを書こうとしたら、Dir.glob( '*' )で見つからなかった。
スペースがいっぱい入ってるファイルは、Rubyで認識できないのかな?
ちなみに、cygwin+ruby1.8.4。
873デフォルトの名無しさん:2006/04/12(水) 23:14:56
>>872
Dir::open でもダメ?
874デフォルトの名無しさん:2006/04/12(水) 23:31:53
>>872
見つかるよ?
ruby1.8.4 cygwin, mswin32
で確認
875デフォルトの名無しさん:2006/04/12(水) 23:58:52
長いファイル名でそ
876デフォルトの名無しさん:2006/04/13(木) 01:17:40
>>873
駄目みたいです。

あと説明悪くて、ごめん。872くらいの短いファイル名だと見つかります。
とりあえず、↓のファイル名だと駄目でした。間にスペースが150個くらい
はいっています。

あああああああああああああああああああああああああああああああああ
あああああああああああああああああああああああああああああああああ
あああああ ああああああああああ.mpg.txt
877デフォルトの名無しさん:2006/04/13(木) 01:20:25
スペース無くても駄目なのね。

ああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああ
ああああああああああああ.mpg.txt
878デフォルトの名無しさん:2006/04/13(木) 01:26:06
RubyにC/C++のconst機能はないのでしょうか?
const状態では、破壊的メソッドが呼べなくなるような。

#↓こんな感じのです

a = Foo.new
b const = a

a.bar! #破壊的メソッドが呼べる
b.bar! #こっちはエラーとなる
879デフォルトの名無しさん:2006/04/13(木) 01:36:14
破壊的メソッド抑止ならそれこそObject#freezeじゃね?
880デフォルトの名無しさん:2006/04/13(木) 01:44:29
>>879
freezeでは、その後、どこからも変更が出来なくなってしまいます。

やはりfreeze以外で似たような機能はないのでしょうか。
無いとしたら次のようなときは、皆さんどうしてるのでしょうか?

class Hoge
 def initalize
  @a = "..." # 巨大な文字列、または配列等
 end

 def get
  return @a
 end
end

これだと、
hoge.get[0]=0
と外部から変更出来てしまいます。
constがあると、変更されないで外部に見せれるのですが。

もうdup等するしかないのでしょうか?
881デフォルトの名無しさん:2006/04/13(木) 02:10:20
うーむ。そういう場合はJavaのStringやObjective-C(つかCocoa? )のNSStringのように
「そもそも内容を変更できないクラス」
を作ってしまうというのも手かも。
既存クラスに対してそれをやりたいときは、破壊的メソッドをテッテ的にundefするとか。

とOOPかじりかけて歯が欠けた漏れが申しておりますがときに皆の衆どうよ。

# ちなみに>880の例はあくまで例であって、
# 「そりゃ@aを生で晒したらいじり放題なの当たり前やん」ってのは野暮な突っ込みだよね?
882デフォルトの名無しさん:2006/04/13(木) 04:08:29
>>876
確認した。
長いファイル名だと駄目みたいだな。
パスが255文字以上の時の問題じゃなかろうか。
ソース読めば分かるのかな?
883デフォルトの名無しさん:2006/04/13(木) 04:09:40
>>878
ラッパー作って、破壊不可にするのがスマートじゃね?
884デフォルトの名無しさん:2006/04/13(木) 05:52:30
DVD-R などに焼くときと似た問題だったりして > ファイル名の長さ
885デフォルトの名無しさん:2006/04/13(木) 11:40:50
誰かおぶじぇくとしこうしろうとな俺のためにObject#thawがない理由を教えてくれ。
886デフォルトの名無しさん:2006/04/13(木) 11:47:14
>>885
freezeが解けたら意味ないからじゃないの。
887デフォルトの名無しさん:2006/04/13(木) 17:55:40
dir.cみてたけどどこみればいいのかww
888デフォルトの名無しさん:2006/04/13(木) 18:00:35
object#untaintはセキュリティホールに繋がりかねないから即刻廃止すべきだ
889デフォルトの名無しさん:2006/04/13(木) 18:22:56
ruby自体セキュリティホールにつながりかねないから即刻廃止するべきだ。
890デフォルトの名無しさん:2006/04/13(木) 22:33:44
>>887
どうでもいいけどCharNextいらね。
ついでにglob_call_funcもいみね。
891デフォルトの名無しさん:2006/04/14(金) 09:30:52
hase = Hash.new{[]}
これが動かないのは納得できない
892デフォルトの名無しさん:2006/04/14(金) 10:05:26
>>891
動いてるみたいだけど?

hase がどうなるのを期待してるの?
893デフォルトの名無しさん:2006/04/15(土) 00:35:43
あるクラスのサブクラスの一覧を取得するような
ancestors の逆みたいなものってありますか?

class Command; end
class Ls < Command; end
class Rm < Command; end

ってあった場合に、[Ls, Rm] という結果がほしいです。
894デフォルトの名無しさん:2006/04/15(土) 00:46:00
Objectでそのメソッドつかうと
クラスツリーができるわけだな
895デフォルトの名無しさん:2006/04/15(土) 06:44:05
>>892

hase = Hash.new{|hash,key| hash[key] = [] }

上のような結果が得られないのが納得できないのでは?
まぁ、はまりやすいポイントですな。
そんな私もはまりました。デフォルト値と初期化を勘違いしてた…
896デフォルトの名無しさん:2006/04/15(土) 14:39:40
>>893
class Command
@@children = []
def self.inherited(child)
@@children << child
end
def self.children
@@children
end
end

class Ls < Command; end
class Rm < Command; end

p Command.children # => [Ls, Rm]
897デフォルトの名無しさん:2006/04/15(土) 18:18:05
alias descendants children
898896:2006/04/15(土) 19:48:31
>>897
クラス変数が継承されるの忘れてたorz
でもこれじゃchildrenでもdescendantsでもなくてrelativesだな。
899デフォルトの名無しさん:2006/04/16(日) 07:01:31
う〜ん。

h = Hash.new
Module.constants.sort.each do |i|
 con = Object.const_get(i)
 next unless con.class==Class
 con.ancestors.each do |mod|
  next if mod==con
  next unless mod.class==Class
  h[mod.name] ||= []
  h[mod.name].push con.name
  break
 end
end
h.each_key do |k|
 puts k
 h[k].each {|i| puts "\t" + i}
end
900デフォルトの名無しさん:2006/04/16(日) 15:09:21
>>896,899
あまり何も考えずにancestorsの逆があればいいのになぁ。。。
と思ってたんですが一般化しようとすると結構面倒そうですね。

今回は継承も1段階で単純なので以下のようにしました。
どうもありがとうございました。

module Shell
HOGE = 1
class Command
def self.commands
Shell.constants.map {|e| Shell.const_get(e) }.find_all {|e| Class === e and e < self }
end
end
class Ls < Command; end
class Rm < Command; end
class Hoge; end
end

p Shell::Command.commands # => [Shell::Rm, Shell::Ls]
901デフォルトの名無しさん:2006/04/17(月) 11:46:41
クラスのインスタンス変数を使えばいいんじゃね?
メソッド名は気にしない方向でこんな感じ?

class C
def self.subclasses
(@subclasses ||= [])
end
def self.inherited(c)
subclasses << c
end
def self.descendants
subclasses + subclasses.map do |c|
c.subclasses
end.flatten
end
end

class D1 < C
end

class D2 < C
end

class E1 < D1
end

p(C.subclasses) # => [D1, D2]
p(C.descendants) # => [D1, D2, E1]
p(D1.descendants) # => [E1]
902デフォルトの名無しさん:2006/04/17(月) 20:56:24
~/.irbrc
ってWinだとどこのディレクトリになるの?
903デフォルトの名無しさん:2006/04/18(火) 00:02:12
>902
"~"がどこに当たるかって話だよね?

NT系だと%USERPROFILE%
(たいていC:\Documents and Settings\ユーザー名)

9x系は分からん。
904デフォルトの名無しさん:2006/04/19(水) 01:04:21
>>903
1.9ユーザ発見。

> NT系だと%USERPROFILE%

基本的には%HOME%だけど、1.9では、初期化時に設定されていなければ、
以下の順序で最初に見付かったものをセットするようになっている。

1 %HOMEDRIVE%%HOMEPATH%
2 %USERPROFILE%
3 マイ ドキュメント
905903:2006/04/19(水) 02:41:50
>904
あり? 漏れ1.8.4(i386-mswin32)だがそれでいけたけど。
ちなみにHOMEを別途設定して、%HOME%に.irbrcを置いても
%HOMEDRIVE%%HOMEPATH%に.irbrcを置いても読んでるぽい。(両方に置いたらどうなるかは試してない)
ひょっとしてirbが自力更生(?)してるのかな。ソース読む気力無いので後は知らない(ぉぃ)

てか%USERPROFILE%より%HOMEDRIVE%%HOMEPATH%が先なのか。スマソ>902
906デフォルトの名無しさん:2006/04/19(水) 09:34:07
>>905
irbはカレントディレクトリにあるのも読むぞ。
そういうことじゃないか?
907デフォルトの名無しさん:2006/04/19(水) 21:41:13
x = [[1, 2, 3], [5, 3, 7], [1, 1, 7], [3, 2, 9], [5, 4, 8]]
みたいなArrayを
p x.sort_ex
#=>[[1, 2, 3], [1, 1, 7], [3, 2, 9], [5, 3, 7], [5, 4, 8]]
みたいに一番最初の要素のみでソート(重複した場合はソースの順番)したいんですが何かお手軽な方法はありますか?
普通にsortすると2番目以降も反映されてしまいますし
def sort_ex
 self.sort{|a, b|
  a[0]<=>b[0]
 }
end
みたいにすると重複した場合にソースの順番がバラバラになってしまいます
908デフォルトの名無しさん:2006/04/19(水) 22:12:08
>>907
[[1, 2, 3], [5, 3, 7], [1, 1, 7], [3, 2, 9], [5, 4, 8]].sort_by {|e| e[0]}
909デフォルトの名無しさん:2006/04/19(水) 22:18:03
>>908
sort_byだと安定じゃないみたいなので907の望むのとは違ってるよ。

ヘルプに載ってた例だけど、下のような感じで書けばいいらしい。
i = 0
ary.sort_by {|v| [v, i += 1] }

でも、i が綺麗じゃないねぇ。
910デフォルトの名無しさん:2006/04/20(木) 00:18:16
>906
……その通りですたorz
重ね重ね相済まぬ>902
911デフォルトの名無しさん:2006/04/20(木) 01:17:53
stable_sort_by実装すればいいやんけ
912デフォルトの名無しさん:2006/04/20(木) 03:02:57
def stable_sort_by
self.zip((0..self.size).to_a).sort_by{|e| [yield(e[0]),e[1]]}.map{|e| e[0]}
end
913デフォルトの名無しさん:2006/04/20(木) 19:15:47
zip のところを enum_for(:each_with_index) にするとより変態チックでよいと思います
914912:2006/04/20(木) 21:56:14
>>913
enum_for知らなかった。こりゃ便利。

def stable_sort_by
self.enum_for(:each_with_index).sort_by{|e,i| [yield(e),i]}.map{|e,| e}
end
915デフォルトの名無しさん:2006/04/21(金) 01:30:36
enum_with_indexも思い出してあげて。
916907:2006/04/22(土) 02:07:35
レスありがとうございます
出来ました…が、使ってみてリバースソートできないことに気が付いた…il||li ○| ̄|_
もう少しいじってみます…
917デフォルトの名無しさん:2006/04/22(土) 04:49:26
- e[0] では?
918デフォルトの名無しさん:2006/04/23(日) 03:28:45
環境が連続してると勘違いしてんのか
919デフォルトの名無しさん:2006/04/23(日) 09:39:04
>>918
kwsk
920デフォルトの名無しさん:2006/04/23(日) 16:38:35
↓の2つのクラスのf.puts以外のところを共通化したいんだけどいいパターンないですか?
class BBS
 FILE='bbs.txt'
 def initialize
  @db=PStore.new('bbs.db')
 end
 def print
  @db.transaction{
   @db.roots.each{|name|
    x=@db[name]
    file=File.join(x['dir'],FILE)
    if(!File.exist?(file),'w') then
     open(file){|f| f.puts(x['url'])
    end
   }
  }
 end
end
class Sure
 FILE='sure.txt'
 def initialize
  @db=PStore.new('sure.db')
 end
 def print
  @db.transaction{
   @db.roots.each{|name|
    x=@db[name]
    file=File.join(x['dir'],FILE)
    if(!File.exist?(file)) then
     open(file,'w'){|f| f.puts(x['title'])
    end
   }......
921デフォルトの名無しさん:2006/04/23(日) 16:58:31
#テキトー。細かい仕様は知らぬ。
class MyPrint #モジュールでも良いかもね
 def print
  @db.transaction{
   @db.roots.each{|name|
    x=@db[name]
    file=File.join(x['dir'],FILE)
    if(!File.exist?(file),'w') then
     open(file){|f| fputs f, x }
    end
   }
  }
 end
end
class BBS < MyPrint
 FILE='bbs.txt'
 def initialize
  @db=PStore.new('bbs.db')
 end
 def fputs(f, x)
  file.puts(x['url'])
 end
end
class Sure < MyPrint
 FILE='sure.txt'
 def initialize
  @db=PStore.new('sure.db')
 end
 def fputs(f, x)
  file.puts(x['title'])
 end
end
922921:2006/04/23(日) 16:59:33
ミス。fputs メソッドの中身は file.puts じゃなくて f.puts だった。
923デフォルトの名無しさん:2006/04/23(日) 21:47:12
>>911
FILEは?
924デフォルトの名無しさん:2006/04/23(日) 22:35:39
ActiveScriptRuby対応エヂタ
http://www.emeditor.com/jp/pro6.htm
925デフォルトの名無しさん:2006/04/24(月) 08:53:47
>>920
f.putsのところを別メソッドに切り出す。
class AbstractBBS
 def func()
  raise NotImplementedError.new # 切り出した部分
 end
 def print
  ...
  func()
  ...
  end
end

class BBS < AbstractBBS
 def func()
  # f.putsの処理その1
 end
end

class Sure < AbstractBBS
 def func()
  # f.putsの処理その2
 end
end
926デフォルトの名無しさん:2006/04/24(月) 10:56:09
>>925
ありがとうございます
NotImplementedErrorなんてのがあるのか
抽象メソッドが作れるですな
927デフォルトの名無しさん:2006/04/25(火) 13:51:15
なんかこのスレにウィルスがいるとノートン先生に怒られるなあ。
928デフォルトの名無しさん:2006/04/25(火) 13:52:02
929デフォルトの名無しさん:2006/04/25(火) 14:56:22
こんなmail欄ごときに反応してるのか orz
930デフォルトの名無しさん:2006/04/25(火) 18:24:30
>>929
なるほど、そういうことでつか。
931デフォルトの名無しさん:2006/04/25(火) 18:51:11
UNIX/Linuxさえなければこんな迷惑をこうむらずにすんだのにな。
932デフォルトの名無しさん:2006/04/25(火) 21:20:03
vbs反応するから、どっちにしてもかわらんよ
933デフォルトの名無しさん:2006/04/25(火) 22:00:50
単に、こんなもんに反応するノートン先生が狂ってる。
934デフォルトの名無しさん:2006/04/25(火) 22:12:05
ノートン先生に感染するウィルスは無いのだろうか
935デフォルトの名無しさん:2006/04/25(火) 23:40:24
ノートン先生って神経質なマッドサイエンティストっぽいな。
936デフォルトの名無しさん:2006/04/26(水) 00:22:19
>935
ttp://nijiura-os.hp.infoseek.co.jp/security/norton/01.jpg
まさにその通りなんですけど?
937デフォルトの名無しさん:2006/04/26(水) 20:17:31
これで相殺
938デフォルトの名無しさん:2006/04/26(水) 20:58:47
普通に迷惑だからやめてくれ
939デフォルトの名無しさん:2006/04/28(金) 00:08:52
>>872
忘れかけてた。これどうなった?>>882くらいで終わってる感じだけど。
ソース読み切れなくてもいいからさ、確認できた人が報告した方が将来の誰かのためにもなると思うよ。複数の環境で再現できるのが確認できてるわけだし。
940デフォルトの名無しさん:2006/04/28(金) 00:49:13
>>939
Cygwin だと Ruby に限らずファイル開けないっぽいね。
941・∀・)っ-○●◎ ◆Pu/ODYSSEY :2006/04/28(金) 00:56:55
ActiveScriptRubyならおkじゃね?
Cygwin版使うのはApache立ち上げて自作CGIのテストやるとき
942デフォルトの名無しさん:2006/04/28(金) 01:19:30
>>939
Cygwin 側の問題ならスレ違い
別の言語や別の環境で試してみてくれよ
943デフォルトの名無しさん:2006/04/28(金) 01:41:09
再現スクリプトきぼーん。
944デフォルトの名無しさん:2006/04/28(金) 05:28:30
945デフォルトの名無しさん:2006/04/28(金) 13:49:53
>>939
メンテナが対応パッチまで作ってたから、報告はいらないんじゃね?
946939:2006/04/28(金) 17:53:39
>>940
>>942
>>945
洩れが無知でした。情報さんくす。ていうか正直すまんかった
947デフォルトの名無しさん:2006/04/28(金) 22:08:59
Rubyで名前付きパイプを扱う方法ありませんか?
948デフォルトの名無しさん:2006/04/28(金) 22:27:19
どういうプラットフォームで?

ext/dl 使えばなんでもできそうな気はする、とは言っておこう。
949・∀・)っ-○●◎ ◆Pu/ODYSSEY :2006/04/28(金) 22:37:07
ActiveScriptRubyなら普通にAPIコールでCreatePipe呼べばいいと思うよ
950デフォルトの名無しさん:2006/04/28(金) 22:40:58
ぷう
951デフォルトの名無しさん:2006/04/29(土) 00:31:58
おねにぃさま
952デフォルトの名無しさん:2006/04/29(土) 01:19:00
Rubyリファレンスマニュアルのwikiの字句構造の埋め込みドキュメントの説明だけど、今時は、もはやRDじゃなくてRDocスタイルを推奨すべきでは?
953947:2006/04/29(土) 05:31:18
>>948
Linux です

system("mkfifo hoge") で、FIFO作るのはできるんだけど、
opneして、getsで読み込み一回したあとは gets が即 nil で返ってきちゃう。
あと、書き込み側がopenするまで open() から返ってこないのも・・・

Cで
mkfifo()
open("hoge", O_RDONLY|O_NONBLOCK) した時と同様の挙動をさせたいんですが、
どうすればいいんでしょうか。
954デフォルトの名無しさん:2006/04/29(土) 14:29:13
>>953
File.open("hoge", File::RDONLY|File::NONBLOCK)
955デフォルトの名無しさん:2006/04/29(土) 20:10:32
今日のざっと見て3倍の速度(赤い彗星?)
今日のドナドナ夫
今日の黄金水
今日の「やっぱこれからはデジモでしょ」
今日のがまん汁委員会
今日の「あーそうさ.オレらはどうせしもじもですよ.」
今日の「やっぱイジメたいです.とことんまで.」
今日の「最近ヤツの動きが少なくてツマラン」
今日の「tDiaryはモテ系ってマジ?」
今日の「クソババァって誰のことよ?」
956デフォルトの名無しさん:2006/04/30(日) 00:06:36
>>952
日本の Ruby コミュニティは RDoc 好きじゃないんじゃない?
標準ライブラリには入ってるけど積極的に使ってる人いない気がする
957デフォルトの名無しさん:2006/04/30(日) 10:04:48
ていうかみんな使い方分かってないんじゃまいか。
いいサイト紹介キボン。
958デフォルトの名無しさん:2006/04/30(日) 13:09:04
試してないだろ?
ちょこちょこ使う分なら、ググった出てくる情報をさっと読めば使えると思うが。
最近は、日本語の説明も見掛けるし。
下手すりゃ RD よか、よっぼど分かりやすい。
959デフォルトの名無しさん:2006/04/30(日) 13:55:37
RDoc使う利点て何?
いや、煽りじゃなくて。
どんな時につかうのかなーと思って。
ソース内のコメントに使う?
960デフォルトの名無しさん:2006/04/30(日) 15:16:28
ソースから文書を生成できるから。最近の言語にはみんな付いてるよ。使われてるかはさておて。
961デフォルトの名無しさん:2006/04/30(日) 15:33:48
Rubyのライセンスって、GPLとどう違うの?
COPYING読んだら「GPLに基づく」と書いてあるけど、でもGPLそのままというわけではないんだよね。
962デフォルトの名無しさん:2006/04/30(日) 17:04:39
GPLだと著作権も放棄同然、
BSDだと論文と同じ扱いで著作権は堅持、
この中間で行くってことじゃないの?
963デフォルトの名無しさん:2006/04/30(日) 17:44:08
>>962 日本語でおk
964デフォルトの名無しさん:2006/04/30(日) 20:55:10
>>963
むしろ日本語としては問題ないが意味がわからない。
A=B,B=CなのでA=(B+C)/3
と言ってるようなもん。
965デフォルトの名無しさん:2006/04/30(日) 21:00:00
どっちかって言うとBSDのほうがゆるいライセンスだと思うんだけどな。
966・∀・)っ-○●◎ ◆Pu/ODYSSEY :2006/04/30(日) 21:03:25
GPLに基づくってのはGPLそのもの。
いちどGPLを選択したら他のライセンスに変更できない融通のきかなさ。


>>965
商用利用考えるなら普通はBSDライセンスのほうが流用しやすい
967デフォルトの名無しさん:2006/05/01(月) 16:37:29
英文を読んで意味がわからないならCOPYING.jaを読めばいいのに。
デュアルライセンスだからGPLまたは下記のライセンスに従え、と書いてあるだけじゃん。
968デフォルトの名無しさん:2006/05/02(火) 00:19:17
end end end end end end end
↑これどうにかならない?
969デフォルトの名無しさん:2006/05/02(火) 00:43:59
>>968
スーパー括弧みたいのが欲しいってこと?
970デフォルトの名無しさん:2006/05/02(火) 01:02:04
begin と end ってのは、大失敗だったと思う。
{と}で良かった。
971デフォルトの名無しさん:2006/05/02(火) 01:08:09
補完なしでしこしこ作ってるから閉じるのが面倒になってきたんだ
end*8 みたいにすると do の数を数えなきゃならないから逆効果

解決方法思いついたけどPythonになった orz
972デフォルトの名無しさん:2006/05/02(火) 01:13:27
973デフォルトの名無しさん:2006/05/02(火) 08:15:23
endclass, enddef, endif, enddo
974デフォルトの名無しさん:2006/05/02(火) 09:40:14
ssalc, fed, fi, od
975デフォルトの名無しさん:2006/05/02(火) 10:20:32
補完とかそういうことが問題じゃないんだ
end乱舞は見た目がきもい
976デフォルトの名無しさん:2006/05/02(火) 10:23:10
} 乱舞は気にならないの?
977デフォルトの名無しさん:2006/05/02(火) 10:24:40
おまえはきもいだろうが、俺はきもくない。以上。終了。
978デフォルトの名無しさん:2006/05/02(火) 11:25:48
>>976
end よりはマシ
スクリプト言語だぞゴラァと言いたいためだけに
わざわざbegin end を使っているとすら感じる
979デフォルトの名無しさん:2006/05/02(火) 11:46:01
vi なので { } でないと辛い。
980デフォルトの名無しさん:2006/05/02(火) 11:48:24
そこまでネストするプログラムを書く、
お前のヘタレプログラミングをなんとかするか、
Pythonに鞍替えすればいいじゃん。

今更どーこー言おうが、{}にはならんよ。
互換性がどうこううるさいヤツもいるってのに。
981デフォルトの名無しさん:2006/05/02(火) 11:52:00
>解決方法思いついたけどPythonになった orz

おぇっ やめてくれ
あの趣味の悪さと中途半端さ、途中でどの言語で
書いてるか判らなくなる文法の汚さは、悪魔の言語

982デフォルトの名無しさん:2006/05/02(火) 12:00:41

はいはい、貴方が大好きなC系の言語に似てないと、全部汚い文法なんだよねー。
983デフォルトの名無しさん:2006/05/02(火) 12:18:05
>>982
良くわかってんじゃん。
984デフォルトの名無しさん:2006/05/02(火) 12:55:53
↑自分が低脳晒してるのに気付いてないのね
985デフォルトの名無しさん:2006/05/02(火) 14:20:14
>>979
vimに乗り換えればOK
986デフォルトの名無しさん:2006/05/02(火) 14:33:42
ネストしないプログラムをかけれるような文法と言語ってどんなんだろう

Perlの暗黙標準出力なんかがぱっと浮かんだけど
987デフォルトの名無しさん:2006/05/02(火) 15:04:49
条件文や繰り返し文がクロージャを引数として取る関数として実装されていて、かつ、無名クロージャを書くことができない文法であればネストしないプログラムを書くしかなくなるのではないだろうか。
988デフォルトの名無しさん:2006/05/02(火) 16:44:09
テキストでプログラム表現しないこと前提にすればいいんじゃね
989デフォルトの名無しさん:2006/05/02(火) 17:11:37
RubyはC系じゃない文法だから逆によい。
C系は普段使う/使わざるを得ない古女房。Rubyは誰にもないしょで出会う秘密の恋人。

つまりだな、Rubyは一夫多妻制という教祖の思想を反映した言語だったんだよ!
990デフォルトの名無しさん:2006/05/02(火) 17:42:10
な、なんだってー(AAry と返してやりたいが、内容はふーんそうでしかないな
991デフォルトの名無しさん:2006/05/02(火) 18:00:30
endで文句いう人って、対応関係がわからないから文句いってるのかな。
カッコだったら簡単にわかるけど、endだとそれがわからない。
もしそれだけが問題なら、例えばendにカーソルをおくと対応するifやdefをハイライト表示するような、
エディタのマクロやIDEのプラグインを誰かが用意してあげればいいってこと?
それ以外に問題点ってある?
992デフォルトの名無しさん:2006/05/02(火) 18:17:49
ワンライナーが ; だらけで汚くなるとか?
993デフォルトの名無しさん:2006/05/02(火) 18:49:35
1.9 で一年弱ほどの間、end のかわりに ;; が使えるようになってたけど
不評なので取り下げるそうだ。

[ruby-dev:28608]
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/28608
994デフォルトの名無しさん:2006/05/02(火) 19:46:10
そりゃbeginが残ってendだけ;;にしたら、pythonもびっくりの汚さになっちゃうからねw
995デフォルトの名無しさん:2006/05/02(火) 19:47:13
>>991
ハイライト表示用の設定ファイル有った希ガス
996デフォルトの名無しさん:2006/05/02(火) 21:33:09
endが3文字なのに対してbeginが5文字もあるのがバランス悪いと言われる原因


begにしよう
997デフォルトの名無しさん:2006/05/02(火) 21:36:12
(そうだ、括弧にしよう)
998デフォルトの名無しさん:2006/05/02(火) 21:44:41
>>994
beginが残ってて…

お前本当にRubyやってんのか?
999デフォルトの名無しさん:2006/05/02(火) 22:10:31
Rubyについて Part 20
http://pc8.2ch.net/test/read.cgi/tech/1146575324/

テンプレに不備とかあったらスマン
1000デフォルトの名無しさん:2006/05/02(火) 22:17:34
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。