ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
BeitragVerfasst: 24 Okt 2006, 17:06 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
Moin, moin!

Animiert durch eine Anfrage in de.comp.lang.ruby habe ich mal versucht mich mit der neuen Methode IO#read_nonblock zu beschäftigen, bisher aber noch kein Programm damit zum laufen gebracht - egal wie ich es auch angestellt habe.

Hat jemand von Euch ein funktionierendes read_nonblock-Programmschnipselchen, welches unter Windows läuft?

_________________
WoNáDo.set_state!(:retired)


Zuletzt geändert von WoNáDo am 15 Mai 2007, 20:32, insgesamt 4-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 24 Okt 2006, 17:58 
Offline
ri
Benutzeravatar

Registriert: 04 Okt 2005, 10:42
Beiträge: 740
Wohnort: Wien
Ich nehme mal an, dass du schon laut ri read_nonblock die Beschreibung gelesen hast oder?


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 24 Okt 2006, 18:09 
Offline
Böser Admin
Benutzeravatar

Registriert: 29 Jul 2005, 22:41
Beiträge: 2065
Wohnort: Beijing
Hab das gerade mal hier auf Arbeit probiert. Bekomme es ebenfalls nicht hin )-:

Es kommt eine Meldung "bad file descriptor". Und dabei ist es egal ob ich schreibe oder lese. Selbst auf Dateien oder Netzwerke ist es das Selbe. Da hat das aktuelle Release definitiv nen Fehler.



der
Daniel

_________________
mruby.sh | Ruby-Mine | Homepage


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 24 Okt 2006, 18:25 
Offline
Meister
Benutzeravatar

Registriert: 22 Sep 2005, 08:53
Beiträge: 270
Wohnort: Hessen
Hi,

kann ich bestätigen:

IO#read_nonblock funktioniert unter Ruby 1.8.5 auf Linux ohne Probleme und unter Ruby 1.8.5 auf Windows nicht ("bad file descriptor").

mike42

_________________



