Тайны и секреты компьютера

         

Ну, и под конец - еще один небольшой секрет


Многим пользователям он известен, но тем, кто о нем не знает, эта информация принесет огромную пользу.

Если вы сложно форматировали какой-либо текст, назначили ему шрифт, выравнивание, отступы, межстрочные расстояния, а потом хотите так же отформатировать еще один - не лезьте сразу в диалоговые окна или настройку стилей. На панели Word "Стандартная" есть кнопка с желтой кисточкой (рис.27.9), которая называется "Формат по образцу".

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

*         *         *

Данный текст - глава из книги "Тайны и секреты компьютера (второе издание)", недавно вышедшей в издательстве "Горячая линия - Телеком". Эта книга предназначена для тех, кто самостоятельно осваивает мир информационных технологий. Программирование в среде Microsoft Office, устройство сетей Internet и Fidonet, работа системы электронной почты, структура системного реестра Windows и файловой системы, строение жидкокристаллических дисплеев и проблема наличия различных кодировок русского языка, - про все это рассказывается в ней. Многообразие тем и легкий стиль изложения сделают ее вашим спутником на долгое время, и вы всегда сможете найти в ней нужную именно в данный момент информацию. Если Вы интересуетесь компьютерными технологиями, желали бы расширить свои знания и умения в этой области, то она Вам наверняка понравится. На сайте http://comptain.nm.ru, посвященном этой книге, вы можете ознакомиться с ее оглавлением и аннотацией, прочитать некоторые главы, купить в Интернет-магазине.



О ценности информации


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

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

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


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

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

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


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

Поэтому развитие технологии, появление компьютерных систем и глобальных информационных сетей требует создания новой системы межчеловеческих взаимоотношений. Только отказ от принципа "продажи" информации, только связанное с этим изменение мировоззрения людей позволят максимально использовать открывшиеся новые возможности. Только восприятие денег, выплачиваемых за информацию, как вознаграждение ее автору за его тяжелый труд, а не как стоимость этой информации, только отказ от принципов "охраны интеллектуальной собственности" (но не авторского права!)[1] даст возможность человечеству приумножить свое совокупное богатство во много раз практически без затрат труда и ресурсов.

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

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




О старых BIOS и о больших дисках


Представим себе следующую ситуацию.

Наконец наступил долгожданный день, и компьютер, который у вас уже три года, дождался обновления. Пошли вы на рынок, купили новый большой винчестер. Ставите его в компьютер… и - что это, BIOS его не определяет! Ладно, вручную ставим параметры… но второй диск, новый, большой, свежекупленный, не виден из MS-DOS! Причем FDisk его распознает. Неужели вам продали некачественную вещь?

Несете его к другу, подключаете… Все видно, все форматируется. Ставите себе снова. Из MS-DOS не виден, из Windows виден. Весь.

Итак, диск исправен. Но в чем же причина таких чудес?

В устаревшем BIOS. Старые версии BIOS (выпущенные до 1999 г.) не позволяют работать с винчестерами емкостью больше 8 гигабайт, - о причинах этого рассказано выше. Системы же семейства Windows используют свои программы-драйвера для работы с винчестерами, поэтому ограничение в 8 гигабайт на них не распространяется. Однако сначала они должны загрузиться, а при загрузке волей-неволей приходится использовать средства BIOS для работы с винчестером. А это-то невозможно…

Иногда диски большой емкости на машинах со старым BIOS'ом все же видны, но работать из через BIOS можно только с их первыми 8-ю гигабайтами (именно с такими ситуациями были связаны случаи отказа загрузки WindowsNT, размещенной на логическом диске емкостью больше 8 гигабайт, после очередного обновления системных файлов - они оказывались за пределами восьмигигабайтной зоны и загрузчик NT, работающий с диском через BIOS, не мог тогда их прочитать).

Пути решения описанной проблемы, помимо приобретения новой материнской платы с более совершенным BIOS'ом (а это все платы для Pentium II, III, IV, Celeron, Duron, Athlon, а также платы для Pentium I на чипсетах Ali Aladdin, Via MVP3 и Via MVP4), могут быть такие.

1. Использовать специальные программы работы с большими дисками на компьютерах о старым BIOS'ом. Например, "Ontrack Disk Manager" - она записывает в загрузочную область диска особую программу, подменяющую функции BIOS.
В большинстве случаев вы можете найти подобную программу на сайте производителя винчестера (иногда она называется "EZDrive" или как-то еще). Существует универсальный вариант этой программы, по идее подходящий для всех моделей жестких дисков - поищите его на сайте фирмы Ontrack: http://www.ontrack.com.

2. Установить в компьютер (на первый канал IDE как Master) жесткий диск размером до 8 гигабайт и установить на него операционную систему Windows (или Linux). После этого большие диски, устанавливаемые в компьютер дополнительно, будут доступны именно из среды этой операционной системы, так как современные операционные системы используют для работы с жесткими дисками свои программы-драйвера. Из MS-DOS установленные большие диски видны не будут.

3. Перепрошить BIOS материнской платы. О том, как это сделать и какие "подводные камни" могут встретиться на этом пути, рассказано в 25-й главе этой книги. Стоит лишь добавить, что на сайте производителя платы в этом случае следует искать прошивку, в перечне нововведений в которой указано что-то вроде " Support INT13 Extensions".

К сожалению, ваши старания могут и не увенчаться успехом - если ваша материнская плата очень старая и сам контроллер жестких дисков не поддерживает большие их обьемы. Если даже использование дополнительного небольшого жесткого диска с Windows не позволит получить доступ к установленному вместе с ним большому (т.е. обьемом больше 8 гигабайт), то единственный выход - замена материнской платы.

Иногда встречаются и другие ограничения на обьем диска, связанные с особенностями BIOS конкретной модели материнской платы, - например, некоторые старые материнские платы производства Asus (и некоторых других производителей) могут работать лишь с первыми 32 гигабайтами обьема диска. Пути обхода подобных ограничений такие же, как указаны выше - перепрошивка BIOS, программа EZDrive, дополнительный жесткий диск.


Об удалении файлов и восстановлении данных


Когда выполняется команда удаления файлов с жесткого диска (в Windows это происходит при очистке "Корзины", так как при простом удалении файлов с помощью команды "Удалить" или кнопки Delete файлы перемещаются в "Корзину", а не удаляются), то сама информация, находящаяся в ячейках жесткого диска, не уничтожается. Выполняется лишь пометка в FAT кластеров, ранее занимаемых этим файлом, как свободных, а в файле каталога, в котором этот файл находился, первый символ имени заменяется на знак "!". Так как длинные имена файлов хранятся в файле каталога отдельно от настоящих имен, то они в этом случае сохраняются.

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

Если файл занимал больше одного кластера, то наверняка восстановить можно лишь содержимое первого кластера. Информация о том, в каких кластерах располагалось остальное содержимое файла, утрачивается полностью, так как из FAT информация об удаленном файле стирается.

Рис.8.10. Результат работы Norton UnEraze.

Поэтому программы восстановления удаленных файлов (к примеру, Norton UnErase Wizard) просто обьединяют в одном файле определенное число последовательных свободных кластеров (соответствующее записанному в файле каталога размеру удаленного файла) и именуют результат названием удаленного файла. Пример того, что получается - на рис.8.10. Этот текстовый файл snakecor.txt размером в 40 килобайт был удален, а потом восстановлен с помощью Notron UnErase Wizard, который нашел в файле каталога, где snakecor.txt находился, его имя с знаком "!" впереди, узнал оттуда размер файла и номер первого кластера, занимаемого файлом, а потом обьединил содержимое этого и следующего свободного кластера. Но, увы, программе и пользователю не повезло - изначально файл snakecor.txt был фрагментирован и в восстановленный файл попал фрагмент другого ранее удаленного файла, а не тот, который был нужен.



Обмен ссылками


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

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



Общий модуль


HKEY_USERS - второй "реальный" раздел реестра. Он состоит из одного или двух больших подразделов. В любом случае один из них называется .Default и является разделом HKEY_CURRENT_USER для конфигурации пользователя Windows по умолчанию (если в Windows зарегистрировано несколько пользователей, то ее можно загрузить, нажав Esc при запросе пароля на входе в Windows). Если в Windows зарегистрирован один пользователь, то раздел .Default будет единственным и совпадать с HKEY_CURRENT_USER, а если нет, то в HKEY_USERS будет еще один раздел, чье имя будет совпадать с именем текущего пользователя, и именно этот раздел будет отражен в реестре еще раз под именем HKEY_CURRENT_USER.

В системном реестре Windows 2000/XP раздел HKEY_USERS тоже присутствует и выполняет ту же функцию - хранит в себе варианты раздела HKEY_CURRENT_USER для каждого из пользователей, зарегистрированных в операционной системе.



Обзор системного реестра


Рис.14.2. Сюда поступает информа-ция из раздела HKEY_CLASSES_ROOT

">Все записи в реестре подразделяются на три типа. Это разделы - некое подобие папок "Проводника": они могут содержать в себе другие разделы и параметры. Это параметры - то, что может содержаться в разделе. Они могут быть трех типов: строковые - обычная текстовая строка, двоичные - число в двоичной системе счисления[35], и типа Dword - число в десятичной или шестнадцатиричной системе (вводить можно в любой - во вторую систему число преобразуется автоматически). Ну, и у параметра может быть (а может и не быть) значение

- только того типа, какой допускает параметр.

Если посмотреть в левое окно Редактора реестра, то может показаться, что системный реестр компьютера состоит из шести подразделов. Однако это не совсем так. Дело в том, что Редактор реестра интерпретирует содержимое реестра так, чтобы его было удобно смотреть и редактировать. В связи с этим некоторые разделы системного реестра в Редакторе дублируются.

На самом деле реестр состоит всего из двух разделов - HKEY_LOCAL_MACHINE (содержится в файле System.dat) и HKEY_USERS (содержится в загруженных файлах User.dat). И именно их вы увидите, если экспортируете весь реестр в текстовый файл и его просмотрите. Так как сам реестр содержит в себе лишь два раздела, а его разложение на шесть производится исключительно в редакторе реестра (как бы "виртуальное представление" для удобства работы) то все изменения, сделанные в одном из дублированных разделов, автоматически будут сделаны и в другом - не из-за действий редактора реестра по синхронизации, а из-за того, что и тот, и другой - один и тот же раздел, просто два раза отображенный.

Но - все по порядку.



Операторы цикла и перехода


Если необходимо повторить ту или иную группу операций несколько раз, то используются операторы цикла: Do...Loop, For...Next, For Each...Next и While…Wend.

Если необходимо совершить те или иные действия в зависимости от наличия или отсутствия выполнения какого-либо условия или в зависимости от значения той или иной переменной, используются операторы условия: If...Then...Else и Select Case.

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

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



Определения


Web-программирование - разработка любых программных продуктов, предназначенных для работы на сайтах World Wide Web. Строго говоря, даже разработка web-страниц на чистом HTML является web-программированием, ведь при просмотре страницы браузер фактически исполняет код HTML, форматируя текст согласно инструкциям этого языка. В настоящее время под web-программированием понимают создание CGI-приложений и использование на web-странице технологий JavaScript и VBScript для достижений сложных эффектов.

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

CGI (сокращение от Common Gateway Interface) - технология, позволяющая запускать на web-сервере программы, могущие получать данные от посетителей сайтов, поддерживаемых этим web-сервером, и в свою очередь выдавать им обработанные данные в виде web-страниц или других файлов. Для использования технологии CGI программа-web-сервер должна удовлетворять определенным критериям - "поддерживать CGI". Если программа, запускаемая на web-сервере, представлена не двоичным кодом (т.е. скомпилированным файлом), а текстовым, то для ее выполнения требуется программа-интерпретатор того языка, на котором написана эта программа. Такой интерпретатор включается в состав web-сервера и вызывается им при необходимости заняться выполнением программного кода.

CGI-сценарий (CGI-скрипт) - программа (в текстовом виде), предназначенная для исполнения на web-сервере. Для создания CGI-скриптов можно использовать любой язык программирования - важно лишь, чтобы на том web-сервере, где предполагается эту программу запускать, имелся интерпретатор этого языка. В настоящее время наиболее частоиспользумыми языками CGI-программирования являются PHP, Perl, C++.



Основы языка


Синтаксис PHP прост. Программы на PHP встраиваются в текст web-страницы так же, как и сценарии на JavaScript, VBScript, - окаймляясь угловыми скобками с указанием языка: <?php ... текст программы ... >. Команды PHP обязательно разделяются символом точки с запятой - ";" (символы конца абзаца или конца строки не учитывается никак), после последней в программе команды его можно не ставить. Также символ ";" не ставится после условных операторов и операторов цикла.

Пример программы на PHP вы можете увидеть на рис.19.1.

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

Чтобы PHP мог отличать переменные от строк или команд, ее имя должно начинаться со знака доллара - "$" и не должно содержать пробелов или знаков апострофа и некоторых других. При анализе программного кода интерпретатор PHP считает именем переменной все, что содержится между $ и ближайшим к нему символом, недопустимым в имени переменной.

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

Помните, что для включения переменной в строку текста нельзя использовать символ "+" - он пригоден лишь для числовых выражений.
Достаточно просто поместить переменную туда, где она должна стоять - например, в итоге выполнения кода $a="птица певчая"; $b="Дятел - $a" переменной $b будет присвоено значение "дятел - птица певчая".

Довольно часто используются сокращенные обозначения арифметических действий над переменными и действий по присваиванию им каких-либо значений. Например, команда $a++ означает, что переменную $a надо увеличить на единицу, а команда $a+=3 - увеличить на 3, что и будет сделано, если она имеет числовой формат.

Ниже будут перечислены некоторые основные команды PHP, которых вполне хватит для реализации несложных проектов. Для более полного ознакомления с командами PHP можно изучить Руководство по этому языку, доступное, например, с адреса http://php.spb.ru или другие публикации.

·       include "имя файла" - команда для включения содержимого одного файла в другой. Содержимое того файла, имя которого указывается в команде, целиком и полностью вставляется на то место, где располагается эта функция, при этом все коды PHP, содержащиеся во вставляемом файле, исполняются так же, как если бы они были на месте этой функции. Пример можно увидеть на рис.   .

·       mail ("Кому", "Тема", "Текст сообщения", "Дополнительные заголовки") - отправка почтового сообщения. При выполнении данной команды на сервере формируется электронное письмо в соответствии с указанными параметрами и отправляется с помощью серверной почтовой программы. В качестве параметра "Кому" может выступать набор адресов, разделенных запятыми. "Дополнительные заголовки" могут быть совершенно любые, разделяться они должны комбинацией символов /n, которая в PHP означает перевод строки. Пример использования функции mail вы можете увидеть ниже, в описании устройства электронного магазина. (Если среди "Дополнительных заголовков" не указано поле From, то оно заполняется по умолчанию, например, именем "Unprivileged User".)



·       echo "текст" ­- вывод на web-страницу какого- либо текста. Чтобы вывести на web-страницу значение какой-либо переменной, достаточно просто написать ее имя внутри выводимой строки: команда echo "это цифра $a" выведет в web-страницу текст "это цифра 1", если ранее переменной $a присваивалось значение единицы.

·       if (условие) {…команды, которые должны выполняться, если условие верно…;} else {…команды, которые должны выполняться, если условие неверно…} - команда, позволяющая выполнить то или иное действие в зависимости от верности или неверности того или иного условия. В фигурных скобках может располагаться несколько команд, разделенных точкой с запятой. В качестве условия может быть оператор сравнения "равно" - "==" (именно два знака равенства!), "больше" - ">", "меньше" - "<" и их комбинации - скажем, "<=" - "меньше или равно". Можно использовать и несколько условий, взяв каждое из них, а также все вместе в скобки и разделяя знаками "&&" - "и" или "||" - "или".

Для того, чтобы выполнять различные команды в зависимости от условия, могущего принимать три или больше значений, следует использовать оператор switch (описание смотрите в руководстве), - аналог оператора case в VBA и некоторых других языках.

·       for (начальное значение счетчика, условие продолжения цикла, изменение счетчика на каждом цикле) {...команды...;} - цикл, то есть повторение указанных в нем команд столько раз, сколько позволет условие изменения счетчика (т.е. переменной, специально выделенной для подсчета числа выполнений команд цикла). К примеру цикл for ($i = 1; $i <= 10; $i++) {echo $i;} выводит в web-страницу числа с 1 до 10, так как в нем изначально устанавливается значение счетчика в 1 - $i=1, каждый цикл его значение увеличивается на 1 - $i++, а продолжаться он будет до тех пор, пока значение счетчика не превысит 10 (т.е.


пока $i<=10).

Также в PHP можно использовать циклы без открытого обьявления числа повторений - while (условие) {...команды...;} и do {...команды...} while (условие);. Описание их смотрите в руководстве по PHP, отличаются же они тем, что второй цикл (do…while) будет в любом случае выполнен не менее одного раза.

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

<?php if ($a==1) { ?><p>Переменная а равна 1</p><?php }?>

эквивалентен коду

<?php if ($a==1) {echo "<p> Переменная а равна 1</p>";} ?>,

однако первый вариант меньше нагружает процессор компьютера, на котором расположен интерпретатор PHP.

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



Рис.19.1. Пример PHP-кода. Посмотрите внимательно на код (окна слева) и итог его выполнения (окно браузера справа). Обратите внимание, что переменная a, которой присвоено значение еще в первом программном блоке левой страницы, сохранила его не только в других ее блоках, но и в программе, расположенной во включаемой с помощью команды include страницы.

Однако помните, что если вы создаете функцию на PHP (попросту вставляя в программу инструкцию Function имя () {...команды функции...} с целью потом ее вызывать командой имя), то переменные, обьявленные в ней, по умолчанию имеют установленное значение только внутри функции.


Кроме того, также по умолчанию переменные, обьявленные вне функции, в ней самой никакого значения не имеют. Подробнее о функциях и о переменных в них читайте в руководстве по PHP, например, с того же сайта http://php.spb.ru.

Обычно web-сервер настраивается так, что на предмет наличия программ на PHP просматриваются файлы, имеющие расширение .php, .phtml, остальные же файлы передаются в браузер пользователя без поиска в них команд PHP. Делается так для более быстрой работы сервера, а также для обеспечения возможности установки на сервере разных интерпретаторов (например, SSI - Server Side Includes, в технологии, в какой-то мере предшествовавшей PHP), так как тогда каждому из интерпретаторов назначаются свои расширения для обработки соответствующих файлов.

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


Основы языка Visual Basic for Applications


Антон Орлов, http://antorlov.chat.ru

Для полного описания возможностей VBA потребовалось бы несколько толстых книг. Поэтому я не буду описывать все команды VBA, рассказывать об их формате и требуемых параметрах - про это очень подробно рассказано в справке, да и средства подсказки тоже не дадут ошибиться. Если необходимо узнать, какая команда позволяет программно реализовать ту или иную возможность Word, то можно воспользоваться средством записи макросов, а потом почитать в справке о каждой записанной команде.

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



Основы программирования для Office


Антон Орлов, http://antorlov.chat.ru

Первая часть книги посвящена весьма интересной теме - созданию программ, работающих в среде текстового редактора Microsoft Word. Нет нужды говорить о его популярности в нашей стране, однако, к сожалению, немногие пользователи знают и применяют в своей деятельности возможности встроенного в Microsoft Office языка программирования Visual Basic for Applications, сокращенно именуемом VBA. А ведь с его помощью можно научить программы из пакета Microsoft Office выполнять практически все, что только может потребоваться пользователю. Более того, VBA - вполне полнофункциональный язык программирования, с помощью которого можно создавать законченные и работоспособные программы, как облегчающие работу с компонентами Microsoft Office, так и предназначенные для проведения расчетов, обработки данных.

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

Для написания программ на VBA вам не потребуются многостраничные руководства. Лучше всего даже, чтобы они появились у Вас тогда, когда Вы освоите по меньшей мере треть или даже половину возможностей этого языка, и тогда они будут прочитаны Вами как захватывающий детектив, а не как занудные учебники. Более того, тогда оставшиеся две трети информации о возможностях VBA будут усвоены вами гораздо быстрее и легче. Кроме того, создавая программы на этом языке, Вы получите прекрасную возможность смоделировать в данном процесе способы подхода к этому миру со стороны исследователя, экспериментатора, ученого, научиться принципам научного подхода к исследованию различных явлений или вспомнить их. И необьятный простор открывает такая, казалось бы, обыкновенная вещь, как Microsoft Office и его средства разработки программ для обучения и воспитания подрастающего поколения, - программирование в среде этого пакета программ является превосходным средством для выработки у учеников самостоятельности в исследованиях, способности сопоставлять различные факты и анализировать информацию, - всего того, что нужно разумному человеку или даже будущему ученому.


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

Программы на VBA - макросы - можно создавать для любой программы пакета Microsoft Office - для Word, Excel, Access, PowerPoint и даже Outlook. В этой книге будет рассмотрен процесс создания макросов для Microsoft Word, так как, во-первых, с этой программой приходится работать практически любому пользователю персонального компьютера, а, во-вторых, для Word создавать их несколько легче и проще, чем для других компонентов Microsoft Office. Научившись работать с VBA в Word, вам будет довольно просто перейти к программированию для остальных компонентов Office.

Не обязательно читать все главы подряд. В первой и второй главах будут описаны основные компоненты Word, предназначенные для написания программ и рассказано о работе с ними. Они скорее представляют собой небольшой справочник, полезный на первых порах, к которому иногда стоит возвращаться. Следующие три главы посвящены написанию программ на VBA, в них подробно описаны все шаги такой работы. Ну и в предпоследней главе первой части вы найдете краткий обзор некоторых интересных программ на VBA, которые можно использовать для обучения в качестве примеров.

Предполагается, что читатели знакомы с программой Microsoft Word и знают основные приемы работы в этом текстовом процессоре.


Открытый и закрытый коды


Наверняка все слышали такие фразы: "Шифрование с открытым ключом", "Шифрование с закрытым ключом", "Публичный ключ". О том, что они означают, можно писать большие книги, однако стоит вкратце описать ситуацию для полноты изложения. 

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

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

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

Именно на таком принципе работает механизм шифрования PGP.



Отличия новых версий Office


Отличия VBA в новых версиях Office в основном заключаются в добавлении новых функций, процедур и объектов. Однако есть некоторые тонкости.

Рис.5.5. Если в OfficeXP вы хотите копировать и удалять файлы с помощью VBA – выключите здесь “Службу индексирования”.

