[#23031] description on fork and Process.fork — kjana@... (YANAGAWA Kazuhisa)

マニュアルみてて思ったんですけど,fork の記述に「失敗したら例外があが

21 messages 2000/06/02
[#23114] Re: description on fork and Process.fork — Takahiro Kambe <taca@...> 2000/06/08

In message <200006021503.AAA19483@mail3.os.xaxon.ne.jp>

[#23136] Re: description on fork and Process.fork — kjana@... (YANAGAWA Kazuhisa) 2000/06/09

In message <200006081406.e58E6JA16512@edge.sky.yamashina.kyoto.jp>

[#23138] Re: description on fork and Process.fork — Takahiro Kambe <taca@...> 2000/06/09

In message <200006091328.WAA23409@mail2.os.xaxon.ne.jp>

[#23139] Re: description on fork and Process.fork — matz@... (Yukihiro Matsumoto) 2000/06/09

まつもと ゆきひろです

[#23148] Re: description on fork and Process.fork — ARIMA Yasuhiro <fit0298@...> 2000/06/11

有馬です。

[#23150] Re: description on fork and Process.fork — Koji Arai <JCA02266@...> 2000/06/11

新井です。

[#23096] http.rb will change — Minero Aoki <aamine@...>

あおきです。

42 messages 2000/06/08
[#23100] Re: http.rb will change — matz@... (Yukihiro Matsumoto) 2000/06/08

まつもと ゆきひろです

[#23101] Re: http.rb will change — TAKAHASHI Masayoshi <maki@...> 2000/06/08

高橋征義です。

[#23103] Re: http.rb will change — matz@... (Yukihiro Matsumoto) 2000/06/08

まつもと ゆきひろです

[#23109] Re: http.rb will change — Wakou Aoyama <wakou@...> 2000/06/08

青山です。

[#23113] Re: http.rb will change — TAKAHASHI Masayoshi <maki@...> 2000/06/08

高橋です。

[#23124] Re: http.rb will change — Wakou Aoyama <wakou@...> 2000/06/08

青山です。

[#23130] Re: http.rb will change — TAKAHASHI Masayoshi <maki@...> 2000/06/09

高橋征義です。

[#23131] Re: http.rb will change — Wakou Aoyama <wakou@...> 2000/06/09

青山です。

[#23135] Re: http.rb will change — Minero Aoki <aamine@...> 2000/06/09

あおきです。

[#23149] Re: http.rb will change — TAKAHASHI Masayoshi <maki@...> 2000/06/11

高橋征義です。

[#23174] Re: http.rb will change — Minero Aoki <aamine@...> 2000/06/12

あおきです。

[#23125] メソッドの中の動きを変える — Masahiro Kawata <kawata@...>

こんにちわ。かわた まさひろと申します。

11 messages 2000/06/09

[#23156] ports — Wakou Aoyama <wakou@...>

青山です。

37 messages 2000/06/11
[#23194] Re: ports — kenn@... 2000/06/12

長沢です。

[#23199] Re: ports — Wakou Aoyama <wakou@...> 2000/06/12

青山です。

[#23268] Re: ports — Noritsugu Nakamura <nnakamur@...> 2000/06/15

[#23273] Re: ports — Wakou Aoyama <wakou@...> 2000/06/15

青山です。

[#23278] Re: ports — Noritsugu Nakamura <nnakamur@...> 2000/06/15

[#23279] Re: ports — Wakou Aoyama <wakou@...> 2000/06/15

青山です。

[#23280] Re: ports — matz@... (Yukihiro Matsumoto) 2000/06/15

まつもと ゆきひろです

[#23282] Re: ports — Wakou Aoyama <wakou@...> 2000/06/16

青山です。

[#23289] RD on www.ruby-lang.org (Re: ports) — Wakou Aoyama <wakou@...> 2000/06/16

青山です。

[#23291] Re: RD on www.ruby-lang.org (Re: ports) — matz@... (Yukihiro Matsumoto) 2000/06/16

まつもと ゆきひろです

[#23293] Re: RD on www.ruby-lang.org (Re: ports) — Wakou Aoyama <wakou@...> 2000/06/16

青山です。

[#23222] readablity of RD — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

78 messages 2000/06/13
[#23224] Re: readablity of RD — rubikitch <rubikitch@...> 2000/06/13

From: TAKAHASHI Masayoshi <maki@inac.co.jp>

[#23234] Re: readablity of RD — TAKAHASHI Masayoshi <maki@...> 2000/06/14

高橋征義です。

[#23246] Re: readablity of RD — Kenya Ogata <k_ogata@...> 2000/06/14

おがたといいます。

[#23255] Re: readablity of RD — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/06/14

Toshです。

[#23271] Re: readablity of RD — Kenya Ogata <k_ogata@...> 2000/06/15

おがたです。いくつか考えうる解決案を。

[#23275] Re: readablity of RD — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/06/15

Toshです。

[#23295] Re: readablity of RD — Wakou Aoyama <wakou@...> 2000/06/16

青山です。

[#23296] Re: readablity of RD — Wakou Aoyama <wakou@...> 2000/06/16

青山です。

[#23307] Re: readablity of RD — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/06/17

Toshです。

[#23310] Re: readablity of RD — Wakou Aoyama <wakou@...> 2000/06/17

青山です。

[#23320] Re: readablity of RD — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/06/17

Toshです。

[#23328] Re: readablity of RD — Wakou Aoyama <wakou@...> 2000/06/17

青山です。

[#23335] Re: readablity of RD — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/06/18

Toshです。

[#23349] Re: readablity of RD — Wakou Aoyama <wakou@...> 2000/06/18

青山です。

[#23470] Re: readablity of RD — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/06/22

Toshです。

[#23471] Re: readablity of RD — matz@... (Yukihiro Matsumoto) 2000/06/22

まつもと ゆきひろです

[#23563] Re: readablity of RD — Wakou Aoyama <wakou@...> 2000/06/27

青山です。

[#23570] Re: readablity of RD — matz@... (Yukihiro Matsumoto) 2000/06/28

まつもと ゆきひろです

[#23600] Re: readablity of RD — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/06/29

Toshです。

[#23603] Re: readablity of RD — Yasunari Momoi <momo@...> 2000/06/29

From: Toshiro Kuwabara <toshirok@yb3.so-net.ne.jp>

[#23605] Re: readablity of RD — matz@... (Yukihiro Matsumoto) 2000/06/29

まつもと ゆきひろです

[#23611] Re: readablity of RD — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/06/29

Toshです。

[#23235] nkf MIME space handling — "Kikutani, Makoto" <kikutani@...>

nkfモジュールは、MIMEのデコードもしてくれますが、

13 messages 2000/06/14

[#23410] Re: DBMS and ruby CGI — "Kahori Takeuchi" <EB89012@...>

14 messages 2000/06/21

[#23411] dump a single object — Hideto ISHIBASHI <hideto-i@...4u.or.jp>

石橋"rubyholic"秀仁です。

34 messages 2000/06/21
[#23412] Re: dump a single object — matz@... (Yukihiro Matsumoto) 2000/06/21

まつもと ゆきひろです

[#23424] Re: dump a single object — Masatoshi SEKI <m_seki@...> 2000/06/21

[#23434] Re: dump a single object — Hideto ISHIBASHI <hideto-i@...4u.or.jp> 2000/06/21

石橋"rubyholic"秀仁です。咳さん、こんばんわ。

[#23437] Re: dump a single object — Masatoshi SEKI <m_seki@...> 2000/06/21

[#23485] Ruby 1.4.5 — matz@... (Yukihiro Matsumoto)

Ruby 1.4.5 is out, check out:

35 messages 2000/06/23
[#23489] Re: Ruby 1.4.5 — Katsuyuki Komatsu <komatsu@...> 2000/06/23

小松です。

[#23495] Re: Ruby 1.4.5 — matz@... (Yukihiro Matsumoto) 2000/06/23

まつもと ゆきひろです

[#23518] Re: Ruby 1.4.5 — MICHIMURA Tadao <MICHIMURA.Tadao@...> 2000/06/26

どぉも、道村です。

[#23521] Re: Ruby 1.4.5 — Katsuyuki Komatsu <komatsu@...> 2000/06/26

小松です。

[#23522] Re: Ruby 1.4.5 — Katsuyuki Komatsu <komatsu@...> 2000/06/26

小松です。

[ruby-list:23437] Re: dump a single object

From: Masatoshi SEKI <m_seki@...>
Date: 2000-06-21 21:57:18 UTC
List: ruby-list #23437
咳といいます。

> > まさかやってないだろうと勝手に思い込んでました。
> > Rubyで環状なオブジェクトを dump するスクリプトを書いて、
> > ruby-list にポストする寸前にmashal 試したらびっくり。
> > ちゃんと共有されているオブジェクトは共有されて dump/load され
> > るんですよね。無駄になってしまった。# あ、xmarshal に混ぜれば良いのか。
> 
> それいいですね。ぼくも興味あります。

じゃああげます。恥ずかしいけど。

# Marshalのdump/load を試してびっくりした瞬間のソースですから
# サンプルが半端な状態です。勘で読んでください。

使い方)
  s = RefMarshal.dump(root), 
  root = RefMarshal.load(s)

私のはダサくて root から全てのオブジェクトを表にしまうのですが、
marshal.cはそのオブジェクトで必要な分しか表を作らないんです。


> > marshal.c読んでいて思ったんですけど、どうでしょう。
> > オブジェクトの構造をなめたりする作業はmarshalに任せて
> > marshalフォーマットの echoder/decoder みたいなの。

> そうなんですよ。ぼくが行き違いのメールに書いた、
>   > で、ぼくのやりたいのは、チェック*する*ほうです。ざっくり言えば、
>   > Marshal の出力形式が Hash になるというやつです。
> てのは、まさにそれなんですね。Iterator でアクセスできれば吉だと。
> 
> ただ、いちいち marshal を解析するより、marshal がそれを提供する
> ほうが美しいかなと。ドキュメントがないと、フォーマットの解析は
> ソースを読むしかなく、変更の波及が怖いです。

それはそうですね。
もし marshal.c に手を入れるなら、Marshal済みオブジェクトみたいのが
返ってくる方がいいかもしれないです。
下の RefMarshal::Map のような…

    

# Reference Marshal
#
# $Date: 2000/05/19 23:33:04 $
# Copyright (c) 2000 Masatoshi SEKI
#
# refmarshal.rb is copyrighted free software by Masatoshi SEKI.
# You can redistribute it and/or modify it under the same term as Ruby.

class Object
# __iv_get, __iv_set : import from xmarshal.rb
  def __iv_get(name)
    raise "invalid ivar name #{name}" if name !~ /^@\w+$/
    eval name
  end

  def __iv_set(name, val)
    raise "invalid ivar name #{name}" if name !~ /^@\w+$/
    eval "#{name} = val"
  end
end

module RefMarshal
  class Ref
    def initialize(obj)
      @ref = obj.id
    end
    attr_reader(:ref)
  end

  class Map
    def initialize(root)
      @root = root.id
      @map = {}
      ref_walk(root)
    end

    private
    def ref_walk(src)
      return if @map[src.id]

      @map[src.id] = true	# reserved
      begin
	obj = src.dup
      rescue TypeError		# nil, true, false ...
	@map[src.id] = src
	return
      end

      case src
      when Array
	src.each_with_index do |v,i|
	  ref_walk(v)
	  obj[i] = Ref.new(v)
	end
      when Hash
	src.each do |k,v|
	  ref_walk(k)
	  ref_walk(v)
	  obj.delete(k)
	  obj[Ref.new(k)] = Ref.new(v)
	end
      end

      ivs = obj.instance_variables
      ivs.each do |name|
	v = obj.__iv_get(name)
	ref = Ref.new(v)
	obj.__iv_set(name, ref)
	ref_walk(v)
      end
      @map[src.id] = obj
    end

    def resolve_ref(obj)
      case obj
      when Array
	obj.each_with_index do |v,i|
	  obj[i] = @map[v.ref] if v.kind_of? Ref
	end
      when Hash
	keys = obj.keys
	keys.each do |k|
	  v = obj[k]
	  if k.kind_of? Ref
	    obj.delete(k) 
	    k = @map[k.ref]
	  end
	  v = @map[v.ref] if v.kind_of? Ref
	  obj[k] = v
	end
      end
      
      ivs = obj.instance_variables
      ivs.each do |name|
	v = obj.__iv_get(name)
	if v.kind_of? Ref
	  v = @map[v.ref]
	  obj.__iv_set(name, v)
	end
      end
    end
    
    def resolve
      @map.each do |k, v|
	resolve_ref(v)
      end
      @map[@root]
    end

    public
    def root
      return @root unless @map
      @root = resolve
      @map = nil	# resolved
      @root
    end
  end

  def RefMarshal.dump(root, port=nil)
    m = Map.new(root)
    port ? Marshal.dump(m, port) : Marshal.dump(m)
  end

  def RefMarshal.load(data)
    m = Marshal.load(data)
    m.root
  end
end

# 以下はsample 
class Linked
  def initialize(v)
    @value = v
    @fwd = @bwd = self
  end
  attr_accessor(:fwd, :bwd, :value)
  
  def add(v)
    cell = Linked.new(v)
    cell.fwd = self.fwd
    cell.bwd = self
    self.fwd = cell
  end

  def each
    yield(@value)

    curr = self.fwd
    while curr != self
      yield(curr.value)
      curr = curr.fwd
    end
  end
end

list = Linked.new('I')
list.add('like')
list.add('Ruby')

list.each do |v|
  p v
end

p Marshal.dump(list)

toolong = Marshal.load(Marshal.dump(list))

toolong.each do |v|
  p v
end

p toolong


In This Thread