IZONE- http://www.izcity.com/- бесплатный софт, вэб-сервисы, ресурсы для раскрутки, свежие номера журнала "Internet Zone".

Технологии программирования в сети Интернет

"Нельзя объять необъятное".
К. Прутков.

Юрий Давидюк

Введение

"Узкий специалист подобен флюсу - полнота его одностороння".
К. Прутков.

Современный Интернет - это явление не только технологическое, но и социальное. С этим уже никто не спорит. Каждое явление можно описать "в общем" с философской точки зрения, либо расчленить и "измерить" его составляющие части - с точки зрения естественнонаучной. И то и другое описание можно сделать подробным и занудливым, либо кратким и банальным. Приступая к циклу статей о программных технологиях Интернета, я весьма опасаюсь скатиться к одной из этих крайностей: ввергнуть читателя в пучину не нужных для журнальной статьи подробностей, уподобляясь прутковскому флюсу (не путать с фаллосом!); либо мои тщетные попытки объять необъятное смогут лишь вызвать презрительную улыбку любого мало-мальски разбирающегося в компьютерах специалиста. Во всяком случае, я изо всех сил буду пытаться не быть скучным, и если хоть кто-то, прочитав статью, вынесет для себя нечто полезное, буду считать, что потратил время не зря.

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

А о побудительных мотивах несколько подробнее.

Случай первый. Чтобы ни говорили, но, по моему мнению, наиболее комфортно в Сети чувствуют себя "чайники". Я знаю одного "пользователя" Интернета с более чем трехгодичным стажем, который уверен, что Интернет на пятьдесят процентов - это порносайты, на сорок процентов - поисковики и E-mail, а остальные десять - все остальное, откуда можно скачать новую "наикрутейшую" игру. Думаете, это пацан тинейджеровского возраста? Ничего подобного, дяденьке скоро стукнет сороковник. Совсем недавно он открыл, что может сам создать свой персональный порносайт (нет-нет, он нормальной сексуальной ориентации и даже не слишком в этом плане озабочен, просто он не видит от Интернета иной пользы). Так вот, открыл парень, что в Яндексе имеется проект Народ.ру, где по шаблонам можно создать свою домашнюю страничку, и давай с компакта туда непотребные картинки скачивать. Слава богу, он чего-то там в инструкции по созданию не дочитал и ничего у него не получилось. Когда он обратился ко мне за помощью, то на недоуменный вопрос: "А на хрена тебе это надо?" последовал ответ: "Буду привлекать рекламу, и жить за счет "кликов"". Ну-ну, пришлось товарища разочаровать.

Случай второй. Студент первого курса. Почитал про HTML, освоил Microsoft FrontPage Express, стащил где-то парочку скриптов и утверждает, что может создавать коммерческие сайты для компаний. Похвален его оптимизм.

Случай третий, самый интересный. Серьезный программист, знаток С++, способен на этом языке создавать что угодно, где угодно и когда угодно, т.е. творить чудеса, обращается с просьбой создать для Интернета некую вещь, весьма несложную для его уровня. На немой вопрос: "?!!", отвечает: "Там столько языков, условий и протоколов, что мне недосуг тратить кучу времени, чтобы их изучать".

Так вот: в данном цикле статей я постараюсь объяснить, что программировать для Интернета - это не так просто, как думают "чайники", и не так сложно, как может показаться при первоначальной попытке изучения технологий программирования. В цикле будут рассмотрены следующие темы:

1. Языки разметки.

2. Скриптовые языки.

3. Элементы DHTML.

4. CGI, Perl, активные серверные страницы.

5. Мультимедийные "примочки".

6. Базы данных, SQL.

7. Java, ActivX.

8. Протоколы Интернета.

Выбор этих тем не претендует на полный курс всевозможных интернетовских технологий. Большей частью темы касаются World Wide Web (WWW - собрание документов мультимедиа, связанных гипертекстовыми ссылками), той самой Всемирной Паутины, которая для многих олицетворяет весь Интернет. А между тем, кроме WWW в Интернете существуют еще и Telnet (работа в режиме терминального удаленного доступа); и Gopher (меню ресурсов Интернета, предшественник WWW); и FTP (протокол передачи файлов); и, наконец, E-mail (электронная почта). Из вышеперечисленного сегодня на слуху только E-mail и FTP. Остальные сетевые сервисы понемногу забываются и уходят в прошлое. Выживают сильнейшие. В настоящее время, по-моему, потихоньку уменьшается значение и FTP (сервис, но не протокол), его с успехом заменяет Web. Современные сервисные E-mail программы по интерфейсу мало чем отличаются от специализированных программ для просмотра документов WWW - браузеров (с английского browser буквально - читатель), которые, кстати, также могут работать с E-mail. Поэтому, естественно, в статьях наибольшее внимание будет уделяться WWW и E-mail.

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

