[#385051] How to order Structs based on two fields — Iñaki Baz Castillo <ibc@...>

Hi, I've a struct like this:

20 messages 2011/07/01
[#385052] Re: How to order Structs based on two fields — Iñaki Baz Castillo <ibc@...> 2011/07/01

2011/7/1 I=C3=B1aki Baz Castillo <ibc@aliax.net>:

[#385057] Re: How to order Structs based on two fields — Robert Klemme <shortcutter@...> 2011/07/01

On Fri, Jul 1, 2011 at 12:55 PM, I=F1aki Baz Castillo <ibc@aliax.net> wrote=

[#385069] Offering Help — Joe Peric <peric.joe@...>

I'm new to Ruby and I am willing to learn. Anyone need help on a

18 messages 2011/07/01
[#385072] Re: Offering Help — Jeremy Heiler <jeremyheiler@...> 2011/07/01

On Fri, Jul 1, 2011 at 11:43 AM, Joe Peric <peric.joe@gmail.com> wrote:

[#385073] Re: Offering Help — Joe Peric <peric.joe@...> 2011/07/01

Never heard of it, but I'll get right on it. Thanks.

[#385082] Re: Offering Help — Joe Peric <peric.joe@...> 2011/07/02

Just finished this. I had to find some more info on exceptions to get

[#385083] Re: Offering Help — Jeremy Heiler <jeremyheiler@...> 2011/07/02

On Sat, Jul 2, 2011 at 1:39 PM, Joe Peric <peric.joe@gmail.com> wrote:

[#385102] symbol vs string for hash keys — Intransition <transfire@...>

What are the important factors to consider when deciding whether to

12 messages 2011/07/03

[#385160] Fatal Error with Ruby/GTK2, Homebrew, Green Shoes, and OSX Snow Leopard — Timothy Barnes <barnes7td@...>

I posted the below question to the Shoes mailing list and got back the

10 messages 2011/07/09

[#385194] RubyInstaller Extras — Jon <jon.forums@...>

Since 2009, we've been pleased to include Huw Collingbourne's The Book of Ruby with RubyInstaller. Well now, Huw has a newly updated version, and he's published it with No Starch Press.

11 messages 2011/07/12

[#385207] Creating a range of directories — Simon Harrison <simon@...>

I'm wanting to create a range of directories with a prefix, like the

13 messages 2011/07/13

[#385276] Is there a more efficient way to remove data from a string? — Eddie Catflap <catflaporama@...>

Hi

9 messages 2011/07/15

[#385297] Help needed for a new release of text-hyphen — Austin Ziegler <halostatue@...>

I've had folks asking me for a release of text-hyphen that works with

12 messages 2011/07/15

[#385326] Comparing hashes based on their keys — Stefano Mioli <stefano.mioli@...>

Hi list,

13 messages 2011/07/15

[#385342] moving a 1.8.6 install? — Roggie Boone <rogboone@...>

Is it possible to move the gems from a Ruby 1.8.6 install on an (old)

10 messages 2011/07/15

[#385410] Better name for #zip_with — Intransition <transfire@...>

Any ideas for a better name for:

13 messages 2011/07/18

[#385452] Ruby + USB + CCTV Camera Driver? — "Bob Carpenter." <rgc3679@...>

I want to write a Ruby driver that handles the feed from A CCTV camera.

23 messages 2011/07/18
[#385459] Re: Ruby + USB + CCTV Camera Driver? — William Rutiser <wruyahoo05@...> 2011/07/18

On 2011-07-18 1:00 PM, Bob Carpenter. wrote:

[#385461] Re: Ruby + USB + CCTV Camera Driver? — "Bob Carpenter." <rgc3679@...> 2011/07/18

William Rutiser wrote in post #1011466:

[#385462] Re: Ruby + USB + CCTV Camera Driver? — Hassan Schroeder <hassan.schroeder@...> 2011/07/18

On Mon, Jul 18, 2011 at 11:51 AM, Bob Carpenter. <rgc3679@yahoo.com> wrote:

[#385464] Re: Ruby + USB + CCTV Camera Driver? — "Bob Carpenter." <rgc3679@...> 2011/07/18

Hassan Schroeder wrote in post #1011472:

[#385471] Re: Ruby + USB + CCTV Camera Driver? — Hassan Schroeder <hassan.schroeder@...> 2011/07/18

On Mon, Jul 18, 2011 at 12:58 PM, Bob Carpenter. <rgc3679@yahoo.com> wrote:

[#385474] Re: Ruby + USB + CCTV Camera Driver? — Phillip Gawlowski <cmdjackryan@...> 2011/07/18

On Tue, Jul 19, 2011 at 12:18 AM, Hassan Schroeder

[#385477] Re: Ruby + USB + CCTV Camera Driver? — "Bob Carpenter." <rgc3679@...> 2011/07/19

Phillip Gawlowski wrote in post #1011503:

[#385509] A beginner question. — "Cajus A." <cajus_@...>

Hi i'm trying to write and example program where you speak to a

12 messages 2011/07/19

[#385542] Splitting strings — Ryan Mckenzie <ryan@...>

Hi all,

18 messages 2011/07/19

[#385565] error building ruby p290 — Dev Guy <devguy.ca@...>

I get the following build error on my Linux box while trying to build

12 messages 2011/07/20

[#385629] Are Job Ads OK? — Lee Hughes <lee@...>

Is it OK to post Ruby job ads on this forum?

12 messages 2011/07/21

[#385847] String manuplation example — kotin 76 <kotin76@...>

Hi,

15 messages 2011/07/27

[#385860] Counting lines of code in a ruby code file ignoring method code lines in the process — Harry Truax <htruax@...>

Hello,

8 messages 2011/07/27

[#385936] Help in Pointer — Tridib Bandopadhyay <tridib04@...>

Hello

18 messages 2011/07/29

[#386012] Ruby a "4th generation language"? Credible sources? — Albert Schlef <albertschlef@...>

I've noticed that Wikipedia says that "C#, Java" are 3'rd generation

13 messages 2011/07/31

[#386050] system stack error in ObjectSpace.each_object — luke gruber <luke.gru@...>

Hey guys, I'm just starting to mess around with metaprogramming in Ruby,

14 messages 2011/07/31
[#386052] Re: system stack error in ObjectSpace.each_object — Josh Cheek <josh.cheek@...> 2011/07/31

On Sun, Jul 31, 2011 at 4:29 PM, luke gruber <luke.gru@gmail.com> wrote:

[#386055] Re: system stack error in ObjectSpace.each_object — luke gruber <luke.gru@...> 2011/08/01

> Typically, SystemStackError is due to recursing for too long, perhaps I

[#386058] Re: system stack error in ObjectSpace.each_object — Robert Klemme <shortcutter@...> 2011/08/01

On Mon, Aug 1, 2011 at 3:56 AM, luke gruber <luke.gru@gmail.com> wrote:

[ANN] celluloid 0.2.0: a concurrent object framework for Ruby

From: Tony Arcieri <tony.arcieri@...>
Date: 2011-07-12 15:23:07 UTC
List: ruby-talk #385190
Celluloid is a concurrent object framework for Ruby inspired by Erlang
and the Actor Model:

- Github: http://github.com/tarcieri/celluloid
- RDoc: http://celluloid.github.com/

Celluloid wraps objects in threads, allowing them to run concurrently,
while still letting you talk to them using standard Ruby method call
conventions, in addition to providing asynchronous calls which run in
the background. This release brings with it two powerful new features
which extend Celluloid's asynchronous capabilities even further:
method futures and signaling.

--

Method Futures:

All Celluloid objects now respond to the #future method. This method
takes the same parameters as #send (e.g. obj.future :method_name,
arg1, arg2, arg3) and immediately returns a Celluloid::Future object
while the requested method call executes in the background. When you
are ready to obtain the value returned from the method, you invoke
Celluloid::Future#value, which will automatically block until the
method call completes, or will return immediately if the method call
has already completed. This provides an easy way to initiate a method
call, do something else, and obtain the result at a later point in
time. An example use case is scatter/gather operations where you wish
to spread a long computation (or an I/O bound operation) across
multiple threads, then collect all the results later. Here's some
pseudocode demonstrating the concept:

  objects = (1..10).map { |n| MyCelluloidObject.new(n) }
  futures = objects.map { |obj| obj.future :do_something_crazy_with_my_number }
  results = futures.map { |future| future.value }

This creates 10 concurrent Celluloid objects each running in their own
thread, then initiates the #do_something_crazy_with_my_number. What
sort of crazy things could this method do? It could fetch the nth page
of Google results for a particular search term. It could try to brute
force an MD5 hash with n leading zeroes. The #future method will kick
off this long-running computation in an asynchronous, non-blocking
manner, allowing the caller to scatter the given method call across 10
different objects, then gather the results by calling future.value on
each of the Celluloid::Future objects returned from the original
obj.future calls.

--

Signaling:

Every Celluloid object now responds to the #signal and #wait methods.
Each of these methods takes a name as a first parameter. Calling #wait
:my_signal_name suspends execution of the current method, allowing it
to process other incoming method calls (Celluloid only processes one
method at a time and maintains a queue of incoming calls). Another
method (or object) can unblock the #waiting method by calling #signal
:my_signal_name. #signal optionally accepts a value as a second
parameter (e.g. #signal :my_signal_name, 42) which is returned from
the corresponding #wait call. Several methods can be #waiting at the
same time. This allows objects processing a synchronous call to wait
until some outside event occurs before returning a result, similar to
ConditionVariables in threaded programming. See the Celluloid README
for examples.

--

Celluloid now provides asynchronous alternatives to all parts of the
method dispatch cycle:

- You can "fire and forget", invoking methods asynchronously and
ignoring the values they return
- You can asynchronously invoke a method and obtain its return value
later via a future
- Method calls in-progress can voluntarily suspend themselves waiting
for an asynchronous signal before returning a value

Enjoy!

--
Tony Arcieri

In This Thread

Prev Next