Dicas para o Maratona Linux Versão do manual: julho/2011 (para o Maratona de Programação CTBC) Copyright (c) 2003-2006 Ulisses F. F. da Silva and Cassio P. de Campos. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license may be found in http://www.gnu.org/licenses/ A Maratona de Programação CTBC é um sistema para ser utilizado em competições como a Maratona de Programação da SBC. Trata-se de uma distribuição Debian Linux contendo sistema de janelas wmaker 0.91.0 (além do twm), navegador Mozilla Firefox 1.0.4, editores vim 6.3, emacs 21.4a, ed 0.2, leafpad 0.7.9, nano 1.2.4, nedit 5.5, eclipse 3.2.0, xwpe 1.5.29a, compiladores gcc 3.3.5, g++ 3.3.5, jdk 1.5.0, fp-compiler 1.9.4 (além de perl, php4, awk, python, etc.), depuradores gdb 6.3 e ddd 3.3.9 (além dos disponíveis com algumas interfaces) e um sistema de gerenciamento da competição chamado de BOCA (versão 1.1.1). A lista completa de pacotes disponíveis está aqui. Cada time terá em sua máquina um disquete inserido no drive, de onde o Maratona Linux é iniciado. Esse disquete não deve ser retirado em momento algum! Isso caracteriza uma violação de conduta da equipe. Para utilizar o sistema o time deverá logar com o nome de usuário e senha teamX (onde X é o número do seu time). Você não precisa se preocupar com a segurança desta senha, pois apenas o seu time tem autorização para se logar apenas nesta máquina. Depois de logar, o time estará no sistema gerenciador de janelas chamado WindowMaker (caso esteja em modo texto, basta digitar o comando startx). Para ter acesso às aplicações, basta clicar com o botão direito do mouse na tela, que um menu aparecerá. Uma exceção faz-se para o eclipse: execute-o a partir de um prompt de comando, pois o mesmo não está disponível nos menus. Problemas com o ambiente devem ser comunicados ao pessoal de staff. Não é permitido o acesso à internet durante a competição, bem como não é permitido qualquer tipo de violação de acesso a áreas/usuários da própria máquina ou de outras. Toda a atividade das equipes estará sendo monitorada pelo pessoal de administração do sistema e equipes infratoras serão punidas. Dependendo da linguagem em que foram escritas, as soluções submetida serão compiladas com compiladores e linhas de compilação diferentes. A seguir estão as linhas de compilação que serão usadas pelos juízes para as linguagens disponíveis. Todos os exemplos terão como nome do programa convhull mais o sufixo correspondente da linguagem: Linguagem C C++ Java Linha de comando de compilação gcc -lm convhull.c -oconvhull g++ -lm convhull.cpp -oconvhull javac convhull.java (As extensões dos arquivos utilizadas nos exemplos podem variar de acordo com a competição. Informe-se.) Estas linhas de compilação poderão ser usadas pelos times para testarem suas soluções antes de as submeterem (no caso do Java, lembre-se que a classe principal deve ter exatamente o mesmo nome do arquivo fonte). Sugerimos que a equipe crie um arquivo texto de entrada, por exemplo convhull.in, e então execute seu programa em uma janela shell usando esse arquivo no redirecionamento da entrada padrão: Linguagem C C++ Java Linha de comando de execução ./convhull < convhull.in ./convhull < convhull.in java convhull < convhull.in Os juízes farão procedimento semelhante para compilar e testar os programas (claro que com outras opções de segurança no ambiente...). A tentativa de enviar/executar códigos maliciosos será punida. Sugerimos aos times testarem todas as aplicações relevantes disponíveis no sistema durante a sessão de aquecimento (warmup), antes de iniciar a competição. Também é interessante que os times façam algum tipo de preparação prévia com os aplicativos que irão encontrar no sistema (quase todo ambiente Linux possui tais aplicativos). Lembramos que os arquivos criados durante o warmup são apagados antes do início da competição oficial. O pessoal de staff é responsável por configurar as máquinas dos times de forma a facilitar seu uso e proporcionar uma competição justa. Procure-os caso haja necessidade. Ainda assim, alguns detalhes podem ser feitos pela própria equipe, como reconfigurar o teclado: basta executar o script /etc/maratona/teclado.sh no prompt de comando. Solicite ajuda se achar necessário. Sobre o Maratona Linux O Maratona Linux foi preparado por Cassio Polpo de Campos (EACH-USP), responsável pela administração dos sistemas da Maratona de Programação. Esse manual foi feito por Ulisses Furquim Freire da Silva (IC-Unicamp) e complementado e atualizado por Cassio Polpo de Campos.