Языки гипертекстовой разметки

Господа! Мы живем в XXI веке! Вспомним постылый ХХ век. Как мы, тогдашние, представляли век нынешний? Откроем произведения фантастов прошлого столетия. Ведь именно тогда ими были изобретены пока мифические: гиперпространство, гипердвигатель, гиперсветовые скорости, которые будут освоены человечеством в XXI веке. И именно в прошлом веке совсем не фантастами был изобретен и освоен совсем не мифический гипертекст. В 1965 году некий Т.Х. Нельсон придумал термин "гипертекст", под которым подразумевалась непоследовательная запись информации. Идея заключалась в следующем: наша речь последовательна, записываем мы свою речь также последовательно, однако не всегда все в последовательной речи бывает понятным неискушенному слушателю. Например, некая ученая дама, специалист по скульптуре и живописи эпохи Возрождения, ведет экскурсию грузчиков овощной базы ї5 по залам художественного музея. Могу спорить, что не все выражения из речи экскурсовода могут быть правильно поняты глубокоуважаемыми грузчиками. Точно так же, глубокоуважаемая экскурсовод не в состоянии адекватно оценить выражения грузчиков в момент их любования картинами гениев Возрождения, особенно если на полотнах изображена обнаженная натура. В некий момент взаимопонимание нарушается, и стороны вынуждены прекратить последовательную речь, возвращаясь к толкованию непонятных терминов. Таким образом, экскурсия движется не плавно и последовательно, а с остановками и отвлечением темы разговора то в одну, то в другую сторону. Таким образом, совсем не Нельсон придумал гипертекст, он только догадался присвоить такому явлению построения информации название. Впрочем, пример гипертекста можно привести не только на основе устной речи, научная и техническая литература давно взяла на вооружение эту идею. Почти любая из научно-технических книг изобилует большим количеством ссылок, комментариев, разъяснений, большинство которых надо искать в других книгах или работах. Представим, читаем мы сказочку про курочку Рябу и : оп-па, встречается нам такая конструкция: "Жили-были дед (125) и баба (126) :". И приходится нам листать томик на последние страницы, чтобы узнать, что же такое таинственное (125). А там под номером 125 примерно такой текст: "Дед - отец папы, подробнее см. БСЭ т.4 и Britannica t.5/2". Вот это и есть гипертекст в самом что ни на есть чистом виде. Только с появлением компьютеров и Интернета процесс поиска ссылки удалось автоматизировать. Гипертекстовая подача информации не принуждает читателя отвлекаться на все ссылки и пояснения: если вы знаете, кто такой дед, вам нет необходимости справляться об этом в Большой Советской Энциклопедии, плавное, последовательное построение изложения речи (информации) сохраняется. Таким образом, гипертекст - это одна из базовых составляющих гипертекстовых (естественно) языков.

Переходим к рассмотрению второй темы. В 1986 году был принят стандартный обобщенный язык описания документов - SGML (Standard Generalized Markup Language). Если на заре компьютеризации документы, создаваемые на компьютерах, представляли собой текст с небольшим набором неотображаемых знаков форматирования, то к середине восьмидесятых компьютерные документы имели уже более сложную структуру: текст, изображения, информация о цвете, расположении на странице, шрифтах, и т.д. Возникла проблема совместимости, не все программы, предназначенные для работы с документами, могли отображать документы, созданные в других текстовых процессорах или системах. Наглядный пример: отображение файлов кирилличного текста КакойТоФайл.txt, созданного в DOS в Microsoft Word, и наоборот, файлов КакойТоФайл.doc в DOS. Кроме того, только текстовые файлы, созданные в современных текстовых процессорах, имеют размер зачастую в два и более раз больший, чем аналогичные, созданные в DOS. Для уменьшения аппаратной загрузки и описания структуры сложных документов и был принят стандарт SGML. SGML позволяет создавать языки разметки документов, основываясь на структуре самого документа. Идея состоит в следующем: в отличие от программ текстовых редакторов, язык, созданный на основе SGML, не пытается в точности определить, как должен выглядеть документ, он определяет структуру документа, отображение определяется содержанием. Иными словами, главное - смысл, а каким образом он доходит до пользователя, это уже проблемы самого пользователя. В применении к Интернету это звучит вполне знакомо: отображение зависит от типа браузера.

