Quadro de notas do Moodle e PHP5.3.9

Descobrimos (e resolvemos) um problema que apareceu recentemente. Ao atualizar notas diretamente pelo quadro de notas, tutores percebiam que algumas notas não mudaram. Por exemplo, as notas dos alunos com nomes de digamos até M podiam ser atualizados, mas as notas dos alunos mais para baixo no quadro permanciam inalteradas. A razão é uma combinação de quadro de notas muito grandes e uma atualização de segurança recente do PHP.

Em algumas disciplinas os quadros de notas são bem grandes: podem conter mais do que 40 ou 50 colunas. Isto significa que ao atualizar uma nota diretamente pelo quadro de nota as notas de, digamos 25 alunos vezes 40 colunas ou da ordem de 1000 itens de nota  devem ser atualizados. Vimos que o navegador estava mandando todos os novos valores corretamente na requisição POST ao servidor. Mas  aparentemente o Moodle não processava os valores após 1000 itens.

Acontece que uma atualização do PHP (implementada 10 de janeiro 2012) introduz uma nova variável de configuração: “Added max_input_vars directive to prevent attacks based on hash collisions”. Esta nova variável é igual a 1000, por padrão. Portanto, a solução para quem lida com quadro de notas grandes no Moodle é usar um valor maior para a variável max_input_vars. Isto pode ser feito, por exemplo, colando em seu arquivo .htaccess a linha

php_value max_input_vars 10000

variável foi acrescentado para proteger o seu servidor contra um ataque denial of service. Acreditamos que aumentando seu valor para 10 mil não aumente o risco deste tipo de ataque substancialmente (porque, sinceramente, há maneiras muito mais simples de fazer este ataque).

Checklist para configuração de um novo Moodle

Instalar um novo Moodle é simples, sobretudo se já tiver um pouco de experiência com a instalação de software Web. Mas preparar um ambiente de produção requer muita atenção em muitas detalhes. Veja um checklist para verificar ao instalar um novo Moodle.

