
- •Министерство образования Российской Федерации
- •Содержание
- •1. Специальная часть 6
- •2. Технологическая часть. Особенности разработки программ на скриптовом языке Perl с использованием интерфейса cgi 60
- •3. Организационно-экономическая часть. Особенности сегментации рынка программного продукта 76
- •4. Производственная и экологическая безопасность. Организация рабочего места программиста и пользователя эвм 88
- •Введение
- •1. Специальная часть
- •2002 Г. Введение
- •1.1. Анализ системы орокс
- •1.1.1. Организация обучения на базе системы орокс
- •1.1.2. Состав индивидуального учебного плана пользователя
- •1.1.3. Процесс взаимодействия обучаемого с учебным заведением
- •1.1.4. Анализ существующих функций администрирования процесса обучения
- •1.1.5. Постановка задачи
- •1.1.5.1. Требования к информационной и программной совместимости
- •1.1.5.2. Основные элементы интерфейса, предоставляемые технологией www
- •1.2. Проектирование подсистемы статистического учёта успеваемости студентов
- •1.2.1. Язык моделирования, используемый при проектировании подсистемы
- •1.2.2. Разработка общей структурной схемы подсистемы.
- •1.2.3. Структура данных, используемых подсистемой
- •1.2.4. Проектирование и реализация компонентов подсистемы
- •1.2.4.1. Учебная карточка студента
- •1.2.4.2. Передача работ преподавателю
- •1.2.4.3. Текущая успеваемость
- •1.2.4.4. Статистика по студентам
- •1.3. Особенности реализации подсистемы
- •1.3.1. Взаимодействие с базой данных
- •1.3.2. Передача значений между формами
- •1.3.3. Особенности, связанные с подготовкой отчётов для печати
- •1.3.4. Сортировка массивов
- •1.4. Методика испытаний
- •2. Технологическая часть. Особенности разработки программ на скриптовом языкеPerlс использованием интерфейсаCgi
- •2.1.2. CommonGatewayInterfaceкак средство расширения возможностейWorldWideWebтехнологии
- •2.2. Особенности языка Perl
- •2.2.1. История создания языка
- •2.2.2. Синтаксис языка
- •2.3. Особенности отладки cgi-программ
- •2.2.1. Ошибки в Perl-программе
- •2.2.2. Отладка шаблонов
- •2.2.3. Использование ModPerl
- •2.2.4. Ошибки при настройке www-сервера
- •2.2.5. Ошибки при выполнении sql-выражений
- •2.4. Диаграммы uml, используемые при проектировании подсистемы
- •2.4.1. Введение
- •2.4.2. Диаграммы вариантов использования
- •2.4.3. Диаграммы деятельности
- •2.4.4. Диаграммы последовательностей
- •3. Организационно-экономическая часть. Особенности сегментации рынка программного продукта
- •2002 Г. Введение
- •3.1. Принципы сегментации с учётом специфики продукта
- •3.2. Методика расчёта сегментации рынка
- •3.3. Поиск сегментов рынка для подсистемы статистического учёта успеваемости студентов
- •3.5. Оценка затрат на создание программного продукта и определение точки безубыточности
- •3.6. Вывод
- •4. Производственная и экологическая безопасность. Организация рабочего места программиста и пользователя эвм
- •2002 Г. Введение
- •4.1. Вредные факторы на рабочем месте программиста и пользователя эвм
- •4.1.1. Излучения экрана монитора
- •4.1.2. Микроклимат помещения
- •4.1.3. Требования к уровням шума
- •4.1.4. Психофизиологические факторы
- •4.1.4.1. Физические перегрузки (статические)
- •4.1.4.2. Монотонность труда
- •4.1.4.3. Описание зрительной работы оператора
- •Заключение
- •Список литературы
- •Приложения Фрагмент текста программы
2.3. Особенности отладки cgi-программ
CGI-программы - не самые простые в отладке. По сложности отладки они способны сравнится лишь с отладкой драйверов. Вся сложность заключается в том, что скрипт выполняется не как обычная программа. Он выполняется в специальной среде сервера, которая создается при клиентском запросе на непривилегированном уровне.
Потенциальные ошибки, возникающие при написании CGI-программ на языкеPerlи взаимодействующие с базой данных, приведены на pис. 34.
Рис. 34. Потенциальные источники ошибок
2.2.1. Ошибки в Perl-программе
Если скрипт по каким-либо причинам не исполняется, то на скорее всего появится экран, сообщающий о внутренней ошибке сервера, изображённый на pис. 35. Такое сообщение может появиться как при синтаксических ошибках в самой Perl-программе, так и при неправильной конфигурацииWeb-сервера.
Рис. 35. Сообщение о внутренней ошибке сервера
В этом случае источник ошибок можно определить с помощью просмотра так называемых http-логов. Все обращения к серверу и все возникающие при этом ошибки фиксируются в специальных файлах. Сложности в данном случае заключаются в том, что даже на средних размеров WWW-сервере размер этих файлов достигает десятков мегабайт и поиск необходимой записи может занять некоторое время. Разборhttp-логов зачастую является едва ли не единственным способом узнать, где и почему возникла ошибка.
Приведём участок файла http-лога, возникающий в случае, если программист забыл поставить точку с запятой после некоторого оператора в строке 1104 скриптаdossier.pl:
[Mon May 06 16:46:04 2002] [error] [client 127.0.0.1] Premature end of script headers: c:/home/www/oroks22/scripts/dean_office/dossier.pl
[Mon May 06 16:46:04 2002] [error] [client 127.0.0.1] syntax error at c:/home/www/oroks22/scripts/dean_office/dossier.pl line 1105, near ") {"
[Mon May 06 16:46:04 2002] [error] [client 127.0.0.1] syntax error at c:/home/www/oroks22/scripts/dean_office/dossier.pl line 1170, near "else"
[Mon May 06 16:46:04 2002] [error] [client 127.0.0.1] Execution of c:/home/www/oroks22/scripts/dean_office/dossier.pl aborted due to compilation errors.
Видим, что файлhttp-лога имеет следующий формат:
Дата и время записи |
тип сообщения |
IP-адрес клиента |
Сообщение |
Проведя анализ приведённого участка лога видим, что источник ошибок находится в районе строки 1105 файла dossier.pl. Остальные ошибки могут возникать в результате возникновения первой ошибки. Как правило, после исправления некоторой синтаксической ошибки сообщения об остальных найденных до исправления ошибках появляться не будут.
Если же в программе отсутствуют синтаксические ошибки, то это отнюдь не означает, что программа заработает и будет работать всегда, не вызывая сообщений об ошибках, так как кроме синтаксических ошибок существует вероятность присутствия в программе логических ошибок.
Отчасти это происходит благодаря несколько причудливым правилам построения идентификаторов. Кроме стандартного набора букв, цифр и символа «_» в пользовательских идентификаторах допускается использование символа «'», в том числе в качестве первого. Данная особенность приводит к появлению дополнительного (среди бесчисленного множества других) потенциального источника ошибок. Например, следующий код будет компилироваться и выполняться без ошибок, но результат, скорее всего, будет отличным от ожидаемого:
$Owner = "John";
print("That's $Owner's house.");
На терминале в таком случае будет напечатано: «That's house.»
Также заслуживают внимания формы записи целых и вещественных чисел. И здесь не обошлось без сюрпризов. Кроме стандартных форм записи целых и вещественных чисел вроде
123 # целое
123.123 # вещественное
.5 # при записи десятичных дробей ноль в целой части можно опускать
.5E-10 # экспоненциальная форма
0xABCD # шестнадцатеричные числа записываются как в C
0377 # если первая цифра - ноль, то это восьмеричное число
Perlподдерживает и такую:
9_123_456 # это, видимо, для "удобства чтения"
и даже, как показывает практика, такую:
9_1__2_3___456_____
Также возможны ошибки, если поставить символ «_» в начале числа, например:
$f = _1;
print($f + 2); # будет напечатано 2 вместо ожидаемых 3
print(_1 + 2); # а так вообще ничего не будет напечатано