Frage zu Chat-Server

Magogan

Lieutenant
Registriert
Aug. 2013
Beiträge
606
Hallo,

ich sollte in einem Modul an meiner Universität einen Chat-Server implementieren, der die empfangenen Nachrichten "an alle verbundenen Clients weiterleitet". Der Absender der Nachricht ist meiner Meinung nach auch ein verbundener Client und sollte demnach auch seine eigene Nachricht als Antwort bekommen. Macht das irgendwie Sinn oder kann man das auch anders interpretieren? Ich wüsste nicht, wie ich sonst - ohne eine Nachricht an den Absender - gewährleisten kann, dass bei allen der Chatverlauf in der selben Reihenfolge angezeigt wird.

Mein Problem ist jetzt, dass es dadurch in einem Unit-Test zu Fehlern kam, da dieser davon ausgegangen ist, dass der Absender seine Nachricht nicht selbst erhält. Nun wusste ich nicht, an was ich mich halten soll, da sich Aufgabenstellung und Unit-Test widersprechen. Letztendlich habe ich mich dafür entschieden, mich an die Aufgabenstellung zu halten, da diese mehr Sinn ergab als der widersprüchliche Unit-Test. Dadurch fehlt mir aber ein Punkt, der mir jetzt zum Bestehen des ganzen Moduls fehlt (da gibt es keine Noten, nur bestanden bzw. nicht bestanden) und mein Professor ist nicht bereit, mir diesen zu geben, weil er der Meinung ist, dass ich mich an die Unit-Tests hätte halten sollen. Aber woher sollte ich das wissen?

Ich möchte keine rechtliche Beratung, sondern nur eure fachliche Einschätzung dazu...

Grüße,
Magogan
 
Hi,

Macht das irgendwie Sinn oder kann man das auch anders interpretieren?

wenn man sich moderne Messenger ansieht: absolut, ja. Ich sehe ja auch, was ich in einem Gruppenchat oder Einzelchat in Whatsapp oder Telegram schreibe. Solange die Nachricht nicht doppelt aufgeführt ist sehe ich kein Problem damit. Würde in meinen Augen den Chat auch vollkommen unverständlich machen, wenn ich meine eigenen Nachrichten nicht sehe.

Ob die Nachricht dafür verschickt und empfangen werden muss ist die andere Frage. Lesbar dranstehen sollte sie am Ende aber auf jeden Fall.

VG,
Mad
 
Ueber sowas laesst sich natuerlich vorzueglich streiten.
Die Frage, ob der Absender seine Nachricht zurueckbekommen sollte, wuerde ich mit nein beantworten. Die Frage, ob der Absender seine eigene Nachricht sehen sollte, wuerde ich mit ja beantworten.
In meinen Augen ist es unnuetzer Aufwand/Traffic die eigene Nachricht zum Server zu senden, zurueck zu bekommen und sie dann anzuzeigen. Ich wuerde sie direkt in meinem Chat-Fenster anzeigen.

/Ich musste in der Uni auch schon einen Chat-Server implementieren, sogar mehr als einmal. Dabei war immer das Verhalten gefordert, das Madman1209 und ich beschreiben: Die eigene Nachricht wird im Chat-Fenster angezeigt, aber nicht an den Absender zurueckgeschickt. Das ist ja auch ein Teil der Herausforderung der Aufgabe, eben nicht an alle zu schicken, sondern irgendwoher die Information zu bekommen, von wem die Nachricht stammt.
 
Zuletzt bearbeitet:
Hi,

Die Frage, ob der Absender seine Nachricht zurueckbekommen sollte, wuerde ich mit nein beantworten. Die Frage, ob der Absender seine eigene Nachricht sehen sollte, wuerde ich mit ja beantworten.

Ich wuerde sie direkt in meinem Chat-Fenster anzeigen.

genau so war es gemeint, falls es unverständlich formuliert war.

VG,
Mad
 
Gibt er dir denn die Chance das nachzuarbeiten? Oder sagt er jetzt, durchgefallen Pech gehabt fertig? Ansonsten würde ich das einfach so machen wie der Professor das erwartet. Da muss es doch einfach nur eine Filtermethode geben damit der Absender seine eigene Nachricht nicht doppelt bekommt.
 
