[#392128] negative grep — Matt Lawrence <matt@...>

A bit of syntax that I have never picked up. How do I use grep to exclude

14 messages 2012/01/12
[#392129] Re: negative grep — K Clair <kclair@...> 2012/01/12

biglist !~ /bar/

[#392135] Problem with "Exception" - suddenly stopped working — Panagiotis Atmatzidis <ml@...>

Hello,

16 messages 2012/01/12
[#392144] Re: Problem with "Exception" - suddenly stopped working — "Abinoam Jr." <abinoam@...> 2012/01/12

IMHO ~PERHAPS~ the begin rescue is not working because the exception

[#392146] Re: Problem with "Exception" - suddenly stopped working — Peter Vandenabeele <peter@...> 2012/01/12

On Thu, Jan 12, 2012 at 10:04 PM, Abinoam Jr. <abinoam@gmail.com> wrote:

[#392147] Re: Problem with "Exception" - suddenly stopped working — Peter Vandenabeele <peter@...> 2012/01/12

On Thu, Jan 12, 2012 at 10:33 PM, Peter Vandenabeele <peter@vandenabeele.com

[#392154] Re: Problem with "Exception" - suddenly stopped working — Panagiotis Atmatzidis <ml@...> 2012/01/12

Hello,

[#392161] Re: Problem with "Exception" - suddenly stopped working — "Abinoam Jr." <abinoam@...> 2012/01/13

On Thu, Jan 12, 2012 at 8:45 PM, Panagiotis Atmatzidis

[#392162] Re: Problem with "Exception" - suddenly stopped working — Peter Vandenabeele <peter@...> 2012/01/13

On Fri, Jan 13, 2012 at 12:23 PM, Abinoam Jr. <abinoam@gmail.com> wrote:

[#392242] The Better Code — Intransition <transfire@...>

Which would you judge to be the better code?

15 messages 2012/01/16

[#392252] Which library to write a parser — thomas carlier <carlier.thomas@...>

Hi,

16 messages 2012/01/16

[#392262] uniq with count; better way? — Ralph Shnelvar <ralphs@...32.com>

a = [4,5,6,4,5,6,6,7]

42 messages 2012/01/16
[#392266] Re: uniq with count; better way? — Sigurd <cu9ypd@...> 2012/01/16

The first that came to my mind.

[#392268] Re: uniq with count; better way? — Adam Prescott <adam@...> 2012/01/16

On Mon, Jan 16, 2012 at 16:00, Sigurd <cu9ypd@gmail.com> wrote:

[#392277] Re: uniq with count; better way? — Magnus Holm <judofyr@...> 2012/01/16

On Mon, Jan 16, 2012 at 17:04, Adam Prescott <adam@aprescott.com> wrote:

[#392287] Re: uniq with count; better way? — "Abinoam Jr." <abinoam@...> 2012/01/17

On Mon, Jan 16, 2012 at 1:48 PM, Magnus Holm <judofyr@gmail.com> wrote:

[#392289] Re: uniq with count; better way? — "Abinoam Jr." <abinoam@...> 2012/01/17

On Mon, Jan 16, 2012 at 9:22 PM, Abinoam Jr. <abinoam@gmail.com> wrote:

[#392291] Re: uniq with count; better way? — "Abinoam Jr." <abinoam@...> 2012/01/17

On Mon, Jan 16, 2012 at 10:05 PM, Abinoam Jr. <abinoam@gmail.com> wrote:

[#392303] Re: uniq with count; better way? — Peter Vandenabeele <peter@...> 2012/01/17

On Tue, Jan 17, 2012 at 2:44 AM, Abinoam Jr. <abinoam@gmail.com> wrote:

[#392351] Re: uniq with count; better way? — Robert Klemme <shortcutter@...> 2012/01/18

On Tue, Jan 17, 2012 at 12:08 PM, Peter Vandenabeele

[#392286] Parsing log with date time entry — Christopher Graves <gravescl@...>

The log file looks like this

24 messages 2012/01/16

[#392406] Name directory with a variable — Alex Sweps <alexszepes@...>

Hello again everyone.

14 messages 2012/01/20

[#392429] Getting an Object to Push or Register "Itself" With a Hash During Initialization — Frank Guerino <frank.guerino@...4it.com>

Hi,

11 messages 2012/01/20

[#392460] Microrant on Ruy's Math Skills — Intransition <transfire@...>

So simple...

116 messages 2012/01/21
[#392464] Re: Microrant on Ruy's Math Skills — Gary Wright <gwtmp01@...> 2012/01/21

[#392469] Re: Microrant on Ruy's Math Skills — Yossef Mendelssohn <ymendel@...> 2012/01/21

On Jan 21, 2012 9:34 AM, "Gary Wright" <gwtmp01@mac.com> wrote:

[#392471] Re: Microrant on Ruy's Math Skills — Su Zhang <su.comp.lang.ruby@...> 2012/01/21

On 1/21/2012 12:08 PM, Yossef Mendelssohn wrote:

[#392499] Re: Microrant on Ruy's Math Skills — Intransition <transfire@...> 2012/01/22

So they can drop a billion transistors on a chip, have implemented 3D

[#392547] Re: Microrant on Ruy's Math Skills — Robert Klemme <shortcutter@...> 2012/01/23

On Sun, Jan 22, 2012 at 3:03 AM, Intransition <transfire@gmail.com> wrote:

[#392550] Re: Microrant on Ruy's Math Skills — Peter Vandenabeele <peter@...> 2012/01/23

On Mon, Jan 23, 2012 at 9:29 AM, Robert Klemme

[#392579] Re: Microrant on Ruy's Math Skills — Chad Perrin <code@...> 2012/01/23

On Mon, Jan 23, 2012 at 07:33:20PM +0900, Peter Vandenabeele wrote:

[#392581] Re: Microrant on Ruy's Math Skills — Steve Klabnik <steve@...> 2012/01/23

> Even that and the '1.1'.to_dec option mentioned elsewhere seem pretty

[#392585] Re: Microrant on Ruy's Math Skills — Chad Perrin <code@...> 2012/01/23

On Tue, Jan 24, 2012 at 03:14:27AM +0900, Steve Klabnik wrote:

[#392587] Re: Microrant on Ruy's Math Skills — Steve Klabnik <steve@...> 2012/01/23

No, it's not a terminology difference. That's why it won't work. You

[#392590] Re: Microrant on Ruy's Math Skills — Chad Perrin <code@...> 2012/01/23

On Tue, Jan 24, 2012 at 05:45:18AM +0900, Steve Klabnik wrote:

[#392591] Re: Microrant on Ruy's Math Skills — Ryan Davis <ryand-ruby@...> 2012/01/23

[#392618] Re: Microrant on Ruy's Math Skills — Alex Chaffee <alexch@...> 2012/01/24

"Standard is better than better." -Anon.

[#392643] Re: Microrant on Ruy's Math Skills — Gavin Sinclair <gsinclair@...> 2012/01/25

On Wed, Jan 25, 2012 at 6:05 AM, Alex Chaffee <alexch@gmail.com> wrote:

[#392673] Re: Microrant on Ruy's Math Skills — Intransition <transfire@...> 2012/01/25

I have tried this, but recently discovered the same issues arise.

[#392743] Re: Microrant on Ruy's Math Skills — Garthy D <garthy_lmkltybr@...> 2012/01/27

[#392745] Re: Microrant on Ruy's Math Skills — Josh Cheek <josh.cheek@...> 2012/01/27

On Thu, Jan 26, 2012 at 6:05 PM, Garthy D <

[#392766] Re: Microrant on Ruy's Math Skills — Adam Prescott <adam@...> 2012/01/27

On Fri, Jan 27, 2012 at 03:05, Josh Cheek <josh.cheek@gmail.com> wrote:

[#392776] Re: Microrant on Ruy's Math Skills — Chad Perrin <code@...> 2012/01/27

On Fri, Jan 27, 2012 at 11:02:52PM +0900, Adam Prescott wrote:

[#392781] Re: Microrant on Ruy's Math Skills — Gary Wright <gwtmp01@...> 2012/01/27

[#392805] Re: Microrant on Ruy's Math Skills — "Jon Lambert" <jlambert@...> 2012/01/29

On Jan 27, 2012, at 3:26 PM, Gary Wright wrote:

[#392831] Re: Microrant on Ruy's Math Skills — Gary Wright <gwtmp01@...> 2012/01/30

[#392835] Re: Microrant on Ruy's Math Skills — Chad Perrin <code@...> 2012/01/30

On Mon, Jan 30, 2012 at 10:03:04AM +0900, Gary Wright wrote:

[#392837] Re: Microrant on Ruy's Math Skills — Robert Klemme <shortcutter@...> 2012/01/30

On Mon, Jan 30, 2012 at 6:56 AM, Chad Perrin <code@apotheon.net> wrote:

[#392847] Re: Microrant on Ruy's Math Skills — Chad Perrin <code@...> 2012/01/30

On Mon, Jan 30, 2012 at 05:22:47PM +0900, Robert Klemme wrote:

[#392511] Building desktop application using Ruby and any GUI Framework — Rubyist Rohit <passionate_programmer@...>

I want to write a small desktop application on Ruby. I want the

12 messages 2012/01/22

[#392598] Web Application from Scratch - like PHP — "Gaurav C." <chande.gaurav@...>

Hi,

17 messages 2012/01/24

[#392635] A little assistance please :) — Paet Worlds II <paetilium@...>

So I'm still quite new to Ruby and so far I love it's simplicity, but I

21 messages 2012/01/25
[#392636] Re: A little assistance please :) — Hilco Wijbenga <hilco.wijbenga@...> 2012/01/25

On 24 January 2012 17:14, Paet Worlds II <paetilium@live.com> wrote:

[#392637] Re: A little assistance please :) — Paet Worlds II <paetilium@...> 2012/01/25

Hilco Wijbenga wrote in post #1042399:

[#392641] Re: A little assistance please :) — Chad Perrin <code@...> 2012/01/25

On Wed, Jan 25, 2012 at 10:41:10AM +0900, Paet Worlds II wrote:

[#392672] Re: A little assistance please :) — Dave Aronson <rubytalk2dave@...> 2012/01/25

On Tue, Jan 24, 2012 at 23:32, Chad Perrin <code@apotheon.net> wrote:

[#392711] Re: A little assistance please :) — Chad Perrin <code@...> 2012/01/26

On Thu, Jan 26, 2012 at 03:43:59AM +0900, Dave Aronson wrote:

[#392818] Help please Undefined Method error — "andres d." <andres.1996.1@...>

Hi and thank you for reading this

12 messages 2012/01/29

[#392867] Multiple assignment in conditional — Gavin Sinclair <gsinclair@...>

I find this a strange Ruby error.

28 messages 2012/01/31
[#392868] Re: Multiple assignment in conditional — Josh Cheek <josh.cheek@...> 2012/01/31

On Tue, Jan 31, 2012 at 12:46 AM, Gavin Sinclair <gsinclair@gmail.com>wrote:

[#392944] Re: Multiple assignment in conditional — Gavin Sinclair <gsinclair@...> 2012/02/01

On Tue, Jan 31, 2012 at 6:22 PM, Josh Cheek <josh.cheek@gmail.com> wrote:

[#392914] Re: Multiple assignment in conditional — Robert Klemme <shortcutter@...> 2012/01/31

On Tue, Jan 31, 2012 at 7:46 AM, Gavin Sinclair <gsinclair@gmail.com> wrote=

[#392917] PHP vs Ruby is it worth it? — Samuel Mensah <sasogeek@...>

Hi, I've been searching around for what the best language there is out

14 messages 2012/01/31

Re: What’s the standard way of implementing #hash for value objects in Ruby?

From: Robert Klemme <shortcutter@...>
Date: 2012-01-02 17:15:41 UTC
List: ruby-talk #391910
On Sat, Dec 31, 2011 at 3:16 PM, Nikolai Weibull <now@bitwi.se> wrote:
> On Sat, Dec 31, 2011 at 13:58, Robert Klemme <shortcutter@googlemail.com>=
 wrote:
>> On Fri, Dec 30, 2011 at 3:43 PM, Nikolai Weibull <now@bitwi.se> wrote:
>
>>>> But still, I don't see the need. =A0Note also that a proper Hash key
>>>> usually should be immutable because changing them causes all sorts of
>>>> trouble if not done carefully.
>>>
>>> Hence the use of =93value object=94 in my question.
>
>> I can't see that "value object" implies "immutable".
>>
>> http://c2.com/cgi/wiki?ValueObject
>> http://en.wikipedia.org/wiki/Value_object
>
> Continue reading:
>
> http://c2.com/cgi/wiki?ValueObjectsShouldBeImmutable

Ah, OK.  Still it's not a "must".

>>> Second, let me rephrase my
>>> question and add some additional context and examples:
>>>
>>> What algorithm should one employ in the calculation of the hash value
>>> of an arbitrary value object?
>
>> There is no single standard (or best) way. =A0The fact that different
>> languages (Java, Ruby...) have different means to calculate combined
>> hash values which all seem to work pretty well indicates this IMHO.
>
> Really? =A0Everyone seems to use the XOR method (with good cause).

No, not the simple "XOR all hash codes" method.  Consider
java.util.AbstractList<E>

    public int hashCode() {
	int hashCode =3D 1;
	Iterator<E> i =3D iterator();
	while (i.hasNext()) {
	    E obj =3D i.next();
	    hashCode =3D 31*hashCode + (obj=3D=3Dnull ? 0 : obj.hashCode());
	}
	return hashCode;
    }

> As I=92ve already pointed out, internally, Ruby does something
> completely different.

It's bit manipulations as well as far as I can see - but more complex
than the simple XOR all or the Java version.

>>> I would claim that the algorithm should take the class of the object
>>> into account as well, both for consistency with #=3D=3D (which should
>>> check equality of the classes of the objects being compared) and for
>>> added entropy.
>
>> You pay a price for additional calculation though.
>
> Since the fields are immutable, the result of the calculation can be
> cached, so that=92s not a valid reason to exclude it.

You can only cache it if the object is frozen.  And the question still
remains to be answered whether there is a significant gain by having
the class's hash included.

>>> Internally, Ruby (primarily) uses three C functions for the
>>> calculation of combined hash values, namely rb_hash_start,
>>> rb_hash_uint, and rb_hash_end. =A0As an example, the hash value of a
>>> Struct is calculated (in Ruby with these three functions wrapped in an
>>> imaginary module C) as
>>>
>>> class Struct
>>> =A0def hash
>>> =A0 =A0C.rb_hash_end(reduce(C.rb_hash_start(self.class.hash)){ |h, v|
>>> C.rb_hash_uint(h, v.hash) })
>>> =A0end
>>> end
>>>
>>> Might it be useful to have Ruby expose a way to perform this
>>> calculation from the Ruby realm so that other classes may employ this
>>> algorithm?
>
>> Not sure whether we would really gain that much. =A0Those calls are
>> efficient in C but if you provide that mechanism in Ruby land you will
>> have multiple calls, e.g.
>>
>> def hash
>> =A0h =3D Fixnum::HASH_START
>> =A0h =3D h.combine_hash(@a)
>> =A0h =3D h.combine_hash(@b)
>> =A0h =3D h.combine_hash(@c)
>> end
>
> I don=92t understand what you=92re getting at with this example. =A0It
> doesn=92t seem to add anything to the discussion.

It demonstrates that whatever would be exposed to Ruby land would need
multiple method calls to avoid object creation overhead.  If you are
willing to pay that price you can just use [@a,@b,@c].hash.

> =A0My example code,
> which shows how Ruby does it internally for Struct, makes multiple
> calls. =A0Since these methods would be simple wrappers of the C
> functions, the hash calculation would (almost) be as fast as it would
> be for Struct.

You still have some overhead.  And then it might be more efficient to
use Array's implementation.  It's certainly simpler.

I still cannot see why there should be a "standard way of implementing
#hash for value objects".  We have Struct's way and Array's way and we
can use other approaches like XOR all.  Why would a standard make
things better?

Cheers

robert

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

In This Thread

Prev Next