">В Office2000 изменилась система защиты от вирусов в макросах. Так, в Word2000 для того, чтобы иметь возможность запускать макросы, необходимо, чтобы в диалоговом окне "Сервис - Макросы - Безопасность" был установлен "Средний" или "Низкий" уровень защиты от макросов (лучше "Средний" - тогда при открытии документов с макросами пользователю будет выдан запрос о необходимости разрешения исполнения макросов). Также в Word2000 для того, чтобы пользователь имел возможность запускать макросы из шаблонов, установленных в папку автозагружаемых файлов Word, необходимо на вкладке "Надежные источники" диалогового окна "Сервис - Макросы - Безопасность" установить отметку в пункте "Доверять всем установленным надстройкам и шаблонам". Обо всем этом следует упомянуть в документации к разрабатываемой вами программе.

То же самое верно и для Office XP, однако отличия есть и здесь. Во-первых, по умолчанию компоненты Office XP, отвечающие за запуск макросов, на жесткий диск не ставятся – таким образом, похоже, Microsoft пытается защитить наиболее неразумных пользователей от макровирусов. По большому счету, подобные ее действия обычно приносят больше вреда, чем пользы, для авторов же программ на VBA из этого следует, что в справочных файлах к своим программам им следует упоминать о необходимости доустановки компонентов Office перед началом использования макросов. Во-вторых, для того, чтобы иметь возможность программно копировать модули и формы макросы между документами и шаблонами, необходимо, чтобы  в диалоговом окне "Сервис - Макросы - Безопасность", на вкладке "Надежные источники" имелась отметка в пункте “Доверять доступ к Visual Basic Project”.
Об этом тоже следует упомянуть в справке к программе.

