[#14130] Re: pop3 via firewall — kikutani@...
きくたにです。古い話を持ち出しますが、
[#14133] Thread safe eRuby — Yoshinori Toki <toki@...>
土岐です。
まつもと ゆきひろです
[#14136] — akendo@...3.rim.or.jp
遠藤です。
まつもと ゆきひろです
[#14153] Re: Class is a Class. — 助田 雅紀 <masaki.suketa@...>
助田です.
[#14202] はじめまして — Takashi Nishimoto <g96p0935@...>
みなさん、 はじめまして。
[#14203] class def in class def — kikutani@...
きくたにです。なんか初歩的質問で恥ずかしいけど。
なひです.
なひです.
まつもと ゆきひろです
なひです.
まつもと ゆきひろです
前田です。
五樹島です。お世話になっております。
松尾です。
石橋秀仁です. はじめまして.
前田です。
石橋です.
まつもと ゆきひろです
ごとけんです
まつもと ゆきひろです
[#14220] Re: Subscribe confirmation request (ruby mailing list) — Akihiro Yamauchi <aygoofy@...>
ruby-list-admin@netlab.co.jp wrote
有馬@FITECです。
わたなべです.
[#14257] hajimemasite — Koyama Hideo<fa8h-kym@...>
[#14282] What's |n| ? — Kohji IKEDA <kid@...>
はじめまして、池田@ソフトサイエンスです。
From: Kohji IKEDA <kid@mwc.biglobe.ne.jp>
ども、池田@ソフトサイエンスです。
まつもと ゆきひろです
遠藤です。
まつもと ゆきひろです
[#14284] Module.new feature — Shin-ichiro Hara <sinara@...>
原です。
[#14292] RUBYLIB is necessary for 1.3 ? — kikutani@...
1.2までは、たとえば、mime.rb を /usr/local/lib/ruby にほうりこんどきゃ
[#14304] ruby-info.el — Takashi Nishimoto <g96p0935@...>
Ruby の関数/変数の解説を info から調べる Emacs Lisp を書いてみました。
[#14323] Segmentation Fault on ruby-1.2.5 for Win32(Cygwin) — "MIYOKAWA, Nobuyoshi" <nmiyo@...>
三代川と申します。
こんにちは,もりきゅうです。
こんにちは、三代川です。
[#14332] ruby/gtk 0.17 — Dai <MAP2303@...>
[#14336] archive.rb — Takashi Nishimoto <g96p0935@...>
必要のため、統合アーカイバを書いてみました。
まつもと ゆきひろです
[#14341] sort animation on ruby/tk — "Date Ken" <ge6537@...>
はじめまして伊達と申します。
[#14371] regexp for backslash escaped strings — gotoken@... (GOTO Kentaro)
ごとけんです
わたなべです.
[#14379] Ruby as the First Language — Hideto Ishibashi <a1602hi@...>
石橋秀仁です.
ごとけんです
石橋秀仁です.
ごとけんです
From: gotoken@math.sci.hokudai.ac.jp
[#14408] goo.rb — Kazunori Akaishi <akaishi@...>
akaishi です。
[#14417] はじめまして — Kenji Horikoshi <k-horix@...>
はじめまして,堀越と申します.
ごとけんです
[#14428] sort — Koyama Hideo<fa8h-kym@...>
もとcobol屋の小山と申します。
立石です。
ごとけんさん、立石さん。ありがとうございます。
[#14441] ConditionVariable (thread.rb) — SEKI <m_seki@...>
原です。
前田です。
前田です。
原です。
前田です。
原です。
原です。
前田です。
まつもと ゆきひろです
原です。
前田です。
原です。
前田です。
原です。
前田です。
[#14481] count lines — kikutani@...
きくたにです。
[#14489] Re: sort — 助田 雅紀 <masaki.suketa@...>
助田です.ちょっとわからなかったので質問します.
[#14506] Re: ちっちゃい Ruby — 中村暁史 <anakamur@...>
[#14513] Hater — cercine@... (Takashi Ikeda)
池田です。
こんにちは,堀越です.
中田@Vectorです。こんな話の時だけ。
こんにちは,堀越です.
In message "[ruby-list:14574] Re: Hater"
こんにちは,堀越です.
石橋秀仁です.
こんにちは,堀越です.
石橋秀仁です. こんにちは.
もと、大型機使いの小山です。
有馬@FITECです。
新井です。
有馬@FITECです。
まつもと ゆきひろです
青山です。
まつもと ゆきひろです
まつもと ゆきひろです
だんのです。
まつもと ゆきひろです
石橋秀仁%チュートリアル構想中です.
ごとけんです
なひです.
石橋秀仁です.
なひです.大学では自然言語処理や知識表現について研究しておりました.
石橋秀仁です.
なひです.
なひです.
なひです.
石橋秀仁です.
前田です。
早坂@会津大学といいます。
まつもと ゆきひろです
[#14521] ruby の書き方 ? — goto@...
後藤@横河工事です。以前、ここでお世話になったおかげで、なんとか
前田です。
私も -i でやる方法を書いたけど、前田さんが書いたからもういいや。
[#14597] TkAfter munched memory. — Yoshinari NOMURA <nom@...>
はじめまして、九大の乃村です。
[#14602] ruby upload cgi program — ymaekawa@...
前川と申します。
青山です。
[#14667] [BUG] def foo; foo end; foo — "Takehiko Ueki" <takehiko@...>
ども、植木です。
[#14696] Ruby traps & tips — Akira Endo <akendo@...3.rim.or.jp>
遠藤です。
あおきです。
遠藤です。
あおきです。
[ruby-list:14260] Re: Thread safe eRuby
From: keiju@Rational.Com (石塚圭樹)
> >|ところで、スレッドセーフになるための要件にはどんなものが
> >|あるでしょうか ?
> >|今度なにか作るときは気をつけなくては。
> >
> >Ruby本には石塚さんによるスレッドの競合を避けるための丁寧な解
> >説が載ってます.
>
> 丁寧って言えば丁寧かもしれませんが, 要件ってなっているかと言えばそうじゃ
> ないような...
>
> # 詳しくは出てのお楽しみと言うことで(^^;;;
ERb では、eRubyスクリプトの印刷結果を文字列と取り出す機能を
持っていて、これをスレッドセーフにしたいと考えています。
現在の実装は $> に、write すると文字列に蓄えていくオブジェクトを入れ
スクリプト終了時に文字列を返すようにしています。
グローバル変数 $> を変更するというと、きっとスレッドセーフに
なれないと思うのですが、どうでしょうか?
$> への代入自体を捉えてスレッド毎のコンテキスト(?)に保存しては‥と考え、
次のようなスクリプトを書いてみて試したのですが、
eRuby スクリプトに Thread があるとうまくできない気がします。
ほかになにか良い方法はあるでしょうか?
# ruby-1.2 にはないけど callcc を使ったらどうにかなるかなぁ。
#!/usr/local/bin/ruby
require 'thread'
class DefOut
def initialize(out)
@default = out
@writers = Hash.new
end
def write(s)
out = @writers.fetch(Thread.current, @default)
out.write(s)
end
def set(obj)
@writers[Thread.current] = obj
cleanup
end
def cleanup
@writers.delete_if do |k, v|
not k.alive?
end
end
@defout = DefOut.new($>)
$> = @defout
@th = Thread.new {
while true
sleep 60
$>.cleanup
end
}
trace_var('$>') do
@defout.set($>)
$> = @defout
end
end
class StringIO
def initialize(str='')
@str = str.to_s
end
attr :str
def write(str)
@str.concat(str)
end
def as_stdout(safe=nil)
t = Thread.new {
out = StringIO.new
$> = out
$SAFE = safe if safe
yield
out.str
}
t.value
end
module_function :as_stdout
end
if __FILE__ == $0
tab = []
tab.push Thread.new {
StringIO.as_stdout do
sleep 2
print "abc\n"
end
}
tab.push Thread.new {
StringIO.as_stdout do
sleep 1
print "123\n"
end
}
tab.each do |t|
$stderr.print t.value
end
end