Материал: Язык JavaScript. учеб.-методич. пособие. Деревянко В.Н

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

• domain — строка, содержащая домен нужной cookie-записи (имя хоста сервера, например, rambler.ru); если не указан, то используется домен вызванного документа;

• secure — логическое значение, определяющее необходимость использования безопасного HTTP-соединения (HTTPS). Если атрибут secure не установлен, cookie-информация может передаваться через любое соединение.

Если две и более cookie-записи (до 20) соответствуют одному и тому же домену, то в JavaScript они все равно представляются одной строкой и разграничиваются точкой с запятой и пробелом.

Рассмотрим функцию readCookie(name), читающую cookie-данные, соответствующие имени записи name, которое передается этой функции в качестве параметра:

function readCookie(name) { //чтение cookie-данных

var xname = name + "="

var xlen = xname.length

var den = document.cookie.length

var i = О

while(i < xlen){

var j = i + xlen

if (document.cookie.substring(i, j) == xname)

return getCookieVal(j)

i = document.cookie.indexOf(" ",1) + 1

if (i == 0) break

}

return null

}

Параметры функции substring — позиции начала и конца подстроки.

Функция readCookie(name) возвращает значение cookie-записи с именем name либо возвращает null, если такая запись не найдена. В теле этой функции использована еще одна, вспомогательная функция getCookieVal(j), возвращающая декодированное значение cookie-данных. Декодирование производится с помощью встроенной функции unescape(), поскольку cookie-запись должна представлять собой кодированную строку, полученную путем обработки встроенной функцией escape(). Код этой функции приведен ниже:

function getCookieVal(n) {

/* вспомогательная функция, вызываемая из readCookie() */

var endstr = document.cookie.indexOf(";", n)

if (endstr == -1)

endstr = document.cookie.length

return unescape(document.cookie.substring(n,

endstr))

}