Magogan schrieb:
Ich wüsste nicht, wie ich sonst - ohne eine Nachricht an den Absender - gewährleisten kann, dass bei allen der Chatverlauf in der selben Reihenfolge angezeigt wird.

Das ist etwas, das du mit den Loesungen, die in Einsteigermodulen gefordert werden, sowieso nicht garantieren kannst. Auch mit deiner Loesung die eigene Nachricht vom Server zurueckschicken zu lassen nicht. Real kann diese Nachricht total lange brauchen, andere, spaeter abgeschickte Nachrichten von anderen Chatpartnern aber schneller sein und deine eigene Nachricht ueberholen.
Du muesstest dazu dann sowas wie eine Lamport-Uhr implementieren.
 
Wenn ich die Nachrichten aber direkt anzeige, ist nicht garantiert, dass jeder den Chatverlauf in der selben Reihenfolge sieht. Wenn A und B gleichzeitig etwas schreiben, sieht A dann A B und B sieht B A.

Außerdem steht in der Aufgabenstellung ja, dass die Nachricht an alle verbundenen Clients weitergeleitet werden soll und meiner Meinung nach ist auch der Absender ein verbundener Client.

@m.c.ignaz: Das wurde mit TCP-Sockets implementiert, also bekommt auch jeder die Nachrichten in der Reihenfolge, in der sie vom Chatserver versendet werden.

@Suxxess: Nein, durchgefallen.
 
Zuletzt bearbeitet:
Also das Problem ist ja:

Egal wie dus drehst, dein Prof entscheidet letztenendes ob du die fehlenden Punkte bekommst oder nicht...
Was ich probieren würde:
- mit dem Prof reden, ob er dir noch ne Woche gibt um das zu fixen
- bei der nächst höheren Instanz mal nachhaken (wobei du damit dem Prof evtl ans Bein pisst was suboptimal ist wenn du noch weiter mit dem zu tun hast)
Arg viel mehr kannst du leider nicht machen...

Beim nächsten mal evtl. als Tipp (den du dir wahrscheinlich schon selber gedacht hast) mal früher nachfragen wenn da die Aufgabenstellung unklar ist, im Gespräch kannst dann genau klären wie des ganze am Ende auszusehen hat.

Zum eigentlichen Thema:
Um die Nachrichten in der richtigen Reihenfolge anzuzeigen, würde ich die sende Zeit mit übertragen (Tag, Stunde, Minute, Sekunde o.ä.) und dann noch ne Abfrage, falls dann doch Nachrichten exakt zur selben zeit gesendet werden dass die erst empfangene vorher angezeigt wird oder so...
 
Das mit der Zeit war aber auch nicht gefordert, zumal die Uhren auf verschiedenen Computern nicht zwangsläufig die selbe Zeit anzeigen, d.h. man müsste diese vorher synchronisieren und selbst dann kann es Ungenauigkeiten geben, auch wenn diese recht gering sind.

Ich brauche auch keine Woche, um das zu fixen, das geht in 5 Minuten, die Änderung ist ja nur minimal, ich muss ja nur in der Schleife, in der ich die Nachrichten an alle sende, eine Bedingung einbauen (if currClient != sender).
 
Zuletzt bearbeitet:
Hi,

als Entwickler habe ich täglich solche Probleme: der Kunde (in deinem Fall dein Prof) drückt die Aufgabe eher undeutlich oder gar zweideutig aus. Am Anfang macht man noch den Fehler und vermutet bzw. interpretiert. Dass das zu Problemen führen kann merkst du ja gerade.

Es wurde ja hier schon geschrieben: nachfragen nachfragen nachfragen! Das ist das A und O bei Softwareentwicklung.

Ich fürchte, egal wie du es versuchst, wenn dein Prof nicht mit sich reden lässt schaut es ganz schlecht aus.

VG,
Mad
 
m.c.ignaz schrieb:
Das ist etwas, das du mit den Loesungen, die in Einsteigermodulen gefordert werden, sowieso nicht garantieren kannst. Auch mit deiner Loesung die eigene Nachricht vom Server zurueckschicken zu lassen nicht. Real kann diese Nachricht total lange brauchen, andere, spaeter abgeschickte Nachrichten von anderen Chatpartnern aber schneller sein und deine eigene Nachricht ueberholen.

