Принципы функционирования сетей Интернет

Физика
Примеры решения задач
Закон сохранения импульса
Работа и энергия
Элементы механики жидкостей
Основы термодинамики
Твердые тела. Моно- и поликристаллы
Поляризация диэлектриков
Электрические токи в металлах, вакууме
и газах
Магнитные поля соленоида и тороида
Механические и электромагнитные
колебания
Упругие волны Волновые процессы
Элементы электронной оптики
Оптическая пирометрия
Элементы квантовой механики
Элементы квантовой статистики
Фотопроводимость полупроводников
Ядерные реакции и их основные типы
Математика
Метод Гаусса
Матричный метод
Функции
Схема вычисления производной
Понятие дифференциала функции
Сходимость ряда
Теория вероятности и математической
статистики
Дифференциальные уравнения
Найти интервалы выпуклости и
точки перегиба функции
Лабораторные работы
Электроника
Исследование полевых транзисторов
Полупроводниковый стабилизатор
ВАХ туннельного диода
Исследование биполярных транзисторов
Входное  сопротивление полевого
транзистора
Упрощенная структура МДП–транзистора
Полупроводниковые выпрямители
Двухполупериодный мостовой выпрямитель
Электронный усилитель на транзисторах
Режим работы усилительных каскадов
Управляемые тиристорные выпрямители
Операционный инвертирующий усилитель
Фотоэлектрические преобразователи
Полупроводники
Зонная структура полупроводнков
Примеси в полупроводниках.
Токи в полупроводниках
Эффект Фарадея
Типы фотодатчиков
Люксметр Ю116
Сглаживающие фильтры
Описание лабораторной установки
Методика проведения исследований
Исследование метрологических
характеристик
Основные характеристики тензорезисторов
Конструкция датчика
Измерительные преобразователи
Исследование полупроводниковых
выпрямительных диодов
Структурная схема тензометрической
установки для измерения усилий
Исследование стабилитронов
Исследование варикапов
Сопромат
Практические работы по
метериаловедению
Инженерная графика
Сборочный чертеж и спецификация
Обозначение материалов
Построение лекальных кривых

Правила нанесения размеров

Геометрические построения
Позиционные задачи
Техническое обслуживание ПК
Видеоплаты
Стандарт SVGA
Последовательные порты
Факсимильная технология
Сетевые адаптеры
Сети Ethernet
Кабели для локальных сетей
Компьютерные сети
Технология «клиент-сервер» 
Структура Web-сайта
Платформа для Web-приложений

 

Серверные сценарии

Серверный сценарий также представляет собой исходный модуль на некотором языке, который также выполняется под управлением интерпретатора. Кроме того, составлением как клиентских, так и серверных сценариев, занимается разработчик Web-сайта - пожалуй, это все, что есть общего у этих двух типов сценариев. Перечислим основные отличия между ними:

- интепретатором серверного сценария является Web-сервер, а не браузер клиента;

- пользователю доступен исходный текст клиентских скриптов, в то время, как ему виден лишь результат работы серверных;

- серверные сценарии не зависят от клиентского программного обеспечения;

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

Серверный сценарий пишется на специализированном языке программирования и помещается в виде отдельного файла на Web-сервере, в том каталоге, откуда при настройке сервера разрешен запуск сценариев. Адрес URL данного файла указывается в параметре ACTION формы, данные из элементов управления которой должны быть обработаны с помощью сценария. После нажатия пользователем на Web-странице кнопки типа SUBMIT, эта информация передается серверу и обрабатывается сценарием. По завершению работы последнего пользователю передается результат его работы.

CGI-сценарии

Хронологически первой технологией создания серверных сценариев была технология CGI-сценариев или CGI-скриптов. В качестве языка программирования при разработке CGI-скриптов используется язык Perl, отдаленно напоминающий язык С.

Возможности CGI-сценариев:

- обработка пользовательских данных;

- доступ к файловой системе Web-сервера;

- работа с базами данных;

- динамическая генерация Web-страниц.

Несмотря на то, что данная технология не относится к классу новейших, она продолжает активно использоваться и в настоящее время, особенно на Web-серверах, ориентированных на операционные системы семейства UNIX.

Технология ASP

