version 2.2, 2005/01/24 03:36:37
|
version 3.2, 2013/10/11 15:39:35
|
Line 7
|
Line 7
|
|
|
1. УСТАНОВКА И НАСТРОЙКА ПРОГРАММ |
1. УСТАНОВКА И НАСТРОЙКА ПРОГРАММ |
|
|
А. Зайдите на http://www.kulichki.com/znatoki/boris/processmail и |
А. Зайдите на http://internet.chgk.info/boris/processmail и |
возьмите либо processmail.zip, либо processmail.tgz. Распакуйте эти |
скачайте файл processmail.zip. Распакуйте этот |
файлы на Вашм компьютере. Вы найдете: |
файл на Вашм компьютере. Вы найдете: |
|
|
- README -- этот файл |
- README -- этот файл |
- processmail.pl, createtable.pl, reminder.pl, collection.pl -- |
- processmail.pl, createtable.pl, reminder.pl, collection.pl -- |
Line 17
|
Line 17
|
- subroutines.pl -- вспомогательный файл, используемый прочими |
- subroutines.pl -- вспомогательный файл, используемый прочими |
скриптами |
скриптами |
- parameters.pl -- файл, содержащий настраиваемые параметры программ |
- parameters.pl -- файл, содержащий настраиваемые параметры программ |
- process.tex, process.ps -- техническая документация к программам |
- process.tex, process.pdf -- техническая документация к программам |
(если Вы не собираетесь ``влезать вовнутрь'', Вам она не |
(если Вы не собираетесь ``влезать вовнутрь'', Вам она не |
понадобится ) |
понадобится ) |
|
|
Б. В каждом из файлов processmail.pl, createtable.pl, reminder.pl, |
Б. В каждом из файлов processmail.pl, createtable.pl, reminder.pl, |
collection.pl замените первую строку (#!/usr/local/bin/perl) на ссылку |
collection.pl замените первую строку (#!/usr/bin/perl) на ссылку |
на положение перла в Вашей системе. Сделайте эти файлы выполняемыми (в |
на положение перла в Вашей системе. Сделайте эти файлы выполняемыми (в |
Юниксе это делает chmod a+x *.pl) |
Юниксе это делает chmod a+x *.pl) |
|
|
В. Посмотрите внимательно файл parameters.pl. В нем Вы можете захотеть |
В. Посмотрите внимательно файл parameters.pl. В нем Вы можете захотеть |
изменить ряд параметров: |
изменить ряд параметров: |
|
|
|
Вот эти параметры задать ОБЯЗАТЕЛЬНО: |
|
|
$fromaddress задает Ваш обратный адрес |
$NAME[1] и $NAME[2] -- названия зачетов |
$DK задает название Вашей команды |
$MINQUEST[1], $MAXQUEST[1], $MINQUEST[2], $MAXQUEST[2] -- номера |
$date -- системная процедура, которая выдает московское время |
первого и последнего вопросов в каждом зачете |
(если Вы не можете его вычислить, напишите просто $date="";) |
$FILES[1], $FILES[2] -- названия файлов, куда вы складываете письма |
процедуры printheader и printfooter печатают заголовок Вашего |
с ответами в каждом зачете. |
письма-напоминания на лист z-info |
|
|
ВНИМАНИЕ: синтаксис переменных $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. РАБОТА С ПРОГРАММАМИ |
2. РАБОТА С ПРОГРАММАМИ |
|
|
Line 56 collection.pl замените первую строку (#!
|
Line 80 collection.pl замените первую строку (#!
|
0. Напомните капитану такой команды, чтобы он срочно связался с |
0. Напомните капитану такой команды, чтобы он срочно связался с |
Секретарем клуба. |
Секретарем клуба. |
|
|
Б. Складывайте все ответы в один файл, например, answers. Если от |
Б. Складывайте все ответы на данный зачет в один файл, например, |
команды пришло несколько писем, бросайте туда ВСЕ. Проверьте, что |
sprint.mail и stayer.mail. Если от команды пришло несколько писем, |
более поздние письма следуют за более ранними. |
бросайте туда ВСЕ. Проверьте, что более поздние письма следуют за |
|
более ранними. |
|
|
|
|
В. Время от времени запускайте |
В. Время от времени запускайте |
reminder.pl -m answers |
reminder.pl -r номер_зачета |
|
|
|
Например, |
|
reminder.pl -r 1 |
|
или |
|
reminder.pl -r 2 |
|
|
Это пошлет на лист z-info сводку о командах, чьи ответы получены. Но |
Это пошлет на лист z-info сводку о командах, чьи ответы получены. Но |
не злоупотребляйте сводками, дабы не рассердить Почтмейстера. |
не злоупотребляйте сводками, дабы не рассердить Почтмейстера. |
|
|
|
|
Г. Когда ответов скопится достаточно, запустите |
Г. Когда ответов скопится достаточно, запустите |
processmail.pl -m answers -o scores |
processmail.pl -o scores |
Тогда у Вас получится файл scores примерно такого типа: |
Тогда у Вас получится файл scores примерно такого типа: |
|
|
#1. Frequency: 1. Score: ? |
#1. Frequency: 1. Score: ? |
Line 77 processmail.pl -m answers -o scores
|
Line 110 processmail.pl -m answers -o scores
|
|
|
Замените "?" на "+" и "-" и запишите файл. Если придут новые письма, |
Замените "?" на "+" и "-" и запишите файл. Если придут новые письма, |
бросьте их все в тот же файл (НЕ УБИРАЯ СТАРЫХ!!!). Команда |
бросьте их все в тот же файл (НЕ УБИРАЯ СТАРЫХ!!!). Команда |
processmail.pl -t scores -m answers -o scores |
processmail.pl -t scores -o scores |
добавит в файл scores ответы, которых Вы еще не оценили. |
добавит в файл scores ответы, которых Вы еще не оценили. |
|
|
Примечания: |
Примечания: |
----------- |
----------- |
(1) Если файла scores еще не существует, команда |
(1) Если файла scores еще не существует, команда |
processmail.pl -t scores -m answers -o scores |
processmail.pl -t scores -o scores |
выдает ошибку. Используйте |
выдает ошибку. Используйте |
processmail.pl -m answers -o scores |
processmail.pl -o scores |
(2) НЕ используйте команду типа |
(2) НЕ используйте команду типа |
processmail.pl -t scores -m answers > scores |
processmail.pl -t scores > scores |
Это приведет к уничтожению ваших старых оценок. |
Это приведет к уничтожению ваших старых оценок. |
|
|
|
|
Д. Когда срок приема ответов истечет, ПРОВЕРЬТЕ ваши оценки. Неприятно |
Д. Когда срок приема ответов истечет, ПРОВЕРЬТЕ ваши оценки. Неприятно |
наталкиваться на собственную небрежность, правда? |
наталкиваться на собственную небрежность, правда? |
|
|
Команда |
Команда |
createtable.pl -m answers -t scores -o table |
createtable.pl -t scores -o table |
создаст файл table с таблицей результатов, а команда |
создаст файл table с таблицей результатов, а команда |
collection.pl -m answers -t scores -o collection |
collection.pl -t scores -o collection |
создаст файл collecton с собранием сочинений. |
создаст файл collecton с собранием сочинений. |
|
|
Если вопросов много, формат вывода команды createtable.pl может |
Если вопросов много, формат вывода команды createtable.pl может |
оказаться неудобным. В этом случае используйте формат |
оказаться неудобным. В этом случае используйте формат |
createtable.pl -s -m answers -t scores -o table |
createtable.pl -s -t scores -o table |
Ключ -s (от Short) выводит ответы в "сжатом" формате. |
или |
|
createtable.pl -m -t scores -o table |
|
Ключ -s (от Short) выводит ответы в "сжатом" формате ("++-+-++-+-++-+-"). |
|
Ключ -m (от Medium) выводит ответы в "среднем" формате ("++-+- ++-+- ++-+-"). |
|
|
|
|
|
У команды collection.pl тоже есть ключи '-m' и '-s'. По умолчанию, |
|
для каждого вопроса выводятся списки всех полученных ответов, разбитые |
|
на подкатегории "ЗАСЧИТАНО", "НЕ ЗАСЧИТАНО", "НЕ ЯСНО": |
|
ВОПРОС 1: |
|
|
|
ЗАСЧИТАНО: |
|
|
|
НЕ ЗАСЧИТАНО: |
|
- неправильно |
|
|
|
НЕ ЯСНО: |
|
|
|
(даже если в соответствующей подкатегории нет ответов). |
|
|
|
С ключом -s (от Short) печатаются только те подкатегории, в которых |
|
есть хоть один ответ - а пустые подкатегории ("ЗАСЧИТАНО" и "НЕ ЯСНО" |
|
в примере выше) не печатаются совсем. Это компактнее, но менее |
|
предсказуемо. |
|
С ключом -m (от Medium) собрание сочинений будет иметь промежуточный |
|
вид - подкатегории "ЗАСЧИТАНО" и "НЕ ЗАСЧИТАНО" печатаются всегда |
|
(даже если пустые), а "НЕ ЯСНО" - только если в ней что-то есть. |
|
|
|
По опыту, наиболее удобный формат для человеческого восприятия |
|
собраний сочинений - '-m', хотя это, конечно же, дело вкуса. |
|
В любом случае, если ответы в какой-то подкатегории *есть*, то |
|
они будут напечатаны (т.е. ничего не пропадает, речь только о том, |
|
как программа себя ведет при отсутствии соответствующих ответов). |
|
|
В ИЧБ принят особый формат: он состоит из предварительного и основного |
|
тура, причём при равенстве ответов в основном туре преимущество у |
|
команды, у которой лучше результат в предварительном туре. Для этого |
|
формата работает специальная программа createtable2.pl. Она |
|
вызывается так: |
|
createtable.pl -s -T scores1 -M answers1 -m answers -t scores -o table |
|
где scores1 и answers1 относятся к предварительному туру, а |
|
scores и answers -- к основному. |
|
|
|
Перед посылкой на общий лист просмотрите файлы еще раз -- а вдруг |
Е. Перед посылкой сгенерированных файлов а общий лист просмотрите |
ошиблись Вы или я? |
файлы еще раз -- а вдруг ошиблись Вы или я? |
|
|
Вот и все! |
Вот и все! |
|
|
|
|
3. РАЗНЫЕ РАЗНОСТИ |
3. РАЗНЫЕ РАЗНОСТИ |
|
|
В файле process.tex хранится техническая документация к |
В файле process.tex хранится техническая документация к |
Line 128 scores и answers -- к основному.
|
Line 187 scores и answers -- к основному.
|
ключом программы печатают массу всякой дополнительной информации -- |
ключом программы печатают массу всякой дополнительной информации -- |
полезной и не очень... |
полезной и не очень... |
|
|
|
|
4. АВТОР |
4. АВТОР |
|
|
Борис Вейцман, boris@plmsc.psu.edu |
Борис Вейцман, borisv@lk.net |
http://www.plmsc.psu.edu/~boris |
|
|
|
Я благодарен Якову Зайдельману, Льву Горенштейну, Алексу Покрасу и |
Я благодарен Якову Зайдельману, Льву Горенштейну, Алексу Покрасу и |
Дмитрию Рубинштейну за помощь в разработке этой программы. |
Дмитрию Рубинштейну за помощь в разработке этой программы. |
|
|
$Id$ |
|
|
|
|
$Id$ |