Sehe das Problem nicht. Er wollte darauf hinaus, dass die Nachrichten überall konsistent angezeigt werden (ergo: in der selben Reihenfolge). Dass die Nachrichten in der Reihenfolge angezeigt werden, in welcher die Chat-Teilnehmer zeitlich die Enter-Taste gedrückt haben, ist nochmal eine andere Sache.

edit: zum Thema. @TS: Du bist da auch ein bisschen selber schuld. Du hast ja bereits selbst einen Widerspruch entdeckt (Anforderung vs. Test), wäre es so schwer gewesen, beim Prof einfach schon früher nachzuhaken? Wenn ich in meiner Studienzeit zwei Dinge gelernt habe bzgl. Abgaben, dann ist das 1.) sofort nachhaken, wenn Dinge wirklich nicht eindeutig formuliert sind (Ausnahme: es ist Teil der Aufgabe, eine unscharfe Anforderung umzusetzen), und 2.) mach immer alles genau so, wie es der Prof. sehen will, selbst wenn du weißt, dass es eigentlich besser/eleganter/moderner ginge (trifft in deinem Fall nicht zu, aber hab's trotzdem mal erwähnt).
 
Zuletzt bearbeitet:
Ich habe extra bei denen im Forum zur Lehrveranstaltung nachgefragt und keine Antwort bekommen... Ja, ich hätte auch eine E-Mail schreiben können, aber woher soll ich denn wissen, dass das Forum nicht für solche Probleme gedacht ist? Bei anderen Lehrveranstaltungen wurde es ja gerade für solche Probleme massenweise genutzt (ich hatte teilweise über 500 ungelesene E-Mails, weil ich bei jedem Beitrag benachrichtigt wurde) und bei dieser nun nicht?

Das ist übrigens auch nicht der einzige Kritikpunkt an der Lehrveranstaltung, die dritte Aufgabe war auch sehr ungenau formuliert und ich hab sie eigentlich ausreichend erfüllt, bin aber trotzdem durchgefallen.
 
Zuletzt bearbeitet:
Dann sehe es als teures Lehrgeld an und mache es das nächste mal anders. Du willst/brauchst die Antwort, also musst du auch so lange am Ball bleiben, bis du sie hast.

Wenn du jetzt gesagt hättest, dass man dir in diesem Forum (das wird auch von Tutoren o.ä. besucht, richtig?) eine _falsche_ Antwort gegeben hätte und du deswegen durchgefallen bist, dann wäre das etwas anderes. Aber bei einer fehlenden Antwort fällt die Verantwortung auf dich zurück. Schreibe das nächste mal dem Prof. eine Email oder passe ihn nach einer Vorlesung direkt ab.
 
Der Professor war gar nicht anwesend bei der Lehrveranstaltung, das hat nur der wissenschaftliche Mitarbeiter gemacht. Und da warte ich auch mal Wochen auf eine E-Mail.

Eine Einsicht in meine Prüfungsakte habe ich trotz Rechtsanwalt immer noch nicht bekommen bzw. diese Akte existiert gar nicht.

Eine Wiederholungsprüfung bis Anfang Oktober 2016 habe ich nicht bekommen, obwohl diese mir rechtlich zusteht.

Jetzt muss ich den Kurs dadurch vermutlich wiederholen, wodurch mein Studium vermutlich länger dauert, was im Prinzip ein 5-stelliger finanzieller Schaden ist, da ich dann ja zusätzliche 6 Monate lang nicht arbeite, sondern studiere. Und das nur, weil eine Behörde, die von meinen und euren Steuergeldern bezahlt wird, einfach meine Rechte missachtet. Das macht mich einfach fertig...
 
Zuletzt bearbeitet:
Warum seine Übungen richtig machen, wenn man sich den Abschluss auch erklagen kann? Ich begreife die Kinder heutzutage echt nicht mehr. Wenn ich einen Kurs verkackt habe, wär mir im Leben nicht die Idee gekommen, das könnte irgendjemand anders schuld sein, als ich selbst.

Du hast keinen Anspruch auf Bestehen des Kurses, wenn du deine Aufgaben falsch gelöst hast. Und einen finanziellen Schaden kannst du erst recht nicht geltend machen. Unglaublich, echt.
 
Zuletzt bearbeitet:
@asdfman ohne die genauen hintergründe zu kennen ist den post schwachsinn. habe schon ettliche situationen erlebt in meinem studienleben (von bekannten die an anderen unis waren), die teilweise kurz davor waren noten einzuklagen weil profs einfach in rente gingen und vergessen hatten noten bekannt zu geben (scheine ausstellen)
 
nik_ schrieb:
@asdfman ohne die genauen hintergründe zu kennen ist den post schwachsinn.
Jaein. Also wenn schon der Unit-Test nicht durchläuft, dann sollte man zumindest nachfragen statt einfach zu machen, was man denkt das richtig ist.

So ein Studium soll ja auch aufs Leben vorbereiten. Wenn Du da irgendwie eine Raketensteuerung programmierst "Warnings" ignorierst, weil Du meinst Dich einfach nur an die Vorgaben zu halten kannste ja auch nicht sagen: "Tut mir ja leid wegen der Astronauten, aber ich hatte das so verstanden, das ich die Steuerung soundso programmieren soll." :-)

