Programming Taskbook


E-mail:

Пароль:

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

 

ЮФУ

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

©  М. Э. Абрамян (Южный федеральный университет), 1998–2022

 

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

PrevNext


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для вариантов 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*Задание выполнено!

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

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

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

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

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

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

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

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

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


PrevNext

 

Рейтинг@Mail.ru

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

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