Kann ich mit Python mein Problem lösen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

(Blöde Überschrift - mir ist halt nix besseres eingefallen)
Also ich habe mich hier frisch angemeldet um, hoffentlich, mit eurer Hilfe, der Beantwortung obiger Frage wenigstens näher zu kommen und will mal mein Problem beschreiben:
Ich habe den „Rechentrainer“ programmiert. Man findet ihn auf dem hessischen Bildungsserver oder unter rechen.trainer.schule. Ich bin sehr stolz auf mein Programm und der Überzeugung, dass es nichts Vergleichbares gibt. Mit dem Rechentrainer sollen die Schülerinnen und Schüler kontinuierlich alle Themen des Matheunterrichts bis zum mittleren Bildungsabschluss wiederholen; nach meiner Erfahrung vergessen sie nämlich immer wieder wie man z.B mit Brüchen rechnet oder Einheiten umwandelt - einige haben es auch nie richtig gelernt. Die Arbeit mit dem Rechentrainer wird auch bewertet und kann bei der Benotung berücksichtigt werden. Auch Tests kann man damit schreiben oder mithilfe des „Rechenduells“ das Kopfrechnen trainieren. Der Rechentrainer ist ein riesiges Makro in einer .calc Datei von OpenOffice - und das ist mein Problem.
Die Kids brauchen einen Computer auf dem OpenOffice (oder LibreOffice) installiert ist und bei dem die Makros zugelassen sind. OpenOffice ist auf jeden Fall sinnvoll aber schon mit der Makroeinstellung sind viele überfordert und außerdem wollen die Kids eine App für ihr Handy. Viele finden das Programm gut, wollen oder können aber nicht mit einem PC arbeiten und die Schulen (und auch die Schülerinnen und Schüler) werden vermehrt mit Tabletts ausgestattet. Der Rechentrainer läuft auf Windows, Linux und OS, aber nicht auf Tablets Also muss ich jetzt eine App schreiben! Für Apple und Android - der Aufwand ist immens und Java habe ich mir angesehen, da werde ich nicht warm mit. Python gefällt mir, da habe ich mich jetzt mal etwas (!) eingearbeitet und könnte mir vorstellen, dass ich damit arbeiten kann. Bevor ich mich da jetzt endgültig reinstürze müsst ihr mir helfen:
Wenn ich mein Rechentrainer als Apphaben will, wurde mir gesagt, ich müsse mich auch noch mit Django beschäftigen, damit es im Browser läuft - OK soweit, mache ich dann halt auch.
Die erste Frage: Muss auf den Geräten der zukünftigen Nutzer Python installiert sein oder ist das was ich da schreiben werde alleine lauffähig?
Die Daten der Nutzer werden jetzt einfach innerhalb der individuellen Calcdatei gespeichert. Daten und Code sind passwortgeschützt, das hat bisher meistens gereicht. Die Nutzer haben die Datei der Lehrkraft geschickt, diese konnte sie, auch mithilfe eines Auswertungsprogramms, auswerten.
Jetzt muss ich diese Daten in einer Datenbank speichern. Zweite Frage, geht das auch lokal oder muss ich das grundsätzlich auf einem zentralen Server speichern?
Drittens: Kann ich sicherstellen, dass die Daten vom User nicht manipuliert werden können - es erfolgt schließlich eine Benotung der Arbeit?

... oder ist das alles möglicherweise so gar nicht zu lösen .... oder möglicherweise anders?
Vielen Dank für eure Hilfe
Pit
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Django ist ein Rahmenwerk zur Erzeugung einer Webanwendung. Da muss nichts auf dem Zielgerät installiert werden, so es denn (wie jedes mobile Gerät heutzutage) einen Browser hat. Entsprechend wäre das ein sinnvolles Vorgehen zumindest mal für die reinen Aufgaben. Aber gerade weil nichts installiert werden muss, muss es einen zentralen Server geben!

Kreativität ist gefragt bei der Frage danach, wie die Ergebnisse halbwegs manipulationssicher beim Lehrer ankommen. Grundsätzlich wäre eine Datenbank auch auf dem Server gut geeignet. Damit liesse sich zb ein Vorgehen implementieren, bei dem die Lehrkraft jedem Schüler einen individuellen Link zukommen lässt. Damit wird dann die Bearbeitung der Aufgaben erfasst. Problem dabei ist aber auf verschiedenen Ebenen der Datenschutz - Emails oder andere, identifizierende Informationen, sind mit Vorsicht und Zustimmung zu verarbeiten.

