Dodona est une plate-forme d'exercice en ligne pour apprendre à coder . Il veut enseigner aux étudiants comment programmer de la manière la plus significative et la plus efficace possible. Dodona agit en tant que co-enseignant en ligne , conçue pour donner à chaque élève un accès à une éducation de haute qualité. L'accent est mis sur les corrections automatiques et à donner des commentaires significatifs sur les solutions soumises des étudiants.
Ce référentiel contient le code source de l'application Web. Si vous voulez simplement utiliser Dodona, veuillez vous rendre sur https://dodona.be.
La documentation des utilisateurs finaux se trouve sur https://docs.dodona.be.
Dodona est libre à utiliser pour les écoles et nous aimerions le garder ainsi! Garder cette plate-forme en marche prend beaucoup de temps, tout comme soutenir des centaines d'écoles et des milliers d'élèves. Si vous souhaitez financer Dodona, vous pouvez trouver plus d'informations sur https://dodona.be/en/support-us/ ou contacter en nous envoyant un e-mail à [email protected].
Il existe plusieurs façons de nous contacter:
Si vous souhaitez aider avec le développement, les problèmes marqués avec l'étiquette des étudiants sont un bon point de départ.
mysql ou mariadb .mysql , modifiez le sql-mode dans le bloc de configuration mysqld : sql-mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
dodona avec accès aux bases de données dodona et dodona_test-N . Vous aurez besoin autant de bases de données de test que de threads CPU. 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 correcte à l'aide de RVM (la version actuellement utilisée peut être trouvée ici).node correcte à l'aide nvm et du fil (toute version de nœud moderne doit faire).bundle install et yarn installrails db:setup . (Si quelque chose ne va pas avec la base de données, vous pouvez utiliser rails db:reset pour abandonner, reconstruire et réensemble la base de données.) Si l'erreur "ne pouvait pas initialiser le juge Python" survient, utilisez SKIP_PYTHON_JUDGE=true rails db:setupbin/server pour démarrer le serveur. Plus d'informations sur la façon de démarrer la configuration de développement peuvent être trouvées ici. Dodona sera disponible sur un sous-domaine de localhost: http: //dodona.localhost: 3000.Ces étapes ne sont pas nécessaires pour exécuter le serveur, mais vous avez besoin de Docker pour évaluer réellement les exercices.
docker .docker pull dodona/dodona-pythonSi vous souhaitez construire les images Docker vous-même:
build.sh créent toutes les images. Mais avec les données initiales, seule dodona-python est nécessaire. Vous pouvez construire cette image avec docker build --pull --force-rm -t "dodona-python" -f "dodona-python.dockerfile" . . Ces étapes ne sont pas nécessaires pour exécuter le serveur, mais sont nécessaires pour laisser les visualisations se charger.
memcached .tmp/caching-dev.txt à la racine du projet. Certains joyaux et dépendances (comme Memcached) ne fonctionnent pas sur Windows. Vous devez utiliser WSL 2 à la place et exécuter tout à l'intérieur de WSL. Cela signifie que vous utilisez WSL pour la base de données, memcached, git, docker, etc.
La façon la plus simple de démarrer le serveur est avec la commande rails s Mais cela ne traitera pas la file d'attente de soumission, et JavaScript sera compilé par WebPack en arrière-plan (sans sortie lorsque quelque chose ne va pas).
bin/delayed_job start .yarn build:css --watch votre CSS est rechargé en direct (utilisez sans l'indicateur --watch watch lorsque vous avez besoin de construire les feuilles de style et que le rechargement en direct n'est pas recherché).yarn build:js --watch votre javascript est rechargé en direct (utilisez sans l'indicateur --watch watch lorsque vous avez besoin de construire le rechargement JavaScript et en direct n'est pas recherché). Pour démarrer le serveur Rails, un travail retardé, un regroupement CSS et un regroupement JS en même temps, exécutez simplement bin/server .
Cela a une déception: le débogage avec byebug est cassé.
Dodona utilise des sous-domaines pour des descriptions d'exercice de bac à sable (qui sont des pages HTML arbitraires et pourraient être utilisées à des fins malveillantes si elles ne sont pas correctement bacquées). Nous servons l'application principale en développement à partir de http: //dodona.localhost: 3000 et des descriptions d'exercice de http: //sandbox.localhost: 3000.
Si cela ne fonctionne pas dans la boîte, vous pouvez ajouter les lignes suivantes à votre fichier /etc/hosts :
127.0.0.1 dodona.localhost
127.0.0.1 sandbox.localhost
Pour pelucher le code, exécutez rubocop pour Ruby et yarn lint pour JavaScript.
Nous avons des tests dans les tests JavaScript, Ruby et System:
yarn testbundle exec rails test:systembundle exec rails test Il y a aussi un type de vérification du code écrit en dactylographie. Cela peut être exécuté avec yarn typeCheck .
Conseils
PARALLEL_WORKERS Env var pour spécifier le nombre de threads à utiliser.TestProf pour profil les tests Rubybundle exec rails test filename pour exécuter un seul fichier de test, utilisez bundle exec rails test filename:linenumber pour exécuter un test spécifique