"Tausche dein Deutsch für mein Ruby. Einverstanden?"

Ich habe vor, Deutsch zu lernen. Deshalb möchte ich über etwas
Interessantes (Ruby :-) auf Deutsch schreiben und (ich hoffe)
meine Texte korrigieren lassen. Es geht hier um jemanden zu helfen,
Ruby kennen zu lernen, während ich Deutsch lerne.

Ich biete:
 * Erklärungen von verschiedenen Begriffen, die mit Ruby zu tun haben.
   Je angenehmer (interessanter) desto besser. Ich bin besonders scharf auf
   singleton Klassen, Klasseninstanzvariabeln, Spiegelung, Folgen
   (continuations)...
 * kann keine Garantie darüber geben, dass ich nicht
   zu viel Zeit brauchen werde, um solche Texte zu schreiben, denn ich
   werde vielleicht viele Wörter im Wörterbuch suchen müssen.
 * um Ruby: ich bin kein echt erfahrender Entwickler, habe aber schon fast
   ein ganzes Jahr lang damit gespielt und vieles gelernt (besonders auf
   ruby-talk).  Ich werde nur darüber schreiben, für was ich kompetent
   bin, und werde ganz ehrlich sein (werde nie machen, als ob ich mehr
   wüsste).

Was ich dafür bekommen möchte:
 * die Bereitschaft, einen nicht-so-großen Text oder mehrere kleine
   Dokumenten zu lesen, die auf Deutsch geschrieben wären
 * dass meine Texte überprüft würden, und dass man mir darin berieten
   würde, wie ich schreiben sollte. Eine Übersetzung von "zerbrochenes"
   ins richtige Deutsch wäre auch toll.

Hat jemand dafür Interesse?
(Continue reading)

Michael Neumann | 8 May 00:12
On Wed, May 07, 2003 at 09:51:47PM +0200, Mauricio Fernndez wrote:
> 
> "Tausche dein Deutsch für mein Ruby. Einverstanden?"

Solange *ich* nachher nicht wieder Deutsch lernen muss, gerne :-)

> Ich habe vor, Deutsch zu lernen. Deshalb möchte ich über etwas
> Interessantes (Ruby :-) auf Deutsch schreiben und (ich hoffe)
> meine Texte korrigieren lassen. Es geht hier um jemanden zu helfen,
> Ruby kennen zu lernen, während ich Deutsch lerne.

Merkt man ja gar nicht das du noch Deutsch lernst. Ich wünschte, ich
könnte so gut Englisch (oder Französich) wie du Deutsch!

> Ich biete:
>  * Erklärungen von verschiedenen Begriffen, die mit Ruby zu tun haben.
>    Je angenehmer (interessanter) desto besser. Ich bin besonders scharf auf
>    singleton Klassen, Klasseninstanzvariabeln, Spiegelung, Folgen
>    (continuations)...
>  * kann keine Garantie darüber geben, dass ich nicht
>    zu viel Zeit brauchen werde, um solche Texte zu schreiben, denn ich
>    werde vielleicht viele Wörter im Wörterbuch suchen müssen.
>  * um Ruby: ich bin kein echt erfahrender Entwickler, habe aber schon fast
>    ein ganzes Jahr lang damit gespielt und vieles gelernt (besonders auf
>    ruby-talk).  Ich werde nur darüber schreiben, für was ich kompetent
>    bin, und werde ganz ehrlich sein (werde nie machen, als ob ich mehr
>    wüsste).
> 
> Was ich dafür bekommen möchte:
>  * die Bereitschaft, einen nicht-so-großen Text oder mehrere kleine
(Continue reading)

Saluton!

* Michael Neumann <mneumann <at> ntecs.de>; 2003-05-08, 12:22 UTC:
> Du könntest deine Artikel auch im Internet veröffentlichen. Ich
> denke der Bedarf an deutschem Lernmaterial (über Ruby) ist noch
> sehr gross, auch wenn es schon einige Bücher gibt.

Apropos Bücher auf Deutsch:
Eine korrigierte Auflage von 'Programmieren mit Ruby' (David Thomas,
Andrew Hunt) wäre auch angebracht. Da sind teilweise haarsträubende
Dinge zu finden.

Wenn beispielsweise im Beispielcode zu 'net/smtp' das 'Subject: '
einer Mail, das an sendmail übergeben wird, in einen 'Betreff: '
mutiert, ist das eine ausgemachte Katastrophe.

Das Böse an diesem Fehler ist, dass er auf der Seite des Mailservers
keinen darstellt und alles zu funktionieren scheint - bis der MUA die
Betreffzeile nicht anzeigt. Manuell eingegebenes Beispiel:

-="=-="=-="=-="=-="=-="=-="=-="=-="=-="=-="=-="=-="=-="=-="=-="=-="=-
Script started on Thu May  8 12:50:14 2003
12:50:14 [1] /home/jupp> telnet localhost smtp
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220  ESMTP
helo localhost
250 jupp.8m.com Hello localhost [127.0.0.1], pleased to meet you
mail from: foo <at> example.com
(Continue reading)

