[#4734] Possible regex bug? — hal9000@...
OK, I'm trying to match an optional comma followed by
[#4744] Piping in Ruby? — Stephen White <steve@...>
There's one construct I miss from shell scripts... The ability to pipe the
[#4766] Wiki — "Glen Stampoultzis" <trinexus@...>
Hi, Glen,
Howdy,
> I asked him/her. He/She opened the new site using tiki-1.0.4.
Hi, Glen,
Howdy,
[#4769] unix 'time' in Ruby? — Robert Feldt <feldt@...>
Hi.
[#4774] Module vs. Class — Jilani Khaldi <jilanik@...>
Hi,
[#4776] Listing methods in a module — DaVinci <bombadil@...>
Hi all. I need a little help :)
[#4792] closures — Stuart Zakon <zakons@...>
Can somebody please explain what a closure is within the context of
[#4809] Some questions — Friedrich Dominicus <frido@...>
[#4849] FEATURE REQUEST: Fixnum bitfields — Wayne Scott <wscott@...>
Hi,
[#4883] Re-binding a block — Dave Thomas <Dave@...>
matz@zetabits.com (Yukihiro Matsumoto) writes:
[#4916] Re: [TOY] FL — Andrew Hunt <andy@...>
> I still don't understand sorry.
[#4930] Perl 6 rumblings -- RFC 225 (v1) Data: Superpositions — Conrad Schneiker <schneik@...>
Hi,
[#4936] Ruby Book Eng. translation editor's questions — Jon Babcock <jon@...>
Nobody cares about this but me,
Thanks very much for the input.
SugHimsi.
,
[#4951] What do I need to compile 1.4? — "Glen Stampoultzis" <trinexus@...>
Platform is Windows 98
[#4987] Ruby Book Ch 2 English -- arguments/parameters/options? — Jon Babcock <jon@...>
Once again, I must impose on your good graces.
[#4992] Re: Perl 6 rumblings -- RFC 225 (v1) Data: S uperpositions (fwd) — Aleksi Niemel<aleksi.niemela@...>
Michael dared to suggest, and was probably right:
[#5009] Re: Ruby Book Ch 2 English -- arguments/parameters/options? — "Dat Nguyen" <thucdat@...>
[#5011] Changes in 1.6.0 — matz@... (Yukihiro Matsumoto)
Hi,
[#5013] A QuantumSuperposition Proposal for Ruby — Huayin Wang <wang@...>
# I have been play around the QuantumSuperpositions idea today and
[#5028] A Tru64 problem and ruby-talkietiquette — Aleksi Niemel<aleksi.niemela@...>
I just saw this (the little I could see in English)
[#5033] Having problems with Net::HTTP::do_finish — Dan Schmidt <dfan@...>
I just started using Ruby yesterday, and I'm having trouble with my
[#5045] Proposal: Add constants to Math — Robert Feldt <feldt@...>
Hi,
On Sat, 23 Sep 2000, Yukihiro Matsumoto wrote:
Hi,
On Fri, 22 Sep 2000, Masahiro Tanaka wrote:
>From: Robert Feldt <feldt@ce.chalmers.se>
[#5061] Proposal: Add rubycpp.h or include in ruby.h — Robert Feldt <feldt@...>
[#5070] Ruby Book 2.18, Eng.tl, kesaran pasaran? — Jon Babcock <jon@...>
From Ruby Book 2.18:
[#5077] Crazy idea? infix method calls — hal9000@...
This is a generalization of the "in" operator idea which I
[#5082] Application Error in 1.6.0 on Win2K — "Kevin Burge" <kcbspam@...>
I've created a 1.6.0 ruby extension (1.6.0 (2000-09-19) [i586-mswin32]),
[#5092] RE: Hanging require — Aleksi Niemel<aleksi.niemela@...>
> ruby -v a.rb
[#5114] Types and === — hal9000@...
<sigh> I imagine Yoda behind me, shaking his little green head
[#5157] Compile Problem with 1.6.1 — Scott Billings <aerogems@...>
When I try to compile Ruby 1.6.1, I get the following error:
[#5161] Re: Types and === — schneik@...
[#5175] Compiling 1.6.1 problem — Tony Reed <Callus@...>
Compiling Ruby 1.6.1 fails:
Hi,
On 9/29/00, Yukihiro Matsumoto wrote:
From: Tony Reed <Callus@Sympatico.CA>
[ruby-talk:4997] [RRFC] semaphore class
This might be a nice addition to the Ruby synchronisation primitives.
I welcome comments and improvements.
(shamelessly glarked and adapted from thread.rb)
---8<---
#!/usr/bin/ruby -w
class Semaphore
def initialize max = 1, init = max
fail ArgumentError, "maximum value must be > 0" unless max > 0
fail ArgumentError, "initial value must be >= 0" unless init >= 0
fail ArgumentError, "initial value must be <= maximum" unless init <= max
@waiting = []
@maximum = max
@value = init
end
def signal
return if @value == @maximum
Thread.critical = true
@value += 1
begin
t = @waiting.shift
t.run if t
rescue ThreadError
# nothing: tried to run a dead thread
end
Thread.critical = false
self
end
def wait
while(Thread.critical = true; @value == 0)
@waiting.push Thread.current
Thread.stop # implies Thread.critical = false
end
@value -= 1
Thread.critical = false
self
end
def synchronize
wait
begin
yield
ensure
signal
end
end
end
##########################################################################
if __FILE__ == $0
srand
def snooze
sleep rand 0
end
class Test1
def initialize
puts "* N processes contending for M resources, where N > M"
threads = []
@sem = Semaphore.new 3 # 3 resources available
for i in 0..9 do
threads.push Thread.start{ client i }
end
threads.each{ |t| t.join }
end
def client i
puts "client #{i}: wait"
@sem.wait
puts "client #{i}: running"
snooze
puts "client #{i}: signal"
@sem.signal
end
end
class Test2
def initialize
puts "* synchronous producer/consumer"
threads = []
@sin = Semaphore.new 1, 0
@sout = Semaphore.new 1, 0
@shared = 0
@N = 10
threads.push Thread.start{ producer }
threads.push Thread.start{ consumer }
threads.each{ |t| t.join }
end
def producer
for i in 1..@N do
snooze
@shared = i
puts "produced #{i}"
@sin.signal
@sout.wait
end
end
def consumer
for i in 1..@N do
snooze
@sin.wait
puts "consumed #{@shared}"
@sout.signal
end
end
end
class Test3
def initialize
puts "* asynchronous producer/consumer with finite (circular) buffer"
threads = []
@MAX = 3
@buffer = Array.new @MAX, 0
@input = 0
@output = 0
@elements = Semaphore.new @MAX, 0
@spaces = Semaphore.new @MAX
@N = 10
threads.push Thread.start{ producer }
threads.push Thread.start{ consumer }
threads.each{ |t| t.join }
end
def producer
for i in 1..@N do
snooze
@spaces.wait
@buffer[@input] = i
@input = (@input + 1) % @MAX
puts "produced #{i}"
@elements.signal
end
end
def consumer
for i in 1..@N do
snooze
@elements.wait
n = @buffer[@output]
@output = (@output + 1) % @MAX
puts "consumed #{n}"
@spaces.signal
end
end
end
class Test4
def initialize
puts "* transfer of control (coroutines)"
threads = []
@a = Semaphore.new 1, 0
@b = Semaphore.new 1, 0
@c = Semaphore.new 1, 0
threads.push Thread.new{ parent }
threads.push Thread.new{ process_a }
threads.push Thread.new{ process_b }
threads.each{ |t| t.join }
end
def parent
puts "P: 1"
@a.signal
@c.wait
puts "P: 6"
end
def process_a
@a.wait
puts "A: 2"
@b.signal
@a.wait
puts "A: 4"
@b.signal
end
def process_b
@b.wait
puts "B: 3"
@a.signal
@b.wait
puts "B: 5"
@c.signal
end
end
Test1.new
Test2.new
Test3.new
Test4.new
end
---8<---
regards,
Michel