O Sistema BOCA da Maratona de Programação
Neste mês de setembro (19/09/09), a PUCPR sediou a primeira fase regional da Maratona de Programação. Estiveram presentes 12 times de 4 instituições: UEPG, UFPR, UTFPR, e PUCPR. Os alunos (todos de graduação se não me engano) disputaram por uma vaga na final nacional. Os alunos receberam 7 problemas, que deveriam ser resolvidos via programação (logicamente).
Todos os times resolveram 4 problemas, mas devido ao tempo de resolução, 2 deles foram os vencedores dessa regional, um time da UFPR e um da UTFPR. O placar detalhado você pode encontrar aqui, e as resoluções aqui no blog do prof. PV.

Porém, o objetivo deste post é para apresentar o sistema de gerenciamento da competição utilizado, o BOCA.
O BOCA é um sistema web, feito em PHP e roda sob o Apache com banco de dados Postgre. Ele permite que os times mandem o código para avaliação, impressão de documentos, scoreboard, entre outros, tudo controlado pelos juízes, staff e administradores. Mais informações sobre o sistema pode ser encontrado aqui neste artigo.
A instalação do BOCA, a primeira vista parece ser complicada, porém o prof. Cassio já disponibiliza uma imagem pronta do VMWare ou Virtual Box, sendo necessário apenas a configuração (o que não é lá tão complicado devido a alguns scripts shipados junto com as imagens).

Durante esta primeira fase na PUCPR, eu utilizei a própria imagem para configurar o ambiente, tanto para os clients (times, staff, judges, e admins) quanto para o servidor. As máquinas eram plenamente capazes de rodar as VMs, isso diminuiria o trabalho, senão, seria preciso instalar o linux em todas as máquinas dos laboratórios (o que levaria um bom tempo para ficar pronto além de ter que esperar por burocracias da PUC). Um pequeno tutorial de como instalar o BOCA pode ser encontrado junto com a documentação em (/var/www/boca/doc), ou aqui em um breve tutorial que escrevi.
Tendo configurado suas virtual machines, basta distribuir pelos computadores que serão utilizados – simples assim. No máximo você precisaria configurar IPs, mas isso depende de como sua rede está planejada. Mantendo uma cópia das VMs em algum servidor local você pode restaurar qualquer imagem defeituosa a qualquer momento via rede.
No fim das contas a única modificação de última hora que fizemos foi na VM que rodava o servidor: aumentamos sua memória ram para 512 mb e desligamos o anti-virus da máquina host para melhorar um pouco a performance. Funcionou like a charm. Foram 300 minutos de competição sem nenhum problema.
Fica ae a dica para os próximos organizadores de maratonas.
Abraços.
–
http://www.ime.usp.br/~cassio/boca/
http://maratona.ime.usp.br/vagas09.html
http://pvwr.blogspot.com
No comments yet.