1

Thema: (NachTestat)Strukturelle Frage

Ich weiß nicht, ob wir noch fragen zum programmieren schreiben dürfen,
da ja das eigentliche Testat vorbei ist,
wenn nein, dann bitte den folgenden Text nicht beachten.

Darf man ein "Worm"-Archive schreiben, und dann davon ausgehen,
dass jedes Worm in einem Wormarchive stecken muss,
welches auch eindeutig zugeordnet ist?

Ist eigtnlich natürlich nicht wirklich richtig, weil dann das "implements IArchive" in Worms  unnütz wäre

Jedoch gibt es sonst das Problem, dass ich beim Redundant-Archive mehrer Worms id bekomme,
und nur eine ausgeben darf

möglichkeit zwei, man erweitert die ids,
weiß nur nich ob das so im Sinn der Aufgabe ist

2

Re: (NachTestat)Strukturelle Frage

Sandman schrieb:

Darf man ein "Worm"-Archive schreiben, und dann davon ausgehen,
dass jedes Worm in einem Wormarchive stecken muss,
welches auch eindeutig zugeordnet ist?

Was wäre denn der Unterschied zwischen einem "Worm" und einem "Wormarchive"?

3

Re: (NachTestat)Strukturelle Frage

Das neue Wormarchive könnte dann eine zuordnung haben,
in der ein Virtuelle Id der Worm ID zugeordnet wird.
so könnte man beim Redundant-Archive die virtuelle ID rausgeben,
und man könnte mit dieser auf alle Worms zugreifen,
die das Item gespeichert haben.

Man müsste aber davon ausgehen, dass kein WSI-Worm alleine steht

Zuletzt bearbeitet von Sandman (12.07.2009 15:08:49)

4

Re: (NachTestat)Strukturelle Frage

Sandman schrieb:

Das neue Wormarchive könnte dann eine zuordnung haben,
in der ein Virtuelle Id der Worm ID zugeordnet wird.
so könnte man beim Redundant-Archive die virtuelle ID rausgeben,
und man könnte mit dieser auf alle Worms zugreifen,
die das Item gespeichert haben.

Es scheint mir, als wollten Sie ein bestimmtes Problem lösen, aber ich weiß nicht, welches - das macht es mir schwer, Ihren Überlegungen zu folgen. Könnten Sie das ausführen?

Ich kann im Moment nur soviel sagen: Wenn Sie die Aufgabenstellung anschauen, ist bei der Spezifikation des Redundant-Archivs nirgendwo die Rede von WORMs.

5

Re: (NachTestat)Strukturelle Frage

Mein Problem ist,
dass ich im Redundant-Archive die Items unter mehreren Archiven speichere,
die wieder Archive oder Worms sein können.
Dies bedeutet ich bekomme mehrere OkPutResults,
und damit auch mehrere WormsItemIds,
kann jedoch nur 1 ne zurückgeben.

"Ein Item, das in ein Archiv gespeichert wurde und dabei auf einem WORM-Medium W gelandet
ist, muss auch aus einem anderen Archiv, in dem W vorkommt, mit get erreichbar sein."

Da dieses Item auf verschiedenen Worms mit verschiedenen IDs liegt,
ist es mir jetzt nicht möglich alle IDs zu wissen um diese mit einer get methode abfragen zu können.
Ich weiß nicht, ob ich das richtig sehe, oder einen Denkfehler habe.

6

Re: (NachTestat)Strukturelle Frage

Sandman schrieb:

Mein Problem ist,
dass ich im Redundant-Archive die Items unter mehreren Archiven speichere,
die wieder Archive oder Worms sein können.
Dies bedeutet ich bekomme mehrere OkPutResults,
und damit auch mehrere WormsItemIds,
kann jedoch nur 1 ne zurückgeben.

"Ein Item, das in ein Archiv gespeichert wurde und dabei auf einem WORM-Medium W gelandet
ist, muss auch aus einem anderen Archiv, in dem W vorkommt, mit get erreichbar sein."

Da dieses Item auf verschiedenen Worms mit verschiedenen IDs liegt,
ist es mir jetzt nicht möglich alle IDs zu wissen um diese mit einer get methode abfragen zu können.
Ich weiß nicht, ob ich das richtig sehe, oder einen Denkfehler habe.

Falls ich dich richtig verstehe: Das was du brauchst ist eine zusätzliche Id für Redundant Archive, die eine Liste der IDs, die beim putten in ein Redundant Archive entstanden ist enthält und diese sozusagen "bündelt". Wenn du das dann noch die ItemId implementieren lässt, kannst du, nachdem du geprüft hast ob das Quorum erfüllt ist, einfach die Redundant Id in einem OKPutResult zurückgeben - uns dir später beim get per Zufall eine der Ids, die darin gespeichert sind, zurückgeben lassen.

Zuletzt bearbeitet von Michael Zabka (13.07.2009 09:04:38)

7

Re: (NachTestat)Strukturelle Frage

Ja, so habe ich mir das auch gedacht,
aber mit dieser "gebündelten ID" kann man nicht von anderen Archiven
auf die Worms zugreifen,
also müsste die Übersetzung direkt im Worm stehen,
was ich ja nicht machen darf,
also brauche ich ein ÜberWorm, so dass ich die zuordnung machen kann

8

Re: (NachTestat)Strukturelle Frage

Sandman schrieb:

Ja, so habe ich mir das auch gedacht,
aber mit dieser "gebündelten ID" kann man nicht von anderen Archiven
auf die Worms zugreifen,
also müsste die Übersetzung direkt im Worm stehen,
was ich ja nicht machen darf,
also brauche ich ein ÜberWorm, so dass ich die zuordnung machen kann

