Wieder mal was Besonderes:
In meinem "alten" Rechentrainer (Der als Makro unter Calc läuft) ist mein "Rechenduell" sehr beliebt. Dabei wird eine Matheaufgabe angezeigt (mittels Beamer) und nach einer kurzen Denkpause die Namen von zwei zufällig ausgewählten Schüler/innen aus einer Liste. Wer zuerst die richtige Antwort nennt, bekommt einen Punkt und rückt im Ranking höher.
Das möchte ich mit meiner servergestützten Rechentrainerversion jetzt auch übernehmen. Genial wäre es, wenn die Aufgabe allen Schüler/innen innerhalb einer Lerngruppe, gleichzeitig auf ihren Tabletts angezeigt würden und nur bei zweien dann ein Aufgabenfeld erscheint und ich diese Eingabe in meinem Programm auswerten könnte.
Ich vermute, das geht gar nicht - ich wollte aber zumindest mal gefragt haben.
Frohe Weihnachten!
Kommunikation zwischen Clients
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
OK, prima - heißt das, dass das prinzipiell möglich wäre? Das das nicht von Client zu Client, sondern über den Server gemanaged werden muss, ist sogar mir klar. Kannst du mir da bitte mal einen Anfang skizzieren?
Gehen tut das schon; üblicherweise setzt man so etwas zur Zeit mit WebSockets um (und in Django z.B. hiermit: https://channels.readthedocs.io/). Allerdings ist das halt schon noch mal ein eigenes großes, relativ separates Thema, in das man sich einarbeiten muss. Daher würde ich persönlich vorschlagen, das erst einmal nach hinten zu schieben, bis der Rest gut läuft und man die restliche Technik völlig im Griff hat.Pitwheazle hat geschrieben: ↑Mittwoch 20. Dezember 2023, 18:25 Ich vermute, das geht gar nicht - ich wollte aber zumindest mal gefragt haben.
Die jetzige Implementierung als Webanwendung ermöglicht aber ersatzweise auch ähnlich Features, die vorher wahrscheinlich so kaum umsetzbar waren: Statt dieser Live-Duelle kannst du ja zum Beispiel Ranglisten für gelöste Aufgaben einführen. Oder man kann Erfahrungspunkte und Level und so etwas einführen. Je nachdem, was einem so einfällt und pädagogisch sinnvoll ist (davon habe ich keine Ahnung).
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
Ich hatte mich da an den Vorschlag von @sparrow gehalten:Kebap hat geschrieben: ↑Mittwoch 3. Juli 2024, 07:00Über die technischen Notwendigkeiten hinaus, wird das auch organisatorischen und ggf. weiteren Aufwand produzieren.Pitwheazle hat geschrieben: ↑Dienstag 2. Juli 2024, 12:40 Und hier [url]viewtopic.php?t=57645[/url ]habe ich meine Idee vorgestellt, das "Rechenduell", das auf meinem OpenOffice Rechentrainer läuft auch in die App zu einzubauen. Das scheint mir nicht so einfach zu sein. Ich habe mich mal eingelesen und muss wohl zunächst mal eine Chat-App erstellen und das alles mal ausprobieren.
Wenn du den Nutzern die Möglichkeit gibst, miteinander zu interagieren, und ggf. sogar freie Texte auszutauschen, birgt das Möglichkeiten es zu misbrauchen.
Ich hatte daraufhin mal gesucht und ein Beispiel für ein Chat Programm gefunden und wollte das mal nachvollziehen und hatte gedacht, vielleicht erschließt sich mir dann irgendwann, wie ich das für mein geplantes Rechenduell nutzen kann. Chat brauche ich nicht. Ich denke, ich stelle euch mein Rechenduell hier mal vor. Vielleicht könnt ihr mir da einen Weg aufzeigen, wie ich da dran gehe (oder ihr sagt "das geht nicht" oder auch "das bekommst du nicht hin").
Also das Rechenduell existiert schon als Makro in einer Tabellenkalkulationsdatei. Die Aufgaben entsprechen denen in meiner rechentrainer.app. Die Lehrkräfte haben auch schon eine Liste mit den Schülerinnen und Schüler ihrer Lerngruppe. Diese können sie noch in bis zu drei Ligen einteilen und die Fehlenden eintragen. Beim Start sieht das dann so aus:

Diese müssten jetzt alle Mitglieder der Lerngruppe auf ihrem Gerät sehen. Bei meinem existierenden Rechenduell benötigt man dazu einen Beamer. Die Lehrkraft sucht eine Aufgabenkategorie aus und klickt sie an, eine Aufgabe wird angezeigt:

Alle Schülerinnen und Schüler überlegen die Lösung und nach einer voreingestellten Zeit ("Wartezeit") werden zwei Schülerinnen und Schüler zufällig ausgesucht (dabei wird berücksichtigt, wie oft sie schon dran waren und in welchger Liga sie eingeteilt sind), es erscheinen zwei Namen:

... und wer von diesen die Aufgabe am schnellsten weiss bekommt einen Punkt. Zur Überprüfung tippt die Lehrkraft die zugerufene Antwort ein. Ist die reingerufene Lösung falsch, gibt es einen halben Punkt Abzug. Daraus wird nach jeder Aufgabe die Rangliste angepasst. Die Kids finden das toll. Das mit dem Beamer und dem Reinrufen ist blöd und ich fände es prima, wenn ich dies in meine Rechentrainer.app integrieren könnte. Alle Schülerinnen und Schüler der Lerngruppe sehen die gleiche Aufgabe, aber nach einer kurzen Zeit können nur zwei von ihnen die Lösung eingeben.
Besteht hier irgeneine Chance, sowas (mit meinen bescheidenen Fähigkeiten) zu realisieren? Und wenn ja, wie fange ich an?
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
Ja, das mit den Ranglisten ist schon angedacht, das motiviert aber meines Erachtens nur die Streber, die schwachen Schülerinnen und Schüler demotiviert das nur. Mein Rechenduell ist ja schon getestet und kommt sehr gut an. Der Vorteil ist, dass hier zunächst mal eine Live Wettkampfstimmung entsteht und die schwachen Schülerinnen und Schüler eingebunden sind. Wie gesagt, die Lehrkraft kann bis zu drei Ligen festlegen und die "kämpfen" primär erstmal gegeneinander, zufällig treten dann aber auch die bessergewerteten der unteren Liga gegen die schlechteren der oberen Liga an, gewinnt der/die aus der unteren Liga, steigt er/sie auf, muss aber noch ein weiteres Duell in der neuen Liga gewinnen, sonst steigt er wieder ab, der Verlierer steigt ab. (Ich habe (auch) von Fußball keine Ahnung, habe mich aber inspierrieren lassen.) das ganze ist zurzeit ein Makro in Staroffice.nezzcarth hat geschrieben: ↑Donnerstag 21. Dezember 2023, 11:11 Die jetzige Implementierung als Webanwendung ermöglicht aber ersatzweise auch ähnlich Features, die vorher wahrscheinlich so kaum umsetzbar waren: Statt dieser Live-Duelle kannst du ja zum Beispiel Ranglisten für gelöste Aufgaben einführen. Oder man kann Erfahrungspunkte und Level und so etwas einführen. Je nachdem, was einem so einfällt und pädagogisch sinnvoll ist (davon habe ich keine Ahnung).
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
Mein Rechentrainer liegt ja schon auf meinem Rechner und wenn ich jetzt ein zweites "Übungsprogramm" installieren will, dachte ich, müsste ich erstmal meinen Rechentrainer in eine virtuelle Umgebung einbetten und für ein weiteres Projekt eine zweite erstellen.Kebap hat geschrieben: ↑Mittwoch 3. Juli 2024, 07:00 Mein Tipp, lerne am besten mal in einem kleinen, eigenständigen, lokalen Projekt, wie man virtuelle Umgebungen erstellt und handhabt.
Kein Django, kein Uberspace, keine Datenbanken, kein HTML, einfach 2-3 kleine verschiedene Pythonprogramme, die unterschiedliche Paketen importieren müssen.
- noisefloor
- User
- Beiträge: 4149
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
das Problem hierbei ist die Latenz, wenn du das online machst. Sagen wir mal, es gehen wirklich an beide Clients die Aufgabe gleichzeitig raus - dann heißt das nicht, dass die gleichzeitig ankommen. Du hast ja eine Netzwerklatenz, auf die du null Einfluss hast. Die kann halt gering sein oder erheblich. Also das beide gleichzeitig die Aufgabe gleichzeitig sehen und gleichzeitig antworten (können) ist extrem unwahrscheinlich.
Sinnvoller wäre IMHO nicht der Echtzeit Ansatz, sondern eher sowas wie bei der App "Quizduell", d.h. man sieht eine Aufgabe, hat X Sekunden Zeit, zu antworten (bei Quizduell ist es multiple choice) und je schneller man ist, desto mehr Punkt bekommt man.
Interessant ist das schon, aber bevor du da dran geht solltest du IMHO den verhandenen Code des Rechentrainers erstmal "production ready" machen - basierend auf deinen diversen Threads sind da genug offene Baustelle plus die neue Baustelle namens "performance".
Gruß, noisefloor
das Problem hierbei ist die Latenz, wenn du das online machst. Sagen wir mal, es gehen wirklich an beide Clients die Aufgabe gleichzeitig raus - dann heißt das nicht, dass die gleichzeitig ankommen. Du hast ja eine Netzwerklatenz, auf die du null Einfluss hast. Die kann halt gering sein oder erheblich. Also das beide gleichzeitig die Aufgabe gleichzeitig sehen und gleichzeitig antworten (können) ist extrem unwahrscheinlich.
Sinnvoller wäre IMHO nicht der Echtzeit Ansatz, sondern eher sowas wie bei der App "Quizduell", d.h. man sieht eine Aufgabe, hat X Sekunden Zeit, zu antworten (bei Quizduell ist es multiple choice) und je schneller man ist, desto mehr Punkt bekommt man.
Interessant ist das schon, aber bevor du da dran geht solltest du IMHO den verhandenen Code des Rechentrainers erstmal "production ready" machen - basierend auf deinen diversen Threads sind da genug offene Baustelle plus die neue Baustelle namens "performance".
Gruß, noisefloor
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
OK, das ist eine interessante Info. Vielleicht lasse ich das dann halt bei meiner funktionierenden OpenOffice Version. Nach Studium der von @nezzcarth Infos zu den "channels" fühle ich mich auch echt überfordert.
... aber mache meinen Rechentrainer nicht schlechter als er ist. Er ist, glaube ich, seit einem Jahr online und funktioniert, meines Erachtens gut. Ich bekomme nur positive Rückmeldungen - die einzigen Beschwerden kommen von Lehrkräften, die bemängeln, dass die Schülerinnen und Schüler nicht genug arbeiten.
Ich habe versucht, eure Anregungen alle einzubauen ... auch bei den neuen Variablennamen.
Bleibt, außer des Performaceproblems noch die fehlende Anzeige meiner Gruppen auf dem iPad.
... aber mache meinen Rechentrainer nicht schlechter als er ist. Er ist, glaube ich, seit einem Jahr online und funktioniert, meines Erachtens gut. Ich bekomme nur positive Rückmeldungen - die einzigen Beschwerden kommen von Lehrkräften, die bemängeln, dass die Schülerinnen und Schüler nicht genug arbeiten.
Ich habe versucht, eure Anregungen alle einzubauen ... auch bei den neuen Variablennamen.
Bleibt, außer des Performaceproblems noch die fehlende Anzeige meiner Gruppen auf dem iPad.
- noisefloor
- User
- Beiträge: 4149
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
also deinen Rechentrainer macht auch keiner schlecht. Soweit ist das mitbekommen habe richten sich alle Verbesserungsvorschläge und Kritik an den Code, nicht die Applikation und deren Aufgaben an sich.
Gruß, noisefloor
also deinen Rechentrainer macht auch keiner schlecht. Soweit ist das mitbekommen habe richten sich alle Verbesserungsvorschläge und Kritik an den Code, nicht die Applikation und deren Aufgaben an sich.
Gruß, noisefloor
vs.Die Kids finden das toll. Das mit dem Beamer und dem Reinrufen ist blöd und ich fände es prima, wenn ich dies in meine Rechentrainer.app integrieren könnte. Alle Schülerinnen und Schüler der Lerngruppe sehen die gleiche Aufgabe, aber nach einer kurzen Zeit können nur zwei von ihnen die Lösung eingeben.
Mir ist noch nicht ganz klar, wie das Ergebnis aussehen soll.Pitwheazle hat geschrieben: ↑Mittwoch 3. Juli 2024, 15:50 Mein Rechenduell ist ja schon getestet und kommt sehr gut an. Der Vorteil ist, dass hier zunächst mal eine Live Wettkampfstimmung entsteht und (...)
Gibt es einen Beamer oder nicht mehr nötig?
Wird noch gerufen oder nicht?
Wenn jeder nur bei sich in der App rumklicken muss, wird ggf. Stimmung verloren gehen.
Andererseits könnten Duelle dann auch außerhalb der Unterrichtszeiten eben online stattfinden.
Den Vorschlag von noisefloor finde ich sinnvoll: Jede App misst für sich, wie lange der Schulende gebraucht hatte, um die Antwort zu geben. Der Server kann darüber entscheiden, welche Antwort schneller kam. Somit hast du das Problem mit der abweichenden Latenz schon abgewehrt.
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
Bei meiner Idee wäre der Beamer und die Installation von OpenOffice überflüssig. Auch das Reinrufen und das Eintippen des reingerufenen Ergebnisses empfand ich als nicht optimal. Es stimmt aber, dass das Klicken auf Handys den Wettkampfcharakter einschränkt. Aber jetzt wo ich das schreibe, habe ich eine andere Idee: Es wäre ja eine Möglichkeit, den Rechentrainer so in meine App zu integrieren, dass die Lehrkraft die entsprechende Grafik vom Tablett oder PC mit dem Beamer projeziert und dadurch die OpenOffice Installation (die für viele ein Problem ist) wegfällt.
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
Ich habe versucht alle (na ja, fast alle) Verbesserungsvorschläge zu berücksichtigen. Wo (und wie) siehst du jetzt noch Änderungsbedarf? Perfekt ist mein Code sicher nicht und vieles könnte man auch anders machen - aber bei welchem Code ist das nicht so.noisefloor hat geschrieben: ↑Mittwoch 3. Juli 2024, 18:41 also deinen Rechentrainer macht auch keiner schlecht. Soweit ist das mitbekommen habe richten sich alle Verbesserungsvorschläge und Kritik an den Code, nicht die Applikation und deren Aufgaben an sich.
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
Ich spinne hier die Idee mal weiter:noisefloor hat geschrieben: ↑Mittwoch 3. Juli 2024, 17:54 Sinnvoller wäre IMHO nicht der Echtzeit Ansatz, sondern eher sowas wie bei der App "Quizduell", d.h. man sieht eine Aufgabe, hat X Sekunden Zeit, zu antworten (bei Quizduell ist es multiple choice) und je schneller man ist, desto mehr Punkt bekommt man.
Also mein Rechenduell funktioniert und ich habe es auf Wunsch eines Kollegen auch erweitert. Man kann jetzt nicht nur ein Duell mit angemeldeten Schülerinnen und Schülern machen, sondern z.B. für Vertretungsstunden on the fly eine Liste mit Namen eingeben und mit diesen ein Duell durchführen.
Jetzt aber zurück zu dem Vorschlag von @noisefloor, das so ähnlich aufzubauen wie beim Quizduell. Ich könnte mir vorstellen meinen vorhandenen Code für einen weiteren Ansatz zu nutzen:
Ein Spielleiter meldet sich am Server an und erstellt eine Gruppe. Weitere Nutzer melden sich bei dieser Gruppe an. Der Spielleiter erkennt, wer online ist und startet ein Duell. Die erste Aufgabe wird erstellt, diese ist als Protokoll-Instanz gespeichert. Diese enthält den Aufgabentext, die Lösung(en) und eventuelle Grafiken (das gibt es so schon). Alle Teilnehmer bekommen diese Aufgabe "geschickt" und geben eine Antwort ein, diese wird überprüft, die Zeit dafür wird gestoppt (das ist auch schon vorhanden) und gespeichert. Nach einer bestimmten Zeit wird allen die nächste Aufgabe angezeigt ... Nach 10 Aufgaben werden die einzelnen Zeiten addiert und in eine Rangfoge gebracht.
So, jetzt zu meiner Frage: Geht das? Mir ist nicht klar, wie ich dafür sorgen kann, dass alle Teilnehmer zur gleichen Zeit die gleiche Aufgabe "geschickt" bekommen. Ich könnte mir das so vorstellen wie bei Nachrichtenseiten im Internet, wo der Client eine Nachricht erhält, dass eine neue Nachricht abgerufen werden kann.
Oder, eine andere Idee: Wenn ich das richtig sehe, greifen ja viele auf Smartphones installierte Apps auf Server im Internet zu. Sollte ich darüber nachdenken?
Pitwheazle hat geschrieben: ↑Freitag 25. Oktober 2024, 16:17 Jetzt aber zurück zu dem Vorschlag von @noisefloor, das so ähnlich aufzubauen wie beim Quizduell. Ich könnte mir vorstellen meinen vorhandenen Code für einen weiteren Ansatz zu nutzen:
Ein Spielleiter meldet sich am Server an und erstellt eine Gruppe. Weitere Nutzer melden sich bei dieser Gruppe an. Der Spielleiter erkennt, wer online ist und startet ein Duell. Die erste Aufgabe wird erstellt, diese
Das ist ja beides die gleiche Idee. Ein Server mit dem Clients sprechen. Oder welche Idee ist hier als zweites gemeint? Ich dachte die Anwendung läuft schon irgendwo auf einem Server (der im Internet steht... war da nicht mal was mit Uberspace?)Pitwheazle hat geschrieben: ↑Freitag 25. Oktober 2024, 16:17 Oder, eine andere Idee: Wenn ich das richtig sehe, greifen ja viele auf Smartphones installierte Apps auf Server im Internet zu. Sollte ich darüber nachdenken?
Jepp, "Websockets" wäre wohl ein gutes Stichwort... (wie bei einem Chat) siehePitwheazle hat geschrieben: ↑Freitag 25. Oktober 2024, 16:17 So, jetzt zu meiner Frage: Geht das? Mir ist nicht klar, wie ich dafür sorgen kann, dass alle Teilnehmer zur gleichen Zeit die gleiche Aufgabe "geschickt" bekommen. Ich könnte mir das so vorstellen wie bei Nachrichtenseiten im Internet, wo der Client eine Nachricht erhält, dass eine neue Nachricht abgerufen werden kann.
https://www.python-forum.de/viewtopic.php?p=425644#p425644
https://www.python-forum.de/viewtopic.php?p=425639#p425639
_______________________________________________________________________________
https://www.python-kurs.eu/index.php
https://learnxinyminutes.com/docs/python/ https://learnxinyminutes.com/docs/de-de/python-de/
https://quickref.me/python https://docs.python-guide.org/
Nachrichtenticker kann man unidirektional umsetzen. Im simpelsten Fall läuft bei den Usern im Browser ein kleines Stück JavaScript, das einmal die Minute (oder so) auf dem Server nach Neuigkeiten fragt und die dann ggf. im Browser anzeigt. Und wenn das mal 10 Sekunden länger dauert, stört das auch keinen groß. Also eher so, als würdest du regelmäßig zum Briefkasten gehen und aktiv gucken, ob was da ist. Für dein Anwendungsszenario, so, wie du es formuliert hast, brauchst du aber bidirektionale Kommunikation in Echtgeit. Daher der Vorschlag mit den Websockets.Pitwheazle hat geschrieben: ↑Freitag 25. Oktober 2024, 16:17 Ich könnte mir das so vorstellen wie bei Nachrichtenseiten im Internet, wo der Client eine Nachricht erhält, dass eine neue Nachricht abgerufen werden kann.
- DeaD_EyE
- User
- Beiträge: 1205
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Wenn es ein Multiplayer-Spiel wäre, könnte ich die Bedenken noch nachvollziehen, denn da merkt man das sofort. Bei einer Rechentrainer-App kommt es sicherlich nicht auf 100 ms an.noisefloor hat geschrieben: ↑Mittwoch 3. Juli 2024, 17:54 das Problem hierbei ist die Latenz, wenn du das online machst. Sagen wir mal, es gehen wirklich an beide Clients die Aufgabe gleichzeitig raus - dann heißt das nicht, dass die gleichzeitig ankommen. Du hast ja eine Netzwerklatenz, auf die du null Einfluss hast. Die kann halt gering sein oder erheblich. Also das beide gleichzeitig die Aufgabe gleichzeitig sehen und gleichzeitig antworten (können) ist extrem unwahrscheinlich
Wenn es um einen Wettbewerb mit Preisgeldern ginge, könnte man sowas online nur mit viel Aufwand veranstalten. Lokal, in einer Halle oder in einer Schule hätte man die Latenz-Probleme nicht. Auch Betrug ließe sich dann leichter unterbinden bzw. erkennen.
Bei einer Online-App würde ich versuchen, den Wettbewerb da raus zu halten. Gibt nur Stress.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
- noisefloor
- User
- Beiträge: 4149
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Der TE hat das ganze aber nun mal als Duell ausgelegt = Wettbewerb. 100ms Latenz vermutlich wirklich egal... ab wie viel es nicht mehr egal ist, ist halt schwer zu sagen.Bei einer Online-App würde ich versuchen, den Wettbewerb da raus zu halten. Gibt nur Stress.
Den Absatz via Websockets halte ich auch für gangbar, zumal das ja eine etablierte Technik ist und Django es über Django Channels direkt unterstützt.
Gruß, noisefloor
- DeaD_EyE
- User
- Beiträge: 1205
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Da man beim Browser sehr eingeschenkt ist (Sandbox) kann man nicht direkt Sockets nutzen, also kam mal irgendwann jemand auf die Idee Websockets einzuführen.noisefloor hat geschrieben: ↑Samstag 26. Oktober 2024, 15:16 Den Absatz via Websockets halte ich auch für gangbar, zumal das ja eine etablierte Technik ist und Django es über Django Channels direkt unterstützt.
Websockets haben wir damals für unsere Radar-App verwendet. Die Daten des Radar-Transceivers sind via Websockets übertragen worden und die Signalverarbeitung fand im Webbrowser mittels JS statt.
Ich habe damals für Python Websockets verwendet. Integration: https://websockets.readthedocs.io/en/st ... jango.html
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server