%path = "mitmachen" %kind = kinda["Meta"] %level = 0
Zum mitmachen brauchst du folgendes Wissen
etwas HTML
etwas Python (mit numpy und sympy)
möglicherweise Javascript
grundsätzliches Verständnis der verwendeten SW Tools.
Wenn du etwas Vertraut mit Linux bist, verwende es, vielleicht mittels
eines virtuellen PCs wie etwa Virtualbox.
Dann kannst due git und die andere SW mit weniger Problemen betreiben
(z.B. einfache Installation mit Packetmanagern, Unterstützung von Symlinks, …).
Aber auch unter Windows und Mac gibt es alle notwendigen Tools.
Zur Zusammenarbeit wird github verwendet. Die Übungen enthalten Python Code (auch in den Templates), weshalb eine Handhabung wie Code, angebracht ist. Dass ein zweiter den Code überprüft, ist aus Sicherheitsgründen notwendig.
Auf deinem PC brauchst du
Git (msys git unter Windows). Einleitung
Python mit pip (Python 3 wird von Google Appengine noch nicht unterstützt.)
Doit (pip install doit)
Pytest zum Testen (pip install pytest)
und optional
Sphinx,
wenn du Restructured Text (rst) verwenden willst.
(pip install sphinx).
Latex (use miktex unter Windows) für sphinx plugins (sphinxcontrib.tikz, sphinxcontrib.texfigure).
Coverage (pip install coverage)
Als Browser hat Chrome die beste HTML5 Unterstützung und eine gute Umgebung zum Debuggen von Javascript.
Zum editieren verwende einen Texteditor deiner Wahl. Er sollte es ermöglichen ausgewählten Code auszuführen (Pydev, Vim).
Fork auf github.
Verwende deinen Browser, um Mamchecker auf github zu verzweigen (fork).
Im Terminal (msys bash unter Windows) auf deinem PC mache
git cloneauf das ‘geforkte’ Mamchecker, um es auf ein lokales Verzeichnis zu übertragen:git clone --recursive https://github.com/mamchecker/mamchecker.gitWenn du nicht –recursive verwendet hast, dann must du anschließend git submodule update –init –recursive machen.
Trage dich als Author ein.
Trage dich selbst als Author mit einer
author_idin den Sourcen unterauthors.yamlein.default_lang: debeeinflusst diedoitBefehle weiter unten.Erstelle eine Verzeichnis (parallel zum existierenden
rVerzeichnis) mit der Authoren-ID als Name (Authorenverzeichnis).
Füge Übungen hinzu. Um zu sehen, wie einfach das ist, schau dir die Beispiele im r Verzeichnis an.
Füge ein Verzeichnis unter dem Authorenverzeichnis hinzu und erstelle dort
__init__.py,en.html,de.html, … then edit. Verwende dazudoit; es generiert die nächste ID und verwendet sie zum Erzeugen des Übungsverzeichnisses (siehenextids.yamlunddodo.py):
doit -kd. newerzeugt ein Übungsverzeichnis. Dort kannst du manuell die anderen Dateien erzeugen.
doit -kd. problemerzeugt ein Übungsverzeichnis und dort__init__.pyund<default_lang>.html. Fügeen.htmlund möglicherweise andere Sprachdateien manuel hinzu. Entferne__init__.py, wenn es keinen Code braucht.
doit -kd. rsterzeugt ein Übungsverzeichnis und<default_lang>.rst. Nach dem Editieren wandeltdoit -kd. htmldiese in eine HTML Template Datei um. Generierte Dateien fangen mit einem Unterstrich_an, Sphinx generiert z.B._de.htmlvonde.rst.
__init__.pyenthält die Funktionengivenundcalcund optionalnorm,equal,pointsundnames. (siehefrom_pyinhlp.pyund Beispiele imr-Verzeichnis).
<sprache>.htmlist HTML und mit{{'{{}}'}}umgebener oder mit%anfangende Python Code (SimpleTemplate). Verwende auch das templatesgetorshowwie in den Beispielen imr-Verzeichnis. Das generierte HTML wird dann mit einem<div>umgeben werden (sieheincinutil.py).In
<sprache>.rstkann maninlzum Einfügen (inlining) anderer Übungen undlnkzum referenzieren verwenden (sieheinl.pyund Beispiele imr-Verzeichnis).Die ersten Zeilen der Sprachdateien sind folgende, wobei
<kind>ein sprachspezifische Zeichenkette auskind.pyist
levelals letztes kommt und das Schuljahr beginnend von Grundschule meint (1, 2, … )
- for
<lang>.rst:: .. raw:: html%path = “pfad/um/hierarchische/Ordnung/zu/erzeugen”%kind = kinda[“<kind>”]%level = 0<!– html –>.. role:: asis(raw):format: html latex- for
<lang>.html:: %path = “path/to/create/a/hierarchical/order”%kind = kinda[“<kind>”]%level = 9Von oberhalb dem Verzeichnis, wo app.yaml ist, rufe
dev_appserver mamcheckerauf und teste deine Übung mit dem Browser (http://localhost:8080/de/?<yourid>.<problemid>). Gib dazu unsinnige Eingaben ein, fast korrekte und korrekte.
Mach dich bereit für das commit:
doit -kd. initdbmuss man ausführen, uminitdb.pyzu generieren, welche die Inhaltsübersicht erzeugt.In deiner lokalen Kommandozeile im Mamchecker Verzeichnis mache
git status
git diff
git commit -am "in english write what you did"
git pushum die Änderungen auf dein github fork zu übertragen.Es gibt eine Test Script das du lokal ausführen kannst. In der Kommandozeile wo
dodo.pyliegt, mache:
doit test.Das testet mehr als notwendig ist, wenn du nur eine Übung hinzugefügt hast. Aber mache es, wenn du sonstige Änderungen im Code gemacht hast.
Füge deinen Betrag zur Sammlung hinzu.
In deinem Browser kannst du einen pull request erzeugen, damit alle Beiträge zusammen kommen.