Primeiro, a instalação básica.

  • Baixar o código. O jeito moderno é usar algum branch do git://git.moodle.org/moodle.git . Se quiser usar o nosso código (uma versão levemente customizado do código “upstream”, com alguns plugins e temas já pré-instalados), use
    $ git init 
    $ git remote add -t devel2 -f origin git://git.atp.usp.br/moodle.git 
    $ git checkout -b meuprojeto origin/devel2

    A razão de não usar git clone é que não é necessário levar todos os branches para seu repositório local

  • Configurar o seu servidor Web (usamos Apache). Colocar ServerName e ServerAlias no VirtualHost. Aproveitar e mudar as configurações padrão da sua distribuição: KeepAliveTimeout 2, ServerLimit e MaxClients para algo como (memória disponível / 50M)* 80% (ou menos, se o seu base de dados fica na mesma máquina. Veja mais nas dicas de desempenho no Moodle Docs
  • Instalar um acelerador PHP (usamos APC, php-apc no debian e ubuntu )
  • Instalar um base de dados (usamos Mysql) e criar sua base. Aproveitar e mudar as configurações padrão da sua distribuição. Se usar innodb, o parâmetro mais importante é innodb_buffer_pool_size. Veja mais nas dicas de desempenho no Moodle Docs
  • Configurar o admin/cron.php (usando o crontab do root do servidor Web, por exemplo)
  • Configurar o tamanho máximo de uploads. Fazemos usando um arquivo .htaccess no raiz do site com
    php_value upload_max_filesize 150M
    php_value post_max_size 151M
  • Configurar backups! Usamos mysqldump para a base e rsync para moodledata.
Uma vez instalado, vem a configuração do Moodle
  • Decidir como os seus usuários vão se cadastrar e autenticar (em Plugins / Authentication). No nosso caso, isto envolve plugins de autenticação desenvolvidos por nós. Não esquecer escrever as instruções (colocar em Plugins / Authentication / Common Settings )
  • Configurar email (em Plugins / Message Outputs)
  • Decidir o template principal do site. Decidir se categorias e cursos podem usar templates próprios. Neste caso, colocar pelo menos o seu próprio logo nestes templates.
  • Configurar o menu principal (em Appearance / Temas ). Fazer links para as páginas de ajuda.
  • Baixar “language packs”.
  • Configurar os papeis (renomear Teacher para Docente, mudar permissões a gosto, criar outros papeis)
  • Ativar estatísticas (em Server / Statistics e também (!) em Advanced Features)
  • Colocar o código de Google Analytics (em Appearance / Aditional HTML)
  • Habilitar o filtro Latex (em Plugins / Filters). No debian o pacote texlive-latex-base traz quase tudo.
Que mais acham que não podemos esquecer?

 

Grupo ATP no MoodleMoot 2011

O Grupo ATP apresentou (parte de) seu trabalho numa conferência de especialistas no AVA Moodle. Veja as nossas apresentações embaixo. Na primeira apresentação descrevemos a infraestrutura que montamos em apoios ao Redefor e a Licenciatura em ciências. Focamos na arquitetura do nosso cluster de servidores e o desenho dos ambientes criados no Moodle.

Na segunda apresentação, encabeçado pelo Helbert, descrevemos a nossa solução para o problema de administração de muitos Moodles, cada um com seus próprios plugins e temas: usar git não somente para o versionamento de código mas também para manter este código atualizado nos servidores de produção.

Tipos de Fórum no Moodle da Redefor

Antes de mais nada,  é bom definir uma terminologia. Pode ter um ou mais fóruns em cada ambiente. Um fórum consiste de vários “tópicos” e um tópico é uma sequência  de mensagens. Uma mensagem geralmente é um resposta a uma outra mensagem dentro do mesmo tópico.

No Moodle da Redefor temos adotado uma determinada política de configuração dos fóruns. Com poucas exceções estamos usando dois tipos de fórum:

  1. Um fórum do tipo “Fórum de Notícas”. Neste fórum, somente alguém no papel de tutor ou especialista pode iniciar um tópico e por padrão o cursista não pode responder (é possível mudar isto, mas se cursista deve poder responder, recomendamos usar um fórum do tipo “Geral”). É possível usar um bloco na barra lateral para mostrar os últimos posts neste fórum.
  2. Um fórum do tipo “Geral”. Este fórum é desenhado para promover discussões. Por padrão, no Moodle do Redefor cursistas não podem iniciar novos tópicos. Portanto, é essencial que o tutor “abra” (inicie um novo tópico) cada novo fórum no ambiente. O cursista poderá somente responder a tópicos abertos pelo seu tutor. Esta configuração é uma tentativa de organizar melhor as discussões, mas o Editor / DI do ambiente pode abrir uma exceção desta política em fóruns individuais.

Uma configuração e política importantíssima é a de assinatura do fórum. Para cada mensagem postado num fórum, o Moodle decide se vai mandar uma notificação no e-mail de notificações. O Editor / DI do ambiente pode determinar uma política padrão mas o usuário também pode mudar as suas preferências de notificações para cada fórum.

O Fórum é uma ferramenta extremamente flexível e pode ser adaptado para implementar várias estratégicas pedagógicas. Veja algumas funcionalidades mais avançadas do fórum:

  1. A funcionalidade “interromper” : se uma discussão virou muito longo, podem usar o botão “interromper” para transferir uma resposta (e tudo embaixo desta resposta) para um novo tópico no mesmo fórum.
  2. É possível “transferir” um tópico para um outro fórum (dentro do mesmo ambiente).
  3. Anexar arquivos: se o arquivo é uma imagem (.png, .jpg) a imagem será inserido no post
  4. Avaliação: o Fórum pode ser configurado para permitir que o tutor atribua uma nota (ou conceito, se foram usados “esscalas”) a cada post do cursista. É até possível permitir cada cursista avaliar os seus colegas! Esta avaliação por pares possibilita mais N dinâmicas pedagógicas.
  5. Cada usuário pode mudar a sua visualização do tópico. A visualização padrão “aninhada” usa indentação para mostrar qual mensagem é uma resposta a qual outra mensagem. Mas é possível por exemplo ordenar os posts cronologicamente.

Como baixar uma planilha com números USP dos seus cursistas

Quem tem permissões de edição em algum ambiente (disciplina) pode fazer o seguinte para baixar uma planilha com nomes e números USP dos inscritos neste ambiente:
  1. No ambiente, vá para Grupos (caixa de administração), clique o link.
  2. Clique na aba “Visão Geral”.
  3. ‘Scrollar” (?) para baixo, procurar o botão “Download em formato Excel”
Nesta planilha, a terceira coluna é chamada “Número de identificação”. No caso dos Moodles da USP, este campo contem o número USP.  É preciso ressaltar que esta planilha somente contem os cursistas que acessarem o ambiente pelo menos uma vez (são “inscritos” no ambiente). Ou seja, a lista pode mudar na medida que novos cursistas acessam o ambiente e são inscritos automaticamente.
Outros relatórios no Moodle também incluem o número USP (“idnumber” ou “número de identificação”): por exemplo, ao baixar (exportar) o quadro de notas ou os resultados de uma enquete este campo é incluído. Mas nestes casos, somente cursistas com notas atribuídas ou (no caso das enquetes) respondentes são incluídos na planilha.

Como permitir tutores corrigir e devolver trabalhos?

Veja uma pergunta que recebemos.

Qual a melhor maneira dos tutores devolverem os trabalhos dos alunos, que eles corrigiram?

A situação é comum: alunos enviam um trabalho, um relatório ou um texto qualquer e os tutores tem que dar um retorno.

  1. Se o arquivo é enviado por meio da ferramenta Tarefa /  “Envio de Arquivo Único” o único meio do tutor dar um retorno é via o campo “feedback”. É um pouco limitado.
  2. Acredito que a maneira mais simples seja usar Tarefa / “Modalidade Avançada de envio de arquivos”. Uma busca para os termos “moodle grade paper” revele dois pdfs com instruções (primeiro, segundo). Nesta ferramenta alunos podem salvar um arquivo,  “entregar” para avaliação, o tutor pode “devolver” o mesmo arquivo e o tutor pode entregar um arquivo-resposta (por exemplo, usando o arquivo do aluno com correções). Configuraria para permitir somente 1 arquivo e sem notas para deixar o interface menos confuso. Também é preciso verificar com os tutores se estão a par com a interface de avaliações (mas não prevejo problemas)
  3. Uma terceira possibilidade seria usar a ferramenta  “Diálogo”. É uma sequência de mensagens entre aluno e tutor, onde ambos podem  anexar arquivos em qualquer mensagem. Estamos usando no Redefor para apoiar as interações entre orientador e aluno nos ambientes de TCC. A vantagem é a simplicidade conceitual: é só uma serie de mensagens. Mas não está integrado com o quadro de notas, meio inviabilizando o uso na Licenciatura para esta finalidade, acredito.

Se o trabalho dos alunos deve ficar visível para mais pessoas do que somente o aluno e o tutor, vale a pena investigar o fórum (com anexos) ou o “base de dados” (pode ser configurado para permitir comentário e “aprovar”  um registro)

O caminho para Moodle 2.1

O Moodle 2.1 saiu pouco tempo atrás e precisamos começar pensar sobre a migração dos nossos Moodles.

Para Redefor2 resolvemos ficar com 1.9 porque quando estava na hora de preparar o novo ambiente o Moodle 2.1 não tinha saído ainda e avaliamos que não conseguiríamos migrar os plugins não-padrão essenciais (GApps, OU Wiki etc.)

Mas para a Licenciatura em Ciências em 2012, o Moodle do Stoa e os outros Moodles para quais damos suporte a previsão é migrar para o Moodle2.1 em breve (para valores flexíveis de “breve”). Precisamos começar se acostumar com o novo interface, aprender as novas funcionalidades, etc.

Instalamos uma instância de testes no moodle21.atp.usp.br . Está rodando o branch devel21 do nosso repositório (que por sua vez está ligado ao branch MOODLE_21_STABLE do repo git upstream). A minha ideia é que o branch devel21 vai servir de base para os nossos novos moodles. A instância moodle21.atp.usp.br por agora está aberto para cadastro via email. Quem quiser experimentar, fiquem a vontade!

Veja uma guia interessante feito pelo pessoal do Synergy Learning (clique embaixo para um png que fiz a partir do pdf deles.)

Clique para ampliar, imagem CC-BY-NC-SA de http://www.synergy-learning.com/blog/moodle/the-moodle-2-1-administration-map/

E veja também esta apresentação do Ross Mackenzie, sobre o processo de migração do Open University.

 

SSO entre Moodle e Google Apps vs IPv6

No dia 7 de junho, as 21h BRT de repente começamos ter problemas com os logins no Moodle do Redefor. As sintomas eram: atrasos muito grandes na resposta do servidor, telas brancas em http://redefor.usp.br/cursos/login/login.php, etc. Às vezes conseguíamos se logar, geralmente após um delay de 20 ou 60 segundos. Descobrimos que podíamos resolver a lentidão dos logins desligando o plugin de autenticação que veio com a integração Moodle-Google Apps desenvolvido pelo Moodlerooms.

Logo o Ettore do CCE levantou a hipótese que os problemas seriam relacionados com o “dia IPv6“. Neste dia, durante 24h a partir das 22h horário do Brasil, o Google (e outros provedores de serviços na internet) ligaram o IPv6 nos seus serviços principais. Como explica o Ars Tecnica, isto pode levar a atrasos e time-outs quando o caminho entre 2 servidores não pode ocorrer via IPv6 mais o fall-back para IPv4 não ocorre imediatamente. O Ettore ajustou o firewall entre os servidores do cluster da Redefor e o resto de mundo, mas aparentemente não resolveu completamente o problema. Somente no dia 8 de junho as 21h tudo voltou a normal.

Aprendemos uma lição sobre modos de falha inesperado e sistemas aclopados não-fracamente. Não entendo porque o plugin de SSO falhou tão desastrosamente. O plugin de autenticação é responsáveis para responder requisições SAML que os servidores do Google fazem no Moodle da Redefor (que funciona como provedor de identidade). Não há razão de contatar os servidores do Google durante o processo de login no Moodle. Vamos ter que investigar o que este plugin exatamente faz…

Como usar as Ferramentas do Moodle

Um tempo atrás traduzimos uma comparação das várias ferramentas disponíveis no Moodle. Veja como e quando usar qual ferramenta no painel (clique na imagem para abrir o pdf).

A ideia é que ligamos os objetivos pedagógicos com as ferramentas disponíveis no AVA. Por exemplo, se quiser avaliar e acompanhar a aprendizagem dos seus alunos, não conte com o “Fórum de Notícias” ou as possibilidades de disponibilizar recursos online (quadros vermelhos). Conte sim com as ferramentas “Questionário” ou “Tarefa” (quadros verdes). 

Se quiser editar ou mudar, veja o código (pptx). O painel pode ser re-distribuído e mudado sob as restrições da licença CC-BY-NC-SA. Por exemplo: alguém tem uma palavra melhor do que “Colaboratividade”…? 

Inserir Imagens e Gráficos no Wiki do Moodle

O Wiki do Moodle permite inserir imagens e gráficos no meio do texto colaborativo. Mas é um processo um pouco trabalhoso. Veja dois vídeos, produzidos pela Tayna T. P. Souza da Equipe de Apoio do CTI, liderada pela Carla Barros. São feitos para os cursistas do projeto Redefor, mas podem ser aproveitados para qualquer usuário do Wiki do Moodle. Para conhecer as funcionalidades do Wiki em geral, assiste primeiro este outro screencast da Tayna.

No vídeo acima primeiro é explicado como entrar no Redefor, achar o Wiki e o documento colaborativo do seu grupo. Depois, a questão da inserção de imagens é abordada. É preciso primeiro ter o chamado “URL” ou “Endereço da Web” da imagem. Depois de ter copiado este URL ou endereço é preciso achar, no editor, o ícone “inserir imagem” (é o ícone com um arvorezinho). Depois é só uma questão de colar o endereço da imagem e salvar.

Neste vídeo, é abordado o problema de colocar a sua imagem na Web. Se a imagem que precisa inserir na página Wiki estiver na seu computador (porque fez o gráfico ou tabela em Excel, por exemplo), é necessário primeiro “subir” a imagem para a Web. Uma maneira de fazer isto é anexar a imagem num fórum do AVA. O vídeo explica como anexar imagens e gráficos num post no fórum, copiar o endereço (URL) e colar numa página do Wiki.