На основе SGML в начале 90-х годов в известном исследовательском центре CERN в Швейцарии и был создан язык HTML (Hypertext Markup Language), без которого невозможно представить себе World Wide Web.

HTML не является языком процедурного программирования вроде Бейсика, Паскаля или Си. В нем нет команд управления, ветвления, цикла. На HTML нельзя создать исполняемый файл .com или .exe. Это, на первый взгляд, несерьезный язык разметки, язык, выдающий подсказки браузеру, как должен выглядеть документ на экране компьютера. Кстати, язык так и разрабатывался, одновременно с программами отображения страниц Web-браузерами. В том же CERN в 1993 году был создан первый графический браузер Mosaic, который в настоящее время уже забыт и вытеснен Internet Explorer и Netscape Navigator. Поначалу серьезные программисты посчитали HTML игрушкой и стали презрительно обзывать людей, освоивших этот язык, "верстальщиками". Термин прижился, и в настоящее время услышать название профессии IT-специалиста "HTML-верстальщик" так же обычно, как и "программист Си два креста".

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

HTML-документ создать проще простого. Открываем редактор FrontPage Express, пишем в основном окне текст, например, традиционное: "Привет, HTML!", и сохраняем полученный результат как файл hello.html (если этот файл будет заглавным в создаваемом сайте, т.е., набрав адрес сайта, посетитель должен попасть именно на него, файл должен называться index.html - без индексного файла система не сможет найти точку вхождения на сайт). Затем запускаем этот файл в уже наверняка имеющийся на компьютере Internet Explorer и с удовольствием вновь наблюдаем на экране "Привет, HTML!". Теперь со спокойной душой можно закрывать браузер, он нам некоторое время не понадобится. Открываем Microsoft Word и набираем там ту же фразу. Закрываем Word с сохранением файла hello.doc и сравниваем размеры hello.doc (примерно 19 кБ) и hello.html (около 300 Байт). Лишний раз убеждаемся в компактности HTML'овских файлов. Затем открываем hello.html как текстовый файл в "Блокноте", и вот что получаем:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>Привет HTML!</title>
</head>
<body bgcolor="#FFFFFF">
<p>Привет HTML!</p>
</body>
</html>

Первое, что сразу бросается в глаза, это большое количество угловых скобок <>. Внутри скобок находятся ключевые слова форматирования документа, в HTML они называются теги. Первый тег нашего документа - <html>, указывает браузеру на то, что будет отображаться именно гипертекстовый документ. Все, что находится между тегами <html>: </html>, является программой на языке гипертекстовой разметки. Косая черта является признаком закрывающего тега, т.е. все, что находится между <тег> и </тег>, должно форматироваться согласно правилу, предписанному именно этим тегом. Пропуск закрывающего тега в некоторых случаях правильно трактуется браузером и не оказывает заметного влияния на отображение документа, однако так бывает не всегда. Пропуск </тег> может изменить страницу до неузнаваемости.

Следующий тег нашего документа

<head>

- голова. Почему-то всегда, когда я вижу <head>, у меня появляется ощущение некой дискриминации: ну почему все языки программирования в качестве ключевых слов используют английский язык? Куда приятнее нам было бы увидеть, например, такой тег <заголовок>:</заголовок>. Однако, как ни прискорбно нам это сознавать, но на балу информационных технологий тамада отнюдь не русскоязычен, и, вероятно, в момент создания HTML в CERN русскоязычных разработчиков тоже не было. И вот я решил исправить это упущение и представить наш документ в следующем виде:

<ЯГТР> <! - - Язык ГиперТекстовой Разметки - - >
<Заголовок>
<Это http-equiv="Content-Type" АИменно="text/html; Символы=windows-1251">
<Это Имя="GENERATOR" АИменно="Microsoft FrontPage Express 2.0">
<Название>Привет HTML!</Название>
</Заголовок>
<Тело ОснЦвет="#FFFFFF">
>Привет HTML!</п> <! - - п - параграф - - >
</Тело>
</ЯГТР>

Как вы уже наверное догадались, конструкция <! - - текст - - > является комментарием. Именно тем элементом программы, который все учебники по программированию настоятельно рекомендуют вставлять в код при разработке, и именно тот элемент, который почему-то вставляется в код с наименьшей охотой.

Как видим, после перевода тегов на русский язык структура программы стала намного понятнее.

Заголовок

<head>

