%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 clone
auf 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_id
in den Sourcen unterauthors.yaml
ein.default_lang: de
beeinflusst diedoit
Befehle weiter unten.Erstelle eine Verzeichnis (parallel zum existierenden
r
Verzeichnis) 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.yaml
unddodo.py
):
doit -kd. new
erzeugt ein Übungsverzeichnis. Dort kannst du manuell die anderen Dateien erzeugen.
doit -kd. problem
erzeugt ein Übungsverzeichnis und dort__init__.py
und<default_lang>.html
. Fügeen.html
und möglicherweise andere Sprachdateien manuel hinzu. Entferne__init__.py
, wenn es keinen Code braucht.
doit -kd. rst
erzeugt ein Übungsverzeichnis und<default_lang>.rst
. Nach dem Editieren wandeltdoit -kd. html
diese in eine HTML Template Datei um. Generierte Dateien fangen mit einem Unterstrich_
an, Sphinx generiert z.B._de.html
vonde.rst
.
__init__.py
enthält die Funktionengiven
undcalc
und optionalnorm
,equal
,points
undnames
. (siehefrom_py
inhlp.py
und Beispiele imr
-Verzeichnis).
<sprache>.html
ist HTML und mit{{'{{}}'}}
umgebener oder mit%
anfangende Python Code (SimpleTemplate). Verwende auch das templatesgetorshow
wie in den Beispielen imr
-Verzeichnis. Das generierte HTML wird dann mit einem<div>
umgeben werden (sieheinc
inutil.py
).In
<sprache>.rst
kann maninl
zum Einfügen (inlining) anderer Übungen undlnk
zum referenzieren verwenden (sieheinl.py
und Beispiele imr
-Verzeichnis).Die ersten Zeilen der Sprachdateien sind folgende, wobei
<kind>
ein sprachspezifische Zeichenkette auskind.py
ist
level
als 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 mamchecker
auf 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. initdb
muss man ausführen, uminitdb.py
zu 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 push
um die Änderungen auf dein github fork zu übertragen.Es gibt eine Test Script das du lokal ausführen kannst. In der Kommandozeile wo
dodo.py
liegt, 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.