1. Preparar (faça ANTES da prova)
curl -fsSL https://moj.naquadah.com.br/moj-comp -o ~/.local/bin/moj-comp && chmod +x ~/.local/bin/moj-comp moj-comp login prova1apc # o login/senha que a organização te entregou moj-comp fetch # baixa TODOS os enunciados p/ ./prova1apc-prova/
Requisitos: bash, curl, jq, openssl — qualquer máquina de laboratório Linux/macOS tem; sem root, sem instalação, um arquivo só. O login também aceita a URL da prova (moj-comp login https://prova1apc.moj.naquadah.com.br).
fetch é o seu seguro: enunciados salvos localmente (HTML/PDF) significam que você continua TRABALHANDO mesmo com rede zero. Rode logo depois do login.No login a CLI também recebe a chave pública do contest e mede o seu relógio contra o do servidor — é isso que arma o modo offline (seção 4). moj-comp doctor confere tudo.
2. Enviar e acompanhar
moj-comp problems # letras, nomes e time-limits moj-comp submit A sol.c # envia e ESPERA o veredicto ali mesmo moj-comp subs # todas as suas submissões e veredictos
A linguagem vem da extensão do arquivo (sol.c, sol.cpp, sol.py, Main.java…). O submit espera o veredicto (poucos segundos) e imprime — sem trocar de aba, sem refresh.
3. Placar, dúvidas, avisos
moj-comp score # o placar, no terminal moj-comp clar ask B "A entrada termina com EOF ou com 0?" moj-comp clar ls # suas perguntas e as respostas moj-comp news # avisos da organização
4. ☠ Caiu a Internet? Respira. Conta no horário certo.
Em prova, o HORÁRIO da submissão define a penalidade — perder a rede não pode te custar minutos. Quando o submit não alcança o servidor, a CLI entra no modo emergencial sozinha:
$ moj-comp submit C sol.cpp ⚠ SEM REDE — ativando o modo emergencial. submissão EMPACOTADA offline: C, sol.cpp, carimbo UTC 14:32:07. ela vale NO HORÁRIO DO CARIMBO quando a rede voltar. Deixe rodando: moj-comp monitor
Aí deixe ISTO rodando num terminal — mostra a fila, tenta reenviar sozinho a cada 15s e acompanha os veredictos quando a rede voltar:
$ moj-comp monitor [14:33:02] rede: OFFLINE · fila: 1 pacote(s) 1784561527-000.pkt carimbo 14:32:07 (há 1min) [14:41:17] rede: ONLINE · fila: 1 pacote(s) ✓ 1784561527-000.pkt ACEITA — contabilizada às 14:32:07 UTC (id 3f9a…) veredicto: Accepted
- Por que o horário é confiável? O pacote é cifrado com a chave do contest e carrega uma âncora de tempo ASSINADA recebida do servidor — a organização consegue verificar que a submissão nasceu quando diz. Seu relógio pode até estar errado: a CLI mede o desvio contra o servidor e carimba o UTC corrigido.
- Seu código também fica protegido: em disco de laboratório, o pacote na fila é ilegível p/ os outros (só o servidor abre).
- Quando aceita, entra no placar NO HORÁRIO DO CARIMBO — penalidade calculada como se a rede nunca tivesse caído.
rejeitados/ com o motivo: mostre à organização.5. ⚡ Comandos rápidos
| Comando | O que faz |
|---|---|
| moj-comp login <id|url> | entra no contest (credenciais da organização) |
| moj-comp fetch | baixa TODOS os enunciados (seu seguro anti-queda) |
| moj-comp statement <letra> | baixa SÓ um enunciado (HTML e PDF, se houver) |
| moj-comp problems · score · news | problemas/TLs · placar · avisos |
| moj-comp submit <letra> <arquivo> | envia + espera o veredicto (modo offline entra sozinho) |
| moj-comp subs | suas submissões e veredictos |
| moj-comp clar ls | ask <letra|geral> <texto> | dúvidas p/ a organização |
| moj-comp outbox · sync · monitor | fila offline · reenviar já · VIGIA durante a queda |
| moj-comp time · doctor · update | relógio · diagnóstico · auto-atualização |
6. 💡 Dicas
- Rode
fetchLOGO após o login — enunciado em disco vence qualquer queda. - Durante a queda, continue codando e enviando: cada
submitempilha um pacote carimbado; omonitorentrega tudo em ordem quando a rede volta. - O
moj-comp timediz se seu relógio está torto (sem precisar de root — a CLI corrige os carimbos sozinha). - A página web e a CLI são a mesma conta: use as duas ao mesmo tempo se quiser (navegador p/ ler, terminal p/ enviar).
Manual do competidor (o lado da página web) · Documentação completa