[#383997] CORE - Alternative Variable Substitution — Ilias Lazaridis <ilias@...>

ruby 1.9

21 messages 2011/06/01

[#384051] CORE - Replace "if __FILE__ == $0" with "executed?" — Ilias Lazaridis <ilias@...>

The construct to detect execution of the file (in order to launch main

12 messages 2011/06/02

[#384104] CORE - Altering Behaviour of "each do" (default param "item") — Ilias Lazaridis <ilias@...>

1.9

76 messages 2011/06/04
[#384111] Re: CORE - Altering Behaviour of "each do" (default param "item") — James Gray <james@...> 2011/06/04

On Sat, Jun 4, 2011 at 6:50 AM, Ilias Lazaridis <ilias@lazaridis.com> wrote:

[#384154] Re: CORE - Altering Behaviour of "each do" (default param "item") — Yukihiro Matsumoto <matz@...> 2011/06/05

Hi,

[#384168] Re: CORE - Altering Behaviour of "each do" (default param "item") — Ilias Lazaridis <ilias@...> 2011/06/06

On 6 =C9=EF=FD=ED, 01:11, Yukihiro Matsumoto <m...@ruby-lang.org> wrote:

[#384228] a little challenge - reproduce this error — Intransition <transfire@...>

Want to see a really amazing error I got this week? Okay... but to

24 messages 2011/06/08
[#384230] Re: a little challenge - reproduce this error — Steve Klabnik <steve@...> 2011/06/08

throw NameError.new("uninitialized constant X::Foo::X")

[#384231] Re: a little challenge - reproduce this error — John Feminella <johnf@...> 2011/06/08

This is a pretty trivial error to generate. Just reference the

[#384232] Re: a little challenge - reproduce this error — Intransition <transfire@...> 2011/06/08

[#384235] Re: a little challenge - reproduce this error — Christopher Dicely <cmdicely@...> 2011/06/08

On Wed, Jun 8, 2011 at 6:43 AM, Intransition <transfire@gmail.com> wrote:

[#384279] CORE - Literal Instantiation breaks Object Model — Ilias Lazaridis <ilias@...>

class String

14 messages 2011/06/09

[#384280] BARRIER - require "rubygems" — Ilias Lazaridis <ilias@...>

ruby 1.9.2p180 Windows 7

30 messages 2011/06/09

[#384283] Classic Computer Science Books — Stu <stu@...>

I wanted to start a thread discussion on classic computer science

38 messages 2011/06/09
[#384288] Re: Classic Computer Science Books — Josh Cheek <josh.cheek@...> 2011/06/10

On Thu, Jun 9, 2011 at 5:18 PM, Stu <stu@rubyprogrammer.net> wrote:

[#384289] Re: Classic Computer Science Books — Chad Perrin <code@...> 2011/06/10

On Fri, Jun 10, 2011 at 09:22:58AM +0900, Josh Cheek wrote:

[#384291] Re: Classic Computer Science Books — Stu <stu@...> 2011/06/10

Thank you for the responses. I look forward to reading others.

[#384346] Re: Classic Computer Science Books — Anurag Priyam <anurag08priyam@...> 2011/06/11

> queue to read Meyers C++ books and Crockford's Javascript: The Good

[#384349] Re: Classic Computer Science Books — Stu <stu@...> 2011/06/11

Hello Anurag

[#384430] Re: Classic Computer Science Books — Anurag Priyam <anurag08priyam@...> 2011/06/13

Hey Stu,

[#384464] Re: Classic Computer Science Books — Vin兤ius <undvinicius@...> 2011/06/14

Wow, those are a lot of books, as a beginner programmer, I don't have

[#384322] PSA: Ilias is Crazy — Ryan Davis <ryand-ruby@...>

I guess I have to post this periodically since our population is growing =

18 messages 2011/06/10

[#384363] RFC - One word alias for require_relative — Ilias Lazaridis <ilias@...>

This is a simple Request for Comments.

161 messages 2011/06/11
[#384368] Re: RFC - One word alias for require_relative — Intransition <transfire@...> 2011/06/11

[#384633] Re: RFC - One word alias for require_relative — Ilias Lazaridis <ilias@...> 2011/06/17

On 17 =C9=EF=FD=ED, 21:17, Gary Wright <gwtm...@mac.com> wrote:

[#384654] Re: RFC - One word alias for require_relative — Ilias Lazaridis <ilias@...> 2011/06/17

On 11 =C9=EF=FD=ED, 20:35, Ilias Lazaridis <il...@lazaridis.com> wrote:

[#384676] Re: RFC - One word alias for require_relative — Yukihiro Matsumoto <matz@...> 2011/06/17

Hi,

[#384432] commit message conventions — Intransition <transfire@...>

When I write commit messages I add a "team" prefix to the message,

14 messages 2011/06/13
[#384433] Re: commit message conventions — John Feminella <johnf@...> 2011/06/13

I greatly dislike that style, to be frank. My commit messages usually

[#384467] A way to find out when a constant gets defined? — Josh Cheek <josh.cheek@...>

Hi, I'd like to be able to find out when a constant gets defined. I think I

14 messages 2011/06/14

[#384490] Messages to Ruby List/Forum/etc. not arriving equally? — Markus Fischer <markus@...>

Hi,

11 messages 2011/06/15

[#384500] CORE - Inconsistent Handling of Uninitialized Variables — Ilias Lazaridis <ilias@...>

puts "\n== Testin in MAIN Context =="

18 messages 2011/06/15

[#384617] get execution name of program — Chad Perrin <code@...>

Either $0 or __FILE__ will return a filename to give context for how a

13 messages 2011/06/17

[#384634] default config file location — Chad Perrin <code@...>

Is there a "better" way to specify a default config file location than

16 messages 2011/06/17
[#384637] Re: default config file location — "Matthew K. Williams" <matt@...> 2011/06/17

On Sat, 18 Jun 2011, Chad Perrin wrote:

[#384648] celluloid 0.0.3: a concurrent object framework for Ruby — Tony Arcieri <tony.arcieri@...>

Celluloid is a concurrent object framework for Ruby inspired by Erlang

12 messages 2011/06/17

[#384763] MIDASWAD - Matz is Dumb and so We are Dumb — Ilias Lazaridis <ilias@...>

(public draft)

46 messages 2011/06/20
[#384765] Re: MIDASWAD - Matz is Dumb and so We are Dumb — Chad Perrin <code@...> 2011/06/20

Before anyone engages this nonsense . . .

[#384772] Re: MIDASWAD - Matz is Dumb and so We are Dumb — Adam Prescott <adam@...> 2011/06/20

On 20 Jun 2011 20:32, "Chad Perrin" <code@apotheon.net> wrote:

[#384779] Re: MIDASWAD - Matz is Dumb and so We are Dumb — David Masover <ninja@...> 2011/06/20

A quick, lazy response, because I shouldn't feed trolls anyway, and I simply

[#384788] Re: MIDASWAD - Matz is Dumb and so We are Dumb — Nikolai Weibull <now@...> 2011/06/21

On Mon, Jun 20, 2011 at 23:52, David Masover <ninja@slaphack.com> wrote:

[#384790] Re: MIDASWAD - Matz is Dumb and so We are Dumb — Adam Prescott <adam@...> 2011/06/21

On Tue, Jun 21, 2011 at 11:06 AM, Nikolai Weibull <now@bitwi.se> wrote:

[#384792] Re: MIDASWAD - Matz is Dumb and so We are Dumb — Nikolai Weibull <now@...> 2011/06/21

On Tue, Jun 21, 2011 at 13:37, Adam Prescott <adam@aprescott.com> wrote:

[#384800] How to order a hash based on its keys? — Iñaki Baz Castillo <ibc@...>

Hi, I want to order a hash using itds keys:

35 messages 2011/06/21
[#384808] Re: How to order a hash based on its keys? — Robert Klemme <shortcutter@...> 2011/06/21

On Tue, Jun 21, 2011 at 4:34 PM, I=F1aki Baz Castillo <ibc@aliax.net> wrote=

[#384813] Re: How to order a hash based on its keys? — Iñaki Baz Castillo <ibc@...> 2011/06/21

2011/6/21 Robert Klemme <shortcutter@googlemail.com>:

[#384814] Re: How to order a hash based on its keys? — Iñaki Baz Castillo <ibc@...> 2011/06/21

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

[#384833] Re: How to order a hash based on its keys? — Robert Klemme <shortcutter@...> 2011/06/22

On Tue, Jun 21, 2011 at 6:34 PM, I=F1aki Baz Castillo <ibc@aliax.net> wrote=

[#384837] Re: How to order a hash based on its keys? — Iñaki Baz Castillo <ibc@...> 2011/06/22

2011/6/22 Robert Klemme <shortcutter@googlemail.com>:

[#384843] Re: How to order a hash based on its keys? — Robert Klemme <shortcutter@...> 2011/06/22

On Wed, Jun 22, 2011 at 11:50 AM, I=F1aki Baz Castillo <ibc@aliax.net> wrot=

[#384846] Re: How to order a hash based on its keys? — Iñaki Baz Castillo <ibc@...> 2011/06/22

2011/6/22 Robert Klemme <shortcutter@googlemail.com>:

[#384847] Re: How to order a hash based on its keys? — Robert Klemme <shortcutter@...> 2011/06/22

On Wed, Jun 22, 2011 at 3:47 PM, I=F1aki Baz Castillo <ibc@aliax.net> wrote=

[#384849] Re: How to order a hash based on its keys? — Iñaki Baz Castillo <ibc@...> 2011/06/22

2011/6/22 Robert Klemme <shortcutter@googlemail.com>:

[#384855] Re: How to order a hash based on its keys? — Robert Klemme <shortcutter@...> 2011/06/22

On Wed, Jun 22, 2011 at 4:19 PM, I=F1aki Baz Castillo <ibc@aliax.net> wrote=

[#384819] Gateway Shutting Down — James Gray <james@...>

Rubyists:

12 messages 2011/06/21

[#384873] Explicitly setting compiler to C++ in extconf.rb... — "Darryl L. Pierce" <mcpierce@...>

I'm trying to setup a Ruby gem that bundles the Swig-generated bindings

10 messages 2011/06/23

[#384907] SPDX (and the glazing of ones eyes) — Intransition <transfire@...>

Never ceases to amaze me how complicated "enterprisey" peoples can

17 messages 2011/06/25
[#384909] Re: SPDX (and the glazing of ones eyes) — Phillip Gawlowski <cmdjackryan@...> 2011/06/25

On Sat, Jun 25, 2011 at 5:00 PM, Intransition <transfire@gmail.com> wrote:

[#384996] A movie Renamer — Mayank Kohaley <mayank.kohaley@...>

Hello Guys,

20 messages 2011/06/29
[#385007] Re: A movie Renamer — Sam Duncan <sduncan@...> 2011/06/29

Please don't steal movies.

[#385010] Re: A movie Renamer — Chad Perrin <code@...> 2011/06/29

On Thu, Jun 30, 2011 at 06:17:55AM +0900, Sam Duncan wrote:

[#385011] Re: A movie Renamer — Sam Duncan <sduncan@...> 2011/06/29

*sigh*

[#385019] A File Renamer — Mayank Kohaley <mayank.kohaley@...>

I guess this thread has spawned another issue. Let me close this and say I

18 messages 2011/06/30
[#385021] Re: A File Renamer — Jeremy Heiler <jeremyheiler@...> 2011/06/30

On Thu, Jun 30, 2011 at 1:48 AM, Mayank Kohaley

[#385027] Re: A File Renamer — Johnny Morrice <spoon@...> 2011/06/30

> Is there a pattern to the file names you are working with? The key is

Re: How to order a hash based on its keys?

From: Robert Klemme <shortcutter@...>
Date: 2011-06-24 08:26:33 UTC
List: ruby-talk #384887
On Thu, Jun 23, 2011 at 6:42 PM, I=F1aki Baz Castillo <ibc@aliax.net> wrote=
:
> 2011/6/23 Robert Klemme <shortcutter@googlemail.com>:
>> I'd also not use recursion in srv_entries_randomize() - a loop is
>> usually more efficient.
>
> I was not able to do it with a loop, neither writing the algorithm in
> a paper, I always got bad statistical results.

That was certainly not an effect of the recursion.  You probably
accidentally added another issue.

> Are you sure sure that
> your code generates statistical results? for example, with my example
> data:
>
> priorities =3D {
> =A01 =3D> [[0, :"server-1"]],
> =A02 =3D> [[16, :"server-2-A"], [4, :"server-2-B"], [8, :"server-2-C"]],
> =A04 =3D> [[50, :"server-3"]]
> }
>
> I get there correct results (columns mean position from 1 to 5):
>
> Iterating 50000 times...
>
> Results:
> -------------------------------------------------------------------
> server-1: =A0 =A0 50000 =A0 =A0 =A0 =A0 0 =A0 =A0 =A0 =A0 0 =A0 =A0 =A0 0=
 =A0 =A0 =A0 =A0 0
> server-2-A: =A0 =A0 =A0 =A0 0 =A028488 =A016302 =A05210 =A0 =A0 =A0 =A0 0
> server-2-B: =A0 =A0 =A0 =A0 0 =A0 =A07226 =A012245 30529 =A0 =A0 =A0 =A00
> server-2-C: =A0 =A0 =A0 =A0 0 =A014286 =A021453 14261 =A0 =A0 =A0 =A00
> server-3: =A0 =A0 =A0 =A0 =A0 =A00 =A0 =A0 =A0 =A0 0 =A0 =A0 =A0 =A0 0 =
=A0 =A0 =A0 =A00 50000
> ---------------------------------------------------------------------

Would that be sufficient statistical enough for you?
https://gist.github.com/1040631

>> =A0And btw. you calculate the total weight every
>> time the method is invoked as sum of all entries while I maintain the
>> @total and adjust it only for every insertion and removal.
>
> Right. I'm trying to improve that. However take into account that my
> code does not need to create an instance. Instead it will be a class
> method (or a module method like DNS::srv_randomize), so I cannot use
> attributes (or I should not).

Well, that's not exactly true: your code creates an Array (stored in
ordered_targets) so you could as well create another object.

> But you are right, I must get removing the recursion. If you can prove
> me that your code gets same results for 10000 iterations with same
> input data I will adapt my code :)

see above

>>=A0You also seem to have the habit of placing
>> assignments in method argument lists or control flow statements. =A0This
>> makes code harder to read and is really only needed in case of loops,
>> e.g.
>>
>> while (str =3D io.gets)
>> =A0printf "We have read: %p\n", str
>> end
>
> Right, in fact I did it due to performance reasons, to avoid double
> access to the same element of a hash, but I've realized that depending
> on the case, it's just more efficient to perform double access rather
> than generating a new variable.

My remark has nothing to do whatsoever with avoiding double access to
a Hash.  I was specifically talking about these:

11:     if rnd < prio =3D entry[0]
106: printf "INFO: Time elapsed : %.4f seconds\n", time_elapsed =3D
time_end - time_start

which are better written as

prio =3D entry[0]
if rnd < prio

time_elapsed =3D time_end - time_start
printf "INFO: Time elapsed : %.4f seconds\n", time_elapsed

Much more readable and no performance difference other than maybe one
more access to a local variable which is negligible IMHO.

>> There is one thing I don't understand in your code: you have two
>> randomizations in there: in line 8 there is rand() similar to what I
>> have done and in line 34 there is shuffle. =A0Why do you do that? =A0Is
>> there a requirement that hasn't been mentioned yet?
>
> You are right, sorry. If a SRV record has weight 0, there should be no
> chance it to be the chosen first (before other records with same
> priority and weight greater than 0). So what I do is remove SRV
> records with same priority and weight 0 and then make a simple shuffle
> with them, adding the results in the last position. For example:
>
> =A0- priority 1, weight 10, domain "server1", port 5060
> =A0- priority 1, weight 0, domain "server2", port 5060
> =A0- priority 1, weight 0, domain "server3", port 5060
>
> In this case, records 2 and 3 should always be chosen after record 1
> (which has weight > 0). The order of records with weight 0 must be
> random.

Weight 0 generally means "do not use".  Basically you change the
algorithm to also include items whose weight is 0.  I am not sure I
would add that complexity.  If someone uses weight 0 then he may
actually do that on purpose.  If not then it's a bug and should be
flagged accordingly (e.g. by raising an exception).  Also: this will
also change weight of all other elements, because the probabilities
are skewed.  I'd rather provide proper weights as inputs and avoid
illegal weights.

> Really thanks a lot for your interest. It's very helpful.

Good!  These kinds of discussions are the ones I like being around.
Everybody learns something along the way.

Kind regards

robert


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

In This Thread