Programming Taskbook


E-mail:

Пароль:

Регистрация пользователя   Восстановление пароля

 

ЮФУ SMBU

Электронный задачник по программированию

©  М. Э. Абрамян (Южный федеральный университет, Университет МГУ-ППИ в Шэньчжэне), 1998–2024

 

Teacher Pack | Удаленные репозитории | Особенности работы с задачником

PrevNext


Особенности работы с задачником при использовании репозитория

Особенности работы модуля PT4Load при наличии сертификата доступа access.dat

Наличие в рабочем каталоге файла access.dat — сертификата доступа к ftp-репозиторию — приводит к тому, что при запуске вспомогательного модуля PT4Load выполняется ряд дополнительных действий.

Вначале проверяется корректность сертификата; в случае, если он имеет неверный формат, выводится соответствующее сообщение, и модуль PT4Load немедленно завершает работу.

После проверки корректности сертификата проверяется, была ли выполнена его активация на данном компьютере, и при отсутствии сведений об успешной активации выводится диалоговое окно для ввода кода активации:

Если введен неверный код, то модуль PT4Load немедленно завершает работу. Если учащемуся неизвестен код активации, то он может отказаться от использования сертификата доступа, нажав соответствующую кнопку. При этом будет выведено следующее сообщение:

Заметим, что начиная с версии 4.22, восстановить отключенный сертификат доступа можно в программе PT4Setup в разделе настройки рабочих каталогов.

Для каждого каталога требуется единственная активация. Информация о правильном коде активации в зашифрованном виде заносится в файл pt4.ini данного каталога. При шифровании используются характеристики компьютера, поэтому зашифрованный вариант не удастся использовать на другом компьютере.

Если активация выполнена успешно, то выводится соответствующее сообщение и анализируется содержимое файла результатов (results.dat или results.abc для системы PascalABC.NET). Если содержащаяся в нем информация об учащемся отличается от данных сертификата, то об этом выводится сообщение, и предлагается заменить файл результатов:

При выборе варианта «Да» прежний файл результатов удаляется, при выборе варианта «Отмена» модуль PT4Load немедленно завершает работу.

Примечание. Начиная с версии 4.23, запрос о замене файла результатов выводится только в случае, если существующий файл результатов содержит какие-либо данные о выполненных заданиях. Если такие данные отсутствуют, то файл результатов удаляется автоматически.

На следующем этапе работы модуля PT4Load может быть выполнена процедура обновления вспомогательных файлов. Эта процедура обязательно выполняется один раз в день; кроме того, она выполняется сразу после активации сертификата и в случае, когда в каталоге отсутствует файл результатов или он содержит неверную информацию об учащемся. Если в момент обновления отсутствует подключение к интернету, то в версиях задачника до 4.21 об этом выводилось сообщение, и модуль PT4Load немедленно завершался. В такой ситуации использовать модуль можно было только после восстановления подключения к интернету и успешного прохождения процедуры обновления.

В версии 4.22 в случае невозможности подключения к удаленному репозиторию также выводится сообщение, но при этом задачник переходит в режим локального репозитория. Сообщение выглядит следующим образом:

Режим локального репозитория будет сохраняться, пока при очередной попытке обновления вспомогательных файлов не восстановится подключение к удаленному репозиторию. Признаком режима локального репозитория является красный цвет метки, расположенной рядом с фамилией учащегося (буква «A» в этой метке означает, что в каталоге имеется файл access.dat, а буква «V» — что в каталоге создан файл вариантов):

Примечание. Режим локального репозитория позволяет сохранить варианты программ с решениями и отправить их в удаленный репозиторий после восстановления подключения. Однако в этом режиме, разумеется, невозможна начальная настройка рабочего каталога, так как она должна выполняться с использованием файлов, полученных из удаленного репозитория. Если по каким-либо причинам нельзя ожидать быстрого восстановления подключения к удаленному репозиторию, то начальную настройку можно выполнить, переслав учащемуся каким-либо способом полный вариант настроенного рабочего каталога, который автоматически генерируется программой «Контрольный центр преподавателя» для всех учащихся данной группы в каталоге группы (см. описание команды «Изменить каталог группы»).