Alternativ könnte die Bearbeitung anonym, nur als eine zufällige Session, gespeichert werden. Und am Ende lädt der Schüler einen Report herunter, der dann an den Lehrer zu mailen ist. Das würde Manipulation erlauben, weil ja immer wieder von vorne begonnen werden kann. Aber das ist jetzt ja auch der Fall, und salopp gesagt: wenn der Schüler 5 mal die Aufgaben macht, bis es passt, ist ggf auch der gewünschte Lerneffekt erreicht.

Es gibt auch Browser-seitigen local Storage (https://www.w3schools.com/html/html5_webstorage.asp) - der kann auch genutzt werden, dann verlagert sich aber die Anwendung deutlich mehr nach JavaScript. Das ist an sich nicht schlecht, aber eben auch nicht mehr Python. Und wirklicheinfacher wird es damit auch nicht.
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Pitwheazle: Da geht ein bisschen was durcheinander.

Native App auf Android und iOS: Da würde ich von Python abraten und die jeweils dort offiziell direkt unterstützten Sprachen verwenden. Also beispielsweise Java (Android) und Swift (iOS). Oder auch Kotlin auf Android wenn man Java nicht so mag. Da musst Du das alles zweimal entwickelt, testen und so weiter.

Webanwendung: Dafür brauchst Du einen Server wo Du in der Programmiersprache Deiner Wahl das ganze als Webanwendung umsetzten kannst. Python wäre da eine Option, mit einem Webrahmenwerk. Die beiden verbreitetsten dürften aktuell Django (eierlegende Wollmilchsau) und Flask (Mikrorahmenwerk) sein. Beide gibt es schon eine ganze Weile, und beide haben eine aktive Community, dass heisst die verschwinden morgen auch nicht einfach so.

Ich persönlich würde Webanwendung in diesem Fall vorziehen. Da brauchen die Benutzer dann nur einen Internetzugang und einen Browser. Beziehungsweise einen Intranetzugang wenn das in der Schule lokal gehostet wird. Oder, falls Du das quelloffen machst, können sich Benutzer die ein bisschen Ahnung haben, auch lokal einen eigenen Server aufsetzen.

Was die Möglichkeit der Datenmanipulation angeht: Da muss die Bewertung ob eine Aufgabe richtig gelöst wurde, eigentlich grundsätzlich auf dem Server passieren. Denn wenn das auf dem Gerät des Nutzers passiert, kann der doch da immer eingreifen im Zweifelsfall. Kann vielleicht nicht *jeder*, aber wie willst Du da Manipulation ausschliessen?

Neben Python und dem Webrahmenwerk, käme dann noch HTML, CSS (und ein CSS-Rahmenwerk wie Bootstrap), und ziemlich sicher noch JavaScript hinzu was man halbwegs können muss, um so ein Projekt umzusetzen.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Benutzeravatar
Dennis89
User
Beiträge: 1123
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

falls vielleicht doch Apps programmiert werden soll, aus welchem Grund auch immer, bin ich gerade zufällig über 'Flutter' gestolpert.
Ich kann dazu selbst nichts sagen und werfe es einfach mal als Info in den Raum:
https://de.wikipedia.org/wiki/Flutter_(Software)
https://flutter.dev/

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Auweh, da zerstört ihr meine Hoffnungen! Zwischenzeitlich habe ich mich noch ein Bißchen mehr in Python eingelesen und muss sagen, damit traue ich mir zu, meinen Rechentrainer neu zu programmieren. Ich habe mich, wie gesagt, auch schon mal kurz mit Java und Android eingelesen und auch schon dasSwift Buch mal angefangen - das traue ich mir ( und meinem 67 Jahre alten Hirn) nicht mehr zu. Mein Rechentrainer besteht auch nicht einfach aus vorgefertigten Aufgaben in einer Tabelle, jede Aufgabe wird je nach Fähigkeit der Nutzer mit Zufallszahlen erzeugt und viele Aufgaben enthalten auch Grafiken, geometrische Formen, Trigonometrie, Koordinatensytem ... alles mit Zufallszahlen und zwischenzeitlich etwa 10000 Zeilen Code. Alle 35 Aufgabentypen sind individuell programmiert und meistens, außer vielleicht bei den Aufgaben zu den Grundrechenarten, sehen die Aufgaben immer anders aus und es ist nicht möglich einfach immer wieder die gleiche Aufgabe zu machen, mass muss schon das Prinzip verstanden haben. Den Aufwand schaffe ich nicht in Java, Android und Swift.
Schön wäre es, wenn man dann halt einfach Python auf den Tablets oder Smartfones installieren könnte. Ich habe, erlich gesagt, keine rechte Vorstellung, wie die Anwendungen, die in Python geschrieben sind, im Browser aussehen könnten, habt ihr da Beispiele für mich?
Und das mit dem Server, hätte ich auch gehofft, umgehen zu können. Statt in meine Calc-Tabellenseite, kann ich die Daten auch in einer lokalen Datei speichern (hätte ich mir in meinem jugendlichen(?) Leichtsinn so gedacht) können. Die wird ständig mit einem Hashwert versehen und nicht so einfach geändert werden. Diese Datei könnte (... mal so gedacht) per Email oder whatsapp verschickt werden können...
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Noch ein Nachtrag: Ihr habt sicher schon festgestellt, dass ich hier Null Ahnung habe. Mal angenommen, ich bekomme das jetzt mit Python und Jango geregelt und habe dann eine Webanwendung - die läuft dann grundsätzlich im Internet? Einen Webserver habe ich ja (glaube ich mit rechen,trainer.schule) ... aber meine Frage: dies Webanwendung liegt dann auf ebendiesem Server und ohne Internet ist nüscht oder könnte man das auch lokal nutzen?
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Pitwheazle: Python im Browser ist eher keine gute Idee. Im Browser läuft nur JavaScript, da müsste man also eine Python-Implementierung verwenden die in JavaScript geschrieben ist. Da gibt es welche, aber die sind halt ziemlich gross und unterscheiden sich auch mehr oder weniger subtil von CPython.

Die Webanwendung in Python läuft nicht im Browser sondern auf dem Server. Der Browser ist im Grunde nur für die Oberfläche in der die Darstellung erfolgt und über die der Benutzer Eingaben macht. Je nach dem wie interaktiv das im Browser werden soll/muss, müsste man da noch JavaScript, oder ein Programmiersprache die sich nach JavaScript kompilieren lässt, dazu nehmen.

Python auf Android oder iOS ist zwar möglich, aber auch hier sind alle von den Plattformherstellern nicht-unterstützten Programmiersprachen eher Fremdkörper/eine zusätzliche Schicht, die alles grösser und nerviger macht. Und man kann auch nicht 100% das gleiche Programm auf beiden Plattformen laufen lassen, weil sich die APIs der Benutzerschnittstellen natürlich unterscheiden.

Eine lokale Datei kannst Du nicht schützen. Der Hashwert wird ja auf dem Rechner des Benutzers berechnet. Mit Code der auf dem Rechner des Benutzer läuft. Damit ist das prinzipiell angreifbar. Wenn Du etwas vor dem Benutzer schützen willst, dann darf das nicht auf dem Rechner des Benutzers passieren.

Die jetzige Form als Office-Dokument sieht mir auch nicht sicher aus. Da kann man ja mehr oder weniger beliebig dran herum manipulieren. Test etc. kann man da also nur unter Aufsicht mit machen.

Ob dein Server geeignet ist, kann man so pauschal nicht sagen. Python muss installiert sein, ein Webserver der WSGI-Anwendungen kann, oder als Reverse-Proxy für einen Anwendungsserver wie Gunicorn konfiguriert werden kann.

Man kann das auch lokal nutzen wenn Du den Code zum herunterladen anbietest und die Leute das dann auf dem eigenen PC aufsetzen können.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn die Anwendung als Webanwendung geschrieben ist, kann sie nicht ohne Internet funktionieren. Und du kannst zb hier sehen https://mathegym.de/mathe/aufgabe/20/ab ... r-exponent, wie sowas aussehen könnte.
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

OK, Ihr habt mich überzeugt: Mit Swift kann ich mein Problem eher nicht lösen. Die Lösung müsste schon nahe an meinem jetzigen Rechentrainer liegen, damit man die beiden auch parallel nutzen kann und da sind die Aufgaben zu komplex für eine Browserlösung. Ich versuche mich jetzt mal an Kolin - wenn ich eine Lösung finde, wie ich das mit einem 32bit OS hier in meinem Frankreichurlaub zum Laufen bringe. Das hat bisher noch nicht geklappt.
Vielen Dank für eure Hilfe und so long
Pit
Antworten