В OfficeXP скопировать файл из одной папки в другую или удалить его посредством программного кода можно только при отключенной Службе индексирования (cсылка “Параметры поиска” на панели “Обычный поиск", рис.5.5). К сожалению, по умолчанию эта Служба включена, а программно ее отключить невозможно. Поэтому, несмотря на декларируемую полную "совместимость сверху вниз" версий Office, автору программ на VBA настоятельно рекомендуется тестировать свои программы во всех версиях Office и отлаживать их при необходимости.

*         *         *

Данный текст - глава из книги "Тайны и секреты компьютера (второе издание)", недавно вышедшей в издательстве "Горячая линия - Телеком". Эта книга предназначена для тех, кто самостоятельно осваивает мир информационных технологий. Программирование в среде Microsoft Office, устройство сетей Internet и Fidonet, работа системы электронной почты, структура системного реестра Windows и файловой системы, строение жидкокристаллических дисплеев и проблема наличия различных кодировок русского языка, - про все это рассказывается в ней. Многообразие тем и легкий стиль изложения сделают ее вашим спутником на долгое время, и вы всегда сможете найти в ней нужную именно в данный момент информацию. Если Вы интересуетесь компьютерными технологиями, желали бы расширить свои знания и умения в этой области, то она Вам наверняка понравится. На сайте http://comptain.nm.ru, посвященном этой книге, вы можете ознакомиться с ее оглавлением и аннотацией, прочитать некоторые главы, купить в Интернет-магазине.


Отправка почты с сайта


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

С помощью языка PHP такую форму ввода можно сделать за пару минут - об этом подробно рассказано в главе 19. Но что же тогда делать тем, чей сайт расположен на сервере бесплатного хостинга, на котором нет возможности работать с PHP? Только одно - использовать почтовую программу посетителя. Ведь она есть практически у всех, - электронная почта по-прежнему остается самым популярным сервисом Всемирной Сети.

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

Для того, чтобы поместить на web-страницу сервис отправки почты, необходимо вставить в нее форму ввода данных, реализуемую с помощью тэга <form>, указав его параметры, обеспечивающие формирование заголовков письма:

<FORM METHOD="post" ACTION="mailto:address@xxx.ru?subject=Тема" NAME="mainform" TARGET="content" ENCTYPE="text/plain">

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

Вот примерный текст формы, отправляющей на определенный адрес письмо, созданное из данных, введенных в форму.

Рис.22.1. Так выглядит описанная в тексте форма для отправки писем

"><FORM action=mailto:pupkin@euro.ru?subject=Zakaz enctype=text/plain method=post name=mainform target=content>

<p><INPUT NAME=zakaz TYPE=checkbox checked value="Желаю сделать заказ" title="Отметьте здесь, если Вы желаете заказать книгу">Я желаю заказать книгу


<SELECT name=zhurn>

<OPTION value=buk selected>Букварь</OPTION>.

<OPTION value=kol>Колобок </OPTION>

<OPTION value=repa>Репка </OPTION>

</select></p>

<p><INPUT NAME=post TYPE=radio checked value="Доставка почтой"> Доставить почтой</p>

<p><INPUT NAME=podp TYPE=radio value="Доставка Союзпечатью"> Доставить по подписке Союзпечати</p>

<p>Контактная информация для связи с Вами:<TEXTAREA cols=40 name=contact wrap=virtual></TEXTAREA></p>

<p>Ваш адрес электронной почты: <INPUT NAME=email TYPE=text></p>

<p><INPUT TYPE=submit VALUE=Отправить></p></FORM>

На рис.22. 1 показано, как она выглядит на web-странице. Формирование письма произойдет, как только посетитель нажмет кнопку, имеющую тип "submit". Однако, к сожалению, данный процесс полноценно пройдет лишь в том случае, если в качестве используемой по умолчанию почтовой программы установлен Microsoft Outlook Express или Microsoft Outlook. Другие почтовые клиенты будут обрабатывать передаваемые им браузером данные, введенные в форму, не совсем корректно. Скажем, The Bat! не способен брать из формы что-либо, кроме адреса получателя и темы, - то есть само письмо, увы, отправлено не будет. Во избежание подобных ситуаций следует предупредить посетителя сайта в пояснительном тексте рядом с формой отправки о том, что ее следует использовать только при установленном в качестве почтового клиента по умолчанию Microsoft Outlook Express (или Microsoft Outlook), и указать рядом с формой ваш обычный адрес электронной почты для пользователей остальных почтовых клиентов.


конструкции из полей ввода текста,


<FORM..>
Начало формы - конструкции из полей ввода текста, управляющих элементов (кнопок, полей для отметок и др.)
method - действие с формой. Стандартное значение - post: то есть отправка данных куда-либо.
action - конкретное действие, выполняемое над формой. Может быть указан адрес программы, которая умеет получать  и обрабатывать данные с web-страницы, почтовый адрес для отправки данных формы по электронной почте и др.
name - уникальное имя формы. Используется для ее идентификации браузером.
target - указание на то, что надо отправить. Обычное значение - сontent (содержимое формы).
enctype - формат отправляемых данных. Параметр text/plain указывает на текстовый формат.
<INPUT..>
Место ввода информации
type=text - поле ввода текста, при этом size - длина этого поля в символах
type=checkbox - отображает квадрат с возможностью отметки. Если в тэге имеется параметр checked, то отметка ставится на изначально.
type=submit - отображает кнопку, при нажатии которой происходит то, что описано в параметрах method и action
тэга form.
type=button - отображает кнопку, при нажатии которой происходит выполнение скрипта или другое действие.
type=radio - отображает кружок с возможностью отметки. Отличие от параметра checkbox в том, что отмечен может быть лищь один кружок из нескольких.
type=file - отображает поле ввода имени файла с кнопкой "Обзор".
type=password - отображает поле ввода пароля, в котором вводимые символы отображаются звездочками.
type=reset - отображает кнопку, очищающую все содержимое формы.
<SELECT>
Выпадающий список
Для добавления каждого нового пункта в список следует использовать тэг <option>... </option>. Для создания прокручивающегося списка в тэг <select> необходимо добавить параметр, указывающий на количество отображаемых строк: <select size=2>.
<TEXT

AREA>
(слитно)
Поле ввода текста
cols - количество символов в строке поля
rows - количество строк в поле.
wrap=virtual - указание на возможность автоматического переноса текста
<
Для того, чтобы какой- либо элемент формы мог принимать участие в передаче данных (например, чтобы его значение могло быть послано по почте), он должен иметь свое уникальное имя - в его тэге долен быть параметр "name="Имя"". Если такого параметра нет, то информация данного элемента формы никуда передана быть не может. Пример использования формы для передачи данных смотрите в главах 19 и 22.
В вышеприведенных таблицах перечислены лишь самые основные тэги HTML. Существует множество других тэгов, дающих возможность более разнообразного оформления текста. Но подробный рассказ о них выходит за рамки этой книги, как потому, что они требуются редко, так и потому, что информацию о них можно найти в справочниках по HTML.
Неплохие подборки книг по компьютерным технологиям, в частности, по HTML и разработке web-сайтов можно найти в специальных электронных библиотеках, например, по адресам http://rusdoc.df.ru, http://infocity.kiev.ua.

Параметры тэга


<META …>

Служебная информация для поисковых систем и браузера. Располагается в разделе <HEAD>.

keywords - ключевые слова для поисковых машин

http-equiv - указание на требуемое поведение страницы. Если он равен "Refresh", то это означает, что браузер должен осуществить переход на другую страницу

content - значение параметра тэга META

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

<BODY …>

Отображаемая часть документа.

bgcolor - цвет фона страницы (далее следует цифровое обозначение цвета или слово, обозначающее цвет)

text - цвет текста

link - цвет непросмотренных ссылок

vlink - цвет просмотренных ссылок

alink - цвет нажатых ссылок

background - путь к рисунку, который должен быть фоном

bgproperties (равно True

или False) - указание на то, должен ли двигаться фон при прокрутке страницы


<P …>
Абзац текста
align - выравнивание текста.
Значения:
left - по левому краю; center
- по центру;
right - по правому краю; justify - по ширине
<DIV>
Фрагмент текста.
Те же, что и у тэга <p>. Используется для задания фрагменту определенных свойств.
<FONT …>
Вид и размер шрифта текста
face - название шрифта
size - размер букв, от 1 (наименьший) до 7 (наибольший)
color - цвет текста. Указывается либо в виде названия цвета, либо в виде его кода в шестнадцатиричной системе.
<H1>…
<H6>
Текст, оформленный как заголовок
Те же, что и у тэга <p>. Оформленный этими тэгами текст имеет отличный от остального текста размер (у <H1> наибольший).
<HR>
Горизонтальная линия
color - цвет линии
size - толщина линии

<TABLE>
Таблица не отображается в браузере, пока полностью не загрузится.
Таблицы
background - рисунок - фон для всей таблицы
bgcolor - цвет фона таблицы. Если в качестве фона задан какой-либо рисунок, то этот тэг игнорируется
border - толщина линий таблицы
bordercolor - цвет линий таблицы
cellpadding - расстояние от текста внутри ячеек до границ ячеек
cellspacing - расстояние от границ таблицы до внешних границ ячеек
width - ширина таблицы. Или в пикселях, или в процентах от ширины окна браузера (в последнем случае к его значению следует прибавить символ "%")
<TR>
Строка таблицы. Употребляется только внутри тэгов <TABLE>... ...</TABLE>.
<TD>
Ячейка таблицы.
Употребляется только внутри тэгов <TR>... ...</TR>
background - фон ячейки
bgcolor - цвет фона ячейки
При наличии в тэге <td> вышеуказанных параметров значения соответствующих параметров для тэга <table> игнорируются.
bordercolor - цвет линий ячейки.
align - выравнивание по горизонтали
valign - выравнивание по вертикали

<IMG SRC=..>
Рисунок. Непарный тэг.
height - высота графического обьекта
width - ширина графического обьекта
Если параметры height и width не указаны, то графический обьект отобразится в соответствии со своими реальными размерами.
<IMG SRC=..>
alt - текст, отображаемый при подводе курсора к изображению или на месте изображения при отключенной функции отображения графики в браузере
На web-страницы можно помещать изображения только в формате gif или jpeg. Последние модели браузера Microsoft Internet Explorer также могут отображать изображения в формате Png.
Тэг  <a> обозначает гиперссылку, то есть текст или рисунок, при нажатии на который мышью произойдет переход браузера на другой web-документ. Его параметры:
href - ссылка на другую web-страницу или другое место той же страницы. В этом параметре указывается адрес web-страницы, на которую должна вести ссылка.
name - указатель на странице места ссылки
Если переход происходит на страницу на другом сайте, то обязательно указание в адресе префикса "http://" перед именем сайта.
Вот примеры ссылок:
<a href=index.htm>На главную страницу</a>
- при нажатии мышью на слова "На главную страницу" произойдет переход на страницу index.htm.
<a href="#1a">Вниз</a>...<a name="1a">Сюда</a> - при нажатии на ссылку "Вниз" страница в браузере прокрутится так, чтобы слово "Сюда" оказалось на первой строке экрана
(тэг на какой-нибудь странице): <a href=index.htm#1a>На главную страницу в первый раздел</a>...
(тэг на странице
index.htm): <a name="1a"> Сюда</a>
 - при нажатии ссылки на первой странице произойдет переход на страницу index.htm, причем она прокрутится в браузере до строки "Сюда"

Перспективы


В связи с сложностью производства, дороговизной комплектующих и хрупкостью конструкции жидкокристаллические мониторы пока не столь широко распространены, как это хотелось бы пользователям и производителям. Поэтому в последнее время ведутся разработки альтернатив LCD-дисплеям, которые, обладая их достоинствами, в то же время были бы лишены их недостатков. А основные достоинства экранов на жидких кристаллах - малая толщина, полная безвредность и высокое качество изображения. Оно не мерцает, а поэтому дает возможность работать зат монитором очень долго без усталости глаз. Но есть и недостатки - помимо стоимости и сложности, LCD-мониторы обладают слабой контрастностью и невысоким углом обзора: чтобы все цвета на таком экране были переданы правильно, на него необходимо смотреть спереди в упор.

Для формирования изображения нужно выполнить две задачи. Первая - указать каждой точке картинки, каков должен быть ее цвет. И второй - сделать так, чтобы она именно в этот цвет и окрасилась. К примеру, в электронно-лучевой трубке указывает цвет обегающий экран электронный луч, а собственно его создает люминофор, нанесенный в каждой точке экрана и светящийся под влиянием луча. А в LCD-дисплеях цвет каждой точке указывает сетка электродов, располагающаяся под жидкокристаллической матрицей, а само изображение получается в результате прохождения света через эту матрицу и набор светофильтров. Задача указания каждой точке ее цвета в настоящее время решается вполне успешно, и создать сетку электродов для высокого разрешения можно. А вот вырастить матрицу с такими мелкими кристаллами непросто. Поэтому основным направлением инженерных поисков является именно разработка способов формирования изображения из точек.

·          В компании Xerox

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

Разработчики считают, что с помощью технологии Gyricon можно достичь такого же качества отображения текста на экране, как и на распечатке лазерного принтера (т.е. 400*600 точек на дюйм). Преимущества такой технологии очевидны - внешний вид текста ничем не будет отличаться от обычного листа бумаги, контрастность будет зависеть всего лишь от насыщенности окраски шариков. Кроме того, дисплей можно сделать гибким. Вместе с тем наличие большого количества движущихся частиц вызывает опасения за долговечность такого монитора - несмотря на масляное заполнение пространства между шариками вполне возможно нарушение их взаиморасположения. Будем надеяться, что исследователям Xerox удастся справиться со всеми этими трудностями.

·          Компании E Inc и Bell Labs, подразделения корпорации Lucent Technologies, в своих лабораториях разработали оригинальный способ создания изображения с помощью электрофореза. Общий принцип этой технологии таков. При электрофорезе (который, в частности, давно и успешно применяется в медицинских лабораториях для исследования белкового состава крови) на какой-либо носитель, к примеру, гель или фильтровальную бумагу, помещается смесь солей органических веществ с крупными, но разными размерами молекул, и добавляется растворитель - обычно вода. При этом соли будут диссоциировать - то есть разделяться на неорганический ион и органическую крупную молекулу. Скажем, натриевая соль какого-либо белка разделится на положительно заряженный ион натрия и отрицательно заряженный ион этого белка.


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

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

Отсюда вытекает и тот способ формирования изображения, который предложили компании E Inc и Bell Labs. На бумагу, ткань, пластик или металл помещается множество прозрачных микрокапсул со смесью солей двух белков в растворителе. Причем один из этих белков имеет большую молекулу и черный цвет, а другой - маленькую молекулу и белый цвет. Если подать на капсулу электростатическое поле, то белый белок передвинется в капсуле к тому ее концу, который окажется заряжен положительно. Скажем, если положительный заряд был подан на поверхность экрана из таких микрокапсул, то в этом месте на экране возникнет белая точка, а если на подложку - то черная. 

В настоящее время достигнуто разрешение 600 точек на дюйм, что соответствует распечатке неплохого струйного принтера.

Преимуществами этой технологии является возможность создания контрастного и четкого изображения, а недостатком - малая скорость его обновления - около 10 кадров в секунду. В отличие от описанной выше технологии Gyricon капсулы жестко закреплены и могут располагаться на любом носителе, что повышает надежность экрана, созданного по этой "электрофорезной" технологии. (Представьте себе утреннюю газету на полотенце.) Кроме того, если создать белковые молекулы других цветов, то можно разработать и цветной дисплей - скажем, добавив на носитель капсулы со смесью пурпурного и белого, желтого и белого, голубого и белого цветов.[42]

·          Ученые английской компании Cambridge Display Technology обнаружили, что вещество полифениленвинилен может светиться желто-зеленым цветом, если его разместить между парой электродов.Ну, а от такого открытия недалеко и до разработки дисплея на основе ячеек из полифениленвинилена. Уже создан опытный образец с диагональю в 5 см. Такой дисплей светится сам и, в отличие от описанных выше двух технологий, допускает сколь угодно быструю смену кадров. То есть на электронной книге, созданной на основе полифениленвинилена, можно будет без проблем даже поиграть в Quake!

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


PHP: интерактивность в действии


Когда-то давно, еще в прошлом веке, для того, чтобы сделать сайт "на мировом уровне", достаточно было просто уметь делать web-страницы на HTML и обладать художественным вкусом. Спустя некоторое время требования усложнились: использование JavaScript и Dynamic HTML стало рутинным и дизайн сайта, не имеющего подобных "украшений", считался устаревшим. Вскоре правилом "хорошего тона" для корпоративного сайта стало применение сложных программ на Perl или C++, а создавать такие сайты стало по силам лишь крупным дизайнерским студиям.

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



Подсчитаем...


Чтобы оценить реальный размер папки согласно количеству занимаемых ее файлами кластеров, а не размер содержащихся в этих файлах собственно данных, в Windows 98/2000/XP можно использовать окно "Свойства папки" (пункт "Свойства" меню правой кнопки мыши выделенной папки). То число, которое стоит перед словом "занято", и показывает этот реальный размер. Однако для оценки величины занимаемого места большим количеством папок использовать это окно не так и просто. Поэтому существуют специальные программы, основное предназначение которых - помочь пользователю оценить реальный размер папок и файлов. Такие программы могут быть весьма полезны, когда необходимо оценить, какие файлы и какие папки действительно занимают больше места на винчестере и станут первыми в очереди на архивацию или удаление. Также они пригодятся в Windows95, где окно "Свойства папки" не предоставляет информации о занимаемом ею месте. Кроме того, эти программы часто имеют еще и дополнительные функции наблюдения за диском, поиска файлов и т.д. Расскажем о некоторых их них.



Полезные советы


·

Настройки программы можно сохранять в системном реестре Windows. Для этого служит команда "SaveSetting", с помощью которой можно поместить в системный реестр строку или число. Она имеет формат "SaveSetting "Имя приложения","Имя раздела", "Ключ", "Значение"". Имя приложения, имя раздела и ключ - указатели места, в котором сохраняется Значение. Получить значения из реестра можно командой "GetSetting" с синтаксисом "GetSetting "Имя приложения","Имя раздела", "Ключ", "То значение, которое следует вернуть, если такого ключа, как указанный в предыдущем параметре, в реестре нет"", а удалить - командой "DeleteSetting "Имя приложения","Имя раздела", "Ключ"". Например:

SaveSetting "Макросы", "Макрос1", "Имя папки", "C:\MyPapka"

papka = GetSetting "Макросы", "Макрос1", "Имя папки", "C:\Docs"

·       Записать список всех установленных в системе шрифтов в массив можно таким способом:

ReDim shrifti(FontNames.Count) As String

For r = 1 To FontNames.Count

shrifti(r) = FontNames(r)

Next r

WordBasic.SortArray shrifti()

(В массив "shrifti()" размером в количество шрифтов в системе помещается список имен всех установленных в системе шрифтов.  Команда "WordBasic.SortArray" сортирует его по алфавиту.)

·       Условие "If Selection.Type = wdSelectionIP Then …" выполнится, только если в документе не выделен фрагмент текста.

·       Если вы решили хранить какую-нибудь информацию, нужную при работе программы, в отдельном файле, не стоит экспериментировать с командами чтения и открытия файла типа "open", "write" и др. Просто открывайте файл в Word как текстовый с помощью команды "Documents.Open …" и пишите в него обычными средствами записи текста: "Selection.Text = "Мой текст"".


·       Посмотрите повнимательнее свойства, объекты и методы таких объектов, как "Application" и "System" (для этого достаточно набрать название объекта и поставить после него точку, - список возможных продолжений отобразится сам). Среди них можно найти немало весьма интересных и полезных, вроде средства задания и получения значений ширины и высоты окна Word, информации о языке данной версии Office, метод чтения данных из произвольного места реестра и многое другое.

·       С помощью фрагмента кода

Set MyData = New DataObject

MyData.SetText "Мой текст"

MyData.PutInClipboard

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

·       С помощью команды "Options.DefaultFilePath("константа названия папки")" можно получить пути и имена папок, перечисленных в диалоговом окне Word "Сервис" - "Параметры" - "Расположение". Все константы перечислены в справке VBA по слову "DefaultFilePath", а об их значении можно легко догадаться, переведя название константы с английского.

·       Если у одного из элементов формы установить свойство Cancel в True, то нажатие кнопки Esc будет эквивалентно клику мыши на этом элементе.

·       Если вы пишете инсталлятор для ваших программ, который помещает шаблоны с макросами в папку автозагружаемых файлов Word[12], то совсем необязательно требовать перезагрузки редактора, чтобы макросы из помещенного в эту папку шаблона стали доступны. VBA позволяет активизировать такие шаблоны без перезагрузки Microsoft Word - для этого существует специальная команда

AddIns.Add("полное имя шаблона, включая путь к нему и расширение").Installed = True

Эта команда эквивалентна ручному подключению шаблона с макросами через меню Word "Сервис - Шаблоны и надстройки".


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

Предотвратить подобную ситуацию можно, например, с помощью следующей конструкции, - разместите ее после команды копирования шаблона "FileCopy":

a="Имя шаблона в папке автозагрузки с полным указанием пути"

On Error Resume Next

Do

If AddIns(a).Installed Then Exit Do

AddIns(a).Installed = True

Loop[13]

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

·       Для удаления шаблона без выгрузки Word можно использовать такой же код:

a="Имя шаблона в папке автозагрузки с указанием пути"

On Error Resume Next

Do

If Not AddIns(a).Installed Then Exit Do

AddIns(a).Installed = False

Loop

AddIns (a).Delete

Kill (a)

Команда "Kill" выполняет удаление файла.

·      


Рис.5.2. Как убрать этот диалог? Читайте справа.

">Команда "On Error Resume Next", встречающаяся в обоих вышеприведенных фрагментах кода – это обработчик ошибок. В случае возникновения ошибки в коде после него (скажем, связанной с обращением к несуществующему объекту) он продолжит выполнение программы с команды, следующей за вызвавшей ошибку. Обработчик ошибок может также иметь вид "On Error GoTo метка", и тогда при ошибке в коде после него произойдет переход к указанной в обработчике метке и выполнение программы продолжится именно с нее.



·       Если вы, работая   в Word 97, часто сохраняете документы в формате HTML, и вам мешает постоянно появляющийся диалог о выборе кодировки файла (рис.5.2), то отключите его, установив в системном реестре строковый параметр "HKEY_LOCAL_ MACHINE\Software\Microsoft\Shared Tools\ Text Converters\Export\HTML\Options\Show EncodingDialog" как "No". Установить этот параметр реестра можно и программно с помощью команды "System.PrivateProfileString("", "HKEY_LOCAL_MACHINE\Software\Microsoft\Shared Tools\Text Converters\ Export\HTML\Options", "ShowEncodingDialog") = "No""

·       Если Вы закрыли исходный код Вашей программы на VBA от просмотра паролем, а потом благополучно его забыли - не огорчайтесь: в Интернете, по адресу www.passwords.ru

есть программа AVPR, позволяющая восстановить забытый Вами пароль. Ее английская версия требует оплаты и регистрации, а русская - бесплатная. К сожалению, бесплатная версия работает только с файлами, созданными в Word и Excel из Microsoft Office 97.

·       Чтобы ускорить работу программы, работающей с текстом, поставьте в ее начале команду "Application.ScreenUpdating = False", а в ее конец - команду "Application.ScreenUpdating = True", если только в процессе работы программы не требуется визуальный контроль происходящих изменений. Эта команда позволяет системе не тратить время и силы на постоянное обновление экрана и отображение изменений. Для того, чтобы все же обновить экран после отключения обновления экрана, используйте команду "Application.ScreenRefresh".

·       Для получения от пользователя определенных данных, кроме создания форм, можно использовать встроенные диалоги VBA - диалоговое окно "Открытие файла", "Свойства документа" и др. Они вызываются командой Dialogs("Название диалога").Show (показывает диалог и выполняет соответствующие ему действия), Dialogs("Название диалога").Display (только показывает диалог и позволяет записать в переменные введенные изменения, но не выполняет никаких действий и ничего не изменяет: очень полезно для использования встроенных диалоговых окон в своих целях), Dialogs("Название диалога").Execute (ничего не отображает на экране, но применяет все те изменения, которые были сделаны ранее с помощью команды With Dialogs("Название диалога") … End With).


Для вывода списка возможных диалогов наберите "Dialogs(", и Вам будет выдан их список. К сожалению, описания конкретных диалогов нет в справке - придется просто попробовать отобразить каждый, хотя список возможных параметров каждого диалога в справке есть.

В Microsoft Excel набора встроенных диалогов нет, однако отобразить на экране окна открытия и сохранения файлов все же можно. Для этого служат команды "Application.GetOpenFilename" и "Application.GetSaveAsFilename". В результате выполнения команды "file = Application.GetOpenFilename" будет отображено окно открытия файла, а после выбора имя файла поместится в переменную (здесь – "file"). Команда же "rez = Application.GetSaveAsFilename" отобразит окно сохранения файла, в переменную же (здесь - rez) будет помещено True - если сохранение успешно, и False - если нет. Обе команды докускают указание параметров (например, меняющих заголовки окна и других).

Иногда возникает необходимость вызвать из макроса какое-либо диалоговое окно, но так, чтобы такой вызов ничем не отличался от "ручного", производимого через пункты меню Word. А возможно это не всегда: так, команда "Dialogs(wdDialogEditFind).Show" действительно вызывает окно поиска, но при этом в случае ввода в него фрагмента, которого в тексте нет, не отображается сообщение о безрезультатности поиска.

Тем не менее вызвать из макроса данное окно так, чтобы оно работало точь-в-точь так же, как и "обычное", можно - для этого следует использовать имеющуюся в VBA функцию SendKeys, которая передает активному окну нажатия клавиш - как если бы они были нажаты на клавиатуре. Подробнее об этой функции вы можете прочитать в Справке по VBA, а использовать ее для вызова диалогового окна можно, к примеру, так:

Sub prog()

SendKeys "^f"

End Sub

предполагая, что комбинация клавиш Ctrl+f вызывает окно "Найти", как, впрочем, устанавливается по умолчанию.


Список кодов функциональных клавиш - в Справке.

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

·       Помимо привычных кнопок и выпадающих меню в Word существует еще несколько типов элементов вызова команд и программ - поля ввода и выпадающие меню выбора. К примеру, элемент "Выпадающее меню с полем ввода" используется для указания масштаба просмотра документа на панели "Стандартная" или для ввода вопроса к справочной системе в OfficeXP.

Создать такое поле можно только программно - через окно настройки это сделать нельзя (как, впрочем, и удалить их впоследствии). Для этого следует в окне отладки или в отдельном модуле выполнить команду

CommandBars(x).Controls.Add Type:=y

где "х" - номер панели (можно узнать, просто перебрав их все с помощью команды "MsgBox CommandBars(номер).Name" и выяснив, какой номер имеет панель инструментов с нужным названием), а "y" - одна из констант: "msoControlEdit", "msoControlDropdown", "msoControlComboBox", создающие соответственно поле ввода текста, выпадающее меню и выпадающее меню с возможностью ввода текста.

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

 CommandBars(x).Controls(y).Text = "текст в поле ввода"

где "х" - номер панели, "y" - номер по счету слева направо данного поля среди кнопок этой панели. Таким образом можно использовать эти элементы для отображения нужной пользователю информации. Точно так же - командой "a=CommandBars(x).Controls(y).Text" можно считать информацию из данного поля и использовать ее в работе программы.


Следует лишь внимательно следить за соответствием номеров кнопок их реальному расположению, - при изменении порядка кнопок программа может работать неверно. Назначить макрос кнопке, меню или полю ввода можно командой "CommandBars(x). Controls(y).OnAction = "Имя модуля.Имя программы"".

·       Для работы из одного приложения Office с другим можно использовать технологию ActiveX. Она основана на имеющейся в Office возможности представлять одну программу в другой как некий объект, с которым можно работать теми же командами, что используются при непосредственной работе с этой программой. Так, чтобы можно было из Word'овского макроса работать с Excel'ем, следует создать объект "Excel.Sheet":

·        

Dim es As Object

Set es = CreateObject("Excel.Sheet")

Здесь "es" - простое наименование переменной, может быть любым.

(Если надо сразу открыть какой-либо файл Excel'а, то можно использовать команду "GetObject":

Set es= GetObject("Путь к файлу Excel'а"))

При желании можно сделать созданный объект Excel видимым:

es.Application.Visible = True

Теперь можно этому объекту es (т.е. просто запущенному Excel'у) посылать команды такие же, как и в макросах Excel'а  (предваряя текстом "es.Application." те из команд, которые не требуют прямого указания объекта, - так как надо дать понять программе, что работа идет именно с Excel'ем). Так, чтобы открыть файл Excel'а, можно также дать команду

es.Application.Workbooks.Open FileName:="Путь к документу Excel'а"

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

es.Cells(1, 1).Value = "Это столбец A, строка 1"

Закрыть Excel можно командой

es.Application.Quit

Set es = Nothing

Можно даже вызвать на исполнение макрос, содержащийся в книге Excel.Для этого следует использовать команду

es.Application.Run "имя макроса"

Так что есть простор для творчества.


Полезный совет


*       *       *

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

 



Пользовательский модуль


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

В разделе AppEvents записана информация о звуковых схемах и назначенных звуках в системе. Именно здесь хранятся те данные, что вы вводите в диалоге Звук Панели управления.

Раздел Clock, как нетрудно понять, посвящен часам - именно тем, что торчат в углу панели задач. Здесь - все их параметры.

Раздел Control Panel содержит в себе информацию о настройках внешнего вида операционной системы. Это, пожалуй, один из самых интересных разделов реестра, так как именно здесь настраиваются разного рода "красивости" интерфейса Windows. Подраздел Appearance содержит в себе информацию о всех возможных цветовых схемах Windows. Эти схемы закладываются в реестр при его создании и именно отсюда берутся данные для окна Свойства экрана - Оформление (рис.14.6).

Рис.14.6. А вот и схемы оформления...

В подразделе Colors расположена информация об оформлении стандартных элементов интерфейса Windows - границ окон, поверхности кнопок и их краев, полос заголовка окна и прокрутки и т.д. Все цвета представлены в виде трех чисел - интенсивности их красного, зеленого и синего компонентов. Некоторые из этих параметров могут быть заданы при создании цветовой схемы, а некоторые - изменены только в реестре. Если хотите, можете немного поиграть с интерфейсом вашей системы.

В подразделе Cursors хранится информация о выбранном наборе изображений курсора и о всех стандартных наборах таких изображений.

Подраздел Desktop и его подразделы посвящены оформлению рабочего стола. Информация о шрифтах окон и меню, отображении полос прокрутки находится здесь. Однако большую часть параметров этого подраздела крайне желательно изменять не из редактора реестра, а из стандартных диалоговых окон, так как, в частности, запись используемых шрифтов здесь ведется в своем особом формате.
Некоторые параметры вполне могут корректироваться и впрямую в реестре - скажем, если вы хотите удалить пароль скринсейвера, поставьте значение параметра ScreenSaveUsePassword в 0 (сам пароль хранится в параметре ScreenSave_Data).

Другие подразделы раздела Control Panel имеют чисто служебное значение. Там могут храниться данные о назначении кнопок мыши и т.д.

Раздел Identities, если он у вас есть, используется почтовой программой Outlook Express для хранения информации об имеющихся идентификационных записях (попросту - своих пользователях). Здесь расположены настройки Outlook Express для каждого из пользователей, каждому из которых отведен свой подраздел. Например, в одном из многочисленных подразделов раздела Identities можно найти параметр WindowTitle (а можно и не найти). Именно в нем записана та строка, которая отображается в заголовке Outlook Express, на самой верхней синей полосе окна. Также в этом разделе хранится информация о всех учетных записях почты и новостей всех пользователей Outlook Express, за исключением активного - того, на которого Outlook Express была настроена при последнем выходе из этой программы.

Раздел Keyboard layout посвящен раскладкам клавиатуры, а InstallLocationsMRU - путям к некоторым драйверам. Оба раздела - чисто служебные и особого интереса не представляют. В разделе Network находятся параметры локальной сети, если компьютер к ней подключен. Изменять параметры всех этих разделов из редактора реестра не стоит.

В разделе RemoteAccess записаны параметры соединений удаленного доступа: имена соединений, телефоны и некоторые настройки. Однако паролей, столь часто интересующих хакеров, тут нет - они хранятся в файлах .pwl в папке Windows в зашифрованном виде.

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

И, наконец, последний и наиболее обширный раздел - это раздел Software. Параметры установленных программ - в том числе и самой Windows! Однако свои параметры в этот раздел пишут не все программы, а лишь те, которые поддерживают многопользовательский режим, то есть допускают различные свои настройки для разных пользователей Windows. (Остальные размещают свои данные в аналогичном разделе ключа HKEY_LOCAL_MACHINE.) В самом разделе Software полагается помещать не подразделы с названиями программ, а подразделы с названиями их фирм-производителей, а уже лишь в них - названия программ. (Это, впрочем, не обязательно для соблюдения программистами.) 



В подразделе Microsoft расположены настройки установленных на компьютере программ, выпущенных этой фирмой. В его подразделе Internet Account Manager находятся настройки учетных записей текущего пользователя программы Outlook Express. Рядом с ним можно видеть подраздел с именем этой программы, тоже полный всяческих настроек.

При смене текущего пользователя Outlook Express содержимое этих разделов заменяется на соответствующее из раздела HKEY_CURRENT_USER\ Identities. Рядом - раздел Internet Explorer: чьи настройки там находятся, думается, ясно.

Для того, чтобы через целый лес из имен программ и фирм добраться до настроек вашей операционной системы, найдите в разделе Software подраздел Microsoft, а в нем - подраздел Windows. Там откройте подраздел CurrentVersion (обычно он один). И вот - перед вами еще один блок настроек операционной системы! Количество подразделов здесь может варьировать - в зависимости от "навороченности" вашей Windows: и Internet Explorer, и MS Office могут добавить сюда пару компонентов.

В подразделе Applets (ключа HKEY_CURRENT_USER\Software\ Microsoft\Windows\CurrentVersion, если вы еще не забыли) расположены настройки стандартных программ Windows. Тут и старые знакомые Defrag и FreeCell, Hearts и Paint, и System Monitor с Media Player'ом. Иногда вы можете найти параметры с названиями вроде "WindowOriginY" или просто "Y" или "X". Это - записано местоположение окна программы при последнем выходе из нее, чтобы при следующем запуске оно располагалось на том же самом месте, что и в прошлый раз. (А вас никогда эта способность Windows не удивляла?).

В подразделе Internet Settings вы также встретите некоторые настройки браузера Internet Explorer. С ними особо разбираться не следует - все равно все можно настроить через диалоговые окна самого браузера.



Рис.14.7. Программа Msconfig даст вам воз-можность редактировать разделы Run, не запуская Редактор реестра.

">В подразделе Policies можно запретить интерфейсу Windows отображать определенные свои компоненты.


Установив параметр NoNetHood раздела Explorer в 1, вы скроете пиктограмму Сетевого окружения с Рабочего стола. А установив параметр NoDispScrSavPage раздела System в 1, вы запретите отображать вкладку установки скринсейвера в Свойствах экрана, тем самым в определенной степени предотвратив чью-нибудь злую шутку по установке пароля на скринсейвер в ваше отсутствие. В принципе названия почти всех параметров в этом разделе вполне понятны. Только не ставьте параметр DisableRegistryTools в 1 - после этого вы больше regedit.exe запустить не сможете. Придется восстанавливать реестр как после краха системы или писать специальный .reg - файл для удаления этого параметра. Или искать другие редакторы реестра, созданные не Microsoft.

Подраздел Run - это то место, которое вам надо посещать как можно чаще. Это - одно из двух мест в системном реестре, где прописаны пути к автозагружаемым программам. Указав здесь путь к программе, вы добьетесь того, что она будет загружаться каждый раз при запуске Windows. Этим местом часто пользуются троянские программы (те которые выполняют какие-либо вредоносные функции по отправке информации на удаленный компьютер, например, паролей для доступа в Интернет) для своего автоматического запуска при загрузке компьютера (чтобы, скажем, при установлении соединения с Интернет отправить своему создателю ветвь HKEY_CURRENT_USER\RemoteAccess вашего реестра). Поэтому если вы здесь обнаруживаете запись, ведущую на подозрительный файл - смело удаляйте или хотя бы попробуйте выяснить, откуда эта программа и что она делает. Однако это не единственное место автозапуска программ - аналогичный раздел есть и в HKEY_LOCAL_MACHINE.

В составе Windows98 есть программа msconfig.exe (рис.14.7). Она работает и в Windows95. С помощью этой программы можно просмотреть список автозагружаемых программ и удалить явно лишние.

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


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

Подраздел Explorer - самый большой из всех подразделов подраздела CurrentVersion. Это - параметры, пожалуй, самой используемой программы из поставки Windows, кроме нее самой - "Проводника". В нескольких его подразделах размещается информация, местонахождение которой вы наверняка давным-давно хотели узнать. Итак - вот она.

Вас никогда не интересовало, каким образом Windows сохраняет информацию о расположении значков на Рабочем столе и в папках, которые вы оставили открытыми, выходя из Windows? Если интересовало - то загляните в подраздел Streams. Видите там 200 подразделов? Это - заготовки для сохранения информации о расположении значков. В некоторых из подразделов можно найти параметр ViewView. Здесь такая информация уже запомнена. Открыв этот параметр двойным щелчком мыши, можно увидеть длинное шестнадцатиричное число, а справа - его "перевод" на обычный символьный язык. И среди мешанины символов будут видны (конечно, не у всех таких параметров) имена ваших файлов, находящихся в какой-то одной папке. Значит, именно в этом разделе хранится информация о расположении значков в ней. Вы можете найти раздел с параметром ViewView, содержащим имена файлов на вашем Рабочем столе, экспортировать его в файл реестра и затем импортировать обратно при необходимости восстановить расположение иконок на экране. Но такой экспорт надо будет производить после каждого важного изменения расположения или состава значков Рабочего стола.

В подразделах RunMRU и Doc Find Spec MRU содержится то, что вы когда-либо вводили в окна "Выполнить..." и "Найти..." (рис.14.8).


Почистите эти разделы или, наоборот, дополните их согласно вашей необходимости, если желаете.



Рис.14.8. А вот где находится содержимое окна Пуск-Выполнить.

В подразделах Shell Folders и User Shell Folders содержится информация о расположении служебных папок Windows, например, Cookies или History. Если вы пожелаете переместить их в другое место или переименовать, то внесите сюда изменения.

Остальные подразделы и параметры подраздела Explorer настраивают мелкие особенности "Проводника".

Большинство других подразделов подраздела CurrentVersion являются чисто служебными и особого интереса не представляют. Там записаны некоторые параметры некоторых программ из поставки Windows - и не более того. Хотя не забудьте глянуть в ProfileReconciliation, если будете через реестр менять расположение папок Cookies и History.

В разделе HKEY_CURRENT_USER\Software\VB and VBA Program Settings по умолчанию располагаются настройки для всех программ, написанных на языках Visual Basic и VBA. Поэтому загляните и сюда, если вы не нашли имени интересующей вас программы в остальной части раздела Software.

Возможно, вас несколько смутило, например, то, что, скажем, настройки браузера Internet Explorer находятся не в одном разделе, а разбросаны по всему ключу HKEY_CURRENT_USER, да и не только по нему. Но это, увы, так - браузер Internet Explorer очень тесно интегрируется в операционную систему и особенно в реестр.

Структура данного раздела реестра в операционных системах Windows 2000 и Windows XP отличается от описанной, однако многие компоненты - параметры установленных программ, самой операционной системы, описания цветовых схем настройки экрана располагаются в реестре этих систем так же, как указано выше.


Порты. Прокси. Файерволл


Антон Орлов, http://antorlov.chat.ru

Когда большинство пользователей компьютерных технологий видят слово "порт", то обычно с ним ассоциируются такие аббревиатуры, как COM, LPT, PS/2.  То есть - попросту названия "гнезд", куда можно присоединить какие - либо периферийные устройства вроде сканера, принтера или модема. Разные типы таких портов предоставляют разные возможности и предназначены для работы с различными устройствами, подключаемыми к персональному компьютеру. Но при чтении литературы, описывающей работу в сети Интернет, при работе с программами для этой сети становится ясно, что слово "порт" имеет не только это, привычное всем, значение. Но какое же конкретно? И что, например, означает поле "номер порта", встречающееся почти во всех окнах настройки прокси-серверов (рис.10.1)?

Рис.10.1. Номер порта.

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

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

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

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

Различные порты различаются одним - своим номером. Всего возможных номеров портов весьма много - тысячи. Однако некоторые номера портов традиционно присвоены вполне определенным сервисам. К примеру, программа-web-сервер (то есть программа, которая может отвечать на запросы с удаленного компьютера, выдавая для просмотра документ Html и все файлы, которые из него вызываются) отвечает на запросы с указанием порта 80. Программа - Ftp-сервер, выдающая по запросу пользователя файлы, отвечает на запросы, в которых указано, что они посланы на порт 21. Иными словами, когда, скажем, ваш браузер запрашивает сервер, скажем, www.duel.ru, то он посылает пакет данных на порт 80 компьютера с IP-адресом, соответствующим www.duel.ru, а в пакете указывает номер своего порта, выделенного ему операционной системой. Сервер www.duel.ru, получив пакет, посылает на компьютер с запросившим его браузером пакет данных, адресуя его тому порту, с которого был прислан запрос. Операционная система, увидев по заголовку пакета, какому порту адресован пакет, отдаст его в браузер, который его обработает по собственному усмотрению.

Поэтому пакет данных, предназначенный, скажем, браузеру, не попадает в  почтовый клиент, и наоборот.

Какие же выводы следуют из всего вышеизложенного?

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


Каждая программа работает с запросами, приходящими к ней, по своему порту: web-сервер - по 80-му, Ftp-сервер - по 21-му и др. Браузерам, Ftp-клиентам вроде CuteFtp, почтовым клиентам номера портов выделяются операционной системой того компьютера, на котором они запущены. Номер порта, по которому работают эти серверы, указывается в их настройках.

Нетрудно понять, что в том случае, если web-сервер будет настроен на работу, скажем, по 81-му порту, то ни один браузер просто так связаться с ним не сможет. В многих программах, предназначенных для работы с ресурсами Интернет, есть возможность задавать номер порта, с которого сервер Интернета будет этой программе отвечать в том случае, если он настроен на работу с другого порта (рис.10.2).

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



Рис.10.2. Здесь настраиваются номера портов

 в почтовом клиенте The Bat!.

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

Далее. С системой портов тесно связана такая система защиты, как "файерволл"[26]. Файерволлом называется программа, которая обеспечивает санкционированность всей информации, приходящей или уходящей с компьютера. К примеру, при отправке почты используется порт 25, а при получении - порт 110. С этими портами работает почтовая программа. Если же какая-нибудь другая программа, например, вирус-троян[27], попытается связаться с чем-либо по этому порту, то файерволл не даст ей это сделать.


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

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

Обеспечение безопасности компьютера от "взлома" извне тоже тесно завязано на управлении системой портов. На компьютере постоянно запущено множество программ. И не исключено, что при обращении к какому-либо порту какая-либо программа возьмет и ответит на запрос, да еще и проигнорировав какую-либо авторизацию доступа. Это - так называемая "дыра" в программе, за что ее авторов нещадно бьют. В другом случае операционная система, воспринимая данные по какому-либо порту, может попросту "повиснуть" - опять-таки из-за ошибки в ее программе. Так, до появления третьего Service Pack к Windows NT приход на компьютер с этой операционной системой пакетов данных, адресованных на 139-й порт, происходила либо перезагрузка Windows NT, либо ее "зависание". ("Дыры" могут быть основаны и на совсем других принципах - не только на системе портов, просто "дыра через порт" - один из многочисленных вариантов "дыр".)



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



Рис.10.3. Вот так сканируются порты. Это пример - а при настоящей хакерской атаке можно было бы и "дыру" отловить, да и самому попасться - зависит от умения обоих сторон.

Поскольку любой сложный программный комплекс включает в себя тысячи строк кода и множество функций, многие "дыры" в нем выявляются не сразу. К примеру, в Windows NT изначально "дыр" было предостаточно. Обычно в случае, если в программе выявляется "дыра", ее производитель выпускает специальное обновление, ее закрывающее. Такие обновления распространяются через Интернет. Особенно преуспела в закрытии своих "дыр" компания Microsoft, под обновления систем безопасности ее продуктов отведен целый большой раздел на ее сервере, что, впрочем, неудивительно - уж больно большие и сложные программы она выпускает.

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


PowerPoint 2000/XP: готовый сайт - за пять минут


PowerPoint - это программа для создания презентаций: наборов изображений, содержащих графику и текст и предназначенных для удобного предоставления информации. Презентации часто используются при чтении лекций, проведении семинаров, заменяя столь распространенную ранее демонстрацию диапозитивов. PowerPoint входила еще в ранние версии Microsoft Office. В PowerPoint97 появилась возможность сохранения презентации в формате HTML, а в PowerPoint 2000 и  PowerPoint XP эта возможность была значительно усовершенствована.

Хорошо сделанная презентация, сохраненная в формате HTML из PowerPoint2000, фактически представляет собой полноценный сайт со сложной структурой. Посмотрите, к примеру, внешний вид такого сайта на рис.22.10. Для просмотра HTML-презентации не нужны самые современнные модели браузеров: достаточно использовать Microsoft Internet Explorer версии не ниже 4.0.

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

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

Рис.22.10. Готовый сайт - из PowerPoint

Когда возможности PowerPoint по сохранению презентации как набора web-страниц могут пригодиться? Да тогда, когда, например, у вас уже есть готовая презентация, и вы хотите ее поместить в Сеть. Также с помощью PowerPoint можно быстро создать сложный сайт с множеством графики. PowerPoint (версии 2000 или XP) выручит вас тогда, когда думать о самостоятельной разработке сайта нет времени, а создать представительство в Интернете надо. Например, перед научной конференцией.

Только не переусердствуйте. Как только будет время - переделайте все созданное.

 



Практическое использование.


Вот несколько примеров использования PHP на реальных сайтах, существующих в российском Интернете.



Практикум


Антон Орлов, http://antorlov.chat.ru

Третья часть книги, как видно из ее названия, посвящена практической работе с компьютером.

Первые шесть глав рассказывают о создании Интернет-сайтов. Из них вы узнаете основы языков HTML, PHP и Javascript, познакомитесь с таблицами стилей и Dynamic HTML. В главе 18 описывается удобный инструмент сайтостроения - Script Editor из пакета Microsoft Office, а в главе 22 приводится подборка интересных приемов web-дизайна, делающих сайт красивее и удобнее.

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



Правильный проект - залог успеха


Антон Орлов, http://antorlov.chat.ru

Перед тем, как начинать создание сайта, стоит сесть и продумать общий план будущего Интернет-представительства: что там будет находиться, как его содержимое[53]

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

Прежде всего не следует воспринимать эти пожелания как какие-то непреложные инструкции, невесть кем написанные. Это просто сформировавшиеся каноны сайтостроения, исходящие из идеи максимального удобства посетителя, - ведь основным потребителем труда web-дизайнера является именно посетитель сайта.



Приемы и секреты web-дизайна


Антон Орлов, http://antorlov.chat.ru

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



Проблемы кластерной организации


Потери

Кластерная организация данных на жестком диске, обеспечивая возможность многократного удаления и создания файлов, приводит к двум большим проблемам. Первая - это потери дискового пространства. Так как в подавляющем большинстве случаев размер файлов не кратен размерам кластеров, то последний кластер, помеченный в FAT как принадлежащий какому-либо файлу, оказывается заполненным не полностью. Это место уже не может стать частью другого файла, и поэтому не может быть использовано. Если файлов много, то общее количество такого "потерянного" места становится немалым. Особенно такая потеря проявляется при размещении на жестком диске большого количества мелких файлов, размер которых меньше размера кластера. Так, при размере кластера в 32 килобайта 10 файлов по 3 килобайта займут на жестком диске не 30 килобайт, как могло бы показаться, а 320. В самом крайнем случае для сохранения файла размером один байт операционная система выделит на диске один кластер размером 32 килобайта.

Рис.8.8. Информация программы ScanDisk.

">Стоит запомнить, что так как один кластер занимает фиксированный обьем диска (чаще всего это 16 или 32 килобайта) и может содержать не более одного файла, то неизбежны потери пространства диска. Если размер файла меньшеразмера кластера или просто не кратен ему, то в кластере, содержащем этот файл (или окончание файла) останется незанятое пространство.

Информацию о размере кластера и количестве их на диске можно получить, используя программу Scandisk для Windows 95/98 (рис.8.8).

Фрагментация

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


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

Пути решения

Путь решения проблемы потерь дискового пространства напрашивается сразу - уменьшить размер кластера. В самом деле, если кластер имеет размер 4 кб, а не 32, то пустого места в нем может остаться в 8 раз меньше, чем при использовании кластеров в 32 кб. Используя FAT16, для этого надо уменьшить размер логического диска (в самом деле, на диске в 1 гигабайт минимальный размер кластера будет 1024*1024/65536=16 килобайт, а на диске в 512 мегабайт - 1024*512/65536=8 килобайт). В FAT32 размер кластера в 4 кб является вполне нормальным и может использоваться на логических дисках размером до 16 гигабайт.

Но даже в пределах имеющейся файловой системы FAT16 можно уменьшить потери дискового пространства. Например, делать файлы большого обьема или, если это невозможно, хранить их в архивах, либо извлекая по мере необходимости, либо используя специальные программы, делающие архивы "прозрачными" для операционной системы, вроде ZipFolders или ZipMagic. Тогда кластеров, не до конца заполненных данными, будет мало. Также можно использовать сжатие дисков (при этом все содержимое диска фактически хранится в одном файле), но это очень опасно в плане надежности хранения.

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


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

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

В идеале в конце концов после дефрагментации все файлы на диске должны располагаться в идущих друг за другом кластерах. Однако некоторые системные и служебные файлы операционной системы, в частности, файл виртуальной памяти[22], располагаются в кластерах, которые не могут быть перемещены. В результате в массив дефрагментированных данных оказываются вкраплены фрагменты таких файлов. Поэтому перед дефрагментацией рекомендуется отключить использование виртуальной памяти, а после нее - установить постоянный размер файла подкачки (Панель управления - Система - Быстродействие - Виртуальная память), чтобы он впоследствии не подвергался фрагментации.



Рис.8.9. Не правда ли, странно? Как будто капли дождя на стекле.

Это - множество мелких файлов, размером меньше кластера, записанных на диск. А получилось так потому, что при записи каждого файла Windows ищет первый блок из 500 кб свободных кластеров и записывает файл в его конец. Именно в конец - чтобы дать возможность расти без фрагментации тому файлу, который находится перед этим блоком.



 

Проблема выбора

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

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

Также имеется вопрос - а какая файловая система лучше, FAT16 или FAT32? Тут необходимо оценить, что важнее. FAT32 позволяет установить меньший размер кластера и разбивать винчестер на логические диски больших размеров - больше 2 гигабайт. Но при этом сама 32-разрядная таблица FAT занимает больше места на диске, труднее кэшируется, а файлы, записанные на диске с малым размером кластера, сильнее фрагментируются, что может привести к меньшему быстродействию FAT32 по сравнению с FAT16. Кроме того, с FAT32 не могут работать ни MS DOS, ни Windows NT.


Что здесь выбрать - решать вам.

Стоит запомнить:

При установке размера кластера приходится делать выбор между быстротой с надежностью и экономичностью. Большой размер кластера - не так плохо, как кажется. Чем больше размер кластера, тем больше потери дискового пространства из-за того, что в кластерах остается незанятое место - но и тем меньше фрагментация файлов, ведь количество фрагментов-кластеров, на которые может быть разбит файл, меньше, чем при меньшем размере кластера! Так что тут стоит выбирать - либо согласиться с потерями свободного места (и бороться с ними путем использования ZipFolders и других программ - архиваторов "на лету"), либо терпеть неизбежную фрагментацию файлов (и регулярно запускать программу дефрагментации).

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

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

Бороться с фрагментацией файлов при малом размере кластера можно только регулярной дефрагментацией диска.


Процедуры и функции


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

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

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

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

В VBA любая процедура, получающая данные из другой программы, имеет следующий формат:

Sub "Название процедуры"("Получаемая переменная" As "Тип данных получаемой переменной")

"Текст процедуры"

End Sub

Получаемых переменных может быть несколько. Для каждой из них желательно указать ее тип, но это можно опустить.

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


Sub Main()

 Dim a As Integer

   a = 1

   uvelich a, 3

   MsgBox a

End Sub

Sub uvelich(b As Integer, c As Integer)

   b = b + c

End Sub

Здесь из процедуры Main вызывается процедура uvelich, которой передаются два параметра - a (равный 1) и второй - число 3. Процедура uvelich увеличивает первую переданную переменную на значение второго переданного числа, а затем Main отображает результат.

Стоит помнить, что если в заглавии процедуры указываются типы данных переменных, то и в вызывающей процедуре передаваемые значения должны быть определены и иметь тот же самый тип, иначе VBA выдаст сообщение об ошибке[2].

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

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

К примеру, если бы заголовок процедуры uvelich в вышеприведенном примере имел вид Sub uvelich(ByVal b As Integer, c As Integer), то никакого увеличения переменной "a" не произошло бы и программа отобразила бы в качестве результата число 1. Однако в самой процедуре uvelich соответствующая переменная увеличилась бы на 3 и, если бы последняя ее команда была бы MsgBox b, то она отобразила бы значение 4.

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


В частности, при использовании функции вышеприведенный пример мог бы иметь такой вид:

Sub Main()

 Dim a As Integer

 Dim d As Integer

   a = 1

   d = uvelich(a, 3)

   MsgBox d

End Sub

Function uvelich(ByVal b As Integer, ByVal c As Integer) As Integer

   uvelich = b + c

End Function

Как нетрудно видеть, программа присваивает переменной "d" значение, вычисленное функцией.

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

Sub Main()

 Dim a As Integer

 Dim d As Integer

   a = 1

   d = uvelich(a, 3)

 MsgBox d

 MsgBox a

End Sub

Function uvelich(b As Integer, c As Integer) As Integer

   uvelich = b + c

   b=1555

End Function,

то программа бы в качестве значения переменной "а" отобразила бы число 1555, а не 1.

Указания типов переменных в заголовках функций и процедур необязательны - их можно опустить. В этом случае будет считаться, что все передаваемые переменные могут иметь любой тип (точнее, они просто преобразуются в тип Variant и такими уже используются в подпрограмме). Однако необходимо строго следить за соответствием типов переменных в заголовках подпрограмм и в вызывающей их программе. Так, если в заголовке функции указано, что первая переменная, передаваемая ей, имеет тип Integer, то та переменная, которая передается в функцию как первая (в последнем примере - "a"), должна быть определена именно как Integer до вызова функции (что мы и видим в этом примере).

Перед заголовком функции или процедуры можно поставить инструкции Public или Private ("Private Function uvelich(b As Integer, c As Integer) As Integer"). Функция или процедура, объявленная как Public, может вызываться и из других модулей, в то время как функция или процедура, объявленная как Private, доступна только из данного модуля.



По умолчанию все функции и процедуры считаются объявленными как Public (а переменные - объявленные как Private!).

Если в программе есть вложенные процедуры или функции (то есть процедура или функция вызывает другую процедуру или функцию, которая, в свою очередь, вызывает еще одну процедуру или функцию и.т.д.), то их взаимоотношения ("кто кого вызывает?") удобно при отладке отслеживать с помощью окна Стек Вызова (рис.2.3), в котором видны все произошедшие вызовы.

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



Рис.2.3. Окно Стек вызова.

Главная процедура - собственно программа - не может иметь параметров (в ее заголовке должны стоять пустые скобки). Только таким процедурам можно назначать кнопки и сочетания клавиш для их вызова на выполнение.

Во время пошагового исполнения при отладке программы с процедурами или функциями имеется возможность отказаться от прохода по всем командам той или иной процедуры или функции, вызвав команду "Шаг с обходом" из меню Отладка или кнопкой на одноименной панели. Тогда вся процедура или функция будет выполнена безостановочно, как при обычном исполнении.

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

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


ProgressBar в ваших программах


Во многих программах для Windows используется такой элемент, как ProgressBar - индикатор, показывающий, на сколько продвинулся тот или иной процесс. В частности, он есть практически во всех программах-инсталляторах. К сожалению, в VBA этот элемент отсутствует, но его можно сделать самостоятельно!

Выглядеть он будет, например, так, как на рис.5.3.

А делается он следующим образом (предполагается, что у нас есть часть программы, в которой выполняется длинный и долгий цикл: то есть известное нам количество множество однотипных операций, и которую надо снабдить ProgressBar'ом):

1. Создаем небольшую форму и помещаем на нее: надпись с пояснительным текстом (например, "Label1") и две другие надписи, (скажем, "Label2" и "Label3"), низкие и широкие, которые расположим одну над другой (рис.5.4).

К примеру, их координаты и размеры:

Label2: Top - 45, Left - 15, Height - 15, Width - 250

Label3: Top - 45, Left - 15, Height - 15, Width - 0

Зададим в качестве фонового цвета для "Label2" - серый, а для "Label3" - зеленый (свойство "BackColor", вкладка "Палитра").

 

Рис.5.3. ProgressBar в программе на VBA

Рис.5.4. А вот как он сделан

2. Для того, чтобы форма появилась на экране, но могла быть модифицируема программно все время своего отображения, в ее код нужно поместить следующий текст:

Private Sub UserForm_Activate()

… остальной текст программы, которая должна выполняться во время отображения ProgressBar'а …

Unload Me

End Sub

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

3. Идея такова. Ширину третьей надписи "Label3" можно изменять программно.
Поэтому для отображения ProgressBar'а надо вставить в код строки, изменяющие ширину этой надписи. К примеру, цикл в программе выполняется n раз. Тогда ширина надписи "Label3" будет определяться командой в теле цикла по формуле "Label3.Width = (scet / n) * 250", где "scet" - это счетчик цикла, а 250 - ширина надписи Label2.

После каждой такой команды надо вставлять инструкцию "Me.Repaint", чтобы перерисовать форму с учетом новых параметров третьей надписи, - автоматической перерисовки до полного отображения формы (которое произойдет, когда кончится обработка события "UserForm_Activate()" и форма не будет выгружена) не происходит. Если форма с ProgressBar'ом должна долго находится на экране без изменений, то рекомендуется почаще использовать команду "Me.Repaint", так как без перерисовки внешний вид формы может быть легко испорчен окнами других приложений, когда пользователь решит воспользоваться ими во время работы макроса.

Итак, код для формы с ProgressBar'ом должен иметь такой вид ("n" - количество необходимых выполнений цикла):

Private Sub UserForm_Activate()

Me.Repaint

For t=1 to n

… … … … необходимые команды программы в цикле … … … …

Label3.Width = ((t / n) * 250)

Me.Repaint

Next t

Unload Me

End Sub

Разумеется, в нем возможны изменения и улучшения. Можно несколько раз использовать ProgressBar в одной форме, каждый раз обнуляя ширину третьей надписи. Можно поместить на одну форму несколько ProgressBar'ов, где один, например, показывает выполнение всего задания, а другой - его текущей части.


Пусть программа с вами говорит…


Антон Орлов, http://antorlov.chat.ru

Продолжим изучение программирования на Visual Basic for Applications (напомним - сокращенно VBA). Подробные описания теперь уже не нужны - достаточно лишь заострения внимания на некоторых "подводных камнях" или скрытых возможностях.

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

Для создания формы необходимо в любом доступном проекте (шаблоне или документе) из контекстного меню правой кнопки мыши в Менеджере проектов выбрать Вставить-UserForm.

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

Основное отличие программного кода, обслуживающего формы, от кода в обычных модулях заключается в принципе программирования. В то время как программа на VBA вроде той, что была нами совместно написана в предыдущей главе, чаще всего выполняется "последовательно", - то есть все ее команды выполняются одна за другой, и их порядок выполнения изменяется лишь  в зависимости от операторов условного и безусловного перехода "If" и "Goto", форма "реагирует на события" - то есть каждому элементу формы может быть поставлена в соответствие определенная отдельная программа, выполняющая нужные действия.


Большинство программ для Windows, да и сам текстовый редактор Microsoft Word построены именно по такому принципу, - они не "работают сами по себе", а ждут от пользователя команд и "реагируют" на них: выполняют те или иные действия. Так и форма: программист должен разработать ее интерфейс - создать форму, расположить на ней элементы, определить их свойства, а затем написать "программы обработки событий", поместив в каждой такой программе код, который должен быть выполнен, когда то или иное событие произойдет, то есть будет нажата какая-нибудь кнопка на форме или на клавиатуре, введен текст в поле ввода текста, выбран тот или иной флажок на форме и т.д.

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



Закон Джоуля-Ленца.

">Для примера создадим форму, в которой будет производиться подсчет количества теплоты, выделяемой в проводнике при подаче на него разности потенциалов, - пригодится при расчете нагревательных элементов. Согласно соответствующим формулам, Q (количество теплоты в джоулях) = U2 (квадрат величины напряжения в вольтах) * t (время в секундах) / R (сопротивление в омах), при этом R = p (удельное сопротивление материала проводника в омах на метр) * l (длина проводника в метрах) / s (площадь поперечного сечения проводника в квадратных сантиметрах). Таким образом, формула для расчета количества теплоты выглядит так (она также известна под именем закона Джоуля-Ленца): Q=(U2*t*s)/(l*p).

Ее мы и запрограммируем в форме.

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


Не мешало бы еще поместить на форме текст о назначении данной программы и краткую инструкцию по ее использованию, а также сделать у формы приличный заголовок (свойство "Caption" элемента "UserForm").

Для помещения на форму элемента управления достаточно перетащить его с "Панели элементов" на форму.  Вот что получилось (к примеру) - рис.4.1.



Рис.4.1. Форма нашей программы

Поля ввода параметров имеют имена "TextBox1"…"TextBox5" соответственно, поле отображения результата имеет имя "TextBox6", кнопки имеют имена "CommandButton1" и "CommandButton2" сверху вниз соответственно. В элементы "TextBox1"…"TextBox5" пользователь будет вводить текст. Желательно установить свойство Locked элемента "TextBox6" как "True" (рис.4.2), чтобы не допустить случайного ввода пользователем в него текста - к сбою такой ввод не приведет, но возможность такого ввода может вызвать некоторое недоумение у пользователя.

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



Рис.4.2. Установка свойства Locked элемента "TextBox6" как "True"

В нашей программе можно сделать, например, так: пользователь вводит все значения, нажимает кнопку "Подсчитать" (надо будет добавить на форму…), и ему в окне результата выдается подсчитанное значение. Но в этом случае, во-первых, пользователь вынужден выполнять лишнее действие - нажатие на кнопку, а, во-вторых, надо будет продумать систему защиты от неправильных действий пользователя: нельзя допускать ввод нулевых или нечисловых значений в поля "TextBox4" и "TextBox5". Для этого придется либо выдавать в таком случае сообщение о неправильном вводе, либо, что представляется более красивым, ставить в эти поля значения по умолчанию, как только пользователь сделает неправильный ввод и уберет курсор с поля ввода.


Но… все же, как неудобно! Пользователю надо нажимать лишний раз кнопку, постоянно следить за тем, стоят ли в полях ввода именно нужные значения, а не значения по умолчанию (ведь можно при вводе и случайно задеть соседнюю клавишу), да и при программировании возни будет предостаточно - изволь предусмотреть все случаи, на каждый написать программу обработки именно этого случая… Не слишком ли много проблем? А может быть, надо получше подумать о проектировании программы?

Основной принцип такого проектирования - "сделай проще, но без ущерба функциям". Что нам надо? Чтобы был результат. Когда он возможен? Да когда определены все значения в полях ввода, и при этом два нижних (то есть "TextBox4" и "TextBox5") ненулевые. Так пусть результат в своем окне появляется тогда и только тогда, когда все эти условия выполнены. И пусть программа постоянно отслеживает ввод значений в поля ввода и, как только будут введены все пять значений, и последние два будут ненулевые, а остальные - числовые, отобразит результат. Но есть ли такая возможность у языка VBA? А проверим! Откроем окно программного кода формы (из контекстного меню правой кнопки мыши нашей формы в Менеджере проектов выберем "Программа") и из выпадающего списка в левом верхнем углу (рис.4.3) выберем, например, "TextBox1".

Так… появился фрагмент кода:

Private Sub TextBox1_Change()

End Sub



Рис.4.3. Выпадающий список в левом верхнем углу - навигатор по программам элементов формы

"Change" - это по-английски "изменение". Код, написанный в этой части программы (часть эта называется "обработчик события "Change"), должен выполняться всякий раз при происхождении этого события. Можно предположить, что это событие происходит тогда, когда в поле ввода ввели какой-либо символ или удалили его оттуда. В этом случае это - именно то событие, которое нам надо. Но то ли? Проверим. Напишем-ка здесь строчку:

Private Sub TextBox1_Change()



TextBox6.Text=TextBox1.Text

End Sub

Пусть для эксперимента при изменении текста в первом поле ввода произойдет изменение текста в поле отображения результата. Проверим, будет ли это работать, - нажмем F5 (запуск программы на выполнение) и введем текст в первое поле ввода.

Прекрасно - в поле отображения результата появляется тот же текст! Значит, событие "Change" - именно то, которое нам надо использовать в нашей программе, чтобы после каждого нового ввода данных пользователем проверять условия возможности отображения результата и отображать его в случае их выполнения.

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

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

Переведем на язык VBA условие возможности отображения результата. Во-первых, все значения полей ввода должны быть числовыми. В VBA есть специальная функция для проверки того, является ли та или иная строка записью числа - IsNumeric (можно, например, найти ее описание в разделе "Поиск" справки по VBA из Microsoft Office 97 по словам "строковое выражение числовое значение", а в справке VBA из более старших версий этого пакета - по английским эквивалентам данных слов). Ее и используем. Ну, а для проверки отличия от нуля значений в последних двух полях ввода используем функцию "Val".


Итак, результат существует, если

IsNumeric(TextBox1.Text) = True And IsNumeric(TextBox2.Text) = True And IsNumeric(TextBox3.Text) = True And IsNumeric(TextBox4.Text) = True And IsNumeric(TextBox5.Text) = True And Not Val(TextBox4.Text) = 0 And Not Val(TextBox5.Text) = 0

В этом случае можно осуществить подсчет по формуле Джоуля-Ленца:

rez = ((Val(TextBox1.Text) ^ 2) * Val(TextBox2.Text) * Val(TextBox3.Text)) / (Val(TextBox4.Text) * Val(TextBox5.Text))

и отобразить его в поле вывода результата:

TextBox6.Text = Str$(rez)

Теперь можно написать процедуру вычисления результата и вызовы ее из всех обработчиков событий "Change":

Private Sub TextBox1_Change()

Scet

End Sub

Private Sub TextBox2_Change()

Scet

End Sub

Private Sub TextBox3_Change()

Scet

End Sub

Private Sub TextBox4_Change()

Scet

End Sub

Private Sub TextBox5_Change()

Scet

End Sub

Private Sub Scet()

If IsNumeric(TextBox1.Text) = True And IsNumeric(TextBox2.Text) = True And IsNumeric(TextBox3.Text) = True And IsNumeric(TextBox4.Text) = True And IsNumeric(TextBox5.Text) = True And Not Val(TextBox4.Text) = 0 And Not Val(TextBox5.Text) = 0 Then

rez = ((Val(TextBox1.Text) ^ 2) * Val(TextBox2.Text) * Val(TextBox3.Text)) / (Val(TextBox4.Text) * Val(TextBox5.Text))

TextBox6.Text = Str$(rez)

Else

TextBox6.Text = ""

End If

End Sub

В принципе программа уже почти закончена, но стоит еще разобраться с командными кнопками. Для кнопки "Отмена" обработчик события "Click" (то есть нажатия на кнопку) прост - выход из программы:

Private Sub CommandButton2_Click()

Unload Me

End Sub

Но у нас есть еще вторая кнопка - "Вставить результат в документ". А пусть она вставит в документ не просто значение результата, а осмысленную фразу, содержащую как результат, так и введенные параметры! Это можно сделать командой

Selection.Text = "При прохождении тока напряжением в " + TextBox1.Text + " вольт по проводнику длиной " + TextBox4.Text + " метров, сечением " + TextBox3.Text + " кв.мм и удельным сопротивлением " + TextBox5.Text + " ом на метр за " + TextBox2.Text + " секунд выделится" + TextBox6.Text + " джоулей теплоты. "



Она сформирует фразу из значений полей ввода и вставит ее в активный документ. Проверим… так, действительно вставляет, но фраза остается выделенной. А значит, что следующая фраза, выведенная с помощью нашей программы, сотрет предыдущую. Надо посмотреть, нет ли в VBA функции снятия выделения? Посмотрим по выпадающему меню после точки "Selection."… есть команда "Collapse" (то есть "Свернуть"). Из справки по ней узнаем ее синтаксис:

Selection.Collapse Direction:=wdCollapseEnd.

Эта команда убирает выделение и помещает курсор в его конец.

Можно также вставить текст в активный документ "Selection.TypeText Text:="Мой текст" (двоеточие после слова "Text" обязательно, так как это - оператор присваивания значения параметру команды). Тогда в команде специального снятия выделения со вставленного текста не будет необходимости, - после выполнения команды выделенного текста не окажется.

Но что произойдет, если пользователь вдруг вызовет программу тогда, когда открытых документов в Word'е нет? Тогда ведь возникнет ошибка программы. Но этого легко избежать - надо просто проверить перед вставкой, есть ли открытые документы и, если нет, создать новый:

If Documents.Count = 0 Then Documents.Add

Осталась еще одна маленькая деталь. Кнопка "Вставить результат в документ" не должна работать, если результат вычислить нельзя (то есть поле "TextBox6" пусто). Как это сделать?

Среди всего набора возможных свойств элемента "CommandButton" есть свойство "Enabled" - если его установить как "False" (то есть "ложно"), то кнопка будет отображаться серым цветом и не будет реагировать на события (станет неактивной). Это свойство можно задать и программно - командой "CommandButton1.Enabled = False".

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



Вот готовый код нашей программы:

Private Sub CommandButton1_Click()

If Documents.Count = 0 Then Documents.Add

Selection.Text = "При прохождении тока напряжением в " + TextBox1.Text + " вольт по проводнику длиной " + TextBox4.Text + " метров, сечением " + TextBox3.Text + " кв.мм и удельным сопротивлением " + TextBox5.Text + " ом на метр за " + TextBox2.Text + " секунд выделится" + TextBox6.Text + " джоулей теплоты. "

Selection.Collapse Direction:=wdCollapseEnd

End Sub

Private Sub CommandButton2_Click()

Unload Me

End Sub

Private Sub TextBox1_Change()

Scet

End Sub

Private Sub TextBox2_Change()

Scet

End Sub

Private Sub TextBox3_Change()

Scet

End Sub

Private Sub TextBox4_Change()

Scet

End Sub

Private Sub TextBox5_Change()

Scet

End Sub

Private Sub Scet()

If IsNumeric(TextBox1.Text) = True And IsNumeric(TextBox2.Text) = True And IsNumeric(TextBox3.Text) = True And IsNumeric(TextBox4.Text) = True And IsNumeric(TextBox5.Text) = True And Not Val(TextBox4.Text) = 0 And Not Val(TextBox5.Text) = 0 Then

rez = ((Val(TextBox1.Text) ^ 2) * Val(TextBox2.Text) * Val(TextBox3.Text)) / (Val(TextBox4.Text) * Val(TextBox5.Text))

TextBox6.Text = Str$(rez)

CommandButton1.Enabled = True

Else

TextBox6.Text = ""

CommandButton1.Enabled = False

End If

End Sub

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

Назначить форме кнопку или пункт меню для вызова из Word нельзя, - это возможно только для модулей. Поэтому переименуем для красоты форму в "Teplotok", например (свойство "Name" обьекта "UserForm" - можно задать в окне свойств, выделив форму) и напишем модуль, в котором будет всего одна команда - вызов созданной нами формы:



Sub TeploCount()

Teplotok.Show

End Sub

Зададим модулю красивое имя ("Teplo", например, через свойство "Name" обьекта "Модуль1", если модуль для программы вызова формы был вставлен с помощью пункта "Вставить"-"Модуль" контекстного меню правой кнопки мыши в Менеджере проектов) и назначим в Word кнопку для вызова макроса "Normal.Teplo.TeploCount".

Вот и все - наша программа готова! Если вы последовательно выполняли на своем компьютере все приведенные здесь шаги, то можете проверить ее работу. Теперь программу можно вызывать на выполнение соответствующей кнопкой. При желании можно скопировать форму и модуль в отдельный шаблон и создать в нем панель инструментов с кнопкой вызова макроса, - тогда программу можно будет установить и на другие компьютеры, скопировав шаблон с макросом в папку автозагружаемых файлов Word.

*         *         *

Данный текст - глава из книги "Тайны и секреты компьютера (второе издание)", недавно вышедшей в издательстве "Горячая линия - Телеком". Эта книга предназначена для тех, кто самостоятельно осваивает мир информационных технологий. Программирование в среде Microsoft Office, устройство сетей Internet и Fidonet, работа системы электронной почты, структура системного реестра Windows и файловой системы, строение жидкокристаллических дисплеев и проблема наличия различных кодировок русского языка, - про все это рассказывается в ней. Многообразие тем и легкий стиль изложения сделают ее вашим спутником на долгое время, и вы всегда сможете найти в ней нужную именно в данный момент информацию. Если Вы интересуетесь компьютерными технологиями, желали бы расширить свои знания и умения в этой области, то она Вам наверняка понравится. На сайте http://comptain.nm.ru, посвященном этой книге, вы можете ознакомиться с ее оглавлением и аннотацией, прочитать некоторые главы, купить в Интернет-магазине.


Пусть ваш сайт станет удобным


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

Посмотрите на рис.22.12, как выглядят два информера от сайта РосБизнесКонсалтинг (www.rbc.ru), показывающие прогноз погоды в Москве и текущий курс валюты. Информеры от РосБизнесКонсалтинга меняются каждые полчаса, а то и чаще. Так что устаревшей информации у вас не будет.

Получить желаемые информеры можно на сайте, посвященном только им - www.informer.ru. Выбор - огромен. Скажем, как вам англо-русский переводчик прямо у вас на сайте? Не хотите составить конкуренцию Promt'у? А что - если ваш сайт посвящен изучению иностранных языков или англоязычной музыке, то почему бы не облегчить жизнь посетителям? На страницах www.informer.ru можно найти даже такие "сокровища", как информация об именинах на следующий день, указатель погоды в любом городе России в виде большого градусника и многое другое. Вы даже можете сами создать свой информер, указывающий, сколько дней осталось до того или иного события.

Информеры с сайта www.informer.ru можно гибко настраивать под свои желания, подбирая цвет и другие параметры их внешнего вида так, чтобы они подходили под дизайн вашего сайта.

На некоторых новостных сайтах дается возможность ставить на свой сайт "новостные ленты" - нечто вроде информеров текстового формата, показывающие новости за последний час, взятые с этого сайта новостей. Так что смотрите на каждом таком сайте ссылки типа "информер", "лента", "web-мастеру". Также нередко предложение об установке информеров можно встретить на развлекательных сайтах. Например, сайт www.sporu.net обещает предоставлять каждому, кто установит их информер на своем сайте, свежий анекдот каждые полчаса.

Рис.22.12. Зайдя сюда, можно узнать еще и прогноз погоды в Москве

и курс валюты. А все - благодаря РосБизнесКонсалтингу.



Путаница


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

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

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

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

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

Все описанные ситуации могут серьезно затруднить работу с файлами. Общие кластеры приводят к потерям данных, а потерянные - к трате свободного места и утере их содержимого. Чтобы исправить подобные ошибки файловой системы, используются программы для проверки дисков - например, ScanDisk из поставки Windows или Norton Disk Doctor из комплекта Norton Utilities. Эти программы анализируют FAT и структуру каталогов, и в случае обнаружения потерянных кластеров сохраняют их в отдельные файлы, а общие кластеры копируют для каждого из их файлов.

Много интересных материалов об устройствах различных файловых систем и их характеристиках можно найти на сервере www.ixbt.ru, в разделе http://www.ixbt.ru/storage[23].



Работа с формами


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

Создав форму (из меню правой кнопки мыши в Менеджере проектов выберите Вставить-UserForm) или дважды щелкнув на имени существующей формы, можно попасть в окно Дизайна форм. На появившейся панели инструментов "Панель управления" (если ее нет, то ее можно вызвать из меню Вид-Панель элементов) представлены все возможные элементы формы (рис.2.4):

Рис.2.4. Панель инструментов с компонентами форм

1.       Поле отображения текста - отображает текстовую информацию. Просто текст на форме - совет пользователю, к примеру.

2.       Поле ввода текста - дает пользователю возможность ввести текстовую информацию. Потом введенные данные можно обрабатывать в программе. 

3.       Несколько видов списков - средства выбора одного варианта из нескольких представленных, вроде выпадающего списка шрифтов на панели инструментов "Форматирование" в Word.

Значения элементов списков задаются только в программе - при разработке формы с помощью окна "Дизайн форм" их задать нельзя.

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

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

В Microsoft Word имеются диалоговые окна, содержащие как флажки, так и переключатели.
Так, почти все вкладки меню Сервис-Параметры состоят из флажков, а меню Вставка-Сноска - из переключателей.

6.       Выключатель. Это кнопка, которая может находиться в нажатом или отжатом состоянии. Например, в Microsoft Word так себя ведут кнопки показа скрытых символов или форматирования текста курсивом, жирным шрифтом, подчеркиванием.

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

8.       Командная кнопка. Обычная командная кнопка вроде кнопок "Ok" или "Отмена" в любом диалоговом окне.

9.       Набор вкладок и 10. Набор страниц. Представляют из себя набор страничек-вкладок вроде вкладок "Общие", "Сохранение", "Печать" и др. в диалоговом окне Word Сервис-Параметры. Отличие между этими двумя элементами состоит в том, что 9-й элемент при переключении на другую страничку совершенно не затрагивает другие элементы формы, даже и находящиеся на нем, и изменения в состоянии других элементов можно эадать только программно. 10-й же элемент при своем переключении принудительно (т.е. вне зависимости от программы) скрывает элементы на одной своей странице и показывает элементы на другой.

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



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

11.    Полоса прокрутки. Такая же, как и в окне Word. Может передавать в программу число, равное расстоянию в пунктах от ее начала. Верхний предел расстояния неограничен.

12.    Счетчик. Две нажимающиеся кнопки со стрелками. Может передавать в программу свое значение от 1 до 100.

13.    Рисунок. В этот элемент можно вставить из файла рисунок, который будет храниться в форме (и шаблоне или документе с ней). Для вставки самого рисунка нужно после помещения на форму элемента управления Рисунок в Окне свойств выбрать пункт "Picture", нажать на кнопку слева от него и в появившемся окне открытия файла выбрать нужную картинку - рис.2.5.

У каждого элемента имеется свое уникальное имя, а также набор свойств. Их можно посмотреть в Окне свойств, выделив элемент и выбрав из контекстного меню правой кнопки мыши пункт "Свойства".

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

Большой набор свойств также имеет сама форма. С помощью выпадающего меню в Окне свойств можно быстро перейти к свойствам необходимого элемента (рис.2.6).

Рис.2.5. Вставка рисунка.на форму

Рис.2.6. Выпадающее меню Окна свойств - навигатор по элементам формы

Среди наиболее распространенных свойств, имеющихся почти у всех элементов - Caption (т.е. надпись на поверхности или в заголовке, если он есть), Top и Left - координаты верхнего левого угла элемента, Height и Width - высота и ширина, Enabled - доступность для изменений пользователем, TabIndex - число, показывающее, в какую очередь на данный элемент перейдет фокус (т.е. возможность изменения пользователем содержания или состояния) при переходах между элементами с помощью клавиши табуляции (можно запретить такой переход на какой-либо элемент, указав его свойство TabStop как False).


Обратите внимание на свойства Picture, PictureAlignment, PictureSizeMode, PictureTiling собственно формы - с их помощью на поверхность формы можно поместить какой-нибудь фоновый рисунок.

Необходимо помнить, что создание элемента - только начало работы над формой. Сам по себе элемент никаких действий не выполняет, за исключением тех, которые его определяют. Кнопка - нажимается под мышкой или Enter'ом, список показывает значения, во флажке можно поставить и убрать галку, но не более того! Для того, чтобы элемент выполнял какое-нибудь действие при действии с ним, нужно написать для него программу реакции на события.

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

Private Sub CommandButton1_Click()

End Sub

Теперь в текст этой процедуры можно вводить команды, которые выполнятся, если событие в заголовке - Click мыши - произойдет. Это событие считается стандартным для кнопок, флажков, рисунков, рамок, переключателей и окон отображения текста. Для остальных элементов - полей ввода текста, полос прокрутки, счетчиков и др. - стандартным считается событие Change, то есть их изменение.

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

Рис.2.7. Выпадающий список событий.

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

У некоторых событий есть параметры, с которыми информация о его происшествии передается программе.


Так, процедура обработки события KeyDown (то есть нажатия какой- либо клавиши тогда, когда активен данный элемент) имеет вид

Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

End Sub

Переменная KeyCode будет после срабатывания данной процедуры будет иметь значение, равное коду нажатой клавиши, а переменная Shift - 1, если соответствующая клавиша была нажата, и 0, если нет. Эти переменные можно использовать в процедуре.

Все свойства, задаваемые в Окне свойств, можно изменять и из программы. Например, команда TextBox1.Enabled=True даст возможность пользователю ввести текст в поле ввода TextBox1, а команда CheckBox1.Value=False уберет отметку из флажка с именем CheckBox1. Эта возможность делает формы VBA динамическими - то есть содержимое форм может меняться немедленно в ответ на действия пользователя без выгрузки и повторной загрузки формы.

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

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

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

Стоит иметь в виду, что после выгрузки формы (методом Unload Me) все переменные, описанные в программе реакции формы на события, обнуляются. Поэтому после выгрузки формы получить от нее какие-либо данные уже нельзя.


Если в результате работы формы в основную программу должны передаваться какие-либо данные, то тогда нужно в основной программе объявить несколько переменных с помощью инструкции Public (т.е. сделать их доступными для чтения и изменения из любого другого модуля), а затем в программе реакции формы на события записать в них всю необходимую информацию, полученную от пользователя, и использовать значения этих переменных в основной программе.

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

Формы, так же как и модули, могут быть сохранены в отдельных файлах путем экспортирования функцией "Экспорт файла" своего контекстного меню правой кнопки мыши в Менеджере проектов или путем перетаскивания ее названия из Менеджера проектов в Explorer. Но, в отличие от модулей, при сохранении форм получается два файла, в одном из которых содержится текст программы реакции формы на события, а в другом - информация о расположении элементов на форме, их свойствах, а также рисунки и фон формы. Поэтому при импортировании формы необходимо, чтобы оба этих файла были в одной папке.


Работа с формами


Значения переменных можно передавать между различными страницами сайта - с помощью использования форм. Формой называется конструкция, состоящая из поименованных элементов особых типов, заключенных между HTML-тэгами <form…> и </form>. В качестве элементов формы могут выступать поля ввода текста, кнопки, выпадающие меню, переключатели, квадратики для отметки галочкой - checkbox'ы, а также картинки формата jpg или gif.

Наиболее важным свойством формы является то, что в ее заголовке - в открывающем тэге <form…> можно указать адрес какого-либо файла, и тогда при его загрузке в программный код этого файла, если он будет там присутствовать, передадутся значения всех переменных, установленных в этой форме - в частности, значения всех элементов формы, как если бы эти значения были установлены в программе, расположенной в самом загружаемом файле. Таким образом можно передавать значения переменных между различными web-страницами, используя их в программном коде. Имена переменных соответствуют тем именам, которые были даны элементам формы в их тэгах, а значения - соответственно значениям этих элементов: для поля ввода текста - введенному тексту, для переключателя или checkbox'а - True при отмеченном и False при неотмеченном, для рисунка - координаты указателя мыши относительно верхнего левого угла изображения, для выпадающего меню (элемент <select name="имя"><option value="text1">text</option>…</select>) - значение параметра value выбранного пункта option.

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



Разделы


В начале жесткого диска, в его самом первом секторе самой первой дорожки располагается небольшая программа - так называемая "главная загрузочная запись" Master Boot Record. В том же секторе помещается Корневая Таблица Разделов ("Root Partition Table"), в которой располагаются сведения о разбиении всего физического пространства жесткого диска на разделы - участки диска с определенной файловой системой на них.

Раздел - это кольцевидная зона поверхности жесткого диска, находящаяся между двумя определенными цилиндрами. В Корневой Таблице Разделов указывается для каждого раздела, с какого сектора какой дорожки какого цилиндра он начинается и на каких заканчивается, сколько в нем всего секторов, какой тип файловой системы на нем установлен и является ли данный логический диск в данный момент загрузочным - то есть должна ли операционная система загружаться именно с него. Согласно стандартам IBM PC, всего в Корневой Таблице Разделов может быть описано не более четырех различных разделов, так как ее размер не должен превышать 512 байт вместе с Master Boot Record.

Внутренняя структура раздела определяется той файловой системой, которая на нем создана. Однако в начале каждого раздела обязательно располагается Загрузочная запись раздела ("Boot Record") - небольшая программа, выполняющая начальную загрузку операционной системы. Один из разделов, описанных в Корневой Таблице Разделов, помечается как "загрузочный", или "активный", и при загрузке компьютера Master Boot Record считывает Корневую Таблицу разделов, а затем считывает и запускает Boot Record того раздела, который помечен в этой таблице как загрузочный. (Сама Master Boot Record запускается BIOS'ом, запрограммированным считывать с диска и запускать на исполнение содержимое его первого сектора.)

С понятием "раздела" тесно связано понятие "логического диска", использующееся в операционных системах MS DOS и Windows. "Логический диск" - это некоторая часть жесткого диска, представляемая операционной системе как отдельное физическое устройство - как отдельный жесткий диск.
При наличии нескольких логических дисков проще организовывать хранение данных, в частности, можно разнести системные файлы и данные пользователя.

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

Структура этого Расширенного раздела DOS такова. В его первом секторе расположена Таблица Разделов Расширенного раздела DOS с точно такой же структурой, как и Корневая Таблица Разделов. Только описываются в ней координаты начала и конца первого логического диска в этом Расширенном разделе (точно так же, как и каждого раздела в Master Boot Record), его тип файловой системы, а также координаты начала и конца зоны, занимаемой остальными логическими дисками, если они есть. Соответственно в первом секторе зоны остальных логических дисков находится Таблица Разделов с информацией о втором логическом диске, расположенном в Расширенном разделе Dos, и зоне, занимаемой следующими за ним дисками. В итоге получается как бы ряд вложенных друг в друга, как матрешки, разделов, в каждом из которых имеется по Таблице Разделов, описывающей координаты одного логического диска и зоны, занимаемой следующими дисками. Такая структура может показаться сложной, но только она дает возможность совместить большое количество логических устройств и ограниченный размер Таблиц Разделов.

Все изложенное проиллюстрировано на рис.8.6.



Рис.8.6. Структура жесткого диска, на котором в MS-DOS или Windows выделено несколько логических дисков.

Операционные системы MS-DOS и Windows допускают создание на жестком диске лишь одного Расширенного раздела DOS. Остальные разделы при этом могут содержать не более одного логического диска (то есть границы этих дисков попросту совпадают с границами разделов) и именуются Первичными разделами DOS.



В начале каждого логического диска размещается его Загрузочная запись ("Boot Record"), содержащая в себе информацию о размерах кластера на данном диске, а также о местах начала и конца обеих копий FAT, если на этом диске используется именно такая файловая система. Если логический диск является загрузочным (а это возможно в том случае, если он расположен в Первичном разделе DOS, помеченном в Корневой Таблице Разделов как активный, - в этом случае Master Boot Record загрузит Boot Record именно этого диска в память и запустит ее), то в его Boot Record содержится также и программа, обеспечивающая считывание файлов операционной системы, отвечающих за ее начальный запуск. Эта программа может считывать лишь определенные секторы диска (обычно, хоть и не обязательно, находящиеся сразу за корневым каталогом), поэтому и файлы начального запуска операционной системы обязательно должны располагаться в местах, известных BootRecord[21].

На логических дисках, не являющихся загрузочными (например, расположенным в Расширенном разделе Dos), Boot Record служит просто для хранения информации о файловой системе.

Для разбиения нового жесткого диска на разделы часто используется программа Microsoft FDisk, входящая в состав MS-DOS и Windows 9x. При работе FDisk создаются Таблицы Разделов и все Загрузочные записи.



Рис.8.7. Microsoft FDisk

">Если вы подготавливаете с помощью FDisk к работе новый чистый жесткий диск, единственный в компьютере, то FDisk следует скопировать на загрузочную дискету (вы можете найти эту программу в Windows 95/98 в подкаталоге Command папки, где установлена Windows) при ее изготовлении, а затем загрузиться с этой дискеты и запустить программу. После запуска FDisk вы увидите вопрос о включении поддержки больших дисков. Согласившись на ее использование, вы сможете создавать разделы с файловой системой FAT32. Сделать это стоит. Затем вы перейдете в основное меню программы (рис.8.7), после чего можете выполнять разбиение диска. Интерфейс у программы достаточно понятный, так что работать с ней легко, если, конечно, знать о значении всех терминов.


После окончания работы fdisk не забудьте отформатировать полученные логические диски командой format (из них диск С: - как системный: format C: /s). Все - жесткий диск готов для установки на него операционной системы.

Например, сначала на пустом диске выделите Primary Dos Partition - основной раздел DOS размером в 2-4 гигабайта. Все остальное место отведите под Extended DOS Partition - дополнительный раздел DOS, если вы, конечно, не собираетесь работать с Unix или Linux. В Extended DOS Partition выделите 3-5 логических дисков обьемом до 2 гигабайт, а остальное отведите под один большой диск.

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

У программы FDisk есть также некоторые неявные параметры, которые могут иногда помочь восстановить работоспособность компьютера. Скажем, некоторые вирусы в результате своей деятельности уничтожают содержимое Master Boot Record, и компьютер перестает загружаться, так как не может найти и использовать Корневую Таблицу Разделов (ведь именно это делает программа, записанная в Master Boot Record). Исправить эту ситуацию можно, загрузив компьютер с дискеты, содержащей FDisk, и введя команду fdisk/mbr. Если у вас два или больше жестких дисков, то ключ должен выглядеть как /cmbr <номер диска> для восстановления загрузочной записи на соответствующем устройстве.

Возможности FDisk по работе с диском несколько ограничены - в частности, она умеет выделять только один Первичный раздел DOS на одном жестком диске. Поэтому на дисках, подготовленных с помощью FDisk, присутствуют лишь Первичный раздел DOS, содержащий загрузочный логический диск (по традиции обозначаемый буквой С) и Расширенный раздел DOS, содержащий цепочку логических дисков. Программа Disk Administrator, входящая в состав Windows 2000/XP, является более мощной и позволяет использовать Корневую Таблицу Разделов по максимуму, создавая на диске до 4 Первичных разделов DOS.



С помощью специальных программ, так называемых "менеджеров загрузки" можно модифицировать вышеописанную структуру жесткого диска, создав на нем больше 4 отдельных разделов с различными файловыми системами или предоставив пользователю при загрузке компьютера выбор, с какого раздела осуществлять загрузку операционной системы. Подробнее о таких программах читайте в Главе 26. В той же главе вы найдете подборку ответов на некоторые часто задаваемые вопросы о структуре жестких дисков и установке операционных систем.

Если на жестком диске уже есть информация, но его разбиение на логические диски вас не устраивает, то его можно изменить с помощью той же Partition Magic. Эта программа самостоятельно перестроит структуру диска, не стирая данные. Существует много специальной литературы об эффективной работе с ней, в том числе и книг, так что если интересуетесь, почитайте их или ознакомьтесь с ее Руководством пользователя. Partition Magic также может использоваться вместо FDisk или Disk Administrator, так как ее интерфейс удобнее, а сама она работает быстрее, чем упомянутые программы.


Размеры и обьемы


Размер одного кластера определяется размером логического диска и установленным типом файловой системы. Операционные системы MS-DOS, Windows 3.11 и первые версии Windows 95 могли работать лишь с файловой системой FAT16. Размер одной записи в FAT16 (содержащей номер следующего кластера файла), как уже было сказано, составляет 16 бит. Поскольку 2 в 16-й степени составляет 65536, то и количество номеров кластеров, а, следовательно, и самих кластеров при использовании 16-разрядной таблицы размещения файлов на одном логическом диске не может быть больше 65536. Так как максимальный размер кластера в FAT16 согласно стандартам может составлять 32 кб (это, впрочем, не фиксированное ограничение), то и максимальный размер логического диска с FAT16 будет 32*65536=2 гигабайта.

Поскольку в FAT16 может адресоваться не более 65536 кластеров, то в ней не может быть больше 65536 записей. При длине одной записи в 16 бит обьем самой FAT16 составит тогда 128 кб.

В файловой системе FAT32 для указания номеров следующих кластеров в файле используется записи длиной в 32 бита. Следовательно, всего в ней может адресоваться 232= 4294967296 кластеров. При размере кластера в 32 кб максимальный обьем логического диска с FAT32 составит 232*32 кб=131 гб (а размер самой FAT тогда составит 16 гигабайт!), что превышает размеры большинства существующих сейчас моделей винчестеров. Поэтому возможность выделения на логическом диске такого большого количества кластеров используется для того, чтобы уменьшить размер кластера - обычно он для FAT32 составляет 4 кб. Но даже при таком малом размере кластера максимальный обьем логического диска составит 16 гб, поэтому обычно все возможности системы FAT32 не используются и количество кластеров на диске меньше 232.

Так как, во-первых, для размещения информации о кластере в FAT32 используется в два раза больше места, чем в FAT16, а, кроме того, количество кластеров при использовании FAT32 бывает куда как больше, чем 65536, например, при размере кластера в 4 кб и размере диска в 8 гб кластеров будет 2147483648, то размер самой 32-разрядной таблицы FAT значительно больше размера 16-разрядной - в данном случае 8 мегабайт против 128 кб.
Это, в частности, приводит к тому, что на компьютерах с малым количеством оперативной памяти вся 32-разрядная FAT не умещается в оперативной памяти при ее недостаточном количестве и при работе с файлами операционной системе приходится часто считывать ее нужный фрагмент с диска, что вызывает снижение быстродействия. Кроме того, при большом количестве кластеров таблица FAT занимает весьма много места на диске и тем самым сокращает его полезный обьем, тем более что на диске всегда имеется две ее копии - одна из них резервная. (Именно поэтому обьем установленного в компьютер и отформатированного жесткого диска всегда меньше того обьема, который указывает для него производитель, - потому что некоторую часть диска занимают две копии FAT и некоторая служебная информация.)

С файловой системой FAT32 могут напрямую работать операционные системы Windows (за исключением Windows 3.11 и первых версий Windows95), а также Linux с помощью особых программ.

Информация о типе файловой системы, размере кластера, размере самой таблицы FAT, а также о количестве копий FAT на жестком диске содержится в Boot Record, находящейся сразу перед первой копией FAT.


Размещение


Долгие дни, а то и ночи труда по созданию вашего представительства в Web наконец-то завершились! И вот, наконец ваш сайт готов и лежит в отдельной папке на вашем компьютере. Сделаны все страницы, написаны все скрипты, нарисованы картинки… Теперь надо поместить сайт во всемирную сеть Интернет.

Вариантов такого размещения, по большому счету, два. Можно приобрести у RIPE отдельный IP-адрес (или сразу несколько адресов) и, приобретя мощный компьютер и подключив его к какому-либо маршрутизатору, уже входящему в Интернет, тем самым стать владельцем полноценного узла Сети. Однако данный вариант весьма сложен и дорог: стоимость оборудования, необходимого для такого подключения, достигает многих тысяч долларов, кроме того, за выделение IP-адреса, за само подключение к маршрутизатору и за передаваемые данные тоже придется платить, - соответственно RIPE и владельцу маршрутизатора. Да еще и самостоятельно настраивать все программное обеспечение приобретенного компьютера, чтобы превратить его в web-сервер.

В связи с весьма большой стоимостью и трудностями обслуживания размещение сайта на отдельном собственном компьютере, входящем в Сеть, - прерогатива крупных предприятий и провайдерских фирм[54]. Для простого частного сайта (или сайта небольшой компании) данное решение будет крайне невыгодным и неокупаемым. Поэтому в Интернете существуют специальные "службы хостинга"[55], которые берут всю заботу по установке компьютерной техники и подключению ее к Сети, а также по настройке и обслуживанию программного обеспечения на себя. Каждому пользователю такой службы выделяется часть места на жестких дисках ее компьютеров, и ему для создания сайта и его дальнейшего развития достаточно лишь размещать файлы на своем сайте в соответствии с требованиями хостера. Доступ из Интернета к сайтам пользователей, размещенным на службе хостинга, организуется с помощью использования виртуального хостинга[56], что позволяет иметь на все такие сайты только один IP-адрес или их небольшое число.


В свою очередь, все службы хостинга можно разделить на три группы. Во-первых, это коммерческие предприятия, предоставляющие хостинг за деньги. Таковых немало - в RuNet'е это, например, www.majordomo.ru, www.net.ru, www.valuehost.ru и другие. Коммерческие службы хостинга обычно предоставляют своим клиентам немало возможностей по работе с сайтом, - от поддержки большого числа языков сценариев, выполняющихся на стороне сервера (например, PHP, Perl) до организации на сайте почтовой службы. Цены на услуги коммерческого хостинга в настоящее время варьируют от 10 до 60-70 долларов за сайт среднего обьема в месяц. Все коммерческие хостеры дают возможность своим клиентам привязать к размещенному у них сайту принадлежащее клиенту доменное имя (обычно - второго уровня), а некоторые даже оказывают услуги по его регистрации, иной раз по более низким ценам, чем непосредственно в РосНИИРос'е и Ru-центре.

Во-вторых, хостинг может быть предоставлен и бесплатно. В Сети есть специальные службы, предоставляющие возможность бесплатного размещения у себя сайтов для всех без исключения. Несмотря на известное выражение про сыр и мышеловку, качество базовых услуг на некоторых из них иной раз не уступает и платным сервисам. Живут службы бесплатного хостинга в основном за счет показа рекламы на страницах управления сайтом. Однако все они предоставляют пользователю лишь доменные имена третьего уровня (типа name.hoster.ru) или даже длинные адреса (например, www.hoster.ru/~name). На некоторых службах бесплатного хостинга есть возможность привязывать зарегистрированное ранее доменное имя второго уровня к сайту, размещенному на них, однако таковых служб довольно мало.

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


Доход от показа этих баннеров идет владельцам службы хостинга.

На настоящий момент в России наиболее известными являются такие сервера бесплатного хостинга, как www.netman.ru (предоставляет 10 мегабайт для почтового ящика и сайта с доменным именем третьего уровня, в качестве же основного домена для такого имени предлагается немалый набор имен второго уровня - от fromru.com до professor.ru), www.chat.ru (дают 10 мегабайт места и доменное имя третьего уровня name.chat.ru), www.newmail.ru (32 мегабайта места, имена третьего уровня вида name.nm.ru), www.h1.ru (разрешают выполнять сценарии на стороне сервера при условии обязательного размещения рекламы, запрещают размещать архивы и mp3-файлы). Конкретные условия размещения сайтов всегда указаны на страницах сайта самой службы хостинга. На многих серверах бесплатного хостинга существуют так называемые "конференции технической поддержки", в которых пользователи могут задать вопросы, высказать пожелания. Обязательно отыщите такую конференцию на том сервере, где вы хотите разместить сайт, и почитайте сообщения в ней, чтобы знать, чего от этого сервера можно ожидать.

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

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

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



Стоит также иметь в виду, что оплата платного хостинга всегда повременная (то есть необходимо платить определенную сумму каждый год или месяц), как, впрочем, и оплата доменного имени второго уровня (она вносится сразу за год). При неоплате очередного месяца сайт может быть удален. На бесплатных же хостингах удаление сайтов либо вообще не производится (как на www.chat.ru), либо совершается после 6-12 месяцев отсутствия обновлений сайта (как на www.newmail.ru, www.h1.ru) или посещения web-интерфейса управления сайтом (как на www.netman.ru). Так что если вы не желаете ежемесячно платить какие-либо деньги или беспокоитесь, что в будущем можете не суметь этого сделать, - выбирайте бесплатный хостинг.

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

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

·  отсутствие абонентской платы за собственно сайт;

·  хранение сайта все время, пока на счету пользователя есть деньги;

·  отсутствие обязательного ежемесячного списания денег со счета при пользовании услугами по доступу в Интернет;

·  хранение счета неограниченное время;

·  возможность доступа к файлам сайта для его обновления при доступе в Интернет через другого провайдера.

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


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

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

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

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

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


Ну, а затем для каждого из web-мастеров создать папку и сопоставить ей выбранное им имя третьего уровня. В таком случае можно будет использовать все возможности платного хостинга (надежность, поддержку CGI-сценариев) за меньшие деньги. Разумеется, есть и недостатки - у всех web-мастеров будет один логин и пароль на доступ к аккаунту, что снижает защищенность сайта от взлома путем похищения пароля, а совокупное место, предоставляемое хостером согласно выбранному тарифному плану, придется делить на несколько частей согласно внесенной каждым доле.



поисковые системы

и каталоги

http://www.yandex.ru

http://www.aport.ru

http://www.list.ru

http://www.rambler.ru

http://www.ru

http://www.weblist.ru

http://www.logoslovo.ru

http://www.webgid.ru

http://www.susanin.net

http://www.catalog.chat.ru

http://www.kot.ru

http://www.up.ru

http://www.ulitka.ru

http://www.look.ru

http://www.stars.ru

http://www.hi.ru

Некоторые зарубежные

поисковые системы

и каталоги

http://www.googlie.com

http://www.altavista.com, http://www.yahoo.com, http://www.lycos.com, http://www.infoseek.com, http://www.excite.com, http://www.hotbot.com, http://www.euroseek.net

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


Редактор реестра


Сами по себе файлы реестра являются двоичными. В этом может убедиться каждый, открыв копию, скажем, User.dat в текстовом редакторе вроде Microsoft Word 6.0. Но в составе Windows есть специальная программа - Редактор реестра, которая представляет системный реестр в виде, удобном для восприятия. Это           - файл regedit.exe из папки Windows. При установке операционной системы ярлык на этот файл в меню кнопки "Пуск" не появляется, так что создать его там нужно самому.

При запуске программы regedit.exe (рис.14.1) перед пользователем предстает иерархическая структура системного реестра, несколько похожая на Проводник. В левой части окна программы расположено дерево разделов реестра, а в правой отображаются параметры (другое название - "ключи") и их значения, если они присутствуют в разделе. Все разделы реестра являются подразделами пиктограммы "Моего компьютера" в окне реестра, так как при работе в сети на основе Windows есть возможность редактировать реестры на удаленных компьютерах, и если бы с помощью меню "Реестр" к данному редактору реестра был бы подключен еще и сетевой реестр, то он бы отображался в качестве подраздела пиктограмы своего компьютера.

Рис.14.1. Программа Редактор реестра.

Вся навигация по реестру в Редакторе реестра аналогична таковой в "Проводнике". Единственное отличие - в правой части окна редактора реестра никогда не появляются пиктограммы разделов. Нажатиями на знак "+" или двойными кликами на пиктограммах разделов можно добраться до любого раздела и параметра. Чтобы переименовать раздел или параметр, нужно выбрать соответствующий пункт из контекстного меню или нажать F2. Изучить возможности Редактора реестра по редактированию не составит труда. В Редакторе реестра также есть возможность поиска названия раздела, параметра или значения.

В Редакторе реестра имеется возможность записать всю древовидную структуру реестра в текстовый файл (с расширением .reg), например, чтобы потом ее изучить или сравнить с другой. Для этого служит команда "Экспорт файла реестра" из меню "Реестр". Есть возможность записать в текстовый файл лишь выделенный раздел, для этого нужно отметить специальный пункт в окне экспорта реестра.

При редактировании реестра имейте в виду, что команды "Отменить" в Редакторе реестра нет. Так что удаление раздела или параметра необратимо.

Если вы хотите посмотреть, что меняется в системном реестре под действием той или иной программы, то воспользуйтесь программой RegSnap с сайта http://webdon.com[34]. Она экспортирует реестр в текстовые файлы до и после действия исследуемой программы, а потом сравнит эти два файла и выяснит, какие ключи были добавлены, удалены, изменены.



Редактор Visual Basic for Applications


В Microsoft Word этот редактор вызывается из меню "Сервис"-"Макросы"-"Редактор Visual Basic" или нажатием клавиш Alt-F11. Окно редактора VBA (рис.1.3.) состоит из следующих частей: Менеджер проектов, Окна текста программ и дизайна форм, Окно свойств, Окно отладки, Окно контрольного значения, Окно локальных переменных, Стек вызова, Окно просмотра обьектов. Каждое окно может как отображаться на экране, так и нет. Ниже мы рассмотрим все эти компоненты подробнее.

Программы на VBA для среды Word хранятся в документах и шаблонах Word. (Другие форматы для хранения макросов непригодны.) Каждый документ или шаблон, содержащий макросы, называется проектом. В окне Менеджера проектов отображаются названия всех доступных Word проектов, в состав которых входят открытые документы и шаблоны, а также шаблоны, загруженные глобально - через помещение их в папку автозагружаемых файлов Word. Кроме того, всегда в этом окне отображается шаблон Normal.dot со всеми макросами, сохраненными в нем (см.рис.1.4).

Рис.1.3. Редактор VBA. Отображаются Менеджер проектов,

Окно текста программ и дизайна форм, Окно свойств, Окно отладки

Рис.1.4. Менеджер проектов.

Отображаются три проекта и их компоненты.

Рис.1.5. Контекстное меню обьекта ThisDocument.

">Щелкнув мышью по знаку "+" слева от названия, можно открыть список имеющихся компонентов проекта. Однако так можно поступить лишь с проектами, открытыми в Word: шаблон, загруженный глобально (т.е. путем помещения его в папку автозагружаемых файлов Word), так открыть нельзя, - чтобы получить доступ к его коду для редактирования, необходимо открыть его как файл. Иначе при попытке просмотра будет выдано сообщение "Проект недоступен для просмотра" и доступ к коду будет невозможен.

Просмотр компонентов проекта можно запретить путем задания пароля, однако делать так не стоит.

Компоненты каждого проекта делятся на пять больших категорий:

1. "Microsoft Word обьекты". В макросах для Word здесь имеется только один обьект - называющийся по умолчанию ThisDocument.
Его контекстное меню, появляющееся при нажатии правой кнопки мыши, выглядит так, как показано на рис.1.5.

При выборе пункта Обьект (для Normal.dot недоступен) произойдет переход к соответствующему документу - к его содержимому: тексту, графике. В документ Microsoft Word можно вставить специальные обьекты - кнопки, поля ввода текста, поля выбора вариантов и др. В этом случае после выбора пункта Программа контекстного меню обьекта ThisDocument можно написать программу, которая будет выполняться при нажатии соответствующей кнопки, введении текста и др. К написанию такой программы можно перейти и из контекстного меню самого специального обьекта в документе - выделив его, нажав правую кнопку и выбрав пункт "Исходный текст".

В Microsoft Excel в Редакторе VBA в качестве обьектов представлены все листы рабочей книги Excel по отдельности, а также сама книга как целое.

2. "Модули." Модули - это и есть то место, где хранятся сами макросы. Щелкнув два раза мышью на имени модуля, можно получить доступ к тексту программы или начать ее создавать. В одном модуле может содержаться несколько макросов.

Программы, записанные пользователем с помощью средства записи макросов, хранятся по умолчанию в модуле NewMacros шаблона Normal.dot.

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

3. "Модули класса". Класс - это особое понятие, играющее очень важную роль в программировании. Для начала коротко можно сказать, что в данном случае это - "тип обьектов, определяемых программистом". К примеру, надо написать программу, которая работает с электронными версиями классных журналов в школе. В каждом журнале есть множество подразделов: и список учеников, и список их оценок, и система вычисления средней оценки каждого из учеников, и список предметов, и много чего еще… Можно, конечно, на VBA описать устройство каждого классного журнала: создать списки учеников, организовать таблицы с оценками, но тогда при однотипных действиях с группой журналов (например, надо посчитать средний балл оценок всех учащихся седьмых и восьмых классов) придется включать в код очень много операций с каждым компонентом журнала.


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

Поэтому в VBA, как и в других языках программирования, имеется понятие класса - то есть типа обьектов. Новые классы можно создавать самим. Так, можно создать класс "Журналы" и описать в его модуле класса содержимое обьектов этого класса: список учеников - (в коде это реализуется строкой Public Ученики(40) As String), предметов (Public Предметы(20) As String) и др. Теперь для создания нового обьекта класса "Журналы" - нового журнала - не надо заниматься утомительным описанием вновь создаваемых списков учеников и предметов: будет достаточно в одной строчке написать команду "Обьявить новую переменную класса Журналы" (Dim Журнал25 As Журналы) и присвоить нужные значения соответствующим разделам этого новосозданного журнала (Журнал25.Ученики(1)="Андреев" и.т.д.). Кроме того, можно в модуле класса написать программу вычисления средней оценки всех учащихся, и при необходимости сделать такой подсчет вызывать ее одной командой.

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

4. "Формы". Формы - это диалоговые окна программ, которые можно разработать по своему вкусу. Для того, чтобы в проект добавить форму, надо из контекстного меню в Менеджере проектов выбрать пункт "Вставить"-"UserForm". Будет создано пустое диалоговое окно, в которое можно поместить кнопки, картинки, текст и др. Пример сложной пользовательской формы - на рис.1.6.



Рис.1.6. Пример сложной пользовательской формы

5. "Ссылки". Программы могут запускаться на выполнение не только в результате действий пользователя, но и в результате вызова из другой программы. Однако запустить программу можно только из загруженного в Word проекта (шаблона или документа). Если постоянно загружать проект нецелесообразно (например, подобный вызов используется достаточно редко), то для запуска из загруженного проекта программы из другого, незагруженного шаблона нужно поставить на него ссылку (делается это путем простого перетаскивания иконки шаблона в окно Менеджера проектов).В таком случае будет возможен доступ ко всем программам в этом шаблоне из программ проекта, в котором находится ссылка.


Регистрация сайта в поисковых системах


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

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

Поисковые машины действуют по несколько другому принципу. Они как бы "сканируют" Сеть, составляя базу данных из встреченных по пути слов. Название "машина" условное - она представляет собой попросту программу, запущенную на каком-либо компьютере. (Поскольку "сканирование" Сети и поддержание базы данных по словам требует очень высоких вычислительных ресурсов, то обычно для работы такой программы выделяется отдельный компьютер или даже несколько, - например, www.yandex.ru располагается на четырех компьютерах, работающих как одно целое под управлением специального программного обеспечения.) К примеру, такой поисковой программе дается адрес какой-либо web-страницы.
Программа загружает страницу, вносит в свою базу данных все (или часть - например, первые двести) слова, встречающиеся на ней и помечает в базе данных, что эти слова встречаются на web-странице по такому-то адресу. Затем программа просматривает страницу на предмет наличия на ней гиперссылок на другие страницы и загружает уже их, и цикл повторяется. Если ссылки со страницы ведут за пределы данного сайта, то поисковая программа исследует и те сайты, на которые ее приведут эти ссылки. Адрес каждой просмотренно странички вносится в базу данных, и поисковая программа впоследствии неоднократно возвращается к ним (например, раз в четырнадцать дней), чтобы отследить возможные изменения. Если страничка перестает существовать, то ее адрес убирается из базы данных.

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

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

Перед регистрацией рекомендуется сделать небольшой текстовый файл, в котором поместить:

·

название сайта,

·         его URL,

·         ваш адрес электронной почты,



·         ваше имя,

·         описание сайта длиной до 200 символов,

·        



российские серверы

бесплатных

программ

http://www.freeware.ru

http://www.listsoft.ru

http://www.freesoft.ru

http://www.download.ru

http://www.softarea.ru

http://www.softpile.com

http://www.chasik.com

http://files.com.ua

">описание сайта длиной до 500 символов,

·         описание сайта с произвольной длиной,

·         набор ключевых слов через пробелы длиной до 200 символов,

·         набор ключевых слов через запятые длиной до 200 символов.

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

Если часть сайта написана на английском языке, то стоит составить и его английское описание. Некоторые каталоги (например, www.ru) позволяют поместить у себя описание сайта как по-русски, так и по-английски. Кроме того, в этом случае можно зарегистрировать сайт и в иностранных поисковых системах.

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

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


Да и цифры посещаемости большинства подобных каталогов невелики.

Следует избегать регистрации в каталогах, требующих в качестве обязательного условия размещение на регистрируемом сайте ссылки на каталог или счетчика. Вы ведь зарегистрируете свой сайт во многих каталогах, - представляете, сколько вам предстоит ставить ссылок? А ведь почти всегда тебуется не простая ссылка, а логотип, то есть рисунок, который иногда даже должен каждый раз загружаться с удаленного сервера. Если на странице будет больше пяти-шести таких картинок, то загружаться она будет крайне долго. А если какой-нибудь из серверов с картинками еще к тому же и работать не будет, то вместо картинки останется пустое место, что испортит дизайн страницы (рис.21.1).



Рис.21.1. Сколько здесь было картинок с ссылками на разные каталоги!

Но вот незадача - недогрузились и испортили весь вид страницы.

Исключение из этого правила составляют лишь счетчики посещений - весьма полезные дополнения для сайта. На настоящее время в Сети есть немало сайтов - "серверов статистики", предоставляющих счетчики. Например, www.top.list.ru, www.hotlog.ru, www.logoslovo.ru и др.  При регистрации на таком сайте вы должны указать адрес своего сайта и его краткое описание, а взамен вам предоставят фрагмент HTML-кода, который необходимо разместить на своем сайте. Код представляет из себя набор JavaScripts, которые отправляют на сервер статистики информацию о посетителе (модель и характеристики браузера, разрешение монитора, страницу, с которой посетитель пришел на сайт и некоторые другие параметры), а также отображают сам счетчик с указанием количества посетителей. Впрочем, встречаются системы счета статистики, не требующие размещения на сайте видимого счетчика, - например, www.hotlog.ru.

Серверы статистики, особенно www.hotlog.ru, предоставляют весьма подробные отчеты о посещаемости сайтов, на которых стоят их счетчики. Так, из этих отчетов вы сможете узнать, с каких сайтов к вам чаще всего приходят посетители, какие слова, введенные в поисковые сервера, чаще всего приводят посетителя к вам на сайт, какие у ваших посетителей браузеры, операционные системы.Доступна даже информация о географическом местоположении посетителей. Эти данные могут серьезно помочь при разработке плана рекламы сайта. На серверах статистики имеются богатые возможности по настройке параметров счетчиков.

 Многие системы, предоставляющие счетчики, одновременно являются также и каталогами (например, www.logoslovo.ru, тот же www.hotlog.ru). Весьма неплохо устанавливать на сайт лишь такие счетчики посещений, которые предоставляются каталогами - чтобы и посетителей считать, и в каталоге присутствовать. Поэтому после создания сайта посетите какой-нибудь сервер статистики и создайте там себе счетчик. Во всяком случае, всегда будете знать, скольким людям вы хотя бы попытались помочь достать нужную информацию.


Реклама мини-сайта: немного рекомендаций


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

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

Для начала снова и снова стоит повторить старую, но, увы, столь часто игнорируемую истину: самая лучшая реклама сайта - его интересное содержание. Сайт, на котором помещена "пара фоток и ссылок" или "крутой" текст о том, как "классно" автор сайта кликает по кнопкам в FrontPage, будучи даже "раскрученным" согласно всем рецептам, ничего, кроме отвращения к его автору, у населения Сети не вызовет. Поэтому перед тем, как решиться на раскрутку сайта, задайте себе вопрос - а вам приятно было бы зайти на такой же сайт, если бы его создал другой человек, а не вы? И если нет - сделайте выводы.

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



Рекламная кампания


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

Рис.21.2. Баннеры

Баннером[57]

называется рисунок в формате Gif или Jpeg, рекламирующий какой-либо ресурс Интернета и имеющий определенный размер. При размещении на web-странице баннер является ссылкой, ведущей на рекламируемый ресурс, то есть пользователь компьютера, нажавший на баннер, перейдет на тот сайт Интернета, который рекламируется этим баннером.

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

Баннерная сеть устроена так. В Интернете с помощью специального программного обеспечения создается особый ресурс. На нем организуется база данных, содержащая адреса сайтов-участников и их баннеры - обычно картинки в формате Gif или Jpeg, или Flash-ролики, удовлетворяющие определенным критериям. На каждом сайте - участнике баннерной сети в страницы сайта его web-мастером устанавливается специально разработанный код, при своей загрузке сообщающий в центр баннерной сети адрес этого сайта и отображающий на странице сайта из базы данных сети выбранный произвольно или с учетом определенных критериев баннер.

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

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

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

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

На настоящее время в русской части Интернета наиболее большими являются баннерные сети InterReklama Advertising (http://www.ir.ru) и Russian Link Exchange (http://www.linkexchange.ru). Эти сети предоставляют большой выбор дополнительных услуг. Например, можно показывать чужие баннеры на одном сайте, а рекламировать своим баннером другой.


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

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

Компьютер баннерной сети определяет по IP-адресу пользователя, загружающего страницу с баннером, его местоположение, и выдает ему баннер в соответствии с условиями таргетинга баннеров. Узнать физическое местоположение пользователя нетрудно - если, к примеру, IP-адрес пользователя (абсолютно условно) - 123.124.125.126, а согласно базе данных по провайдерам России, вложенной в компьютер баннерной сети, этот адрес принадлежит московскому провайдеру NewTech, то пользователь с таким IP-адресом, скорее всего, в Москве и находится. Таргетинг позволяет адресовать свою рекламу наиболее вероятным ее потребителям - ясно, что рекламой фармацевтического сайта с наибольшей вероятностью заинтересуются посетители медицинских сайтов, а вот посетителям сайтов с новым программным обеспечением она вряд ли будет нужна.

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


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

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

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

Также практически все баннерные системы не принимают баннеров с порнографическими рисунками или ненормативной лексикой.

В Сети есть система "Баннербанк", предназначенная специально для создания баннерных сетей. Любой пользователь может создать в ней свою баннерную сеть без каких-либо серьезных затрат. В настоящее время на базе "Баннербанка" работает множество подобных сетей, организованных частными пользователями, - к примеру, Баннерообмен научных ресурсов (http://www.srbe.net). Обычно такие сети объединяют сайты одной тематики, что очень выгодно в плане рекламы.

Располагается "Баннербанк" по адресу http://go.bb.ru. Интерфейс сервера отличается удобством и многофункциональностью.

Существует определенный стандарт размеров баннеров. У каждой сети в принципе может быть свой стандарт, но чаще всего используются общепринятые международные правила. Так, обычно баннер должен иметь размер 468*60 пикселов. Используется также стандарт 100*100 пикселов и другие форматы, например, 234*60 и.т.д. Иногда баннерные сети используют сложные баннеры, представляющие собой форму с выпадающими меню, кнопками выбора и т.д.

Использовать возможность систем обмена баннерами, конечно, привлекательно, но перед тем, как это делать, стоит все же подумать.


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

Соотношение между количеством кликов на баннере и количество его показов называется кликабельностью баннера. Обычно это соотношение не превышает десятых долей процента и сильно зависит от вида баннера. Считается, что наилучшую кликабельность дает квадратный баннер размером 100*100 с приказывающей направленной надписью (типа "Ты студент? Жми сюда"), расположенный справа внизу страницы. Также весьма кликабелен баннер 468*60, находящийся на расстоянии 1/3 от верхней границы экрана.

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

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


Решение проблем


В связи с наличием пяти различных кодовых страниц для русского языка возникает две проблемы:

1. Обеспечить возможность чтения текстов, написанных в соответствии с одной кодовой страницей, в операционных системах с другой кодовой страницей. Например, текстов MS-DOS в Windows9x.

2. Получить возможность расшифровывать неоднократно перекодированные электронные письма.

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



Restricted Area - Защищенная зона


Если надо организовать на сайте группу web-страниц, доступ в которую будет возможен лишь при помощи пароля, то обычно данное задание реализуется с помощью сценариев на каком-нибудь CGI-языке: Perl, PHP. На серверах бесплатного хостинга использовать данные языки обычно запрещено, однако можно прибегнуть к нехитрому приему, основанному на JavaScript.

Придумайте пароль. Создайте страницу с именем, совпадающим с паролем (например, если пароль - hgty23jyhg, то страница должна иметь имя hgty23jyhg.htm), а на ту страницу, откуда производится переход в часть сайта, защищенную паролем, вставьте форму с полем ввода пароля, кнопкой типа button и небольшой скрипт:

<form name="forma1">Введите пароль:

<INPUT NAME="parol" TYPE=password>

<INPUT TYPE=button VALUE="Перейти в защищенную зону" onclick= (window.location.href=document.forma1.parol.value+".htm")>

</form>

При нажатии кнопки произойдет переход на страницу, имя которой было введено в поле ввода текста. Как такая форма выглядит - показано на рис.22.3.

Рис.22.3. Пароль на вход - без CGI.

Рис.22.4. Здесь листинг директорий разрешен...

Рис.22.5. ...а здесь запрещен.

Однако этот способ ограничения доступа возможен не на всех серверах, а только на тех, где запрещен так называемый "листинг директорий". Листинг директорий - это возможность просмотра содержимого папки на удаленном сервере при отсутствии в ней файла, загружаемого по умолчанию (или при неправильной конфигурации web-сервера даже при наличии такого файла). Вы наверняка во время путешествий по Интернету встречались с ситуацией, когда вместо запрошенной web-страницы высвечивается некое подобие Проводника Windows, а в верхней строчке - ссылка на "Parent Directory" (рис.22.4)? Это означает, что на этом сервере листинг директорий разрешен, а запрошенной вами страницы не существует. Список файлов в окне браузера - это другие файлы в той же папке, в которой должна была бы быть запрошенная вами web-страница.
Если же на сервере листинг директорий запрещен, то при попытке обратиться к несуществующей web-странице будет выдано сообщение об отсутствии на сервере такой страницы. Оно будет сгенерировано либо браузером, который получит соответствующее уведомление от сервера (рис.22.5), либо самим сервером. В последнем случае обычно демонстрируется небольшая реклама этого сервера.

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

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

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


Для добавления нового посетителя "защищенной" части вам потребуется всего лишь поместить на свой сайт маленькую однотипную страницу с параметром refresh и именем, соответствующим паролю нового пользователя.

Безусловно, в последнем случае существует риск того, что кто-нибудь из не очень сознательных посетителей станет распространять адрес заглавной страницы "защищенной" части вашего сайта. Это, конечно, неприятная перспектива, но ее можно в значительной степени предотвратить, регулярно меняя имена страниц "защищенной" части и, соответственно, ссылки на них на страницах с именами-паролями.[58].

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

Программа Microsoft HTML Help Workshop дает возможность создавать файлы HTML-справки вроде тех, что лежат в основе справочной системы Microsoft Office 2000 или Microsoft Internet Explorer 4.0 и выше (они имеют расширение .chm).  При этом в качестве основы для таких файлов берется совокупность связанных между собою web-страниц. Скажем, вы можете отконвертировать ваш сайт в chm-файл, и тогда он будет занимать меньше места и находиться в одном файле. В результате передать его другу или отослать по почте целиком станет легче.

Так вот. После создания chm-файла узнать имена web-страниц, послуживших для него источниками, можно лишь декомпилировав его той же программой Microsoft HTML Help Workshop. При этом все ссылки внутри этого файла между вошедшими в него web-страницами сохранятся, и та система разграничения доступа, что была описана выше, будет полностью функциональна.

В итоге вы, даже не умея программировать, легко сможете создать систему контроля знаний, набор загадок и ответов, базу знаний с разграниченным доступом. Достаточно будет лишь оформить ваш проект как сайт и научиться работать с Microsoft HTML Help Workshop, что очень легко - у последней интерфейс интуитивно понятный. Воспользоваться вашим творением сможет любой владелец Microsoft Internet Explorer 4.0 или более поздней версии.

Microsoft HTML Help Workshop входит в состав пакета Microsoft Office 2000 Developer Edition, а кроме того, доступна на сайте www.microsoft.com.


Российская особенность


В большинстве стран была создана одна кодовая страница для своего алфавита. Но в России были некоторые особенности.

Изначальные английские версии поставляемых в Россию программ не могли работать с русским алфавитом (это и ясно - в них же не было русской кодовой страницы). Поэтому была создана русская кодовая страница ISO-8859-5, в которой кодам символов, большим 127, соответствовали русские буквы. Так как их всего 33, а с заглавными - 66, то в кодовой странице осталось место для символов псевдографики. Для того, чтобы с этой кодовой страницей можно было работать, имелось три возможности: писать программы, отображающие символы именно в соответствии с ней; создать операционную систему, которая сама будет "заведовать" вводом и выводом текста в соответствии с нужной кодовой страницей, а программы будут лишь использовать готовый результат; создать специальную программу, которая будет работать вместе с операционной системой и обрабатывать ввод и вывод текстовой информации в соответствии с нужной кодовой страницей. Первая возможность из-за своей сложности использовалась мало, третья подразумевала создание и использование специальных программ - русификаторов, которые долгое время использовались, при использовании второй возможности была необходима русификация или локализация операционной системы - то есть внедрение в нее функций отображения символов в соответствии с заданной кодовой страницей. В настоящее время повсеместно применяются локализованные операционные системы, то есть те, в которых кроме внедрения функций работы с русской кодовой страницей еще и переведен интерфейс.

Вариантов русской кодовой страницы было два. Один, вышеупомянутый - ISO-8859-5. Другой, так называемый "альтернативный", отличался от него другим порядком следования русских букв до строчной "р" и имел ту особенность, что символы псевдографики кодировались в нем теми же кодами, что и в исходной английской таблице символов, а следовательно, при принятом в операционой системе этом варианте кодовой страницы можно было использовать нелокализованные версии западных программ, работающих с псевдографикой.
Например, западная программа могла из символов псевдографики изобразить таблицу. Она считывала из файла код символа и отображала на экране соответствующий ему значок. Если в системе была установлена "альтернативная" кодовая страница, то это оказывался именно символ псевдографики и рисунок получался. Если же в системе стояла ISO-8859-5, то рисовалась русская буква, и внешний вид рисунка был весьма своеобразным. Поэтому несмотря на то, что в "альтернативной" кодовой странице русские символы шли не подряд, а с разрывом между строчными буквами "п" и "р", именно она впоследствии получила наибольшее распространение. Кодовая страница ISO-8859-5 применялась при русификации компьютерных систем Sun, поставлявшихся в Россию.

Заслуга внедрения русских кодовых страниц принадлежит российской компании "Диалог" и ее ведущему программисту Петру Квитеку. В 1989 году в этой фирме - партнере Microsoft была локализована MS-DOS 4.1, первой среди всех операционных систем. При ее создании в качестве основной кодовой страницы была взята "альтернативная" кодировка, названная Dos(866), - именно из-за того, что программы, использующие ее, корректно отображали символы псевдографики. Это привело к еще более широкому распространению данной кодовой страницы, так как MS-DOS была основной операционной системой для персональных компьютеров.

При создании локализованной версии операционной системы Windows фирма Microsoft решила изменить ставшую общепринятой русскую кодовую страницу Dos(866). В частности, с появлением графического интерфейса отпала необходимость в использовании символов псевдографики, что позволило сделать порядок символов русского алфавита в кодовой странице в соответствии с алфавитной последовательностью, а также разместить в ней различные специальные символы вроде изображения торговой марки - ™. Появилась кодировка Windows-1251, которую создал тот же Петр Квитек. В ней тем символам, что в кодировке Dos(866) соответствовали одни русские буквы, были поставлены в соответствие другие символы.В результате для чтения в Windows русского текста, набранного в Dos, стали требоваться программы-перекодировщики.


С чего начать?


Первое, о чем должен задуматься тот, кто собрался создавать свое представительство в Интернет, это вопрос: а что, собственно, я могу поместить в Сеть? Что я дам тем самым пользователям? К сожалению, в последнее время стало появляться немало сайтов, не содержащих действительно полезной информации. На них размещается, к примеру, фотография автора сайта, пара слов о том, что он любит из еды, музыки и видеофильмов и ссылки на два-три общеизвестных ресурса[43]. Ясно, что никому из пользователей Сети такой "источник" не нужен, - там ведь обычно нет даже резюме со списком професиональных качеств автора. Причем сами авторы обычно бывают весьма активными и с непонятными целями регистрируют свои "творения" во многих поисковых системах.

Желающим последовать примеру авторов этих "домашних web-страничек" следует помнить, что своей цели - "прославления имени" владельца сайта - они не достигают. Пользователь Сети, попавший на такую страничку в поисках нужной ему информации, будет очень раздражен, найдя вместо того, чего он желает, фотографию Васи Пупкина и рассказ о том, как тот любит пепси-колу и мультики. Вряд ли после этого имя Васи станет вызывать положительные эмоции. А вот вред эти сайты приносят значительный - они фактически засоряют Сеть, так как, во-первых, занимают места в поисковых системах, скрывая под своей массой ссылки на действительно нужные ресурсы, а, во-вторых, занимают хорошие имена ресурсов. Безусловно, вряд ли автор такого сайта раскошелится на платный хостинг и доменное имя второго уровня, но вот в системах бесплатного размещения сайтов эти авторы занимают весьма привлекательные имена, по сути не давая ничего пользователям. А те, кто собирается поместить в Сеть то, что нужно очень многим, увы, уже не могут создать сайт с красивым именем. Поэтому "сайты Васи Пупкина" пользуются заслуженным отвращением у большинства пользователей, и те их авторы, которые рассчитывают на поток предложений о работе, признаний в уважении и так далее, желаемого не получат никогда.

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

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



Сайтостроение


Антон Орлов, http://antorlov.chat.ru

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

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

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

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

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

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


Script Editor: web - редактор из недр Office


Антон Орлов, http://antorlov.chat.ru

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

Все программы, облегчающие создание html-документов, можно условно разделить на три категории. К первой из них будут относиться программы, которые просто облегчают написание собственно HTML-кода. Они имеют развернутую систему замены и поиска фрагментов текста, могут подсвечивать разными цветами HTML-тэги, отделяя тем самым их от информационного содержимого страницы. Некоторые подобные программы позволяют даже одним нажатием мыши или кнопки вставлять в подготавливаемый документ целые фрагменты кода, заранее написанные пользователем или даже изначально встроенные в программу - например, простейшие сценарии. Таких редакторов очень много, практически все они доступны через Сеть, - это и CoffeeCup, и HotDog, и другие. К сожалению, почти все они являются условно-бесплатными и требуют регистрации, причем стандартные способы продления жизни этих программ в их новых версиях крайне затруднены, - их регистрация происходит через Интернет. Среди бесплатных программ подобного рода стоит отметить Aditor[49], который умеет подсвечивать тэги разными цветами, работать с различными кодировками, имеет многооконный интерфейс.

Ко второй категории относятся так называемые WYSIWYG - редакторы. WYSIWYG - это английская аббревиатура слов "what you see is what you get", то есть "что вы видите, то и получаете". В этих редакторах создание web-страницы напоминает создание документа в Microsoft Word: совершенно не нужно думать о тэгах, параметрах.
Можно даже не знать, что такое "тэг" и как он выглядит. Страница создается буквально на глазах: достаточно просто написать текст, вставить рисунки или таблицы, оформить строки нужным образом, - и web-страница готова! Типичными примерами таких редакторов служат Microsoft FrontPage Express, Microsoft Word с его средством сохранения документов в формате HTML, редактор Web-страниц из комплекта Netscape Communicator.

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

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

Однако наилучшим выбором для web-дизайнера на настоящий момент являются редакторы, сочетающие в себе возможности как первой, так и второй категории. В настоящее время к ним относятся Microsoft Script Editor из пакета программ Microsoft Office 2000/XP и Microsoft FrontPage 98/2000/XP, также входящая в пакет Microsoft Office, однако распространяющаяся и отдельно от него, а также некоторые другие программы.


Весьма совершенным инструментом для создания web-страниц является первая программа из этих двух - Script Editor, поэтому стоит уделить ей особое внимание, тем более что она дает разработчику удобную среду еще и для программирования на языках сценариев. 

Эта глава - не пошаговое руководство по использованию Script Editor. Ее предназначение - описать возможности этого редактора, а также указать на некоторые не совсем очевидные его функции, чтобы впоследствии вам не потребовалось их искать. Освоить же Script Editor можно лишь одним способом - непосредственно работая с ним и самостоятельно исследуя его. Тем более что это не так и сложно.



Рис.18.2. Панель Toolbox редактора Script Editor. Кликнув на названии лю-бого элемента на этой панели, вы вставите на web-страницу код, ему соответствующий, неза-висимо от того, в каком режиме вы работаете - создания кода или визу-альной разработки.

">Script Editor входит в состав пакета офисных программ Microsoft Office 2000 и Microsoft Office XP и предназначен для разработки Web-сайта, написания программ на языках JavaScript и VBScript и других Интернет-разработок.



Рис.18.1. Чтобы установить Script Editor,

отметьте этот пункт при инсталляции Microsoft Office 2000/XP.

При установке пакета Microsoft Office 2000/XP Script Editor по умолчанию не ставится. Для его установки необходимо выбрать "Выборочную установку", в меню установки компонентов развернуть пункт "Средства Office", там - "Редактор HTML-файлов", а, развернув этот пункт, - "Редактор Web-сценариев", который пометить как "Запускать с моего компьютера" (рис.18.1).

После этого Script Editor может быть вызван из меню Сервис текстового редактора Microsoft Word 2000/XP с помощью пункта меню Макросы-Редактор сценариев. При инсталляции Microsoft Office 2000 исполняемый файл Script Editor по умолчанию устанавливается в папку Program Files\Microsoft Visual Studio\Common\IDE\IDE98 и называется MSE.EXE, а если вы устанавливаете Microsoft Office XP, то он будет иметь название MSE7.EXE и разместится в той же папке, что и остальные файлы Office.


После окончания установки создайте ярлык на этот файл, который поместите в удобное для вас место.

Во время работы со Script Editor вы наверняка встретитесь и с двумя другими названиями этой программы - Visual Studio[50]

и Microsoft Development Environment. Второе из них даже указано в окне About и в заголовке окна программы, но означает оно попросту "среда разработки". Поэтому название Script Editor лучше всего соответствует предназначению этой программы.

Script Editor дает web-дизайнеру немалое количество возмож­ностей. Здесь будут описаны лишь некоторые, самые важные из них.

Если в Script Editor создать файл HTML или открыть существующий, то окно с загруженным файлом будет иметь три вкладки. Средняя из них, которая называется Source, показывает HTML-код документа, подсвечивая коричневым цветом тэги, красным - свойства тэгов, а синим - значения свойств (скажем, "font" - это тэг, "size" - это его свойство, а "4" - значение свойства). Левая переводит Script Editor в режим Design - визуальной разработки web-страницы, а правая - Quick View (только в Microsoft Office 2000) - позволяет оценить будущий вид страницы.

Окно Source фактически является полноценным редактором кода HTML. Цветовое выделение тэгов весьма удобно для ориентации в тексте. Имеется функция многократной отмены сделанных изменений.



Рис.18.3. Панель Prop-erties редактора

Script Editor.

">Для того, чтобы добавить в текст страницы код, соответствующий какому-нибудь элементу, достаточно всего лишь дважды кликнуть мышью на название этого элемента на панели Toolbox (рис.18.2). Эта панель по умолчанию располагается слева окна Script Editor.

Есть даже возможность самому создавать такие элементы - скопируйте в буфер обмена нужный текст, можно с html-тэгами, поставьте мышь на панель Toolbox и выберите из контекстного меню правой кнопки мыши пункт "Paste". После этого двойной клик мыши на этом элементе приведет к вставке в позицию курсора запомненного таким образом текста.



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

Для того, чтобы добавить на страницу многоколоночную таблицу, не нужно долго и упорно прописывать тэги <tr>, <td> и др. - можно вызвать диалоговое окно "Table"-"Insert Table", указать там нужные параметры таблицы, и ее пустая заготовка будет вставлена в документ, - останется только разместить рисунки и текст. Кликнув правой кнопкой мыши на каком-либо тэге и выбрав пункт Properties, можно задать параметры тэга в специальном диалоговом окне, и они будут правильно и корректно переведены на язык HTML и помещены в код.

Если в стандартном HTML не окажется средств для задания какому-либо элементу нужных свойств, то будет использован язык таблиц стилей - CSS. Тогда при выборе из контекстного меню пункта Properties отобразится не окно задания свойств тэга, а большая панель свойств Properties (рис.18.3), где можно задать огромное количество параметров тэга. Однако следует помнить, что не все браузеры смогут эти параметры правильно проинтерпретировать. Эту панель можно вызвать и из меню View, выбрав пункт "Properties Window".

В принципе можно везде использовать лишь средства панели Properties - тогда все без исключения тэги будут обрамлены на CSS, причем для создания страницы знать этот язык вовсе не обязательно, так как названия почти всех параметров вполне понятны даже по-английски[51].

Чтобы вставить на страницу рисунок, достаточно перетащить его иконку из "Проводника" в окно Script Editor на нужное место, а потом слегка откорректировать его имя, если он находился на локальном диске.

Превосходные средства работы с Html-кодом - это лишь очень малая часть возможностей Script Editor (хотя и их вполне бы хватило на небольшой web-редактор, причем очень даже неплохой для своего класса)! Вкладка Design основного окна этой программы представляет собой полноценный WYSIWYG-редактор Web-страницы (рис.18.4), многократно превосходящий по своим возможностям большинство других аналогов.



Система генерации кода в режиме визуальной разработки в Script Editor построена очень разумно. Фактически она ничем не отличается от такой же генерации в режиме Source, когда в текст страницы попросту помещаются заранее приготовленные шаблоны из тэгов. Поэтому фрагменты кода, генерируемые Script Editor при помещении на страницу какого-либо обьекта в режиме Design, совпадают с кодом, вставляемым в документ в режиме отображения HTML-текста, что делает работу Script Editor очень корректной.

В то время как количество лишних тэгов, "мусора" у многих WYSIWYG-редакторов вроде FrontPage Express или Microsoft Word 97 достигает порой астрономической величины, а уборка их становится долгим и неприятным занятием, код, генерируемый Script Editor в режиме Design, является настолько компактным и правильным, что практически не требует последующей коррекции (разве что адреса рисунков придется подправить, так как по умолчанию указывается полный путь к ним на локальном диске). Все диалоги задания свойств элементов страницы и панель свойств элементов в режиме Design работают точно так же, как и в режиме Source. Возможности вставления таблиц, указания параметров тэгов работают как в режиме написания кода, так и в режиме визуальной разработки, просто в первом случае вы увидите, как вставляется собственно код, а во втором - соответствующий ему элемент.



Рис.18.4. Вкладка Design окна программы Script Editor.

Включен режим отображения границ таблиц и непечатаемых символов.

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


Достаточно их нажать, чтобы вся структура страницы, сколь бы сложной она ни была, оказалась видна как на ладони.

Кнопка Absolute Mode позволит располагать новые элементы в произвольном месте страницы - их расположение будет задаваться растояниями от верхнего и левого краев документа. Реализуется такое расположение посредством использования языка CSS. Если же эта кнопка не нажата, то новый элемент будет вставлен на страницу с использованием стандартных средств Html и с учетом их ограничений.

Кнопки Foreground Color (цвет шрифта) и Background Color (цвет фона) панели инструментов Html в режиме Design вызывают очень удобные диалоговые окна задания цвета выделенного элемента или набираемого текста. Три вкладки каждого из этих окон предоставляют разработчику все возможные способы задания цвета - от непосредственного ввода значений отдельных компонентов цветов до выбора нужного цвета в "безопасной палитре" (все цвета из этого набора отображаются одинаково на любом мониторе, в любом браузере, в любой стране) или названия желаемого цвета.

Третья вкладка окна Script Editor из пакета программ Microsoft Office 2000 - Quick View - позволяет посмотреть, как будет выглядеть страница в браузере. Нет необходимости специально загружать браузер и постоянно нажимать Refresh, чтобы увидеть страницу так, как она в нем отображается. Страница в Quick View за очень небольшими отличиями (касающимися только работы скриптов) отображается так же, как и в браузере Microsoft Internet Explorer 5.0 и более старших его версиях. (В Script Editor'е из Microsoft Office XP данная вкладка отсутствует.)

Все панели инструментов Script Editor являются свободно настраиваемыми - такими же, как и в Microsoft Word. Можно свободно размещать кнопки, вызывающие те или иные команды, создавать новые панели инструментов, настраивать рабочую среду под свои требования.

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



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

Система поиска фрагментов текста тоже весьма эргономична - поле ввода текста на панели инструментов Standart (рис.18.5). Вводишь туда нужное слово и жмешь Enter, а Script Editor сама путешествует по документу, подсвечивая найденные вхождения. И не надо никакого диалогового окна вызывать, жать комбинации клавиш или мышью двигать... Все слова, по которым проводился поиск, сохраняются, и впоследствии отображаются в выпадающем списке. Почему до этого не додумались разработчики Microsoft Word - непонятно: а ведь как бы было удобно...



Рис.18.5. Искать в документе, открытом в Script Editor, просто.

Просто введите текст в поле ввода вверху окна.

В Script Editor из Microsoft Office 2000 поиск можно вести и во всех файлах в папке, где находится открытый документ, а также в любой другой произвольной папке, включая вложенные, и даже в нескольких папках одновременно. Результат поиска выводится в виде списка файлов, рядом с именами которых показывается строка первого вхождения искомого текста, а также фрагмент файла, содержащий его. Для загрузки нужного файла в редактор достаточно кликнуть пару раз на его названии в этом списке. (Внимательнее работайте с окном "Browse" при указании директорий для поиска - не забудьте нажать кнопку "Add to list", чтобы Script Editor стал искать текст и в этой папке.) К сожалению, при разработке Microsoft Office XP эти расширенные возможности поиска из Script Editor'а были удалены.

Если страница большая, со множеством элементов, то ориентироваться в ней непросто. Желательно было бы представить ее в виде некоей структуры, "карты". И это позволяет делать Script Editor! Открыв окно "View-OtherWindow-DocumentOutline", можно получить подробнейшую схему страницы (рис.18.6), со всеми ее иерархическими связями и компонентами.


И если надо быстро перейти к какому-либо компоненту страницы, то рыться в тоннах кода нет необходимости - пара кликов на его имени в схеме, и курсор - уже на этом элементе.

В окне Project Explorer, которое можно вызвать из меню View, отображаются все открываемые ранее для редактирования файлы. Любой из них можно загрузить для работы двумя кликами мыши. Тоже - удобно: открыл единожды все файлы в папке с сайтом и загружай любой без поисков в диалоговых окнах или "Проводнике".

Все панели инструментов и окна являются свободно перемещаемыми по экрану. Их можно расположить как в окне Script Editor, так и в любом другом месте. Но особенно привлекает интересное техническое решение в Script Editor из Microsoft Office 2000, предложенное разработчиками редактора и помогающее быстро и удобно организовать для себя оптимальную рабочую среду. На одной из панелей инструментов (а посмотреть их список и отобразить любую можно так же, как и в Word - просто щелкнув правой кнопкой мыши в любом месте серого поля вверху окна, рядом с панелями инструментов), Windows UI, есть выпадающее меню, содержащее перечень возможных состояний рабочей среды - Debug, Design, Edit Html и др. Если выбрать какое-нибудь из них, то Script Editor само примет соответствующее состояние - будут отображены нужные и закрыты ненужные панели и окна, компоненты редактора  выстроятся около краев. К примеру, при выборе состояния Edit Html отобразятся главное окно с кодом, окна Document Outline, Properties и Project Explorer - все, что нужно для полноценной работы с кодом. К сожалению, из следующей версии Script Editor'а данное меню разработчики почему-то убрали.



Рис.18.6. Схема web-страницы - просто подарок для дизайнера, который уже запутался в переплетениях таблиц, ссылок, рисунков...

Всего вышеизложенного хватило бы на приличный редактор web-страниц, который занял бы достойное место на рынке. Но рассказанное - лишь малая часть возможностей этого поистине уникального инструмента для создания страниц Интернет-ресурса любой сложности, поставляемого вместе с пакетами Microsoft Office 2000 и Microsoft Office XP и, к сожалению, так мало описанного в руководствах.


Особую уникальность Script Editor придает то, что помимо web-редактора он представляет из себя еще и среду программирования, по набору функций похожую на среду Visual Basic for Applications. Рассчитана эта среда на два языка - JavaScript, VBScript, а также на использование технологии Active Server Pages, которая позволяет выполнять сценарии на скриптовых языках на стороне web-сервера. С технологией ASP большинству пользователей вряд ли придется столкнуться, она используется сейчас нечасто, а вот первые два языка сценариев позволяют украсить и сделать удобной  любую страницу, где бы она ни была расположена.

Те, кто уже писал макросы для Microsoft Word, найдут в Script Editor много общего с встроенным в Word редактором Visual Basic for Applications. И это понятно - Microsoft стремится создать единую среду программирования для разработки приложений на любых языках, включая в новые редакции своих продуктов лучшее из предыдущих версий. Кроме того, web-сценарии фактически представляют собой "макросы для браузера", так как они не компилируются заранее, а интерпретируются браузерами после загрузки web-страницы.

Чтобы добавить на страницу сценарий, даже не надо самому писать тэги. Можно просто кликнуть правой кнопкой мыши на нужном месте и из контекстного меню выбрать Script Block-Client (второй вариант этого меню, Server, относится к возможности реализации технологии ASP). Для более легкой ориентировки на странице, где имеется множество скриптов, очень хорошо использовать окно Script Outline (в Microsoft Office 2000 вызывается из меню View-Other Window-Script Outline, а в Microsoft Office XP - кнопкой в заголовке вышеописанного окна Document Outline), в котором перечислены все скрипты, находящиеся в документе. Чтобы перейти к нужному, достаточно пары кликов мыши (рис.18.7), при этом курсор в окне Source установится на его начало.

Если в документе есть обьекты Dynamic HTML (то есть поименованные компоненты - любому элементу web-страницы можно дать имя, включив в его тэг выражение "id=уникальное_имя" и впоследствии обращаться к этому элементу из сценариев[52]), то окно Script Outline в Script Editor из Microsoft Office 2000 дает возможность быстро создавать заготовки обработчиков событий (то есть сценариев, описывающих какие-либо действия при наступлении какого-либо состояния страницы, браузера или обьектов - компонентов документа).


Имена всех таких обьектов отображаются в Script Outline, и при необходимости создать сценарий-реакцию на какое-либо событие достаточно щелкнуть на имени нужного обьекта и выбрать нужное событие (заодно можно узнать, какие вообще события могут происходить с этим обьектом). В документ, в его раздел <head> будет вставлена заготовка скрипта-обработчика. Имена уже существующих обработчиков выделяются жирным шрифтом и, нажав на какое-нибудь из них, можно переместиться к его коду. К сожалению, в Microsoft Office XP из Script Editor'а была убрана и эта возможность.

(Технология Dynamic Html неразрывно связана с технологиями JavaScript и VBScript. Иными словами, можно сказать, что Dynamic Html позволяет обратиться к любому обьекту на странице, а VBScript и JavaScript - что-нибудь с этим обьектом сделать. Поэтому сценарии на VBScript и JavaScript часто включают в себя элементы Dynamic Html - обращения к поименованным элементам страницы.)



Рис.18.7. Карта сценариев web-страницы. Все четко структурировано

В списке обьектов окна Script Outline всегда присутствуют обьекты window (то есть окно браузера) и document - сама web-страница и, соответственно, их события - загрузка, выгрузка, прокрутка и др. Само это окно доступно, разумеется, только в режиме просмотра кода.

При написании самого текста сценария Script Editor как бы "ведет" программиста по программе, подсказывая ему возможные продолжения команд. Подобная система используется в большинстве современных средств разработки приложений, так что те, кто ранее программировал на других языках, окажутся в своей привычной среде, а те, кто ранее не занимался созданием программ, получат возможность познакомиться с настоящей средой программирования.

Если программист, создавая текст сценария (то есть вводя команды в текст страницы между тэгами <script...> и </script>, напишет имя какого-либо обьекта, то Script Editor выдаст ему список возможных действий с этим обьектом (рис.18.8). Если же будет написано имя команды, то разработчику будет предоставлена краткая всплывающая справка о ее синтаксисе (рис.18.9).





Рис.18.8. Создавая сценарий, думай только об алгоритме - остальное редактор тебе подскажет: и возможные продолжения команды....



Рис.18.9. ...и ее необходимые параметры...

Сценарий - это самая настоящая программа, и, к сожалению, при ее написании ошибки практически неизбежны. В Script Editor есть мощная система отладки сценариев, мало чем уступающая аналогичным системам других сред программирования. Для того, чтобы установить местонахождение ошибки, используются "точки останова" и контрольные значения, а чтобы разобраться в сложной странице, где есть несколько скриптов, вызывающих один другой - окно стека вызова - "Call Stack". В окне редактора можно пометить с помощью мыши на сером поле у левого края окна определенные строки сценария (поставить "точку останова"), и в этом случае при загрузке страницы с этим сценарием в браузер из среды Script Editor (это можно сделать, нажав клавишу F5) в момент, когда выполнение сценария дойдет до отмеченной строки, его работа остановится и активируется окно редактора кода. Задержав в этот момент курсор мыши над какой-нибудь переменной из кода сценария, во всплывающей подсказке можно увидеть ее значение. Также значение любой переменной показывается в окне контрольных значений ("Locals").

Система отладки сценариев Script Editor очень похожа на аналигичную систему редактора Visual Basic for Applications, описанную в первой части книги.

Все имеющиеся в Script Editor из Microsoft Office 2000 окна, предназначенные для web-программирования, показаны на рис.18.10. Отличия в Microsoft Office XP несущественны.



Рис.18.10. Все, что нужно для полноценного программирования.

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

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


Те же, кто занимается web-программированием профессионально, найдут в этом редакторе практически все необходимые инструменты для создания мощных web-приложений, не описанные здесь за недостатком места, - такие, как окно просмотра процессов системы и т.д. Если пожелаете, то можете попробовать самостоятельно разобраться с возможностями Script Editor в облсти программирования, однако вам будет это гораздо проще сделать, если вы сначала познакомитесь с какой-либо средой программирования, например, редактором Visual Basic for Applications, описанным в первой части книги. В противном случае выяснить назначение некоторых инструментов будет не очень просто.

В Script Editor имеется мощная система справки с богатыми возможностями поиска нужной информации. Так же, как и, скажем, в среде Visual Basic for Applications, в случае вызова справки в то время, как курсор находится на какой-нибудь команде языка сценария она откроется на странице, посвященной именно этой команде. Страницы справочной системы красиво оформлены. При осуществлении поиска по какому-либо ключевому слову список найденных разделов выдается в порядке убывания количества его вхождений, а сами вхождения выделяются в окне справки (рис.18.11).



Рис.18.11. Справка - море информации по web-программированию.

Справочная система Visual Studio фактически представляет собой комплекс из нескольких подобных систем, посвященных Html, JavaScript, VBScript и технологии Active Server Pages. К сожалению, неподготовленному человеку будет трудно в ней разобраться, так как она, во-первых, написана на английском языке, а, во-вторых, представляет из себя некое "перемешение" описаний всех трех технологий, так что отделить то, что относится к простому HTML, от описаний приемов и команд ASP будет нелегко. Но редактор Script Editor представляет из себя настолько дружественную среду разработки, что HTML в нем можно освоить, даже не заглядывая в инструкции - просто сравнивая то, что рисуешь, с тем, что он пишет на страницу, и наоборот.



 Безусловно, у такого крупного продукта, как Script Editor, есть и свои недостатки. Например, в той версии этой программы, что входит в состав Microsoft Office 2000, нет возможности "переноса по словам" текста страницы (Word Wrap), который есть даже в "Блокноте". Вследствие этого редактирование загруженной в редактор web-страницы, текст которой не разделен на строки, становится крайне сложной задачей. (Выходом из такого положения может стать загрузка страницы как текста в Microsoft Word или WordPad с последующим ее сохранением в том же файле как "текста с концами строк".). Впрочем, новая версия Script Editor'а из Microsoft Office XP данного недостатка лишена. Справка по языкам сценариев и Html при всем своем богатстве несколько трудна в использовании. Однако для чисто практического применения с целью создания web-страниц Script Editor подходит идеально. Тем более что этот продукт входит в стандартную поставку Microsoft Office 2000 и Microsoft Office XP и таким  образом имеется на любом компакт-диске с этим пакетом программ. Просто установите Microsoft Office какой-нибудь из этих версий, и вы получите также и Script Editor, если укажете необходимость его установки в диалоговом окне инсталлятора.

К сожалению, из новой версии Script Editor'а, входящей в состав Microsoft Office XP, исключены многие удобные функции, имевшиеся в его предыдущем варианте. Появившиеся же усовершенствования в основном касаются только интерфейса программы или тонкостей ее использования при разработке сценариев (например, в новой версии есть возможность отобразить в окне программы только тексты сценариев, присутствующие на странице, или, наоборот, текст страницы без них). Впрочем, во многом обе версии редактора одинаковы.

Если вы не желаете устанавливать Microsoft Office 2000 или Microsoft Office XP, так как привыкли работать с Microsoft Office 97, но вам нужен Script Editor, то просто проинсталлируйте новую версию Microsoft Office в каталог, отличный от того, в котором расположен Microsoft Office 97, и при установке не забудьте указать необходимость сохранения старых версий программ пакета в одном из диалогов инсталлятора.


Вы можете не устанавливать другие компоненты Office - Word или Excel, Script Editor будет прекрасно работать и без них. Только создайте для него ярлык на Рабочем столе (путь см.выше), чтобы не приходилось каждый раз перемещаться по папкам при необходимости его запустить.

Script Editor не будет работать, если не установлен браузер Microsoft Internet Explorer 5.0, но этот браузер устанавливается вместе с Microsoft Office 2000, и без него невозможна работа также и Office. К Script Editor можно "пристыковать" любой другой браузер, установленный на жестком диске, и просматривать страницы и в нем.

В целом можно сказать, что Script Editor сочетает в себе лучшие свойства редакторов web-страниц, как текстовых, так и типа WYSIWYG, а также полноценной среды программирования web-сценариев, что делает этот инструмент практически универсальным. Создание страниц в Script Editor - процесс приятный и увлекательный. Наконец-то у web-дизайнеров появилась возможность думать не о тэгах и командах, а о красоте и удобстве своих творений, не рискуя при этом получить перегруженный лишними тэгами "кривой" код, как это было раньше при использовании многих web-редакторов.

В свете всего вышеизложенного эту среду можно рекомендовать использовать всем - от начинающих создателей Интернет-сайтов до профессиональных web-программистов.

*         *         *

Данный текст - глава из книги "Тайны и секреты компьютера (второе издание)", недавно вышедшей в издательстве "Горячая линия - Телеком". Эта книга предназначена для тех, кто самостоятельно осваивает мир информационных технологий. Программирование в среде Microsoft Office, устройство сетей Internet и Fidonet, работа системы электронной почты, структура системного реестра Windows и файловой системы, строение жидкокристаллических дисплеев и проблема наличия различных кодировок русского языка, - про все это рассказывается в ней. Многообразие тем и легкий стиль изложения сделают ее вашим спутником на долгое время, и вы всегда сможете найти в ней нужную именно в данный момент информацию.Если Вы интересуетесь компьютерными технологиями, желали бы расширить свои знания и умения в этой области, то она Вам наверняка понравится. На сайте http://comptain.nm.ru, посвященном этой книге, вы можете ознакомиться с ее оглавлением и аннотацией, прочитать некоторые главы, купить в Интернет-магазине.