Управление сценариями просмотра Web-страниц
Ariadna - пример отечественной программы
В отличие от "китов" компьютерного бизнеса типа Microsoft или Netscape, отечественная компания AMSD пока не изобретает принципиально новых подходов - идет реализация существующих стандартов языка и его расширений. Как показывает практика, таким программам уготована судьба вечных аутсайдеров, если только нет крупной информационной сети, которая предоставляет эту программу в виде стандартного средства доступа к Web. Но будем надеяться, что AMSD найдет интересные, новые решения и сможет создать нечто неповторимое. Тестовая версия программы Ariadna может быть получена по адресу .Бегущая строка
Другой часто встречающийся пример - бегущая строка. Строка может бежатьлибо в поле статуса (низ экрана), либо внутри поля формы. Рассмотрим .
Здесь приведен фрагмент страницы компании "Демос", разработанный
Дмитрием Алтуховым ().
Как видно из этого примера, прокрутка осуществляется за счет изменения
содержания отображаемой переменной msg1. Запускается бегущая строка
в момент загрузки страницы по событию onLoad. Из комментария к примеру
следует, что автор не несет ответственности за проблемы, которые может
данный скрипт породить при его отображении браузером на компьютере пользователя.
Собственно проблема вызвана применением функции setTimeout. Изначально
предполагалось, что браузер, который поддерживает JavaScript, будет исполняться
в среде многопоточных операционных систем. В этом случае к моменту порождения
нового потока старый уже завершится, и setTimeout будет, таким образом,
порождать последовательно исполняемые потоки. Однако при реализации JavaScript
в Netscape Navigator 2.0 не все было выполнено аккуратно, и setTimeout
стала просто "пожирать" ресурсы компьютера. Системы Windows 3.x
вообще не являются многопоточными, и в них просто происходит переполнение
стека при выполнении данного скрипта. Весь вопрос заключается только в
том, как быстро "упадет" система, а это зависит от объема исполняемой
по setTimeout функции. Самое лучшее, что можно посоветовать, если вдруг
на экране появляется прокрутка, - поскорее покинуть такую страницу. Справедливости
ради, следует отметить, что прокрутку можно организовать и другими способами,
поэтому ее появление не обязательно должно вызывать крах системы или браузера.
Прокручивать можно и вертикальные фрагменты. Достигается это за счет
использования полей типа TEXTAREA ().
Собственно все организовано так же, как и в предыдущем примере, только
прокрутка осуществляется в поле формы; для этого поля введен параметр переноса
текста на новую строку, ширина поля подобрана под размер выводимых строк.
Прокрутка осуществляется как по событию onLoad, так и при нажатии на кнопку
Start/Stop. В этом случае не надо немедленно покидать страницу с прокруткой
- достаточно просто ее остановить.
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
Большинство компаний, производящих серверы баз данных и средств проектирования и разработки информационных приложений, в настоящее время озабочены проблемой обеспечения доступа к базам данных в среде Web. Мы приводим краткий список компаний с адресами их серверов Web, на которых можно получить более развернутую информацию.Borland:
Computer Associates:и Fujitsu:
Informix Software:
JYACC:
Oracle Corporation:
#2/96
Доступ к базам данных с использованием технологии WWW
С.Д. КузнецовВсемирная Паутина недаром так быстро завоевала широкую популярность среди пользователей Internet, в мире бизнеса, науки, политики и т. д. Основные достижения Web - это простота опубликования информации в сети, удобство и сравнительная унифицированность доступа к документам, наличие на сегодняшний день достаточно развитых средств поиска. Однако в целом способы представления, хранения и поиска информации в WWW относятся к категории информационно-поисковых систем (ИПС). Хотя хранилища данных в узлах Web иногда называют базами данных, этот термин в данном случае можно использовать только в самом широком смысле. Исторически ИПС применялись для хранения слабоструктурированной и редко изменяемой информации. Базы данных в узком смысле - это хранилища структурированной, изменяемой информации, причем информация в базе данных должна всегда находиться в согласованном состоянии.
Замечание: везде далее мы предполагаем знакомство читателя с терминами Internet и их смыслом в объеме цикла статей Павла Храмцова. Почти все они опубликованы в различных изданиях "Открытых систем",а также в виде отдельной книжки (скоро выйдет вторая; рекомендую).
На наш взгляд, Web - это популистское развитие идей ИПС, базирующееся на развитых возможностях Internet. С равным успехом можно хвалить и ругать Web. Можно хвалить Всемирную Паутину за то, что, не выходя из дома, вы можете побывать в любой точке земного шара и посмотреть, что же там происходит. Можно ругать Web за то, что трудно найти действительно актуальную информацию(обычно она устаревшая), за то, что хранилища информации содержат очень много "мусора", опубликованного непонятно из каких соображений.(Недавно мне пришло в голову просмотреть "Желтые Страницы Internet". Впечатление отталкивающее. Такое чувство, что ребята просто развлекаются. "Дзен-буддизм и Internet", плохие картинки на телеконференции, множество вариантов кваканья - конечно же, лягушек - для отображения на платформах SPARC и т. д.) Но в любом случае интерфейс действительно удобен.
Ситуация с базами данных кардинально отличается. Именно базы данных содержат основные знания человечества. В конце двадцатого века с появлением технологии баз данных мы накопили больше информации, чем за всю предыдущую историю. Вся беда в том, что доступ к базам данных (даже к тем, которые содержат полностью открытую информацию) ограничен. Чтобы получить интересующую его информацию, пользователь должен иметь физический доступ к соответствующей СУБД, быть в курсе модели данных, знать схему базы данных и, наконец, уметь пользоваться соответствующим языком запросов. Что касается языка запросов, то проблему частично решает протокол ODBC, позволяющий направлять ограниченный набор операторов SQL (с промежуточной обработкой соответствующим драйвером ODBC) к произвольному серверу баз данных. Но это только частичное решение, поскольку оно никак не помогает пользователю понять схему базы данных (даже в терминах SQL) и, конечно, не способствует созданию унифицированного интерфейса конечного пользователя (нельзя же заставить всех работать в строчном режиме на языке SQL).
Итак, что же мы имеем. Мы имеем удобные средства разработки распределенных в Internet гипермедийных документов, простые, удобные, развитые и унифицированные интерфейсы для доступа к информации WWW. Кроме того, мы имеем большое количество ценных баз данных, управляемых разнородными СУБД, а также желание сделать эти базы доступными всем людям (в случае публичных баз данных) или членам территориально-распределенной корпорации (в случае корпоративных баз данных).Возникает естественное желание скрестить эти две технологии и обеспечить доступ к базам данных в интерфейсе Web. Еще два года назад существовали только идеи такого скрещивания и не очень тщательно разработанные подходы к реализации. На сегодняшний день имеется несколько работающих механизмов, и далее мы их обсудим. В целом механизмы делятся на два класса: обеспечивающие доступ к базе данных (по запросу клиента) на стороне Web-сервера и работающие непосредственно на стороне клиента.
Доступ к базе данных на стороне клиента
Видимо, наиболее мощные средства обеспечения доступа к базам данных на стороне Web-клиента обеспечивает язык Java. Java - это объектно-ориентированный язык программирования, являющийся, по сути дела, "безопасным" подмножеством языка Си++. В частности, Java не содержит средств адресной арифметики, не поддерживает механизм множественного наследования и т. д. Поэтому утверждается, что корректность Java-программы можно проверить до ее реального выполнения (это абсолютно недоказанное утверждение). Различают:Для обеспечения доступа к базам данных на стороне Web-клиента наиболее существенно наличие языка Java. Технология разработки HTML-документа позволяет написать произвольное количество дополнительных Java-программ, откомпилировать их в мобильные коды и поставить ссылки на соответствующие коды в теле HTML-документа.Такие дополнительные Java-программы называются апплетами (Java-applets).Получив доступ к документу, содержащему ссылки на апплеты, клиентская программа просмотра запрашивает у Web-сервера все мобильные коды. Коды могут начать выполняться сразу после размещения в компьютере клиента или быть активизированы с помощью специальных команд.
Поскольку апплет представляет собой произвольную Java-программу, то, в частности, он может быть специализирован для работы с внешними базами данных. Более того, система программирования Java включает развитый набор классов, предназначенных для поддержки графического пользовательского интерфейса. Опираясь на использование этих классов, апплет может получить от пользователя информацию, характеризующую его запрос к базе данных, в том же виде, как если бы использовался стандартный механизм форм языка HTML, а может применять какой-либо другой интерфейс.
Для взаимодействия Java-апплета с внешним сервером баз данных разработан специализированный протокол JDBC, который, фактически, сочетает функции шлюзования между интерпретатором мобильных Java-кодов и ODBC, а также включает ODBC.
В заключение сравним достоинства и недостатки двух рассмотренных подходов. Использование CGI-скриптов на стороне Web-сервера позволяет иметь на стороне клиента только сравнительно простые программы просмотра. Вся хитроумная логика работы с базами данных (возможно, с обработкой полученных данных)переходит на сторону Web-сервера. Это легкий способ построения трехзвенной архитектуры приложения. (В последнее время разгрузку клиента от логики приложения называют решением проблемы "толстого" клиента. В данном случае мы можем иметь предельно тонкого клиента при утолщении сервера.)Отрицательным моментом является то, что при необходимости подключения нового CGI-скрипта, вообще говоря, требуется (относительная) модификация кода сервера.
Использование Java-апплетов, вообще говоря, обеспечивает более гибкое решение. Апплет - это часть HTML-документа. Для включения нового апплета нужно всего-навсего перекомпоновать документ. Web-cервер трогать не нужно. С другой стороны, клиент должен быть толще. Что бы там не говорили, клиент должен быть достаточно "толстым", чтобы в приемлемое время справиться с интерпретацией всех апплетов. Но, конечно же, сервер по-прежнему должен быть "толще" клиента.
На самом деле и при применении первого подхода, и при использовании второго остается нерешенной одна организационно-производственная проблема: кто должен проектировать, писать, отлаживать и сопровождать процедурный код? Web-мастера, производящие HTML-документы, обычно считают себя, скорее, дизайнерами нежели программистами. А здесь требуется чисто программистская работа. Иметь же двух мастеров на одном Web-site - это недопустимая роскошь. Придется растить людей, обладающих достаточными эстетическими способностями и являющимися в то же время квалифицированными и ответственными программистами. Я всегда говорил, говорю и говорить буду, что для этого нужно хорошо платить. Это единственное экономически оправданное решение.
А вообще-то, если хорошо разобраться, во всей Web-технологии нет ничего нового. Дал бы Бог придумать что-то, сочетающее черты гипертекста, так любимого пользователями, и баз данных, предназначенных для хранения не мусорной, а действительно ценной информации. Я лично попробую, хотя и ничего не обещаю. Возможно, нужно зацепиться за сравнительно новый, но уже весьма популярный термин "универсального сервера баз данных". Даешь новый, удобный и развитый интерфейс интегрированных информационных систем!
#5-6/96
Доступ к базе данных на стороне сервера
Механизм реализуется за счет наличия двух более или менее стандартизованных средств: возможности включения форм в документ, составленный с использованием языка гипермедийной разметки HTML, и возможности использования внешних по отношению к серверу Web программ, взаимодействие которых происходит через специфицированный протокол CGI (Common Gateway Interface) или внедренный позже API (Application Program Interface). (Хотя CGI называется "общим интерфейсом шлюзования", по сути дела, это одновременно некоторое подмножество протокола HTTP, и способ его соблюдения при взаимодействии сервера с внешней программой.)При реализации на основе CGI общая схема реализации доступа к базе данных на стороне Web-сервера выглядит следующим образом:
Замечание: говоря формально, внешняя программа осуществляет компиляцию языка форм в базовый язык сервера баз данных; это может быть очень простая компиляция с использованием заготовок SQL-операторов, но тем не менее компиляция. Между прочим, многие люди недооценивают сложность этой проблемы. Компилятор - он и в Африке компилятор. Язык форм ничем не проще любого другого языка. Толмач - это наиболее ценный элемент нашего разрозненного общества. Как мне смешно, когда некоторые мои знакомые считают, что перевести запрос, заданный на языке форм, в представление на языке SQL проще, чем откомпилировать программу на языке Фортран в машинные коды;
На сленге Web-мастеров любая внешняя программа, запускаемая Web-серверомв соответствии со спецификациями CGI, называется CGI-скриптом. CGI-скриптможет быть написан на языке программирования (Си, Си++, Паскаль и т. д.)или на командном языке (языки семейства shell, perl и т. д.). CGI-скрипт,выполняющий роль посредника между Web-сервером и другими видами серверов(например сервером баз данных), называется шлюзом (видимо, более правильно было бы использовать термин CGI-шлюз). Наличие CGI-скриптов на стороне Web-сервера позволяет, в частности, перенести часть логики приложения из клиента в сервер. CGI-шлюзы представляют собой средство для организации трехзвенной (в общем случае, многозвенной) архитектуры клиент-сервер.
В спецификациях CGI предусмотрены четыре способа взаимодействия Web-сервераи CGI-скрипта (по крайней мере в среде ОС Unix). Первый способ состоит в использовании создаваемых сервером переменных окружения, через которые передается как общая информация, независящая от функциональных особенностей CGI-скрипта (например имя и версия Web-сервера), так и специфические данные, определяющие поведение CGI-скрипта (скажем набор значений, введенных в форму на стороне клиента). Второй способ заключается в формировании параметров argc и argv, которые передаются функции main CGI-скрипта (как если бы CGI-скриптвызывался командной строкой в интерактивном режиме). Этот способ применяется для реализации ограниченного класса запросов ISINDEX. Наконец, входные параметры могут передаваться CGI-скрипту через файл стандартного ввода, а CGI-скрипт может передавать Web-серверу результирующие данные через файл стандартного вывода.
Как видно, при использовании CGI вся интерпретация пользовательского запроса производится CGI-скриптом. Скрипт может быть предельно жестким, ориентированным на выполнение запроса к фиксированной таблице фиксированной базы данных, или относительно гибким, способным выполнить произвольный запрос к одной или нескольким таблицам базы данных, идентифицируемой в параметрах клиента.
Что касается API, то для людей, знающих одновременно Unix и операционные системы вообще, ситуация предельно ясна. Запуск независимого "тяжеловесного" процесса стоит немало. Загрузка и выполнение еще одной программы в уже существующем адресном пространстве по сравнению с предыдущем вариантом гораздо дешевле. Нет никаких новых идей. API - это, фактически, дешевый способ (хотя и небезопасный: понятно, почему?) выполнить в адресном пространстве сервера WWW программу, которая соответствует спецификациям на языке HTML(объясняю, почему; никто не захочет впустить в свою квартиру на предмет хотя бы временного жительства незнакомого человека; внешние программы незнакомы серверу). Такая программа должна быть заранее подготовлена и включена в библиотеку, из которой сервер может производить динамическую загрузку (например, такая библиотека может быть разделяемой - shared library). Т. е. смысл не меняется, меняется только реализация.
Единство в многообразии
Следует отметить, что JavaScript - это не единственный язык управлениясценариями просмотра документов. Microsoft подготовила свою версию аналогичного
языка - VBScript на основе Visual Basic. Кроме того, управлять сценарием
просмотра можно и из Java-апплетов, что, конечно, сложнее, но зато более
надежно и безопасно. При этом программист получает все преимущества наследования
и прочие атрибуты объектно-ориентированного программирования. В конце концов,
для создания фреймов и окон можно использовать атрибуты соответствующих
контейнеров HTML, которые позволяют делить рабочую область экрана на фрагменты,
перекрывать объекты и восстанавливать первоначальный вид страницы. Таким
образом, к настоящему времени существует по меньшей мере три способа управления
сценариями просмотра гипертекстовых баз данных Web, каждый из которых по-своему
хорош. Какой из них выбрать - это дело автора Website.
Павел Храмцов - руководитель группы РНЦ "Курчатовский
Институт". С ним можно связаться по электронной почте:
Еще два интерфейса
Непосредственно к www и lynx примыкают интерфейсы SlipKnot и I-COM. Не будем останавливаться на разнице между ними, а постараемся объяснить для чего они нужны. SlipKnot и I-Com предназначены для доступа к Web по коммутируемой линии. Изюминка этих программ в том, что пользователю не надо получать IP-адрес для своего удаленного компьютера: ему требуется только вход на машину в режиме удаленного терминала. В телеконференции comp.infosystems.www.windows.browsers недавно велась достаточно бурная дискуссия о том, нужны ли SlipKnot и I-Com и если да, то для чего? Ответна этот вопрос дает внимательное рассмотрение маршрутизации в сетях IP. Функции маршрутизатора в сетях IP выполняют шлюзы - это либо компьютер TCP/IP, стек которого сконфигурирован для работы в качестве шлюза, либо устройство-маршрутизатор. Удаленные машины, подключаемые по телефонной линии к локальной сети, как правило имеют соединение по протоколу SLIP или PPP. Но это значит, что им надо раздавать адреса, отличные от машин локальной сети.Некоторые системы разрешают использовать адреса локальной сети и для удаленных машин, но в этом случае такая настройка может быть выполнена только на машине-шлюзе. А что делать тем пользователям, которые не являются администраторами сетей и не имеют привилегированного доступа на машинах-шлюзах, но имеют возможность настроить свой компьютер для работы с модемом и обеспечивать доступ в режиме удаленного терминала по телефонному каналу? Именно для этого случая и разработаны SlipKnot и I-Com. Каждая из этих программ дозванивается до компьютера, подключенного в Internet, вводит идентификатор пользователя и его пароль и, после успешного входа в систему, запускает либо www, либо lynx, которые и передают информацию на машину пользователя. При этом никаких протоколов семейства TCP/IP на конечном этапе (www-SlipKnot) не применяется- вся коррекция ошибок возложена на протоколы модема. Обе программы реализованы для среды Windows и позволяют реализовать форматирование текста в соответствии со стандартом HTML 2.0. Программы позволяют работать и с графикой, но эти возможности сильно ограничены.
Фреймы и окна
При работе с фреймами и окнами в предыдущих версиях JavaScript постоянно приходилось отслеживать последовательность открытия окон и фреймов для того, чтобы аккуратно их потом закрывать. На некоторых неточностях работы с окнами были основаны так называемые mail-bombs. Суть этих "подарков" заключалась в том, что если пользователь по почте принимает документ, который состоит только из одной команды - window.close(), то система, не спрашивая пользователя, закрывала текущее окно, а в этот момент таким окном является окно электронной почты. Теперь перед тем, как что-либо закрыть, система будет спрашивать разрешения. Правда, опять-таки не всегда. Если в момент получения команды на закрытие окна на экране только одно окно Navigator, то система его закроет без каких-либо комментариев.Однако изменения в работе с окнами и фреймами этим не исчерпываются. Во-первых, в систему введено новое свойство opener, которое определено для текущего окна или фрейма, а также методы blur и focus распространены на работу с окнами.
Свойство opener определяет окно документа, который вызвал открытие окна текущего документа. Свойство определено для любого окна и фрейма. Если необходимо выполнить некоторые функции по отношению к окну, открывшему данное окно, то можно использовать выражение типа: window.opener.[method].Например, если требуется закрыть окно-предшественник, то можно просто выполнить метод close - window.opener.close().
Точно таким же способом можно изменить содержание этого окна при помощи методов write или writeln. Можно менять и другие свойства объектов в окне-предшественнике. Следующий пример взят из дополнений к спецификации JavaScript компании Netscape Communications:
window.opener.document.bgColor="cyan"
В данном случае для окна-предшественника определен светло-голубой цвет фона.
Но самое замечательное, что предшественника можно менять. Таким образом, автор получает возможность открывать и закрывать окна не в строго иерархической последовательности, а произвольно. Управление многооконным интерфейсом в этом случае становится более гибким:
window.opener= new_window window.opener = null
Первый пример переназначает для текущего окна окно-предшественник, в то время как второй вообще защищает предшественника от каких-либо действий. Все, что было сказано об окнах, распространяется и на фреймы, которые являются просто частным случаем окна.
Часто при работе с фреймами один фрейм может быть порожден путем разбиения другого на части. Если при этом потребуется обратиться к окну-предшественнику фрейма-предшественника, то свойство opener здесь незаменимо. В предыдущей статье было рассмотрено закрытие окна с фреймами путем загрузки в окно parent страницы терминатора. С появлением свойства opener необходимость в такого рода фокусах отпала.
Как видно из этого примера, разработчики языка следуют за пожеланиями авторов Web-узлов и практикой применения JavaScript.
Кроме обращения к различным свойствам окон и фреймов разработчики расширили действие методов blur и focus с фреймов до окон. Теперь не только фрейм, но и окно может быть сделано текущим при помощи метода focus или, наоборот, переведено в фон при помощи метода blur. В ряде случаев, например при порождении нескольких страниц, обращение к этим функциям бывает довольно полезным.
Графика
До Navigator 3.0 в JavaScript были только встроенные объекты типа Image. В новой версии языка появился конструктор для этого типа объектов:new_image = new Image()
new_image = new Image(width, height)
Часто для создания мультипликации формируют массив графических объектов, которые потом прокручивают один за другим:
img_array = new Array()
img_array[0] = new Image(50,100)
img_array[1] =new Image(50,100)
...
img_array[99] = new Image(50,100)
У объекта Image существует 10 свойств, из которых, на мой взгляд, самым важным является src. Так, для присваивания конкретных картинок элементам массива img_array следует воспользоваться следующей последовательностью команд:
img_array[0].src = "image1.gif"
img_array[1].src = "image2.gif"
...
img_array[99].src = "image100.gif"
В данном случае можно было воспользоваться и циклом для присвоения имен, так как они могут быть составлены из констант и значения индексной переменной.
В новой версии языка объект типа Image может быть поименован в HTML-теге IMG. После этого можно обращаться к нему по имени. Здесь следует учитывать, что если Image применяется внутри формы, то он является свойством этой формы. В одном случае для следующего графического объекта должны быть использованы разные составные имена:

document.kuku.car.src = "car1.gif"
В первом случае задан поименованный объект типа IMG, а во втором объект этого же типа, но внутри формы.
Однако наиболее часто в примерах использования скриптов можно встретить обращение к Image по индексу в массиве всех графических объектов данной страницы. Если наш объект, например, второй Image на странице, то будь он внутри формы или за ее пределами, к нему всегда можно обратиться по индексу: document.images[1].src = "car1.gif". Расширяя пример с массивом Image, построим теперь документ, в котором будет встроена мультипликация, определенная нашим массивом:
Довольно часто используют не мультипликацию, а выбор картинки через OPTION, другой новый объект JavaScript. При этом можно через поле формы SELECT менять не только саму картинку, но и гипертекстовую ссылку, которая может быть связана с ней. На гипертекстовую ссылку также можно выходить по индексу:
document.links[index].href = kuku.html
Данный прием оправдан и с точки зрения интерфейса навигатора. При применении такого рода массивов ссылок не требуется перечислять их, а также листать страницы в рабочей области навигатора - можно просто выбрать ссылку из "выпадающего" меню. Другой способ для сокращения числа нажатий на клавиши - использование событий. В том же объекте OPTION можно применять событие onChange, что делает необязательным нажатие кнопок типа submit. В этом случае достаточно будет просто выбрать альтернативу и перейти к новой странице сразу после выбора.
Hewlett-Packard объединяется с Microsoft и Netscape для печати документов HTML
Microsoft - не единственный монополист, стремящийся запустить свои щупальца в Internet. Ведущий производитель принтеров, компания Hewlett-Packard, тоже намерена расширить свое присутствие в World Wide Web.HP заключила два практически одинаковых соглашения с Microsoft и Netscape Communications с тем, чтобы встроить в принтеры поддержку языка гипертекстовой разметки документов HTML (HyperText Markup Language), который является стандартным средством представления данных в Internet.
Сегодня из-за недостатка стандартов, относительно низкого разрешения графических файлов в Internet и отсутствия правил форматирования документов, единых для Internet и принтеров, которое влечет за собой потерю данных, осложняется распечатка информации непосредственно из Internet.
Хотя HP собирается работать с Microsoft и Netscape по отдельности, компания официально заявила, что считает себя своего рода связующим звеном, призванным обеспечить согласование различных стандартов.
"Пока не решено, как и когда будет реализована поддержка HTML в принтерах и насколько изменится их архитектура", - говорит менеджер по маркетингу отделения лазерных принтеров Джим Лионс.
"Мы могли бы расширить PCL (графический язык, поддерживаемый принтерами HP) для поддержки HTML, но другие варианты тоже возможны", - считает Лионс.
Несмотря на расплывчатость обещаний и отсутствие каких-либо сроков, аналитики высоко оценивают новое начинание HP и пророчат ему успех.
"К сожалению, Microsoft и Netscape используют различные методы поддержки печати HTML. Авторитет HP позволяет ей просто-напросто диктовать свои стандарты другим производителям", - говорит Билл Флинн, менеджер консультационной службы Lyra Research.
"Соглашения с Microsoft и Netscape позволяют с уверенностью утверждать, что на чем бы HP не остановила выбор, это станет частью базового множества HTML", - считает Флинн.
HP собирается улучшить качество печати документов Internet
#8/96
Идущие часы
Другой, часто встречающийся пример на странице со скриптами JavaScript- идущие часы ().
В этом примере реализовано сразу три приема использования JavaScript:
часы, бегущая строка и предупреждение.
Часы реализованы в строках, которые следуют за комментарием "//Clock".
В них также применяется функция setTimeout и объект DATE.
Прежде чем отобразить время, программа получает текущее значение времени
через объект DATE. Считается, что после выполнения программы все объекты
будут удалены из памяти, что реально не всегда происходит. Для отображения
времени используются методы, которые определены для объекта DATE. Значения
часов минут и секунд объединяются в строку при помощи операции конкатенации
"+", и результат отображается в поле формы.
О бегущей строке мы уже говорили достаточно подробно, поэтому теперь
предлагаю обратить внимание на функцию alert в форме kuku.
Это встроенная в JavaScript функция, которая предупреждает пользователя
о том, что он запускает на сервере программу.
Internet в бизнесе и бизнес в Internet
Сергей КузнецовПарадоксально, что хотя сеть Internet возникла по инициативе и
при финансовой поддержке американских военных (начало истории
сети связано с выполненной по заказу Министерства обороны США в
университете г. Беркли разработкой стека сетевых протоколов
TCP/IP), в течение многих лет основными пользователями (и
разработчиками технических средств) Internet являлись ученые
(физики, химики, математики, программисты). Сегодня ситуация
изменилась. Выросшие инфраструктура и технические возможности
Internet дают привлекательную возможность использовать Internet в
ведении бизнеса. Соединенные Штаты и Западная Европа бурлят от
избытка энтузиазма. По нашему мнению, пришло время и для
бизнесменов России (наиболее дальновидные из них уже давно
обратили на это внимание).
Что же изменилось в Internet в последние годы? Как кажется, имеет
смысл рассматривать три аспекта: технические возможности и
потенциально доступные услуги; обеспечение доступа к Internet;
имеющиеся к настоящему времени примеры использования сети
Internet в традиционном бизнесе и развития нового рода бизнеса,
целиком ориентированного на Internet.
Технические возможности
В недавнем прошлом основным режимом использования Internet
являлся режим электронной почты (в России это так и сегодня).
Электронная почта - это абсолютно необходимое средство (и как мы
без нее жили еще пять лет тому назад?), однако в ряде важных
случаев (например, при необходимости оперативного поиска
информации на серверах, подключенных к сети) оно не является
достаточным: обмен информацией происходит слишком долго. В таких
случаях требуется подключение в Internet в режиме on-line. До
некоторого времени такое подключение обходилось пользователям
существенно дороже, чем подключение в режиме электронной почты
(расходуется больше телекоммуникационных ресурсов). Сейчас в
мировом масштабе (особенно, в Северной Америке и Западной Европе,
но частично это относится и к России) происходит скачкообразный
переход на новые технологии телекоммуникаций, сопровождающийся
резким увеличением пропускной способности каналов и таким же
резким снижением стоимости их использования. Это уже привело к
тому, что в США режим on-line сегодня является основным режимом
использования Internet. Естественно, это привлекает бизнесменов
(оперативный доступ к информации является очевидным требованием
бизнеса).
При использовании Internet в режиме on-line потенциально доступны
многие программные сервисные средства, обеспечивающие
подключение к серверу в режиме удаленного терминала (telnet),
перекачку файлов (ftp), произвести поиск необходимых
информационных ресурсов (Archie) и т.д. Однако подлинную
революцию в истории сервисных служб Internet вызвало появление
службы Всемирной Паутины (World Wide Web - WWW). Опора WWW на
технологию распределенной гипертекстовой организации информации
дает пользователям возможность комфортной работы с информацией в
сети без необходимости явного знания места ее расположения
(достаточно знать сетевой адрес сервера WWW, на котором находится
стартовая "домашняя" страница соответствующего гипертекстового
документа). Особо важно то, что потенциально любой пользователь,
подключенный к Internet в режиме on-line (обладающий так
называемым IP-адресом), может создать свой собственный
WWW-сервер, наполнив его актуальной информацией. Конечно, это
открывает широкие возможности для бизнеса (реклама, каталоги и
прайс-листы товаров и услуг, возможность дистанционных заказов и
т.д.).
Многие коммерческие ранее в Internet пугало полное отсутствие
безопасности информации при ее передаче по сети. По этой причине
многие крупные компании, отделения которых располагаются в разных
точках земного шара, до сих пор поддерживают собственные
корпоративные глобальные сети с гарантированной безопасностью.
Конечно, такие сети обходятся гораздо дороже, чем если бы
использовался Internet. Теперь начали появляться средства,
обеспечивающие безопасность информации при использовании
Internet. Например, компания Sun Microsystems объявила о выпуске
продукта SunScreen, основанного на использовании методов
криптографии на уровне передачи фрагментов сообщения. На основе
применения SunScreen компания может создать виртуальную
защищенную корпоративную подсеть внутри Internet. Основной
проблемой являются юридические ограничения использования методов
криптографии, устанавливаемые национальными правительствами.
Однако кажется, что открывающиеся для бизнеса перспективы
настолько заманчивы, что правительства международного сообщества
будут вынуждены принять согласованное положительное решение.
Доступ
Здесь мы в большей степени сосредоточимся на возможностях,
доступных сегодня в России (не претендуя на полноту, а лишь
представляя общую картину). История Internet в России началась в
1990 г., когда в результате совместной активности группы сетевых
программистов Курчатовского института и созданной к этому времени
Советской ассоциации пользователей ОС UNIX была создана сеть
Relcom, вошедшая в состав европейской сети EUnet, которая, в свою
очередь, была подключена к Internet. Первой коммерческой
компанией, обеспечивающей подключение пользователей к Internet и
их обслуживание, был кооператив Демос, состоявший в то время
почти целиком из сотрудников Курчатовского института и ИПК
Минавтопром (в то время это место было прибежищем наиболее
активных приверженцев ОС UNIX).
В 1992 г. в результате внутренних разногласий внутри Демос
произошел раскол, и было образовано акционерное общество Релком,
новая компания, специализирующаяся на развитии инфраструктуры
Internet в России и предоставляющая услуги конечным
пользователям. При этом право на использование выхода на Запад
через сеть EUnet осталось за АО Релком, а Демос договорился об
использовании американской сети UUnet. Важно заметить, что при
этом (после ряда согласовательных переговоров) удалось сохранить
связность Российской части сети Internet. На сегодняшний день
Релком и Демос остаются в России наиболее крупными коммерческими
компаниями, обеспечивающими для конечных пользователей доступ к
Internet и предоставление дополнительных услуг. По всей видимости
сеть Relcom и в будущем останется основной составляющей Internet
в России.
Однако это не означает, что для конечного пользователя выбор
обслуживающей компании ограничен кандидатурами Релком и Демос. В
последние годы в России появилось несколько новых компаний, также
обеспечивающих подключение пользователей к сети Internet и
оказывающих услуги. Как правило, это либо Российские отделения
соответствующих иностранных компаний, либо отечественные компании
со смешанным капиталом (кроме того, имеются некоторые компании,
финансируемые государством и пользующиеся особыми льготами при
использовании телекоммуникационных каналов, но не имеющие права
вести коммерческую деятельность). В ряде случаев стоимость услуг,
предоставляемых вновь образованными компаниями, ниже той, которая
требуется при использовании компаний Релком и Демос. В целом,
следует отметить, что появление в России конкурирующих компаний,
обеспечивающих услуги в связи с доступом к Internet,
исключительно полезно для российского бизнеса: появляется
возможность выбора на основе "money for value".
Бизнес
Имеется две принципиальных категории использования Internet в
целях бизнеса: Internet для бизнеса и бизнес в Internet.
Первая категория очевидна и традиционна. Сегодня Internet
обеспечивает надежный и дешевый обмен информацией между узлами
сети. Любой коммерческой компании требуются коммуникации либо с
другими компаниями, либо с отделениями между отделениями этой же
компании. Любой бизнесмен знает, что расходы на коммуникации
составляют немалую часть общего бюджета. В настоящее время
Internet позволяет добиться более высокого качества коммуникаций
при меньших расходах, включая возможности обмена мультимедиа
информацией в реальном масштабе времени (в частности, звуковой и
видео информацией). Будущие перспективы, хотя и не полностью
предсказуемы, выглядят очень заманчивыми.
Вторая категория более оригинальна и интересна. Internet
представляет собой некий виртуальный мир, который полностью
доступен пользователям сети. Любой полноценный клиент Internet
может автоматически стать частью этого виртуального мира, создав
и предоставив другим пользователям новую частицу информации.
Интерактивный характер взаимодействий в Internet позволяет
производить виртуальные (но в то же время вполне реально
доступные) сетевые библиотеки, видеотеки, магазины и т.д. Это
открывает новые пути для рекламы, маркетинга, продаж. Домашняя
хозяйка в Малаховке, не выходя из дома, сможет заказать и
оплатить мясорубку, имеющуюся на (виртуальном) складе в магазине
в Нижнем Вартовске. Очень существенны перспективы использования
Internet в банковском деле. Не Internet для банковской
активности, а банковская активность в Internet! Для этого,
конечно, особенно важны средства повышения безопасности
информации в сети, упоминавшиеся выше.
Похоже, что развитие Всемирной сети сетей приведет к полному
преобразованию бизнеса в этом мире. Конечно, люди всегда
останутся людьми, а бизнес - бизнесом, но новый бизнес станет
более выгодным и более удобным для людей.
Использование окон для построения HELP
В заключение вернемся к первому примеру. В нем был описан вызов, которыйприводит к открытию окна контекстного help и загрузки в него HTML-страницы.
На этой странице есть форма с кнопкой close, при нажатии на которую
текущее окно закрывается. Так как в этом случае текущим является окно с
help, то закрывается именно оно. Все это замечательно, если не используются
фреймы в help. При применении фреймов текущим окном будет не главное окно,
а окно фрейма. Если help состоит из нескольких фреймов, то простое выполнение
функции window.close() не приведет к ожидаемому результату - закрытию
всего окна. Корректнее всего будет загрузить в окно-предшественник (имя
по умолчанию - _parent) пустую страницу, сделать ее текущей и после
этого удалить. Вся страница, удаляющая окно _parent, состоит из контейнера
SCRIPT ().
Вообще говоря, использовать такие страницы-терминаторы следует аккуратно.
Ведь загрузка этой страницы может привести к завершению работы браузера,
если других открытых страниц в данный момент нет.
Написание данных скриптов заставляет сожалеть о том, что в JavaScript
нет наследования. Дело в том, что, даже если некоторое окно порождено из
другого окна, функции, определенные в окне-родителе, в новое окно не передаются.
Это означает, что автору придется их дублировать в каждом документе или
прибегать к помощи включаемых файлов, что разрывает технологический процесс
разработки страниц.
История создания SNMP.
Иваненко С.К началу 1988 года стало ясно, что необходим некоторый общий набор
средств управления сетевыми устройствами различных производителей,
которые до сих пор создавали собственные продукты мониторинга и
конфигурирования для своих же сетевых устройств, поддерживающие
уникальные механизмы взаимодействия с ними.
После многих заседаний IAB (Internet Architecture Board) опубликовал
в апреле 1988 года эпохальный
, в котором
призвал к скорейшему созданию элементов Простого Сетевого Управления
(Simple Network Management).
Работа по созданию SNMP закипела. Многие идеи, лежащие сегодня в основе
SNMP, были заимствованы из предыдущих исследований по мониторингу Internet-
маршрутизаторов (исторически называемых шлюзами - gateways), явивших на свет
Simple Gateway Monitoring Protocol (SMGP). И уже в августе 1988 появились
три основополагающих документа:
Впоследствии эти документы были переизданы и дополнены до определения
следующего поколения SNMP: RFC 1155, 1156 и 1157, которые в свою очередь,
также подверглись переработкам.
В конце концов, в мае 1991 года была закончена работа по созданию
первой версии протокола SNMP, которая нашла свое отражение в своде
следующих документов:
- Определяет структуру управляющей информации в виде глобального дерева.
- Представляет синтаксис определения имен переменных управления.
- Дополняет RFC 1155 в части синтаксиса определения имен переменных.
- Содержит список более ста наиболее необходимых переменных, отвечающих
за конфигурацию, статус и статистику систем, входящих в TCP/IP сеть.
- Определяет сообщения, которыми обмениваются управляющая станция и
об'ект управления для получения и обновления значения переменных.
- Определяет trap(alarm)-сообщения, посылаемые системой при значительных
изменениях в ее конфигурации.
Опубликование данных стандартов явилось толчком для производителей сетевого
оборудования, которые развернули широкие работы по обеспечению управляемости:
Ethernet, Token Ring, FDDI, и др.
Java-байт код
Гораздо более интересным является разработка мобильных Java байт-кодов,которые в терминах Java-технологии называются applets. Концепция
applets была специально разработана для использования в World Wide
Web. Задача applet-ов "оживить" Web. Типичным примером такого
применения applet-ов является приветствующий пользователя симпатичный
человечек из документации по программе HotJava. Для использования
applet-ов в язык гипертекстовой разметки HTML был введен специальный
тег APP, в котором указывается имя applet-а и параметры его вызова. При
этом обработка HTML-документа программой-интерфейсом происходит также
как и при встроенной в документ графике. Сначала запрашивается
документ, анализируется его содержание, и, если есть теги APP,
подгружаются applet-ы. После того как все applet-ы получены они могут
быть выполнены. Из этой схемы ясно, что программа интерфейс является
одновременно и интерпретатором байт-кода Java. Используя библиотеку
классов Java можно разработать довольно эффектные мультимедийные
страницы с движущейся графикой и звуком. Кроме этого применение
байт-кода позволяет организовать распределенные процедуры вычислений с
использованием различных серверов, с которыми можно взаимодействовать по
разным протоколам. Собственно возможность подключения новых протоколов
обмена также декларируется как одно из достоинств нового подхода. Но
даже у неискушенного пользователя сразу возникает закономерный вопрос о
безопасности машины, на которой запускается приложение. Как быть с
традиционным девизом "доверяй, но проверяй" при копировании
неизвестного программного обеспечения? Не надо быть семи пядей во лбу,
чтобы понять, что при использовании HotJava или Navigator пользователь
вольно или невольно запускает на своей машине чужие программы, которые
могут не только "оживить" HTML-страницы, но и несколько "встряхнуть"
владельца компьютера, на котором эти страницы "оживают". Ведь, в принципе
, applet-ы могут выполняться и незаметно для пользователя в фоновом
режиме. Ответ на этот вопрос прост: при разработке applet-ов
используется компилятор байт-кода, который имеет встроенную систему
безопасности, а сама программа просмотра, также анализирует получаемый
байт-код на наличие в нем запрещенных операций. Однако, если отбросить
детали механизмов защиты HotJava и Navigator, все сводится к запретам
записи информации на диск и по адресам оперативной памяти с
использованием адресной арифметики. Совершенно очевидно, что этого явно
недостаточно для построения надежно защищенной системы. Существует
масса способов внедрения в систему и без указанных выше действий,
не говоря просто о непроизводительном использовании ресурсов компьютера.
Первая ласточка уже появилась на свет в виде сообщения CERT о
возможности разработки applet-а, который использует брешь в системе DNS,
и подменяет IP адреса. Правда эта "дырочка" обнаружена в Navigator, а
не HotJava, но и популярность первой программы не идет ни в какое
сравнение популярностью продукта Sun. Netscape уже об'явила о том, что
в систему защиты будут внесены изменения и программа будет проверять
IP-адреса, с которыми работает applet на идентичность с IP-адресом
HTTP-сервера, с которого applet получен. Но естественно встает вопрос о
том как же быть в этом случае с распределенными вычислениями, которые
должны произвести революцию на Internet? В принципе существует пока два
способа защиты: запрет выполнения Java байт-кода программой интерфейсом
и использование проверенных страниц. Запретить выполнение можно,
включив специальный режим настройки программ HotJava и Navigator.
Вообще же говоря, в телеконференции comp.lang.java энтузиасты
новой технологии на проблему безопасности реагируют примерно так - мы
же честные люди, которые не собираются писать всякие пакости. Для
реальной же защиты в программу-интерфейс придется вставить полноценный
firewall с возможностями конфигурирования TCP/UDP портов и анализа
содержания пакетов, и то, как показывает практика, это не приводит к
стопроцентной безопасности.
Java, JavaScript и включаемые модули
В новой версии языка есть возможность организовать взаимодействие между Java-апплетами и скриптами JavaScript. Достигается это за счет применения атрибута MAYSCRIPT в контейнере APPLET. Собственно, в JavaScript определен объект типа APPLET, к которому можно обращаться либо по имени, либо по индексу в массиве апплетов. У этого объекта есть только одно свойство - имя. Никакие другие свойства или методы для данного типа объектов не определены. Сами детали взаимодействия апплетов и скриптов лучше всего обсуждать в рамках программирования Java-апплетов, поэтому в данной статье мы эти особенности опустим.Кроме апплетов JavaScript позволяет работать и с включаемыми модулями. Последние представляют собой массив соответствующего типа, для которого определен ряд свойств. Используя эти свойства, можно определить установленные включаемые модули и их соответствия MIME-типам. Назначать включаемые модули или манипулировать ими нельзя.
Java-приложения
Система программирования на Java позволяет компилировать программы длякомпьютерной платформы, на которой она стоит в том же ключе как и
любая другая, например, С или С++. В этом случае главными отличиями
Java-программ, которые называются Java-applications, является
использование библиотеки Java-классов, которые обеспечивают разработку
безопасных, распределенных систем. При этом утверждается, что язык
позволяет делать гораздо меньше ошибок при разработке программ. Главным
при этом является тот факт, что в Java напрочь отсутствует адресная
арифметика. Анализировать возможности "проколов" в компиляторе Java
пока представляется крайне затруднительно, т.к. он широко не
применяется и craker-ы еще не начали его пристальное изучение, в
отличии от других компонентов Java-технологии, где "дырочки"
обнаружились незамедлительно. А вот по поводу отсутствия адресной
арифметики можно сказать, что у дедушки языков программирования -
Fortran, ее тоже не было, но за тем она появилась и являлась
чрезвычайно мощным средством повышения эффективности
программных кодов. Понятно, что ни о какой мобильности
откомпилированного приложения говорить не приходится. Для его переноса
нужен соответствующий компилятор и библиотеки. По сравнению с
механизмом RPC Java - это большой шаг вперед, но многие ли разработчики
страниц Web воспользуются этой возможностью?
Java-технология
Словосочетание "Java-технология" уже несколько раз употреблялось в этойстатье. Пора сказать о том, что я под ним понимаю. Java технология
состоит из по крайней мере трех основных компонентов: , и
. Первые два компонента предложены
Sun, а JavaScript - это творение Netscape. Рассмотрим сначала общие
свойства каждого компонента этой триады, а за тем посмотрим на их место
в сложившейся технологии World Wide Web.
заставляет продолжить обзор возможностей
Павел ХрамцовПоявление Netscape Navigator 3.0 и новой версии JavaScript 1. 1 заставляет продолжить обзор возможностей управления сценариями просмотра Website, который был опубликован в предыдущем выпуске "Открытых Систем сегодня"(). В новой версии языка были введены: возможность взаимодействия JavaScript и Java, определение установленных модулей расширений (plug-in), новые типы объектов(Area, Function, Image) и ряд других особенностей, которые, по мнению разработчиков, должны повысить мощь программирования на JavaScript. По своей природе JavaScript- это объектно-ориентированный язык программирования. В отличие от других языков данного типа, JavaScript не оперирует абстрактными объектами. Все его конструкции определены для объектов Navigator. Именно с этих позиций и следует рассматривать развитие языка.
Объект навигатора - это либо конструкция HTML, чаще всего контейнер, либо рабочая область программы Netscape Navigator. Если брать конструкции HTML, то каждый контейнер имеет атрибуты, которые в JavaScript рассматриваются в качестве свойств объекта.
Над объектами могут быть выполнены некоторые функции, которые в терминах JavaScript называются методами. Помимо методов существуют и просто функции, которые могут быть определены программистом.
Свойства объектов могут быть переопределены в процессе выполнения программ, что позволяет построить гибкие сценарии просмотра гипертекстовых страниц Website или "оживить" страницы. Однако не все свойства переопределяются. Некоторые свойства могут быть только прочитаны скриптом, но не изменены в процессе его выполнения.
Развитие языка идет в направлении расширения типов объектов Navigator, с которыми может манипулировать программист, а также изменения свойств объектов, точнее, расширения возможностей их переопределения.
JavaScript - средство создания "оживших" страниц Web
JavaScript, собственно говоря, - это объектно-ориентированный язык программирования, привязанный к Navigator, отдельные компоненты которого являются объектами этого языка. Часто пишут, что Java и JavaScript - близнецы-братья. Может быть, они и братья, но отнюдь не близнецы. Во-первых, для JavaScript не требуется специального компилятора, и сценарий размещается прямо в теле документа - его интерпретирует непосредственно Navigator. Конечно, возможности программирования анимации в JavaScript очень ограничены: можно организовать бегущую строку, идущие часы, меняющиеся картинки, но не более. Главным достоинством JavaScript является организация всего этого без использования сервера. Navigator с JavaScript позволяет организовать многооконную локальную гипертекстовую систему с контекстной справочной системой, что раньше требовало достаточно больших усилий программистов.Все эти богатые возможности не даются просто так - за все приходится платить. Проводя опыты со сценариями на Windows 3.x, я очень скоро убедился, что "ожившие" страницы требуют очень много ресурсов, а иногда могут даже привести к "зависанию" системы. Разъяснения, полученные из comp.lang.javascript, ,а также аналогичного списка Netscape, выглядели примерно так: "Не валяй дурака и ходи как все по камешкам - ставь многопотоковые Windows95, а лучше NT, и не морочь занятым людям голову". А если серьезно, то Navigator для Windows 3.1х является лишь калькой 32-разрядных версий этой программы, и так как в 16-разрядной ОС нет реальной вытесняющей многозадачности, то при использовании отложенных вызовов функций в цикле по setTimeout происходит просто "отъедание" ресурсов, которые далеко не безграничны.
JavaScript
Третьей составляющей Java-технологии является язык сценариев управленияпросмотром гипертекстовых страниц JavaScript. В девичестве LiveWare,
этот язык разрабатывался компанией Netscape Communication еще до
анонсирования Java. Для специалистов в области теории и практики
гипертекстовых систем появление этого языка было давно ожидаемым
событием. Практически любая локальная система имеет средство описания
сценариев просмотра своих информационных страниц, появление такого
механизма в World Wide Web было делом времени. При этом и теория и
практика реализации такого языка были достаточно хорошо изучены,
начиная от демонстраций Дуга Энжельбарда, и кончая системами типа Hyper
Card, Hyper Note, KMS и т.п.. Кроме того появление фреймов,
многооконность, динамическая загрузка страниц и ряд других расширений от
Netscape явно указывали направление развития Navigator. Надо сказать,
что технология LiveWare по своей архитектуре очень напоминала Java.
Та же возможность разработки приложений для сервера HTTP, мобильный
код, исполняемый Navigator. Но, кроме этого, в HTML страницы можно
встраивать еще и исходные тексты программ. Последняя возможность
превращает Navigator в самодостаточную среду программирования,
которую можно использовать не только при путешествиях по Internet, но и
в локальных системах. Используя JavaScript, можно организовать очень
гибки много оконный интерфейс с локальным контекстной справочной
системой и встроенной графикой при этом многие вопросы проверки
вводимых пользователем данных можно возложить на функции JavaScript. По
своим функциональным возможностям JavaScript довольно сильно уступает
Java, по крайней мере пока. Можно организовать открытие нового окна,
прокрутку текста, запрограммировать калькулятор, которых на сети уже
около двух десятков, проверку ввода, но не более того.
Эпилог
Завершая обзор новых технологий World Wide Web, напомним еще раз основные тенденции: повышение качества отображения страниц Web, программирование страниц Web, добавление новых измерений к страницам, возможность построения многооконных интерфейсов, "оживление" интерфейса, повышение интерактивности на линии "интерфейс-сервер". Использование Web в бизнес-целях заставляет задуматься и о шифрование трафика, что уже реализовано во многих коммерческих версиях интерфейсов. Мы являемся свидетелями рождения новой отрасли, которая в данный момент определяет свои стандарты. Наиболее смелые из отечественных программистских команд на равных могут принять и принимают участие в этом соревновании.Павел Храмцов - руководитель группы РНЦ "КурчатовскийИнститут". С ним можно связаться по тел. (095) 196-9124 или по электронной почте: .
Коротко о главном
Начало 1996 года ознаменовано появлением нового языка программирования Java.Если быть более точным, то широкая публика могла "пощупать" это новое
произведение от Sun Microsystems еще весной 1995 года, когда впервые на
компьютерах этой фирмы появилась новая программа просмотра страниц
World Wide Web - HotJava. На домашней странице WWW Consortium Java была
внесена в список так называемых Мобильных Кодов - одного из
перспективных направлений развития технологии World Wide Web. И вот в
конце 1996 года на Западе начался бум Java, который к моменту
проведения выставки Unix-Expo`96 докатился и до нашей страны.
На выставке Sun устроила настоящее промывание мозгов компьютерной
общественности под названием "Java - революция на Internet", посвятив
этому целый выставочный день. Не менее впечатляющая компания по
пропаганде Java развернута и в печати. При этом популяризацией
возможностей этого языка занимаются не только специализированные
компьютерные издания, но и, подражая The Economist и The New York
Times, статьи на эту тему разместили Коммерсант Дейли и Известия. И это
при всем при том, что реально ничего действительно существенного кроме
того, что новую технологию залицензировали с десяток крупных
компьютерных фирм, включая Microsoft, еще не произошло. При этом речь
теперь ведется не просто об языке Java, а об технологии Java, которая
призвана осуществить прорыв в реализации распределенной обработки
данных в сети Internet. Не впадая в эйфорию от возможностей новой
технологии, но и не отметая этих возможностей, попробуем разобраться в
том, что такое Java-технология в чем ее сила, проблемы и будет ли она
столь же популярной как и World Wide Web.
Массивы
Первым типом новых объектов, которые мы рассмотрим, являются массивы. Тип Array введен в JavaScript 1.1 для возможности манипулирования самыми разными объектами, которые может отображать Navigator. Это - список всех гипертекстовых ссылок данной страницы Website, список всех картинок на данной странице, список всех апплетов данной страницы, список всех элементов формы и т.п. Пользователь может создать и свой собственный массив, используя конструктор Array(). Делается это следующим образом:new_array = new Array()
new_array5 = new Array(5)
colors = new Array("red", "white", "blue")
Размерность массива может изменяться. Можно сначала определить массив, а потом присвоить одному из его элементов значение. Как только это произойдет, изменится и размерность массива: colors = new Array() colors[5] = "red". В данном случае массив будет состоять из 6 элементов, так как первым элементом массива считается элемент с индексом 0.
Для массивов определены три метода: join, reverse, sort. Join объединяет элементы массива в строку символов, в качестве аргумента в этом методе задается разделитель:
colors = new Array("red", "white", "blue")
string = acolors.join(" + ")
В результате выполнения присваивания значения строке символов string мы получим следующую строку: string = "red + white + blue". Другой метод, reverse, изменяет порядок элементов массива на обратный, а метод sort отсортировывает их в лексикографическом порядке.
У массивов есть два свойства: length и prototype. Length определяет число элементов массива. Если нужно выполнить некоторую рутинную операцию над всеми элементами массива, то можно воспользоваться циклом типа:
color = new Array("red", "white", "blue")
n = 0 while(n != colors.length)
{... операторы тела цикла ...}
Свойство prototype позволяет добавить свойства к объектам массива. Однако чаще всего в программах на JavaScript используются встроенные массивы, в основном графические образы (Images) и гипертекстовые ссылки (Links).
Минимизация-максимизация окна и его удаление
Выполнение вычислений и работа с таблицами весьма популярны, но не стользначимы, как управление окнами браузера. Рассмотрим пример такого управления.
Идея состоит в том, чтобы средствами JavaScript реализовать "свертывание"
и "развертывание" окна браузера. Примеры
и демонстрируют связанные друг с другом HTML-страницы.
сворачивает окно. Для этой цели сначала
создается маленькое окно с иконкой, а потом текущее окно удаляется. На
самом деле в данном случае надежность работы этого скрипта будет зависеть
от алгоритма интерпретации и назначения текущего окна программой интерпретации.
В Netscape Navigator 2.0 текущим оставалось окно, в котором исполняется
скрипт, поэтому наша программа будет работать правильно. Маленькое окно
становится текущим только после удаления большого окна.
Максимизация окна показана на . Данный
фрагмент по алгоритму точно совпадает с предыдущим, но выполняет прямо противоположную
функцию - разворачивает (восстанавливает) свернутое окно. При этом маленькое
окно также удаляется. Собственно, первая страница - это файл iconize.htm,
а вторая - test_icon.htm.
Модели объектов
Отдельной интересной темой является об'ектно-ориентированный характерJavaScript. Если с Java более менее все понятно: есть декларация
об'ектов, наследование свойств об'ектов и т.п., то с JavaScript все
несколько иначе. Весь язык ориентирован на встроенные об'екты Netscape
Navigator: окна, формы, поля форм, элементы рабочих областей Navigator
и т.п. Это сильно облегчает обучение языку и позволяет сразу писать
интересные и полезные программы. Но вот с наследованием свойств
об'ектов и обменом данными между различными объектами, например двумя
окнами Navigator, дела обстоят из рук вон плохо. Эти возможности вообще
никак не реализованы. Правда есть намеки на то, что в будущем что-то
появится, типа подкласса parent класса window, но пока JavaScript
сейчас - это просто язык сценариев просмотра HTML страниц.
Правда надо сказать, из-за него Navigator стал довольно тяжелой
программой для персональных компьютеров. При организации HTML страниц
со встроенной графикой и JavaScript функциями открытия/закрытия окон и
проверкой ввода ресурсов 486 компьютера с 8Mb памяти и Windows 3.x
хватает едва-едва. Аналогичная ситуация происходит и при использовании
Windows NT c 16Mb оперативной памяти. Вообще говоря, пользоваться
JavaScript следует аккуратно, думая о потенциальных пользователях. Так
например размещение "бегущей" строки в status bar при переходе к другой
странице довольно сильно мешает пользователям, которые используют
медленные линии для подключения к сети, т.к. именно в этом поле
отображается статистика переданных байтов с сервера клиенту. К тому же
бегущая строка для пользователей Windows 3.x хороша только в том случае
если на ней не задерживаться. функция setTimeout, которая выполняет
отложенный вызов прокрутки текста, приводит к от'еданию ресурсов
системы, что может привести к зависанию машины, если оставить страницу
с бегущей рекламой на некоторое время. Из раз'яснений, полученных в
телеконференции comp.lang.javascript списка javascropt@oberon.org,
следовало, что отложенное выполнение порождает новый поток, если речь
идет о много потоковых операционных системах, а так как Windows 3.x
таковой не является, то функция реализуется путем рекурсии, что
приводит к "поеданию" ресурсов. Наиболее логичным выходом в этой
ситуации рекомендуется считать установку 32-разрядной ОС Windows`95 или
NT. Надо сказать, что переход на NT этой проблемы не снимает, т.к. сама
ОС требует гораздо больше ресурсов. Кроме того довольно часто и при
использовании HotJava, и при использовании Navigator под NT появляется
сообщение "protection violation", что приводит к аварийному завершению
программы (речь идет не о моих программах а о тех, которые я загружал
из Сети).
Сконцентрируем теперь внимание на том каково место Java-технологии в
рамках технологии World Wide Web, где, собственно, и прочат прорыв к
новым технологическим высотам. Рассмотрим схему взаимодействия программ
в рамках Web.
Как видно из этой схемы, при использовании обычных программ-интерфейсов
могут быть использованы только в качестве API-модулей сервера или CGI-скриптов, что не выделяет их из общего набора других программ этого типа.
Область применения Java расширяется только в случае применения Netscape Navigator или HotJava. Здесь уже возможно создать набор , которые будут выполняться при помощи этих программ на компьютере пользователя.
При использовании HotJava и Java Development Kit можно расширить возможности программы-интерфейса за счет разработки новых модулей.
Наследование кода скриптов различными страницами
Отсутствие какого-либо наследования между различными страницами Web-узла заставляло разработчиков перетаскивать из одной страницы в другую довольно большое количество часто используемых функций и переменных. Разговоры о том, что было бы неплохо получить доступ к глобальным ресурсам или возможность определять такие глобальные ресурсы, ведутся с самого момента появления JavaScript. К сожалению, стройного логичного механизма передачи параметров, функций и переменных от одного окна или фрейма к другому нет и в JavaScript1.1. Однако некоторые шаги в этом направлении сделаны.У контейнера SCRIPT появился атрибут SRC. Это дает возможность авторам строить своеобразную библиотеку функций, к которым можно обращаться из любой страницы, где будет ссылка на такую библиотеку. При этом вовсе необязательно размещать саму библиотеку на том же сервере, где находятся и гипертекстовые страницы узла. Можно использовать и чужие функции, написанные кем-либо из ветеранов программирования на JavaScript в любой точке земного шара. В атрибуте SRC применяется обычный URL.
Внутри файла скриптов не используются теги SCRIPT. Это обычный файл с использованием определений функций и переменных. Естественно, что применение чужих скриптов может обернуться не только полезными приобретениями, но и непредсказуемыми проблемами.
Для обычных пользователей страниц узла подкачка большого количества скриптов может стать просто дополнительным источником затрат. Скорее всего, понадобится пара функций из библиотеки на одной странице, а качать придется всю библиотеку.
Другой новой возможностью работы с функциями стало введение объекта Function. Объект Function порождается конструктором Function:
new_Function = new Function(arg1,arg2,...,argn, function_body)
Главное отличие от обычного декларирования функции заключается в том, что в данном случае порождена переменная new_Function, с которой можно работать, как с любым другим объектом. При обычном переопределении функции такой переменной не порождается.
Как любой объект, Function имеет свои свойства, но не имеет методов. В качестве свойств функции выступают аргументы и возможность назначения новых свойств через prototype.
В заключение разговора о функциях и наследовании хочется еще раз обратить внимание на свойство opener окон и фреймов. Его можно использовать при обращении к объектам страницы-родителя, что позволяет компенсировать отсутствие наследования и глобальных переменных в JavaScript.
Немного истории
Название статьи спровоцировала история появления Java, которую авторпрочитал в материалах, любезно подготовленных Sun для выставки
Unix-Expo`96. Согласно этой истории технология Java(Кофе) родилась из
проекта Oak (Дуб), основной целью которого была разработка
об'ектно-ориентированных средств описания и коммуникации различного
рода электронных устройств. Из-за неудачи этого проекта 1994 году опыт,
накопленный в рамках его реализации, было решено применить к продуктам
ориентированным на применение в Internet. В апреле 1995 года по сети
свободно распространяется HotJava - интерфейс просмотра страниц
World Wide Web для платформ Sun. Буквально через месяц Netscape
Communication - законодатель моды в разработке программ-интерфейсов
Internet, покупает лицензию на Java. В настоящее время HotJava
реализована не только для SunOS и Solaris, но и для многих других
Unix-платформ и Windows NT. Кроме HotJava мобильный код Java может
интерпретироваться и второй версией программы Netscape Navigator для
всех систем кроме Windows 3.x. Вот коротко история Java-технологии,
если опустить список фирм, купивших лицензию на Java, и даты
приобретения этих лицензий. Теперь рассмотрим на фоне каких событий
разворачивается внедрение новой технологии.
Главным событием 1995 года стал бурный рост применения глобальной сети
Internet для бизнеса в самых различных его проявлениях. Этот бум вызван
во-первых, наличием хороших сетевых интерфейсных программ, первое место
среди которых занимает Netscape Navigator, и, во-вторых наличием хорошо
развитой системы телекоммуникаций, главным образом в США, которая
обеспечивает доступ в Internet большого количества потенциальных
потребителей информации и услуг. Но Internet имеет несколько слабых
мест, которые тормозят его применение в серьезных коммерческих
приложениях. Во-первых, это безопасность. Сама технология TCP/IP не
имеет встроенных механизмов обеспечения безопасности, и следовательно
для организации виртуальных защищенных сетей на основе Internet
необходимо применять дополнительный программные средства. Во-вторых,
это целый букет проблем связанных с технологией World Wide Web, которые
характеризуются отсутствием возможности организации виртуального канала
связи, что характерно при работе с базами данных, для удаленных и
распределенных вычислений, отсутствием поддержки мультимедиа, что
необходимо для рекламной деятельности в Сети и ряда других приложений,
большой нагрузкой на сеть при реализации интерактивных приложений при
доступе к ресурсу по принципу "каждый с каждым". Именно на решение
некоторых из этих задач и ориентирована Java-технология.
О взаимоотношениях WWW и СУБД
Сергей КузнецовПоявление Всемирной Сети Сетей Internet открыло новую эпоху в истории человечества. Сегодня никто в этом мире не должен чувствовать себя одиноким. Каждый человек соединен со всеми остальными, каждый с каждым и каждый со всеми. Каждый человек имеет доступ (по крайней мере, потенциальный) ко всей открытой информации. Только ленивые (или совсем бедные) люди могут жаловаться на недостаток информации. Большинство людей страдает от ее избытка.
Однако в мире существует масса информационных источников, владельцы которых готовы предоставить их в пользование человечества, но не могут этого сделать по причинам недостатков технологии Internet (а иногда просто потому, что незнакомы с имеющимися технологиями). Прежде всего это относится к научным базам данных.
На сегодняшний день основным способом распространения научных баз данных является их тиражирование на магнитных или оптических (CD-ROM) носителях. Конечно, это вполне разумный подход, но он ограничивает возможности быстрого доступа заинтересованных специалистов к изменениям в информации. (Говоря другими словами, это режим "off-line".)
Имеется множество баз данных, подключенных к Internet в режиме свободного доступа. Конечно, этими базами данных можно пользоваться. Но основная проблема состоит в том, что интерфейсы доступа к разным базам данных абсолютно различаются, так же, как и способы подключения баз данных к Internet. Имеются трудности как у тех, кто хочет пользоваться базами данных, так и у тех, кто хотел бы передать свою информацию в использование в режиме "on-line".
Наиболее популярным средством доступа к информации в Internet сегодня является служба "Всемирной Паутины" (World Wide Web). Как известно, в ее основе лежит идея распределенной гипермедийной информации. Явная навигация в Web позволяет добраться до самых разнообразных информационных серверов, содержащих специально подготовленную информацию (с использованием языка HTML). Конечно, хотелось бы, чтобы путешествуя в WWW, человек имел бы возможность добраться и до баз данных.
Однако общепринятая технология доступа к базам данных через Web отсутствует. Более того, часто кажется, что эта проблема не слишком заботит производителей программного обеспечения СУБД и Internet. Их больше занимает задача распространения в Internet мультимедийной информации (что действительно важно), чем обеспечение через службу Web доступа к обычным базам данных (а иногда и не очень обычным; приведем в качестве примера химические базы данных с графическими изображениями структурных формул).
Так что же мы имеем? Желание потребителей информации получить к ней доступ, стремление поставщиков информации обеспечить ее и отсутствие стимула в Internet для предоставления соответствующих возможностей. Но это не совсем так.
В Web имеется одна возможность, которую, в принципе, можно использовать для доступа к базам данных. Это формы. При навигации по страницам Web можно наткнуться на пометки, при остановке на которых вы получаете не готовую информацию, а некоторую форму, необходимую заполнить. Форма, заполненная в клиентской части системы, поступает на обработку соответствующей программе-переходнику(программному сценарию), связанной с данной форме в серверном узле Web.
С другой стороны, именно формы являются наиболее близким пользователям интерфейсом для непосредственного доступа к базам данных. Если посмотреть на излюбленные виды интерфейсов конечных пользователей баз данных, то можно увидеть, что сегодня 90% таких интерфейсов основывается на использовании форм. Формы разрабатываются на специализированных языках описания форм или с использованием интегрированных языков четвертого поколения. Применяются и средства автоматизированного построения (простых) форм на основе соответствующей схемы базы данных (например, для каждой таблицы реляционной базы данных может быть создана форма, заголовок которой совпадает с заголовком таблицы, а ширина полей определяется типами данных столбцов).
Этот простой подход, который не требует привлечения современных технологий Internet, ориентированных на обеспечение доступа к мультимедийной информации, может оказаться вполне достаточным для решения удобного доступа к традиционным реляционным научным базам данных. Если ограничиться SQL-ориентированнымибазами данных, то вполне можно представить себе несложный инструментальный пакет, который облегчает создание программ-переходников, связанных, с одной стороны, с формами, управляемыми сервером Web, а с другой стороны, обеспечивающих стыковку с СУБД. Возможно, такие средства не удовлетворят потребности бизнеса, но будут явно полезны в мире науки.
Сергей Кузнецов . главный редактор журнала "Открытые Системы".С ним можно связаться через Internet по адресу: .
Основы подхода к программированию на JavaScript
Идея JavaScript очень проста. Все операции, которые можно исполнятьв программе на JavaScript, описывают действия над хорошо известными и понятными
объектами, которыми являются элементы рабочей области программы Netscape
Navigator и контейнеры языка HTML. Собственно объектная ориентированность
JavaScript на этом и кончается. Никаких классов объектов, а тем более,
наследования в JavaScript нет. Есть только объекты с набором свойств и
набор функций над объектами, которые называются методами. Кроме методов
существуют и другие функции, больше похожие на функции из традиционных
языков программирования, которые позволяют работать со стандартными математическими
типами или управлять процессом выполнения программы. Еще в JavaScript есть
события - аналог программных прерываний. Эти события также ориентированы
на работу в World Wide Web, например загрузка страницы в рабочую область
Navigator или выбор гипертекстовой ссылки. Используя события, автор гипертекстовой
страницы и программы, ее отображающей, может организовать просмотр динамических
объектов, например бегущей строки, или управление многооконным интерфейсом.
Для встраивания скриптов в тело HTML-документа используется контейнер
SCRIPT. Не все браузеры способны распознавать и исполнять скрипты, поэтому
само тело скрипта помещается в контейнер комментария. Рассмотрим .
В этом примере в заголовок документа (контейнер HEAD) включен
контейнер SCRIPT. До недавнего времени атрибут LANGUAGE в
этом контейнере не являлся обязательным. Но с момента выхода VBSCRIPT появился
смысл в указании типа языка - Navigator не понимает скриптов на других
языках. Отсутствие атрибута может привести к ошибкам при отображении гипертекстовых
страниц.
Далее, в тексте страницы определен комментарий, в который включен текст
скрипта. Начинается комментарий со строки:
И кончается строкой:
// The end of JavaScript Functions Definition ->
Внутри контейнера SCRIPT определены две функции пользователя: help_win()
и main_menu(). Смысл этих функций достаточно прозрачен. Help_win()
предназначена для организации контекстно зависимого help, а main_menu()
осуществляет допуск пользователя к главному меню Website. Обе функции используют
один и тот же метод open (встроенную в JavaScript функцию, которая
определена над объектом window) для того, чтобы открыть новое окно Netscape
Navigator и загрузить в него гипертекстовые документы. При этом функция
main_menu порождает стандартное окно (с кнопочками, иконками и т.п.), а
функция help_win() - окно без стандартных атрибутов. У этого окна имеются
только линейки прокрутки (scroll bars).
Вызов функций осуществляется после нажатия на соответствующие кнопки,
которые определены в HTML-форме help_call. Таким образом, функции
будут выполняться только в том случае, если произойдет событие, описанное
атрибутом onClick в контейнере INPUT соответствующего поля
формы.
Если быть более точным, то приведенный пример - это фрагмент, реализующий
регистрацию пользователя. К моменту его выполнения окно главного меню уже
открыто, поэтому при выборе кнопки NEXT окно не создается, а текст загружается
в уже открытое окно.
Передача данных
Когда связь установлена, с помощью различных функций может начатьсяпроцесс передачи данных. При наличии связи, пользователь может посылать и
получать сообщения с помощью функций read и write:
write(s, buf, sizeof(buf));
read(s, buf, sizeof(buf));
Вызовы send и recv практически идентичны read и write, за исключением
того, что добавляется аргумент флагов.
send(s, buf, sizeof(buf), flags);
recv(s, buf, sizeof(buf), flags);
Могут быть указаны один или более флагов с помощью ненулевых значений,
таких, как следующие:
любые присутствующие данные возвращаются пользователю, но сами данные
остаются как "непрочитанные". Следующий read или recv вызванный на
данном сокете вернет прочитанные в прошлый раз данные.
(Используется только процессами, управляющими таблицами маршрутизации.)
The JavaScript Functions Definition function
Author: Pavel Khramtsov
Date: March 5, 1996
->
![]() | ISTC. Project RADLEG(#245)RRC "Kurchatov Institute" Dec, 25, 1995 |
|---|
Registration Form
......
Текст страницы
.....
the initial values of IX,
Date: February 23, 1996
URL: http://144.206.192.100/radleg/ mo_input.htm
->
счета.
Математический тест
Use this code for whatever
(C) 1996 Dmitry Altukhov, ady@demos.su ->
Use this code for whatever purposes... provided that you retain the copyright notice.
I accept no responsibility for any disasters caused by this monster.
Cannot guess any other cool places for scrollers. And MSIE marquee emulation in JS?!
Er... Mozilla clears windows too slow in JS...
->
VLINK="#400080" ALINK="#FF0000" onLoad="roll()">
.....
Date: February 25, 1996 ->
Text Block Scrolling.
This is the start
This is the start point:
This the document start point.
kukuku
May 16,
Date: May 16, 1996
->