Insofern ist er vielleicht nicht fachlich gescheitert, aber an mangelnder Kommunikation. Und das ist nun mal das A und O bei solchen Geschichten und mindestens genauso wichtig wie ein Crack am Rechner zu sein.

Achja: Und sich auch mal Fehler einzugestehen statt dieser "Schuld sind die Anderen"-Nummer gehört ja auch zu so nem persönlichen Entwicklungsprozess.

Insofern sollte er der Uni dankbar sein das sie einem diese Erfahrung jetzt vermitteln, wo es noch nicht wirklich folgenreich ist und wo man noch daraus lernen kann. Auch mit bestimmten Sachen umzugehen.
 
Ich bin der Auffassung, dass die Unit-Tests dafür da sind, um unsere Lösung zu überprüfen. Und die Lösung basiert ja auf der Aufgabenstellung und die ist auch eindeutig.
 
Magogan schrieb:
Ich bin der Auffassung, dass die Unit-Tests dafür da sind, um unsere Lösung zu überprüfen. Und die Lösung basiert ja auf der Aufgabenstellung und die ist auch eindeutig.

Dann verstehe ich Dein Problem nicht.
 
sehe das eigentlich wie andy. ein unit-test war vorhanden; das gehoert in der regel zur erweiterten aufgabenstellung, sofern zur bearbeitungszeit vorhanden und nicht erst bei der auswertung durch den pruefer. in dem sinne mag die formulierung der problemloesung vielleicht ein wenig ungenau gewesen sein, was man zu einem gewissen grad immer erwarten kann, wurde aber durch einen offenbar bedacht gewaehlten test vollstaendig spezifiziert.

wenn es bei der uni-veranstaltung wie magogan jetzt sagt generell mehrere instanzen des mismanagements gab ist das natuerlich bedauerlich, aber hat nicht mehr wirklich was damit zu tun, ob die aufgabenstellung in ordnung war oder nicht, und m.E. war sie das nach der darstellung der sachlage hier.

wenn dir rechtlich (du meinst damit wohl laut deiner studienordnung?) eine nachpruefung fuer irgendwas zusteht, sie aber nicht offeriert wurde, wuerde ich vermutlich auch darueber nachdenken, den rechtsweg einzuschreiten. aber so wie du dich hier praesentierst wuerde ich mich nicht wundern, wenn deine studienordnung dich in dem denken nicht unbedingt unterstuetzt.

dass du diese lernleistung jetzt nicht angerechnet bekommst liegt aber sicherlich nicht am missverstehen eines einzigen details in der aufgabenstellung - aus langjaehriger unierfahrung erkenne ich da so 'ne gewissermassen typische selbsttaeuschung wieder, nach der man das versagen in einer lehrveranstaltung auf einen single point of failure reduzieren zu koennen glaubt, und die verantwortlichkeit fuer dieses versagen dann bei jemand anderem sucht. das ist ein charakterlicher fehler. und wie bereits von anderen hier erwaehnt gehoert es zur geistigen entwicklung, anzuerkennen, dass nicht alles was einem passiert boshafte oder fahrlaessige fremdeinwirkung ist. die unizeit ist ein voellig legitimer zeitpunkt, sowas zu lernen. es ist nur wichtig, dass man's tut.
 
Zuletzt bearbeitet:
Zurück
Oben