Выполнить обновление вспомогательных файлов можно и явным образом, используя команду «Проверить обновления», которая располагается последней в контекстном меню программы PT4Load. Если в рабочем каталоге отсутствует сертификат доступа, то эта команда имеет название «Настройка каталога обновлений», поскольку позволяет настроить доступ к различным видам каталогов обновлений (эти возможности были реализованы в версии задачника 4.15). При наличии сертификата доступа настраивать каталог обновлений нельзя, так как в качестве такого каталога обязательно используется каталог ftp-репозитория.

Если в ходе обновления потребуется скачать из удаленного репозитория некоторые файлы, то в нижней части экрана появится окно с полосой прогресса, показывающее, какая часть файлов уже скачана. После завершения скачивания это окно исчезает, и выводится окно с информацией о добавленных, обновленных и удаленных файлах (вывод окна можно отключить, используя настройки файла loaddat.txt).

Все файлы обновляются только в случае, если размер существующего файла отличается от размера файла, находящегося в репозитории. Даты обновления файлов не проверяются, так как они могут быть рассогласованы на локальном компьютере учащегося и на сервере, содержащем репозиторий.

Ниже приведен образец информации, которая может быть выведена в окне обновления:

В приведенном примере кроме копирования новых файлов было выполнено подключение файла вариантов, полученного из репозитория. Завершающий фрагмент текста относится к файлам преподавателя teacher.txt, работа с которыми описывается в разделе «Просмотр и рецензирование учебных программ».

Примечание. Кроме процедуры полного обновления файлов (которая не выполняется, если в этот день автоматическое обновление уже производилось) может быть выполнена процедура синхронизации файлов результатов. Эта процедура выполняется автоматически каждые 20 минут. Если при очередном запуске модуля PT4Load окажется, что размер файла результатов на локальном диске больше размера файла результатов в репозитории, то файл результатов скопируется в репозиторий. Если, наоборот, окажется, что размер файла результатов в репозитории больше размера файла результатов на локальном диске, то файл результатов загрузится на локальный диск. Таким образом, гарантируется, что в репозитории будут храниться самые последние результаты (за исключением, возможно, тех, которые были получены в течение последних 20 минут). В режиме локального репозитория синхронизация файлов результатов не выполняется.

Затем выполняется проверка текущей среды программирования. Если оказывается, что среда программирования, указанная в файле результатов, не соответствует языку программирования, указанному в сертификате доступа, то эта среда автоматически изменяется. При этом используются следующие правила: если среди доступных сред имеется в точности та версия среды, которая указана в сертификате, то устанавливается эта среда. Если такой версии нет, но имеются другие версии этой же среды, то устанавливается первая из версий, указанная в списке сред контекстного меню. Если ни одной версии требуемой среды на компьютере не установлено, но имеются другие среды, связанные с тем же языком программирования, то выбирается первая из этих сред, указанная в списке сред контекстного меню. Если на компьютере отсутствуют среды для того языка, который указан в сертификате доступа, то выводится сообщение об ошибке «Не найдено ни одной среды программирования для языка, указанного в сертификате доступа», и модуль PT4Load немедленно завершается.

Заметим, что порядок следования сред в контекстном меню можно изменять в программе PT4Setup. Заметим также, что при подключенном сертификате невозможно выбрать из контекстного меню среду, не соответствующую языку, указанному в сертификате (в этом случае выводится сообщение об ошибке «Выбранная среда не соответствует языку, указанному в сертификате доступа»), однако допустимо выбрать другую среду для того же языка программирования; при последующих запусках модуля PT4Load этот выбор будет сохраняться.

При подключенном сертификате доступа становятся недоступными команды контекстного меню, связанные с изменением файла результатов и подключением/отключением файла вариантов, так как все эти настройки автоматически устанавливаются по информации из сертификата и в данном случае не могут быть изменены учащимся по своему желанию.

