Common Gateway Interface - средство расширения возможностей World Wide Web технологии
Главное назначение Common Gateway Interface
- обеспечение единообразного потока данных между сервером и прикладной
программой, которая запускается из-под сервера
CGI-скрипт - программа написанная в соответствии со спецификацией
Common Gateway Interface. CGI-скрипты могут быть написаны на любом
языке программирования (C, C++, PASCAL, FORTRAN и т. п.) или командном
языке (shell, cshell, командный язык MS-DOS, Perl и т. п.). Скрипт
может быть написан даже на языке редактора EMAC в системах Unix
Шлюз - это CGI-скрипт, который используется для обмена
данными с другими информационными ресурсами Internet или приложениями-демонами.
Обычная CGI- программа запускается сервером HTTP для выполнения
некоторой работы, возвращает результаты серверу и завершает свое
выполнение
Доступ к базе данных под управлением Ingres
Простой вызов постоянного запроса
Форматирование вывода
Запрос через Query-String
Фильтрация
Формы
Элемент | Назначение | |
INPUT | поля ввода информации имеют множество типов | |
TEXTAREA | поле ввода многострочного текста | |
SELECT | описание меню | |
OPTION | описание элемента меню |
Пример использования полей ввода
<FORM METHOD=POST ACTION=http://polyn.net.kiae.su/cgi-bin/test>
<P> Ниже приведен список примеров полей ввода:<BR>
Простое текстовое поле: <INPUT NAME="test1" VALUE="test1" TYPE="text"><BR>
Поле типа checkbox: <INPUT NAME="test2" TYPE="checkbox" CHECKED><BR>
Поле типа radiobutton: <INPUT NAME="test3" TYPE="radio"><BR>
Поле типа password: <INPUT NAME="test4" TYPE="password"><BR>
Невидимое поле: <INPUT NAME="test5" TYPE="hidden" VALUE="kuku"><BR>
Кнопка Submit: <INPUT NAME="submit" VALUE="Submit" TYPE="submit"><BR>
Кнопка Reset: <INPUT NAME="reset" VALUE="Reset" TYPE="reset"><BR>
Графическая кнопка: <INPUT NAME="graph" VALUE="default" SRC="test.gif" TYPE="image"><BR>
</FORM>
Гипертекстовые контекстные ссылки
<A HREF="http://polyn.net.kiae.su/index.html">
Индекс базы данных "Полынь"</A>
<A NAME="point">
<A HREF="http://polyn.net.kiae.su/index.html#point">
Ссылка на точку "point" в документе "index.html"</A>
Характеристики современных ИПС
Тестовый запрос:
"Best on the Web"
Использовались следующие механизмы улучшения запроса:
простой запрос
сложный запрос
нормализация лексики
ранжирование
коррекция по релевантности
Система | тип ИПЯ | Коррекция | тест |
Lycos | Like this | + | 10 |
Altavista | exp.bul. | + | 1 |
Yahoo | bul. | - | 3 |
OpenText | bul.ord. | - | 5 |
InfoSeek | bul.weight | - | - |
Индексирование и Поиск
Модели индексирования и поиска:
векторная модель информационного потока
нечеткие множества
вероятностная модель
Типы информационно поисковых языков:
традиционные ИПЯ
взвешивание терминов
ИПЯ типа "Like this"
Способы коррекции результатов поиска
фильтрация
коррекция по релевантности
кластеризация
Векторная модель:
Запрос к системе:
Lxq=r
где
q -вектор запроса
r - вектор отклика
Традиционный ИПЯ:
((информационная and система) or ИПС) not СУБД
Найти все документы, в которых встречается термин
"информационная" и "система", либо термин "ИПС", но не встречается
термин "СУБД".
Недостатки:
Плохая масштабируемость выдачи. OR приводит к слишком
большому расширению списка релевантных документов, а AND резко
сужает отклик.
Модификации:
Взвешенный запрос (каждому термину приписывают некоторый
вес)
Индексы
Состав индексов различных систем
()
WWWW | WebCraw. | Lycos | Harvest | Galaxy | Yahoo | |
URL |
telnet
gopher
ftp
WWW
*
*
*
*
*
*
*
*
*
Информационно-поисковые системы Internet
Назначение:
Свободный поиск информации в информационных массивах
по совокупности признаков (обычно ключевых слов) - ретро-поиск
Поиск информации по заранее подготовленным запросам
с определенной периодичностью - избирательное распространение
информации.
Основные причины существования ИПС:
большой объем информации
ее недостаточная или чересчур подробная структуризация
широкий тематический профиль информационных массивов
Информационные элементы
Элемент | Значение | Примечание | ||
<EM>...</EM> | Типографское
усиление | Часто отображается как Italic | ||
<CITE>...</CITE> | Цитирование | Не реализовано в
Mosaic | ||
<STRONG>...</STRONG> | Усиление | Отображается как BOLD | ||
<CODE>...</CODE> | Отображает
примеры кода (например, коды программ) | Отображается непропорциональным фонтом | ||
<SAMP>...</SAMP> | Последователь-ность литералов | Не реализован в Mosaic | ||
<KBD>...</KBD> | Пример ввода символов с клавиатуры | Используется при разработке руководств | ||
<VAR>...</VAR> | Переменная | |||
<DFN>...</DFN> | Определение | только Arena | ||
<Q>...</Q> | Текст, заключенный в скобки | Вид скобок зависит от атрибута LANG. Реализован только в Arena | ||
<LANG>...</LANG> | Определяет язык отображения | только Arena | ||
<AU>...</AU> | Автор | только Arena | ||
<PERSON>...</PERSON> | Имя персоны | Введено для простоты выделения при индексировании документов. Реализован только в Arena | ||
<ACRONIM>...</ACRONIM> | Акроним | только Arena | ||
<ABBREV>...</ABBREV> | Аббревиатура | только Arena | ||
<INS>...<INS> | Вставленный текст | только Arena | ||
<DEL>...</DEL> | Удаленный текст | только Arena |
Язык гипертекстовой разметки HTML
Задачи разработки HTML:
дать дизайнерам гипертекстовых баз данных простое
средство создания документов
сделать это средство достаточно мощным, чтобы отразить имеющиеся
на тот момент представления об интерфейсе пользователя гипертекстовых
баз данных
Способ представления документа - текстовый
файл:
такой файл можно создать в любом текстовом редакторе
на любой аппаратной платформе в среде любой операционной системы
к моменту разработки HTML существовал американский стандарт
для разработки сетевых информационных систем - Z39.50, в котором
в качестве единицы хранения указывался простой текстовый файл
в кодировке LATIN1, что соответствует US ASCII
Версии языка:
HTML 1.0 - была направлена
на представление языка как такового, где описание его возможностей
носило скорее рекомендательный характер
HTML 2.0 - фиксировала практику использования конструкций
языка
HTML++ - новые возможности
HTML 3.0 - призвана упорядочить все нововведения и
согласовать их с существующей практикой
Языки типа "like this". Меры близости.
M - число терминов запроса;
Qj - j-ый термин запроса;
N - число WWW страниц в индексе;
Pi - i-ая страница;
Ri,q - релевантность страницы i запросу q;
Lii,k - 1 если из документа k есть ссылка на документ
i, 0 в противном случае;
Loi,k - 1 если из документа i есть ссылка на документ
k, 0 в противном случае.
Ci,j - 1 если страница i содержит термин j, 0 в противном
случае.
(1)
(2)
(3)
(4)
Элемент img
<img SRC="http://polyn.net.kiae.su/gif/sarclast.gif" ALT="Sarcofagus.Winter, 1997">
<A HREF="doc.html"><img SRC="icon.gif" ALIGN=MIDDLE></A>
Элемент TEXTAREA
<TEXTAREA NAME="multi" ROWS=5 COLS=20>
This is a test
TEXTAREA элемент
</TEXTAREA>
Элементы стиля
Элемент | Значение | Примечание |
<I>.....</I> | Курсив(Italic) | |
<B>...</B> | Усиление(BOLD) | |
<TT>...</TT> | Телетайп | |
<U>...</U> | Подчеркивание | |
<S>...</S> | Перечеркнутый текст | Только Arena при
наличии соответствующего фонта |
<BIG>...</BIG> | Увеличенный текст | только Arena |
<SMALL>...</SMALL> | Уменьшенный фонт | только Arena |
<SUB>...</SUB> | Подстрочные
символы | только Arena |
<SUP>...</SUP> | Надстрочные
символы | только Arena |
Элементы заголовка
<TITLE> | поля документа | |
<BASE> | базовый адрес | |
<ISINDEX> | поисковый документ | |
<LINK> | общая гипертекстовая ссылка | |
<META> |
Примеры элементов заголовка:
<TITLE> Название документа </TITLE>
<BASE HREF="http://polyn.net.kiae.su/>,
<A HREF="/altai/index.html">
<A HREF="http://polyn.net.kiae.su/altai/index.html">
<img SRC="/gif/test.gif">
<img SRC="http://polyn.net.kiae.su/gif/test.gif">
<ISINDEX HREF="http://polyn.net.kiae.su/cgi-bin/search" PROMPT="Enter Keywords:">
<LINK REL=Help HREF="http://polyn.net.kiae.su/dss/syshelp.html">
<LINK REL=Banner HREF=banner.html>
<META HTTP-EQUIV="Keywords"
CONTENT="Plsma, Nuclear Physics">
Keywords: Plasma, Nuclear Physics
Литература
Эд Крол. Все об Internet. , Киев, 1995.
Пол Гилтер. Навигатор Internet. Путеводитель
для человека с компьютером и модемом. Джон Уайли энд Санз, М.-1995
С.Клименко, В.Уразметов. . Российский Центр Физико-Технической
Информатики. Протвино, 1995
Электронная почта в системе MS-DOS. Санкт-Петербург,
1995
Павел Храмцов. Лабиринт Internet. Практическое
руководство. М.-Электронинформ, 1996.
Александр Лебедев.
Механизмы обмена данными
переменные окружения
формат командной строки
формат стандартного ввода
формат стандартного вывода
Некоторые статистические данные об Internet в целом
Internet Hosts 1989-1996
(M. Lottor, )
WWW - Prefixed Hosts
(M. Lottor, , A.M. Rutkowski - General Magic, Inc. - Feb 1996)
Internet Global Backbone Connectivity
Network Growth - Europe Top 11
Internet Global Infrastructure Diffusion
Global Internet Connectivity
Relation Between Percentage of Bytes &
Packets Tranferred Per Month By Service
Организация стека графических ссылок
Скрипт imagemap
<A href="http://polyn.net.kiae.su/cgi-bin/imagemap/russia">
<img SRC="http://demin.polyn.kiae.su/dss/russia.gif" ISMAP>
</A>
# метка : адрес файла описания картинки
russia : /usr/local/etc/httpd/cgi-bin/maps/russia.map
brussia : /usr/local/etc/httpd/cgi-bin/maps/brussia.map
....
#описание прямоугольника
rect 10 20 100 200
circle 50 50 60 60
poly 10 10 20 20 20 10
Основные классы элементов тела
Тело документа состоит из:
Иерархических контейнеров и заставок
Заглавий (от H1 до H6)
Блоков (параграфы, списки, формы, таблицы, картинки
и т. п.)
Горизонтальных отчеркиваний и адресов
Текста, разбитого на области действия стилей
(подчеркивание, выделение, курсив), математические описания, графику
и гипертекстовые ссылки
Основные компоненты технологии World Wide Web
универсальный способ адресации ресурсов в сети
URL (Universal Resource Locator)
протокол обмена гипертекстовой информацией HTTP
(HyperText Transfer Protocol)
Основные способы поиска информации в Internet
Навигация
гипертекстовые ссылки (World Wide Web)
строки-селекторы (Gopher)
Информационный поиск
archie
veronica
wais
Information Retrieval Systems
Отображение ненумерованного списка
<UL>
<LH>Title of WWW programmes (NCSA).
<LI> NCSA HTTPD;
<LI> NCSA MOSAIC
<UL>
<LH>Title of WWW programmes (CERN).
<LI> CERN HTTPD;
<LI> AGORA - email robot;
<LI> HTTPD CERN;
<LI> WWW Line Browser;
<LI> Arena.
</UL>
<UL>
<LH> Title of WWW programmes (Netscape).
<LI> Netsite - server;
<LI> Netscape Novigator.
</UL>
Применение CGI-скриптов
Простейшие SHELL-скрипты
Вызов внешней программы через SHELL
Вызов модуля "С"
Доступ к базам данных
Imagemap
Пример С-программы
#include <stdlib.h>;
#include <sys/types.h>;
main()
{
long i,n,uid;
char input_ch[1024];
char *env;
env = getenv("CONTENT_LENGTH");
/* Here we recieve a length */
sscanf(env,"%d",&n);
/* of input stream and form */
for(i=0;i<;n;i++)
/* command line */
{ input_ch[i]
= getchar(); }
input_ch[i] = '\000';
printf("Content-type:
text/html\n\n"); /* First message of a CGI Programme */
/* This message must be a first one */
/* in output sream. */
printf("<TITLE>
C-cgi script.(example#1)</TITLE>\n");
printf("<H3><I>
Russian Research Center \"Kurchatov Institute\"<I></H3>\n");
c_uid = -1;
sscanf(input_ch,"uid=%ld",&uid);
/* Transform input data */
printf("Input
Nuber:%ld.<BR><HR>",uid);
exit(0);
}
Примеры SHELL-скриптов
#!/bin/sh
echo Content-type: text/plain
echo
echo This is the result of script execution.
#The end of script
#!/bin/sh
echo Content-type: text/plain
echo
echo $REQUEST_METHOD
echo $QUERY_STRING
echo $CONTENT_TYPE
echo $CONTENT_LENGTH
#The end of script.
#!/bin/sh
echo Content-type: text/plain
echo
finger paul@polyn.kiae.su
#The end of script.
Примеры скриптов
#!/bin/sh
echo Content-type: text/plain
echo
ingres polyn < query
#The end of script
#!/bin/sh
echo Content-type: text/plain
echo
helpr polyn
#The end of script
#!/bin/sh
echo Content-type: text/html
echo
echo '< PRE> '
helpr polyn situat
echo '< /PRE> '
#The end of script
#!/bin/sh
echo Content-type: text/html
echo
echo '< PRE> '
echo $QUERY_STRING | tr "+" " " | ingres polyn
echo '< /PRE> '
#The end of script
#!/bin/sh
echo Content-type: text/html
echo
echo '< PRE> '
echo $QUERY_STRING | sed -f symbols | ingres polyn | tr "\007" "*" | head 100
echo '< /PRE> '
#The end of script
Программы сканирования сети
Основное назначение о области применения:
ведение баз данных World Wide Web
создание "зеркал"
поиск информационных ресурсов
комбинированное использование
Список переменных окружения
К общим переменным окружения относятся:
SERVER_SOFTWARE - определяет имя и версию сервера
SERVER_NAME - определяет доменное имя сервера
GATEWAY_INTERFACE - определяет версию интерфейса
К запрос-ориентированным относятся:
SERVER_PROTOCOL - протокол сервера
SERVER_PORT - определяет порт TCP, по которому
осуществляется взаимодействие (80 порт)
REQUEST_METHOD - определяет метод доступа к информационному
ресурсу
PATH_INFO - передает программе путь (адрес скрипта)
в виде, указанном в HTML-документе
PATH_TRANSLATED - то же, что и PATH_INFO, но
только после подстановки сервером определенных в его конфигурации
вставок
SCRIPT_NAME - определяет адрес скрипта так, как
он указан клиентом
QUERY_STRING - определяет содержание запроса
к скрипту
Идентификация пользователя и его машины:
REMOTE_HOST - доменный адрес машины, с которой
осуществляется запрос
REMOTE_ADDR - IP-адрес запрашивающей машины
AUTH_TYPE - тип идентификации пользователя
REMOTE_USER - идентификация пользователя
REMOTE_IDENT - устанавливается сервером; предназначена
для первоначального использования скрипта
CONTENT_TYPE - определяет MIME-тип данных, передаваемых
скрипту
CONTENT_LENGTH - определяет размер данных в байтах,
которые передаются скрипту
Стандартный ввод CGI-скрипта
Методы GET или Post
CONTENT-LENGHT
CONTENT-TYPE
QUERY-STRING
Стандартный вывод CGI-скрипта
Заголовок
CONTENT-TYPE
Location
Status
Тело ответа (обычно текст)
Структура документа
Элемент HTML или гипертекстовый документ
состоит из двух частей:
заголовка документа (HEAD)
тела документа (BODY)
<HTML>
<HEAD>
Содержание заголовка
</HEAD>
<BODY>
Содержание тела документа
</BODY>
</HTML>
Структура ИПС для Internet.
(Budi Yuwono, Dik L.Lee. Search and Ranking
Algorims for Locating Resources on the World Wide Web)
Таблицы
<TABLE BORDER>
<CAPTION>A test table with merged cells.<CREDIT>(T.BernersLee/WWWC,1995.)</CREDIT></CAPTION>
<TR><TH ROWSPAN=2><TH COLSPAN=2>Average>
<TH rowspan=2>other<BR>category<TH ROWSPAN=2>Misc</TR>
<TR><TH>height<TH>weght</TR>
<TR><TH ALIGN=left>males<TD>1.9<TD>0.003
<TR><TH ALIGN=left>females<TD>1.7<TD>0.002
</TABLE>
Пример таблицы
Пример таблицы построенной в текстовом редакторе
Таговая модель документа:
"элемент" :=
<"имя элемента" "список атрибутов">
содержание элемента
</"имя элемента">
Вложенные ненумерованные списки
<UL>
<LI>Title of WWW programmes (NCSA).
<UL>
<LI> NCSA HTTPD;
<LI> NCSA MOSAIC
</UL>
<LI>Title of WWW programmes (CERN).
<UL>
<LI> CERN HTTPD;
<LI> AGORA - email robot;
<LI> HTTPD CERN;
<LI> WWW Line Browser;
<LI> Arena.
</UL>
<LI> Title of WWW programmes (Netscape).
<UL>
<LI> Netsite - server;
<LI> Netscape Novigator.
</UL></UL>
Вложенные нумерованные списки
<OL>
<HL>Нумерованный список
<LI>Элементы заголовка документа
<OL>
<LI>TITLE
<LI>BASE
<LI>LINK
</OL>
<LI>Элементы тела документа
<OL>
<LI>BODY
<LI>Heading
<LI>Paragraph
<LI>Line Break
<LI>Horizontal Rule
<LI>...
</OL>
</OL>