Технология активных серверных страниц (ASP - Active Server Pages) была предложена сравнительно недавно специалистами компании Microsoft и завоевала широкую популярность, благодаря своей простоте, логичности и удобству применения. Концептуально данная технология аналогична CGI-сценариям - как по целям, так и по задачам. Отличия ее заключаются в следующем:

- активная страница представляет собой Web-страницу со встроенными в текст сценариями, интерпретируемыми сервером;

- в зависимости от работы сценария, клиенту передается тот или иной документ, который может содержать теги HTML, расположенные на данной активной странице, либо сформированный самим сценарием;

- сценарии ASP составляются на языках JavaScript и VBScript;

- имеется набор объектов, содержащих свойства и методы, очень удобные для использования на стороне сервера;

- Технология ASP удачно сочетается с другой технологией от Microsoft - ADO (от ActiveX Data Objects), что позволяет за короткий срок создавать сложные Интернет-приложения с базами данных.

Если технология CGI-сценариев ориентирована на Web-сервера по ОС семейства UNIX (например, Web-сервер Apache), то ASP изначально предназначалась для Web-серверов от Microsoft (продукты MS Internet Information Server и MS Personal Web Server). В настоящее время такое различие сгладилось: для серверов Apache существуют модули, позволяющие работать с ASP, и для серверов под ОС семейств Windows есть надстройки, позволяющие им работать с CGI-сценариями на языке Perl.

Язык JavaScript

Язык JavaScript поддерживается всеми современными браузерами. Java-апплет  представляет собой исполняемый код для так называемой виртуальной машины Java, встроенной в браузер. Концепция виртуальной машины не нова - многообразие различных архитектур вычислительной техники достаточно давно породило мысль разработать некую универсальную машину со своим набором команд, которая бы функционировала, как программная система для различных платформ. Таким образом, исполняемый модуль для виртуальной машины будет работать одинаково на любом компьютере, для которого есть реализация данной виртуальной машины. Широкое распространение Интернет потребовало построить такую виртуальную машину, что и было реализовано в технологии Java, предложенной программистами компании Sun Microsystems.

Технология Java включает две составляющих: одноименный язык программирования и платформу Java. Последняя, в свою очередь, состоит из виртуальной машины Java (Java VM) и интерфейса прикладного программирования (Java API).

Язык оказался удачен, в короткое время завоевал широкую популярность и стал фактическим стандартом для разработки программ для Интернет. Единственным недостатком программ для любой виртуальной машины, очевидно, является низкая производительность: программа-виртуальная машина должна выполнять другую программу. Исполняемый модуль для виртуальной машины Java именуется байт-кодом (или иногда J-кодом).

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

Java-апплет также есть байт-код для Java-машины, но той, которая работает под управлением браузера. Таким образом, клиентскими Java-приложениями являются именно апплеты. Для помещения апплета на Web-страницу разработчик сайта должен сперва подготовить его байт-код с помощью какого-либо средства разработки, например бесплатного Java Development Kit (JDK). После этого, разместив файл с байт-кодом в каталоге Web-сервера, нужно указать его URL в тексте разрабатываемой страницы в специальном теге <applet>. Браузер клиента по завершению загрузки страницы с апплетом запускает свою виртуальную машину, которая начинает выполнение апплета.

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

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

Также необходимо отметить, что браузер MS Internet Explorer при работе с апплетами поддерживает технологию своевременной компиляции (Just In Time Compilation, JIT). Сущность этой технологии в том, что получив апплет, браузер преобразует его байт-код для виртуальной машины в исполняемый модуль для Windows. Такой подход значительно увеличивает производительность работы апплета и, в то же время, не снижает безопасность системы, поскольку в полученном исполняемом модуле нет никаких действий сверх того, что было в байт-коде, который по определению безопасен.

Основы JavaScript

Идея JavaScript очень проста. Все операции, которые можно исполнять в программе на JavaScript, описывают действия над хорошо известными и понятными объектами, которыми являются элементы рабочей области браузера (окно, документ, статусная строка…) и контейнеры языка HTML. Собственно объектная ориентированность JavaScript на этом и кончается. Никаких создаваемых программистом классов объектов, а уж тем более наследования в JavaScript нет. Есть только объекты с набором свойств и методов. Кроме методов, существуют и обычные функции, больше похожие на процедуры из традиционных языков программирования. Кроме того, в JavaScript есть события.

Собственно скрипт включается в HTML-документ с помощью тега <script>:

<script language = "JavaScript">

<!--

ТЕЛО СКРИПТА

//-->

</script>

Так как JavaScript является основным, но все же не единственным языком написания скриптов, следует указать, что скрипт пишется именно на нем:

<script language = "JavaScript">

Тело скрипта заключается в комментарии, используемом в HTML, <!- и -->. Это делается для того, чтобы ранние версии браузеров, не поддерживающие тег <script>, не выводили его текст на экран монитора. Знак // не относится к знаку комментариев HTML, но он необходим для правильной работы интерпретатора JavaScript. Этот знак означает в JavaScript, что строка, начинающаяся с него, является комментарием.

Существуют и другие способы встраивания Java-кода.

JavaScript-код может вставляться в элемент <BODY>. Исполняется такой сценарий сразу после загрузки web-документа, например:

<script type="text/javascript">

{document.write("Эту строку вывел сценарий")}

</script>

JavaScript-код можно вставлять в элемент <HEAD>. Такой сценарий запускается в ответ на какое-либо событие, генерируемое системой или пользователем. Например, пусть сценарий запускается нажатием кнопки, создаваемой тегом <input type="botton"/>. При этом HTML-страница со сценарием будет выглядеть так:

<HTML>

<HEAD>

<TITLE> Сценарий JavaScript </TITLE>

<script type="text/javascript">

function wrt()
{document.write("Эту строку вывел сценарий")}

</script>

</HEAD>

<BODY>

<INPUT type="button" value="Вывести строку" onClick="wrt()"/>

</BODY>

</HTML>

При нажатии на кнопку произойдёт событие onClick, по которому произойдет вызов функции wrt().

JavaScript-код можно поместить в отдельном файле с расширением .js. Далее в разделе <HEAD> следует указать адрес этого файла следующим образом:

<script type='text/javascript' src='wrt_str.js'>
</script>

Внешний сценарий также может запускаться и сразу после загрузки web-документа, или по какому-либо событию.

Сценарий можно разместить и непосредственно в обработчике события, например:

<INPUT type="botton" value="Вывести строку"

onClick="document.write("Эту строку вывел сценарий")"/>

Вызов функции или короткий код можно помещать в тег <a>, которым создаются ссылки. Такой тег выглядит следующим образом:

<a href="JavaScript:wrt()">Вывести строку</a>

Ключевые (зарезервированные) слова JavaScript приведены в Приложении 1. Основными типами данных в JavaScript являются целые, вещественные, булевы и строковые. Переменные в JavaScript, как и в Pascal, задаются с помощью ключевого слова var:

var a = 27;

JavaScript является языком со свободной типизацией, поэтому в отличие от большинства других алгоритмических языков в нем не нужно указывать тип переменных. Обратите внимание на С-подобные правила синтаксиса: строка обязательно завершается точкой с запятой, заглавные и строчные буквы в идентификаторах различаются, присваивание записывается просто знаком равенства.

Одной и той же переменной можно присваивать различные типы данных:

var a = 27;

a = 15.5;

a = "String 1";

В Java предусмотрены два способа включения комментариев:

// Это однострочный комментарий

/*а это много -

строчный комментарий*/

Типы данных в JavaScrpit можно подразделить на следующие группы:

Табл. 11.1. Типы данных в JavaScript

Тип

Описание

Целочисленный

Могут быть выражены в десятичном, восьмеричном и шестнадцатеричном формате.
Например: 45, 071, 0x7d8

С плавающей точкой

Определяют десятичное число с дробной частью, могут быть представлены в стандартной и экспоненциальной форме.
Например: 3405.23, -123.09, 2.90Е-12, 3.05Е+8

Булевские

Имеют значения true или false

Строки

Представляет символы Unicode, заключённых в двойные или одинарные кавычки, например: "Строка", 'Строчка'

Специальные символы

Управляющие символы:
\n перевод на новую строку

\t горизонтальная табуляция

\v вертикальная табуляция

\\ обратная косая черта

\' одинарная кавычка

\" двойная кавычка

Арифметические и логические действия записываются так же, как в языке C.

Табл. 11.2. Арифметические действия

Оператор

Наименование

Пример

+

Сложение

x + y

-

Вычитание

x - y

*

Умножение

x * y

/

Деление

x / y

%

Взятие остатка (MOD)

x % y

++

Увеличение на 1

