CodeWorld é um ambiente educacional usando Haskell. Ele fornece um modelo matemático simples para figuras geométricas, animações e jogos interativos e multi-player. O ambiente de programação baseado na Web suporta essa missão educacional com um editor e compilador de setups zero, compartilhamento fácil e armazenamento em nuvem de projetos e a capacidade de executar programas diretamente no navegador da web usando GHCJs.
Existem várias variantes da WeWorld disponível:
codeworld-api e blank-canvas .O CodeWorld é estável e tem sido usado nas escolas há anos! Consulte a página de usuários para obter uma lista parcial. Estamos constantemente melhorando o meio ambiente, no entanto. As mudanças de quebra, quando necessário, estão programadas para ocorrer entre os semestres escolares K-12 típicos, para minimizar a interrupção das classes existentes.
O Google está distribuindo o código para o CodeWorld, mas o CodeWorld não é um projeto oficial do Google, e o Google não fornece suporte para ele. Em vez disso, as perguntas sobre o projeto ou código devem ser feitas para a lista de discussão da CodeWorld-Discuss. Um fórum de perguntas e respostas favoráveis ao aluno também está disponível em http://help.code.world para obter perguntas sobre programas escritos usando o CodeWorld, em vez de perguntas sobre a construção ou modificação da própria rede de códigos.
Basta visitar https://code.world para começar.
Não há necessidade de baixar ou instalar nada para usar o CodeWorld. Este repositório será útil se você preferir bifurcar e modificar o ambiente do WeWorld ou contribuir com alterações.
Para discutir e ouvir anúncios sobre o CodeWorld, assine a lista de discussão em https://groups.google.com/forum/#!forum/codeworld-discuss
A lista de discussão deve ser usada para:
Para relatar bugs ou arquivar solicitações formais de recursos, tente https://github.com/google/codeworld/issues.
Há um pouco de papelada envolvida em contribuir com o CodeWorld. Você precisará concordar com um contrato de licença de colaborador. Consulte CONTRIBUTING.md para obter detalhes.
Construir e executar a WeWorld pode ser um processo demorado, mas é automatizado usando os scripts de instalação no diretório raiz, que funcionam na maioria das formas de Linux, incluindo Debian, Ubuntu, Redhat e CentOS. As instruções passo a passo são as seguintes:
./install.sh para configurar o projeto../run.sh para iniciar o servidor.Agora você pode acessar o sistema CodeWorld em http: // localhost: 8080.
Se você fizer alterações no CodeWorld, poderá reconstruí -lo sem reconstruir as dependências:
./build.sh para recompilar apenas o código do código, usando ferramentas e bibliotecas instaladas anteriormente../run.sh para iniciar o servidor.Também é possível construir e executar o servidor usando o Docker. Esta ainda não é a maneira recomendada de se desenvolver com o CodeWorld, mas poderá chegar lá em breve.
Comandos para tentar o Docker:
sudo docker build -t codeworld https://github.com/google/codeworld.git
sudo docker run -p 80:8080 -t codeworld
Por enquanto, o contêiner do Docker não tem como acessar um ID do cliente, montar uma unidade NFS compartilhada ou outras etapas de configuração. Vai funcionar, mas não será completo. No futuro, essa deve se tornar a maneira padrão de implantar o CodeWorld.
O stack.yaml na raiz do projeto está presente para apoiar parcialmente o Intero e o Travis CI. No Travis, os testes codeworld-compiler não são executados.
Construir e executar o WeWorld localmente com a pilha não é suportado e, de fato, não funciona. A pilha ainda não pode substituir os scripts do shell ou o uso do Docker acima.
O CodeWorld oferece dois modos de autenticação ou a capacidade de executar com autenticação desativada com funcionalidade reduzida. Os dois métodos fornecidos são os seguintes:
A execução do CodeWorld em um desses dois modos permite que os usuários salvem e gerenciem seus projetos e pastas. Sem nenhuma autenticação ativada, os usuários podem escrever, criar e executar código, mas perdem a capacidade de salvar e gerenciar projetos e pastas.
Para que a autenticação do Google funcione, você precisará obter uma chave da API do Google e armazená -la no web/clientId.txt .
Para obter uma chave da API do Google para sua instalação de codeworld, consulte os seguintes recursos:
Depois de ter uma chave da API do Google, copie e cole -a em web/clientId.txt . Uma instância de execução do CodeWorld receberá imediatamente alterações nesse arquivo.
Em geral, o sistema de autenticação do Google será o sistema mais fácil de manter, pois não são necessários lojas de senhas locais. Este é o mecanismo usado pela versão oficial e ao vivo do CodeWorld.
Para aplicativos em que dependências externas, como contas do Google, não são aceitáveis, fornecemos um sistema de autenticação local simples:
Isso fornece a um sistema de autenticação local com fluxos de trabalho muito semelhantes à autenticação do Google (sessões sem estado do cliente). Atualmente, nenhuma interface administrativa baseada na Web é fornecida. Em vez disso, você pode usar a ferramenta CLI codeworld-auth para gerenciar contas.
O sistema de autenticação local pode ser útil para situações em que um instrutor não pode razoavelmente esperar que todos os alunos tenham uma conta do Google válida e na qual o instrutor esteja disposto a implantar uma pilha local da WeWorld.
A autenticação local será ativada se um arquivo codeworld-auth.db estiver presente no diretório raiz do aplicativo. Para criar este banco de dados, execute o seguinte a partir da raiz do repositório Git:
build/bin/codeworld-auth init-accounts -d codeworld-auth.db
Isso criará um banco de dados de conta vazio sem contas.
Supondo que você já tenha criado um banco de dados de conta, conforme descrito acima, você pode criar uma nova conta da seguinte maneira:
build/bin/codeworld-auth create-account -d codeworld-auth.db johndoe Expired
Isso criará uma nova conta com o ID do usuário johndoe com uma senha gerada aleatoriamente. A conta será definida como "expirada", o que significa que o usuário será solicitado a inserir uma nova senha no próximo horário de assinatura.
Outros subcomando são fornecidos para atualizar e excluir contas etc. Para obter ajuda:
build/bin/codeworld-auth --help
Para usar a autenticação local, você também precisará gerar um segredo JWT armazenado em um arquivo chamado codeworld-auth.txt . Isso é usado para assinar tokens JWT passados entre o servidor e o navegador. No diretório raiz do repositório Git, execute o seguinte comando:
build/bin/codeworld-auth generate-secret -s codeworld-auth.txt
Isso gerará uma nova chave de assinatura JWT aleatória. O servidor não deve expor esse segredo a usuários externos.
Se você estiver instalando o CodeWorld em um servidor virtual, esteja ciente de que a RAM padrão nesses servidores geralmente não é suficiente para o GHC. O CodeWorld precisa compilar projetos Haskell muito grandes durante sua instalação. O seguinte deve ser suficiente para resolver quaisquer problemas fora da memória que você encontrar:
$ sudo dd if=/dev/zero of=/swap bs=1024 count=2097152
$ sudo mkswap /swap
$ sudo swapon /swap
Isso cria um arquivo de troca de 2 GB para aumentar a memória virtual disponível. A instalação com um arquivo de troca pode ser lenta, mas terá sucesso. (A menos que você pretenda escrever programas muito grandes na WeWorld, geralmente é seguro remover o arquivo de troca depois de executar o servidor pela primeira vez.)