Итак, вашей команде надо дежурить в соревнованиях Интернет-клуба. Вы
написали красивые вопросы, защитились от кверулянтов и апеллянтов, и
готовитесь к приему ответов. Но вот проблема -- как справиться с
десятками писем от команд-участниц?
Комплекс программ Интернет-Клуба ``Что? Где? Когда'' поможет вам.
1. УСТАНОВКА И НАСТРОЙКА ПРОГРАММ
А. Зайдите на http://internet.chgk.info/boris/processmail и
скачайте файл processmail.zip. Распакуйте этот
файл на Вашм компьютере. Вы найдете:
- README -- этот файл
- processmail.pl, createtable.pl, reminder.pl, collection.pl --
скрипты для обработки почты.
- subroutines.pl -- вспомогательный файл, используемый прочими
скриптами
- parameters.pl -- файл, содержащий настраиваемые параметры программ
- process.tex, process.pdf -- техническая документация к программам
(если Вы не собираетесь ``влезать вовнутрь'', Вам она не
понадобится )
Б. В каждом из файлов processmail.pl, createtable.pl, reminder.pl,
collection.pl замените первую строку (#!/usr/bin/perl) на ссылку
на положение перла в Вашей системе. Сделайте эти файлы выполняемыми (в
Юниксе это делает chmod a+x *.pl)
В. Посмотрите внимательно файл parameters.pl. В нем Вы можете захотеть
изменить ряд параметров:
Вот эти параметры задать ОБЯЗАТЕЛЬНО:
$NAME[1] и $NAME[2] -- названия зачетов
$MINQUEST[1], $MAXQUEST[1], $MINQUEST[2], $MAXQUEST[2] -- номера
первого и последнего вопросов в каждом зачете
$FILES[1], $FILES[2] -- названия файлов, куда вы складываете письма
с ответами в каждом зачете.
ВНИМАНИЕ: синтаксис переменных $FILES[1] и $FILES[2] изменился по сравнению
с предыдущей версией скриптов! Старый файл parameters.pl работать
НЕ БУДЕТ - необходимо его чуть-чуть поправить.
Вот эти параметры не являются обязательными:
$NOCOUNT[1], $NOCOUNT[2] -- номера вопросов, которые в каждом зачёте
должны идти вне зачёта (например, экспериментальная внезачетная
бескрылка). Номера, указанные в $NOCOUNT[1], автоматически
добавляются к $NOCOUNT[2] (даже если $NOCOUNT[2] пуст), что является
удобным и логичным в большинстве случаев. Если же какой-то из
номеров из $NOCOUNT[1] нужно *включить обратно* в зачёт во втором
зачёте, то впишите его в $NOCOUNT[2] со знаком минус.
Вот эти параметры нужны для программы reminder:
$fromaddress задает Ваш обратный адрес
$DK задает название Вашей команды
$date -- системная процедура, которая выдает московское время
(если Вы не можете его вычислить, напишите просто $date="";)
процедуры printheader и printfooter печатают заголовок Вашего
письма-напоминания на лист z-info
2. РАБОТА С ПРОГРАММАМИ
А. Просмотрите каждое письмо с ответами -- соблюден ли в нем
формат. Вот пример правильно оформленных ответов:
*** "Марсиане", 343
#1. Дедка
#2. Бабка
#3. Внучка
#4. Жучка, кошка
и мышка
***
ПОМНИТЕ: если команда прислала несколько писем, написание названия
команды в них должно быть одинаковым.
Если у команды еще нет регистрационного номера, поле ``номер'' может
быть пропущено. Программа присвоит такой команде регистрационный номер
0. Напомните капитану такой команды, чтобы он срочно связался с
Секретарем клуба.
Б. Складывайте все ответы на данный зачет в один файл, например,
sprint.mail и stayer.mail. Если от команды пришло несколько писем,
бросайте туда ВСЕ. Проверьте, что более поздние письма следуют за
более ранними.
В. Время от времени запускайте
reminder.pl -r номер_зачета
Например,
reminder.pl -r 1
или
reminder.pl -r 2
Это пошлет на лист z-info сводку о командах, чьи ответы получены. Но
не злоупотребляйте сводками, дабы не рассердить Почтмейстера.
Г. Когда ответов скопится достаточно, запустите
processmail.pl -o scores
Тогда у Вас получится файл scores примерно такого типа:
#1. Frequency: 1. Score: ?
Хам
#1. Frequency: 2. Score: ?
Bog
....
Замените "?" на "+" и "-" и запишите файл. Если придут новые письма,
бросьте их все в тот же файл (НЕ УБИРАЯ СТАРЫХ!!!). Команда
processmail.pl -t scores -o scores
добавит в файл scores ответы, которых Вы еще не оценили.
Примечания:
-----------
(1) Если файла scores еще не существует, команда
processmail.pl -t scores -o scores
выдает ошибку. Используйте
processmail.pl -o scores
(2) НЕ используйте команду типа
processmail.pl -t scores > scores
Это приведет к уничтожению ваших старых оценок.
Д. Когда срок приема ответов истечет, ПРОВЕРЬТЕ ваши оценки. Неприятно
наталкиваться на собственную небрежность, правда?
Команда
createtable.pl -t scores -o table
создаст файл table с таблицей результатов, а команда
collection.pl -t scores -o collection
создаст файл collecton с собранием сочинений.
Если вопросов много, формат вывода команды createtable.pl может
оказаться неудобным. В этом случае используйте формат
createtable.pl -s -t scores -o table
или
createtable.pl -m -t scores -o table
Ключ -s (от Short) выводит ответы в "сжатом" формате ("++-+-++-+-++-+-").
Ключ -m (от Medium) выводит ответы в "среднем" формате ("++-+- ++-+- ++-+-").
У команды collection.pl тоже есть ключи '-m' и '-s'. По умолчанию,
для каждого вопроса выводятся списки всех полученных ответов, разбитые
на подкатегории "ЗАСЧИТАНО", "НЕ ЗАСЧИТАНО", "НЕ ЯСНО":
ВОПРОС 1:
ЗАСЧИТАНО:
НЕ ЗАСЧИТАНО:
- неправильно
НЕ ЯСНО:
(даже если в соответствующей подкатегории нет ответов).
С ключом -s (от Short) печатаются только те подкатегории, в которых
есть хоть один ответ - а пустые подкатегории ("ЗАСЧИТАНО" и "НЕ ЯСНО"
в примере выше) не печатаются совсем. Это компактнее, но менее
предсказуемо.
С ключом -m (от Medium) собрание сочинений будет иметь промежуточный
вид - подкатегории "ЗАСЧИТАНО" и "НЕ ЗАСЧИТАНО" печатаются всегда
(даже если пустые), а "НЕ ЯСНО" - только если в ней что-то есть.
По опыту, наиболее удобный формат для человеческого восприятия
собраний сочинений - '-m', хотя это, конечно же, дело вкуса.
В любом случае, если ответы в какой-то подкатегории *есть*, то
они будут напечатаны (т.е. ничего не пропадает, речь только о том,
как программа себя ведет при отсутствии соответствующих ответов).
Е. Перед посылкой сгенерированных файлов а общий лист просмотрите
файлы еще раз -- а вдруг ошиблись Вы или я?
Вот и все!
3. РАЗНЫЕ РАЗНОСТИ
В файле process.tex хранится техническая документация к
программaм. Если Вы хотите разобраться, как именно работает система,
этот файл для Вас.
Все программы позволяют при вызове указать ключ -d (debug). С этим
ключом программы печатают массу всякой дополнительной информации --
полезной и не очень...
4. АВТОР
Борис Вейцман, borisv@lk.net
Я благодарен Якову Зайдельману, Льву Горенштейну, Алексу Покрасу и
Дмитрию Рубинштейну за помощь в разработке этой программы.
$Id: README,v 3.2 2013/10/11 15:39:35 boris Exp $
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>