- часть программы, в которой находится служебная информация, не отображаемая в окне браузера. Теги <meta> поставляют информацию поисковым системам Интернета. Они состоят из двух частей, первая <name> идентифицирует сам элемент, в <content> задаются данные для поисковиков. В нашем примере Microsoft заставила FrontPage Express вставлять информацию о себе, но обычно более важной для владельца страницы является информация о содержании документа

<meta name="keywords" content="статья, Интернет, программирование">
<meta name="description" content="Статья о программировании для Интернета ">
<! - - keywords - ключевые слова; description - краткое содержание- - >

По ключевым словам и краткому содержанию поисковые системы будут находить вашу страницу в дебрях Всемирной паутины.

В тело документа

<body>

вставляются:

- Текст - все, о чем вы хотели бы поведать через Интернет в виде печатного текста; для русскоязычных сайтов есть небольшие проблемы с кодировками, обычно кириллица отображается в кодовых таблицах windows-1251 либо KOI8-P

- Изображения - рисунки и фотографии (графические объекты) в формате GIF или JPG

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

- Формы - окошки и кнопочки: в окошки посетитель страницы может вводить какой угодно текст и как угодно нажимать на кнопочки. Это не должно вас волновать, HTML не позволяет посторонним изгаляться над вашими страницами, равно как вы не в состоянии только средствами HTML организовать обратную связь с посетителями. Формы HTML - это всего лишь пустышки (именно формы), которые можно наделять определенными функциями при помощи других технологий Интернета

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

HTML позволяет довольно гибко обращаться с различного рода информацией при ее воспроизведении на компьютере пользователя. В короткой статье нет смысла рассматривать все теги обработки и отображения информации, но в языке гипертекстовой разметки существует один элемент, без которого HTML превратился бы в разновидность обыкновенного текстового процессора и существование языка утратило бы смысл. Это элемент <А: >, с парой параметров href и name. Именно при помощи этого тега реализуются гипертекстовые возможности языка HTML, связывающие воедино документы во Всемирной паутине. Тег получил название якоря, который определяет место, на которое указывает ссылка.

Синтаксис тега "якорь" следующий:

<A HREF = "http://www.comprice.ru ">

Отображаемый текст, который ведет по указанному адресу, в данном случае Web-адрес издательства "Компьютер Прайс"

</A>

<! - - язык HTML не чувствителен к регистру, названия тегов могут быть набраны как строчными, так и прописными буквами, но лучше, естественно, в одном стиле, поэтому в дальнейшем опять переходим на маленькие буквы - - >
<a name = "имя"> Определяет имя, которое служит для гипертекстовых ссылок внутри одного документа</a>
<a href = "#имя"> Ссылка на внутренний адрес документа </a>
<a href = "URL#имя"> Ссылка в конкретное место внешнего документа </a>
<! - - где URL - uniform resource locator, унифицированный локатор ресурса. Состоит из четырех частей: протокол, имя сервера, путь и имя файла или документа (подробнее об URL в следующих статьях). - - >

Идеология функционирования якоря следующая: ссылки вводятся в документ с помощью элемента А (якорь), якорь имеет атрибуты в открывающем теге для активации гиперссылки. Якорь ссылается на путь, в качестве которого может быть любая страница, либо файл, либо адрес электронной почты. Атрибут href задает адрес, на который делается ссылка. При щелчке мышью по ссылке, которая выделяется обычно цветом, подчеркиванием и изменением формы курсора мыши, браузер загружает указанную в гиперссылке страницу. Таким образом происходит блуждание по Сети - серфинг. Ссылкой, как и якорем, могут быть не только фрагменты текста, но и изображения (или их части) и иные объекты, находящиеся в документе. Другими словами, в начале тега <A href:., именно после слова href надо прописать путь, куда надо перейти, и закрыть скобку - ">". Затем вводится текст, который выделяется браузером в качестве ссылки. Чтобы завершить выделение, ставится закрывающий тег

</a>

.

Этих начальных сведений вполне достаточно, чтобы создать простенькую страничку в FrontPage Express и попытаться попробовать самостоятельно освоить HTML. Однако надо помнить, что хотя использование языка HTML позволяет "вываливать" информацию в Интернет, однако это не говорит о том, что на всех компьютерах документ отобразится одинаково. Возникает проблема браузеров, различные браузеры могут трактовать одинаковые теги по-разному. Кроме того, сам язык претерпевает изменения, добавляются новые теги (в настоящее время рабочая версия HTML-4). Некоторые старые версии браузеров не могут эти теги обрабатывать, приходится их обновлять. Война между Internet Explorer и Netscape Navigator плюс расширение языка не дают спокойно жить верстальщикам, приходится все время держать руку "на пульсе", и в этой "кутерьме" как-то забывается, что HTML - всего лишь одно из конечных подмножеств SGML.

