[#32171] autoload_delete — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
[#32185] Date#+に大きな数字を与えるとおかしな日付に — "madoka yamamoto" <yamamotomadoka@...>
こんにちは、山本と申します。
> Dateオブジェクトに+で大きな数字を与えるとおかしくなるようです。
山本です。
> アルゴリズムの意味がわからないで書いた、表層的なパッチなので
Hi,
> 1.9ではRationalとComplexを組み込みに、という話はありましたが、
原です。
ささだです.
[#32192] test-all results - ruby 1.9.0 (2007-11-09 patchlevel 0) [i686-linux] — SASADA Koichi <ko1@...>
ささだです.
[#32198] [提案] Array#tail — "Yusuke ENDOH" <mame@...>
遠藤と申します。
まつもと ゆきひろです
西山と申します
遠藤です。
[#32204] yydebug — Nobuyoshi Nakada <nobu@...>
なかだです。
[#32205] Use two pipes for duplex IO.popen — Tanaka Akira <akr@...>
改心して duplex な IO.popen で socketpair を使うのはやめよう
なかだです。
In article <20071111120021.7f0592e5.nobu@ruby-lang.org>,
[#32206] Integer#ord for 1.8 — Tanaka Akira <akr@...>
1.9 と 1.8 の両方で ?a.ord で 97 が得られるように、1.8 に
[#32219] trunkでビルド失敗 — KIMURA Koichi <kimura.koichi@...>
木村です。
[#32247] round missing (mswin32) — KIMURA Koichi <kimura.koichi@...>
木村です。
[#32263] toplevel irb method — SASADA Koichi <ko1@...>
ささだです.
まつもと ゆきひろです
[#32266] version string — SASADA Koichi <ko1@...>
ささだです.
[#32268] RFLOAT_VALUE(val), DOUBLE2NUM(dbl) — SASADA Koichi <ko1@...>
ささだです.
SASADA Koichi wrote:
[#32306] nanosecond Time and stat — Tanaka Akira <akr@...>
最近、nanosecond 単位な timestamp があるようです。
In article <874pflntd5.fsf@fsij.org>,
まつもと ゆきひろです
In article <E1Iu2GD-0004Wh-1I@x31>,
[#32308] core dump with undef/alias using dynamic symbols — Tadashi Saito <shiba@...2.accsnet.ne.jp>
斎藤と申します。
遠藤と申します。
ささだです.
遠藤です。
ささだです.
[#32329] enumerator with single array and multiple arguments. — Tanaka Akira <akr@...>
enumerator を通すとひとつの配列と複数の引数が区別できません。
[#32330] defined?($&) — Tanaka Akira <akr@...>
ふと気がついたんですが、defined?($&) が "expression" になり
まつもと ゆきひろです
まつもと ゆきひろです
ささだです.
[#32333] test/ruby/test_eval.rb — SASADA Koichi <ko1@...>
ささだです.
まつもと ゆきひろです
ささだです.
まつもと ゆきひろです
[#32348] DRb test leaves ut_eval.rb process — Tanaka Akira <akr@...>
DRb のテストをすると、(テストがいろいろと失敗する他に) プロ
[#32352] 1.9.1のリリース時期について — KIMURA Koichi <hogemuta@...>
木村です。
まつもと ゆきひろです
木村です。
まつもと ゆきひろです
[#32403] Next 1.8.6 patch release? (was Re: 1.9.1のリリース時期について) — Takahiro Kambe <taca@...>
こんばんは。
卜部です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
成瀬です。
卜部です。
遠藤と申します。
遠藤です。
ささだです.
まつもと ゆきひろです
[#32404] SEGV on child process by fork on GC.stress. — Tanaka Akira <akr@...>
GC.stress = true 下で fork すると子プロセスが SEGV します。
まつもと ゆきひろです
In article <E1Iy7HA-0006zn-37@x31>,
まつもと ゆきひろです
ささだです.
[#32409] Re: [ruby-cvs:21293] Ruby:r14056 (trunk): * signal.c (trap_signm): SIGVTALRM no longer used for green — SASADA Koichi <ko1@...>
ささだです.
さとうふみやす @ OSS テクノロジです。
ささだです.
まつもと ゆきひろです
[ruby-dev:32187] 特立のクラスのために新しいオペレータの提案
こんにちは、
このメールは長いけどこれを読めばいい。本当に値すると思います。
Rubyを進歩できる新しいオペレータが見付かったと思います。
長いから面白い物だけを読みたかったら記下の ==The cool stuff== から読んでください。
==イベントを探す==
まだ初心者だから次のクラスは間違えがあったら許してください。
僕はタイマーが欲しかった。Google で探してこのようなソースを見付かりました。
class Timer
def start (timeout)
th = Thread.new do
loop do
# タイマーの仕事
sleep(timeout)
end
end
end
end
これはいいだけどこのタイマーのクラスは時間だけじゃなくて他の仕事もしているじゃないか?
それはあまりよくありません。
また、このクラスを使いたかったら、新しいタイマーをつくるはずですから。
だから、自分で次のクラスを作った:
class Timer
def initialize (*arguments)
connections=[]
@arguments=arguments
end
def register_work ( pointer)
connections += pointer
end
def deregister_work (pointer)
connections -= pointer
end
def deregister_all
connections =[]
end
def list
connections.each { |l| puts "#{l}" }
end
def start (timeout)
th = Thread.new do
loop do
# work done by the timer
connections.each { |l| l.call(*@arguments) }
sleep (timeout)
end
end
end
end
pointerは他のオブジェクトのメソッドです。
このクラスは一般的に使えるようになりました。
仕事は仕事をしなければならないクラスの中でしています。
タイマーは時間と関係がある仕事だけしています。
それに、タイマーは一つ、たくさんのメソッドと繋ぎ合わせます。
これはいいだけど、いつも毎クラスにこのいくつのメソッドを作るのはよくありません。
もちろん、mixinを使ったらこの機能を実現できるけどRubyの言語の中でそれしたらいいと思いました。
この機能はC++でsignals and slotsというです
一般的な情報:
http://doc.trolltech.com/4.3/signalsandslots.html
実現の比較について:
http://scottcollins.net/articles/a-deeper-look-at-signals-and-slots.html
== The cool stuff ==
基本的なRubyのクラスに新しいメソッドを少ないするように実現したいと思いました。それに、上の比較の一番いい結果を実現したいです。
これするために Method と Proc に新しいオペレータを加えたほうがいいと思います。
例えば
Page, Timer, Counter のクラスがあります。Page は is the parent.
class Page
def initialize
counter = Counter.new
t=Timer.new
t.timeout -> counter.update
counter.overrun -> show_error
end
end
-> は 繋ぐのオペレータです。
タイマーのtimeoutが行ったらcounterはupdateします
counterはoverrunの時Pageはエラーをみせます
タイマーの中でtimeoutの時単にtimeout()を呼びます。だから、タイマーは自分の仕事して、外の世界と繋いているけど一般的なクラスになりました。
だからクラスはcommunicationがあるけど同時に本当の特立なクラスです。
"->" を書いたけど確かに他の信号のほうがいいです。
それに他のオペレータを使ってdisconnectもできるの機能はやくにたちます。
この機能の実現は速いはずです。 methodまたはproc終った後でpointer to
procがあります。このpointerのリストは単に順番に呼ばれています。
オペレータよりメソッドが使うほうが面白かったら connect と disconnect は簡単です。
私の下手な日本語を許してください。
--
Jordi Polo (ジョルデイ ポロ)
奈良先端科学技術大学院大学 情報科学研究科
自然言語処理学講座 D1