Таким образом, наличие в рабочем каталоге активированного сертификата доступа, наряду с автоматизацией ряда настроек (определение имени учащегося и среды программирования) налагает ряд ограничений, обеспечивающих согласованное использование данных из рабочего каталога и удаленного репозитория.

Особенности работы учебных программ при наличии сертификата доступа access.dat

При наличии сертификата доступа access.dat на начальном этапе выполнения учебной программы выполняется ряд проверок, связанных с этим сертификатом. В частности, проверяется возможность его открытия, его корректность, наличие данных о его активации, соответствие имени учащегося и, наконец, возможность создания вспомогательного скрытого каталога для хранения данных, передаваемых в репозиторий (каталог создается только для вариантов 1–3 сохранения результатов, при которых в репозитории сохраняются исходные тексты учебных программ; начиная с версии 4.22, этот каталог используется также для хранения данных в режиме локального репозитория). Если одна из перечисленных выше проверок окончилась неудачей, то выводится соответствующее сообщение, и программа немедленно завершается (ошибки, связанные с отсутствием активации сертификата или несоответствием имен учащихся, требуется исправлять с помощью модуля PT4Load). В ходе проверок не тестируется возможность подключения к интернету и корректность данных, связанных с подключением.

Второй этап, связанный с использованием сертификата доступа, наступает при завершении выполнения задания. Действия зависят от выбранного варианта сохранения результатов, а начиная с версии 4.22, также от того, установлен ли режим локального репозитория (данный режим устанавливается модулем PT4Load, если ему не удается выполнить процедуру обновления данных из репозитория).

Для варианта 0 делается попытка сохранить в репозитории файл результатов, причем только в ситуации, когда задание выполнено или (при наличии файла check.dat) задачник успешно проверил все тесты и ожидает от преподавателя ввода подтверждающего кода. При наличии режима локального репозитория никакие дополнительные действия не выполняются и дополнительные сообщения не выводятся.

Если режим локального репозитория не установлен, но доступ к репозиторию невозможен (что, скорее всего, означает краткосрочное отключение интернета), то, как правило, сообщение об этом также не выводится. Данное обстоятельство связано с тем, что краткосрочное отключение интернета обычно не может нарушить синхронизацию данных; при восстановлении подключения файл результатов с новыми данными всё равно будет сохранен в репозитории при последующих запусках программ. Сообщение выводится только при обнаружении неправильных данных в репозитории.

Для вариантов 1–3 сохранения результатов действия по сохранению данных в репозитории являются более сложными. Напомним, что вариант 1 означает сохранение только тех программ, которые привели к сообщению о том, что задание выполнено (или о том, что задание проверено задачником), вариант 2 обеспечивает сохранение всех программ, кроме ознакомительных, и, наконец, вариант 3 обеспечивает сохранение всех без исключения программ.

Не приводя подробного описания механизма сохранения текстов программ, отметим лишь, что он разработан с учетом нескольких условий:

  • минимизация действий по пересылке данных по ftp,
  • минимизация размера данных, пересылаемых по ftp,
  • защита пересылаемых данных от возможных корректировок;
  • минимизация вспомогательных данных, хранящихся во вспомогательном скрытом каталоге.

Во время сохранения данных в репозитории в окне задачника отображается сообщение «Сохранение результатов в репозитории...» зеленого цвета. При успешном сохранении в окне выводится сообщение «(*)Текст программы успешно сохранен в репозитории». При обнаружении неправильных данных в репозитории в окне выводится соответствующее описание ошибки, имеющее красный цвет.

В режиме локального репозитория или в ситуации, когда сайт репозитория недоступен (что автоматически устанавливает режим локального репозитория на время текущего запуска программы) данные сохраняются в локальном репозитории, в а окне выводится немного измененное сообщение: «(.)Текст программы успешно сохранен в репозитории (локальный режим)», причем для этого сообщения используется красный цвет.