Myshe11.Run("winword.exe

C:\\My\\mydocument.dope")

Myshell.Run("C:\\MyFolder\\myprogram.exe")

Работа с реестром

Программа JavaScript с помощью методов Windows Scripting Host может организовать невидимую пользователем работу с реестром (если он не заблокировал выполнение сценариев). Это методы объекта Wscript.Shell, входящего в состав WSH:

• RegRead() — возвращает запись реестра или значение параметра;

• RegWrite() — создает новую запись в реестре или изменяет значение параметра уже существующей записи;

• RegDelete() — удаляет запись реестра или параметр.

Применение этих методов имеет следующий синтаксис:

var Myshell = new ActiveXObject("WScript.Shell")

Myshell.метод(параметры)

Метод RegWrite() принимает в качестве параметра строку, содержащую имя раздела реестра, за которым указывается имя параметра. Все элементы имени раздела разделяются двойными обратными слэшами. Например, в строке "hkey_current_user\\Myreg\\myparam" последний элемент myparam является именем параметра, а не раздела реестра.

Примеры

var Myshell = new ActiveXObject("WScript.Shell")

/* Создание подраздела Myreg в разделе hkey_current_user и присвоение параметру по умолчанию значения "значение": */

Mуshell.RegWrite("hkey_current_user\\Myreg\\", "значение")

/* Создание в разделе hkey_current_user\ Myreg строкового параметра myparaml и присвоение ему значения "некоторая строка": */

Myshell.RegWrite("hkey_current_user\\Myreg\\myparaml", "некоторая строка")

/* Создание в разделе hkey_current_user\ Myreg двоичного параметра myparam2 и присвоение ему значения 5: */

Myshell.RegWrite("hkey_current_user\\Myreg\\myparam2", 5, "reg_binary")

/* Создание в разделе hkey_current_user\ Myreg параметра myparam3 типа dword и присвоение ему значения 3: */

Myshell.RegWrite("hkey_current_user\\Myreg\\myparam3", 3, "reg_dword")

Вместо полных имен корневых разделов реестра можно использовать их сокращенные обозначения. Например, вместо hkey_current_user можно писать hkcu.

Пример. Запись установки стартовой страницы

var Myshell = new ActiveXObject("WScript.Shell")

var mystartpage = http://www.myweb.ru /* нужная страница */

/* Проверяем, какая веб-страница является начальной: */

startpage = Myshell.RegWrite

("hkcu\\software\\Microsoft\\Internet

ExplorerUMainUStart Page")

if (startpage != mystartpage) // если другая

Myshell.RegWrite("hkcu\\software\\Microsoft\\

InternetExplorer\\Main\\StartPage", mystartpage)

Аналогичным образом можно создать записи в реестре, используемые для запуска приложений!

ЗАКЛЮЧЕНИЕ

JAVASCRIPT И ДРУГИЕ

СЦЕНАРНЫЕ ЯЗЫКИ

Многие популярные сценарные языки создавались не для Web-программирования. Perl и Python разрабатывались для написания сценариев в ОС UNIX, Rexx — в ОС фирмы IBM. Появление HTML и Web-серверов стимулировали развитие сценарных языков в сторону реализации серверной части Web-систем. Рассмотрим коротко основные черты сценарных языков.

XHTML

Фактически роль XHTML заключается в попытке предотвратить написание программистами некорректного HTML-кода за счет применения жестких правил XML к HTML. Для написания XHTML-кода используются те же дескрипторы, атрибуты и каскадные списки стилей, что и в HTML. Помимо внесения некоторых строгих правил кодирования в HTML, XHTML является расширяемым (отсюда и буква X в XHTML, от extensible — расширяемый) и модульным. Расширяемый означает, что язык XHTML позволяет, как производителям браузеров (в первую очередь), так и программистам, расширять HTML за счет добавления новых дескрипторов. Модульный предполагает, что производители браузеров смогут уменьшить размеры их браузеров за счет исключения кода для XHTML-элементов, которые не требуются для их платформ.

Таким образом, если вы соблюдаете следующие правила, вы скоро научитесь писать правильный XHTML-код:

• XHTML-документы должны быть правильно построены.

• Элементы должны быть вложенными и не должны перекрываться.

• Все имена элементов и атрибутов должны быть написаны с использованием символов нижнего регистра.

• Открытые дескрипторы контейнеров должны быть закрыты, а пустые дескрипторы должны иметь терминатор.

• XHTML-документы должны начинаться с объявления DOCTYPE.

• Значения всех атрибутов должны заключаться в кавычки.

• XHTML-документы в разделе заголовка должны содержать элемент <title>.

При посещении Web-страниц в сети Internet заголовок каждой страницы выводится в строке заголовка окна браузера. Web-браузеры используют заголовки в качестве имен закладок. Слайдеры (автоматизированные программы поиска в Web) используют текст заголовка страницы для включения ее в поисковые машины.

Python

Python активно используется в качестве языка программирования сценариев административного управления (в частности, он играет роль основного системного средства составления сценариев во многих дистрибутивных пакетах Linux) и в Web (в частности, существует и относительно распространен модуль Python для популярного Web-сервера Apache). Язык адаптирован для множества платформ.

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

Ruby

Язык Ruby разрабатывался как альтернатива Perl (как недостаточно мощному) и Python (как языку, в котором непоследовательно реализовано объектно-ориентированное программирование). Как образец реализации ООП был избран Smalltalk, где все структуры языка (включая классы) — объекты.

Ruby ориентирован скорее на разработку сценариев, чем на подготовку полномасштабных компилируемых программных модулей. Он несет на себе отчетливый отпечаток «практического» языка, созданного для использования в реальных системах, а не ради иллюстрации академических концепций и принципов программирования. В нём реализованы итераторы, обработчики исключений, простая процедура разработки дополнительных средств на Си и др. Ruby не обеспечивает множественного наследования, заменяя его концепцией модулей, язык не предъявляет жестких требований к объявлению переменных.

Ruby содержит хорошо подобранный набор возможностей: списки (выполняющие также роль массивов) и хэш_таблицы (словари), роль списков с элементами произвольного типа в Ruby играют так называемые «контейнеры».

Perl

Perl (Practical Extraction and Report Language, «практический язык извлечений и отчетов») создан в 1986 г. Ларри Воллом (Larry Wall), системным администратором NASA. Первоначально он создавался как командный язык для UNIX. С появлением Web этот язык для формирования отчетов и обработки текстов обрел второе рождение. Синтаксис и набор операторов (значительно урезанный) заимствованы у Си. Отличительная особенность Perl — наличие мощных механизмов работы со списками и хэш-таблицами, позволяющими реализовать обработку текстов. Впоследствии Perl был адаптирован для работы с Интернетом. В настоящее время это один из самых распространенных Web-языков. Perl знаменит не столько сам по себе, сколько благодаря библиотеке CPAN (www.cpan.org), в которой содержатся самые разнообразные модули, вплоть до нейросетевых решений.

Perl —язык, который не имеет полноценных процедур. В процедурах Perl нет параметров (точнее, параметры необходимо извлекать из специальной переменной $_). Этот язык не имеет объектно-ориентированных механизмов. Однако достаточно мощный механизм модулей (так называемых «пакетов») позволяет в какой-то мере компенсировать этот недостаток. Наследование в Perl можно организовать с использованием указателей.

РНР

РНР (первоначально Personal Home Page – персональная домашняя страница, с 1997 г. – РНР Hypertext Processor) представляет собой гипертекстовый препроцессор, который позволяет генерировать Web-содержимое "на лету". Операторы, предназначенные для обработки PHP-процессором, хранятся в отдельном файле или внедряются в HTML-код Web-страницы.

При запросе Web-браузером PHP-страницы сервером выполняются PHP-операторы, содержащиеся между начальным (<?php или <?) и конечным (?>) дескрипторами PHP-сценария. PHP-процессор записывает результаты выполнения PHP-операторов и весь текст, находящийся вне дескрипторов PHP-сценария, на Web-страницу (которая будет передана Web-браузеру).

В то время как клиентские языки сценариев (например, JavaScript) выполняются Web-браузером, РНР представляет собой серверный язык, т.е. РНР-сценарий, внедренный на Web-страницу, выполняется Web-сервером (а не Web-браузером). Большинство PHP-кода может выполняться под управлением различных операционных систем.

Особенность использования РНР заключается в том, что Web-браузер не работает с РНР-операторами, внедренными на Web-страницу. В отличие от JavaScript, VBScript, JScript или других клиентских языков сценариев, при написании РНР-сценариев не нужно беспокоиться о поддержке Web-браузером языка РНР. Для создания страницы, использующей РНР, необходимо просто вставить на страницу PHP-команды, которые должны выполняться в HTML-коде страницы, и присвоить файлу Web-страницы имя с расширением, связанным с РНР-процессором (например, .php).

РНР стал главным серверным языком сценариев для многих Web-серверов по следующим причинам.

• Язык РНР позволяет создавать сложные Web-сайты практически для любой платформы.

• Язык РНР обладает простым объектно-ориентированным синтаксисом. Конструкции языка РНР знакомы многим разработчикам, работающим с процедурными или объектно-ориентированными языками программирования (С, C + +, Java, Pascal или Visual Basic).

• Программы на РНР очень быстро выполняются. PHP-страницы могут компилироваться, оптимизироваться и кэшироваться в памяти, что позволяет серверу одновременно обрабатывать большое количество РНР-страниц без существенного снижения производительности.

Благодаря наличию сотен стандартных функций РНР в состоянии решить практически любую задачу, которая может придти в голову разработчику. В нем имеется обширная поддержка создания графики и операций с ней, математических вычислений, средств электронной коммерции и таких популярных технологий, как XML (Extensible Markup Language), ODBC (Open Database Connectivity) и Macromedia Shockwave.

Пример.

<html>

<body>

<?php phpinfo () ;?>

</body>

</html>

Приведенный выше HTML-код на Web-сервере в файле с именем test.php вернетWeb-браузеру информацию о текущей версии процессора, конфигурации РНР, среде и переменных.

Глоссарий

Здесь для справки приводятся пояснения некоторых терминов из области языков программирования.

Императивное (операторное) программирование

• Динамическое определение типов. В некоторых языках программирования типы переменных и параметров функций определяются в процессе компиляции. Например, по оператору присваивания «i=2» компилятор может понять, что i — это (скорее всего) целочисленная переменная.

• Константы. Возможность задавать именованные константы (подобно конструкции define из Си или const из Паскаля).

• Переменные. Не все языки программирования позволяют задавать переменные, — например, в функциональных языках все объекты данных неизменяемы (можно только создавать копии).

• Перечисление. Список констант, например, enum в Си.

• Массивы. В большинстве новых языков массивов как самостоятельной конструкции нет, вместо них используются списки. Однако в нефункциональных языках можно получить доступ к элементу списка по его номеру, например «k[5]».

• Структуры. Массивы из элементов разного типа в традиционных языках называются структурами (Си) или записями (Паскаль). В новых языках роль структур, как правило, выполняют классы или списки.

• Структуры с вариантами. В традиционных языках обычно имеется возможность создавать структуры с вариантной частью (когда общая память выделяется под разные наборы полей). С появлением ООП можно их считать анахронизмом.

• Булевский. Булевский (логический) тип присутствует во всех языках программирования. Обычно применяются специальные константы «true» и «false». Использование вместо них целочисленных значений 0 и 1 часто приводит к труднообнаруживаемым ошибкам (в частности, к неверному преобразованию типов в условных выражениях).

• Указатели. Указатели были основным инструментом в традиционных языках программирования. ООП вытеснило указатели из инструментария современного программиста, однако даже в новых языках такие конструкции иногда присутствуют (как правило, по соображениям эффективности).

• Отступы. Программисты издавна используют отступ (пустые пробелы в начале строки) для улучшения читабельности программ.

• Присваивание. Оператор присваивания записывает указанное значение в память, отведенную для переменной.

• Последовательность (действий). Идеология функционального программирования отрицает последовательность как принцип — функциональный интерпретатор сам определят порядок вычисления функций. Однако для взаимодействия с императивной внешней средой (например, для операций ввода-вывода) способы задания последовательности действий необходимы.

• if then else. Условный оператор в том или ином виде необходим в каждом языке программирования.

• elsif. Используется для удобства записи нескольких равнозначных вариантов. Необходимо, чтобы условный оператор позволял использовать несколько elsif (или elseif, или elseif).

• while. Цикл с предусловием (циклы while в Си и Паскале). Выполняется, пока условие истинно.

• for. Цикл с параметром (циклы for в Си и Паскале). Выполняется, пока параметр не превысит конечное значение.

• Исключения. Обработка исключительных ситуаций применяется при написании процедур ввода-вывода или параллельного программирования.

Источник: https://studfile.net/preview/16566476/