<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Web-студия</title>
	<atom:link href="http://web.chizh.com.ua/feed/" rel="self" type="application/rss+xml" />
	<link>http://web.chizh.com.ua</link>
	<description>Разработка сайтов на заказ.</description>
	<lastBuildDate>Wed, 16 Nov 2011 11:48:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Этапы создания веб-приложения. Основы РНР и MySQL</title>
		<link>http://web.chizh.com.ua/%d1%8d%d1%82%d0%b0%d0%bf%d1%8b-%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%bd%d0%b8%d1%8f-%d0%b2%d0%b5%d0%b1-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d1%8f-%d0%be%d1%81%d0%bd%d0%be%d0%b2%d1%8b/</link>
		<comments>http://web.chizh.com.ua/%d1%8d%d1%82%d0%b0%d0%bf%d1%8b-%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%bd%d0%b8%d1%8f-%d0%b2%d0%b5%d0%b1-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d1%8f-%d0%be%d1%81%d0%bd%d0%be%d0%b2%d1%8b/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 11:47:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://web.chizh.com.ua/?p=105</guid>
		<description><![CDATA[1. Что такое веб-программирование. Основные технологии
1.1. Клиент-Сервер
Когда Вы программировали, например, на Delphi, Visual Basic, или Visual C++, то привыкли к такой схеме работы программы: нажимаете кнопку на клавиатуре ► выполняется код ► выводится результат. Все это выполняется на одном компьютере.
В web -программировании все обстоит по-другому.
Когда Вы вводите в адресной строке браузера URL (Universal Resource Location, [...]]]></description>
			<content:encoded><![CDATA[<p>1. Что такое веб-программирование. Основные технологии<br />
1.1. Клиент-Сервер<br />
Когда Вы программировали, например, на Delphi, Visual Basic, или Visual C++, то привыкли к такой схеме работы программы: нажимаете кнопку на клавиатуре ► выполняется код ► выводится результат. Все это выполняется на одном компьютере.<span id="more-105"></span></p>
<p>В web -программировании все обстоит по-другому.<br />
Когда Вы вводите в адресной строке браузера URL (Universal Resource Location, или в просторечии &#8211; адрес) происходит следующее:<br />
● Браузер открывает соединение с сервером.<br />
● Браузер отправляет серверу запрос на получение страницы.<br />
● Сервер формирует ответ (чаще всего &#8211; HTML-код) браузеру и закрывает соединение.<br />
● Браузер обрабатывает HTML-код и отображает web -страницу, которую Вы видите на экране монитора.<br />
Еще до того, как Вы увидели на экране запрошенную страницу, соединение с сервером закрыто, и он о Вас забыл. И когда Вы введете другой (или тот же самый) адрес, или щелкните по ссылке, или нажмете на кнопку HTML-формы &#8211; та же схема повторится снова.<br />
Такую схему работы называют &laquo;клиент-сервер&raquo;. Клиент в данном случае &#8211; браузер.<br />
Соединение с web -сервером длится промежуток времени между щелчком по ссылке (или другим способом запроса) и началом отображения web -страницы. Большинство браузеров во время соединения отображают индикатор, например, индикатор MS Internet Explorer отображает анимацию в правом верхнем углу.<br />
Внимательный студент может заметить &#8211; а как же так, я уже читаю страницу, а индикатор все еще показывает процесс соединения? Дело в том, что тэг (загрузка изображения) и некоторые другие теги HTML – кода &#8211; это еще один запрос к серверу. Выполняется он точно так же, как и любой другой запрос &#8211; по той же схеме.<br />
Чтобы навсегда избавиться от восприятия HTTP как &laquo;черного ящика&raquo;, &laquo;притворимся&raquo; браузером с помощью telnet&#8217;а:<br />
1. Запустим telnet 80<br />
2. Введем в окне терминала следующее (если ввод не отображается &#8211; ничего страшного):<br />
GET / HTTP/1.0 [здесь нажмем Enter]<br />
Host: [здесь нажмем Enter дважды]<br />
Нажатие Enter соответствует, как правило, комбинации символов CR + LF, обозначаемых как \r\n. Далее будет использоваться именно это обозначение.<br />
По экрану монитора пробежит HTML-код страницы /.<br />
HTML-код текущей страницы можно просмотреть практически в любом браузере, выбрав в меню &laquo;Вид|Просмотр HTML-кода&raquo;:<br />
Картинки, фреймы &#8211; это дополнительные запросы: при обработке (парсинге) HTML-кода, браузер, натыкаясь на тэг осуществляет дополнительный запрос к серверу &#8211; запрос картинки, и отображает ее на месте, где стоит тэг .<br />
Введите:<br />
telnet 80<br />
GET /php/g HTTP/1.0\r\n<br />
Host: \r\n\r\n<br />
По экрану пробежит то, что бы вы увидели, если б просмотрели этот png-файл в текстовом редакторе.<br />
1.2. HTML-формы. Методы отправки данных на сервер с помощью формы<br />
Одно из наиболее распространенных приложений любого языка создания серверных сценариев – обработка HTML &#8211; форм. Web-программирование в большей части представляет собой обработку различных данных, введенных пользователем.<br />
РНР облегчает задачу обработки и разбора форм, поступивших из браузера, так как в язык на самом нижнем уровне встроены все необходимые возможности. Поэтому программисту не приходится даже и задумываться над особенностями протокола HTTP и размышлять, как же происходит отправка и прием роsт-форм или даже загрузка файлов.<br />
С HTML-формами Вы уже встречались при изучении языка разметки HTML.<br />
Рассмотрим пример посылки сообщения из формы по электронной почте.<br />
Листинг e_ml. Посылка сообщения из формы по e-mail<br />
Посылка формы по е-mail<br />
Нажмите “Cброс” и заполните заказ.<br />
Ваше имя:<br />
Ваш адрес:<br />
Прислать:<br />
Если обработать этот HTML-код браузером, то отобразится web -страница, которую можно увидеть на экране монитора:<br />
Пользователь нажимает кнопку «Сброс», и поля принимают значения, установленные по умолчанию. Форма заполняется пользователем, и по нажатию кнопки «Послать заказ» отправляется по адресу myaddres@. Обычно браузер не сам отсылает форму, а поручает эту работу почтовой программе, установленной по умолчанию в операционной системе компьютера (например, Outlook). Письмо посылается в виде:<br />
subjct: Форма отправлена из Microsoft Internet Explorer<br />
name = Прохоров Виктор Сергеевич<br />
value=prohwik@<br />
obj = «Методические указания»<br />
Письмо составляется из пар имя=значение, которые выбираются по порядку из полей формы.<br />
Рассмотрим подробнее следующий пример.<br />
Листинг form_ml<br />
Введите Ваше имя:<br />
Сохранив этот код в HTML-файле form_ml и просмотрев его с помощью браузера, можно увидеть HTML-форму:<br />
Форма реализована тегом-контейнером . Тег своими атрибутами указывает:<br />
● адрес сценария, которому будет послана форма;<br />
● способ пересылки и характеристику данных, содержащихся в форме. Начальный и конечный теги задают границы формы. Их указание является обязательным.<br />
Атрибуты тега-контейнера (все необязательные):<br />
● action —атрибут, в качестве значения которого указывают URL-адрес (полный или относительный) запрашиваемой CGI-программы. Эта программа будет обрабатывать данные, содержащиеся в форме. Допустимо использовать запись MAILTO:URL. В этом случае форма будет послана по электронной почте. Если атрибут action не указать, то содержимое формы будет отправлено на URL-адрес, с которого загружена данная web-страница, то есть &laquo;саму на себя&raquo;. Это удобное сокращение, но по стандарту HTML атрибут action обязателен.<br />
● method — определяет метод HTTP, используемый для пересылки данных формы от браузера к серверу. Атрибут method может принимать два значения: get или post:<br />
♦ get &#8211; отправка данных формы в адресной строке. Вы могли заметить на различных сайтах присутствие в конце URL символа &laquo;?&raquo; и следующих за ним данных в формате параметр=значение. Здесь &laquo;параметр&raquo; соответствует значению атрибута name элементов формы (см. ниже про тэг ), а &laquo;значение&raquo; &#8211; содержимому атрибута value (в нем, например, содержится ввод пользователя в текстовое поле того же тэга ).<br />
Для примера &#8211; попробуйте поискать что-нибудь в Яндексе и обратите внимание на адресную строку браузера. Это и есть способ get.<br />
♦ post &#8211; данные формы отправляются в теле запроса. Если не совсем понятно (или совсем непонятно), что это такое &#8211; не беспокойтесь, скоро мы к этому вопросу вернемся.<br />
Если атрибут method не указан &#8211; подразумевается &laquo;get&raquo;.<br />
● enctype — необязательный атрибут. Указывает тип содержимого формы, используемый для определения формата кодирования при ее пересылке. В HTML определены два возможных значения для атрибута enctype:<br />
♦ APPLICATION/X-WWW-FORM-URLENCODED (используется по умолчанию).<br />
♦ MULTIPART/FORM-DATA.<br />
Тег позволяет создавать внутри формы поля ввода строки текста, имени файла, пароля и др. У нет конечного тега. Атрибуты и особенности использования зависят от способа его использования.<br />
Тэг &#8211; задает элемент формы, определяемый атрибутом type:<br />
♦ Значение &laquo;text&raquo; задает однострочное текстовое поле ввода.<br />
♦ Значение &laquo;submit&raquo; задает кнопку, при нажатии которой происходит отправка формы на сервер.<br />
Возможны и другие значения (да и &#8211; не единственный тэг, задающий элемент формы), но их мы рассмотрим в следующих главах.<br />
Итак, что же происходит, когда нажимают кнопку &laquo;OK&raquo;?<br />
1. Браузер просматривает входящие в форму элементы и формирует из их атрибутов name и value данные формы. Допустим, введено имя Vasya. В этом случае данные формы: name=Vasya&amp;okbutton=OK.<br />
2. Браузер устанавливает соединение с сервером, отправляет на сервер запрос документа, указанного в атрибуте action тэга , используя метод отправки данных, указанный в атрибуте method (в данном случае &#8211; GET), передавая в запросе данные формы.<br />
3. Сервер анализирует полученный запрос, формирует ответ, отправляет его браузеру и закрывает соединение.<br />
4. Браузер отображает полученный от сервера документ.<br />
Отправка того же запроса вручную (с помошью telnet) выглядит следующим образом (предположим, что доменное имя сайта &#8211; m):<br />
telnet m 80<br />
GET /cgi-bin/form_i?name=Vasya&amp;okbutton=OK HTTP/1.0\r\n<br />
Host: m\r\n<br />
\r\n<br />
Нажатие submit-кнопки в форме с методом отправки &laquo;GET&raquo; аналогично вводу соответствующего URL (со знаком вопроса и данными формы в конце) в адресной строке браузера: m/cgi-bin/form_i?name=Vasya&amp;okbutton=OK<br />
На самом деле, метод GET используется всегда, когда Вы запрашиваете с сервера какой-либо документ, просто введя его URL, или щелкнув по ссылке. При использовании , к URL просто добавляются знак вопроса и данные формы.<br />
Как же нам в сценарии получить строку параметров, переданную после знака вопроса в URL при обращении к сценарию? Для этого можно проанализировать переменную окружения QUERY_STRING, которая в РНР доступна под именем $_SERVER[QUERY_STRING].<br />
Напишем пример, чтобы это проиллюстрировать (листинг p).<br />
Листинг p. Вывод параметров командной строки.<br />
Если теперь запустить этот сценарий из браузера (перед этим сохранив его в корневом каталоге сервера) таким образом:</p>
<p>http://localhost/p?this+is+the+world/</p>
<p>то получим документ следующего содержания: Данные из командной строки: this+is+the+world<br />
Обратите внимание на то, что URL-декодирование символов не произошло: строка $_server [' query_string '], как и одноименная переменная окружения, всегда приходит в той же самой форме, в какой она была послана браузером.<br />
Так как РНР изначально создавался именно как язык для Web-программирования, то он дополнительно проводит некоторую работу с переменной query_string перед передачей управления сценарию. А именно, он разбивает ее по пробельным символам (в примере пробелов нет, их заменяют символы +, но эти символы РНР также понимает правильно) и помещает полученные кусочки в массив-список $argv, который впоследствии может быть проанализирован в программе.<br />
Массив $argv используется при программировании на РНР крайне редко, что связано с большими возможностями интерпретатора по разбору данных, поступивших от пользователя. Однако в некоторых (учебных) ситуациях его применение оправдано.<br />
Возможно, все эти технические подробности кажутся невероятно скучными и даже ненужными (&laquo;а при чем тут PHP?&raquo;). Но это основы работы по протоколу HTTP, которые необходимо знать каждому web-программисту.<br />
Теперь заменим первую строку нашей формы на следующую:<br />
Мы указали метод отправки &laquo;POST&raquo;. В этом случае данные отправляются на сервер несколько другим способом:<br />
telnet m 80<br />
POST /cgi-bin/form_i HTTP/1.0\r\n<br />
Host: m\r\n<br />
Content-Type: application/x-www-form-urlencoded\r\n<br />
Content-Length: 22\r\n<br />
\r\n<br />
name=Vasya&amp;okbutton=OK<br />
При использовании метода POST данные формы отправляются уже после &laquo;двух Enter-ов&raquo; &#8211; в теле запроса. Все, что выше &#8211; на самом деле заголовок запроса (и когда мы использовали метод GET, данные формы отправлялись в заголовке).<br />
Для того, чтобы сервер знал, на каком байте закончить чтение тела запроса, в заголовке присутствует строка Content-Length; о том же, что данные формы будут переданы виде параметр1=значение1&amp;параметр2=значение, причем значения передаются в виде urlencode &#8211; то есть, точно так же, как и с помощью метода GET, но в теле запроса, &#8211; серверу сообщает заголовок &laquo;Content-Type: application/x-www-form-urlencoded&raquo;.</p>
<p>О том, что такое urlencode &#8211; чуть ниже.<br />
Преимущество метода POST: отсутствие ограничения на длину строки с данными формы.<br />
При использовании метода POST невозможно отправить форму, просто &laquo;зайдя по ссылке&raquo;, как было с GET.<br />
Для краткости изложения, введем термины &laquo;GET-форма&raquo; и &laquo;POST-форма&raquo;, где префикс соответствует значению атрибута method тэга .<br />
При использовании POST-формы, в ее атрибуте action можно указать после знака вопроса и параметры GET-формы. Таким образом, метод POST включает в себя и метод GET.<br />
1.3. Технология CGI<br />
Мы разобрались, как создать HTML-форму, и как браузер отправляет введенные в нее данные на сервер. Но пока не понятно, что будет сервер делать с этими данными.<br />
Сам по себе web-сервер умеет только отдавать запрошенную страницу, и ничего более того, и ему все переданные данные формы, в общем-то, совершенно безразличны. Для того, чтобы можно было обработать эти данные с помощью какой-либо программы и динамически сформировать ответ браузеру, и была изобретена технология CGI (Common Gateway Interface).<br />
Взглянем на этот URL: m/cgi-bin/form_i. Первое предположение, которое можно сделать на его счет, обычно такое: сервер отдает содержимое файла form_i из каталога cgi-bin. Однако, в случае с технологией CGI дело обстоит по-другому. Сервер запускает программу form_i и передает ей данные формы. Программа же формирует текст, который передается браузеру в качестве ответа на запрос.<br />
Программу form_i можно написать на любом языке программирования, главное &#8211; соблюдать в программе стандарт CGI. Можно использовать, например, популярный скриптовый язык Perl. А можно написать все на Си, или на shell-скриптах&#8230; Для примера, напишем эту программу на Си. Но сначала разберемся, как происходит обмен данными между web-сервером и CGI-программой:<br />
1. Перед запуском CGI-программы, сервер устанавливает переменные окружения (Вам они наверняка знакомы по команде PATH). В каждый мало-мальски серьезном языке программирования есть средства для чтения переменных окружения. Стандарт CGI определяет весьма значительный набор переменных, которые должны быть определены перед запуском CGI-программы. Рассмотрим сейчас только три из них:<br />
REQUEST_METHOD &#8211; метод передачи данных &#8211; GET или POST (есть и другие, но пока мы их не рассматриваем)<br />
QUERY_STRING &#8211; содержит часть URL после вопросительного знака, или, другими словами, данные GET-формы.<br />
CONTENT_LENGTH &#8211; длина тела запроса (данные POST-формы).<br />
2. Сервер запускает CGI-программу. Тело запроса передается программе в виде стандартного ввода (stdin) &#8211; будто бы эти данные были введены с клавиатуры.<br />
3. Программа выдает ответ браузера на стандартный вывод (stdout) &#8211; &laquo;на экран&raquo;. Этот вывод перехватывается веб-сервером и передается браузеру.<br />
Это CGI-программа на Си, выводящая содержимое полученных от web-сервера параметров форм:<br />
1. #include<br />
2. #include<br />
3.<br />
4. int main(void)<br />
5. {<br />
6. // Читаем переменные среды, установленные веб-сервером<br />
7. char *query_string = getenv(&laquo;QUERY_STRING&raquo;);<br />
8. char *request_method = getenv(&laquo;REQUEST_METHOD&raquo;);<br />
9.<br />
10. char *post_data; // Буфер для данных POST-запроса<br />
11. int post_length = 0; // Длина тела запроса<br />
12.<br />
13. if (strcmp(request_method, &laquo;POST&raquo;) == 0) {// Если получен POST-запрос,<br />
14. post_length = atoi(getenv(&laquo;CONTENT_LENGTH&raquo;)); // сначала читаем из<br />
15. // переменной среды его длину,<br />
16. if (post_length) {// если она не нулевая,<br />
17. post_data = (char*)malloc(post_length+1); // выделяем память для буфера,<br />
18. fread(post_data, post_length, 1, stdin); // читаем со стандартного ввода тело запроса,<br />
19. post_data[post_length] = 0; // завершаем строку нулевым байтом.<br />
20. }<br />
21. }<br />
22.<br />
23. // Выводим заголовок ответа&#8230;<br />
24. printf(&laquo;Content-type: text/html\r\n\r\n&raquo;);<br />
25.<br />
26. // и его тело:<br />
27. printf(&laquo;Здравствуйте!\r\n&raquo;);<br />
28.<br />
29. if (strlen(query_string)) {<br />
30. printf(&laquo;Параметры GET-формы: %s\r\n&raquo;, query_string);<br />
31. }<br />
32.<br />
33. if (post_length) {<br />
34. printf(&laquo;Параметры POST-формы: %s (длина тела запроса: %d)\r\n&raquo;, post_data, post_length);<br />
35. free(post_data); // не забываем освободить выделенную в строке 17 память<br />
36. }<br />
37.<br />
38. return 0;<br />
39.}<br />
Браузер в результате получит примерно следующий код (если &laquo;засабмитить&raquo; на эту программу POST-форму из последнего примера):<br />
Здравствуйте!<br />
Параметры POST-формы: name=Vasya&amp;okbutton=OK (длина тела запроса: 22)<br />
Что при этом отобразится на экране пользователя, думаю, понятно без комментариев.<br />
Как видите, даже простейшая программа вывода параметров не очень проста. Более того, по стандарту HTTP почти все не алфавитно-цифровые символы (в т.ч. и русские буквы) передаются в UrlEncoded-виде (%XX, где XX &#8211; шестнадцатеричный код символа), и, если добавить в приведенную Си-программу код расшифровки UrlEncode, она уже не поместится на экран. А это &#8211; всего лишь базовые операции. А как вырастет программа на Си, если необходимо работать с базой данных?<br />
Впрочем, написание CGI-программ на Си &#8211; довольно редкое извращение. Чаще всего это делают на Perl &#8211; языке, разработанном специально для обработки текстовых данных, а наличие модуля CGI делает написание CGI-скриптов намного более простой задачей. Здесь я не буду Вас знакомить с Perl, отмечу лишь, что проблем остается достаточно: все же Perl не предназначен для Web, это язык универсальный. Да и сама технология CGI несовершенна: при каждом обращении происходит запуск программы (в случае с Perl &#8211; интерпретатор языка), а эта операция довольно ресурсоемкая: для домашней странички Васи Пупкина производительности, конечно, достаточно, но серьезный портал с десятками и сотнями тысяч хитов в сутки потребует уже огромных аппаратных мощностей.<br />
А теперь взглянем на веб-сервер Apache. По своей природе он модульный, и позволяет подключать расширения добавлением одной строки в конфигурационный файл. Было бы прекрасно, если бы существовал скриптовый язык, заточенный именно под Web, подключаемый модулем к Apache, не так ли? Это и есть PHP.<br />
В принципе, PHP можно скомпилировать и как CGI-приложение, и использовать так же, как и Perl &#8211; но это для нестандартных web-серверов или особых извращенцев.<br />
2. PHP: Препроцессор Гипертекста<br />
В 1994-м году программист по имени Rasmus Lerdorf, намучавшись с классическим перловым модулем CGI, решил написать несколько Perl-скриптов, чтобы было попроще создавать свою домашнюю страницу. Такой движок был готов к началу 1995 года и назывался Personal Home Page Tools (PHP). Умел он не очень много – понимал простейший язык и всего несколько макросов.<br />
Через некоторое время понадобилось обрабатывать формы, поэтому Rasmus Lerdorf и для увеличения производительности все переписал на C. Так появился к середине 1995 года Personal Home Page/Forms Interpreter (PHP/FI) 2.0. Приставка FI – присоединилась из другого пакета Rasmusa, который умел обрабатывать формы (Form Interpritator). PHP/FI компилировался внутрь Apache и использовал стандартный API Apache. PHP скрипты оказались быстрее аналогичных CGI – скриптов, так как серверу не было необходимости порождать новый процесс. Язык PHP по возможностям приблизился к Perl, самому популярному языку для написания CGI-программ. Была добавлена поддержка множества известных баз данных (например, MySQL и Oracle). Интерфейс к GD – библиотеке, позволял генерировать картинки на лету.<br />
Труды свои Rasmus Lerdorf, следуя принципам Open Source, выложил на всеобщее обозрение, и на некотором количестве сайтов PHP/FI вполне успешно использовался, хотя был довольно примитивен. С этого момента началось широкое распространение PHP/FI.<br />
В 1997-м на PHP/FI, в поисках инструмента для удобного web – программирования, наткнулись два других программиста &#8211; Andi Gutmans и Zeev Suraski. Идея им понравилась, но функциональность и скорость работы PHP/FI оставляли желать лучшего. Zeev Suraski и Andi Gutmans решили переписать внутренний движок для исправления ошибки интерпретатора и повышения скорости выполнения скриптов. 6 июня 1998 года вышла новая версия, которая была названа PHP 3. Язык получился универсальный и мощный, и вскоре привлек внимание множества web &#8211; разработчиков: к концу 1998 года PHP3 использовался на 10% web &#8211; серверов. К лету 1999 года PHP 3 был включен в несколько коммерческих продуктов. По данным NetCraft на ноябрь 1999 PHP использовался в более чем 1 млн. доменах.<br />
Скромное название &laquo;Personal Home Page&raquo; уже не очень-то соответствовало реальности, и название было изменено на (в лучших Unix-традициях) рекурсивное: PHP: Hypertext Preprocessor.<br />
&laquo;Движок&raquo; PHP 4, названный Zend Engine, разрабатывался усилиями уже сформировавшегося и с тех пор непрерывно разрастающегося PHP community, и в 2000-м году вышла 4-я версия PHP, ставшая менее чем через полгода стандартом для web &#8211; программирования под Unix (и не только): каждый уважающий себя хостер предоставлял поддержку PHP. Сейчас разработан PHP5, основанный на новом Zend Engine<br />
2.1. Что такое PHP?<br />
PHP – это скрипт-язык (scripting language), встраиваемый в HTML &#8211; код, который интерпретируется и выполняется на web &#8211; сервере. Проще всего это показать на примере:<br />
Листинг prim_1<br />
Вас приветствует PHP<br />
После выполнения этого скрипта получают страничку, в которой будет написано:<br />
Основное отличие от CGI-скриптов, написанных на других языках, типа Perl или C – это то, что в CGI-программах Вы сами пишете выводимый HTML-код, а, используя PHP – вы встраиваете свою программу в готовую HTML-страницу, используя открывающий и закрывающий теги (в примере ).<br />
Отличие PHP от JavaScript, состоит в том, что PHP-скрипт выполняется на сервере, а клиенту передается результат работы, тогда как в JavaScript-код полностью передается на клиентскую машину и выполняется только там.<br />
Любители Internet Information Server найдут, что PHP очень похож на Active Server Pages (ASP), а энтузиасты Java скажут, что PHP похож на Java Server Pages (JSP). Все три языка позволяют размещать код, выполняемый на Web-сервере, внутри HTML страниц.<br />
2.2. Возможности PHP<br />
На PHP можно делать все, что можно делать с помощью CGI–программ: обрабатывать данные из форм, генерировать динамические страницы, получать и посылать куки (cookies). Кроме этого в PHP включена поддержка многих баз данных (databases), что делает написание web-приложений с использованием БД до невозможности простым.<br />
Вот неполный перечень поддерживаемых БД:<br />
Adabas DInterBaseSoliddBasemSQLSybaseEmpressMySQLVelocisFileProOracleUnix dbmInformixPostgreSQL<br />
Вдобавок ко всему PHP понимает протоколы IMAP, SNMP, NNTP, POP3 и даже HTTP, а также имеет возможность работать с сокетами (sockets) и общаться по другим протоколам.<br />
2.3. Почему нужно выбирать PHP<br />
Разработчикам web-приложений нет необходимости говорить, что web-страницы &#8211; это не только картинки и текст. Достойный внимания сайт должен поддерживать достаточно высокий уровень интерактивности с пользователем: поиск информации, продажа продуктов, конференции и т.п.<br />
Традиционно все это реализовалось CGI-скриптами, написанными на Perl. Но CGI- скрипты очень плохо масштабируемы. Каждый новый вызов CGI, требует от ядра порождения нового процесса, а это занимает процессорное время и тратит оперативную память.<br />
PHP предлагает другой вариант – он работает как часть web-сервера, и этим самым похож на ASP от Microsoft.<br />
Синтаксис PHP очень похож на синтаксис C или Perl. Люди, знакомые с программированием, очень быстро начинают писать программы на PHP. В этом языке нет строгой типизации данных и нет необходимости в действиях по выделению/освобождению памяти.<br />
Программы, написанные на PHP, легко читаемы. PHP – код легко зрительно прочитать и понять, в отличие от Perl-программ.<br />
2.4. Недостатки PHP<br />
PHP является интерпретируемым языком, и как следствие этого, не может сравниться по скорости с компилируемым С. Однако при написании небольших программ, что и присуще проектам на PHP, когда весь проект состоит из многих небольших страниц с кодом, вступают в силу накладные расходы на загрузку в память и вызов CGI-программы, написанной на С.<br />
Не такая большая база готовых модулей, как, например, СPAN у Perl. С этим ничего нельзя поделать – это дело времени. В PHP 4 разработчики предусмотрели специальный репозиторий PEAR, аналогичный CPAN, и, конечно, очень скоро будет написано достаточное количество модулей для его наполнения.<br />
2.5. Встраивание PHP в HTML &#8211; форму<br />
Сначала изменим HTML-форму из предыдущего раздела. Для этого внесем некоторые изменения в файл form_ml:<br />
Вас приветствует PHP<br />
Введите Ваше имя:<br />
PHP – код разместим в файле form_p:<br />
PHP – скрипт заключен в специальные тэги , внутри которых использован для вывода текста оператор echo.<br />
Переменные GET-запроса попадают в массив $_GET, переменные POST-запроса &#8211; в массив $_POST, серверные переменные (типа IP-адреса, имени скрипта и т.д.) &#8211; в массив $_SERVER, оператор &laquo;точка&raquo; (.) &#8211; объединение строк&#8230; Причем все служебные операции (чтение stdin и переменных среды, Url-декодирование) уже произвел сам PHP. Удобно, не так ли?<br />
Далее. Зачем нам два файла &#8211; HTML с формой и PHP-скрипт? Вполне достаточно одного скрипта:<br />
Листинг form_ml<br />
Вас приветствует PHP<br />
Введите Ваше имя:<br />
Из тэга form убрали атрибут action &#8211; это значит, что форма отправляется &laquo;сама на себя&raquo;, т.е. на текущий URL. Это называют &laquo;postback form&raquo;. С помощью оператора if проверяется, использован ли для загрузки документа метод POST, и &#8211; если это так &#8211; в следующей строке выводится приветствие. В окне браузера можно увидеть:<br />
2.6. HTML-формы. Массивы $_GET и $_POST<br />
Формы являются основным способом обмена данными между web-сервером и браузером (пользователем). Формы выполняют главную функцию web – программирования: обеспечивают взаимодействие с пользователем.<br />
2.6.1. Особенности метода отправки формы POST<br />
Возьмем уже знакомый по первой главе пример form_p и внесем в него некоторые изменения:<br />
Листинг form_p<br />
Вас приветствует PHP<br />
- сокращенная форма записи для echo: .<br />
Если в поле форма name ввести, например, значение Вася, и нажать кнопку OK, то Браузер отправит после этого на сервер POST-запрос. Тело запроса имеет вид: name=Вася&amp;okbutton=OK. PHP при этом автоматически заполнит массив $_POST:<br />
$_POST['name'] = &#8216;Вася&#8217;<br />
$_POST['okbutton'] = &#8216;OK&#8217;<br />
В действительности, значение &laquo;Вася&raquo; отправляется браузером в urlencode-виде; для кодировки windows-1251 это значение выглядит как %C2%E0%F1%FF. Но, поскольку PHP автоматически осуществляет необходимое декодирование, мы можем &laquo;забыть&raquo; об этой особенности &#8211; пока не придется работать с HTTP-запросами вручную.<br />
Так как в теле запроса указываются только имена и значения, но не типы элементов форм, PHP понятия не имеет, соответствует $_POST['name'] строке ввода, кнопке, или списку. Но эта информация нам, в общем-то, совершенно не нужна.<br />
Поскольку знать, что написано на кнопке submit, нам необязательно, в строке можно удалить атрибут роверяется, использован ли для загрузки документа метод POST, и &#8211; если это так &#8211; в следующей строке выводится приветствие. В окне браузера можно увидеть:<br />
2.6. HTML-формы. Массивы $_GET и $_POST<br />
Формы являются основным способом обмена данными между web-сервером и браузером (пользователем). Формы выполняют главную функцию web – программирования: обеспечивают взаимодействие с пользователем.<br />
2.6.1. Особенности метода отправки формы POST<br />
Возьмем уже знакомый по первой главе пример form_p и внесем в него некоторые изменения:<br />
Листинг form_p<br />
Вас приветствует PHP<br />
- сокращенная форма записи для echo: .<br />
Если в поле форма name ввести, например, значение Вася, и нажать кнопку OK, то Браузер отправит после этого на сервер POST-запрос. Тело запроса имеет вид: name=Вася&amp;okbutton=OK. PHP при этом автоматически заполнит массив $_POST:<br />
$_POST['name'] = &#8216;Вася&#8217;<br />
$_POST['okbutton'] = &#8216;OK&#8217;<br />
В действительности, значение &laquo;Вася&raquo; отправляется браузером в urlencode-виде; для кодировки windows-1251 это значение выглядит как %C2%E0%F1%FF. Но, поскольку PHP автоматически осуществляет необходимое декодирование, мы можем &laquo;забыть&raquo; об этой особенности &#8211; пока не придется работать с HTTP-запросами вручную.<br />
Так как в теле запроса указываются только имена и значения, но не типы элементов форм, PHP понятия не имеет, соответствует $_POST['name'] строке ввода, кнопке, или списку. Но эта информация нам, в общем-то, совершенно не нужна.<br />
Поскольку знать, что написано на кнопке submit, нам необязательно, в строке можно удалить атрибут name, сократив описание кнопки до (листинг form_p). В этом случае, браузер отправит POST-запрос name=Вася.<br />
Листинг form_p<br />
Вас приветствует P</p>
]]></content:encoded>
			<wfw:commentRss>http://web.chizh.com.ua/%d1%8d%d1%82%d0%b0%d0%bf%d1%8b-%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%bd%d0%b8%d1%8f-%d0%b2%d0%b5%d0%b1-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d1%8f-%d0%be%d1%81%d0%bd%d0%be%d0%b2%d1%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Создание Web-приложений в среде Delphi</title>
		<link>http://web.chizh.com.ua/%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%bd%d0%b8%d0%b5-web-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b9-%d0%b2-%d1%81%d1%80%d0%b5%d0%b4%d0%b5-delphi/</link>
		<comments>http://web.chizh.com.ua/%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%bd%d0%b8%d0%b5-web-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b9-%d0%b2-%d1%81%d1%80%d0%b5%d0%b4%d0%b5-delphi/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 11:29:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://web.chizh.com.ua/?p=103</guid>
		<description><![CDATA[Эпоха web-дизайна, когда наиважнейшим считалось возможность запихнуть на страницу как можно больше графики и поразить пользователя широтой фантазии дизайнера, канула в лету. В моде &#8211; информационный дизайн и всяческие удобности для пользователя. Плохим тоном уже считается одно только то, что на сайте нет форума или гостевой книги, и самое ужасное &#8211; о, боже &#8211; вы [...]]]></description>
			<content:encoded><![CDATA[<p>Эпоха web-дизайна, когда наиважнейшим считалось возможность запихнуть на страницу как можно больше графики и поразить пользователя широтой фантазии дизайнера, канула в лету. В моде &#8211; информационный дизайн и всяческие удобности для пользователя. Плохим тоном уже считается одно только то, что на сайте нет форума или гостевой книги, и самое ужасное &#8211; о, боже &#8211; вы до сих пор верстаете каждую страницу вручную, вместо того, что бы поручить сеё скучное и утомительное занятие скрипту.<span id="more-103"></span></p>
<p>Время первопроходцев HTML в скором времени закончится и вовсе, и их место займут профессионалы-программисты. Именно программисты, ибо уже в большей степени от их умения создать удобный в использование сайт зависит его успех. Кроме прочего, теперь сайты создают совсем уж как программные продукты: тем кто занят наполнением содержанием, уже может не опасаться запутаться в html, java, cgi и прочих ипостасях интернет-технологий &#8211; администрирование сайта становится таким же привычным и удобным, как работа с текстовыми процессорами. Пока, правда, ощущается явный недостаток законченных продуктов, на плечи которых можно было бы возложить все функции по поддержанию сайта в актуальном состоянии, оставив себе лишь вопросы по наполнению его содержанием.</p>
<p>Пока же тяжкое бремя по созданию данных систем, на основе которых будет функционировать сайт, ложится на плечи программистов, только вот-вот успевших изумится возможностями языка Perl или Java. И многие из них, сказать без преувеличения, вышли, словно из гоголевской &laquo;Шинели&raquo;, из Delphi. Действительно, данная среда разработчика, предоставляющая удобный интерфейс для визуального программирования и широкие возможности Object Pascal, столь мила сердцу российских программистов.</p>
<p>Но, похоже, что времена меняются, и Delphi из среды создания обычных настольных приложений, может сгодиться и в другом плане: для написания прикладных web-программ. И действительно, что может быть лучше: уже знакомая среда разработки, вдоль и поперек изученный язык, да и достаточно широкий круг специалистов по программированию в Delphi &#8211; это ли не плюсы создания web-приложений на Delphi. Есть конечно и минусы: созданные программы вряд ли смогут удовлетворить тех, кто считает, что лучший web-сервер, это сервер не от Microsoft. Но что поделаешь &#8211; версия Delphi под Unix отложена пока до лучших времен. Зато посудите сами: перенос программ в будущем светлом будущем можно будет совершить с малой кровью.</p>
<p>Но отложим пока теорию в сторону, и обратимся к практике. Итак, создание web-приложения в среде Delphi, что называется шаг за шагом.</p>
<p>Пример из учебника</p>
<p>В отличие от прочих аспектов создания приложений в Delphi, о создании приложений для web написано мало. Так ужасающе мало, что из книги в книгу, из учебника в учебник путешествует один и тот же пример. Не будем оригинальничать и мы &#8211; чем проще, тем лучше.</p>
<p>Вообще, простейшее web-приложение на Delphi мало чем отличается, а точнее ничем не отличается от создания программы для старой доброй DOS. Это &#8211; простейшее консольное приложение, запускаемое на стороне сервера и взаимодействующие с пользователем (в случае необходимости) через броузер.</p>
<p>Создайте в Delphi новый проект &#8211; ту самую уже давно забытую всем Console Application. Вы получите знакомый со школьной скамьи, текст обычной паскалевской программы:</p>
<p>program primer;</p>
<p>{$APPTYPE CONSOLE}</p>
<p>uses SysUtils;</p>
<p>begin</p>
<p>// Insert user code here</p>
<p>end.</p>
<p>Далее еще проще. Организуем вывод кода HTML с помощью команды writeln.</p>
<p>writeln (&#8216;CONTENT-TYPE: TEXT/HTML&#8217;); writeln; writeln (&#8216;&lt;html&gt;&#8217;); writeln (&#8216;&lt;head&gt;&#8217;); writeln (&#8216;&lt;meta HTTP-EQUIV=&raquo;Content-Type&raquo; Content=&raquo;text-html; charset=windows-1251&#8243;&gt;&#8217;); writeln (&#8216;&lt;title&gt;Delphi the best facility for making web-publications!&lt;/title&gt;&#8217;); writeln (&#8216;&lt;/head&gt;&#8217;); writeln (&#8216;&lt;body bgcolor=&raquo;white&raquo;&gt;&#8217;); writeln (&#8216;Hello, world!&#8217;); writeln (&#8216;&lt;/body&gt;&#8217;); writeln (&#8216;&lt;/html&gt;&#8217;);</p>
<p>Обратите внимание на строку CONTENT-TYPE: TEXT/HTML, которая определяет описание последующего содержимого, а именно кода HTML. После CONTENT-TYPE: TEXT/HTML, необходимо вывести пустую строку иначе броузер может выдать сообщение об ошибке.</p>
<p>Теперь, когда приложение закончено, осталось его скомпилировать и проверить. Для проверки работоспособности программы вам понадобиться веб-сервер. Можно особо не утруждаться, подойдет любой, даже стандартный домашний веб-сервер от Microsoft. Приложение надо будет разместить в папке публикаций сервера (обычно это &#8211; C:\Inetpub\ wwwroot) и запустить сам сервер. Теперь, если вы перейдете по адресу http://localhost/primer.exe в броузере, вы должны увидеть результат действия данной программы &#8211; строку Hello, world! Вот и всё, простейшее web-приложение на Delphi готово.</p>
<p>Передача параметров</p>
<p>На самом деле нам бы вряд ли понадобилось Delphi, для создания подобных программ. Конечно, можно генерировать страницы исходя из различных условий, но вопрос в том, как данные условия передать программе. И здесь оказывается не всё так сложно, достаточно вспомнить передачу параметров приложению с помощью командной строки и поступить соответствующе. Хотя это, разумеется, хитрость. Это для приложения Delphi мы оперируем командной строкой, для пользователя же это адресная строка в броузере, то есть url.</p>
<p>Попробуем на примере. Необходимо создать приложение, которое выдает различную информацию (к примеру, время, дату или то и другое вместе) в зависимости от параметров, указанных в адресной строке броузера. Как известно, за данные в параметрах отвечают такие функции, как ParamCount и ParamStr. Их-то мы и будем использовать.</p>
<p>program CgiDate;</p>
<p>{$APPTYPE CONSOLE}</p>
<p>uses SysUtils;</p>
<p>begin</p>
<p>writeln (&#8216;CONTENT-TYPE: TEXT/HTML&#8217;);</p>
<p>writeln;</p>
<p>writeln (&#8216;&lt;HTML&gt;&lt;HEAD&gt;&#8217;);</p>
<p>writeln (&#8216;&lt;TITLE&gt;Cgidate&lt;/TITLE&gt;&#8217;);</p>
<p>writeln (&#8216;&lt;/HEAD&gt;&lt;BODY&gt;&gt;&#8217;);</p>
<p>writeln (&#8216;&lt;H1&gt;Пример передачи параметров&lt;/H1&gt;&#8217;);</p>
<p>writeln (&#8216;&lt;HR&gt;&#8217;);</p>
<p>writeln (&#8216;&lt;H4&gt;</p>
<p>if ParamCount &gt;0 then</p>
<p>begin</p>
<p>if ParamStr (1) = &#8216;date&#8217; then</p>
<p>writeln (FormatDateTime(&#8216;&raquo;Сегодня &raquo; dddd, mmmm d, yyyy&#8217;, Now))</p>
<p>else if ParamStr (1) = &#8216;time&#8217; then</p>
<p>writeln (FormatDateTime(&#8216;&raquo;Время&raquo; hh:mm:ss AM/PM&#8217;, Now))</p>
<p>else if ParamStr (1) = &#8216;both&#8217; then</p>
<p>writeln (FormatDateTime(&#8216;&raquo;Сегодня &raquo; dddd, mmmm d, yyyy,&#8217;</p>
<p>+ &#8216;&raquo;&lt;p&gt; и время&raquo; hh:mm:ss AM/PM&#8217;, Now))</p>
<p>else</p>
<p>writeln (&#8216;Ошибка! Неверный параметр: &#8216; + ParamStr (1) + &#8216;.&#8217;)</p>
<p>end</p>
<p>else</p>
<p>writeln (&#8216;Параметр отсутствует.&#8217;);</p>
<p>writeln (&#8216;&lt;/BODY&gt;&lt;/HTML&gt;&#8217;);</p>
<p>end.</p>
<p>Не правда ли просто? Теперь, если в адресной строке броузера вы наберете, например http://localhost/cgidate/exe?time, будет сгенерирована страница, отображающая текущее время, http://localhost/cgidate/exe?date &#8211; соответственно дата, а при передаче параметра both &#8211; текущая дата и время. В случае если никакой из параметров передан не был или он был ошибочен &#8211; возникнет сообщение об этом.</p>
<p>Данные адреса и параметры можно непосредственно указать в коде HTML и генерировать необходимые изменения на странице либо другие страницы переходя по соответствующим ссылкам.</p>
<p>Следует обратить внимание на то, как передавать данные через url. Знак вопроса отделяет параметр от адреса файла, с помощью знака равенства web-приложению передается значение данного параметра. Так как в адресной строке нельзя использовать пробел, он заменяется на шестнадцатеричный код в таблице ASCII, то есть %20.</p>
<p>Но на самом деле, если некие данные передаются от пользователя web-приложению, то обычно для этого используют формы, а не url (хотя одно другому не мешает). Попробуем и мы создать приложение, которое бы получало данные от пользователя, занесенные им в форму.</p>
<p>Для начала, естественно, нужно создать сам код HTML в котором бы присутствовала форма с полями ввода, кнопкой отправки и прочими необходимыми атрибутами. При этом form action должен содержать адрес программы, которая будет получать данные. Значение method может быть равно как GET, так и POST. На самом деле GET &#8211; это и есть передача параметров через url, добавляя их к адресной строке, так как POST передает их приложению посредством стандартного потока ввода. Какой из них лучше и удобней &#8211; решать вам, но чаще всего метод GET используется именно для генерации страниц (достаточно взглянуть на url который возникает при работе на поисковых серверах), тогда как второй для &#8211; передачи данных, отображать которые в адресной строке было бы весьма накладно.</p>
<p>Затем необходимо создать приложение, которое бы адекватно смогло воспринять все эти данные со стороны пользователя. В случае если данные передавались с помощью метода GET проблем не будет &#8211; можно действовать как в предыдущем примере. Если же приложение получает данные от пользователя с помощью POST, всё несколько иначе.</p>
<p>Необходимо будет считывать данные из переменной окружения, а для этого мы, естественно, должны знать данные переменные.</p>
<p>Гюльчитай, открой личико</p>
<p>Нет в мире тайн. Особенно их мало у пользователя от web-приложения. И если мы не знаем о пользователе кое-что личное, все прочее броузеры с легкостью отдают web-серверу, нисколько не заботясь о приватности и желаниях того самого пользователя. Это, конечно, нехорошо для пользователя, но хорошо для разработчика web-приложения, поскольку для него знания &#8211; великая вещь.</p>
<p>Итак, данные от пользователя web-приложению можно передать через переменные окружения. Вот список наиболее часто употребляемых:</p>
<p>GATEWAY_INTERFACE</p>
<p>Поддерживаемая версия CGI.</p>
<p>REQUEST_METHOD</p>
<p>Метод запроса, может быть как GET так и POST.</p>
<p>HTTP_REFERER</p>
<p>Адрес страницы (url), активирующей текущее приложение на web-сервере.</p>
<p>PATH_INFO</p>
<p>Путь переданный приложению расположенный между именем приложения и строкой запроса.</p>
<p>QUERY_STRING</p>
<p>Строка запроса, если метод &#8211; GET, добавляеться к url.</p>
<p>REMOTE_HOST</p>
<p>Имя хоста удаленного пользователя.</p>
<p>REMOTE_USER</p>
<p>Имя удаленного пользователя.</p>
<p>REMOTE_IDENT</p>
<p>IP-адрес удаленного пользователя.</p>
<p>HTTP_USER_AGENT</p>
<p>Имя и версия броузера удаленного пользователя.</p>
<p>С помощью данных переменных можно получить исчерпывающую информацию о пользователе и передаваемых данных для верного проектирования вашего web-приложения. Конечно, этого хватит в том случае, если вы не собираетесь подобно Большому Брату следить за каждым телодвижением пользователя.</p>
<p>Но вернемся к поставленной задаче &#8211; передаче данных приложению от пользователя через форму. Данные, которые передаются через QUERY_STRING в приложение с помощью метода POST, достаточно просто извлечь для использования.</p>
<p>Ниже листинг программы, выдающий список некоторых переменных окружения и их значения. Узнайте кое-что о своем броузере и web-сервере.</p>
<p>program CgiVars;</p>
<p>{$APPTYPE CONSOLE}</p>
<p>uses</p>
<p>Windows;</p>
<p>сonst</p>
<p>VarList: array [1..17] of string [30] =</p>
<p>(&#8216;SERVER_NAME&#8217;, &#8216;SERVER_PROTOCOL&#8217;,</p>
<p>&#8216;SERVER_PORT&#8217;, &#8216;SERVER_SOFTWARE&#8217;,</p>
<p>&#8216;GATEWAY_INTERFACE&#8217;, &#8216;REQUEST_METHOD&#8217;,</p>
<p>&#8216;PATH_TRANSLATED&#8217;, &#8216;HTTP_REFERER&#8217;,</p>
<p>&#8216;SCRIPT_NAME&#8217;, &#8216;PATH_INFO&#8217;,</p>
<p>&#8216;QUERY_STRING&#8217;, &#8216;HTTP_ACCEPT&#8217;,</p>
<p>&#8216;REMOTE_HOST&#8217;, &#8216;REMOTE_USER&#8217;,</p>
<p>&#8216;REMOTE_ADDR&#8217;, &#8216;REMOTE_IDENT&#8217;,</p>
<p>&#8216;HTTP_USER_AGENT&#8217;);</p>
<p>var</p>
<p>I: Integer;</p>
<p>ReqVar: string;</p>
<p>VarValue: array [0..200] of Char;</p>
<p>begin</p>
<p>writeln(&#8216;Content type: text/html&#8217;);</p>
<p>writeln;</p>
<p>writeln(&#8216;&lt;HTML&gt;&lt;HEAD&gt;&#8217;);</p>
<p>writeln(&#8216;&lt;TITLE&gt;CGI Variables&lt;/TITLE&gt;&#8217;);</p>
<p>writeln(&#8216;&lt;/HEAD&gt;&lt;BODY&gt;&#8217;);</p>
<p>writeln(&#8216;&lt;H1&gt;CGI Variables&lt;/H1&gt;&#8217;);</p>
<p>writeln(&#8216;&lt;HR&gt;&lt;PRE&gt;&#8217;);</p>
<p>for I := Low (VarList) to High (VarList) do</p>
<p>begin</p>
<p>ReqVar := VarList[I];</p>
<p>if (GetEnvironmentVariable (PChar(ReqVar),</p>
<p>VarValue, 200) &gt; 0) then</p>
<p>else</p>
<p>VarValue := &raquo;;</p>
<p>writeln (VarList[I] + &#8216; = &#8216; + VarValue);</p>
<p>end;</p>
<p>writeln(&#8216;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;&#8217;);</p>
<p>end.</p>
<p>За кадром</p>
<p>В этой статье мы не коснулись другой и уж наверняка более обширной и сложной темы, как создание ISAPI-приложений на Delphi. Вышеприведенные способы создания приложений годны лишь в том случае, если вам необходимо быстрое, компактное и не слишком сложное web-приложение. Если же вам необходим, к примеру, доступ к базам данным, то подобный путь неприемлем.</p>
<p>Для создания полномасштабных приложений для интернета в Delphi существует специальный помощник &#8211; Web Server Application. С его помощью можно создать приложение генерируещее динамические web-страницы, основанные на CGI, NSAPI или ISAPI. Единственное накладываемое ограничение &#8211; непосредственно web-сервер должен работать на базе Windows.</p>
<p>Одним из главных преимуществ создания подобных приложений именно в среде Delphi является то, что вы продолжаете работать с визуальными компонентами &#8211; это значительно проще, чем создание приложений в других средах &#8211; возможность ошибки в больших проектах, где используется визуальное проектирование меньше, чем в тех, где всё описывается исключительно кодом. Кроме того, средства создания web-приложений позволяют импортировать уже существующие приложения в интернет-среду, что, согласитесь, немаловажно. Пока, конечно, Delphi не обладает большим набором компонентов для web-приложений, но, видимо, уже следующая версия этой среды обзаведется необходимыми. Но и сейчас Delphi можно считать достаточно удобным инструментом для создания приложений, взаимодействующих с интернетом.</p>
]]></content:encoded>
			<wfw:commentRss>http://web.chizh.com.ua/%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%bd%d0%b8%d0%b5-web-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b9-%d0%b2-%d1%81%d1%80%d0%b5%d0%b4%d0%b5-delphi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Языки программирования клиент-машин</title>
		<link>http://web.chizh.com.ua/%d1%8f%d0%b7%d1%8b%d0%ba%d0%b8-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-%d0%ba%d0%bb%d0%b8%d0%b5%d0%bd%d1%82-%d0%bc%d0%b0%d1%88%d0%b8%d0%bd/</link>
		<comments>http://web.chizh.com.ua/%d1%8f%d0%b7%d1%8b%d0%ba%d0%b8-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-%d0%ba%d0%bb%d0%b8%d0%b5%d0%bd%d1%82-%d0%bc%d0%b0%d1%88%d0%b8%d0%bd/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 10:34:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://web.chizh.com.ua/?p=100</guid>
		<description><![CDATA[Языки программирования клиент-машин
JavaScript
Web, как гипертекстовую систему, можно рассматривать с двух точек зрения. Во-первых, как совокупность отображаемых страниц, связанных гипертекстовыми переходами. Во-вторых, кaк множество элементарных информационных объектов, составляющих отображаемые страницы (текст, графика, мобильный код и т.п.). В последнем случае множество гипертекстовых переходов страницы &#8211; это такой же информационный фрагмент, как и встроенная в текст картинка. 
При [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Языки программирования клиент-машин</strong></p>
<p>JavaScript</p>
<p>Web, как гипертекстовую систему, можно рассматривать с двух точек зрения. Во-первых, как совокупность отображаемых страниц, связанных гипертекстовыми переходами. Во-вторых, кaк множество элементарных информационных объектов, составляющих отображаемые страницы (текст, графика, мобильный код и т.п.). В последнем случае множество гипертекстовых переходов страницы &#8211; это такой же информационный фрагмент, как и встроенная в текст картинка. <span id="more-100"></span></p>
<p>При втором подходе гипертекстовая сеть определяется на множестве элементарных информационных объектов самими HTML-страницами, которые и выступают в роли гипертекстовых связей. Этот подход более продуктивен с точки зрения построения отображаемых страниц &laquo;на лету&raquo; из готовых компонентов.</p>
<p>При генерации страниц в Web возникает дилемма, связанная с архитектурой &laquo;клиент-сервер&raquo;. Страницы можно генерировать как на стороне клиента, так и на стороне сервера. Последнее реализуется через механизм подстановок на стороне сервера (Server Site Includes). Компания Netscape распространила в 1995 году механизм управления страницами и на клиента, разработав язык программирования JavaScript.</p>
<p>Таким образом, JavaScript &#8211; это язык управления сценариями просмотра гипертекстовых страниц Web на стороне клиента. Если быть более точным, то JavaScript &#8211; это не только язык программирования на стороне клиента. Liveware, прародитель JavaScript, является средством подстановок на стороне сервера Netscape. Однако, наибольшую популярность JavaScript обеспечило программирование на стороне клиента.</p>
<p>К возможностям JavaScript можно, например, отнести следующее:</p>
<p>•   отображать изменяющиеся данные, такие как текущее время или дата;</p>
<p>• программировать переменное содержание в зависимости от даты, броузера пользователя или других условий;</p>
<p>•  изменять внешний вид элементов страницы, если пользователь щелкнул мышью или провел курсор мыши над элементом.</p>
<p>Для языка высокого уровня JavaScript обладает довольно сильными возможностями. Он не позволяет работать на уровне машинных кодов, однако вы получаете доступ ко многим возможностям броузеров, Web-страниц, а иногда и системы, в которой работает броузер. В отличие от Java™ или С, программы на JavaScript обходятся без компиляции, а вашему броузеру не придется загружать виртуальную машину для выполнения программного кода. Программируй и загружай!</p>
<p>JavaScript также работает в объектно-ориентированной архитектуре, напоминающей Java или C++. Такие возможности языка, как конструкторы или наследование на базе прототипов, добавляют в схему разработки новый уровень абстракции, что способствует многократному использованию программного кода.</p>
<p>Одна из главных причин, по которой Web-разработчики приняли JavaScript, — возможность выполнения на стороне клиента многих функций, которые ранее выполнялись исключительно на стороне сервера. Лучшим примером является проверка форм. Программисты старой школы еще помнят, что несколько лет назад для проверки пользовательского ввода в формах HTML приходилось пересылать информацию на Web-сервер и передавать ее сценарию CGI, где и проходила проверка введенных данных.</p>
<p>Если данные не содержали ошибок, сценарий CGI продолжал работу. Однако при обнаружении ошибок сценарий возвращал пользователю сообщение с описанием проблемы. Хотя это решение работает, представьте, сколько лишней работы при этом происходит. Для передачи формы необходим специальный запрос HTTP от сервера. После пересылки данных в Сети приходится заново выполнять сценарий CGI. Этот процесс повторяется каждый раз, когда пользователь допускает ошибку при заполнении формы. Пользователь узнает об ошибке лишь после того, как сообщение об ошибке вернется к нему.</p>
<p>Но вот на сцене появляется JavaScript. Теперь элементы формы можно проверить до того, как пользователь передаст информацию Web-серверу. Это приводит к уменьшению количества транзакций HTTP, а также заметному снижению вероятности ошибки при повторном заполнении формы. Кроме того, JavaScript позволяет читать и записывать cookie — когда-то эта операция выполнялась исключительно средствами Web-сервера для работы с заголовками.<br />
Коротко о некоторых особенностях JavaScript</p>
<p>Тэг &lt;SCRIPT&gt; сообщает броузеру, что внутри HTML размещен код JavaScript. Тэг &lt;/SCRIPT&gt; отменяет действие. &lt;!— и —&gt; тэги сообщают броузерам, которые не могут интерпретировать &lt;SCRIPT&gt; и &lt;/SCRIPT&gt;, что строки кода следует рассматривать как комментарии. Двойная косая черта (//) перед тэгом &#8211;&gt; &#8211; знак комментария в языке JavaScript; без него JavaScript интерпретирует &#8211;&gt; как ошибочный оператор.</p>
<p>Если вы забудете точку с запятой, JavaScript сам подставит ее в конце строки, но проблем будет меньше, если вы сами проследите за пунктуацией.</p>
<p>При строгой типизации данных каждая переменная имеет один и только один тип данных, который не может быть изменен. Объявленное целым останется целым всегда, объявленное строкой останется строкой всегда. При слабой типизации данных, как в JavaScript, вы можете поместить любое значение в любую переменную, и переменная примет требуемый тип данных.</p>
<p>Document.write &#8211; метод, который прописывает HTML в Web-страницу как при программировании вручную.</p>
<p>Каждый JavaScript-оператор должен заканчиваться точкой с запятой. Отсутствие точки с запятой JavaScript считает ошибкой. Логические выражения должны быть заключены в круглые скобки, а блоки операторов — в фигурные скобки.</p>
<p>JavaScript использует знак == как логический оператор эквивалентности и знак = в качестве оператора присваивания. Попытка сравнения с использованием знака равенства (=) &#8211; вторая причина ошибок в JavaScript.</p>
<p>VBScript</p>
<p>В ответ на появление JavaScript Microsoft выпустила версию своего популярного языка программирования Visual Basic. В целом VBScript делает то же самое, что JavaScript, только программный код очень похож на Visual Basic.</p>
<p>Visual Basic Script &#8211; подмножество языка Visual Basic. VBScript позволяет решать задачи, связанные с Internet, а именно создавать сценарии (или скрипты) управления объектами (кнопками, списками, ниспадающими меню и т. д.) на Web-страничках.  С помощью VBScript можно быстро создавать собственные страницы или даже писать игры. И все это размещается внутри HTML-документа.<br />
Коротко о некоторых особенностях VBScript</p>
<p>VBScript отличается от JavaScript следующим:</p>
<p>•   в конце оператора не ставится точка с запятой;</p>
<p>•   знак равенства используется как для присвоения значений переменным, так и для выполнения операции сравнения;</p>
<p>•   блоки операторов выделяются не фигурными скобками, а парами ключевых слов if&#8230;endif, do&#8230;loop, и while&#8230;wend.</p>
<p>Так же как в JavaScript, переменные вводятся по мере необходимости, а их тип определяется по контексту. VBScript поддерживает почти все встроенные функции Visual Basic. На Web-страницах VBScript выглядит следующим образом:</p>
<p>&lt;script language=&raquo;VBScript&raquo;&gt; &lt;!—</p>
<p>document.write(&laquo;URL=&raquo; + document.location) —&gt;</p>
<p>&lt;/script&gt;</p>
<p>Тэги &lt;SCRIPT&gt; и &lt;/SCRIPT&gt; практически такие же, как и раньше, а язык определяется как VBScript. Тэги &lt;!— и —&gt; &#8211; те же самые, но без знака комментариев //.</p>
<p>Основной недостаток VBScript состоит в том, что его поддерживает только Internet Explorer. Это уничтожает всякую надежду использовать одну и ту же страницу как для пользователей Netscape Navigator, так и для пользователей Internet Explorer. По этой причине использование VBScript для программирования на стороне клиента ограничено.</p>
<p>Java</p>
<p>Создание языка Java — один из самых значительных шагов вперед в области разработки сред программирования за последние 20 лет. Язык HTML был необходим для статического размещения страниц во “Всемирной паутине” WWW (World Wide Web). Язык Java потребовался для качественного скачка в создании интерактивных продуктов для сети Internet.</p>
<p>Три ключевых элемента объединились в технологии языка Java и сделали ее в корне отличной от всего, существующего на сегодняшний день.<br />
Java предоставляет для широкого использования свои апплеты (applets) — небольшие, надежные, динамичные, не зависящие от платформы активные сетевые приложения, встраиваемые в страницы Web. Апплеты Java могут настраиваться и распространяться потребителям с такой же легкостью, как любые документы HTML.</p>
<p>Java высвобождает мощь объектно-ориентированной разработки приложений, сочетая простой и знакомый синтаксис с надежной и удобной в работе средой разработки. Это позволяет широкому кругу программистов быстро создавать новые программы и новые апплеты.<br />
Java предоставляет программисту богатый набор классов объектов для ясного абстрагирования многих системных функций, используемых при работе с окнами, сетью и для ввода-вывода. Ключевая черта этих классов заключается в том, что они обеспечивают создание независимых от используемой платформы абстракций для широкого спектра системных интерфейсов.</p>
<p>История создания</p>
<p>Язык Java зародился как часть проекта создания передового программного обеспечения (ПО) для различных бытовых приборов. Реализация проекта была начата на языке С++, но вскоре возник ряд проблем, наилучшим средством борьбы с которыми было изменение самого инструмента &#8211; языка программирования. Стало очевидным, что необходим платформо-независимый язык программирования, позволяющий создавать программы, которые не приходилось бы компилировать отдельно для каждой архитектуры и можно было бы использовать на различных процессорах под различными операционными системами.</p>
<p>Апплеты Java</p>
<p>Каждый апплет — это небольшая программа, динамически загружаемая по сети — точно так же, как картинка, звуковой файл или элемент мультипликации. Главная особенность апплетов заключается в том, что они являются настоящими программами, а не очередным форматом файлов для хранения мультфильмов или какой-либо другой информации. Апплет не просто проигрывает один и тот же сценарий, а реагирует на действия пользователя и может динамически менять свое поведение.</p>
<p>Именно броские Web-страницы с анимацией привлекли большинство ранних приверженцев языка Java. Поскольку пользователи не сразу смогли полностью освоить наиболее революционные аспекты Java, этот язык часто сравнивался с другими технологиями для загрузки динамических изображений и простого взаимодействия с Web-клиентами.<br />
Революционный язык программирования</p>
<p>Разработчики Java с самого начала хорошо понимали, что язык, предназначенный для решения проблем гетерогенных сред, также должен быть<br />
простым &#8211; его должны с легкостью использовать все разработчики<br />
ясным &#8211; разработчики должны без больших усилий выучить Java<br />
объектно-ориентированным &#8211; он использует все преимущества современных методологий разработки ПО и подходит для написания распределенных клиент-серверных приложений<br />
многопоточным &#8211; для обеспечения высокой производительности приложений, выполняющих одновременно много действий (например, в мультимедийных системах)<br />
интерпретируемым &#8211; для переносимости и большей динамичности</p>
<p>Язык должен был воплощать следующие качества: простоту и мощь, безопасность, объектную ориентированность, надежность, интерактивность, архитектурную независимость, возможность интерпретации, высокую производительность и легкость в изучении. Даже если вы никогда не напишете ни одной строки на языке Java, знать о его возможностях весьма полезно, поскольку именно перечисленные выше свойства языка придают динамику страницам Всемирной паутины.</p>
<p>-     Простота и мощь</p>
<p>После освоения основных понятий объектно-ориентированного программирования вы быстро научитесь программировать на Java. В наши дни существует много систем программирования, гордящихся тем, что в них одной и той же цели можно достичь десятком различных способов. В языке Java изобилие решений отсутствует — для решения задачи у вас будет совсем немного вариантов. Стремление к простоте зачастую приводило к созданию неэффективных и невыразительных языков типа командных интерпретаторов. Java к числу таких языков не относится – для Вас вся мощность ООП и библиотек классов.</p>
<p>-    Безопасность</p>
<p>В популярной литературе наших дней, особенно если речь заходит об Internet, стало модной темой обсуждение вопросов безопасности. Люди уверены, что использование Internet в коммерческой деятельности равносильно написанию номера своей кредитной карточки на стенке телефонной будки. Один из ключевых принципов разработки языка Java заключался в обеспечении защиты от несанкционированного доступа. Программы на Java не могут вызывать глобальные функции и получать доступ к произвольным системным ресурсам, что обеспечивает в Java уровень безопасности, недоступный для других языков.</p>
<p>-     Объектная ориентированность</p>
<p>Забавно наблюдать, как многочисленные новые диалекты старых языков безапелляционно объявляются объектно-ориентированными. Поскольку при разработке языка отсутствовала тяжелая наследственность, для реализации объектов был избран удобный прагматичный подход. Разработчики Java старались выдержать разумный компромисс между моделью пуристов — “все является объектами”, и моделью хакеров — “уйди с моей дороги”. Объектная модель в Java проста и легко расширяется, в то же время, ради повышения производительности, числа и другие простые типы данных Java не являются объектами.</p>
<p>-     Надежность</p>
<p>Java ограничивает вас в нескольких ключевых областях и таким образом способствует обнаружению ошибок на ранних стадиях разработки программы. В то же время в ней отсутствуют многие источники ошибок, свойственных другим языкам программирования (строгая типизация, например). Большинство используемых сегодня программ “отказывают” в одной из двух ситуаций: при выделении памяти, либо при возникновении исключительных ситуаций. Java фактически снимает обе эти проблемы, используя сборщик мусора для освобождения незанятой памяти и встроенные объектно-ориентированные средства для обработки исключительных ситуаций.</p>
<p>-     Интерактивность</p>
<p>Java создавалась как средство, которое должно удовлетворить насущную потребность в создании интерактивных сетевых программ. В Java реализовано несколько интересных решений, позволяющих писать код, который выполняет одновременно массу различных функций и не забывает при этом следить за тем, что и когда должно произойти. В языке Java для решения проблемы синхронизации процессов применен наиболее элегантный из всех когда-либо изобретенных методов, который позволяет конструировать прекрасные интерактивные системы.</p>
<p>-     Независимость от архитектуры ЭВМ</p>
<p>Вопрос о долговечности и переносимости кода важнее религиозных войн между ПК и Макинтошами. Создатели Java наложили на язык и на среду времени выполнения несколько жестких требований, которые на деле, а не на словах позволяют, однажды написав, всегда запускать программу в любом месте и в любое время (где существует виртуальная Java-машина – броузеры на всех платформах, OS/2, Netware).</p>
<p>-     Интерпретация плюс высокая производительность</p>
<p>Необычайная способность Java исполнять свой код на любой из поддерживаемых платформ достигается тем, что ее программы транслируются в некое промежуточное представление, называемое байт-кодом (bytecode). Байт-код, в свою очередь, может интерпретироваться в любой системе, в которой есть среда времени выполнения Java. Большинство ранних систем, в которых пытались обеспечить независимость от платформы, обладало огромным недостатком — потерей производительности (Basic, Perl). Несмотря на то, что в Java используется интерпретатор, байт-код легко переводится непосредственно в “родные” машинные коды (Just In Time compilers) “на лету”. При этом достигается очень высокая производительность (Symantec JIT встроен в Netscape Navigator).</p>
<p>-     Простота изучения</p>
<p>Язык Java, хотя и более сложный чем языки командных интерпретаторов, все же неизмеримо проще для изучения, чем другие другие языки программирования, например C++. Черты языка станут казаться вам естественным путем для решения тех или иных задач и будут способствовать отработке хорошего стиля программирования. Поскольку объектная модель в Java одновременно проста и выразительна, вы скоро освоитесь с объектно-ориентированным стилем создания программ.</p>
<p>-     Богатая объектная среда</p>
<p>Среда Java — это нечто гораздо большее, чем просто язык программирования. В нее встроен набор ключевых классов, содержащих основные абстракции реального мира, с которым придется иметь дело вашим программам. Основой популярности Java являются встроенные классы-абстракции, сделавшие его языком, действительно независимым от платформы. Библиотеки, подобные MFC/COM, OWL, VCL, NeXTStep, Motif и OpenDoc прекрасно работают на своих платформах, однако сегодня главной платформой становится Internet.<br />
VRML</p>
<p>Язык VRML (Virtual Realty Modelling Languagy) предназначен для описания трехмерных изображений и оперирует объектами, описывающими геометрические фигуры и их расположение в пространстве.</p>
<p>Vrml-файл представляет собой обычный текстовый файл, интерпретируемый браузером. Поскольку большинство браузеров не имеет встроенных средств поддержки vrml, для просмотра Vrml-документов необходимо подключить вспомогательную программу &#8211; Vrml-браузер, например, Live3D или Cosmo Player.</p>
<p>Как и в случае с HTML, один и тот же vrml-документ может выглядеть по-разному в разных VRML-браузерах. Кроме того, многие разработчики VRML-браузеров добавляют нестандартные расширения VRML в свой браузер.</p>
<p>Существует немало VRML-редакторов, делающих удобней и быстрее процесс создания Vrml-документов, однако несложные модели, рассматриваемые в данной статье, можно создать при помощи самого простого текстового редактора.</p>
]]></content:encoded>
			<wfw:commentRss>http://web.chizh.com.ua/%d1%8f%d0%b7%d1%8b%d0%ba%d0%b8-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-%d0%ba%d0%bb%d0%b8%d0%b5%d0%bd%d1%82-%d0%bc%d0%b0%d1%88%d0%b8%d0%bd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Языки описания документов</title>
		<link>http://web.chizh.com.ua/%d1%8f%d0%b7%d1%8b%d0%ba%d0%b8-%d0%be%d0%bf%d0%b8%d1%81%d0%b0%d0%bd%d0%b8%d1%8f-%d0%b4%d0%be%d0%ba%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%be%d0%b2/</link>
		<comments>http://web.chizh.com.ua/%d1%8f%d0%b7%d1%8b%d0%ba%d0%b8-%d0%be%d0%bf%d0%b8%d1%81%d0%b0%d0%bd%d0%b8%d1%8f-%d0%b4%d0%be%d0%ba%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%be%d0%b2/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 10:18:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://web.chizh.com.ua/?p=96</guid>
		<description><![CDATA[Языки описания документов
Язык гипертекстовой разметки HTML
World Wide Web, или, что-то же самое Всемирная паутина, WWW составляет основную компоненту глобальной компьютерной сети Интернет. Зародившись еще в 60-е гг., Интернет долгое время использовалась лишь узким кругом специалистов для обмена информацией по электронной почте. Сеть управлялась операционной системой UNIX &#8211; для научных целей это подходило, но достаточно сложный [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Языки описания документов</strong></p>
<p><strong>Язык гипертекстовой разметки HTML</strong></p>
<p>World Wide Web, или, что-то же самое Всемирная паутина, WWW составляет основную компоненту глобальной компьютерной сети Интернет. Зародившись еще в 60-е гг., Интернет долгое время использовалась лишь узким кругом специалистов для обмена информацией по электронной почте. Сеть управлялась операционной системой UNIX &#8211; для научных целей это подходило, но достаточно сложный текстовый интерфейс UNIX&#8217;a существенно ограничивал масштабы применения сетевых технологий. Годом рождения World Wide Web считается 1989 &#8211; в этом году был изобретен язык, ставший впоследствии основным языком web-документов &#8211; это язык &#8211; HTML (HyperText Markup Language &#8211; язык разметки гипертекста).<span id="more-96"></span></p>
<p>Автором языка HTML является Тим Бернерс-Ли (Tim Berners-Lee), выпускник Оксфордского университета, работавший в то время по контракту в Женеве, в Европейской лаборатории физики элементарных частиц (CERN, Conseil Europeen pour la Recherche Nucleaire) консультантом по программному обеспечению. CERN &#8211; достаточно большая организация, и потому, чтобы лучше ориентироваться в ее структуре, не хранить в памяти данные о большом количестве проектов, должностных лиц и пр., Тим Бернерс-Ли разработал для своего личного пользования программу Enquire, на основе которой через несколько лет для лаборатории было создано своего рода информационное пространство. Программа Enquire позволяла осуществлять так называемый &laquo;нелинейный&raquo; поиск документов &#8211; т.е. переходить от одного документа к другому без обращения к оглавлению или справочнику.</p>
<p>Язык HTML составляет основу технологии гипертекста. Гипертекстовый документ содержит так называемые гиперссылки.</p>
<p>Текстовые гиперссылки обычно выделяются цветом и подчеркиванием, хотя это необязательно. Гиперссылки позволяют пользователю немедленно перейти к нужному документу, независимо от места его физического расположения. Это существенно облегчает поиск информации, разбросанной по всему Земному шару. Технология гипертекста позволила связать всю совокупность опубликованных в Интернет документов в единую систему &#8211; WWW.</p>
<p>Язык разметки документов &#8211; это набор специальных инструкций, называемых тэгами, предназначенных для формирования в документах какой-либо структуры и определения отношений между различными элементами этой структуры. Тэги языка, или, как их иногда называют, управляющие дескрипторы, в таких документах каким-то образом кодируются, выделяются относительно основного содержимого документа и служат в качестве инструкций для программы, производящей показ содержимого документа на стороне клиента. В самых первых системах для обозначения этих команд использовались символы “&lt;” и “&gt;”, внутри которых помещались названия инструкций и их параметры. Сейчас такой способ обозначения тэгов является стандартным.</p>
<p>Когда осенью 1991 года Интернет впервые услышал позывные новой технологии, название которой легко уместилось в три буквы, почти никто не мог представить себе, что завоевания ее окажутся настолько глобальными. Популярность World Wide Web и неотъемлемой ее части, HTML, безусловно, стала причиной повышенного внимания к системам гипертекстовой разметки документов. Хотя понятие гипертекста было введено В.Бушем еще в 1945 году и, начиная с 60-х годов стали появляться первые приложения, использующие гипертекстовые данные.</p>
<p>Использование гипертекстовой разбивки текстового документа в современных информационных системах во многом связано с тем, что гипертекст позволяет создавать механизм нелинейного просмотра информации. В таких системах данные представляются не в виде непрерывного потока текстовой информации, а набором взаимосвязанных компонентов, переход по которым осуществляется при помощи гиперссылок.</p>
<p>Язык HTML не является собственно языком программирования; это есть средство описания структуры документа, его стиля и связей его с другими документами. Для просмотра Web-документов используются специальные программы &#8211; так называемые браузеры (англ.: to browse &#8211; 1) пастись, ощипывать побеги; 2) читать, заниматься беспорядочно, урывками.) Вообще-то, возможности браузеров много шире, но пока ограничимся их определением как средством просмотра web-документов. Именно браузерам Интернет обязана своей популярностью.</p>
<p>Создание языка HTML в 1989 году облегчило обмен информацией в пределах лаборатории CERN, однако это не решало проблем, связанных обменом информацией между сотрудниками лаборатории и их коллегами, работавшими в разных странах. Для того, чтобы такой обмен был возможен, необходимо было создать децентрализованную информационную систему, основанную на некоем стандарте обмена данными. Таким стандартом стал созданный Тимом-Бернерсом Ли в 1990 году протокол HTTP (HyperText Transfer Protocol, протокол передачи гипертекстовых файлов).</p>
<p>HTML является упрощенной версией стандартного общего языка разметки &#8211; SGML (Standart Generalised Markup Language), который был утвержден ISO в качестве стандарта еще в 80-х годах. Этот язык предназначен для создания других языков разметки, он определяет допустимый набор тэгов, их атрибуты и внутреннюю структуру документа. Контроль за правильностью использования дескрипторов осуществляется при помощи специального набора правил, называемых DTD- описаниями(более подробно о DTD мы поговорим чуть позже), которые используются программой клиента при разборе документа. Для каждого класса документов определяется свой набор правил, описывающих грамматику соответствующего языка разметки.</p>
<p>С помощью SGML можно описывать структурированные данные, организовывать информацию, содержащуюся в документах, представлять эту информацию в некотором стандартизованном формате. Но в виду некоторой своей сложности, SGML использовался, в основном, для описания синтаксиса других языков(наиболее известным из которых является HTML), и немногие приложения работали с SGML- документами напрямую.</p>
<p>Гораздо более простой и удобный, чем SGML, язык HTML позволяет определять оформление элементов документа и имеет некий ограниченный набор инструкций &#8211; тэгов, при помощи которых осуществляется процесс разметки. Инструкции HTML, в первую очередь, предназначены для управления процессом вывода содержимого документа на экране программы-клиента и определяют этим самым способ представления документа, но не его структуру. В качестве элемента гипертекстовой базы данных, описываемой HTML, используется текстовый файл, который может легко передаваться по сети с использованием протокола HTTP. Протокол HTTP позволил передавать по сети HTML-документы.</p>
<p>Появилась возможность организовать доступ многочисленных пользователей (клиентов) к HTML-документам, находящимся на так называемых серверах (англ.: to serve &#8211; служить, обслуживать). Ясно, что и на компьютере пользователя, с которого происходит обращение к серверу, и на сервере должно быть установлено специальное программное обеспечение:- сервер должен не только хранить документы, но и уметь быстро находить их по запросу клиента;- клиент (браузер) должен распознать HTML-код и визуализировать его, представить в легко воспринимаемом виде.Тим-Бернерс Ли написал первый браузер (который он назвал World Wide Web) и первый web-сервер (info.cern.ch). В 1991 году это программное обеспечение стало доступно достаточно широкому кругу пользователей Интернет. Он также разработал схему адресации к web-документам в Интернет. Тим-Бернерс Ли назвал ее Universal Resource Identifier (URI, универсальный идентификатор ресурсов). (Сейчас ее назвают URL—Uniform Resource Locator, унифицированный указатель ресурса.) Таким образом, разработка языка HTML, протокола HTTP, web-сервера, браузера и системы адресации (URI) явились основой развития Всемирной паутины (WWW).</p>
<p>Отсутствие единого стандарта, которого придерживались бы разработчики браузеров и web-серверов, привело бы к тому, что невозможно было бы создать сайта, который одинаково выглядел бы в разных браузерах. Пришлось бы под каждый браузер писать свой сайт.</p>
<p>Во избежание этого по инициативе Тима-Бернерса Ли в июле 1994 года на базе Массачуссетского технологического института (Massachussets Institute of Technlogies, MIT) был создан World Wide Web consortium (или просто W3C) (Тим-Бернерс Ли возглавил его). Основная цель W3C &#8211; обеспечить как можно большую совместимость программного обеспечения web-публикаций. W3C не является административным органом, это нечто вроде форума для выработки компромиссных решений в области web-технологий. Консорциум принимает на рассмотрение любые проекты и предложения. Спецификации, разработанные W3C, не обязательны для применения, но консорциум ведет работу по их пропаганде. HTML был ратифицирован World Wide Web Consortium.<br />
Язык гипертекстовой разметки XML</p>
<p>Зa короткий срок своего официального существования язык XML привлек к себе уже достаточно много внимания со стороны разработчиков и пользователей Интернет. Несмотря на то, что XML очень молод (международная организация W3C утвердила спецификацию &laquo;Extensible Markup Language(XML) 1.0&#8243; в начале февраля 1998г.), уже сегодня появляются новые языки, созданные на основе XML, возникают многочисленные Web-сервера, использующие эту технологию для организации хранящейся на них информации. Мир Интернет вокруг нас в очередной раз преображается, и мы можем стать участниками этого процесса уже сегодня</p>
<p><strong>Для чего нужен новый язык разметки?</strong></p>
<p>Самый популярный на сегодняшний день язык гипертекстовой разметки – HTML, был создан специально для организации информации, распределенной в сети Интернет, и является одной из ключевых составляющих технологии WWW. С использованием гипертекстовой модели документа способ представления разнообразных информационных ресурсов в сети стал более упорядочен, а пользователи получили удобный механизм поиска и просмотра нужной информации.</p>
<p>Однако современные приложения нуждаются не только в языке представления данных на экране клиента, но и в механизме, позволяющем определять структуру документа, описывать содержащиеся в нем элементы. HTML обладает несложным набором команд и вполне успешно справляется с задачей описания текстовой информации и отображением ее на экране программы просмотра &#8211; броузера. Однако сами отображаемые данные никак не связаны с теми тэгами, которые используются для форматирования, поэтому у программ-анализаторов нет возможности использовать тэги HTML для поиска нужных нам фрагментов документа. Т.е. встретив, например, такое описание</p>
<p>&lt;font color=&raquo;red&raquo;&gt;rose&lt;/font&gt;,</p>
<p>программа просмотра будет знать, каким цветом отобразить текст, содержащийся внутри тэгов &lt;font&gt;&lt;/font&gt; и, вероятно, отобразит его правильно, но ей абсолютно безразлично, в каком месте документа встретился этот тэг, в какие другие тэги заключен текущий фрагмент, существуют ли вложенные в него фрагменты, правильно ли построены отношения между объектами. Такое &laquo;безразличие&raquo; к структуре документа приводит к тому, что поиск или анализ информации внутри него ничем не будет отличаться от работы со сплошным, не разбитым на элементы текстовым файлом. А это, как известно, не самый эффективный способ работы с информацией.</p>
<p>Другим существенным недостатком HTML можно назвать ограниченность набора его тэгов. DTD- правила для HTML определяют фиксированный набор дескрипторов и поэтому у разработчика нет возможности вводить собственные, специальные тэги. Хотя время от времени появляются новые расширения языка(на сегодняшний день последней версией HTML является HTML 4.0), но долгий путь их стандартизации, сопровождаемый постоянными разногласиями между основными производителями броузеров делают практически невозможной быструю адаптацию языка, его использование для отображения специализированной информации(например, мультимедийной, математических, химических формул и т.д.).</p>
<p>Подводя итог всему сказанному, можно утверждать, что HTML уже сегодня не удовлетворяет в полной мере требованиям, предъявляемым современными разработчиками к языкам подобного рода. И ему на смену был предложен новый язык гипертекстовой разметки, мощный, гибкий, и, одновременно с этим, удобный язык XML. В чем же заключается его достоинства?</p>
<p><strong>XML (Extensible Markup Language)</strong> &#8211; это язык разметки, описывающий целый класс объектов данных, называемых XML- документами. Этот язык используется в качестве средства для описания грамматики других языков и контроля за правильностью составления документов. Т.е. сам по себе XML не содержит никаких тэгов, предназначенных для разметки, он просто определяет порядок их создания. Таким образом, если, например, мы считаем, что для обозначения элемента rose в документе необходимо использовать тэг &lt;flower&gt;;, то XML позволяет свободно использовать определяемый нами тэг и мы можем включать в документ фрагменты, подобные следующему:</p>
<p>&lt;flower&gt;rose&lt;/flower&gt;</p>
<p>Набор тэгов может быть легко расширен. Если, предположим, мы хотим также указать, что описание цветка должно по смыслу идти внутри описания оранжереи, в которой он цветет, то просто задаем новые тэги и выбираем порядок их следования:</p>
<p>&lt;conservatory&gt;</p>
<p>&lt;flower&gt;rose&lt;/flower&gt;</p>
<p>&lt;/conservatory&gt;</p>
<p>Если мы хотим посадить туда еще несколько цветочков, то должны внести следующие изменения:</p>
<p>&lt;conservatory&gt;<br />
&lt;flower&gt;rose&lt;/flower&gt;<br />
&lt;flower&gt;tulip&lt;/flower&gt;<br />
&lt;flower&gt;cactus&lt;/flower&gt;<br />
&lt;/conservatory&gt;</p>
<p>Как видно, сам процесс создания XML документа очень прост и требует от нас лишь базовых знаний HTML и понимания тех задач, которые мы хотим выполнить, используя XML в качестве языка разметки. Таким образом, у разработчиков появляется уникальная возможность определять собственные команды, позволяющие им наиболее эффективно определять данные, содержащиеся в документе. Автор документа создает его структуру, строит необходимые связи между элементами, используя те команды, которые удовлетворяют его требованиям и добивается такого типа разметки, которое необходимо ему для выполнения операций просмотра, поиска, анализа документа.</p>
<p>Еще одним из очевидных достоинств XML является возможность использования его в качестве универсального языка запросов к хранилищам информации. Сегодня в глубинах W3C находится на рассмотрении рабочий вариант стандарта XML-QL(или XQL), который, возможно, в будущем составит серьезную конкуренцию SQL. Кроме того, XML-документы могут выступать в качестве уникального способа хранения данных, который включает в себя одновременно средства для разбора информации и представления ее на стороне клиента. В этой области одним из перспективных направлений является интеграция Java и XML &#8211; технологий, позволяющая использовать мощь обеих технологий при построении машинно-независимых приложений, использующих, кроме того, универсальный формат данных при обмене информации.</p>
<p>XML позволяет также осуществлять контроль за корректностью данных, хранящихся в документах, производить проверки иерархических соотношений внутри документа и устанавливать единый стандарт на структуру документов, содержимым которых могут быть самые различные данные. Это означает, что его можно использовать при построении сложных информационных систем, в которых очень важным является вопрос обмена информацией между различными приложениями, работающими в одной системе. Создавая структуру механизма обмена информации в самом начале работы над проектом, менеджер может избавить себя в будущем от многих проблем, связанных с несовместимостью используемых различными компонентами системы форматов данных.</p>
<p><strong><br />
Dynamic HTML</strong></p>
<p>До появления версий 4.0 Internet Explorer и Netscape Navigator сценарии могли изменять содержание и внешний вид страниц, только используя метод write.document при загрузке страницы.</p>
<p>Любой сценарий, выполняемый позже, может посылать команды броузеру, такие как запрос на загрузку новой страницы, вывод окна предупреждения или изменение значения поля формы, но как только страница загружена, сценарий не может изменить HTML-код. Как же сделать Web- страницы интерактивными, если их невозможно изменить в ответ на дей­ствия пользователя?</p>
<p>Динамический HTML, частично реализованный в Netscape 4 и в большей степени в Internet Explorer 4, устраняет эти ограничения. С использованием динамического HTML сценарии могут вставлять блоки HTML, удалять и заменять их или изменять свойства объектов после отображения страницы на экране. Броузер автоматически обновляет новые свойства и (или) новый HTML-код. Динамический HTML строится на двух принципах.</p>
<p>•   Объектная модель документа (DOM) описывает способ организации и названия объектов в броузере, а также определяет, какие объекты и свойства могут быть изменены и какие значения они могут принимать.</p>
<p>•   Событийная модель описывает способ передачи управления сценариям &#8211; какие действия посылают сценарии на выполнение.<br />
<strong>Macromedia Flash</strong></p>
<p>World Wide Web (Всемирная паутина) развивается очень стремительно. Традиционные Web-сайты (Web-sites) со статическими информационными страницами уже не привлекают как прежде внимание конечных пользователей.  Поэтому Web-дизайнеры и разработчики пытаются придать своим страницам неотразимый вид, вводя графику и файлы анимационного формата GIF. Несмотря на то, что применение графики в традиционных форматах сжатия изображений GIF, JPEG и PNG придает сайту некоторый эффект, тем не менее, загрузка таких страниц может отнять много времени из-за больших размеров графических файлов. Альтернативным инструментом создания анимации является программный продукт— Macromedia Flash, который поможет добиться поставленных при Web-разработке целей.</p>
<p>По сравнению с другими графическими приложениями, предназначенными для публикации результатов в Web или вывода в файл, Flash обладает многими преимуществами, такими, как:<br />
Применение векторной (vector) графики, которая в действительности представляет собой ряд математических формул, описывающих размер, цвет и местоположение формы. Векторная графика состоит из линий и кривых, тогда как растровая (bitmapped) — из небольших точек растра, или пикселей (pixels). Применение математических формул является главным преимуществом отображения графики и сохранения небольшого размера файлов, что особенно важно для Web.<br />
Возможность сжатия анимации, графики и звука. Такое сжатие файла обусловливает свойство потоковой передачи (streaming), которое позволяет отображать сайт в Web-броузере до полной загрузки его содержимого. Это означает, что одна векторная графика сайта отображается, в то время как другая графика, звук и анимация все еще загружаются.<br />
Интерактивность во Flash может состоять из самых разных свойств. Помимо неограниченных возможностей применения простой графики, анимации или крупных заголовков, в любой объект или область сайта можно вводить полноценные навигационные свойства: кнопки, меню или фрагменты анимации, с помощью которых конечный пользователь перемещается по сайту. А задавая действия (actions), можно создавать интерактивные фильмы. Для создания интерактивных элементов управления во Flash предоставляется язык создания сценариев &#8211; ActionScript.<br />
Изображения и тест, разработанные во Flash, всегда отображаются ясно и четко, что опять же обусловлено векторной графикой.<br />
Flash помогает пользователю рисовать. В частности, Flash может распознавать основные геометрические формы в процессе их создания. При этом она заменяет небрежно нарисованную форму правильной геометрической формой, которую, как предполагается, пользователь пытается нарисовать. Например, если быстро нарисовать овал или окружность, создав круглую форму, Flash сделает эту форму более плавной и круглой, доведя ее до идеального овала или окружности. Кроме того, Flash помогает создавать прямые и плавные линии.</p>
<p>В состав Flash входит инструмент, который создает основу для большинства качественных Flash-фильмов. Этот инструмент – ActionScript &#8211; событийно-управляемый язык, встроенный во Flash. ActionScript делает ваши страницы интерактивными. Вы можете реагировать на события с мышки или с клавиатуры, можете выполнить какие-либо действия при проигрывании определенного кадра.</p>
<p>Для того чтобы овладеть ActionScript в полной мере, желательно уже иметь опыт программирования (предпочтительно на С++, JavaScript, etc.). Однако одним из достоинств языка Flash является то, что вам не нужно быть профессионалом во Flash, или полностью знать ActionScript, чтобы писать на нем качественный код. Вы можете использовать лишь те возможности языка, которые сочтете необходимыми для своей работы.</p>
]]></content:encoded>
			<wfw:commentRss>http://web.chizh.com.ua/%d1%8f%d0%b7%d1%8b%d0%ba%d0%b8-%d0%be%d0%bf%d0%b8%d1%81%d0%b0%d0%bd%d0%b8%d1%8f-%d0%b4%d0%be%d0%ba%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%be%d0%b2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Чем отличается SaaS CRM от услуги аренды CRM?</title>
		<link>http://web.chizh.com.ua/%d1%87%d0%b5%d0%bc-%d0%be%d1%82%d0%bb%d0%b8%d1%87%d0%b0%d0%b5%d1%82%d1%81%d1%8f-saas-crm-%d0%be%d1%82-%d1%83%d1%81%d0%bb%d1%83%d0%b3%d0%b8-%d0%b0%d1%80%d0%b5%d0%bd%d0%b4%d1%8b-crm/</link>
		<comments>http://web.chizh.com.ua/%d1%87%d0%b5%d0%bc-%d0%be%d1%82%d0%bb%d0%b8%d1%87%d0%b0%d0%b5%d1%82%d1%81%d1%8f-saas-crm-%d0%be%d1%82-%d1%83%d1%81%d0%bb%d1%83%d0%b3%d0%b8-%d0%b0%d1%80%d0%b5%d0%bd%d0%b4%d1%8b-crm/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 11:59:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://web.chizh.com.ua/?p=93</guid>
		<description><![CDATA[Чем отличается SaaS CRM от услуги аренды CRM?
Многие CRM провайдеры для солидности называют свои продукты всеми возможными модными терминами &#8211; SaaS, аренда, хостинг, on-demand&#8230; При этом под одними и теми же терминами могут встречаться немного разные схемы доставки приложений. 
Как правило, под SaaS CRM следует понимать веб-сервис, работающий на сервере провайдера и расчитанный на мульти-аккаунтную [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Чем отличается SaaS CRM от услуги аренды CRM?</strong></p>
<p>Многие CRM провайдеры для солидности называют свои продукты всеми возможными модными терминами &#8211; SaaS, аренда, хостинг, on-demand&#8230; При этом под одними и теми же терминами могут встречаться немного разные схемы доставки приложений. <span id="more-93"></span></p>
<p>Как правило, под SaaS CRM следует понимать веб-сервис, работающий на сервере провайдера и расчитанный на мульти-аккаунтную структуру. Т.е. для каждого клиента не развертывается отдельная копия программного обеспечения, а лишь создается аккаунт, внутри которого возможен доступ только к своим данным (а не к данным других компаний).</p>
<p>Под арендой (или хостингом) CRM чаще всего подразумевают такую схему: для каждого клиента на сервере провайдера развертывается отдельная копия системы со своей инфраструктурой (базой данных, промежуточным ПО). Все работы по установке, обновлению и обслуживанию системы производит провайдер (как правило бесплатно). Такая схема, в общем случае, дает больше возможностей для индивидуальной настройки системы, но она дороже для пользователя и сложнее с т.з. поддержки.</p>
<p>Часто предлагается аренда CRM системы на собственном или арендованном сервере, который расположен в офисе компании (за корпоративным файерволом). При этом компания получает более высокий уровень безопасности, но и более высокую стоимость аренды и обслуживания, т.к. провайдеру приходится выезжать на место для устранения проблем.</p>
<p>Во всех случаях, фактически, пользователи не покупают ПО в собственность, а берут его в аренду за ежемесячную плату. А все непрофильные работы &#8211; внедрение, поддержка, обновление системы &#8211; лежат на плечах провайдера.</p>
]]></content:encoded>
			<wfw:commentRss>http://web.chizh.com.ua/%d1%87%d0%b5%d0%bc-%d0%be%d1%82%d0%bb%d0%b8%d1%87%d0%b0%d0%b5%d1%82%d1%81%d1%8f-saas-crm-%d0%be%d1%82-%d1%83%d1%81%d0%bb%d1%83%d0%b3%d0%b8-%d0%b0%d1%80%d0%b5%d0%bd%d0%b4%d1%8b-crm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>В чем преимущество SaaS CRM?</title>
		<link>http://web.chizh.com.ua/%d0%b2-%d1%87%d0%b5%d0%bc-%d0%bf%d1%80%d0%b5%d0%b8%d0%bc%d1%83%d1%89%d0%b5%d1%81%d1%82%d0%b2%d0%be-saas-crm/</link>
		<comments>http://web.chizh.com.ua/%d0%b2-%d1%87%d0%b5%d0%bc-%d0%bf%d1%80%d0%b5%d0%b8%d0%bc%d1%83%d1%89%d0%b5%d1%81%d1%82%d0%b2%d0%be-saas-crm/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 11:58:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://web.chizh.com.ua/?p=91</guid>
		<description><![CDATA[В чем преимущество SaaS CRM?
SaaS CRM системы предоставляют такие же самые функциональные возможности, что и традиционные CRM системы, но поставляются в виде сервиса &#171;под ключ&#187;, доступного через интернет, без необходимости его установки и поддержки.
При этом пользователи не покупают систему в собственность, а платят ежемесячную плату за ее использование.

Очевидные преимущества такой схемы:
- более низкие начальные затраты [...]]]></description>
			<content:encoded><![CDATA[<p><strong>В чем преимущество SaaS CRM?</strong></p>
<p>SaaS CRM системы предоставляют такие же самые функциональные возможности, что и традиционные CRM системы, но поставляются в виде сервиса &laquo;под ключ&raquo;, доступного через интернет, без необходимости его установки и поддержки.</p>
<p>При этом пользователи не покупают систему в собственность, а платят ежемесячную плату за ее использование.</p>
<p><span id="more-91"></span></p>
<p>Очевидные преимущества такой схемы:</p>
<p>- более низкие начальные затраты и общая стоимость владения системой</p>
<p>- более простое и быстрое внедрение CRM системы</p>
<p>- платить можно только за реально используемое количество рабочих мест</p>
<p>- отсутствие головной боли, связанной с обеспечением безопасности, поддержкой и обновлением системы</p>
<p>- глобальный доступ к системе через интернет</p>
<p>Недостатки SaaS CRM, которые приводят в качестве аргументов поставщики инсталлируемых систем:</p>
<p>- предоставление доступа к своей клиентской базе сторонней организации (CRM провайдеру)</p>
<p>- ненадежный или низкоскоростной интернет</p>
<p>- возможные трудности при интеграции SaaS CRM с внутренними бизнес-приложениями</p>
<p>- недостаточно возможностей по индивидульной настройке системы</p>
]]></content:encoded>
			<wfw:commentRss>http://web.chizh.com.ua/%d0%b2-%d1%87%d0%b5%d0%bc-%d0%bf%d1%80%d0%b5%d0%b8%d0%bc%d1%83%d1%89%d0%b5%d1%81%d1%82%d0%b2%d0%be-saas-crm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Кому нужны Web CRM системы?</title>
		<link>http://web.chizh.com.ua/%d0%ba%d0%be%d0%bc%d1%83-%d0%bd%d1%83%d0%b6%d0%bd%d1%8b-web-crm-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d1%8b/</link>
		<comments>http://web.chizh.com.ua/%d0%ba%d0%be%d0%bc%d1%83-%d0%bd%d1%83%d0%b6%d0%bd%d1%8b-web-crm-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d1%8b/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 11:57:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://web.chizh.com.ua/?p=89</guid>
		<description><![CDATA[Кому нужны Web CRM системы?
 
CRM системы с интернет (Web) доступом находят все большее применение в организациях с географически-распределенной структурой или использующих удаленных и мобильных сотрудников. В первую очередь это дистрибьюторские компании, страховщики, банки, СМИ, телекомы, разработчики ПО, интернет-бизнесы, транспортные компании и т.д.
В таких организациях Web CRM, имеющие единую (онлайновую) базу данных, легко вытесняют традиционные [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Кому нужны Web CRM системы?</strong></p>
<p><strong> </strong></p>
<p>CRM системы с интернет (Web) доступом находят все большее применение в организациях с географически-распределенной структурой или использующих удаленных и мобильных сотрудников. В первую очередь это дистрибьюторские компании, страховщики, банки, СМИ, телекомы, разработчики ПО, интернет-бизнесы, транспортные компании и т.д.<span id="more-89"></span></p>
<p>В таких организациях Web CRM, имеющие единую (онлайновую) базу данных, легко вытесняют традиционные клиент-серверные системы, использующие репликацию и синхронизацию между удаленными серверами (что очень дорого и неуклюже).</p>
<p>Развитие высокоскоростного мобильного интернета значительно ускоряет этот процесс. Сейчас можно получить доступ к CRM системе через интернет практически из любого места (где могут оказаться ваши сотрудники). А т.к. продажи часто связаны с поездками и встречами, то у продажников появляется возможность полноценно работать (с системой) во-время длительных переездов внутри мегаполиса или в другие города, не теряя зря время.</p>
<p>Web-технологии позволяют создавать более удобные пользовательские интерфейсы с элементами знакомых всем пользовательских интернет-сервисов. Поэтому, как правило, с онлайн CRM системой пользователи работают с большей охотой.</p>
<p>Кроме того, тенденция развития CRM такова, что CRM системы перестают быть просто записной книжкой для менеджера по продажам. Они превращаются в инструмент коммуникаций с клиентом, тесно связанный с корпоративным сайтом, форумом, email и телефонией. А т.к. основные каналы связи перемещаются в интернет, то именно интернет-ориентированные CRM системы становятся доминирующими.</p>
<p>Web CRM системы можно устанавливать на собственный корпоративный сервер, либо использовать в виде интернет-сервиса (SaaS модель).</p>
]]></content:encoded>
			<wfw:commentRss>http://web.chizh.com.ua/%d0%ba%d0%be%d0%bc%d1%83-%d0%bd%d1%83%d0%b6%d0%bd%d1%8b-web-crm-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d1%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CRM. От концепции к технологии</title>
		<link>http://web.chizh.com.ua/%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d1%8c-1/</link>
		<comments>http://web.chizh.com.ua/%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d1%8c-1/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 07:29:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://web.chizh.com.ua/?p=69</guid>
		<description><![CDATA[CRM. От концепции к технологии
Любое взаимодействие с покупателем, начиная с первого контакта и кончая покупкой, можно разложить по полочкам как внутреннюю систему процедур, систему конкретных транзакций. Для любого бизнеса ускорение его транзакций, уменьшение отрезков времени между подписанием контракта и оплатой повышает оборачиваемость средств, что непосредственно сказывается на доходности компании.
Западная статистика говорит о том, что 20 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>CRM. От концепции к технологии</strong></p>
<p>Любое взаимодействие с покупателем, начиная с первого контакта и кончая покупкой, можно разложить по полочкам как внутреннюю систему процедур, систему конкретных транзакций. Для любого бизнеса ускорение его транзакций, уменьшение отрезков времени между подписанием контракта и оплатой повышает оборачиваемость средств, что непосредственно сказывается на доходности компании.<span id="more-69"></span></p>
<p>Западная статистика говорит о том, что 20 лет назад 97% конечных контактов в бизнесе происходило по телефону и 3 процента &#8211; по другим каналам. Уже к 2005 г. 80% контактов, которые приводят к конкретному результату, будут осуществляться через Интернет, Call-центры и другие каналы.</p>
<p>Современная концепция CRM рассматривает продажи не как отдельный акт, осуществленный конкретным продавцом конкретному покупателю, но как непрерывный процесс, в который вовлечен КАЖДЫЙ сотрудник компании. Как искусство и науку использования информации о клиенте для приобретения его лояльности и повышения его ценности для компании. Цель &#8211; строить персональные взаимоотношения с клиентом, независимо от того, какую должность занимает сотрудник компании, в каком отделе он работает, где находится офис.</p>
<p>При этом появилось понятие жизненного цикла клиента, начиная от первого контакта и привлечения его внимания к товару или услуге и кончая формированием лояльности. Любая организация должна в первую очередь ответить на пять основных вопросов:</p>
<p>Кто мой потребитель (его отношение, восприятие, поведение, потребности)</p>
<p>Где, в каком месте осуществляется контакт потребителя с организацией?</p>
<p>Насколько эффективно строятся взаимоотношения к ним?</p>
<p>Когда и почему эти взаимоотношения прерываются?</p>
<p>Во что обходится организации приобретение или потеря таких взаимоотношений?</p>
<p>Изменилась система мотиваций и пирамида ценностей клиентов. Типичная стратегия производителя в индустриальной экономике была нацелена на удовлетворение клиента и строилась, исходя из следующей цепочки мотивов.</p>
<p>Наличие продукта (Компания имеет то, что я хочу)</p>
<p>Ценность (Цена соответствует моим ожиданиям)</p>
<p>Удобство (Продукт легко получить и использовать)</p>
<p>Доверие (Я уверен, что продукт надежен и качественен)</p>
<p>Конечной целью компании и результатом ее деятельности было &laquo;Удовлетворение&raquo; клиента.</p>
<p>В эпоху электронной, &laquo;новой&raquo; экономики высшая цель &#8211; лояльность, причем взаимная &#8211; не только клиент лоялен к компании, но и компания лояльна к клиенту). От достигнутого уровня удовлетворения строится новая цепочка.</p>
<p>Удовлетворение (Мои потребности и запросы обеспечены)</p>
<p>Постоянство (Компания действует, исходя из моих интересов)</p>
<p>Персонализация ( Компания демонстрирует, что она знает и идет навстречу моим личным пожеланиям)</p>
<p>Слияние (Взаимоотношения строятся на моих условиях и под моим контролем)</p>
<p>Цель и результат &#8211; лояльность!</p>
<p>В рамках новой системы мотиваций задача CRM &#8211; охватить ВСЕ каналы и точки контакта с клиентами и согласовать их, чтобы была единая методика и техника общения. Каждый контакт должен работать на привлечение покупателя! Клиент хочет быть обслуженным с одинаковым качеством независимо от канала взаимодействия, и получить быстрый профессиональный отклик! Информация, доставляемая клиенту по его запросу, должна быть точной, полной и последовательной. Не должно быть разных ответов на одни и те же вопросы от разных представителей компании.</p>
<p><strong>Четыре ключа к успеху</strong></p>
<p>В любом бизнесе есть некая модель цикла работы с клиентом. Эта модель проходит несколько этапов, от первой точки контакта &#8211; привлечения клиента до того момента, когда клиент становится лояльным по отношению к фирме, ее постоянным покупателем.</p>
<p>Можно сформулировать четыре слагаемых успеха этой работы:</p>
<p>Сформулировать &laquo;правильное&raquo; коммерческое предложение,</p>
<p>Предложить его &laquo;правильному&raquo; клиенту (который &laquo;клюнет&raquo;),</p>
<p>Использовать &laquo;правильный&raquo; канал доставки,</p>
<p>Доставить в &laquo;нужный&raquo; момент времени.</p>
<p>Один из тезисов концепции CRM состоит в том, что наиболее желанный и прибыльный клиент имеет право на первоочередное и эксклюзивное обслуживание. Соль в том, чтобы учиться у своего клиента, иметь обратную связь и работать так, как клиент хочет. Сейчас мало сказать клиенту: &laquo;Мы здесь&raquo;. Надо сказать: &laquo;Мы здесь для тебя, и работаем здесь для тебя и даем тебе то, что ценно для тебя, предугадывая то, что ты хочешь&raquo;.</p>
<p><strong>Функциональность CRM</strong></p>
<p>Функциональность CRM охватывает маркетинг, продажи и сервис, что соответствуют стадиям привлечения клиента, самого акта совершения сделки (транзакция) и послепродажного обслуживания, то есть все те точки контакта, где осуществляется взаимодействие предприятия с клиентом.</p>
<p>Пи этом основными функциональными блоками большинства CRM систем являются:</p>
<p>Блок SFA (Sales Force Automation) &#8211; Автоматизация деятельности торговых представителей.</p>
<p>Блок MA &#8211; (Marketing Automation) &#8211; Автоматизация маркетинга.</p>
<p>Блок CSS &#8211; (Customer Service &amp; Support) &#8211; Автоматизация службы поддержки и обслуживания клиентов.</p>
<p>Ядром любой CRM-системы является база данных, которая интегрирует все контакты, позволяет собрать в ней информацию и провести интеграцию со всеми другими корпоративными информационными системами, включая ERP. Переводя информацию в единую базу данных в рамках CRM- системы, мы повышаем шансы &laquo;зацепить&raquo; клиента. Кроме того, минимизируется дублирование информации, дублирование усилий, а это уже сокращение затрат.</p>
<p>При этом все процессы взаимодействия с клиентами должны управляться через согласованный набор процедур, построенный на основе единой технологии, позволяющей создать общее впечатление о компании и ее продукте. Очень часто потребитель имеет разрозненное, фрагментарное мнение о компании, полученное через взаимодействие по разным каналам, таким, как телефон, факс, электронную почту, Интернет и т.д. Несогласованность каналов приводит к отсутствию целостной картины о компании. Координация ведет к максимальному удовлетворению запросов клиентов, в конечном счете повышая прибыльность бизнеса.</p>
<p>Как и любые другие системы, системы CRM можно классифицировать по нескольким признакам. В основе классификации лежит &laquo;три круга&raquo; задач, решаемых в рамках CRM. Внутри лежит коммуникационная инфраструктура. Сверху &#8211; бизнес-задачи. Посередине &#8211; процессы управления при решении этих задач.</p>
<p>При этом можно выделить три основных цели использования CRM систем:</p>
<p>Оперативная (оперативный доступ к информации в ходе контакта с клиентом в процессе продаж и обслуживания)</p>
<p>Аналитическая (совместный анализ данных, характеризующих деятельность как клиента, так и фирмы, получение новых знаний, выводов, рекомендаций)</p>
<p>Коллаборационная (клиент непосредственно участвует в деятельности фирмы и влияет на процессы разработки продукта, его производства, сервисного обслуживания)</p>
<p><strong>Особенности внедрения CRM</strong></p>
<p>Когда мы от концепции переходим к конкретным технологиям, то строим на предприятии некую интегрированную инфраструктуру, которая включает в себя организацию процесса внедрения и конкретные технологические средства, программные средства, базы данных. Это интеграция бизнес-процессов, которые часто приходится менять или заново выстраивать при внедрении CRM.</p>
<p>Перед компанией, озабоченной повышением эффективности бизнеса путем использования концепции CRM, встают следующие вопросы:</p>
<p>Как перейти от общей концепции CRM к конкретной технологии?</p>
<p>Каковы ключевые критерии выбора программного решения, максимально удовлетворяющего запросам компании?</p>
<p>Как провести интеграцию каналов взаимодействия с клиентами, источников и средств сбора и обработки информации? На базе каких технических средств?</p>
<p>Как оценить прямые и скрытые затраты? Как рассчитать и оценить ROI (Return on Investment) &#8211; возврат инвестиций при внедрении CRM системы?</p>
<p>Каковы ключевые шаги при внедрении системы, как управлять проектом?</p>
<p>Компания должна сделать выбор стратегии: либо продукто-ориентированной, либо клиенто-ориентированной. Часто этот выбор заставляет многое менять, вплоть до разработки конкретных регламентов взаимодействия процедур, так как установка любой CRM-системы ведет к перестройке бизнес-процессов компании. И каждый сотрудник должен знать, что говорить и кому, какую информацию вносить в базу данных, что спрашивать, как предоставлять эту информацию другим людям, каким образом эта информация будет разбита по уровням доступа в общей базе данных и т.д. С точки зрения окупаемости системы каждое действие такого рода &#8211; это некая транзакция, связанная с необходимостью получить информацию и занести ее в базу данных.</p>
<p>Прежде чем внедрять CRM-систему, необходимо очень четко представлять, как могут окупиться деньги, затраченные на ее реализацию, на поиск и систематизацию информации (ведь можно просто захлебнуться в потоке ненужных данных и получить отрицательный результат).</p>
<p>С одной стороны, чтобы решение было эффективным, оно должно быть достаточно многофункциональным. С другой стороны, такое решение некоторым российским компаниям часто оказывается не по карману. И другое &#8211; менять концепцию компании на клиент-ориентированную согласен далеко не каждый. Если же не добиваться многофункциональности, а предпочесть более дешевые решения, то результат будет отрицательным.</p>
<p><strong>Зачем Вам нужен CRM? </strong></p>
<p>На Западе более 70 процентов компаний, покупающих CRM, рассчитывают на увеличение продаж. Они покупают CRM ради комплексной работы с клиентами, персонализации, формализации баз данных, поскольку на определенном уровне развития компания &laquo;задыхается&raquo; без нормальных информационных систем, без нормальных средств интеграции всех контактов. На последнем месте среди причин покупки называют выделение средств на CRM-системы. Фактором покупки системы является отнюдь не наличие денег, но осознание ее необходимости.</p>
<p>В России также важной причиной является ожидание увеличения продаж, но, как это ни парадоксально, более 30 процентов решивших купить систему, делают это только потому, что они слышали о ней, выполняют указание руководства или просто потому, что под новую систему можно выбить новые ассигнования.</p>
<p>Теперь &#8211; о востребованности CRM на рынке. Конкуренция пришла уже и к нам, и подавляющее большинство компаний говорят о проблемах с маркетингм. С этой точки зрения, запросы компании удовлетворяют именно аналитические функции систем, возможность интегрировать каналы.</p>
<p>По данным прошлогоднего опроса, подавляющее большинство российских компаний не готово платить за CRM-решения достаточно большие суммы. Причина состояла в неосведомленности о продукте. Сегодня значительно выросло количество компаний, которые готовы заплатить уже среднюю цену за то, чтобы получить готовые решения хорошей функциональности. Таким образом, наибольшим спросом система будет пользоваться именно в секторе средних предприятий. Сегодня появилось понимание того, зачем нужны такого рода системы, которое положительно влияет на спрос.</p>
<p>Теперь рынок пристальнее смотрит на реальные деньги. Клиенты рассматриваются как самый значительный актив компании, которым можно управлять и извлекать из него максимальную стоимость. Происходит ориентация на кросс-отраслевые и кросс-организационные потребительские портреты.</p>
<p>Заметны следующие тенденции рынка CRM решений:</p>
<p>От дорогих комплексных решений к средним по стоимости,</p>
<p>От внедрения все новых приложений к интеграции уже имеющихся,</p>
<p>От комплексных решений к целевым рынкам,</p>
<p>От &laquo;крайностей&raquo; &#8211; телефонных контактов или WEB-based технологий к интеграции каналов взаимодействия,</p>
<p>От моделирования и прогноза перспектив компании, к моделированию и прогнозу перспектив клиента,</p>
<p>От доли рынка, как ключевого параметра успеха бизнеса, к анализу моделей поведения клиентов, степени их удовлетворенности.</p>
<p>Сменяются акценты:</p>
<p>От технологий к человеческому фактору,</p>
<p>От количества, &laquo;массы&raquo; данных, собираемых о клиентах, к их надежности, средствах обработки, верификации и &laquo;очистки&raquo;, повышения их качества,</p>
<p>При продвижении продукта акцент не на широту выбора для клиента, а на скорость принятия им решений, исходя из принципа: дешевле, надежнее, быстрее, проще. Наконец, главное при продвижении продукта &#8211; мотивация не на собственный успех, а на успех клиента.</p>
]]></content:encoded>
			<wfw:commentRss>http://web.chizh.com.ua/%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d1%8c-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

