Dodona ist eine Online -Trainingsplattform zum Code lernen . Es möchte den Schülern beibringen, wie man auf sinnvollste und effektivste Weise programmiert wird. Dodona fungiert als Online-Co-Lehrer , der jedem Schüler Zugang zu qualitativ hochwertiger Bildung gewährt. Der Fokus liegt auf automatischen Korrekturen und auf aussagekräftigem Feedback zu den eingereichten Lösungen von Studenten.
Dieses Repository enthält den Quellcode der Webanwendung. Wenn Sie nur Dodona verwenden möchten, gehen Sie bitte zu https://dodona.be.
Die Dokumentation für Endbenutzer finden Sie unter https://docs.dodona.be.
Dodona ist frei für Schulen und wir möchten es so halten! Das Aufhalten dieser Plattform in Betrieb genommen ist viel Zeit, genau wie die Unterstützung von Hunderten von Schulen und Tausenden von Schülern. Wenn Sie Dodona finanzieren möchten, finden Sie weitere Informationen unter https://dodona.be/en/support-us/ oder setzen sich mit uns in Verbindung, indem Sie uns per E-Mail an [email protected] senden.
Es gibt verschiedene Möglichkeiten, uns zu kontaktieren:
Wenn Sie bei der Entwicklung helfen möchten, sind Probleme mit dem Student Label ein guter Ausgangspunkt.
mysql oder mariadb .mysql verwenden, ändern Sie den sql-mode im Konfigurationsblock mysqld : sql-mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
dodona -Benutzer mit Zugriff auf die Datenbanken dodona und dodona_test-N . Sie benötigen so viele Testdatenbanken, wie Sie CPU -Threads haben. CREATE USER ' dodona '@ ' localhost ' IDENTIFIED BY ' dodona ' ;
GRANT ALL ON dodona. * TO ' dodona ' @ ' localhost ' ;
GRANT ALL ON dodona_test. * TO ' dodona ' @ ' localhost ' ;
GRANT ALL ON ` dodona_test-0 ` . * TO ' dodona ' @ ' localhost ' ;
...
GRANT ALL ON ` dodona_test-N ` . * TO ' dodona ' @ ' localhost ' ;ruby -Version mit RVM (die derzeit verwendete Version finden Sie hier).node mit nvm und Garn (jede moderne Knotenversion sollte dies tun).bundle install und yarn installrails db:setup . (Wenn mit der Datenbank etwas schief geht, können Sie rails db:reset , um die Datenbank zu fallen, wieder aufzubauen und neu zu erstellen.) Wenn der Fehler "Python -Richter nicht initialisieren kann" entsteht, verwenden Sie SKIP_PYTHON_JUDGE=true rails db:setupbin/server aus, um den Server zu starten. Weitere Informationen zum Starten des Entwicklungsaufbaus finden Sie hier. Dodona wird in einer Subdomain von Localhost erhältlich sein: http: //dodona.localhost: 3000.Diese Schritte sind nicht erforderlich, um den Server auszuführen, aber Sie müssen Docker tatsächlich bewerten.
docker .docker pull dodona/dodona-pythonWenn Sie die Docker -Bilder selbst erstellen möchten:
build.sh -Skripte erstellen alle Bilder. Mit den anfänglichen Daten wird jedoch nur dodona-python benötigt. Sie können dieses Bild mit docker build --pull --force-rm -t "dodona-python" -f "dodona-python.dockerfile" . . Diese Schritte sind nicht erforderlich, um den Server auszuführen, sondern werden benötigt, um die Visualisierungen laden zu lassen.
memcached installieren und starten.tmp/caching-dev.txt im Stamm des Projekts. Einige Edelsteine und Abhängigkeiten (z. B. Memcached) funktionieren nicht unter Windows. Sie sollten stattdessen WSL 2 verwenden und alles in WSL ausführen. Dies bedeutet, dass Sie WSL für die Datenbank, Memcached, Git, Docker usw. verwenden.
Der einfachste Weg, um den Server zu starten, ist der Befehl rails s . Dies wird jedoch nicht die Einreichungswarteschlange verarbeiten, und JavaScript wird von WebPack im Hintergrund zusammengestellt (ohne Ausgabe, wenn etwas schief geht).
bin/delayed_job start gestartet werden.yarn build:css --watch Ihr CSS wird live neu geladen (verwenden Sie ohne das Flag --watch -Flag, wenn Sie die Stylesheets erstellen müssen und das Live -Reload nicht gesucht wird).yarn build:js --watch Ihr JavaScript wird live neu geladen (verwenden Sie ohne das Flag --watch -Flag, wenn Sie das JavaScript erstellen müssen und das Live -Reload nicht gesucht wird). Um den Rails -Server, den verzögerten Job, den CSS -Bundling und die JS -Bündelung gleichzeitig zu starten, führen Sie einfach bin/server aus.
Dies hat eine Enttäuschung: Debugging mit byebug ist gebrochen.
Dodona verwendet Subdomains, um die Beschreibungen des Trainings zu sandkasten (bei denen es sich um willkürliche HTML -Seiten handelt und für böswillige Zwecke verwendet werden kann, wenn sie nicht ordnungsgemäß sandkäfig sind). Wir dienen der Hauptanwendung in der Entwicklung von http: //dodona.localhost: 3000 und Übungsbeschreibungen von http: //sandbox.localHost: 3000.
Wenn dies nicht über das Feld funktioniert, können Sie Ihre /etc/hosts -Datei die folgenden Zeilen hinzufügen:
127.0.0.1 dodona.localhost
127.0.0.1 sandbox.localhost
Um den Code zu finsen, führen Sie rubocop für Ruby und yarn lint für JavaScript aus.
Wir haben Tests in JavaScript-, Ruby- und Systemtests:
yarn test ausbundle exec rails test:systembundle exec rails test aus Es gibt auch einen Typ -Scheck für Code, der in TypeScript geschrieben wurde. Dies kann mit yarn typeCheck ausgeführt werden.
Tipps
PARALLEL_WORKERS Env Var, um die Anzahl der zu verwendenden Threads anzugeben.TestProf , um die Ruby -Tests zu profilierenbundle exec rails test filename , um eine einzelne Testdatei auszuführen. Verwenden Sie bundle exec rails test filename:linenumber um einen bestimmten Test auszuführen