[#80776] prerelease of Guis-1.3pre1 (a GTK widget server) for Ruby — Basile STARYNKEVITCH <basile@...>

Dear All,

11 messages 2003/09/01

[#80849] Simple question(s) — Michael Campbell <michael_s_campbell@...>

(I think...)

16 messages 2003/09/02

[#80870] show me the ruby way — nord ehacedod <nordehacedod@...>

This works, but there must be a more natural way to do

18 messages 2003/09/02
[#80916] Re: show me the ruby way — aero6dof@... (Alan Chen) 2003/09/02

ts <decoux@moulon.inra.fr> wrote in message news:<200309021525.h82FPkM17085@moulon.inra.fr>...

[#80918] Re: show me the ruby way — "Warren Brown" <wkb@...> 2003/09/02

alan,

[#80873] RDoc: how to turn off automatic linking for a word? — leikind@... (Yuri Leikind)

Hello all,

12 messages 2003/09/02
[#80962] Re: RDoc: how to turn off automatic linking for a word? — William Webber <wew@...> 2003/09/03

On Wed, Sep 03, 2003 at 12:32:23AM +0900, Yuri Leikind wrote:

[#81014] unknown node type 0 — Hal Fulton <hal9000@...>

Hello, all.

15 messages 2003/09/03

[#81028] webrick and ruby — ahoward <ahoward@...>

12 messages 2003/09/03

[#81057] WEBrick and mod_ruby performance — quixoticsycophant@... (Jeff Mitchell)

I've been scoping out ruby for an upcoming server project.

16 messages 2003/09/03

[#81075] Unit Tests and Encapsulation — Scott Thompson <easco@...>

This may be off-topic in a Ruby list, although I have noticed that a

18 messages 2003/09/04

[#81167] Difference between .. and ... in boolean ranges — Oliver Dain <odain2@...>

I'm a bit confused by some Ruby behavior I'm seeing with ranges. As I

12 messages 2003/09/04

[#81234] Correction: "religious" — Daniel Carrera <dcarrera@...>

It has come to my attention that the word religious can, indeed, be

12 messages 2003/09/05

[#81239] rcalc 2.0 (Ruby Calculator) — "Josef 'Jupp' Schugt" <jupp@...>

Saluton!

14 messages 2003/09/05

[#81345] ANN: MetaTags 1.0 — Ryan Pavlik <rpav@...>

MetaTags 1.0

73 messages 2003/09/08
[#81361] Re: ANN: MetaTags 1.0 — Tobias Peters <tpeters@...> 2003/09/08

Ryan Pavlik wrote:

[#81371] Re: ANN: MetaTags 1.0 — why the lucky stiff <ruby-talk@...> 2003/09/08

On Monday 08 September 2003 06:58 am, Tobias Peters wrote:

[#81384] Re: ANN: MetaTags 1.0 — Chad Fowler <chad@...> 2003/09/08

On Tue, 9 Sep 2003, why the lucky stiff wrote:

[#81386] Re: ANN: MetaTags 1.0 — dblack@... 2003/09/08

Hi --

[#81394] Re: ANN: MetaTags 1.0 — why the lucky stiff <ruby-talk@...> 2003/09/08

On Monday 08 September 2003 12:08 pm, dblack@superlink.net wrote:

[#81396] Re: ANN: MetaTags 1.0 — Hal Fulton <hal9000@...> 2003/09/08

why the lucky stiff wrote:

[#81452] Re: ANN: MetaTags 1.0 — matz@... (Yukihiro Matsumoto) 2003/09/09

Hi,

[#81454] Re: ANN: MetaTags 1.0 — Dave Thomas <Dave@...> 2003/09/09

[#81615] Re: ANN: MetaTags 1.0 — Richard Kilmer <rich@...> 2003/09/10

On Monday, September 8, 2003, at 11:59 PM, Dave Thomas wrote:

[#81374] problem with Module#append_features — Ferenc Engard <ferenc@...>

Hi all,

24 messages 2003/09/08

[#81503] Memory consumption of Ruby/mod_ruby combo on Apache — David Heinemeier Hansson <david@...>

I'm seeing memory consumption in the area of 30-35mb per Apache process

12 messages 2003/09/09
[#81504] Re: Memory consumption of Ruby/mod_ruby combo on Apache — mgarriss <mgarriss@...> 2003/09/09

David Heinemeier Hansson wrote:

[#81535] using a filter inside Ruby — Eric Schwartz <emschwar@...>

I've the contents of a raw log file in memory, and a program that will

12 messages 2003/09/09

[#81587] Fwd: Calling fun taking struct and not pointer to struct? — Robert Feldt <feldt@...>

Related to the recent thread about nested structs

16 messages 2003/09/10
[#81590] Re: Calling fun taking struct and not pointer to struct? — "Nathaniel Talbott" <nathaniel@...> 2003/09/10

Robert Feldt [mailto:feldt@ce.chalmers.se] wrote:

[#81594] Re: Calling fun taking struct and not pointer to struct? — Robert Feldt <feldt@...> 2003/09/10

Nathaniel Talbott <nathaniel@NOSPAMtalbott.ws> skrev den Wed, 10 Sep 2003 22:42:24 +0900:

[#81596] Re: Calling fun taking struct and not pointer to struct? — "Nathaniel Talbott" <nathaniel@...> 2003/09/10

Robert Feldt [mailto:feldt@ce.chalmers.se] wrote:

[#81597] Re: Calling fun taking struct and not pointer to struct? — Robert Feldt <feldt@...> 2003/09/10

Nathaniel Talbott <nathaniel@NOSPAMtalbott.ws> skrev den Thu, 11 Sep 2003 00:06:18 +0900:

[#81612] What *are* variables? Which are nil now? — Hugh Sasse Staff Elec Eng <hgs@...>

Reading about reflection, ObjectSpace will give you the objects in

22 messages 2003/09/10
[#81632] Re: What *are* variables? Which are nil now? — Austin Ziegler <austin@...> 2003/09/10

> raise "@b1 is nil" if @b1.nil

[#81623] Chasing a garbage collection bug — "Thomas Sondergaard" <thomas@...>

I just discovered that I have a GC related bug, or that is to say it doesn't

17 messages 2003/09/10

[#81755] Passing an Object Class from a method to a caller — "RLMuller" <RLMuller@...>

Hi All,

14 messages 2003/09/11

[#81840] Re: Dir.foreach not with patterns? — "Weirich, James" <James.Weirich@...>

I like the Dir[] form (or its "glob" alternative). I used to write

14 messages 2003/09/12
[#82500] Re: Dir.foreach not with patterns? — Jason Creighton <androflux@...> 2003/09/19

On Thu, 18 Sep 2003 15:59:25 +0100

[#81871] Duck Typing — Jim Weirich <jweirich@...>

In the Method Redefinition thread, this explanation of Duck Typing is

38 messages 2003/09/13
[#81884] Re: Duck Typing — dblack@... 2003/09/13

Hi --

[#81929] actual debian ruby packages are unuseable with tk — Ferenc Engard <ferenc@...>

Dear debian ruby package maintainers,

12 messages 2003/09/13

[#81960] Dot versus double-colon — Hal Fulton <hal9000@...>

OK, I've been thinking (always dangerous after 11 pm).

18 messages 2003/09/14

[#82012] performance and style advice requested — Alex Martelli <aleaxit@...>

I'm trying to learn some Ruby, so I want to write some Ruby code, starting

53 messages 2003/09/14
[#82028] Re: performance and style advice requested — Ben Giddings <bg-rubytalk@...> 2003/09/14

Some style advice:

[#82029] Linguistics 0.02 — Michael Granger <ged@...>

Hi fellow Rubyists,

19 messages 2003/09/14

[#82056] Test::Unit -- multiple errors in test method ??? — Johan Holmberg <holmberg@...>

14 messages 2003/09/15

[#82166] scrambler one-liner — Xavier Noria <fxn@...>

I just came across this interesting article at Slashdot that explains that

27 messages 2003/09/16

[#82206] #{} and \" don't like each other — Peter <Peter.Vanbroekhoven@...>

From the Programming Ruby book:

32 messages 2003/09/16

[#82419] wiki reccomendations — ahoward <ahoward@...>

15 messages 2003/09/18

[#82448] closing stderr — Michael Garriss <mgarriss@...>

I would like to prevent some output that is going to stderr during a

15 messages 2003/09/18

[#82547] fork not available? — walter@...

I am running windows 2000 using the PragProgs install.

14 messages 2003/09/19

[#82561] Trouble with binary files? — <agemoagemo@...>

I'm trying to write a program that will read a binary

24 messages 2003/09/19
[#82562] Re: Trouble with binary files? — Heinz Werntges <werntges@...> 2003/09/19

agemoagemo@yahoo.com wrote:

[#82583] Re: Trouble with binary files? — Tim Hammerquist <tim@...> 2003/09/19

<agemoagemo@yahoo.com> graced us by uttering:

[#82575] Article on oreilly.net on how to build Unix tools with Ruby — Xavier <NOSPAM@...>

Thought you'd like to know about this article

24 messages 2003/09/19
[#82829] Re: Article on oreilly.net on how to build Unix tools with Ruby — Paul Brannan <pbrannan@...> 2003/09/23

On Sat, Sep 20, 2003 at 06:00:21AM +0900, Xavier wrote:

[#82589] POP3Filter for SoBig.F Virus: — Austin Ziegler <austin@...>

Here's an updated version of the Ruby pop3filter that was written. This

32 messages 2003/09/20
[#82592] Re: POP3Filter for SoBig.F Virus: — Austin Ziegler <austin@...> 2003/09/20

I've made more updates. Rather than just putting them here, I've created a

[#82609] Re: POP3Filter for SoBig.F Virus: — Austin Ziegler <austin@...> 2003/09/20

On Sat, 20 Sep 2003 10:14:39 +0900, Austin Ziegler wrote:

[#82617] Re: POP3Filter for SoBig.F Virus: — "Shashank Date" <sdate@...> 2003/09/20

[#82618] Re: POP3Filter for SoBig.F Virus: — Gavin Sinclair <gsinclair@...> 2003/09/20

On Saturday, September 20, 2003, 9:03:18 PM, Shashank wrote:

[#82621] Re: POP3Filter for SoBig.F Virus: — Austin Ziegler <austin@...> 2003/09/20

On Sat, 20 Sep 2003 22:15:40 +0900, Gavin Sinclair wrote:

[#82623] Re: POP3Filter for SoBig.F Virus: — Jose Quesada <quesadaj@...> 2003/09/20

On Sat, 20 Sep 2003 23:52:39 +0900, Austin Ziegler <austin@halostatue.ca>

[#82624] Re: POP3Filter for SoBig.F Virus: — Xavier Noria <fxn@...> 2003/09/20

On Saturday 20 September 2003 18:56, Jose Quesada wrote:

[#82632] Real emails on newsgroup version (was Re: POP3Filter) — Ben Giddings <bg-rubytalk@...> 2003/09/20

This whole worm thing brings up a question:

[#82683] Re: Real emails on newsgroup version (was Re: POP3Filter) — Dave Thomas <Dave@...> 2003/09/22

[#82661] Performance: Ruby vs Java — lalit_pant@... (Lalit Pant)

I'm a newcomer to Ruby, and thought I would write a little

18 messages 2003/09/22

[#82715] Ruby package for Linux — Jim Freeze <jim@...>

Ok, I know nothing about linux packages.

22 messages 2003/09/22

[#82832] upper to lower first letter of a word — yvon.thoravallist@... (Yvon Thoraval)

Recently, i get a vintage list (more than 500 items) with poor typo, for

30 messages 2003/09/23

[#82884] When threads block — Hans Fugal <fugalh@...>

It's difficult to do any serious multi-threaded network programming when

13 messages 2003/09/24

[#82964] Re: Prove internet package for Microsoft Internet Explorer — "Anthony Neville" <anthony.neville@...>

13 messages 2003/09/25

[#83002] TCPSocket.gethostbyname difficulties — "Nathaniel Talbott" <nathaniel@...>

I'm trying to use TCPSocket.gethostbyname to verify that a given domain

35 messages 2003/09/25
[#83006] Re: TCPSocket.gethostbyname difficulties — Peter <Peter.Vanbroekhoven@...> 2003/09/25

> I can browse to either of those hosts, so what's different about them? Any

[#83014] Re: TCPSocket.gethostbyname difficulties — "Nathaniel Talbott" <nathaniel@...> 2003/09/26

Peter [mailto:Peter.Vanbroekhoven@cs.kuleuven.ac.be] wrote:

[#83030] Re: TCPSocket.gethostbyname difficulties — ts <decoux@...> 2003/09/26

>>>>> "N" == Nathaniel Talbott <nathaniel@NOSPAMtalbott.ws> writes:

[#83035] Re: TCPSocket.gethostbyname difficulties — "Nathaniel Talbott" <nathaniel@...> 2003/09/26

ts [mailto:decoux@moulon.inra.fr] wrote:

[#83036] Re: TCPSocket.gethostbyname difficulties — ts <decoux@...> 2003/09/26

>>>>> "N" == Nathaniel Talbott <nathaniel@NOSPAMtalbott.ws> writes:

[#83037] Re: TCPSocket.gethostbyname difficulties — "Nathaniel Talbott" <nathaniel@...> 2003/09/26

ts [mailto:decoux@moulon.inra.fr] wrote:

[#83011] Adding, removing and redefining features at runtime — "Thomas Sondergaard" <thomas@...>

I am working on an article on the subject of implementing dynamically typed

23 messages 2003/09/26

[#83105] Fwd: FW: Porting Suggestions: Lucene to Ruby; Perl Text::Balanced — Erik Hatcher <erik@...>

I was alerted about me being mentioned on ruby-talk, as I was not

12 messages 2003/09/27
[#83117] OT: alerts - was Re: Fwd: FW: Porting Suggestions: Lucene to Ruby; Perl Text::Balanced — Hal Fulton <hal9000@...> 2003/09/27

Erik Hatcher wrote:

[#83140] Thoughts on yield — nolan_d@... (Nolan J. Darilek)

I've begun working on a music-related ruby project, and recently I've

17 messages 2003/09/28

[#83223] Article on ARTIMA — Peter Hickman <peter@...>

There is the start of a series of articles on ARTIMA with Matz.

21 messages 2003/09/29

[#83310] Making == symmetric? — elbows@... (Nathan Weston)

It has always bothered me that == is not symmetric in ruby:

22 messages 2003/09/30

Re: OOP flavors - was Re: Python vs. Ruby

From:
Date: 2003-09-02 22:33:42 UTC
List: ruby-talk #80920
Ben Giddings wrote:

> Sean O'Dell wrote:
> 
>> To manipulate a string, the Text object needs *no* input from the 
>> Image object.  It's job is to manage a string.  That's all it does.
>>
>> The Image object, however, needs to know about MANY different object 
>> types because it receives them as input for determine how to 
>> manipulate the image.  It manages an image buffer.  That's all it does.
>>
>>  From that, I can only envision image.draw(text) as the most logical 
>> pattern.
> 
> 
> If you step back and try to think about these things in the real, 
> physical world, every object would need to have a method for interacting 
> with every other object, but to different extents.
> 
> Take a rock, paper, and a pair of scissors.  ;)
> 
> When the scissors and rock interact, they are both affected by the 
> interaction, the rock could be marked by the scissors, or perhaps even 
> chipped; the scissors could be broken by the rock.  When the paper and 
> scissors interact, it is almost exclusively the paper that is affected, 
> but after cutting thousands of pieces of paper, the scissors will be 
> slightly dulled.
> 
> This is simply Newtonian physics.  For every action there is an equal 
> and opposite reaction.

I don't think atomic physics is a good paradigm for programming, it's 
too "wishful".  It sounds like you mean OO programming should be such 
that all you have to do is make an object, describe its basic properties 
and then send it off into your program, so it can find its natural place 
and natural purpose.

> Typically in OO programming it is convenient to assume that only one of 
> two objects is affected by their interaction.
> 
> The "Image" object in the example is similar to real-world paper, you 
> draw on it, cut it, etc.  In interactions with other things, it is 
> _fragile_ and easily affected.  A "Pen" or "Pencil" in a typical drawing 
> program is similar to a real-world pen or pencil.  When it interacts 
> with "Paper" (or Image objects), it is mostly the paper that is 
> affected, not the pen.  On the other hand, in the real world pencils do 
> get dull and pens do get empty, but mostly in OO design we are using 
> idealized representations of pens and pencils which don't get dull or 
> empty.
 >
> If we don't care about pencils getting dull or pens getting empty, we 
> can simplify our software.  For this reason, when we're drawing on an 
> Image objects in software it often makes more sense for the Image to be 
> the receiver of the message, not the sender, and for the code 
> implementing changes to be in the Image, not in the Pen.
> 
> Sometimes having the affected object be the receiver can have some 
> strange effects though.  paper_obj.draw(pen_obj) may make more sense as 
> a programmer, but it is strange that a it seems to be the paper drawing, 
> and not the pen.  In this case, it might make more sense to make it 
> paper_obj.getDrawnOnBy(pen_obj) but that's both long-winded and 
> odd-looking.

I do a fair amount GUI programming, so your example is one I can take on 
personally.

The Image object in our previous example had two jobs, actually. 
Enclose the image buffer and manipulate the image buffer.  It's purely a 
matter of taste if you wish to break it out.  You could say:

Writer.write(image, string)

Which would work just as well.  You have moved the job of writing to 
Writer and now Image does nothing more than encapsulate an image buffer. 
  The Image object now needs to export methods that the Writer object 
can use to perform its job.

Now, I think, it's closer to being "perfect".  I, personally, am not 
offended when an object does a little more than it should, so long as 
that functionality is not wastefully repeated elsewhere or grows beyond 
a method or two.  At some point, it should go into its own object.

> Unlike the pen and paper example, there are situations when two objects 
> both have to be affected by an interaction.  Take a person withdrawing 
> money from an ATM  The person is affected by his/her money count going 
> up, the ATM is affected by its money count going down.  In this case, 
> both objects are strongly affected by the interaction.  Although in 
> reality this is one atomic transaction, it is normally done as two 
> transactions, and some external means is used to make sure that both 
> sides of the transaction happen.
> 
> Which makes more sense here?
> 
> customer.getMoneyFrom(atm)
> atm.giveMoneyTo(customer)

Actually, neither.

The ATM knows nothing about the Customer object, it knows requests and 
issuing money.  The Customer object knows about the ATM, requesting 
money and receiving money.  I would write it like this:

customer.requestMoneyFrom(ATM);
customer.receiveMoney(ATM.moneyHangingOut);

Just be careful never to do this:

customer.requestMoneyFrom(ATM);
customer.forget(WHATHESDOING);
customer.walk(BACKTOTHECAR | WHILESCRATCHINGHIMSELFABSENTLY);

> I think your answer to the question depends on how you've designed your 
> objects.
> 
>  From what I can see, the way methods are typically assigned to objects, 
> typically it is the object which is most affected by the interaction 
> which has the method attached to it.  In the situation where a string is 
> being printed, the string is typically unaffected by that interaction, 
> however the output stream is affected, so the "print" method is attached 
> to the output stream.  When both objects are affected the rules are more 
> arbitrary, as I said before, it depends on how you've designed your 
> objects.  Failing that, the rule seems to be that the interaction is 
> described in a sentence in the most natural subject->verb->object way, 
> and the subject of the sentence becomes the object to which the method 
> is attached.

"Most affected" seems arbitrary.  I think just keeping the objects doing 
what they do is the simplest way to look at it.

The ATM and the Customer are not objects in a vacuum.  They have 
purpose.  The ATM's job is to hold money until a proper request is made 
and then dispense the money.  The Customer's job is to walk, eat, sleep, 
work, drive and visit ATMs to request and receive money.

> Luckily, most of the time when we're programming, we're dealing with 
> things at an abstract enough level that we can have objects which are 
> not affected when they interact with other objects.  When we print a 
> string, only the output is affected, and not the string, so only the 
> output needs to have a method.

I think "is the job of" is more appropriate than "is affected by". 
Printing doesn't just happen.  The Output object provides that 
functionality.  We're wrapping the concept of printing to a console into 
an Output object.

	Sean O'Dell


In This Thread