Сведения о сохранении текста программы в репозитории отражаются также в файле результатов. Если данный запуск привел к сохранению программы в удаленном репозитории, то в соответствующей записи в файле результатов выводится символ «*» (звездочка) между датой и временем запуска и описанием результата этого запуска, например:

     MPI9Matr14  c09/04 13:53*Задание выполнено!
     MPI9Matr15  c09/04 14:00*Введены не все требуемые исходные данные.
     MPI9Matr15  c09/04 14:00*Запуск с правильным вводом данных.
     MPI9Matr15  c09/04 14:07*Задание выполнено!

Если программа сохранена в локальном репозитории, то вместо символа «звездочка» используется символ «точка», например:

     MPI9Matr14  c09/04 13:53.Задание выполнено!
     MPI9Matr15  c09/04 14:00.Введены не все требуемые исходные данные.
     MPI9Matr15  c09/04 14:00.Запуск с правильным вводом данных.
     MPI9Matr15  c09/04 14:07.Задание выполнено!

Таким образом, учащийся может определить, какие версии его программ были сохранены в репозитории, просто просмотрев содержимое файла результатов.

Следует отметить одну проблему, связанную с согласованием задания и связанным с ним текстом программы. Для корректной работы описанного механизма необходимо, чтобы файл, в котором содержится программа решения задания, имел имя, в точности совпадающее с именем выполняемого задания. При создании заготовок с помощью модуля PT4Load, это выполняется автоматически, однако всегда существует опасность рассогласования этих данных (например, если при выполнении задания на языке PascalABC.NET учащийся изменит имя задания в процедуре Task в файле Begin1.pas на Begin2). При обнаружении рассогласования данных выводится окно с соответствующим сообщением. В подобной ситуации сохранение текущего текста программы в репозитории не производится.

Проблема, связанная с рассогласованием имени задания и имени файла для выполнения этого задания, возникает и при использовании внешних групп заданий, когда в новую внешнюю группу включаются задания, связанные с задачником. Эта проблема решается с помощью дополнительных настроек функции Task задачника, описанных в следующем пункте.

Особенности механизма сохранения исходных программ для внешних групп

Внешние группы заданий оформляются в виде обычных текстовых файлов, содержащих набор переключателей. В дальнейшем эти файлы могут обрабатываться модулями PT4Load и PT4Demo для генерации программ-заготовок и просмотра формулировок заданий.

Разумеется, те задания из внешних групп, которые не связаны с задачником, не могут быть сохранены во внешним репозитории, поскольку при их запуске не происходит подключения ядра задачника. Однако если во внешнюю группу включено задание из задачника, то его сохранение в репозитории возможно и даже может оказаться желательным. При этом возникает специфическая проблема, обусловленная тем, что имя файла, в котором сохраняется заготовка, определяется не именем задания из задачника, а тем именем, которое указано во внешней группе. Подобное рассогласование будет препятствовать корректному сохранению, поскольку по имени задания задачник не сможет определить файл, содержащий текст соответствующей программы.

Для решения этой проблемы в задачник версии 3.18 добавлена новая возможность, связанная со строковым параметром функции Task. Теперь в начале этого параметра можно указать имя файла, в котором содержится решение задачи, отделив его от последующего текста (с именем задания) символом «=». Например, текст Task('Sample1=Begin1') будет означать, что требуется инициализировать задание Begin1, но текст программы для решения будет искаться в файле с именем Sample1 (расширение не указывается, так как оно определяется автоматически по используемой среде программирования).

Если некоторое задание из внешней группы связано с задачником, то при генерации заготовки для этого задания в модуле PT4Load имя файла в начало параметра функции Task добавляется автоматически. Указанное дополнение функции Task выполняется только в том случае, если данная функция связана с электронным задачником. Если в заготовке присутствует «посторонняя» функция Task (связанная, например, с заданиями для Робота или Чертежника), то такая заготовка в файле внешней группы должна быть помечена пустым переключателем [#], и в этом случае параметр функции Task не будет дополняться именем файла.


PrevNext

 

Рейтинг@Mail.ru

Разработка сайта:
М. Э. Абрамян, В. Н. Брагилевский

Последнее обновление:
01.01.2024