Dodona é uma plataforma de exercícios on -line para aprender a codificar . Ele quer ensinar os alunos a programar da maneira mais significativa e eficaz possível. Dodona atua como co-professor on-line , projetado para dar a cada aluno acesso a educação de alta qualidade. O foco está nas correções automáticas e no fornecimento de feedback significativo sobre as soluções enviadas dos alunos.
Este repositório contém o código -fonte do aplicativo da web. Se você simplesmente deseja usar o Dodona, vá para https://dodona.be.
A documentação para usuários finais pode ser encontrada em https://docs.dodona.be.
Dodona é livre para usar nas escolas e gostaríamos de mantê -lo dessa maneira! Manter essa plataforma em funcionamento leva muito tempo, assim como apoiar centenas de escolas e milhares de estudantes. Se você deseja financiar o Dodona, pode encontrar mais informações sobre https://dodona.be/en/support-us/ ou entrar em contato, enviando um e-mail para [email protected].
Existem várias maneiras de nos contatar:
Se você deseja ajudar no desenvolvimento, os problemas marcados com o rótulo do aluno são um bom ponto de partida.
mysql ou mariadb .mysql , altere o sql-mode no bloco de configuração mysqld : sql-mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
dodona com acesso aos bancos de dados dodona e dodona_test-N . Você precisará de tantos bancos de dados de teste quanto threads da 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 correta usando o RVM (a versão usada atualmente pode ser encontrada aqui).node usando nvm e YARN (qualquer versão do nó moderno deve fazer).bundle install e yarn installrails db:setup . (Se algo der errado com o banco de dados, você poderá usar rails db:reset para cair, reconstruir e renomear o banco de dados.) Se o erro "não poderá inicializar o juiz de Python", use SKIP_PYTHON_JUDGE=true rails db:setupbin/server para iniciar o servidor. Mais informações sobre como iniciar a configuração de desenvolvimento podem ser encontradas aqui. Dodona estará disponível em um subdomínio de localhost: http: //dodona.localhost: 3000.Essas etapas não são necessárias para executar o servidor, mas você precisa do Docker para realmente avaliar exercícios.
docker .docker pull dodona/dodona-pythonSe você quiser construir as imagens do Docker:
build.sh criam todas as imagens. Mas com os dados iniciais, apenas dodona-python é necessário. Você pode construir esta imagem com docker build --pull --force-rm -t "dodona-python" -f "dodona-python.dockerfile" . . Essas etapas não são necessárias para executar o servidor, mas são necessárias para permitir que as visualizações carreguem.
memcached .tmp/caching-dev.txt na raiz do projeto. Algumas jóias e dependências (como o memcached) não funcionam no Windows. Você deve usar o WSL 2 e executar tudo dentro do WSL. Isso significa que você usa WSL para o banco de dados, memcached, git, docker, etc.
A maneira mais simples de iniciar o servidor é com o comando rails s Mas isso não processará a fila de envio, e o JavaScript será compilado pelo WebPack em segundo plano (sem saída quando algo der errado).
bin/delayed_job start .yarn build:css --watch o seu CSS é recarregado ao vivo (use sem a bandeira --watch quando precisar construir as folhas de estilo e a recarga ao vivo não é desejada).yarn build:js --watch seu JavaScript está recarregado ao vivo (use sem a bandeira --watch quando precisar construir o JavaScript e a recarga ao vivo não é desejada). Para iniciar o servidor Rails, o trabalho atrasado, o CSS Bundling e o JS Bundling ao mesmo tempo, basta executar bin/server .
Isso tem uma decepção: a depuração com byebug está quebrada.
Dodona usa subdomínios para descrições de exercícios de sandbox (que são páginas arbitrárias de HTML e podem ser usadas para fins maliciosos se não forem adequadamente em caixa de areia). Servimos a principal aplicação no desenvolvimento de http: //dodona.localhost: 3000 e descrições de exercícios de http: //sandbox.localhost: 3000.
Se isso não funcionar fora da caixa, você poderá adicionar as seguintes linhas ao seu arquivo /etc/hosts :
127.0.0.1 dodona.localhost
127.0.0.1 sandbox.localhost
Para fingir o código, execute rubocop para rubi e yarn lint para JavaScript.
Temos testes nos testes de JavaScript, Ruby e System:
yarn testbundle exec rails test:systembundle exec rails test Há também uma verificação de tipo para código escrito no TypeScript. Isso pode ser executado com yarn typeCheck .
Pontas
PARALLEL_WORKERS Env var para especificar o número de threads a serem usados.TestProf para perfilar os testes de rubibundle exec rails test filename para executar um único arquivo de teste, use bundle exec rails test filename:linenumber para executar um teste específico