x++

--

Уменьшение на 1

y--

Часть операций (++, --) являются унарными. Как видно из названия, эти операции осуществляются с одной величиной. К ним относятся префиксное и постфиксное возрастание ++; префиксное и постфиксное уменьшение --, унарный плюс; унарный минус.

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

Результат использования префиксной операции проще предугадать: если а = 5, то ++а + 2 = 8, потому что значение переменной а было увеличено на единицу, прежде чем к нему прибавили число 2. В то же время

--а + 2 = 6, потому что значение переменной а было уменьшено на единицу, прежде чем к нему прибавили число 2.

Постфиксные операции действуют иначе, поскольку возрастание или убывание производится только после использования старого значения в выражении. Таким образом, если а = 5, то а++ + 2 = 7, потому что увеличение на единицу будет выполнено после вычисления значения выражения. Это справедливо и для следующего выражения: а--+2=6, потому что уменьшение переменной а на единицу будет выполнено после использования в выражении прежнего значения.

Присваивание значений переменным может выполняться одновременно с выполнением того или иного арифметического действия.

Табл. 11.3. Оператор присваивания

Оператор

Пример

Эквивалентное выражение

=

x=y

x=y

+=

x+=y

x=x+y

-=

x-=y

x=x-y

*=

x*=y

x=x*y

/=

x/=y

x=x/y

%=

x%=y

x=x%y

 Логические операции имеют следующую форму записи:

Табл. 11.4. Логические операции

Оператор

Название

Пример

= = =

Строгое равенство

x = = = y

= =

Равно

x = =y

!=

Не равно

x != y

Больше

x > y

>=

Больше или равно

x >= y

Меньше

x < y

<=

Меньше или равно

x <= y

!

Отрицание (не)

!x

??

и

x&&y

||

или

x||y

Для конкатенации (объединения) строк используется оператор +:

var a = "a" + "b" + "c";

Переменная a будет содержать строку "abc".

Функции и события

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

function имяфункции([аргументы])

}

операторы;

}

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

В отличие от простых операторов в блоке SCRIPT (запускаемых сразу) функции автоматически запускаться на выполнение не могут. Функции в языке JavaScript могут вызываться несколькими способами. Самый простой, хотя и наименее эффективный - указание имени функции непосредственно в блоке SCRIPT:

<script language="JavaScript">

// вызов функции

yourMessage();

// описание функции

function yourMessage()

{

alert("Наша первая функция");

}

</script>

Как видно из примера, функцию можно вызвать до ее описания, поскольку JavaScript – язык интерпретирующий. Однако способ, с помощью которого мы вызвали функцию в этом примере, - не самый удачный. По сути, он ничем не отличается от простого перечисления операторов в блоке SCRIPT, освоенного ранее.

Разумеется, одну функцию можно вызывать из другой, но для "запуска" вcего процесса обычно применяются события. JavaScript относится к языкам, управляемый событиями (event-driven language). Открытие новой страницы в браузере, перемещение курсора, щелчок мыши - все это относится к событиям. Рассмотрим самые нужные из них.

Событие onLoad. Это событие происходит после загрузки страницы в окне браузера. Оно считается состоявшимся только после полного завершения загрузки всей страницы, включая изображения. Событие, происходящее при выгрузке страницы (переходе на другую страницу или закрытии окна браузера), называется onUnload. Событие onLoad очень удобно использовать в сценарии, когда необходимо, чтобы функция выполнялась сразу после открытия страницы.

Событие onClick. Это событие происходит после щелчка мышью в определенном месте страницы. Множество элементов страницы (гиперссылки, изображения, кнопки и пр.) могут реагировать на событие onClick. Его рекомендуется применять, когда вы хотите создать сценарий, взаимодействующий с пользователем.

Событие onMouseover. Это событие похоже на событие onClick, но происходит не после щелчка мышью, а после наведения курсора мыши на определенный элемент страницы. Событие onMouseover можно связать практически с любым объектом Web-страницы (текстом, изображением, кнопками, гиперссылками и т.д.). Например, можно менять внешний вид кнопки, когда над ней находится курсор мыши.

Событие onMouseout. Это событие подобно событию onMouseover, но происходит в тех случаях, когда курсор мыши отводится от объекта.

Рассмотрим пример простой функции, выводящей текущее время:

function announceTime()