Michael Neumann | 8 May 21:49
On Thu, May 08, 2003 at 01:01:56PM +0000, Josef 'Jupp' Schugt wrote:
> Saluton!
> 
> * Michael Neumann <mneumann <at> ntecs.de>; 2003-05-08, 12:22 UTC:
> > Du könntest deine Artikel auch im Internet veröffentlichen. Ich
> > denke der Bedarf an deutschem Lernmaterial (über Ruby) ist noch
> > sehr gross, auch wenn es schon einige Bücher gibt.
> 
> Apropos Bücher auf Deutsch:
> Eine korrigierte Auflage von 'Programmieren mit Ruby' (David Thomas,
> Andrew Hunt) wäre auch angebracht. Da sind teilweise haarsträubende
> Dinge zu finden.
> 
> Wenn beispielsweise im Beispielcode zu 'net/smtp' das 'Subject: '
> einer Mail, das an sendmail übergeben wird, in einen 'Betreff: '
> mutiert, ist das eine ausgemachte Katastrophe.

Sind denn die anderen Header auch übersetzt worden (From: und To:)?

Ich kann nur sagen, daß die englische Originalversion klasse ist, auch
wenn Dave & Andy ein bißchen dazu neigen, Wörter zu verwenden, die ich
noch nie gehört habe :-)

> Das Böse an diesem Fehler ist, dass er auf der Seite des Mailservers
> keinen darstellt und alles zu funktionieren scheint - bis der MUA die
> Betreffzeile nicht anzeigt. Manuell eingegebenes Beispiel:
> 
> -="=-="=-="=-="=-="=-="=-="=-="=-="=-="=-="=-="=-="=-="=-="=-="=-="=-
> Script started on Thu May  8 12:50:14 2003
> 12:50:14 [1] /home/jupp> telnet localhost smtp
(Continue reading)

Markus Walser | 14 May 17:39
Picon

Threads killen

