[#14185] ruby on Linux/m68k — akira yamada / やまだあきら <akira@...>
[#14196] fork() on MacOS — nobu.nakada@...
なかだです。
[#14206] undef_method :method_missing — Kenichi Komiya <kom@...1.accsnet.ne.jp>
なかだです。
なかだです。
金光です。
むらけんです.
金光です。
金光です。
金光です。
金光です。どもっ。
むらけんです.
なかだです。
金光です。どもっ。
金光です。
金光です。FOXとかもあるのかぁ。すげぇなぁ。
まつもと ゆきひろです
金光です。御大、待ってましたっ。
なかだです。
金光です。どもどもっ。
なかだです。
さくです。
まつもと ゆきひろです
金光です。どもっ。
まつもと ゆきひろです
金光です。どもどもっ。
まつもと ゆきひろです
岩月と申します。
金光です。どもっ。
岩月と申します。
むらけんです.
楠です
むらけんです.
有馬です。
金光です。
有馬です。
金光です。どもっ。
とみたです。
金光です。
とみたです。
金光です。
まつもと ゆきひろです
金光です。(^_^;
あづみです。
有馬です。
金光です。
有馬です。
金光です。どもっ。
有馬です。
むらけんです.
むらけんさん wrote:
むらけんです.
長沢です。
まつもと ゆきひろです
金光です。どもっ。
有馬です。
金光です。どもどもっ。
むらけんです.
金光です。いちおうフォローだけ
ふなばです。
一応フォローだけ、ほんとにちょっとだけっすよ
[#14229] [BUG] segv on [str].pack("p") — Koji Arai <JCA02266@...>
新井です。
なかだです。
新井です。
なかだです。
[#14338] setup.rb (Re: Common GUI framework) — Minero Aoki <aamine@...>
あおきです。
[#14382] [BUG] segv on regex matching with long string — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
[#14390] [Patch] pp.rb and debug.rb — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです。
In article <DJEGJLCFNEIMKDNMLFPHCEPJCAAA.nakahiro@sarion.co.jp>,
なひです。
まつもと ゆきひろです
In article <DJEGJLCFNEIMKDNMLFPHCEPJCAAA.nakahiro@sarion.co.jp>,
あおきです。
In article <20010809221751J.aamine@mx.edit.ne.jp>,
なひです。書き忘れ。
なかだです。
nobu.nakada@nifty.ne.jpさんの
なひです。
なかだです。
In article <DJEGJLCFNEIMKDNMLFPHMEAHCBAA.nakahiro@sarion.co.jp>,
なひです。
In article <DJEGJLCFNEIMKDNMLFPHEEAICBAA.nakahiro@sarion.co.jp>,
なひです。
まつもと ゆきひろです
In article <997774251.527258.14423.nullmailer@ev.netlab.jp>,
まつもと ゆきひろです
In article <997783083.657819.14685.nullmailer@ev.netlab.jp>,
なひです。
In article <DJEGJLCFNEIMKDNMLFPHEEALCBAA.nakahiro@sarion.co.jp>,
なひです。
In article <DJEGJLCFNEIMKDNMLFPHEEAPCBAA.nakahiro@sarion.co.jp>,
なひです。
In article <DJEGJLCFNEIMKDNMLFPHMEBACBAA.nakahiro@sarion.co.jp>,
なひです。
In article <DJEGJLCFNEIMKDNMLFPHIEBBCBAA.nakahiro@sarion.co.jp>,
うぅむ。ぼーっとしてたら意味もなく Subject を変えてしまった。
In article <20010817205051.UAZHC0A8274C.C78F0C8A@mail.biglobe.ne.jp>,
あづみです。
In article <hvo66bnxe4b.fsf_-_@flux.etl.go.jp>,
古い話題で恐縮ですが…
なかだです。
In article <200109290948.f8T9mbh12942@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
まつもと ゆきひろです
In article <1001945748.240863.24023.nullmailer@ev.netlab.jp>,
なかだです。
In article <200110020334.f923YLb08299@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200110021010.f92AAIb13474@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
まつもと ゆきひろです
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
In article <1002080461.740444.11187.nullmailer@ev.netlab.jp>,
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
あづみです。
[#14406] typo in ruby 1.7 — Koji Arai <JCA02266@...>
新井です。
[#14413] 1.7.1 2001-08-06: if true && /match/ — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
[#14465] Ruby/Bsearch — akira yamada / やまだあきら <akira@...>
まつもと ゆきひろです
At Wed, 15 Aug 2001 18:01:50 +0900,
"Akinori MUSHA" <knu@iDaemons.org> wrote:
In article <20010816001456V.satoru@namazu.org>,
Tanaka Akira <akr@m17n.org> wrote:
In article <20010816130056C.satoru@namazu.org>,
[#14480] avoid compile warning of tcltklib with VC5 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
[#14505] BUG: ruby 1.6.4 cannot use threads on Sparc (segv) — akira yamada / やまだあきら <akira@...>
[#14530] restore terminal mode even if readline interrupted. — Koji Arai <JCA02266@...>
新井です。
新井です。
新井です。
新井です。
At Wed, 5 Sep 2001 00:19:51 +0900,
まつもと ゆきひろです
[#14552] read in IO#eof? — nobu.nakada@...
なかだです。
[#14575] infinite loop on Dir.glob("*/**/*") — nobu.nakada@...
なかだです。
[#14577] option nodynamic — Daisuke Aoki <dai@...>
青木@横浜です。
[#14595] SEGV at `$0 = "long long string"' — nobu.nakada@...
なかだです。
なかだです。
まつもと ゆきひろです
[ruby-dev:14519] custom marshal (Re: Re: marshal API (was Re: [Patch] pp.rb and debug.rb))
In article <DJEGJLCFNEIMKDNMLFPHIEBBCBAA.nakahiro@sarion.co.jp>,
"NAKAMURA, Hiroshi" <nakahiro@sarion.co.jp> writes:
> そうですねー。custom marshalについて興味のある人が
> 行くべきコミュニティはどこでしょう?
べつに場所を移れといっているわけではなく、最初から用途・興味を明らかに
してほしい、というだけなんですが。
とゆーわけで custom marshal の話ですが、せっかくあそこまで書いたので大
雑把に仕上げてみました。
で、気がついたんですが、Range オブジェクトを含むサイクルがあるとちっと
問題ですね。
class B
attr_accessor :v
def succ
end
def <=>(other)
end
end
b = B.new
c = B.new
a = b..c
b.v = a
というような構造を Ruby script で作るにはかならず a を後に作らなければ
ならないんですが、marshal でそれを保証するのはすこし面倒そうです。
最悪、(Marshal.load "\004\006o:\nRange\010:\010endi\a:\nbegin@\000:\texclF"
などとしてむりやり作った) Range だけからなるサイクルもありえるわけですし。
というわけで、Range#begin= や Range#end= が欲しくなった今日この頃です。
# ちなみに、Range#inspect はサイクルを検出しないようですね。
class AMarshal
def AMarshal.load(port)
port = port.read if port.kind_of? IO
eval port
end
def AMarshal.dump(obj, port='')
am = AMarshal.new(obj, port)
am.print "#{am.put1(obj)}\n"
port
end
def put(obj)
traverse(obj) {|state|
put1(obj) if state == :tree
}
return @name[obj.__id__]
end
def put1(obj)
@name[obj.__id__] = "object#{obj.__id__}"
obj.am_dump(self) {|name| @name[obj.__id__] = name if name; @name[obj.__id__]}
return @name[obj.__id__]
end
def print(*args)
args.each {|v| @port << v}
end
def initialize(obj, port)
@curr = @number = 1
@hash = {obj.__id__ => -1}
@port = port
@name = {}
end
def status(obj)
id = obj.__id__
unless @hash.include? id
return :tree
end
number = @hash[id]
if number < 0
return :backward
elsif @curr < number
return :forward
else
return :cross
end
end
def traverse(obj)
if (s = status(obj)) == :tree
id = obj.__id__
number = @number += 1
@hash[id] = -number
prev = @curr
@curr = number
yield s
@curr = prev
@hash[id] = number
else
yield s
end
end
end
class Class
def basic_new
return Marshal.load(sprintf("\004\006o:%c%s\000", name.length + 5, name))
end
end
[IO, Binding, Continuation, Data, Dir, File::Stat, MatchData, Method, Proc, Thread, ThreadGroup].each {|c|
c.class_eval {
def am_dump(am);
raise TypeError.new("can't dump #{self.class}")
end
}
}
class Object
def am_dump(am)
name = yield
am.print "#{name} = #{self.class.name}.basic_new\n"
instance_variables.each {|var|
value = instance_eval var
am.print "#{name}.instance_eval {#{var} = #{am.put(value)}}\n"
}
end
end
class Module
def am_dump(am)
yield self.class.name
end
end
class Array
def am_dump(am)
name = yield
am.print "#{name} = Array.new(#{length})\n"
self.each_index {|i|
am.print "#{name}[#{i}] = #{am.put(self[i])}\n"
}
end
end
class Exception
def am_dump(am)
name = yield
am.print "#{name} = Exception.new(#{am.put(self.message)})\n"
am.print "#{name}.set_backtrace #{am.put(self.backtrace)}\n"
# xxx: exception object is created at last.
end
end
class Hash
def am_dump(am)
name = yield
am.print "#{name} = Hash.new\n"
self.each {|k, v|
am.print "#{name}[#{am.put(k)}] = #{am.put(v)}\n"
}
end
end
class Range
def am_dump(am)
name = yield
if self.exclude_end?
dots = '...'
else
dots = '..'
end
am.print "#{name} = #{am.put(self.begin)}#{dots}#{am.put(self.end)}\n"
# xxx: range object is created at last.
end
end
class Regexp
def am_dump(am)
name = yield
am.print "#{name} = /#{self.source}/\n"
end
end
class String
def am_dump(am)
name = yield
am.print "#{name} = #{self.dump}\n"
end
end
class Struct
def am_dump(am)
name = yield
args = (["nil"] * self.length).join(", ")
am.print "#{name} = #{self.class}.new(#{args})\n"
self.members.each {|m|
am.print "#{name}[:#{m}] = #{am.put(self[m])}\n"
}
end
end
class Symbol
def am_dump(am)
yield ":#{self.to_s}"
end
end
class Time
def am_dump(am)
name = yield
if self.utc?
am.print "#{name} = Time.utc(#{year}, #{mon}, #{day}, #{hour}, #{min}, #{sec}, #{usec})\n"
else
t = self.dup.utc
am.print "#{name} = Time.utc(#{t.year}, #{t.mon}, #{t.day}, #{t.hour}, #{t.min}, #{t.sec}, #{t.usec}).localtime\n"
end
end
end
class Fixnum
def am_dump(am)
yield self.to_s
end
end
class Bignum
def am_dump(am)
name = yield
am.print "#{name} = #{self}\n"
end
end
class Float
def am_dump(am)
name = yield
am.print "#{name} = #{self}\n"
end
end
class TrueClass
def am_dump(am)
yield "true"
end
end
class FalseClass
def am_dump(am)
yield "false"
end
end
class NilClass
def am_dump(am)
yield "nil"
end
end
# references:
# new marshal interface: ruby-dev:13184
# basic_new: ruby-list:23305, ruby-list:30338
--
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)