Dodona es una plataforma de ejercicio en línea para aprender a codificar . Quiere enseñar a los estudiantes cómo programar de la manera más significativa y efectiva posible. Dodona actúa como co-maestro en línea , diseñado para dar a cada estudiante acceso a una educación de alta calidad. La atención se centra en las correcciones automáticas y en dar comentarios significativos sobre las soluciones presentadas de los estudiantes.
Este repositorio contiene el código fuente de la aplicación web. Si simplemente desea usar Dodona, vaya a https://dodona.be.
La documentación para usuarios finales se puede encontrar en https://docs.dodona.be.
¡Dodona es gratuita para las escuelas y nos gustaría mantenerlo así! Mantener esta plataforma en funcionamiento lleva mucho tiempo, al igual que apoyar a cientos de escuelas y miles de estudiantes. Si desea financiar Dodona, puede encontrar más información sobre https://dodona.be/en/support-us/ o ponerse en contacto enviándonos un correo electrónico a [email protected].
Hay varias formas de contactarnos:
Si desea ayudar con el desarrollo, los problemas etiquetados con la etiqueta del estudiante son un buen punto de partida.
mysql o mariadb .mysql , cambie el sql-mode en el bloque de configuración mysqld : sql-mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
dodona con acceso a las bases de datos dodona y dodona_test-N . Necesitará tantas bases de datos de prueba como en hilos de 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 correcta con RVM (la versión utilizada actualmente se puede encontrar aquí).node correcta con nvm e hilo (cualquier versión de nodo moderna debería hacer).bundle install e yarn installrails db:setup . (Si algo sale mal con la base de datos, puede usar rails db:reset para soltar, reconstruir y volver a crecer la base de datos). Si el error "no podría inicializar el juez de Python" surge, use SKIP_PYTHON_JUDGE=true rails db:setupbin/server para iniciar el servidor. Puede encontrar más información sobre cómo iniciar la configuración de desarrollo aquí. Dodona estará disponible en un subdominio de localhost: http: //dodona.localhost: 3000.No se requieren estos pasos para ejecutar el servidor, pero necesita Docker para evaluar realmente los ejercicios.
docker .docker pull dodona/dodona-pythonSi quieres construir las imágenes de Docker tú mismo:
build.sh scripts crea todas las imágenes. Pero con los datos iniciales, solo se necesita dodona-python . Puede construir esta imagen con docker build --pull --force-rm -t "dodona-python" -f "dodona-python.dockerfile" . . No se requieren estos pasos para ejecutar el servidor, pero son necesarios para dejar que se carguen las visualizaciones.
memcached .tmp/caching-dev.txt en la raíz del proyecto. Algunas gemas y dependencias (como Memcached) no funcionan en Windows. Debería usar WSL 2 en su lugar y ejecutar todo dentro de WSL. Esto significa que usa WSL para la base de datos, Memcached, Git, Docker, etc.
La forma más sencilla de iniciar el servidor es con el comando rails s Pero esto no procesará la cola de envío, y JavaScript será compilado por Webpack en segundo plano (sin salida cuando algo salga mal).
bin/delayed_job start .yarn build:css --watch Su CSS se vuelve a cargar en vivo (use sin la bandera --watch cuando necesite construir las hojas de estilo y no se busca la recarga en vivo).yarn build:js --watch su JavaScript se vuelve a cargar en vivo (use sin el indicador --watch cuando necesite construir el JavaScript y no se busca la recarga en vivo). Para iniciar el servidor Rails, el trabajo retrasado, la agrupación de CSS y la agrupación JS al mismo tiempo, simplemente ejecute bin/server .
Esto tiene una decepción: la depuración con byebug está rota.
Dodona usa subdominios para las descripciones de ejercicio de sandbox (que son páginas HTML arbitrarias y podrían usarse para fines maliciosos si no se sandan correctamente). Servimos la aplicación principal en el desarrollo de http: //dodona.localhost: 3000 y descripciones de ejercicio de http: //sandbox.localhost: 3000.
Si esto no funciona fuera de la caja, puede agregar las siguientes líneas a su archivo /etc/hosts :
127.0.0.1 dodona.localhost
127.0.0.1 sandbox.localhost
Para pellar el código, ejecute rubocop para Ruby and yarn lint para JavaScript.
Tenemos pruebas en pruebas de JavaScript, Ruby y System:
yarn testbundle exec rails test:systembundle exec rails test También hay una verificación de tipo para el código escrito en TypeScript. Esto se puede ejecutar con yarn typeCheck .
Consejos
PARALLEL_WORKERS env var para especificar el número de subprocesos a usar.TestProf para perfilar las pruebas de Rubybundle exec rails test filename para ejecutar un solo archivo de prueba, use bundle exec rails test filename:linenumber para ejecutar una prueba específica