Другим подмножеством SGML является язык XML (eXtensible Markup Language), что переводится как расширяемый язык разметки. Уже само название говорит, что этот язык не строго определен в количестве тегов, а имеются возможности расширения.

HTML имеет ограниченный набор тегов, которые служат в основном для описания того, как будет выглядеть документ. С помощью XML можно создавать новые теги, вплоть до создания новых языков разметки. Что уже, кстати, неоднократно и сделано. Существуют язык математической разметки MathML, язык химических формул CML, язык финансовых отчетов XFRML, особенно перспективно применение XML в электронной торговле. Для любого типа деятельности можно создать свой язык разметки. Для чего это нужно? А вот для чего: попробуйте при помощи HTML отобразить в браузере следующее

Y= 0?? v--3xdx

Пришлось бы рисовать математические знаки в графическом редакторе и вставлять их как изображения, что, конечно, не облегчает труд и не ускоряет загрузку страницы. Даже в Wordе мне пришлось потрудиться, чтобы изобразить эту формулу, а в MathML различные формулы описываются запросто. Например, интеграл тегом <∫>, корень - <msqrt> и так далее.

Любой желающий может изобрести язык для отображения своих самых фантастических данных и символов, вопрос только в том, поймут ли Internet Explorer и Netscape Navigator новую разметку. Для этого в браузеры встраиваются синтаксические анализаторы XML. Синтаксические анализаторы выстраивают структуру данных документа в соответствии с описанием типа документа (DTD). DTD обеспечивает метод проверки документа в соответствии с заданными изобретателем языка правилами. Например, создадим разметку для описания животных.

Файл DTD:

<!ELEMENT животные (какие+)>
<!ELEMENT какие (зверь, кличка, паспорт, прописка, ЧтоЕст)>
<!ATTLIST какие type CDATA #IMPLIED>
<!ELEMENT зверь (#PCDATA)>
<!ELEMENT кличка (#PCDATA)>
<!ELEMENT паспорт (#PCDATA)>
<!ELEMENT прописка (#PCDATA)>
<!ELEMENT ЧтоЕст (#PCDATA)>

Файл XML:

<?xml version = "1.0"?>
<!DOCTYPE животные SYSTEM "animal.dtd">
<животные>
         <какие type = "домашние">
                 <кличка> Матроскин </кличка>
                 <паспорт>нету</паспорт>
                 <ЧтоЕст> мышей</ЧтоЕст>
         </какие>
<какие type = "дикие">
                 <зверь> волк </зверь>
                 прописка>Тамбовский лес</прописка>
                 <ЧтоЕст> котов </ЧтоЕст>
         </какие>
</животные>

Здесь я опять в педагогических целях написал все на русском языке. Возможно, у кого-нибудь в таком виде это даже и заработает, но мой браузер кирилличные теги отказался понимать напрочь. (Вот вам и XML L !!! J ) Однако если набрать <animal>, <klicka>, <propiska>, то проходит, IE не ругается.

Рассмотрим файл DTD. Первый !ELEMENT описывает структуру элемента "животные". Конструкция - "какие+" означает, что в элементе "животные" будет более одного элемента "какие". Затем идет описание элемента "какие". !ATTLIST описывает тип элемента. CDATA #IMPLIED указывает, что значение строкового атрибута задается системой. #PCDATA говорит о том, что элемент хранит текст.

Перейдем теперь к файлу XML. Первая строка указывает на версию языка

<?xml version = "1.0"?>

. Вторая -

<!DOCTYPE животные SYSTEM "animal.dtd">

- откуда брать правила для построения документа, и к каким элементам эти правила относятся. А дальше, собственно, все как в HTML.

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

Развитие HTML и XML ведет к постепенному объединению этих языков. Например, Internet Explorer - 5 "понимает" встроенный XML-фрагмент в HTML-документе, для этого существует специальный тег <XML>. Встраивание происходит следующим образом:

<XML ID = "имя"> код XML </XML>
:.
<DATASRC="#имя">

Существует и другой путь: создание расширяемого языка гипертекстовой разметки XHTML. Этот язык включает в себя набор тегов HTML с синтаксисом XML и проверкой документа с учетом DTD.

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

Источник: "Компьютер Price", http://www.comprice.ru

 


Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com