[#401849] If statement — Masoud Ahmadi <lists@...>

Will anyone be able to point out what I am doing wrong.

15 messages 2012/12/02

[#401987] Trying to get "translator" to work — JD KF <lists@...>

So, basically, I'm trying to get the below code to work properly for

12 messages 2012/12/06

[#402012] Need help to select some listbox item in different listbox together — Jonathan Masato <lists@...>

Hello,

10 messages 2012/12/07

[#402045] if n belongs to set a and m belongs to set b repeat some steps, How? — "zubair a." <lists@...>

We can do so in java and similar languages like:

11 messages 2012/12/08

[#402078] Time.new(2001, 12, 3).to_i returns wrong value — Robert Buck <lists@...>

I am doing something that not many do, I am writing a database driver

9 messages 2012/12/09

[#402145] How I can create/extract a variable/hash into the current binding in Ruby? — Ramon de C Valle <rcvalle@...>

Hi,

12 messages 2012/12/12

[#402205] Wondering About Flatiron School — "Kevin Y." <lists@...>

Hi everyone!,

35 messages 2012/12/15
[#402207] Re: Wondering About Flatiron School — Chad Perrin <code@...> 2012/12/15

On Sat, Dec 15, 2012 at 11:51:08AM +0900, Kevin Y. wrote:

[#402214] Ruby quick reference arranged in ASCII sequence? — Old Grantonian <lists@...>

As a ruby beginner, I would be grateful for any links to a ruby

17 messages 2012/12/15

[#402226] print - and strip text between tags using Nokogiri — Paul Mena <lists@...>

I'm a Ruby Newbie trying to write a program to process thousands of HTML

13 messages 2012/12/15

[#402332] Perl to Ruby: regex captures to assignment. — "Derrick B." <lists@...>

Hello all,

37 messages 2012/12/19
[#402342] Re: Perl to Ruby: regex captures to assignment. — "Derrick B." <lists@...> 2012/12/20

First of all, thanks for the fast responses!

[#402352] Re: Perl to Ruby: regex captures to assignment. — Robert Klemme <shortcutter@...> 2012/12/20

On Thu, Dec 20, 2012 at 1:38 AM, Derrick B. <lists@ruby-forum.com> wrote:

[#402357] Re: Perl to Ruby: regex captures to assignment. — "Derrick B." <lists@...> 2012/12/20

Robert Klemme wrote in post #1089733:

[#402359] trying to strip characters from a line — Paul Mena <lists@...>

I'm reading a table from a MySQL database and then processing it row by

18 messages 2012/12/20

[#402394] simple division: -9 / 5 = -2 what? — "Derrick B." <lists@...>

$ irb

13 messages 2012/12/22

[#402412] POLS and string-handling — Paul Magnussen <lists@...>

Hi,

14 messages 2012/12/22

[#402460] "Open" dialog of Windows — "Damián M. González" <lists@...>

Hi guys, been researching about pop up the "open" file dialog of

11 messages 2012/12/24

[#402466] How do I install Ruby on my Ubuntu 12.10 partition. — Kaye Ng <lists@...>

I already have Ruby installed on my Windows 7 partition.

23 messages 2012/12/25

[#402510] Ruby Association Certified Ruby Programmer — Sean Westfall <lists@...>

How well respected is this certification in the industry: Ruby

27 messages 2012/12/27
[#402528] Re: Ruby Association Certified Ruby Programmer — Peter Hickman <peterhickman386@...> 2012/12/27

On 27 December 2012 01:28, Sean Westfall <lists@ruby-forum.com> wrote:

[#402555] numeric? — Brandon Weaver <keystonelemur@...>

I've found a bit of an annoyance trying to find out if a number is numeric

20 messages 2012/12/27

[#402580] Ruby Koans regarding Hashes. — "Derrick B." <lists@...>

I am trying to understand this, so let me know how I do. :) I know

18 messages 2012/12/28

[#402609] can't open new ruby program under "new" context menu — "Lee V." <lists@...>

I'm stuck on the new version at trying to do something very simple.

10 messages 2012/12/28

[#402642] require "test/unit" — "Mattias A." <lists@...>

Hi,

17 messages 2012/12/29
[#402667] Re: require "test/unit" — "Mattias A." <lists@...> 2012/12/31

Hi Dami=C3=A1n M. Gonz=C3=A1lez!

[#402747] Re: require "test/unit" — "Derrick B." <lists@...> 2013/01/04

Mattias A. wrote in post #1090700:

[#402749] Re: require "test/unit" — sto.mar@... 2013/01/04

Am 04.01.2013 19:48, schrieb Derrick B.:

Re: Ruby game server woes

From: "Carlo E. Prelz" <fluido@...>
Date: 2012-12-24 16:50:36 UTC
List: ruby-talk #402453
	Subject: Re: Ruby game server woes
	Date: Mon 24 Dec 12 11:01:11PM +0900

Quoting Na Na (lists@ruby-forum.com):

> Is this why you write in ruby?  Speed of development, and then c
> extensions when you need quicker computations?

Well, this is what I *obtain* from writing in Ruby+C. The why is a bit
more difficult to explain: there is a strange feeling of
satisfaction/accomplishment that I get when I see my Ruby code
running. It is a bit the opposite of what I experienced with
Java. Java somehow cut the cake, but there always was that aftertaste
of unrealized promise, of vague awkwardness.

C is one with Unix: they were invented together and still nothing
better has been found (both Apple and Google had to bow their
heads...). IMHO it is only with Ruby that the promises of OO have been
delivered. And the delivery comes together with the acceptance that
more ease in development and maintenance is paid with a tad less
performance.

The highway towards better performance is open and available when you
need it - once you master the way.

(oops - I may have waxed a bit too lyrical ;-)

> Are there issues with c extensions in terms of multiple platforms?  Or
> is it a case that ruby c extensions typically will compile well for mac,
> linux, and windows without platform-specific code?

Ahha...

I use only Linux.

But: if you can compile MRI (including the C extensions that are found
under the ext subdirectory), your extension too will most probably
compile. After all, when you write C extensions to Ruby you write
similar code as the one that makes up the interpreter - which is
itself written in ANSI C. You interface with the running interpreter
in the same way. The Ruby-related stuff is all neatly included in .h
files, which happen to be themselves included in MRI.

If your Ruby extension is just there for performance reasons (and thus
makes no use of exotic libraries), there is no reason why it won't
compile. wherever Ruby itself compiles. And if the exotic libraries
are already ported to the various architectures, the dirty work is
done for you already.

Then, with macosx this is certainly more direct (after all, it is
still UNIX, and you use GCC there as default). With windows, to my
knowledge there are a range of options to give to that unlucky
platform an appearance of shape ;-), so there have to be ways. But
there, I cannot be of help.

> Finally, if you know - is it possible to write a c extension that itself
> uses multiple threads to speed up computations if it's a task that can
> be done in parallel?

Of course! I do it regularly. For example, my audio playback toys
always have a background thread that makes sure samples are fed to the
DSP in time.

(the DSP stuff is of course highly unportable and quirky, thanks to
the time-revered ALSA library, but this is another topic ;-)

Once you are in C land, you can do anything you do in any other C
program or library. And you can bring in any other library, too. There
is a function that the Ruby interpreter calls when your library file
is loaded, called

void Init_<whatever your library is called>(void)

(which is the only function that your library *needs* to export),
where you create the class objects and their accessible methods. 

Then you need to write the code for those methods. Among them, you
generally have the initialization call (the equivalent of Class::new),
which is called every time you create a new instance of your
class. If you want a thread to be associated to each instantiated
object, you just call pthread_create from within the body of that
function. 

There arev some gotchas you have to be aware of (basically, if you
want the thread function to make use of ruby objects, you must make
sure the garbage collector does not destroy them in the meantime - but
this is advanced stuff).

It is all about trying a bit. Create your directory, put into it your
extconf.rb (which is just a Ruby script making use of the mkmf
package, and may be refreshingly simple) plus one or more .c and/or .h
files. Run

ruby extconf.rb

which will create the makefile, then run

make

whick will create your shared library. 

make install

will move the library wherever your Ruby installation is supposed to
find it. At that point your Ruby scripts can do

require <whatever your library is called>

and you will be able to instantiate your C-based objects.

> Thanks for taking the time to reply.

these winter days are sooo dark... ;-)

Carlo

-- 
  *         Se la Strada e la sua Virtu' non fossero state messe da parte,
* K * Carlo E. Prelz - fluido@fluido.as             che bisogno ci sarebbe
  *               di parlare tanto di amore e di rettitudine? (Chuang-Tzu)

In This Thread