Fr. 15. Juli
Math. Institut , Bunsenstr. 3-5, 37073 Goettingen
ab 08:30: Come together (mit Kaffee, Saft, Wasser, Obst, Laugenbroetchen usw.) (Schlauch)
10:00-12:30: Vortraege und Diskussion
12:30-14:00: Mittagspause mit Spaziergang zu einem Restaurant (http://www.laromantica.de/eiswiese)
14:00-16:00: Vortraege und Diskussion
ab 16:00: Ausklang
Vortraege:
STACK-Track (Sitzungszimmmer)
Technik-Track (Hoersaal 5, Nebengebaeude)
10:00-12:30
Martin Heide : Streamen und Aufzeichnen von Vorlesungen an der Kreidetafel
https://www.uni-math.gwdg.de/koospal/website/mi-streaming.pdf
14:00-16:00
Lennart Kramer: Der Kubernetes STACK-Cluster
https://projects.academiccloud.de/projects/netzwerk-mathe-digital/wiki/public-maxima-stack-server
Die GWDG hat projects.gwdg.de sehr schnell eingestellt, ohne einen Migrationssupport anzubieten. Deshalb ist zur Zeit die Beste Moeglichkeit zum Ansehen, die alten Seiten als html zu nutzen:
https://projects.academiccloud.de/attachments/2396/20220304-wiki-mathe-digital.html
[]{#der-block-sharing-cart-in-moodle} []{#Der-Block-Sharing-Cart}
Den Block "Sharing Cart" erreichen Sie, wenn Sie in einem Kurs in den Bearbeitungsmodus wechseln und auf den - erst dann angezeigten - Menüpunkt "Block hinzufügen" in der linken Navigation ganz unten klicken:
Dort kann "Sharing Cart" ausgewählt werden. Die Blöcke sind alphabetisch nach Namen sortiert.
Wenn Sie sich nicht in einem Kurs, sondern auf dem Dashboard befinden, ist der Block "Sharing Cart" nicht wählbar.
Wenn der Block hinzugefügt wurde, erscheint in dem Kurs hinter jeder Aktivität ein kleines Korbsymbol und in der rechten Seitenleiste ist der Verwaltungsbereich des Blocks zu sehen.
Um eine Aktivität in einen anderen Kurs oder an eine andere Stelle im selben Kurs zu kopieren, klickt man einfach auf das Korbsymbol neben der Aktivität. Im Zielkurs kann man dann im Verwaltungsbereich des Blocks auf "in den Kurs kopieren" bei der entsprechenden Aktivität klicken (Symbol:
)
Die zum Einfügen möglichen Orte erscheinen wie folgt:
Achtung: Bei einem kopierten Test, der innerhalb des selben Kurses wieder eingefügt wird, werden hierbei keine Duplikate von Fragen erstellt!
Man kann auch mehrere Aktivitäten auf einmal an eine bestimmte Stelle im Kurs einfügen, indem man Ordner benutzt, das entsprechende Symbol ist:
und es wird nach einem Klick darauf die Möglichkeit gegeben, den Namen eines Ordners einzugeben, oder später einen der vorhandenen Ordner zu wählen.
Gelöscht werden können die Inhalte aus dem Korb durch einen Klick auf das Symbol:
Die Elemente des Korbes oder eines Ordners können nach einem Klick auf das Symbol:
per Drag und Drop nach oben und unten verschoben werden.
[]{#ilias} []{#Important-Links}
[]{#Arbeiten mit Projects}
[Table of Contents](javascript:)
[]{#Mitglieder-hinzufuegen}
https://projects.gwdg.de/projects/netzwerk-mathe-digital/members
Im seitlichen Menue gibt es den Punkt: Mitglieder .
Oben rechts steht + Mitglied. Ueber die Suche kann man an Hand von Teilen des Vor- bzw. Nachnamens die betreffende Person finden. Bei Hans Mueller kann die Zuordnung schwierig werden. Leider sieht man die Mailadresse erst nach dem Hinzufuegen.(Vorgehen s.u.)
Neue Mitglieder sollten als Entwickler angelegt werden.
Mehr zu den unterschiedlichen Rollen: https://projects.gwdg.de/projects/manual/wiki/Roles
[]{#Namen-nicht-eindeutig}
Bei Namen, die keine eindeutige Zuordnung erlauben, sollte man alle potentiellen Kanditaten als Commiter aufnehmen und dann die Kanditaten, deren E-Mailadresse nicht passt wieder aus dem Projekt entfernen.
[]{#Zuordnung-zu-einer-Gruppe}
https://projects.gwdg.de/projects/netzwerk-mathe-digital/settings
Man kann als Manager beliebig viele Gruppen anlegen.
Im seitlichen Menue gibt es den Punkt: Projektkonfiguration .
Wenn man den Reiter Gruppen anklickt, kann man mit +Gruppe eine Gruppe anlegen.
Wenn die Gruppe angelegt ist, kann man der Gruppe Mitglieder zuordnen (Klick auf den Gruppennamen).
Man kann in mehreren Gruppen Mitgliied sein.
[]{#Unterprojekt-anlegen}
https://projects.gwdg.de/projects/netzwerk-mathe-digital/settings
Man kann als Manager beliebig viele Unterprojekte anlegen.
Im seitlichen Menue gibt es den Punkt: Projektkonfiguration .
Oben rechts steht + Unterprojekt.
Die wesentliche Haken ist bei Oeffentlich zu setzen.
Man kann Gruppen als Mitglieder hinzufuegen.
[]{#Rundmails}
Die Funktionalitaet "Besprechung" kann man zur Erstellung einer Rundmail nutzen.
Die GWDG erlaubt die Erstellung eigener Mailinglisten:
https://info.gwdg.de/dokuwiki/doku.php?id=de:services:email_collaboration:mailing_lists:start
[]{#projects-using-guide}
[Table of Contents](javascript:)
[]{#Zugang-zu-den-Projektseiten}
Die öffentlichen Seiten und Unterprojekte sind ohne Registrierung zugaenglich. Wenn man mitdiskutieren will oder an geschlossenen Unterprojekten mitarbeiten will, ist
notwendig (s.u.)
[]{#Registrieren-bei-der-Academic-Cloud}
Um aktiv mitarbeiten zu koennen, muss man sich erst bei der Academic Cloud registrieren:
https://academiccloud.de/home
Benoetigt wird eine E-Mail-Adresse und eine Mobilfunknummer (zum Neusetzen des Passwortes, wenn man es vergessen hat).
(Fuer MitarbeiterInnen, Studierende der Uni Goettingen und vieler Hochschulen in Niedersachsen ist eine Registrierung nicht notwendig)
[]{#Im-Projekt-Netzwerk-Mathe-Digital-mitarbeiten}
[]{#Anmelden-bei-httpsprojectsgwdgde}
Ein einmaliges Anmelden bei https://projects.gwdg.de (Rechts oben SIGN IN bzw. Anmelden) ist notwendig, wenn Sie mehr als einen lesenden Zugriff auf oeffentliche Inhalte haben wollen und in geschlossen Projekten mitarbeiten wollen.
MitarbeiterInnen und Studierende der Uni Goettingen koennen sich direkt anmelden.
[]{#Nachricht-an-den-Projektadmin}
Bitte schreiben Sie eine Mail an skoospa@gwdg.de und geben Sie ggf. an, bei welchen geschlossenen Unterprojekten Sie mitarbeiten wollen und welche Gruppe wir Sie zuordnen sollen.
Gruppen sind zur Zeit: ILIAS, STACK, moodle, openolat
Die Core-Group entscheidet dann, in wieweit Ihren Wuenschen entsprochen werden kann.
Falls Sie nichts besonderes angeben, werden Sie mit der Rolle: Entwickler dem Projekt Netzwerk-Mathe-Digital zugeordnet.
[]{#Mitarbeit-im-Projekt-Netzwerk-Mathe-Digital-beenden}
Bitte schreiben Sie eine Mail an skoospa@gwdg.de mit dem Betreff: Austritt Netzwerk-Mathe-Digital
[]{#projects-using-guide-dot-en}
[Table of Contents](javascript:)
TO_TRANSLATE
[]{#Zugang-zu-den-Projektseiten}
Die öffentlichen Seiten und Unterprojekte sind ohne Registrierung zugaenglich. Wenn man mitdiskutieren will oder an geschlossenen Unterprojekten mitarbeiten will, ist
notwendig (s.u.)
[]{#Registrieren-bei-der-GWDG}
Um aktiv mitarbeiten zu koennen, muss man sich erst bei der GWDG registrieren:
https://www.gwdg.de/de/registration
Benoetigt wird eine E-Mail-Adresse und eine Mobilfunknummer (zum Neusetzen des Passwortes, wenn man es vergessen hat).
(Fuer MitarbeiterInnen und Studierende der Uni Goettingen ist eine Registrierung nicht notwendig)
[]{#Im-Projekt-Netzwerk-Mathe-Digital-mitarbeiten}
[]{#Anmelden-bei-httpsprojectsgwdgde}
Ein einmaliges Anmelden bei https://projects.gwdg.de (Rechts oben SIGN IN bzw. Anmelden) ist notwendig, wenn Sie mehr als einen lesenden Zugriff auf oeffentliche Inhalte haben wollen und in geschlossen Projekten mitarbeiten wollen.
MitarbeiterInnen und Studierende der Uni Goettingen koennen sich direkt anmelden.
[]{#Nachricht-an-den-Projektadmin}
Bitte schreiben Sie eine Mail an skoospa@gwdg.de und geben Sie ggf. an, bei welchen geschlossenen Unterprojekten Sie mitarbeiten wollen und welche Gruppe wir Sie zuordnen sollen.
Gruppen sind zur Zeit: ILIAS, STACK, moodle, openolat
Die Core-Group entscheidet dann, in wieweit Ihren Wuenschen entsprochen werden kann.
Falls Sie nichts besonderes angeben, werden Sie mit der Rolle: Entwickler dem Projekt Netzwerk-Mathe-Digital zugeordnet.
[]{#Mitarbeit-im-Projekt-Netzwerk-Mathe-Digital-beenden}
Bitte schreiben Sie eine Mail an skoospa@gwdg.de mit dem Betreff: Austritt Netzwerk-Mathe-Digital
[]{#rheinland-pfalz}
[]{#saarland}
MathCoach-System{.external} an der HTW Saar
[]{#sachsen}
[]{#setup-maxima-server-connection}
[Table of Contents](javascript:)
[]{#Setup-Maxima-Server-Connection}
[]{#First-Step-Install-Plugin}
[]{#Configure-Plugin}
Platform type: Server
Plot command: gnuplot
Server URL
[]{#Health-Check}

[]{#Hints}
[]{#setup-maxima-server-connection-ilias53}
Maxima command: (choose one of the list : Stack Maxima Pool Technical Details{.wiki-page})

[]{#setup-maxima-server-connection-ilias54}
ILIAS 5.4 and later allows you to add a list of servers. You can choose the active one. If more then one is active, the system will pick one at random. There is no check whether one system is worki
Maxima command: (choose one of the list : Stack Maxima Pool Technical Details{.wiki-page})


[]{#stack} []{#Documentation}
[]{#Slack-Group}
https://stack-teaching.slack.com
Invitations ask: stefan.koospal@mathematik.uni-goettingen.de
[]{#Public-Maxima-STACK-Server}
Stack Maxima Pool Technical Details{.wiki-page}
[]{#stack-maxima-pool-technical-details}
[Table of Contents](javascript:)
[]{#Maintanced-Public-Maxima-Pool-with-kubernetes}
There are two server variants: MaximaPool, the official maxima server backend, and goemaxima, our own faster, and easier to scale backend.
Due to a limitation with autoscaling and forwarding POST parameters, each stack version has its own URL.
Generally, the format of the URL is STACKMAXIMA-VERSION.maxima.math.uni-goettingen.de/SERVER-VERSION, where STACKMAXIMA-VERSION corresponds to the version of stackmaxima and SERVER-VERSION is either goemaxima or MaximaPool.
Here is a table of stack/ilias versions and the corresponding server URLs:
Ilias Version Moodle Stack Version Stackmaxima Build MaximaPool goemaxima 5.3 or 5.4 - 2017121800 2017121800.maxima.math.uni-goettingen.de/MaximaPool 2017121800.maxima.math.uni-goettingen.de/goemaxima - 4.2.1 2018080600 2018080600.maxima.math.uni-goettingen.de/MaximaPool 2018080600.maxima.math.uni-goettingen.de/goemaxima 6 or 7 4.2.2a 2019090200 2019090200.maxima.math.uni-goettingen.de/MaximaPool 2019090200.maxima.math.uni-goettingen.de/goemaxima - 4.3.1 2020042000 2020042000.maxima.math.uni-goettingen.de/MaximaPool 2020042000.maxima.math.uni-goettingen.de/goemaxima - 4.3.2 2020052700 - 2020052700.maxima.math.uni-goettingen.de/goemaxima - 4.3.3 2020061000 - 2020061000.maxima.math.uni-goettingen.de/goemaxima - 4.3.4 2020070100 - 2020070100.maxima.math.uni-goettingen.de/goemaxima - 4.3.6 2020100900 - 2020100900.maxima.math.uni-goettingen.de/goemaxima - 4.3.7 2020101501 - 2020101501.maxima.math.uni-goettingen.de/goemaxima - 4.3.8 2020120600 - 2020120600.maxima.math.uni-goettingen.de/goemaxima 7 - DEV 4.3.10 2021120900 - 2021120900.maxima.math.uni-goettingen.de/goemaxima
[]{#The-goemaxima-Server}
The goemaxima server is our own, homegrown implementation of the MaximaPool API.
It is written in go and has less startup time and memory utilization than the java implementation.
Internally, it works by forking new maxima processes from an initial mother process instead of starting a new one each time, saving startup time and memory (because the memory is shared between the forked maximas). goemaxima is using precompiled maxima.
It is put into a docker container so that it can be used by kubernetes.
For security, each forked process gets its own user and after execution, every process with a given user is killed.
Also, in the kubernetes cluster outbound internet access is disabled for processes in the container.
It has been tested both on ilias and moodle and seems to work without problems.
The source is available at https://github.com/mathinstitut/goemaxima.
The Docker images are available on the docker hub at mathinstitut/goemaxima:[STACKMAXIMA-VERSION]-latest where [STACKMAXIMA-VERSION] is replaced with the corresponding stackmaxima version found in the table above.
You can run the docker image with
docker run --restart always --tmpfs /tmp -p [HOSTPORT]:8080 mathinstitut/goemaxima:[STACKMAXIMA-VERSION]-latest
where [STACKMAXIMA-VERSION] is again the version and [HOSTPORT] is the host and port separated by a colon.
For example, if you were to deploy goemaxima with stackmaxima version 2020070100 on port 80 of host 192.0.2.10, one would run
docker run --restart always -p 192.0.2.10:80:8080 mathinstitut/goemaxima:2020070100-latest.
The URL that would be input into stack is then http://192.0.2.10:80/maxima/ (including the trailing slash).
In the docker image, the libraries stats, distrib, descriptive, simplex are loaded.
Some Prometheus statistics are exported on /metrics, and some debug information can be logged by setting the environment variable GOEMAXIMA_DEBUG=1.
[]{#Some-Hints}
[]{#Setup-Maxima-Server-Connection}
- ILIAS{.wiki-page}
[]{#Cluster-not-reachable}
Each URL from the table above gives an answer:
> curl http://2017121800.maxima.math.uni-goettingen.de/goemaxima
Hostname: maxima-2017121800-i5zw4y-helmgomaxima-945c89d68-fgvzf, version: 1.1.0
First check this with curl on the command line of your ILIAS- or Moodle-Installation.
If this not work you either has problem with DNS or with a firewall. Port 80 has to be open for requests from your machine.
If it works but not from the setup in ILIAS or Moodle, there is a problem with DNS in php.
Perhaps the user running ILIAS or Moodle can not read /etc/resolv.conf because this name is a link to an other file.
[]{#Support-and-Error-Notices}
Please use our ticketsystem for the Mathematische Institut. You need an account for https://projects.gwdg.de . Any account works, even the account as member of this project (Netzwerk-Mathe-Digital).
See for details how to get an account: https://projects.gwdg.de/projects/netzwerk-mathe-digital/wiki/projects-using-guide
Please ask for support and put your error notices here by creating a workpackage. A usefull subject and a small description is enough. We will ask for details and fill in all other items.
https://projects.gwdg.de/projects/intranet_math/work_packages
[]{#Depricated-Public-Maxima-Pool-with-DockerSwarm}
Note: this domain should no longer be used and will be shut down some time in the future
http://maxima.uni-math.gwdg.de:8765/MaximaPool/MaximaPool
We are going to use Kubernetes to scale dynamicly and to avoid DockerSwarm Bugs.
We can map on request this address to a address in Kubernetes but we prefer if you use the new address sheme.
[]{#Depricated-MaximaPool-Docker-Image-Mathematisches-Institut-University-Goettingen}
The docker image follows the image of University Halle
(https://github.com/uni-halle/maximapool-docker/tree/stack-2017121800).
The image works with
Stack 2017121800
Maxima 5.41.0-Linux
You can start the image on a local server with amd64 architecture using the following command:
docker run -d --name "pool" --rm -e MAXIMAPOOL_ADMIN_PASSWORD=TEST123 -p IP:8765:8080 mathinstitut/pool_amd64:latest
$IP means address of a network interface
http://:8765$IP/MaximaPool/MaximaPool
[]{#Praesentation-20200427-International-STACK-Conference}
see file below
[]{#stack-aufgaben-formel-entwickeln}
Da man in Stack nicht nur Werte, sondern auch Formeln abfragen kann, geht es natürlich auch ziemlich einfach, dass man eine Frage schrittweise stellt und erst einmal nach der Formel fragt und dann einsetzen lässt, so wie hier:
[]{#stack-aufgaben-mit-einheiten} []{#stack-aufgaben-mit-einheiten}
Wird als Eingabetyp Einheiten gewählt, so kann die Antwort der Studierenden auf die korrekte Verwendung von Einheiten überprüft werden.
Zu beachten ist hierbei, dass STACK nur SI-Einheiten unterstützt.
Um eine Antwort auch hinsichtlich der Einheit zu prüfen, muss als Musterlösung die vollständige Antwort inklusive Einheiten eingegeben werden.
Außerdem muss im PRT eine entsprechende Antwortüberprüfung (mit „Units" beginnend) gewählt werden (beispielsweise UnitsAbsolute).
Die korrekte TeacherAnswer (TAns) muss ebenfalls inklusive Einheit angegeben werden. In den Antwortoptionen muss außerdem der Toleranzbereich für die Antwort eingegeben werden, der sich auf den numerischen Teil der Antwort bezieht. (Die Eingabe 0.1 für die Antwortüberprüfung UnitsAbsolute bedeutet dabei, dass TAns+/- 0,1 als richtige Antwort akzeptiert wird).
Einheiten müssen mit Sternchen zur Multiplikation eingegeben werden (also z. B. 7*m), darauf sollte man hinweisen oder entsprechend einstellen, dass Sternchen für Leerzeichen und/oder implizite Multiplikation automatisch eingefügt werden.
Die TeacherAnswer sollte in den Aufgabenvariablen mittels stackunits(Wert, Einheit) angegeben werden, um keine überflüssigen Multiplikationpunkte im automatischen Feedback zu erhalten.
Weitere Informationen sind in der offiziellen Dokumentation (englisch) zun finden: https://github.com/maths/moodle-qtype_stack/blob/master/doc/en/Authoring/Units.md
https://www.academic-moodle-cooperation.org/dokumentation/
[]{#stack-aufgaben-mit-jsxgraph} []{#stack-aufgaben-mit-jsxgraph}
Wenn man lernen möchte, wie man Aufgaben mit interaktiven Graphiken mit JSXGraph erstellen kann, sollte man am besten mit dem Tutorial darüber im Moodle-Kurs https://moodle.ruhr-uni-bochum.de/m/course/view.php?id=13674 beginnen. Dort lernt man schon viel über Slider und Glider und was man damit anstellen kann.
Wenn man sich dann noch das Wiki der Uni Bayreuth zu JSXGraph http://jsxgraph.uni-bayreuth.de/wiki/index.php/Main_Page daneben legt, kann man ziemlich schnell auch schöne Aufgaben bauen, wo Punkte identifiziert werden sollen.
Zu beachten ist, dass dies so einfach nur für Moodle geht. Für Ilias ist momentan noch ein Workaround mit einer extra HTML-Seite nötig.
Als Beispiel soll diese Aufgabe dienen (XML siehe bei den Dateien):
Dazu muss man einige Variable zuweisen, in den Maxima-Variablen sind hier var1 als Realteil und var2 als Imaginärteil gespeichert.
Die JSXGraph-Anweisungen schreibt man direkt in den Aufgabentext, dazu bitte den WYSIWIG-Editor ausschalten und auf den HTM-Editor wechseln.
[[jsxgraph input-ref-ans1="stateRef"]]
// Create the board
var board = JXG.JSXGraph.initBoard(divid, {boundingbox: [-1.7, 1.5, 1.7, -1.5], axis: false, showNavigation: false, keepaspectratio: true, showCopyright:false });
// Create the JSXGraph-elements
var xaxis = board.create('axis', [[0,0], [1,0]], {name:'Re', withLabel: true, label: {position: 'rt', offset: [-15, 20] } });
var yaxis = board.create('axis', [[0,0], [0,1]], {name:'Im', withLabel: true, label: {position: 'rt', offset: [-20, 0] } });
var z1 = board.create('point', [{#var1#},{#var2#}],{style:5,color:'red',name:'z_1',fixed:true});
var z2 = board.create('point', [1,1], {style:5,color:'blue',name:'z_2', snapToGrid:false, snapSizeX:1, snapSizeY:1});
stack_jxg.bind_point(stateRef, z2);
var p = board.create('point', [0,0],{name:' ',size:0});
var q = board.create('point', [0,1],{name:' ',size:0});
var circ = board.create('circle', [p, q]);
// Create an empty curve
var ticks = board.create('curve', [[0], [0]], {strokeWidth: 1,
strokeColor: 'blue',
strokeOpacity: 0.5});
// Make ticks out of the curve
ticks.updateDataArray = function() {
var cx = circ.center.X(),
cy = circ.center.Y(),
r = circ.Radius(),
i,
ticklen = 0.07, // Length of ticks in user space coordinates
steps = 24, // Number of ticks
d = ticklen * 0.5,
alpha = 2 * Math.PI / steps;
this.dataX = [];
this.dataY = [];
for (i = 0; i < steps; i++) {
// Start of a tick
this.dataX.push( cx + (r - d)* Math.cos(i * alpha) );
this.dataY.push( cy + (r - d) * Math.sin(i * alpha) );
// End of tick
this.dataX.push( cx + (r + d) * Math.cos(i * alpha) );
this.dataY.push( cy + (r + d) * Math.sin(i * alpha) );
// Interrupt the curve
this.dataX.push( NaN );
this.dataY.push( NaN );
}
};
board.update();
board.unsuspendUpdate();
[[/jsxgraph]]
Auf die Variablen greift man innerhalb der JSXgraph-Umgebung mit {#var1#},{#var2#}] zu.
Durch den Start mit\
[[jsxgraph input-ref-ans1="stateRef"]]
und dann\
var z2 = board.create('point', [1,1], {style:5,color:'blue',name:'z_2', snapToGrid:false, snapSizeX:1, snapSizeY:1});
stack_jxg.bind_point(stateRef, z2);
gibt man bekannt, dass die Antwort ans1 der Status (also die Koordinaten des Punktes z2 sind.
Wir schließen den Aufgabentext ab mit\
<div style="display:none;">[[input:ans1]][[validation:ans1]]</div>
und verstecken damit das Eingabefeld.
Als Input ist Numerische Eingabe eingestellt, der Text ist NumRelative mit Option 0.05 (also 5 % Abweichung sind vorgegeben - das schafft man ganz gut durch die Platzierung mit der Maus.)
[]{#stack-wiki-doku} []{#STACK-Wiki-Doku}
[]{#stack-aufgaben-mit-einheiten}
[]{#stack-aufgaben-mit-jsxgraph}
[]{#stack-aufgaben-formel-entwickeln}
[]{#studiengang-mathematik}
[]{#systeme}
Übersicht über Online-Mathematik-Testsysteme{.external}
Unterseiten für einzelne Systeme:
[]{#tagungen}
[Table of Contents](javascript:)
[]{#3rd-international-STACK-conference}
Zeit: Monday 27th, Tuesday 28th of April 2020
Ort: TTK University of Applied Sciences (TTK UAS), Tallinn, Estonia
https://sites.google.com/tktk.ee/27-28april2020tallinnestonia/
[]{#Math-Instiut-Goettingen}
[]{#Vortraege-Skalierbarer-MaximaPool}
Mit Gitlab DockerSwarm steuern (Martin Heide, Lennart Kramer)
Folien: http://www.java.de/media/dockerswarm.pdf
Von DockerSwarm zu Kubernetes (Lennart Kramer)
Folien: http://www.java.de/media/kubernetes.pdf
[]{#Workshop-Skalierbarer-MaximaPool-mit-Kubernetes}
Zeit: Mi. 26.02.2020 13-18 Uhr, Do. 27.02.2020 09-17 Uhr
Detailplanung
Mi. 26.02.2020 13-18 Uhr:
Skalierbarer Maximapool mit Kubernetes, Rancher und Gitlab. (Lennart Kramer, Math. Institut Uni Goettingen)
Do. 27.02.2020 09-17 Uhr
Java und Kuberentes (Markus Karg, Pforzheim)
https://headcrashing.wordpress.com/
Ort: Mathematisches Institut, Bunsenstr. 3-5 , 37073 Goettingen Multimediaraum
Kosten: Fuer den Workshop keine. Getraenke und kleine Snacks wird es auch geben.
[]{#Hochschule-Hannover-22052019}
[]{#Vortrge}
[]{#themen} []{#Themen-Ideen-bitte-ergnzen}
[]{#wiki-netzwerk}
Das Netzwerk Mathe Digital ist ein gemeinsame Plattform von verschiedenen Initiativen im Bereich Mathematik&eLearning.
[]{#Dokumente}
Info-PDF: https://projects.gwdg.de/attachments/8325/MDInfo.pdf
[]{#Unterprojekte}
[]{#Core-Group-httpsprojectsgwdgdeprojectscore-group}
Dieses Projekt dient zur internen Koordinierung der Manager des Projektes.
[]{#wiki-working-guide}
[Table of Contents](javascript:)
[]{#Kurzeinfuehrung-der-GWDG}
https://projects.gwdg.de/projects/manual/wiki/quickstart
[]{#Neue-Wikiseiten}
Neue Wikiseiten entstehen durch:
[]{#Eingabe-auf-Wikiseite}
[[wikiseite]]
Dabei werden die Seiten nicht hierarchisch eingeordnet und die Schreibweise ist Kleinbuchstaben.
Beides kann durch eine Menuepunkt unter dem Reiter Mehr auf der Wikiseite geaendert werden. []{#Durch-Reiter-Wiki-Seite}
Dabei wird die Seite hierarchisch eingeordnet und die Schreibweise bleibt wie vorgegeben.
[]{#Standardinhalt}
[]{#Header}
Jede Wikiseite sollte den Standardheader inkludieren.\
{{ $root.DOUBLE_LEFT_CURLY_BRACE }}include(header)}}
Er kann hier veraendert werden : header{.wiki-page}
[]{#Inhaltsverzeichnis}
Ein Inhaltsverzeichnis einer einzelnen Wikiseite erhaelt man mit:\
{{ $root.DOUBLE_LEFT_CURLY_BRACE }}toc}}
Aufgelistete werden Ueberschriften, die mit h1. h2. usw. beginnen.
Die Liste aller Wikiseiten erhaelt man ueber den Reiter mehr und den Menuepunkt Inhaltsverzeichnis .
Dort wird auch die hierarchische Ordnung der Wikiseiten angezeigt.
Achtung!: Den Menuepunkt gibt es nur bei hierarchisch eingeordneten Seiten.
[]{#Suchen}
In der obersten Menuezeile von projects steht rechts das Suchsymbol. Wenn man im Wiki ist, sucht er nur im Wiki, sonst im ganzen Projekt.
[]{#wirtschaftsinformatik}
[]{#wirtschaftswissenschaften}
[]{#zurucknavigieren-wahrend-eines-tests-verhindern}
Frage:
Wie kann man bei aufeinander aufbauenden Fragen verhindern, dass Studierende aus der Aufgabenstellung einer Folgefrage die richtige Antwort einer vorherigen Frage ableiten können und diese später korrigieren?
Lösung:
In den Einstellungen eines Tests kann die folgenden Option gesetzt werden:
"Fragenanordnung" --> "Navigation": "Vorgegeben"
Dadurch kann man zwischen den Seiten innerhalb von einem Test nicht mehr zurück navigieren.
Eine zweite interessante Option ist:
"Frageverhalten": "Direkte Auswertung"
Damit kann man einstellen, dass Fragen während der Bearbeitung des Tests bereits geprüft werden.
Setup-Maxima-Server-Connection
Due to a limitation with autoscaling and forwarding POST parameters, each stack version has its own URL. Generally, the format of the URL is stack-maxima.service.rancher.gwdg.de/STACKMAXIMA-VERSION/goemaxima, where STACKMAXIMA-VERSION corresponds to the version of stackmaxima (as seen in the table below).
The goemaxima server is our own, homegrown implementation of the MaximaPool API.
It is written in go and has less startup time and memory utilization than the java implementation.
Internally, it works by forking new maxima processes from an initial mother process instead of starting a new one each time, saving startup time and memory (because the memory is shared between the forked maximas). goemaxima is using precompiled maxima.
It is put into a docker container so that it can be used by kubernetes.
For security, each forked process gets its own user and after execution, every process with a given user is killed.
Also, in the kubernetes cluster outbound internet access is disabled for processes in the container.
It has been tested both on ilias and moodle and seems to work without problems.
The GWDG Goettingen (https://gwdg.de) offers IT-services for the Univerisity Goettingen and the Max-Planck Society Germany. Further on members and associates of other universities in Lower Saxony, national universities outside of Lower Saxony or other institutions in the aerea of research or education are allowed to use the services by special arrangements. The GWDG offers a goemaxima cluster for universities and schools according to special arrangements. A maximapool instance is not supported on the GWDG cluster.
Here is a table of stack/ilias versions and the corresponding server URLs:
--------------- ---------------------- ------------------- ----------------------------------------------------------
Ilias Version Moodle Stack Version Stackmaxima Build goemaxima
- 4.2.1 2018080600 `stack-maxima.service.rancher.gwdg.de/2018080600/goemaxima`
6-or-7 4.2.2a 2019090200 `stack-maxima.service.rancher.gwdg.de/2019090200/goemaxima`
- 4.3.1 2020042000 `stack-maxima.service.rancher.gwdg.de/2020042000/goemaxima`
- 4.3.2 2020052700 `stack-maxima.service.rancher.gwdg.de/2020052700/goemaxima`
- 4.3.3 2020061000 `stack-maxima.service.rancher.gwdg.de/2020061000/goemaxima`
- 4.3.4 2020070100 `stack-maxima.service.rancher.gwdg.de/2020070100/goemaxima`
- 4.3.6 2020100900 `stack-maxima.service.rancher.gwdg.de/2020100900/goemaxima`
- 4.3.7 2020101501 `stack-maxima.service.rancher.gwdg.de/2020101501/goemaxima`
- 4.3.8 2020120600 `stack-maxima.service.rancher.gwdg.de/2020120600/goemaxima`
7-DEV 4.3.10 2021120900 `stack-maxima.service.rancher.gwdg.de/2021120900/goemaxima`
- 4.3.11 2022060100 `stack-maxima.service.rancher.gwdg.de/2022060100/goemaxima`
- 4.4.0 2022071300 `stack-maxima.service.rancher.gwdg.de/2022071300/goemaxima`
- 4.4.1 2022082900 `stack-maxima.service.rancher.gwdg.de/2022082900/goemaxima`
- 4.4.2 2023010400 `stack-maxima.service.rancher.gwdg.de/2023010400/goemaxima`
- 4.4.3 2023052400 `stack-maxima.service.rancher.gwdg.de/2023052400/goemaxima`
- 4.4.4 2023060500 `stack-maxima.service.rancher.gwdg.de/2023060500/goemaxima`
- 4.4.5 2023072101 `stack-maxima.service.rancher.gwdg.de/2023072101/goemaxima`
--------------- ---------------------- ------------------- ---------------------------------------------------------
The Docker images are available on the docker hub at mathinstitut/goemaxima:[STACKMAXIMA-VERSION]-latest where [STACKMAXIMA-VERSION] is replaced with the corresponding stackmaxima version found in the table above. You can run the docker image with
docker run --restart always --tmpfs /tmp -p [HOSTPORT]:8080 mathinstitut/goemaxima:[STACKMAXIMA-VERSION]-latest
where [STACKMAXIMA-VERSION] is again the version and [HOSTPORT] is the host and port separated by a colon.
For example, if you were to deploy goemaxima with stackmaxima version 2020070100 on port 80 of host 192.0.2.10, one would run
docker run --restart always -p 192.0.2.10:80:8080 mathinstitut/goemaxima:2020070100-latest.
The URL that would be input into stack is then http://192.0.2.10:80/maxima/ (including the trailing slash).
In the docker image, the libraries stats, distrib, descriptive, simplex are loaded.
Some Prometheus statistics are exported on /metrics, and some debug information can be logged by setting the environment variable GOEMAXIMA_DEBUG=1.
The source is available at https://github.com/mathinstitut/goemaxima.
Via work packages: https://projects.academiccloud.de/projects/netzwerk-mathe-digital/work_packages Everybody, logged in at Academic Cloud, can do this. Please adjust yout notifications to get all the messages about your work packages: https://projects.academiccloud.de/my/notifications
Each URL from the table above gives an answer:
> curl http://2017121800.maxima.math.uni-goettingen.de/goemaxima
Hostname: maxima-2017121800-i5zw4y-helmgomaxima-945c89d68-fgvzf, version: 1.1.0
First check this with curl on the command line of your ILIAS- or Moodle-Installation.
If this not work you either has problem with DNS or with a firewall. Port 80 has to be open for requests from your machine.
If it works but not from the setup in ILIAS or Moodle, there is a problem with DNS in php.
Perhaps the user running ILIAS or Moodle can not read /etc/resolv.conf because this name is a link to an other file.
The following commands work with all docker container:
docker top [container name] aux
docker stats [container name]
The goemaxima container is prepared for using grafana for metrics. Instead of using grafana you can get the metrics via curl:
curl http://[container-url:port]/metrics
The port is the same you are using for STACK.
Setup-Maxima-Server-Connection
=================================================================================================================================
First-Step-Install-Plugin
Configure-Plugin
Platform type: Server
Plot command: gnuplot
Server URL
Health-Check
Hints
setup-maxima-server-connection-ilias53
Maxima command: (choose one of the list :
setup-maxima-server-connection-ilias54
ILIAS 5.4 and later allows you to add a list of servers. You can choose
the active one. If more then one is active, the system will pick one at
random. There is no check whether one system is work.
Maxima command: (choose one of the list :
https://stack-teaching.slack.com
Invitations ask: stefan.koospal@mathematik.uni-goettingen.de
Performance Measurement goemaxima-container
\* 15.07.2022 Goettingen
Hier noch einmal die Links zu Jupyter-Notebooks, die ich während des Treffens im Chat gepostet hatte.
Ingo Dahn (dahn@vcrp.de)
Das Netzwerk Mathe Digital ist ein gemeinsame Plattform von verschiedenen Initiativen im Bereich Mathematik&eLearning.
* AK Mathe Digital https://www.ruhr-uni-bochum.de/ak-mathe-digital/
* NetMath https://netmath.de
* SIG Mathe Digital (ILIAS) https://docu.ilias.de/goto_docu_grp_5183.html