[#354233] Ruby & IRC — Rajinder Yadav <devguy.ca@...>

Hi I am thinking about playing around with IRC Internert Relay Chat

16 messages 2010/01/01

[#354265] "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...>

Hello,

35 messages 2010/01/02
[#354266] Re: "Dummy" IO object to push and pull data? — Ryan Davis <ryand-ruby@...> 2010/01/02

[#354273] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/02

Ryan Davis wrote:

[#354303] Re: "Dummy" IO object to push and pull data? — Brian Candler <b.candler@...> 2010/01/02

Shay Hawkins wrote:

[#354308] Re: "Dummy" IO object to push and pull data? — Brian Candler <b.candler@...> 2010/01/02

Oh, and there is also IO.pipe, which is unidirectional under most Unix

[#354309] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/02

Brian Candler wrote:

[#354311] Re: "Dummy" IO object to push and pull data? — Caleb Clausen <vikkous@...> 2010/01/03

On 1/2/10, Shay Hawkins <gohegdeh@comcast.net> wrote:

[#354352] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/03

Caleb Clausen wrote:

[#354354] Re: "Dummy" IO object to push and pull data? — Tony Arcieri <tony@...> 2010/01/03

On Sun, Jan 3, 2010 at 3:07 PM, Shay Hawkins <gohegdeh@comcast.net> wrote:

[#354358] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/04

Tony Arcieri wrote:

[#354383] Re: "Dummy" IO object to push and pull data? — Brian Candler <b.candler@...> 2010/01/04

Shay Hawkins wrote:

[#354402] Re: "Dummy" IO object to push and pull data? — Shay Hawkins <gohegdeh@...> 2010/01/04

Brian Candler wrote:

[#354381] Is ruby's regex slower? — Ruby Newbee <rubynewbee@...>

Hi,

33 messages 2010/01/04
[#354384] Re: Is ruby's regex slower? — Josh Cheek <josh.cheek@...> 2010/01/04

On Mon, Jan 4, 2010 at 2:54 AM, Ruby Newbee <rubynewbee@gmail.com> wrote:

[#354387] Re: Is ruby's regex slower? — Wybo Dekker <wybo@...> 2010/01/04

[#354433] Re: Is ruby's regex slower? — Roger Pack <rogerpack2005@...> 2010/01/04

[#354448] Re: Is ruby's regex slower? — Kornelius Kalnbach <murphy@...> 2010/01/05

Roger Pack wrote:

[#354453] Re: Is ruby's regex slower? — Marnen Laibow-Koser <marnen@...> 2010/01/05

Kornelius Kalnbach wrote:

[#354461] Re: Is ruby's regex slower? — Robert Klemme <shortcutter@...> 2010/01/05

On 01/05/2010 12:37 PM, Marnen Laibow-Koser wrote:

[#354519] group in the array — Kolya17 Kolya17 <lastdrv@...>

Hi!

15 messages 2010/01/06

[#354619] Non-blocking communication between Ruby processes — Iñaki Baz Castillo <ibc@...>

Hi, I run Unicorn which is a Rack http server using N forked worker processes.

30 messages 2010/01/07
[#354622] Re: Non-blocking communication between Ruby processes — Robert Klemme <shortcutter@...> 2010/01/07

On 01/07/2010 02:18 PM, Iki Baz Castillo wrote:

[#354625] Re: Non-blocking communication between Ruby processes — Iki Baz Castillo <ibc@...> 2010/01/07

El Jueves, 7 de Enero de 2010, Robert Klemme escribi

[#354640] Re: Non-blocking communication between Ruby processes — Robert Klemme <shortcutter@...> 2010/01/07

On 01/07/2010 03:07 PM, Iki Baz Castillo wrote:

[#354643] Re: Non-blocking communication between Ruby processes — Iki Baz Castillo <ibc@...> 2010/01/07

El Jueves, 7 de Enero de 2010, Robert Klemme escribi鷓

[#354645] Re: Non-blocking communication between Ruby processes — Iki Baz Castillo <ibc@...> 2010/01/07

El Jueves, 7 de Enero de 2010, Iki Baz Castillo escribi

[#354656] Stopping String Escaping. — Phil Cooper-king <phil@...>

Hi,

14 messages 2010/01/07
[#354664] Re: Stopping String Escaping. — Brian Candler <b.candler@...> 2010/01/07

Phil Cooper-king wrote:

[#354746] Ruby editing style rules and recommendation? — Nathan Oyama <nate@...>

I asked a question 'Decimal in for loop?' and two members were kind

12 messages 2010/01/09

[#354781] The Ruby GUI debacle — Ruby Student <ruby.student@...>

Team,

40 messages 2010/01/10
[#354794] Re: The Ruby GUI debacle — James Britt <james.britt@...> 2010/01/10

Ruby Student wrote:

[#354803] Re: The Ruby GUI debacle — Ruby Student <ruby.student@...> 2010/01/11

James, I don't remember if the problems was with Netbeans or something

[#354825] Re: The Ruby GUI debacle — Florian Gilcher <flo@...> 2010/01/11

>

[#354874] bellhop 1.0.0 released — Gregory Brown <gregory.t.brown@...>

Hi folks,

12 messages 2010/01/11

[#354910] Is 'rescue' expensive ? — "R. Kumar" <sentinel.2001@...>

If i use something like:

12 messages 2010/01/12

[#354915] 3D with Ruby (Ogre ?) — Marc-antoine Kruzik <kadelfek@...>

Hello, I'm french, sorry for my mistakes.

24 messages 2010/01/12
[#354920] Re: 3D with Ruby (Ogre ?) — Brian Candler <b.candler@...> 2010/01/12

Marc-antoine Kruzik wrote:

[#354945] NOOB Question on Instance Variable — BlueHandTalking <jet@...>

I have a class photo. It belongs_to a project.

13 messages 2010/01/12

[#354974] WIN32OLE memory leaks — Chuck Remes <cremes.devlist@...>

In my ruby code I am making a call out to a COM object that is

21 messages 2010/01/12
[#354979] Re: WIN32OLE memory leaks — Luis Lavena <luislavena@...> 2010/01/12

On Jan 12, 6:19m, Chuck Remes <cremes.devl...@mac.com> wrote:

[#355014] Re: WIN32OLE memory leaks — Chuck Remes <cremes.devlist@...> 2010/01/13

[#355002] Ruby Regex — Sriram Varahan <sriram.varahan@...>

Hello,

15 messages 2010/01/13

[#355036] Recommended Reading (also: Arrays/Hashes) — Zach Bartels <no@...>

Hi all,

20 messages 2010/01/13

[#355085] How to know the OS architecture (32 or 64 bits)? — Iñaki Baz Castillo <ibc@...>

Hi, is there a reliable way under Ruby to know the OS architecture (32 or 64

27 messages 2010/01/14
[#355136] Re: How to know the OS architecture (32 or 64 bits)? — Walton Hoops <walton@...> 2010/01/15

On 1/14/2010 4:12 PM, I単aki Baz Castillo wrote:

[#355138] Re: How to know the OS architecture (32 or 64 bits)? — Walton Hoops <walton@...> 2010/01/15

On 1/15/2010 9:36 AM, Walton Hoops wrote:

[#355142] Re: How to know the OS architecture (32 or 64 bits)? — Iñaki Baz Castillo <ibc@...> 2010/01/15

El Viernes, 15 de Enero de 2010, Walton Hoops escribi坦:

[#355143] Re: How to know the OS architecture (32 or 64 bits)? — Iñaki Baz Castillo <ibc@...> 2010/01/15

El Viernes, 15 de Enero de 2010, I単aki Baz Castillo escribi坦:

[#355159] Re: How to know the OS architecture (32 or 64 bits)? — Walton Hoops <walton@...> 2010/01/15

On 1/15/2010 9:59 AM, I単aki Baz Castillo wrote:

[#355102] Float Points error — "THAKUR PRASHANT SINGH" <Prashant_Singh.Thakur@...>

Hi,

13 messages 2010/01/15

[#355228] GPGME gem - cannot figure out how to decrypt data — Daniel Frank <ruby-talk-2597@...>

Hello,

11 messages 2010/01/17

[#355266] Can't install gems (Windows) — Sal <salbass575@...>

I am unable to install any gems now on my Windows 7 machine running

25 messages 2010/01/17

[#355281] basic question: passing a modifiable argument to a routine — lalawawa <usenet@...>

Arguments to subroutines seem to be passed by value in ruby

10 messages 2010/01/18

[#355392] Creating GUI applications with Ruby 1.9.1 — Alpha Blue <jdezenzio@...>

I'm wanting to port over a GUI app I created into ruby so that it

24 messages 2010/01/19

[#355461] Looking for object.inherits?(Classname) — Xeno Campanoli <xeno.campanoli@...>

I'm looking for a way to make sure an object being passed is in some class

13 messages 2010/01/20

[#355487] Best practices when writing destructive code — Adam Akhtar <adamtemporary@...>

Im going to be making and removing lots of directories using ruby and Im

10 messages 2010/01/20

[#355530] ruby bounties--list of bounties — Roger Pack <rogerdpack2@...>

Fifth time's a charm (durn spam filters)

34 messages 2010/01/21
[#355574] Re: [ANN] ruby bounties--list of bounties — Charles Oliver Nutter <headius@...> 2010/01/21

On Thu, Jan 21, 2010 at 12:07 AM, Roger Pack <rogerdpack2@gmail.com> wrote:

[#355739] Re: ruby bounties--list of bounties — Roger Pack <rogerpack2005@...> 2010/01/24

[#355742] Re: ruby bounties--list of bounties — Charles Oliver Nutter <headius@...> 2010/01/24

On Sat, Jan 23, 2010 at 11:49 PM, Roger Pack <rogerpack2005@gmail.com> wrote:

[#355766] Re: ruby bounties--list of bounties — Aaron Patterson <aaron@...> 2010/01/25

On Sun, Jan 24, 2010 at 09:15:56PM +0900, Charles Oliver Nutter wrote:

[#355784] Re: ruby bounties--list of bounties — Charles Oliver Nutter <headius@...> 2010/01/25

On Mon, Jan 25, 2010 at 6:29 AM, Aaron Patterson

[#355795] Re: ruby bounties--list of bounties — Mike Dalessio <mike.dalessio@...> 2010/01/25

On Mon, Jan 25, 2010 at 7:37 AM, Charles Oliver Nutter

[#355802] Re: ruby bounties--list of bounties — Charles Oliver Nutter <headius@...> 2010/01/25

On Mon, Jan 25, 2010 at 6:25 PM, Mike Dalessio <mike.dalessio@gmail.com> wrote:

[#355547] Unexpected Hash#first return under Ruby1.9 — Iñaki Baz Castillo <ibc@...>

Hi, Ruby 1.9 implements "first" method for Hash (as Hash are ordered now).

12 messages 2010/01/21

[#355563] Rails ADODB.Connection Error — gregarican <greg.kujawa@...>

I know this isn't exclusively a Rails list, so I apologize in advance.

12 messages 2010/01/21

[#355600] Ruby c extensions on windows — Philliam Auriemma <phil.auriemma@...>

Hey guys,

15 messages 2010/01/22

[#355638] Argh?! :) kEND, $end and kELSE in a simple program — Jet Koten <jetkoten@...>

Hi,

15 messages 2010/01/22

[#355667] How to use WIN32OLE to Save As PDF — Joe Peck <joep@...>

Hi,

12 messages 2010/01/22

[#355797] Nested hash with arrays for default value — Glen Holcomb <damnbigman@...>

I'm trying to find a "nice" way to make a nested hash with an empty array as

12 messages 2010/01/25
[#355803] Re: Nested hash with arrays for default value — Jes俍 Gabriel y Gal疣 <jgabrielygalan@...> 2010/01/25

On Mon, Jan 25, 2010 at 6:48 PM, Glen Holcomb <damnbigman@gmail.com> wrote:

[#355891] Open Source Subversion Hosting — Intransition <transfire@...>

Looking for Rubyist's recommendations for free open-source Subversion

21 messages 2010/01/26
[#355892] Re: Open Source Subversion Hosting — Marnen Laibow-Koser <marnen@...> 2010/01/26

Thomas Sawyer wrote:

[#355939] can't update and install gem — Johny ben <joh13ny@...>

os:win xp

11 messages 2010/01/27

[#355962] Why does `source .bashrc` complain "command not found"? — Adam Akhtar <adamtemporary@...>

Is it just me or is this something that just cant be done?

10 messages 2010/01/27

[#356010] Use Non-Java Version of Gem — Bryan Richardson <btrichardson@...>

Hello all,

12 messages 2010/01/27

[#356042] gsub not working to replace a 'Chinese' Charater. — Ryan Smith <sunraise2005@...>

gsub not works for me when replace 'DBCS'(double byte character set)

12 messages 2010/01/28

[#356076] rdoc_osx_dictionary 1.0.1 Released — Ryan Davis <ryand-ruby@...>

rdoc_osx_dictionary version 1.0.1 has been released!

19 messages 2010/01/28
[#356082] Re: rdoc_osx_dictionary 1.0.1 Released — hi there <johnsonqu@...> 2010/01/29

If installed gems share the same class name, eg. mime-types mimetype-fu

[#356084] Re: rdoc_osx_dictionary 1.0.1 Released — Ryan Davis <ryand-ruby@...> 2010/01/29

[#356120] Re: rdoc_osx_dictionary 1.0.1 Released — Ryan Davis <ryand-ruby@...> 2010/01/29

[#356122] Re: rdoc_osx_dictionary 1.0.1 Released — Ryan Davis <ryand-ruby@...> 2010/01/29

[#356153] "require 'rubygems'" In Your Library/App/Tests Is Wrong? — Joe Wangkauf <tmo1138@...>

16 messages 2010/01/30
[#356154] Re: "require 'rubygems'" In Your Library/App/Tests Is Wrong? — Xavier Noria <fxn@...> 2010/01/30

On Sat, Jan 30, 2010 at 6:05 PM, Joe Wangkauf

[#356158] Re: "require 'rubygems'" In Your Library/App/Tests Is Wrong? — Josh Cheek <josh.cheek@...> 2010/01/30

I wonder how many people _don't_ use rubygems. What creates more work,

[#356162] Refining the use of file joins or file expand_path — Alpha Blue <jdezenzio@...>

Both bits of code process the same result which is finding .rb file

26 messages 2010/01/30
[#356177] Re: Refining the use of file joins or file expand_path — pharrington <xenogenesis@...> 2010/01/31

On Jan 30, 9:24m, Alpha Blue <jdezen...@gmail.com> wrote:

[#356179] Re: Refining the use of file joins or file expand_path — Alpha Blue <jdezenzio@...> 2010/01/31

pharrington wrote:

[#356182] Re: Refining the use of file joins or file expand_path — Ryan Davis <ryand-ruby@...> 2010/01/31

[#356183] Re: Refining the use of file joins or file expand_path — Alpha Blue <jdezenzio@...> 2010/01/31

Ryan Davis wrote:

[#356190] Inheritance related problem — "R. Kumar" <sentinel.2001@...>

Note: this is *not* a ruby bug. its a general query.

20 messages 2010/01/31

Re: Non-blocking communication between Ruby processes

From: Robert Klemme <shortcutter@...>
Date: 2010-01-07 17:35:15 UTC
List: ruby-talk #354640
On 01/07/2010 03:07 PM, Iki Baz Castillo wrote:
> El Jueves, 7 de Enero de 2010, Robert Klemme escribi
>> On 01/07/2010 02:18 PM, Iki Baz Castillo wrote:
>>> Hi, I run Unicorn which is a Rack http server using N forked worker
>>> processes. I need the following:
>>>
>>> - When a worker processes a HTTP request it must notify some data to
>>> other independent Ruby process XXX (different than Unicorn).
>>>
>>> - This communication must be non-blocking, this is, the Unicorn worker
>>> process sends the notification and doesn't wait for response from the
>>> process XXX, so the Unicorn worker can, at the moment, generate the HTTP
>>> response and send back to the client, getting free to handle new HTTP
>>> requests.
>>>
>>> - The ruby process XXX should use some kind of queue system to store
>>> notifications and handle them. In fact, it should take them periodically
>>> and send via TCP (but not HTTP) to other server.
>>>
>>>
>>> Which is the best approach to design such communication? perhaps using
>>> something as EventMachine for the XXX process and Unix/TCP socket
>>> communication between Unicorn processes and XXX process? any other
>>> alternative or suggestion?
>>>
>>> Thanks a lot.
>> I would probably first try a simple setup: make process XXX publish a
>> Queue via DRb on a well known port and have one or more threads fetching
>> from the queue and processing data.  If you fear resource exhaustion,
>> you can make the queue size limited.  E.g.:
>>
>> x.rb server
>> c.rb client
>>
>>
>> robert@fussel:~$ cat x.rb
>> #!/usr/local/bin/ruby19
>>
>> require 'thread'
>> require 'drb'
>>
>> QUEUE_SIZE = 1024
>> THREAD_COUNT = 5
>> URI="druby://localhost:8787"
>>
>> QUEUE = SizedQueue.new QUEUE_SIZE
>>
>> threads = (1..THREAD_COUNT).map do
>>    Thread.new do
>>      while msg = QUEUE.deq
>>        p msg
>>      end
>>    end
>> end
>>
>> DRb.start_service(URI, QUEUE)
>> DRb.thread.join
>>
>> robert@fussel:~$ cat c.rb
>> #!/usr/local/bin/ruby19
>>
>> require 'drb/drb'
>> require 'benchmark'
>>
>> SERVER_URI="druby://localhost:8787"
>>
>> QUEUE = DRbObject.new_with_uri(SERVER_URI)
>>
>> 10.times do |i|
>>    puts Benchmark.times do
>>      QUEUE.enq(sprintf("msg %4d at %-20s", i, Time.now))
>>    end
>> end
>> robert@fussel:~$
>>
>> Of course you can as well use a named pipe for the communication.  But
>> then demarcation of message boundaries might be more difficult etc.
> 
> Really thanks a lot.
> just a question: is it DRb good enough for performance?

I don't know about your requirements.  Just try it out - you can start 
multiple clients and vary the number of threads and the queue size in 
the server at will.  To me it seemed pretty fast.  I did

$ for i in 1 2 3 4 5 6 7 8 9 10; do ./c.rb & done

and message came really fast.  Also note that each client prints timing 
so you can see how fast it is on your machine.

If you need more performance then I'm sure you'll find a Ruby binding to 
any of the queuing framework like GNU Queue, NQS and whatnot.  But I'd 
start with the simple DRb based solution.  It's easily done, you have 
everything you need and do not need to install extra software, not even 
gems.

I just notice, there was a bug in my code: I used Benchmark.times which 
prints timings of the current process.  What I meant was 
Benchmark.measure.  I have changed the code a bit so you can easy 
experiment with queue ssizes, thread counts and message counts (see below).

With this command line

t=10;for i in `seq 1 $t`; do ./c.rb 10000 >"cl-$i"& done; for i in `seq 
1 $t`; do wait; done; cat cl-*

I get pretty good timings of 7.6ms / msg with unlimited Queue size and 
default thread count (5) for this unrealistic test that the queue is 
hammered.

Kind regards

	robert

Modified code:

robert@fussel:~$ cat x.rb
#!/usr/local/bin/ruby19

require 'thread'
require 'drb'

THREAD_COUNT = (ARGV.shift || 5).to_i
QUEUE_SIZE = ARGV.shift

printf "%4d threads, queue size=%p\n", THREAD_COUNT, QUEUE_SIZE

URI="druby://localhost:8787"

Thread.abort_on_exception = true

QUEUE = QUEUE_SIZE ? SizedQueue.new(QUEUE_SIZE.to_i) : Queue.new
# QUEUE.extend DRb::DRbUndumped

threads = (1..THREAD_COUNT).map do |i|
   Thread.new i do |id|
     while msg = QUEUE.deq
       printf "thread %2d: %p\n", id, msg
     end
   end
end

DRb.start_service(URI, QUEUE)
puts 'Started'
DRb.thread.join
puts 'Returned'
threads.each {|th| th.join rescue nil}
puts 'Done'

robert@fussel:~$

robert@fussel:~$ cat c.rb
#!/usr/local/bin/ruby19

require 'drb/drb'
require 'benchmark'

SERVER_URI="druby://localhost:8787"

rep = (ARGV.shift || 20).to_i

QUEUE = DRb::DRbObject.new_with_uri(SERVER_URI)

QUEUE.enq "Started client"

Benchmark.bm 20 do |b|
   b.report "client %4d" % $$ do
     rep.times do |i|
       QUEUE.enq(sprintf("client %4d msg %4d at %-20s", $$, i, Time.now))
     end
   end
end

QUEUE.enq "Stopped client"

robert@fussel:~$


-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

In This Thread