{

 //get the date, the hour, minutes, and seconds

 var the_date = new Date();

 var the_hour = the_date.getHours();

 var the_minute = the_date.getMinutes();

 var the_second = the_date.getSeconds();

 var the_time = the_hour + ":" + the_minute +
":" + the_second;

 alert("Время: " +the_time);

}

Данная функция создает новый объект типа Date() и записывает в переменные его свойства, из которых потом "склеивается" текущее время.

Свяжем вызов данной функции с событием onMouseOver какого-либо элемента Web-страницы, например, абзаца (тег <p>):

<p onMouseover="announceTime();">Который час?</p>

Теперь достаточно подвести курсор к фразе "Который час?" – и выскочит окошко с текущим временем.

Массивы в JavaScript

Объекты и массивы (всегда динамические) создаются с помощью оператора new:

var a = new Array();

a[0] = 1;

a[1] = 4;

a[2] = 7;

Нумерация элементов массива начинается с нуля.

В JavaScript допускается возможность хранить различные типы данных в одном массиве:

var a = new Array();

a[0] = 8;

a[1] = 4.9;

a[2] = "String 1";

С помощью JavaScript можно так же имитировать и многомерные массивы:

var a = new Array();

a[0] = new Array();

a[0][0] = "1,1";

a[0][1] = "1,2";

a[1] = new Array();

a[1][0] = "2,1";

a[1][1] = "2,2";

Для работы с массивами в JavaScript применяются методы join(), reverse(), sort(). Кроме того, массивы обладают свойством длины length.

Метод join(). Метод join() позволяет объединить элементы массива в одну строку. Он является обратным методу split(), который применяется к объектам типа "текстовая строка". Например:

b = split('/');

Получили массив b:

b[0]=http:

b[1]=

b[2]=

b[3]=help

b[4]=index.html

Объединили элементы массива b обратно в строку:

l=b.join("/");

Получили в результате:

 

Метод reverse(). Метод reverse() применяется для изменения на противоположный порядка элементов массива внутри массива. Предположим, массив натуральных чисел упорядочен по возрастанию:

a = new Array(1,2,3,4,5);

Упорядочим его по убыванию:

a.reverse();

Результат:

a[0]=5

a[1]=4

a[2]=3

a[3]=2

a[4]=1

Метод sort(). Метод sort() позволяет отсортировать элементы массива в соответствии с некоторой функцией сортировки, чье имя используется в качестве аргумента метода:

a = new Array(1,6,9,9,3,5);

function g(a,b)

{

if(a > b) return 1;

if(a < b) return -1;

if(a==b) return 0;

}

b = a.sort(g);

В результате выполнения этого кода получим массив следующего вида:

b[0]=1

b[1]=3

b[2]=5

b[3]=6

b[4]=9

b[5]=9

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

Приведем пример использования скрипта:

<html>

<head>

<title>Пример простого скрипта</title>

</head>

<body>

<h1>Script</h1>

<script language = "JavaScript">

<!--

var a = new Array();

a[0] = new Array();

a[0][0] = "1,1";

a[0][1] = "1,2";

a[1] = new Array();

a[1][0] = "2,1";

a[1][1] = "2,2";

document.write(a[0][0] + " " + a[0][1] + "<br>" +

a[1][0] + " " + a[1][1] + "<br>");

//-->

</script>

</body>

</html>

Строка document.write выводит текст в окно браузера, где он рассматривается как HTML-документ, поэтому внутрь выводимого текста можно вставлять любые необходимые теги.

Ввод данных можно осуществить с помощью функции prompt, а вывод - с помощью функции alert:

<html>

<head>

<title>Script</title>

</head>

<body>

<h1>Script</h1>

<script language = "JavaScript">

<!--

var a = prompt("Input A: ", 10);

var b = prompt("Input B: ", "");

a = parseFloat(a);

b = parseFloat(b);

var c = a + b;

alert(c);

//-->

</script>

</body>

</html>

Первый аргумент функции prompt является строкой, которая будет использована в качестве приглашения пользователю, а второй – значением по умолчанию. Если не предполагается использовать значение по умолчанию, то необходимо задать пустую строку "".

Так как функция prompt возвращает строку, для того, чтобы преобразовать ее в число, используются функции parseFloat и parseInt, преобразующие текст в переменную вещественного и целого типа соответственно.

На главную