Du hast doch in deiner ID noch die Liste der anderen IDs (die alle auf das selbe Item zeigen!). Wenn du nun eine get Aufruf mit einer Redundant ID machen möchtest, dann darfst du den halt nicht mit der Redundant ID selbst machen, sondern lässt dir eine der IDs zufällig aus deiner Liste ausgeben, und mit der sollten dann (ausser es ist wieder eine Redundant ID, dann wird's halt ein bisschen rekursiv ;)) alle Archive was anfangen und dir am Ende das entsprechende Item liefern können.

So haben wir es zumindest gelöst... ;)

Zuletzt bearbeitet von Michael Zabka (13.07.2009 09:53:54)

9

Re: (NachTestat)Strukturelle Frage

Ja schon,
aber ich habe 2 Archive, beide beinhalten das Worm W
nun putte ich über das 1. Archive(Redundant) ein Item,
und bekomme die RedundantID. das 1. Archive kann die nun wieder übersetzen,
nur mein zweites Archive kann nicht auf das Worm W zugreifen,
weil die ID die ich habe nicht übersetzt werden kann, da die ID liste irgend wo im 1. Archive steht

10

Re: (NachTestat)Strukturelle Frage

Sandman schrieb:

Ja schon,
aber ich habe 2 Archive, beide beinhalten das Worm W
nun putte ich über das 1. Archive(Redundant) ein Item,
und bekomme die RedundantID. das 1. Archive kann die nun wieder übersetzen,
nur mein zweites Archive kann nicht auf das Worm W zugreifen,
weil die ID die ich habe nicht übersetzt werden kann, da die ID liste irgend wo im 1. Archive steht

Hmm... Ich glaube langsam weiss ich was du meinst ;)
Wir haben das gelöst (keine Garantie für Richtigkeit) indem wir eine neue Worm-Klasse eingeführt haben, die neben einem Speicherlimit (so ein unendliches Worm ist ja nun doch recht unrealistisch ;)) auch noch ein eine ItemID-Liste enthält. Sprich: Jedes Worm weiss welche Items es enthält. Wenn man nun bei einem get bei jedem Worm in allen Teilarchiven anfragt, ob es das Item enthält, dann ist es egal über welches Archiv man etwas in das Worm gesteckt hat - man kriegt es über alle Archive, die das Worm enthalten wieder raus.

Aber keine Garantie für Richtigkeit, eher so ein Denkansatz, der dir vielleicht weiterhelfen könnte...

11

Re: (NachTestat)Strukturelle Frage

Sandman schrieb:

Mein Problem ist,
dass ich im Redundant-Archive die Items unter mehreren Archiven speichere,
die wieder Archive oder Worms sein können.
Dies bedeutet ich bekomme mehrere OkPutResults,
und damit auch mehrere WormsItemIds,
kann jedoch nur 1 ne zurückgeben.

"Ein Item, das in ein Archiv gespeichert wurde und dabei auf einem WORM-Medium W gelandet
ist, muss auch aus einem anderen Archiv, in dem W vorkommt, mit get erreichbar sein."

Da dieses Item auf verschiedenen Worms mit verschiedenen IDs liegt,
ist es mir jetzt nicht möglich alle IDs zu wissen um diese mit einer get methode abfragen zu können.
Ich weiß nicht, ob ich das richtig sehe, oder einen Denkfehler habe.

OK - das ist ein kniffliger Aspekt der Aufgabenstellung, den ich morgen in der Vorlesung ansprechen werde.

Sie dürfen aber in diesem Fall (wenn also W in einem anderen Archiv auftaucht, als das, in dem das Item abgespeichert wurde), alle Teilarchive absuchen.

12

Re: (NachTestat)Strukturelle Frage

Ja aber das hilft mir ja noch nicht weiter
z.B.

http://sandman.rbs-page.de/bsp.jpg


UNd wenn ich jetzt ins Redundant archive speicher,
dann wird mir das eine Id liefern, die in den W 1/2/3 nicht vorhanden ist,
sonderen eine virtuelle, die dann mein Archive übersetzen muss

mein Overflow archive hat jedoch keine chance mit dieser ID in W3 an das Item zukommen,

einzigste Möglichkeit wäre das vorgeschaltete Worm,
oder man würde mehrere Ids ausgeben

13

Re: (NachTestat)Strukturelle Frage

Sandman schrieb:

Ja aber das hilft mir ja noch nicht weiter
z.B.

http://sandman.rbs-page.de/bsp.jpg


UNd wenn ich jetzt ins Redundant archive speicher,
dann wird mir das eine Id liefern, die in den W 1/2/3 nicht vorhanden ist,
sonderen eine virtuelle, die dann mein Archive übersetzen muss

mein Overflow archive hat jedoch keine chance mit dieser ID in W3 an das Item zukommen,

einzigste Möglichkeit wäre das vorgeschaltete Worm,
oder man würde mehrere Ids ausgeben

Das ist jetzt eine sehr klare Beschreibung des Problems: Sie müssen also aus der Redundant-Id irgendwie die WORM-Id rausbekommen. Das geht in der Tat nur über "instanceof" und Casts - letztlich ist da ein Problem, das durch die Aufgabenstellung impliziert ist.  Ich gehe morgen in der Vorlesung drauf ein - wenn ich es nicht zu Ihrer Zufriedenstellung kläre, sprechen Sie mich nochmal an.