CGI-программа создает динамический (виртуальный) гипертекстовый документ или же формирует ссылку на уже имеющийся документ и дополняет его передачей результатов. Чаще всего для передачи данных от удаленного пользователя Web-серверу используются HTML-формы. Именно с их помощью организуется диалог между браузером пользователя и Web-сервером удаленного узла сети. Такой диалог позволяет осуществить важнейшие операции в сети Интернет.
Далее остановимся на кодировании и обработке данных, передаваемых с помощью формы. Существует 2 метода кодирования содержащейся внутри формы информации. Первый соответствует значению параметра METHOD="GET" и называется application/x-www-form-urlencoded. Второй метод multipart/form-data используется только в том случае, если к содержимому формы подсоединяется локальный файл.
Основная схема кодирования формы в обоих случаях состоит в том, что для каждого элемента, имеющего имя (NAME), создается пара NAME=VALUE, где VALUE – конкретное значение соответствующего элемента формы. Для кнопок и переключателей передается только значение выбранного элемента. Указанные выше пары соединяются в виде символьных последовательностей, причем в качестве разделителей пар используется символ &. Сформированный таким образом набор символов пересылается как часть URLзапроса и носит название строка запроса. Этой строке предшествует конструкция вида "cgi-bin/<имя CGI-программы>?", в которой указано имя программы-обработчика данных, а знак вопроса отделяет эту часть от строки запроса.
Внутри символьной последовательности могут содержаться символы, недопустимые в составе URL-запроса. Известно, что ASCII-символы кодируются двумя шестнадцатиричными цифрами. Поэтому недопустимые в составе запроса символы заменяются триадами из знака % и 2-х цифр шестнадцатиричной системы счисления, соответствующих этому символу. Например, символ конца строки и перехода на начало новой (используется при передачи данных из поля TEXTAREA) записывается в виде: %0D0A, где 0D соответствует 13 в десятичной системе счисления, а 0A – десяти.
Web-сервер, получив URL-запрос от клиента, присваивает переменной среды QUERY_STRING значение строки запроса и вызывает CGI-программу, указанную в первой части запроса. Затем CGI-программа может обратиться к переменной cреды QUERY_STRING, чтобы осуществить обработку закодированной в ней информации.
Что требуется от CGI-скрипта? И какова цель обработки информации? Дело в том, что на основании содержащейся в форме информации необходимо создать новый HTML-документ и передать его обратно клиенту.
Какой язык следует использовать в CGI-программе? Сам CGI-интерфейс не накладывает каких-либо ограничений на выбор языка программирования. Поэтому его выбор должен быть основан на тех функциях, которые с его помощью должны быть реализованы. Перечислим эти функции:
1. Удобный интерфейс для взаимодействия с другими программами, например, с СУБД или графическим редактором.
2. Наличие средств доступа к переменным среды, так как именно с их помощью данные формы поступают на вход CGI-скрипта.
3. Наличие средств обработки текста, которые требуются для предварительной обработки (декодирования) данных, поступающих на вход программы.
В операционной системе UNIX, используемой на большинстве Webсерверов, широко применяются скрипты, состоящие из конструкций языка shell – командной оболочки операционной системы UNIX. В языке shell имеются также встроенные средства характерные для языков программирования высокого уровня: операторы цикла, условного перехода, строковые переменные и пр. Видимо, наличие этого языка и широкое использование командных процедур в оболочке UNIX привели к появлению ряда интерпретирующих языков, пригодных для написания CGI-сценариев. И хотя скрипты можно писать на любом из них, а также на языке Си, наибольшее распространение получил язык Perl – практический язык извлечений и отчетов (PERL – Practical Extraction & Report Language). Он не только удовлетворяет трем перечисленным выше требованиям, но обладает еще тремя дополнительными полезными особенностями:
1. Возможностью бесплатного получения языка.
2. Универсальностью – его версии существуют практически для всех известных платформ, в том числе для DOS и Windows.
3. Наличием большого числа готовых программных модулей, распространяемых свободно в сети Интернет.
Кроме перечисленного следует отметить, что создание CGI-скриптов на языке Perl стало значительно проще, начиная с версии 5.004 стандартного дистрибутива Perl, в который был включен специальный модуль CGI.pm [37]. Этот модуль, который был подготовлен Линкольном Штейном, автором известной книги "Как создать и поддерживать свой Web-сайт", берет на себя всю рутинную работу по созданию CGI-программы на языке Perl. Модуль, как и сам язык Perl, является платформно-независимым, в частности, он успешно работает и во всех версиях MS Windows.
10.6. Библиотека электронных изданий вузов
К 2002 году накоплен достаточный опыт и достигнут определенный уровень знаний для того, чтобы реально поставить проблему создания сетевой электронной библиотеки как для отдельного высшего учебного заведения, так и для системы высшего образования крупного города и региона. Принципиально ничего не мешает использованию такой библиотеки школьниками старших классах общеобразовательной школы и учащимся средних специальных учебных заведений. Ничто также не мешает расширить территориальные границы действия такой библиотеки до масштабов всей страны.
Если обратиться к зарубежному опыту, то следует упомянуть специализированную общеевропейскую сетевую электронную библиотеку, в которой хранятся диссертации по литературе, истории, юриспруденции и другим гуманитарным (т. е. не техническим) наукам. Библиотека за сравнительно небольшую (по зарубежным меркам) плату (от 100 до 200$ в год) предоставляет своим читателям абонемент на право сетевого доступа к изданиям. Она весьма популярна среди выпускников Европейских Университетов, стажеров и студентов старших курсов гуманитарных специальностей. Нечто подобное, но более универсальное по тематике и ориентированное на всех студентов, а может быть, и на старшеклассников, собирающихся продолжить образование и интересующихся современными проблемами науки и техники, может быть создано и в нашей стране. Какие же существуют объективные предпосылки для постановки такой задачи?
В последние годы уровень компьютеризации большинства как технических, так и гуманитарных высших учебных заведений нашего города стал достаточно высоким. Все вузы оснастились современными компьютерами класса Pentium II Celeron или даже Pentium III Coppermine, в которых процессоры работают на частотах свыше 500 МГц. Размер оперативной памяти стал не менее 64 Мбайт (чаще 128 Мбайт), а жесткого магнитного диска – превысил 10 Гбайт. Учебные классы с такими компьютерами обеспечивают использование современных программных средств, работают с мультимедийными приложениями практически любой степени сложности.
Это позволяет, в определенной степени, унифицировать учебные пособия, в частности, по дисциплинам, связанным с информационными технологиями. Вместо обмена печатными тиражами изданий учебников появляется возможность сетевого обмена электронными учебными (а может быть, и не только учебными) изданиями. Практически все вузы, насколько известно автору, подключены к глобальной сети Интернет. В каждом образовательном учреждении высшей школы функционируют локальные сети. Таким образом, задача состоит в том, чтобы обеспечить принципиальную возможность удаленного доступа студентов к электронным библиотекам любого вуза, а не только "своего".
Гораздо больший интерес представляет организация на базе электронных библиотек отдельных вузов единой распределенной базы электронных изданий с удаленным доступом. Помимо очевидных преимуществ такой интегрированной структуры она явилась бы примером и прообразом интегрированной образовательной электронной библиотеки в рамках всей нашей страны. Создание единой сетевой учебной Российской библиотеки не только обеспечило бы повышение качества обучения в каждом отдельном учебном заведении (даже только за счет того, что преподавателям и студентам была бы предоставлена возможность знакомиться с пособиями других вузов, в том числе – самых престижных и передовых в своей области знаний), но и позволило бы приблизить реальный уровень образования в удаленных от центра учебных заведениях к уровню передовых по каждому из направлений науки и техники. Каждый вуз был бы реально знаком с преподаванием во всех других вузах страны и мог бы применить в своей практике все лучшие начинания.
Такая библиотека обеспечила бы реальную возможность унификации образования в высшей школе, также и в старших классах средней школы, создала бы информационную основу для введения единой системы тестирования выпускников средних школ. В конечном счете, это привело бы к заметному повышению не только уровня компьютеризации образования, но и качества среднего и высшего образования в целом. Возможно также, что на основе такой интегрированной электронной библиотеки удалось бы преодолеть некий барьер между системами общего среднего и специального образования, который создает выпускникам школ дополнительные трудности при поступлении в Университеты, Институты и Академии.