[#368826] ANN: home_run 0.9.1 Released — Jeremy Evans <code@...>

= home_run

14 messages 2010/09/01

[#368894] uninitialized constant NArray (Name Error) — Abder-Rahman Ali <abder.rahman.ali@...>

Following section (2) here:

12 messages 2010/09/02

[#368914] p vs. print — Abder-Rahman Ali <abder.rahman.ali@...>

I wrote the following scripts from section (2) here:

24 messages 2010/09/02
[#368915] Re: p vs. print — Alex Stahl <astahl@...5.com> 2010/09/02

Ruby uses "puts", not "print". "p" is short for "puts".

[#368977] Read cookie — Pål Bergström <pal@...>

How can I get the value of a browser cookie with Ruby?

29 messages 2010/09/03
[#368978] Re: Read cookie — Brian Candler <b.candler@...> 2010/09/03

P奪l Bergstr旦m wrote:

[#368984] Re: Read cookie — Pål Bergström <pal@...> 2010/09/03

Brian Candler wrote:

[#369036] ruby_archive 0.1.0 released — Jonathan Nielsen <jonathan@...>

After a summer of working on various ways to implement it, I'm happy to

10 messages 2010/09/03

[#369106] A better idiomatic way of doing this?! — Tim Romberg <tim.jakobsson@...>

Hi Im new at Ruby and been struggling with this lab I have for a course

12 messages 2010/09/05

[#369113] unable to open X server `' (Magick::ImageMagickError) — Abder-Rahman Ali <abder.rahman.ali@...>

I have written a Ruby script "dicom_info.rb", and when I try running

16 messages 2010/09/06
[#369119] Re: unable to open X server `' (Magick::ImageMagickError) — Brian Candler <B.Candler@...> 2010/09/06

On Mon, Sep 06, 2010 at 12:42:11PM +0900, Abder-Rahman Ali wrote:

[#369132] Re: unable to open X server `' (Magick::ImageMagickError) — Abder-Rahman Ali <abder.rahman.ali@...> 2010/09/06

Thanks a lot Brian.

[#369139] Re: unable to open X server `' (Magick::ImageMagickError) — Brian Candler <B.Candler@...> 2010/09/06

On Mon, Sep 06, 2010 at 11:55:32PM +0900, Abder-Rahman Ali wrote:

[#369140] Re: unable to open X server `' (Magick::ImageMagickError) — Abder-Rahman Ali <abder.rahman.ali@...> 2010/09/06

So, do you suggest installing "cygwin"?

[#369159] Re: unable to open X server `' (Magick::ImageMagickError) — Roger Pack <rogerpack2005@...> 2010/09/06

> you suggest installing "cygwin"?

[#369124] Odd functional programming question — Peter Hickman <peterhickman386@...>

Ok this is probably not really functional programming but I was just

10 messages 2010/09/06

[#369169] How do I request a HTTPS page? — Samuel Sternhagen <samatoms@...>

I would like to access a https page from irb

14 messages 2010/09/06

[#369226] What OS do you use for Ruby development? — Nick Hird <nrhird@...>

I don't want to start any OS wars. I was just curious as to what OS

67 messages 2010/09/07

[#369301] Nokogiri and LibXML — unbewusst.sein@... (Une B騅ue)

Each time i launch a script using Nokogiri i get :

12 messages 2010/09/08

[#369302] Receiving array naturally? — Terry Michaels <spare@...>

As I learn Ruby, I find a lot of flexibility in the syntax. I was

14 messages 2010/09/08

[#369389] Key Associated w/ Maximum Value in Hash — Timothy Baron <timothy.baron@...>

Simple question: what's the cleanest way to retrieve a key associated

11 messages 2010/09/09

[#369477] How to do foo.chomp!.rstrip!.downcase! ? — Geometric Patterns <geometric.patterns@...>

15 messages 2010/09/10

[#369623] Ruby packaging in Debian and Ubuntu: Mythbusting and FAQ — Lucas Nussbaum <lucas@...>

Hi,

11 messages 2010/09/12

[#369638] Declarative relations between object attributes — Knut Franke <knut.franke@...>

Some time ago I stumbled over Cells[1], a Common Lisp extension allowing

16 messages 2010/09/12

[#369710] Encoding error while installing rails on ruby 1.9.2 — Bek Bek <bekis3@...>

Hello everybody,

11 messages 2010/09/14

[#369796] Ruby Multi-threading? — Terry Michaels <spare@...>

I read a Ruby e-book recently that indicated that although Ruby has

12 messages 2010/09/15

[#369952] Developing for Ruby on Windows? — Tom Wardrop <tom@...>

I've heard a lot of criticism about developing for Ruby on Windows, but

11 messages 2010/09/17

[#370039] Ruby-based data language — Intransition <transfire@...>

Has anyone ever endeavored to create a data/configuration file format

14 messages 2010/09/19

[#370053] Getting GUI for ruby for Linux running (QT or wxWidget)? — Markus Fischer <markus@...>

Hi,

23 messages 2010/09/19
[#370054] Re: Getting GUI for ruby for Linux running (QT or wxWidget)? — Markus Fischer <markus@...> 2010/09/19

On 20.09.2010 01:14, Markus Fischer wrote:

[#370116] Re: Getting GUI for ruby for Linux running (QT or wxWidget)? — Quintus <sutniuq@...> 2010/09/20

-----BEGIN PGP SIGNED MESSAGE-----

[#370164] Re: Getting GUI for ruby for Linux running (QT or wxWidget)? — Ryan Melton <ryanmelt@...> 2010/09/21

qt does have a new gem I put together:

[#370205] QT works! (was: Re: Getting GUI for ruby for Linux running (QT or wxWidget)) — Markus Fischer <markus@...> 2010/09/21

Hi,

[#370127] An elegant way... — "F. Senault" <fred@...>

Hello everybody.

23 messages 2010/09/20

[#370210] The Great Ruby GUI Toolkit Roundup — Ed Howland <ed.howland@...>

Hi,

15 messages 2010/09/21

[#370257] having problems with open4 and stuck forked processes — Tim Uckun <timuckun@...>

I am running a batch process which uses the wkhtmltoimage-i386 binary

13 messages 2010/09/22
[#370268] Re: having problems with open4 and stuck forked processes — Robert Klemme <shortcutter@...> 2010/09/22

On Wed, Sep 22, 2010 at 2:31 PM, Tim Uckun <timuckun@gmail.com> wrote:

[#370294] Re: having problems with open4 and stuck forked processes — Tim Uckun <timuckun@...> 2010/09/22

> What do you mean by that? =C2=A0Goes the timeout undetected? =C2=A0Can't =

[#370309] Re: having problems with open4 and stuck forked processes — Robert Klemme <shortcutter@...> 2010/09/23

On 23.09.2010 01:59, Tim Uckun wrote:

[#370289] Sorting problem with an Array of Arrays — Paul <tester.paul@...>

Hi there, I have an array of arrays that looks like the following:

15 messages 2010/09/22

[#370296] Ruby Installation Error — Tridib Bandopadhyay <tridib04@...>

I am trying this command to build the ruby interpreter

20 messages 2010/09/23
[#370689] Re: Ruby Installation Error — Brian Candler <b.candler@...> 2010/09/29

Tridib Bandopadhyay wrote:

[#370319] to make dot method dot method work? — Pen Ttt <myocean135@...>

here is the class

14 messages 2010/09/23

[#370373] how do i force ruby to release memory — Amit Tomar <amittomer25@...>

Hi all,

19 messages 2010/09/24
[#370374] Re: how do i force ruby to release memory — Robert Klemme <shortcutter@...> 2010/09/24

On Fri, Sep 24, 2010 at 7:36 AM, Amit Tomar <amittomer25@yahoo.com> wrote:

[#370379] Re: how do i force ruby to release memory — Amit Tomar <amittomer25@...> 2010/09/24

Robert Klemme wrote:

[#370380] Re: how do i force ruby to release memory — Jes俍 Gabriel y Gal疣 <jgabrielygalan@...> 2010/09/24

On Fri, Sep 24, 2010 at 10:31 AM, Amit Tomar <amittomer25@yahoo.com> wrote:

[#370383] Re: how do i force ruby to release memory — Amit Tomar <amittomer25@...> 2010/09/24

Jes炭s Gabriel y Gal叩n wrote:

[#370388] How to delete the browser cache through ruby — Arihan Sinha <arihan_sinha@...>

Hi All,

11 messages 2010/09/24

[#370590] Point me to help w/ multithreading in 1.9.2-p0 — Alex Stahl <astahl@...5.com>

Hi Folks - A week or two ago, I pinged this list for recommendations on

11 messages 2010/09/28
[#370593] Re: Point me to help w/ multithreading in 1.9.2-p0 — Alex Stahl <astahl@...5.com> 2010/09/28

Nevermind... figured it out.

[#370640] puts and return — Jim Haungs <jhaungs@...>

10.times do |i|

14 messages 2010/09/28

[#370661] Color sequences in ri on Windows — Eric Christopherson <echristopherson@...>

After installing some gems, the system recommended that I refresh ri

11 messages 2010/09/28

[#370721] The beauty of Ruby through examples — Adriano Ferreira <adrfer@...>

Hey all,

33 messages 2010/09/29

[#370740] Can't upgrade ruby on Snow Leopard — Ast Jay <azzzz@...>

I've followed the instructions here:

13 messages 2010/09/29

[#370796] How to prevent overwriting methods by accident? — Stefan Salewski <mail@...>

In Ruby we can add new methods to existing classes.

13 messages 2010/09/30
[#370797] Re: How to prevent overwriting methods by accident? — Jeremy Bopp <jeremy@...> 2010/09/30

On 9/30/2010 2:15 PM, Stefan Salewski wrote:

[#370800] Re: How to prevent overwriting methods by accident? — Alex Stahl <astahl@...5.com> 2010/09/30

But is there a way to call the original method instead of just quitting

Re: Point me to help w/ multithreading in 1.9.2-p0

From: Robert Klemme <shortcutter@...>
Date: 2010-09-29 16:55:10 UTC
List: ruby-talk #370717
On 28.09.2010 11:16, Alex Stahl wrote:
> No prob... but I'm not sure it's quite what you're looking for.  I'm
> refactoring code I can't get to work instead of finding the root cause
> in the threading.  (BTW - any thread insight would be appreciated based
> on this write-up - cuz there's still problems!  I'm starting to consider
> that a Threaded Load Tester Gem might be handy...)
>
> After staring at the screen for too long, I took a break to ponder
> whether the organization of my threads was fundamentally flawed.  It
> occurred to me that one of the problems I was having - a deadlock -
> could be avoided by instantiating the threads only when needed.
>
> If you review my original code snippet, I spin up all the threads w/ a
> proc object in initialize(), then .stop them, then perform via method
> a .call on each element of the thread's api array, then a .wakeup
> followed by the .join.
>
> ..
> 1.upto @count do
>    @threads<<  Thread.new do
>      Thread.current[:hi5] = Hi5fbapi.new 'redacted params'
>      Thread.current["api_calls"] = []
>      apis.each do |api|
>        Thread.current["api_calls"]<<  get_call(api) #pushes a proc obj
>      end
>      Thread.stop
>    end
> end
> ..
> @threads.each do |thr|
>    thr[:api_calls].each do |api|
>      p api.call thr[:hi5], @session
>    end
> end
> @threads.each {|t| t.wakeup.join}
> ..
>
> On 1.8.7 w/ a single core processor, this is a highly deterministic
> sequence, and would not deadlock.  Once deployed to a multi-core VM
> running 1.9.2-p0 (selected specifically for concurrency), not so much.
>
> There I encountered more deadlocks and also "NoMethodError"s from
> Sinatra (undefined method `bytesize' for #<Thread:0xa36ae0c dead>).
> This would occur during the .each where I would .join.  So it's trying
> to join a 'dead' thread.  Except that if I add anything to prevent that,
> such as
>
> .. unless t.status == 'dead'...
>
> it would still deadlock or NoMethodError.
>
> But further testing showed that adding any operation to the main thread,
> prior to calling .join, would prevent the deadlock:
>
> ..
> @threads.each do |thr|
>    p thr.inspect
> ..
>
> Anyway, I rewrote things where the threads are created in the method,
> not initialize(), so '@api_calls' is already populated by procs, and it
> works fine at small scale:
>
> ..
> thr = []
> 1.upto @count do
>    thr<<  Thread.new do
>      @api_calls.each do |api|
>        p api.call @hi5, @session
>        Thread.pass
>      end
>    end
> end
> thr.each {|t| t.join}
> ..
>
> This runs fine on 1.8.7/single and 1.9.2/multi at like 5-10 threads.
> But when I ramp up to, say, 5,000 (it is a *load* test!), 1.8.7 is fine
> but 1.9.2 segfaults.
>
> Even 500 threads on 1.9.2 is segfaulting right now (but not 1.8.7).  I
> get the handy output:
>
> [NOTE]
> You may have encountered a bug in the Ruby interpreter or extension
> libraries.
> Bug reports are welcome.
> For details: http://www.ruby-lang.org/bugreport.html
>
> I'll write it up tomorrow.
>
> Some open questions:
> 1. When .join is called on a multi-core system, what qualifies as the
> calling thread?  The .main on the main processor, or the thread which
> instantiates my ThreadedLoadTester object?  (i.e. what if
> ThreadedLoadTester is created from a sinatra thread which itself isn't
> main?)
>
> 2. Sinatra regularly reports a 'NoMethodError' for 'bytesize' when the
> last thread is dead but joined to the main thread.  But only when the
> main thread originates w/in sinatra, and not an inline call.
>
> 3. Is there a theoretical maximum to the number of concurrent threads
> which can be created which all access a network interface?  This is
> admittedly a poor theory - what might really cause a segfault in 1.9.2
> when 500 threads all try to access the network?

Without going into too much detail I believe one flaw of your design 
here is that you are not using thread synchronization but instead try to 
explicitly start and stop threads and yield execution.  It may be that 
this is causing your cores, but I really don't know.

What I would do:

1. Use a condition variable to let all threads start at the same time.

2. use Thread#value to collect results.

require 'thread'

lock = Mutex.new
cond = ConditionVariable.new
start = false

threads = (1..10).map do
   Thread.new do
     lock.synchronize do
       until start
         cond.wait(lock)
       end
     end

     # work
     # return results
     [rand(10), rand(100)]
   end
end

lock.synchronize do
   start = true
   cond.signal
end

threads.each do |th|
   p th.value
end

You can probably get away without the condition variable by just 
acquiring the lock (lock.synchronize) in the main thread before you 
create all threads and let all threads just synchronize with an empty block.

Kind regards

	robert


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

In This Thread