Hallo
Attached ist ein kleines Beispiel, welches leider nicht so funktioniert wie ich 
mir das vorgestellt habe :-(
Was im Buch "Programmieren mit Ruby" Seite 93 ueber Ruby Threads geschrieben
steht, hat sich leider bewahrheitet: Der Prozess, welcher mit system gestartet wird,
laeuft nach dem kill weiter. Selbst nach beenden des Ruby Skripts ist er noch aktiv.

Kennt da jemand einen Workaround oder weiss jemand wie man das sauber machen
muesste, damit der mit system gestartete Prozess durch den Aufruf von Thread.kill 
auch beendet wird?

Viele Gruesse, Markus
#!/usr/bin/ruby

class Worker
	 def initialize
	 end
	 def start(&action)
	 	 @thr = Thread.new{
	 	 	 action.call
	 	 }
	 end
	 def abort
	 	 if @thr!=nil && @thr.alive?
		 	 @thr.kill
			 puts "killed worker thread"
		 end
	 end
(Continue reading)

jonnypichler - bse | 14 May 22:10
Picon

Re: Threads killen

hi

ich hab recently mit ähnlichen problemen gekämpft...

was mich wundert: wie kannst du überhaupt die kill-methode aufrufen solange
das child läuft - meine erfahrung ist, dass bei einem system()-call dem
ruby-interpreter die kontrolle solange entzogen wird, bis der
system()-prozess terminiert ist, auch wenn dieser in einem thread gestartet
wird.
macht ja auch sinn, weil rubythreads ja nur ruby-internal sind (siehe dein
quellenverweis).
oder kommt das nur daher, dass ich ruby unter win32 und nicht unter linux
verwende?

zitat aus "programming ruby" hierzu:
...And if some thread happens to make a call to the operating system that
takes a long time to complete, all threads will hang until the interpreter
gets control back.

ich denke dieses "gets control back" geschieht erst durch das ende des
child-prozesses...

freue mich auf antwort,
patrick
___
ruby version i'm currently using:
ruby 1.6.8 (2002-12-24) [i686-cygwin]

----- Original Message ----- 
From: "Markus Walser" <walser <at> scs.ch>
(Continue reading)

Mauricio Fernández | 15 May 00:10
Picon
Favicon

Re: Threads killen

On Wed, May 14, 2003 at 10:10:20PM +0200, jonnypichler - bse wrote:
> hi
> 
> ich hab recently mit ähnlichen problemen gekämpft...
> 
> was mich wundert: wie kannst du überhaupt die kill-methode aufrufen solange
> das child läuft - meine erfahrung ist, dass bei einem system()-call dem
> ruby-interpreter die kontrolle solange entzogen wird, bis der

Ruby benutzt fork und dann execl (wenn das Program mit /bin/sh läuft) oder execv.

> system()-prozess terminiert ist, auch wenn dieser in einem thread gestartet
> wird.
> macht ja auch sinn, weil rubythreads ja nur ruby-internal sind (siehe dein
> quellenverweis).
> oder kommt das nur daher, dass ich ruby unter win32 und nicht unter linux
> verwende?

Verstehe nicht warum Ruby auf den Prozess warten sollte...
In UN*X (und Cygwin auch, oder?) wird fork verwendet, so dass die andere
Threads nicht blockiert werden; in Win32, CreateChild (scheint etwa wie
fork zu sein).

> zitat aus "programming ruby" hierzu:
> ...And if some thread happens to make a call to the operating system that
> takes a long time to complete, all threads will hang until the interpreter
> gets control back.
> 
> ich denke dieses "gets control back" geschieht erst durch das ende des
> child-prozesses...
(Continue reading)

Florian G. Pflug | 15 May 00:39

Re: Threads killen

On Wed, May 14, 2003 at 10:10:20PM +0200, jonnypichler - bse wrote:
> was mich wundert: wie kannst du überhaupt die kill-methode aufrufen solange
> das child läuft - meine erfahrung ist, dass bei einem system()-call dem
> ruby-interpreter die kontrolle solange entzogen wird, bis der
> system()-prozess terminiert ist, auch wenn dieser in einem thread gestartet
> wird.
> macht ja auch sinn, weil rubythreads ja nur ruby-internal sind (siehe dein
> quellenverweis).
> oder kommt das nur daher, dass ich ruby unter win32 und nicht unter linux
> verwende?
ich denke, das is wegen dem win32. Welche win32-ruby version verwendest du?
die jenige, die cygwin verwendet, oder die andere (mscvc-compiliert glaub
ich).

> zitat aus "programming ruby" hierzu:
> ..And if some thread happens to make a call to the operating system that
> takes a long time to complete, all threads will hang until the interpreter
> gets control back.
Aber alle OS-calls die ruby selber macht, umgehen dieses problem.

das prinzip is folgendes:
statt einen blocking read macht man

fd auf nonblocking schalten
while(noch_nicht_genug_gelesen) {
	rb_thread_select([fd])
	read(fd)
}

rb_thread_select läßt den aktuellen thread schlafen, bis von einem der 3
(Continue reading)

Florian G. Pflug | 15 May 00:42

Re: Threads killen

On Thu, May 15, 2003 at 12:10:24AM +0200, Mauricio Fernández wrote:
> Warum? Die Systemaufrufe sind alle "kurz" und Ruby muss nicht darauf
> warten...

Aber ruby ließt denke ich die standard-ausgabe des childs. Und normalerweise
(sofern man das nicht umschaltet) ist file-io (und d.h auch io auf pipes,
sockets, ...) unter unix blocking. d.h - wenn man read() aufruft, und es
gibt nix zu lesen, blockt man solange bis was da ist.

Ruby verwendet zwar non-blocking io, um dieses problem zu umgehen,
(siehe meine andere mail im gleichen (mail)thread) -
aber die gestellte frage macht schon sinn.

greetings, Florian Pflug
Mauricio Fernández | 15 May 09:07
Picon
Favicon

Re: Threads killen

On Thu, May 15, 2003 at 12:42:17AM +0200, Florian G. Pflug wrote:
> On Thu, May 15, 2003 at 12:10:24AM +0200, Mauricio Fernández wrote:
> > Warum? Die Systemaufrufe sind alle "kurz" und Ruby muss nicht darauf
> > warten...
> 
> Aber ruby ließt denke ich die standard-ausgabe des childs. Und normalerweise

Nicht mit system, glaube ich; der Childprozess erbt die Standardausgabe
Rubys und wird darin schreiben. Nur würde Ruby auf die Ausgabe warten,
wenn Kernel::` (oder popen) benuztz wäre, aber noch in diesem Fall können
andere Threads wegen der nichtblockierenden E/A weiter laufen (wie in
deinem Mail angegeben).

> (sofern man das nicht umschaltet) ist file-io (und d.h auch io auf pipes,
> sockets, ...) unter unix blocking. d.h - wenn man read() aufruft, und es
> gibt nix zu lesen, blockt man solange bis was da ist.
> 
> Ruby verwendet zwar non-blocking io, um dieses problem zu umgehen,
> (siehe meine andere mail im gleichen (mail)thread) -
> aber die gestellte frage macht schon sinn.

Sinn macht es ja, und die Antwort ist "Kernel::system blockiert die
andere Threads nicht", oder?

--

-- 
 _           _                             
| |__   __ _| |_ ___ _ __ ___   __ _ _ __  
| '_ \ / _` | __/ __| '_ ` _ \ / _` | '_ \ 
| |_) | (_| | |_\__ \ | | | | | (_| | | | |
|_.__/ \__,_|\__|___/_| |_| |_|\__,_|_| |_|
(Continue reading)


Gmane