2b||!2b /* das ist hier die Frage! */


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 24 Okt 2006, 19:56 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
Schade :( habe gehofft einen Fehler gemacht zu haben.

>>>>> Edit >>>>>

Hab auf der OneClickInstaller-Seite den Fehler gemeldet. Mal sehen, ob es ein Fehler oder ein Leistungsmerkmal unter Windows ist :wink:

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 24 Okt 2006, 22:15 
Offline
Interpreter
Benutzeravatar

Registriert: 05 Jun 2005, 01:54
Beiträge: 3225
WoNáDo hat geschrieben:
Hab auf der OneClickInstaller-Seite den Fehler gemeldet. Mal sehen, ob es ein Fehler oder ein Leistungsmerkmal unter Windows ist :wink:
Hm, warum bei der OneClickInstaller-Seite? Die hat erstens gar nichts mit Ruby selbst zu tun (schliesslich liegt der Fehler ja offenbar bei Ruby und nicht beim OCI) und zweitens gibts ja gar keine Ausgabe des OCI mit Ruby 1.9. Insofern glaub ich dass der Bug besser beim Ruby Bugtracker gemeldet werden sollte: http://rubyforge.org/tracker/?func=brow ... &atid=1698

_________________


1
2
3
alias L lambda
p L{|y|L{|f|y[L{|x|f[f][x]}]}[L{|f|y[L{|x|f[f][x]}]}]}[L{|z|L{|l|l.empty?? 0:1+z[l.drop(1)]}}][%w<a b c d e f g h i j>]
#=>10


Nuclear Powered Soup | Nuclear Powered Blog


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 24 Okt 2006, 23:44 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
cypher hat geschrieben:
warum bei der OneClickInstaller-Seite?

Naja - ich habe hier die OneClickInstaller 185-21-Version installiert und unter *nix tritt der Fehler ja offensichtlich nicht auf. Da halte ich die Stelle schon für den korrekten Erstansprechpunkt.

cypher hat geschrieben:
Ruby 1.9.

:?: Wieso Ruby 1.9, die Non-blocking-IO ist Bestandteil von 1.8.5 :?:
(http://eigenclass.org/hiki.rb?ruby+1.8.5+changelog)

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 25 Okt 2006, 00:22 
Offline
Interpreter
Benutzeravatar

Registriert: 05 Jun 2005, 01:54
Beiträge: 3225
WoNáDo hat geschrieben:
cypher hat geschrieben:
warum bei der OneClickInstaller-Seite?

Naja - ich habe hier die OneClickInstaller 185-21-Version installiert und unter *nix tritt der Fehler ja offensichtlich nicht auf. Da halte ich die Stelle schon für den korrekten Erstansprechpunkt.
IMO ist sie das nicht, weil Curt Hibbs sich nur um den Installer selber (wird mit dem NSIS2 erzeugt) und das kompilieren der Sourcen kuemmert, mit dem Ruby-Code an sich hat er nichts zu tun (zumindest im Zusammenhang mit dem OCI), schon gar nicht mit Fehlern im selbigen.

Wenn man einen Fehler in Perl/Python/Tcl an ActiveState meldet, nur weil man deren Distributionen dieser Sprachen verwendet, werden die auch nicht mehr machen als das an das Core-Team der jeweiligen Sprache weiterleiten.

WoNáDo hat geschrieben:
cypher hat geschrieben:
Ruby 1.9.

:?: Wieso Ruby 1.9, die Non-blocking-IO ist Bestandteil von 1.8.5 :?:
(http://eigenclass.org/hiki.rb?ruby+1.8.5+changelog)
Ups. Jemand sollte mal die Dokumentation auf ruby-doc.org updaten :)

_________________


1
2
3
alias L lambda
p L{|y|L{|f|y[L{|x|f[f][x]}]}[L{|f|y[L{|x|f[f][x]}]}]}[L{|z|L{|l|l.empty?? 0:1+z[l.drop(1)]}}][%w<a b c d e f g h i j>]
#=>10


Nuclear Powered Soup | Nuclear Powered Blog


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 25 Okt 2006, 01:59 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
cypher hat geschrieben:
... werden die auch nicht mehr machen als das an das Core-Team der jeweiligen Sprache weiterleiten.

Das ist ja auch korrekt, wenn es nicht etwas ist, was durch den OCI erst erzeugt wurde. Man muss es nun mal so sehen, dass die Systemschnittstellen zu Windows in Ruby eigentlich eine nice to have-Erweiterung sind. Ein grosser Teil der Methoden oder Klassen aus diesem Bereich funktioniert schon per Definition (in der PickAxe) nicht unter Windows.

Es ist ja, falls das hier ein Fehler ist, offensichtlich so, dass unter Windows nichts oder wenig getestet wird. Sollte es kein Fehler sein, fehlt einfach nur in der Dokumentation der Hinweis, dass es unter Windows nicht richtig funktioniert, was mich nicht wundern würde.

ri IO#read_nonblock sagt dazu jedenfalls nichts.

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 03 Jan 2007, 15:29 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
Habt Ihr noch Code-Schnipsel von den Versuchen?

Curt Hibbs fragt nach den Beispielen.

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
BeitragVerfasst: 04 Jan 2007, 03:30 
Offline
Nuby

Registriert: 04 Dez 2006, 14:28
Beiträge: 9
Wohnort: 039881-49194 (Ringenwalde/Uckermark)
WoNáDo hat geschrieben:
Habt Ihr noch Code-Schnipsel von den Versuchen?

Curt Hibbs fragt nach den Beispielen.


Hier mal das, was ich damals probiert hatte.

Datei read_nonblock_test.rb:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
diener = File::popen("ruby read_nonblock_diener.rb", "r+") #
puts "diener=#{diener}"

puts ("a".."z").each { |buchstabe|
diener.puts buchstabe
diener.flush
erg =
case 3
when 1 then diener.read_nonblock(1)
when 2 then diener.read(1)
when 3 then diener.gets
end

break "nil erhalten." unless erg

print ":" + erg
$stdout.flush # nur aus optischen Gr��nden
}

puts "Fertig."


Datei read_nonblock_diener.rb:


1
2
3
4
5
6
7
8
9
10
8.times {
erg =
case 2
when 1 then $stdin.read_nonblock(2)
when 2 then $stdin.read(2)
end
puts "diener erhielt <<#{erg}>>"
$stdout.flush
sleep 0.2
}


Gestartet wird read_nonblock_test.rb.
In der oben angegebenen Form (also ohne read_nonblock)
bekommt man das fehlerfreie Ergebnis.


1
2
3
4
5
6
7
8
9
10
11
diener=#<File:0xe09818>
:"diener erhielt <<a\n>>"
:"diener erhielt <<b\n>>"
:"diener erhielt <<c\n>>"
:"diener erhielt <<d\n>>"
:"diener erhielt <<e\n>>"
:"diener erhielt <<f\n>>"
:"diener erhielt <<g\n>>"
:"diener erhielt <<h\n>>"
nil erhalten.
Fertig.


Wenn man den Zweig mit read_nonblock aktiviert
(egal in welcher der beiden Dateien),
bekommt man den Fehler: Bad file descriptor (Errno::EBADF)


So, falls ich jetzt was vergessen habe, bitte einfach rückfragen.

Gruß
Sven


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 24 Jan 2007, 22:17 
Offline
Nuby

Registriert: 24 Jan 2007, 21:57
Beiträge: 7
Hallo,
ja, mir ist bekannt das ich in diesem Forum grade erst registriert habe und dieser Thread auch schon älter ist.

Aber zum Thema non-blocking IO sei gesagt, das es imho eher auf (Fehler|Features) in Windows zurückzuführen ist. Zumindest hab ich mir tagelang sämtliche Lektüre um die Ohren gehauen, die sich mit PHP und non-blocking Sockets beschäftigt, nur um herauszufinden, das non-blocking Sockets unter Windows einfach nicht laufen. Der Test unter Linux verlief ohne Anstalten fehlerfrei.

Vielleicht hängt auch das Ruby non blocking IO-Problem an Windows und nicht an Ruby selber.

Gruß Fiet

_________________
Was er mache, wurde Herr Keuner gefragt. "Ich habe viel Mühe", antwortete Herr Keuner, "ich bereite meinen nächsten Irrtum vor"


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 24 Jan 2007, 22:44 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
Fiet Vujagig hat geschrieben:
Hallo,
ja, mir ist bekannt das ich in diesem Forum grade erst registriert habe und dieser Thread auch schon älter ist.

Erst mal Herzlich Willkommen!

Es gibt hier im Forum praktisch keine veralteten Posts - in diesem Fall ist Deine sogar sehr nützlich. Ich muss nämlich noch einmal diesen Fehler mit ein bisschen mehr Doku dazu und Beispielen nach comp.lang.ruby packen - Dazu werde ich Deine Anmerkung ins Englische verbiegen (irgendwie halt).

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 25 Jan 2007, 01:34 
Offline
Interpreter
Benutzeravatar

Registriert: 05 Jun 2005, 01:54
Beiträge: 3225
Fiet Vujagig hat geschrieben:
Aber zum Thema non-blocking IO sei gesagt, das es imho eher auf (Fehler|Features) in Windows zurückzuführen ist. Zumindest hab ich mir tagelang sämtliche Lektüre um die Ohren gehauen, die sich mit PHP und non-blocking Sockets beschäftigt, nur um herauszufinden, das non-blocking Sockets unter Windows einfach nicht laufen. Der Test unter Linux verlief ohne Anstalten fehlerfrei.

Vielleicht hängt auch das Ruby non blocking IO-Problem an Windows und nicht an Ruby selber.
Windows kann schon Non-Blocking IO, aber das Problem ist dass die Funktionen sich zum groessten Teil nicht wie ihre Verwandten unter *NIX verhalten. D.h. es muesste einiges an Aufwand erbracht werden dass die non blocking IO Methoden mit gleichem Verhalten unter Windows l,aufen (Sofern es ueberhaupt geht). Nachdem die meisten Ruby-Entwickler unter diversen Linux/Unix-Systemen arbeiten, wird das vermutlich nicht so schnell passieren.

_________________


1
2
3
alias L lambda
p L{|y|L{|f|y[L{|x|f[f][x]}]}[L{|f|y[L{|x|f[f][x]}]}]}[L{|z|L{|l|l.empty?? 0:1+z[l.drop(1)]}}][%w<a b c d e f g h i j>]
#=>10


Nuclear Powered Soup | Nuclear Powered Blog


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 25 Jan 2007, 02:17 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
Ich werde mir bei der Formulierung auch Mühe geben - weil - ich hab doch vor 5 Tagen in comp.lang.ruby den Änderungsvorschlag bezüglich der Klasse Method eingebracht. Aktuell sind da weitere 94 Beiträge dazu drin, bei denen es überwiegend um die Bezeichnungen geht. Ich habe es zwar so verstanden, dass etwas kommt, wie das nun heissen wird und was insgesamt in welchen Klassen kommt, weiss ich aber noch nicht.

Ich will nicht noch einmal so eine grosse Diskussion lostreten wegen dieser Windows-Geschichte, wenn ich das durch klare Formulierungen vermeiden kann. Mir wird schon ganz mau, wenn ich dran denke, was da wegen der Oniguruma-Sachen kommen wird.

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: