Секреты системного реестра
Системный реестр Windows - это большая база данных, в которой записаны настройки как самой операционной системы, так и приложений, в ней установленных. Параметры устройств, сканеров, принтеров, плат расширений, находящихся в компьютере, информация о связях файлов с программами, настройки программ, расположение значков на Рабочем столе и в папках, цветовые схемы Windows, информация об открытых окнах, параметры соединений удаленного доступа и учетных записей почты, параметры сети и Интернета, информация об установленных шрифтах и многое другое, - все это хранят в себе глубины реестра. Без реестра операционная система неработоспособна. Многие компоненты реестра изменяются самостоятельно по приказам операционной системы или программ, некоторые можно настроить с помощью диалоговых окон (скажем, вроде назначения цветовой или звуковой схемы), но большая часть их недоступна для изменения из "стандартных средств" Windows.
Эта глава посвящена рассказу о структуре системного реестра, о принципах работы с ним, а также содержит в себе информацию о скрытых настройках реестра, использование которых может дать вам в руки ключи власти почти над всей операционной системой.
В качестве обьекта исследования взят системный реестр операционной системы Windows95/98 как устроенный более просто, чем реестр систем на платформе NT - Windows 2000 и Windows XP. Кроме того, в настоящее время в России наиболее распространенной операционной системой остается Windows98 как сочетающая в себе умеренные требования к ресурсам компьютера и удовлетворительные сервисные функции и надежность, так что нижеприведенное описание сможет пригодиться максимальному числу пользователей именно в том случае, если его обьектом станет именно Windows 95/98. Однако о реестре Windows 2000/XP упоминания в главе тоже имеются, но приводятся они лишь "для общей информации" и руководствоваться ими при непосредственных действиях по изменению параметров системного реестра не стоит.
В операционных системах Windows9x физически реестр располагается в двух файлах в каталоге Windows (далее именно так будет обозначаться папка, в которую установлена операционная система - название этого каталога на вашем компьютере может быть другим) - System.dat и User.dat.
Файлы System.da0 и User.da0 (на конце - цифра ноль) являются резервными копиями реестра первой очереди, которые создаются каждый раз после успешной загрузки компьютера, а в случае неудачи при загрузке могут быть помещены на место поврежденных файлов реестра. В Windows Me к указанным файлам добавился еще и файл classes.dat, являющийся тем самым третьей частью системного реестра.
Сам системный реестр состоит из двух частей. Первая - файл System.dat - содержит информацию, общую для всех пользователей данного компьютера: информацию о наличии устройств, их параметры, настройки некоторых программ и др. Вторая же часть - User.dat - является специфичной для каждого пользователя, храня его настройки. Оба файла имеют атрибут "Скрытый".
Если на компьютере зарегистрировано несколько пользователей, то в папке Windows\Profiles хранятся в отдельных каталогах "личные" файлы каждого: содержимое рабочего стола, главное меню и т.д.., а также часть User.dat системного реестра. В папке Windows тоже хранится файл User.dat, содержащий настройки системы по умолчанию[31]. При загрузке компьютера после ввода имени пользователя файл User.dat из каталога этого пользователя вместе с System.dat и User.dat из каталога Windows загружается в память и "склеивается" с ними в единое целое.
В операционных системах Windows 2000/XP файлы системного реестра хранятся в подпапке System32/Config каталога с файлами Windows.
Перед тем, как начать изучение внутреннего устройства системного реестра, неплохо было бы обезопасить свою систему от крушения вследствие его возможного повреждения. Вопреки распространенному мнению, если регулярно проводить резервное копирование системного реестра, то его повреждение не нанесет существенного вреда системе[32].
Шрифты
"Носителями" кодовых страниц в Windows являются шрифты. Каждый шрифт - это фактически как бы отдельная кодовая страница, в которой записана информация о внешнем виде отображаемых символов, их дизайну, графике и соответствии каждого графического изображения символа определенному коду. С помощью программы Windows "Таблица символов" можно посмотреть первые 256 символов, могущих быть отображенными с помощью данного шрифта. Это могут быть как символы, соответствующие кодовой странице Windows-1251 и применяемые для отображения текста, так и значки для "разукрашивания" текстового документа, хранящиеся в специальных символьных шрифтах или даже математические символы (рис.13.3).
Практически все текстовые редакторы под Windows, кроме разве что Блокнота, дают возможность пользователю выбирать желаемый шрифт для его текста. Текст, набранный с помощью обычного шрифта, например, Ms Serif, будучи оформлен шрифтом символьным вроде Wingdings, превратится в набор символов: "íàáîðñèìâîëîâ", так как в этом шрифте на местах, соответствующих кодам символов русских букв, расположены графические картинки стрелок.
.Рис.13.3. Шрифт, состоящий из математических символов.
"Штирлиц"
Программа "Штирлиц", помимо возможности чтения текстов в различных кодировках, в том числе и в Unicode, имеет очень важную и нужную функцию - функцию расшифровки неоднократно перекодированных почтовых сообщений.
Как уже писалось выше, электронное письмо, пройдя через несколько перекодирующих серверов, может стать совершенно нечитаемым. Для его расшифровки необходимо найти ту последовательность перекодировок, которым оно подверглось, и применить к письму обратное преобразование. Именно это делает "Штирлиц", созданный Всеволодом Лукьяниным. Если в него загрузить (например, перенеся с помощью буфера обмена или открыв сохраненный на диске текстовый файл) нечитаемый текст, полученный в качестве письма, то программа после вызова соответствующей функции начнет перебор возможных вариантов перекодирования, пытаясь найти ту последовательность перекодировок, которой подверглось письмо, и применить к нему обратные перекодировки. Пользователю показывается наилучший, по мнению программы, вариант раскодированного письма, - "Штирлиц" анализирует раскодированный текст и, если находит там общеупотребительные слова русского языка, то считает этот вариант раскодировки наилучшим.
Программа отличается большим набором режимов работы и функций. Так, можно подбирать схему перекодировок вручную (если есть для этого какие-нибудь предположения), задавать глубину анализа (то есть сколько раз подряд это письмо могло быть неправильно перекодировано), раскодировать текст, разные фрагменты которого имеют разную кодировку, читать тексты, написанные в Unicode-кодировке, читать тексты, написанные на Translit'е. Имеется подробное руководство пользователя и очень удобная функция деинсталляции, которая может служить примером написания таких программ. "Штирлиц" способна вытаскивать из текста письма фрагменты, закодированные в uuencode, base64 и других подобных системах передачи вложенных файлов, если почтовая программа получателя не распознала их. Для этого в "Штирлице" есть специальная функция.
Кроме того, при наличии какого-либо текста в закодированном в uuencode, base64 или другом подобном формате фрагменте письма программа сможет его "вытащить" и показать пользователю.
В программе есть возможность пакетного перекодирования файлов в нужную кодировку, при этом исходная кодировка каждого файла определяется автоматически и в соответствии с ней выбирается нужный алгоритм перекодирования.
Вместе с тем программа "Штирлиц" не лишена и некоторых недостатков. Так, к сожалению, очень некорректно выполняется перекодировка в кодовую таблицу Dos866 и обратно. Несмотря на то, что при этом письмо остается в какой-то степени читаемым, выглядит оно очень непрезентабельно. Так что использование "Штирлица" в качестве программы для чтения файлов в разных кодировках может сопровождаться некоторыми затруднениями. Поэтому лучшее применение, несомненно, превосходного творения Всеволода Лукьянина - "спасение" неправильно перекодированных почтовых сообщений.
Загрузить "Штирлиц" можно с адреса http://perecod.chat.ru/shtirlz.rar.
Системный блок
Следующий раздел реестра - HKEY_LOCAL_MACHINE, хранилище информации о вашем компьютере и о независимых от наличия различных пользователей настройках программ. Он - самый крупный и самый важный из всех разделов реестра. При этом он содержит в себе, в одном из своих подразделов и весь раздел HKEY_CLASSES_ROOT, который вынесен в отдельный ключ реестра лишь для удобства редактирования, и все возможные варианты содержимого раздела HKEY_CURRENT_CONFIG, в который помещается информация из HKEY_LOCAL_MACHINE в зависимости от текущей аппаратной конфигурации. Как HKEY_LOCAL_MACHINE в Редакторе реестра отображается файл System.dat, то есть вся информация HKEY_LOCAL_MACHINE физически содержится именно в этом файле.
Таким образом, HKEY_LOCAL_MACHINE - первый из описанных "реальный" раздел реестра, то есть имеющий под собой "физическую природу" - файл System.dat. (HKEY_CLASSES_ROOT и HKEY_ CURRENT_CONFIG - его подразделы, а HKEY_CURRENT_USER - подраздел HKEY_USERS, второго "реального" раздела реестра).
Подраздел Config содержит в себе данные о зарегистрированных в системе аппаратных конфигурациях. Windows позволяет при регулярных изменениях состава устройств в компьютере (например, при работе с ноутбуком, который имеет "док" - присоединяемую часть с CD-ROM, модемом и др.) не устанавливать и удалять каждый раз драйверы для всех этих устройств, а создать фиксированный набор драйверов для каждого из этих составов устройств и менять эти наборы при необходимости. Такой набор называется аппаратной конфигурацией и устанавливается через окно Панель управления - Система - Конфигурации.
В настоящее время в связи с развитием новых технологий USB и др. устройств "горячего подключения" необходимость в различных аппаратных конфигурациях почти отпала, но их поддержка в Windows присутствует[40].
В ключе Config под своими номерами располагаются записи о всех созданных конфигурациях, а при загрузке компьютера или изменении конфигурации соответствующий раздел "отражается" в реестре под видом раздела HKEY_CURRENT_CONFIG.
Если аппаратная конфигурация одна, то и в разделе Config есть только один подраздел, совпадающий с ключом HKEY_CURRENT_CONFIG[41].
В разделе HKEY_LOCAL_MACHINE\Config находятся и некоторые настройки операционной системы. Например, в ключе Сonfig\0001 (номер конфигурации)\display\settings указываются шрифты, используемые Windows по умолчанию, например, в "Блокноте". А в параметре Resolution этого раздела расположено указание на экранное разрешение. (Можете его поменять на любые цифры, хоть на 1000*200, и, если ваша видеокарта позволит, то именно такое разрешение экрана и будет.)
Подраздел DesktopManagement посвящен работе системы с библиотекой deskmgmt.dll из каталога Windows\System, отвечающей за работу операционной системы с процессором, памятью и другими устройствами материнской платы компьютера. Здесь записаны команды, обратившись с которыми из другой программы к этой библиотеке, можно получить соответствующие данные.
Подраздел Enum содержит информацию о распознанных операционной системой устройствах компьютера.
В Windows 9x есть несколько важных программных компонентов, отвечающих за обнаружение устройств и предоставление их для работы другим компонентам системы. Основными среди них являются два - диспетчер конфигурации и энумератор. При загрузке компьютера диспетчер конфигурации опрашивает BIOS и получает от него информацию о всех устройствах, не поддерживающих стандарт Plug&Play, а затем заносит ее в реестр, в этот самый раздел Enum. Затем в дело вступает программа-энумератор, которая считывает из реестра информацию о не-Plug&Play устройствах, а затем опрашивает имеющиеся в компьютере Plug&Play-устройства и составляет список всех имеющихся устройств, назначив каждому единственный идентификатор - так называемый HardwareID.
Затем основная роль вновь переходит к диспетчеру конфигурации, который на основании предоставляемой энумератором информации о наличии устройств и их характеристике (Plug&Play или нет) распределяет между устройствами прерывания, адреса ввода-вывода и другие ресурсы системы.
В этом ему помогают специальные подпрограммы - "арбитры", которые изменяют выделяемые ресурсы так, чтобы не было ресурсов, используемых одновременно двумя устройствами.
Вначале распределяются ресурсы между не-Plug&Play устройствами (информация о которых пришла еще из BIOS), а затем - между Plug&Play, так как последние умеют работать с разными настройками распределения ресурсов без изменения своей аппаратной части, и переназначить им, например, прерывания можно программно. Все внесенные изменения фиксируются в разделе Enum, а также в разделе HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\Class, содержащем совокупность информации о распознанных устройствах, а также о загруженных для них драйверах, на подразделы с данными о которых в разделе Enum имеются ссылки.
Подраздел HKEY_LOCAL_MACHINE\Hardware, несмотря на многообещающее название, хранит в себе немного информации о имеющихся последовательных портах и установленных на них модемах.
Подразделы Network и Security содержат малозначащие параметры сети Microsoft Network (интересно, в России кто-нибудь хоть когда-нибудь ей пользовался?).
И вот, наконец, - второй подраздел Software, на этот раз уже состоящий из универсальной для всех пользователей данного компьютера информации. Как и ранее, он состоит из разделов с именами компаний-производителей с подразделами внутри них, посвященных отдельным программам. В разделе HKEY_LOCAL_MACHINE\Software\Microsoft расположены настройки самой Windows и ее компонентов, а также всех программ Microsoft. Например, в подразделе Active Setup этого раздела находятся параметры системы установки компонентов Windows через Internet - Active Setup. В его подразделе Installed Components вы увидите все компоненты Internet Explorer, которые вы выбирали (или нет) при установке этого браузера. В подразделе Shared Tools раздела HKEY_LOCAL_MACHINE\Software\Microsoft находится список программ и библиотек пакета MS Office, которыми могут пользоваться другие компоненты этого пакета (скажем, "галерея клипов", которая может быть вызвана из любого приложения MS Office), с указанием пути к каждому из них.
Но, конечно, как и в прошлый раз, самым интересным местом здесь будет подраздел Windows\CurrentVersion, относящийся к операционной системе. В самом CurrentVersion, даже не в его подразделах, есть весьма полезные параметры. Скажем, именно здесь находится информация, отображающаяся в верхней части окна Панель управления - Система - Общие.
Подраздел AppPaths раздела CurrentVersion - это Windows'ский аналог параметра Path из файла autoexec.bat. Можно еще назвать его реестровым собранием ярлыков программ. Здесь можно указать пути к различным программам и имена для их запуска, а затем набирать эти имена в окне "Выполнить" для вызова этих программ, не заботясь об указании пути к ним (рис.14.9).
Подраздел Explorer опять-таки посвящен программе "Проводник", но уже - ее общим настройкам. В подразделах Desktop\NameSpace и Mycomputer\NameSpace находятся идентификаторы тех обьектов, которые должны быть расположены на Рабочем столе и в папке "Мой компьютер", например, "Корзина" или "Удаленный доступ к сети". Вы можете удалить отсюда ненужные обьекты или, наоборот, добавить сюда желаемые, создав вначале для них идентификаторы в разделе HKEY_CLASSES_ROOT, как описано выше.
Рис.14.9. Укажите в этом разделе имя для запуска программы и путь
к ней и не заботьтесь о задании правильного пути в окне "Выполнить"
В параметрах подразделов LastCheck и LastOptimize (подраздела Explorer подраздела CurrentVersion) содержится информация о последнем моменте дефрагментации или проверки жестких дисков компьютера.
В подразделе Tips вы найдете все советы, отображающиеся при первом запуске компьютера с Windows (рис.14.10). Их можно просмотреть и с помощью программы welcome.exe из каталога Windows.
Рис.14.10. Склад полезных советов для окна "Добро пожаловать в Windows". (Когда вы, кстати, видели это окно в последний раз?)
Подраздел Fonts хранит в себе информацию об именах шрифтов и их соответствии названиям файлов.
Вы, кстати, никогда не удивлялись, почему в "Проводнике" и в Norton Commander содержимое папки Windows\Fonts выглядит по-разному (рис.14.11)? Да потому, что Norton Commander берет информацию об именах файлов в этой папке из каталога, а "Проводник" - вот из этого раздела реестра. Почему копирование шрифтов в папку Fonts длится значительно дольше, чем в любую другую папку? Да потому, что еще в реестре их все надо прописать, да еще перед этим из каждого извлечь полное имя! Еще бы не дольше было...
Рис.14.11. Сравните окна слева внизу и справа внизу.
В чем причина разницы? В окне сверху.
В подразделе MS-DOS Emulation, в его подразделе AppCompat находится список программ MS-DOS, которые могут работать только в "Режиме MS-DOS", а не в окне "Сеанса MS-DOS" и требуют выгрузки Windows для своей работы (рис.14.12).
Рис.14.12. Имя этой программы было прописано здесь в реестре - и вот что вышло из попытки ее запуска. (А вы небось думали, что Windows как-то программы анализирует и думает, "пойдет" она под ней или нет? Как же...)
Из следующего подраздела реестра, MS-DOS Options, берутся параметры для диалоговых окон при настройке ярлыков программ MS-DOS для особой конфигурации "Режима MS-DOS". Именно с помощью этих параметров можно удобно настроить файлы autoexec.bat и config.sys для каждого ярлыка программы, работающей в "Режиме MS-DOS". Только настраивать их, разумеется, лучше все же через Свойства ярлыка.
Подразделы Run, RunServices, RunOnce, RunOnceEx, RunServicesOnce содержат в себе указания на программы, которые должны запуститься автоматически при запуске Windows. Выше уже рассказывалось про аналогичный раздел в ключе HKEY_CURRENT_USER, программы в котором запускались при начале сеанса работы данного пользователя, ну, а программы, указанные здесь, запустятся в любом случае. Почаще навещайте этот раздел - здесь могут прятаться трояны! (Три последних подраздела из перечисленных запустят указанную в них программу лишь один раз.) Именно здесь, в подразделе Run находится команда вызова программы резервирования реестра scanregw.exe.
В
разделе HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Windows\Current Version\Policies, в его подразделе Ratings есть параметр Key. Сотрите его, если вы случайно в процессе исследования Microsoft Internet Explorer задали пароль на ограничение доступа к отдельным ресурсам Интернета (Свойства обозревателя - Содержание - Ограничение доступа) и благополучно забыли его.
Если вы хотите изменить путь к установочным файлам Windows (например, если вы поставили Windows с компакт-диска, а затем поместили ее дистрибутив на винчестер и желаете, чтобы при любой установке драйверов или своих компонентов она обращалась именно туда), то введите в параметр SourcePath раздела HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Windows\Current Version\Setup нужный путь.
В подразделе Time Zones приведен список настроек всех возможных часовых зон из меню настройки местного времени. (Параметры же установленной временной зоны размещаются ниже, в разделе HKEY_LOCAL_MACHINE\ System\CurrentControlSet\control\TimeZoneInformation.)
Подраздел Uninstall (подраздела Explorer подраздела CurrentVersion) содержит в себе пути и параметры деинсталляторов для всех программ, которые допускают такую возможность. Именно отсюда берется информация для представления в окне Панель управления - Установка и удаление программ. Параметр DisplayName определяет название программы, которое в этом окне будет отображаться.
Если вы хотите напугать какого-нибудь любителя "Color Lines" или "Сапера", кто включит ваш компьютер без вашего ведома, вставьте в раздел HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Windows\ CurrentVersion\Winlogon параметры LegalNoticeCaption и LegalNoticeText с каким-нибудь текстом. Тогда при загрузке Windows будет отображаться окошко с этими данными (рис.14.13).
Ну, а теперь закончим описание раздела HKEY_LOCAL_ MACHINE\Software\Microsoft\Windows\ CurrentVersion и перейдем к самому последнему подразделу ключа HKEY_LOCAL_MACHINE - System, к его единственному подразделу CurrentControlSet.
В этом подразделе содержатся два ключа: Сontrol и Services. Параметры этой части реестра не менее важны, чем, скажем, подраздела Enum, так как содержат в себе многие настройки системы. Но большая их часть - чисто служебная и изменять их через редактор реестра не стоит. Впрочем, можно слегка пробежаться по наиболее интересным разделам.
В подразделе FileSystem записаны некоторые параметры работы операционной системы с носителями информации с другой файловой системой вроде CD-ROM.
Подраздел Keyboard layouts содержит список возможных раскладок клавиатуры и имена соответствующих им файлов с раскладками (установлены могут быть отнюдь не все эти файлы).
Рис.14.13. Любителя без спросу поиграть на вашем компьютере в "Сапера"
подобная надпись может здорово напугать.
Подраздел Nls посвящен кодовым страницам, которые поддерживаются системой. В его подразделе Codepage каждому номеру кодовой страницы (например, "1251" - кодировка Windows-1251) поставлен в соответствие файл, содержащий информацию об этой кодовой странице, а в подразделе Locale - имена этих кодовых страниц. Иногда проблемы с отображением русских символов в некоторых программах вроде AdobePhotoshop можно устранить, поставив значение параметра "1252" в разделе HKEY_LOCAL_MACHINE\System\ CurrentControlSet\control\Nls\Codepage в "CP_1251.nls".
Подраздел PerfStats посвящен состоянию системы и несколько подробнее описан ниже.
Подраздел SessionManager посвящен старым приложениям MS-DOS. В подразделе CheckBadApps содержится список программ MS-DOS, которые могут быть несовместимы с Windows. Наверное, вы пробовали из-под Windows запустить Norton Commander для MS-DOS и получали сообщение, что программа некорректно работает в этой операционной системе? Так вот для каждой программы MS-DOS, при попытке запуска которой выдается такое сообщение, есть свой подраздел с именем ее запускающего файла в подразделе CheckBadApps, а в нем - параметр с именем запускающего файла (рис.14.14), в котором указано число.
Это число - указатель на номер справочного раздела в файле Apps.hlp из папки Windows\Help, в котором рассказано, почему данная программа некорректно работает в Windows.
Рис.14.14. Для любой программы MS-DOS можно создать здесь раздел, и тогда при попытке ее запуска будет выводиться подобное предупреждение.
Подраздел CheckBadApps400 имеет то же самое предназначение, что и предыдущий, но в нем размещены имена программ для Windows 3.х, а не для MS-DOS.
Подразделы подраздела SessionManager с буквами "DLL" в имени хранят в себе имена системных библиотек, с которыми работает Windows, в зависимости от имени раздела - 16-ти или 32-х - разрядных. А в подразделе WarnVerDLLs приводятся имена библиотек, совместимость которых с Windows вызывает у нее "подозрения".
Подраздел TimeZoneInformation (подраздела System\Current ControlSet\control) хранит в себе информацию о текущей временной зоне.
В следующем большом подразделе HKEY_LOCAL_MACHINE\ System\CurrentControlSet\Services содержится в основном служебная системная информация. Некоторые из его подразделов очень важны для операционной системы.
Подраздел Arbitrators содержит информацию программ-арбитров, о которых шла речь выше.
Подраздел Class перекликается по своему содержанию с описанным выше разделом HKEY_LOCAL_MACHINE\Enum, частично беря свои данные из него, и содержит в себе информацию об установленных и распознанных устройствах. Именно из него берется информация для отображения в окне Панель управления - Система - Устройства (рис.14.15).
Таким образом, этот подраздел фактически является "реестром в реестре" - базой данных по устройствам, "железу", установленным в компьютере. В него включена информация, поставляемая энумератором и диспетчером конфигурации и записанная в разделе HKEY_LOCAL_MACHINE\Enum, а также данные о загруженных драйверах устройств и их параметрах (к примеру, строка инициализации модема помещается в ключе Class\Modem\0000\Init). Вспомните, кстати, что в Enum'е были ссылки на драйвера устройств вида Driver = DiskDrive\0001.
Так вот это были ссылки именно на подразделы этого раздела Class, в чем нетрудно убедиться.
Рис.14.15. Основа основ компьютера - раздел устройств. Все окно "Устройства" - здесь. И даже разбиение списка устройств на ветки в этом окне такое же,
как и ключей в реестре
То есть - раздел HKEY_LOCAL_MACHINE\System\Current ControlSet\ Services\Class является основным держателем информации об устройствах компьютера, назначенных им ресурсах и загруженных для них драйверах. Именно он поставляет информацию в окно Панель управления - Система - Устройства. Раздел HKEY_LOCAL_ MACHINE\Enum тесно связан с этим разделом и хранит "технические" данные для каждого устройства. В разделе HKEY_DYN_DATA располагаются данные о текущем состоянии каждого из устройств.
В разделах HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ Class и HKEY_LOCAL_MACHINE\Enum размещается информация лишь об имеющихся устройствах, об их характеристиках и назначенных ресурсах. Информация же о конкретной работе устройств, о том, исправны они или нет, находится в разделе реестра HKEY_DYN_DATA, который постоянно находится в оперативной памяти.
Остальная часть раздела HKEY_LOCAL_MACHINE\System\CurrentControl Set\Services содержит данные некоторых программ и особого интереса для пользователя не представляет.
В системном реестре Windows 2000/XP по сравнению с реестром Windows 9х похожую структуру имеет лишь подраздел HKEY_LOCAL_MACHINE\Software, однако настройки операционной системы, в частности, таблица соответствия имен шрифтов и их файлов, находятся не только в его подразделе Microsoft\Windows, но и в подразделе Microsoft\WindowsNT. Остальные подразделы имеют другую структуру и другое предназначение. Кроме того, к перечисленным выше местам реестра, указанные в которых программы запускаются автоматически при старте Windows, в Windows 2000/XP добавились еще параметры Userinit раздела HKEY_LOCAL_MACHINE\ Software\Microsoft\Windows NT\CurrentVersion\Winlogon и Load раздела HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows.
Сканер диска
Программа "Scanner" (рис.8.15), написанная немцем Стефаном Герлачем, отображает в виде круговой диаграммы содержимое Вашего жесткого диска, при этом оценивая реально занимаемое файлами место. Так, папка с 300 файлами по 10 килобайт будет отображаться как имеющая размер 9600 килобайт (если у Вас кластер занимает 32 килобайта), то есть занимающая почти 10 мегабайт. Можно оценить, какие файлы у Вас занимают больше места, - чтобы для увеличения свободного пространства на диске архивировать или удалять именно их.
Программа сделана очень красиво и удобно. Подведя курсор к любому сектору на диаграмме, можно узнать, какую папку он изображает. Щелкнув два раза на секторе, изображающем папку, вы перейдете к такой же диаграмме, построенной специально для этой папки и отображающей только ее содержимое. Для того, чтобы не загромождать рисунок, отображаются только файлы и папки, размер которых превышает определенную величину.
Загрузить программу можно с сервера www.freeware.ru или с сайта автора http://www.steffengerlach.de/ freeware. Программа бесплатная.
Рис.8.15. Программа Scanner.
Рис.8.16. Вся папка - как на ладони.
Не правда ли, удобно?
">
это программы, предназначенные для работы
Скрипты или сценарии - это программы, предназначенные для работы с браузером. Все сценарии можно разделить на две большие группы: исполняющиеся на том компьютере, который загружает данные из Интернета - на клиентском компьютере, и исполняющиеся на компьютере, эти данные предоставляющем - на сервере.
Сценарии, исполняющиеся на клиентском компьютере, встраиваются в загружаемые web-страницы их разработчиками и выполняются браузером клиентского компьютера. Для того, чтобы они могли быть выполнены, браузер должен уметь их интерпретировать и выполнять - поддерживать язык, на котором скрипты написаны.
На настоящее время существуют два языка для написания таких сценариев - JavaScript и VBScript (от Visual Basic Script), причем первый из них поддерживается практически всеми современными моделами браузеров - Microsoft Internet Explorer, Netscape Navigator, Opera, Ariadna, а второй - только Microsoft Internet Explorer (начиная с версии 4.0). Поэтому использование JavaScript предпочтительнее, но этот язык несколько сложнее по своему синтаксису и не позволяет реализовывать некоторые возможности, которые доступны VBScript. Однако, поскольку доля пользователей браузера Microsoft Internet Explorer сейчас составляет порядка восьмидесяти-девяноста процентов от всех пользователей сети Интернет, то VBScript можно широко использовать, а для пользователей браузеров, не поддерживающих этот язык, сделать специальный, упрощенный вариант сайта.
Синтаксис языков JavaScript и VBScript подробно описан в специальной литературе по программированию для Интернета, которая широко представлена в электронных библиотеках вроде тех, чьи адреса приводились выше. Существуют сайты, посвященные этим языкам, библиотеки сценариев, которые можно найти с помощью поисковых систем. Неплохим методом изучения JavaScript и VBScript является исследование страниц со скриптами, коих сейчас в Интернете великое множество.
Наиболее общие и основные понятия JavaScript и VBScript таковы. Скрипт, располагаемый на странице, заключается в тэги "<script>" и "</script>" - без этого он будет интерпретирован как простой текст и отображен таким в браузере.
Для того, чтобы скрыть текст скрипта от браузеров, не понимающих тэг "<script>", после него, но перед началом текста скрипта, можно встроить тэг комментария: "<!--", закрыв его перед тэгом "</script>" тэгом "-->". Тогда браузер, поддерживающий скрипты, скрипт выполнит, а не поддерживающий - полностью проигнорирует.
Если скрипт написан на языке VBScript, то в его тэге должно стоять указание на это вида "<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>". То же рекомендуется делать и для скриптов на JavaScript: "<SCRIPT language=JavaScript>", однако это не обязательно.
Текст скрипта может находиться не на странице, а в отдельном файле с расширением .js (для сценариев на JavaScript) или .vbs (для сценариев на VBScript), что может облегчить труд по обновлению сайта, если обновляемой частью являются именно скрипты. К сожалению, увеличить скорость загрузки страницы путем вынесения скриптов в отдельные файлы не удастся - они все равно будут загружены не при их вызове, а при загрузке страницы. Для такого включения текста скрипта из отдельного файла следует использовать тэги "<SCRIPT language=JavaScript src="Имя_файла.js"></SCRIPT>" или "<SCRIPT language=VBScript src="Имя_файла.vbs"></SCRIPT>".
Сценарии на JavaScript и VBScript могут исполняться как автоматически во время загрузки страницы, так и при каких-либо действиях пользователя. Конкретный способ выполнения зависит от текста скрипта. Сценарий, выполняемый автоматически, состоит из простого набора команд, без каких-либо заголовков и окончаний. Например, сценарий
<SCRIPT language="JavaScript">
if (navigator.appName == "Microsoft Internet Explorer")
document.write ("<p>Вы используете Microsoft Internet Explorer</p>");
</SCRIPT>
будет выполнен сразу после загрузки, и в результате его выполнения в загружаемом документе в том месте страницы, где располагается текст этого скрипта, появится строка "Вы используете Microsoft Internet Explorer".
Если необходимо, чтобы скрипт был выполнен до загрузки страницы, рекомендуется поместить его в раздел "<head>", однако тогда функции работы с текстом страницы скрипту будут недоступны - ведь он будет выполняться до того, как браузер его получит с сервера.
Для того, чтобы сценарий выполнялся при наступлении определенных условий (нажатии пользователя на кнопку, окончании загрузки страницы и др.), необходимо оформить его как функцию. Это значит, что тогда у скрипта должен появиться заголовок и окончание. Для JavaScript заголовком является оператор "function имя_скрипта()", а весь текст скрипта заключается в фигурные скобки:
<script Language=JavaScript>
function skript()
{
...Команды сценария...
}
</script>
В VBScript заголовок - фраза "Sub имя_скрипта()", а после текста скрипта должна следовать команда "End Sub":
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
Sub runscr()
...Команды
сценария...
End Sub
</SCRIPT>
Сценарий, оформленный таким образом, имеет имя - то, что стоит после слов "function" или "Sub". По этому имени его можно вызывать из любого места страницы.
Вызов скрипта - это просто команда его выполнить.
Например, при нажатии кнопки "<input type="button" value="Готово" onClick="startskript()">" будет выполнен скрипт с именем "startskript. Вызываемый скрипт может находиться в любом месте страницы, однако настоятельно рекомендуется, чтобы он располагался выше места его вызова, - иначе при неполностью загруженной странице может быть неприятная ситуация, когда при вызове незагруженного скрипта браузер выдаст ошибку.
Сценарий может вызываться при происхождении какого-либо события. Следующий пример показывает, как вызвать скрипт на языке Javascript при полной загрузке страницы:
<SCRIPT FOR=window EVENT=onload LANGUAGE="JScript">
...Команды скрипта...
</SCRIPT>
В языке VBScript подобный вызов делается несколько по-другому:
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
Sub window_onload()
...Команды
скрипта...
End Sub
</SCRIPT>
"Onload" - это событие, возникающее при окончании загрузки страницы. Существуют и другие события для обьекта "window" (то есть - окна открытой web-страницы). Например, "onresize" - при изменении размеров окна. Полные списки событий и стандартных обьектов (то есть имеющихся на всех страницах) можно найти в специальной литературе по программированию для Web.
Другой тип скриптов, о котором говорилось в начале этого раздела - это сценарии, выполняющиеся на сервере (так называемые CGI-скрипты). CGI (что расшифровывается как Common Gateway Interface: общий способ обмена данными) - это не язык, а принцип действия таких скриптов: при их выполнении берутся данные от браузера пользователя и обрабатываются на сервере. С помощью CGI-скриптов можно решить самые разнообразные задачи: осуществление поиска по сайту, работу с базами данных, динамическую генерацию страниц с нужным пользователю содержанием.
Примером CGI-сценариев являются программы на языке PHP, общей характеристике и основам синтаксиса которого посвящена глава 19 этой книги.
В web-программировании иногда используются еще и такие структуры, как Java-апплеты. Java - это специальный язык программирования, отличающийся тем, что программы, написанные на нем, могут выполняться на компьютерах любых платформ: как на IBM PC, так и на Macintosh, и на других системах. По своему синтаксису он похож на Cи. Java-апплет - это программа на языке Java, переведенная в так называемый "пи-код", то есть в двоичный код, могущий быть выполненным специальным интерпретатором (так называемой "виртуальной машиной Java"). Для различных платформ компьютеров существуют свои версии интерпретаторов Java, а сам язык Java одинаков для всех платформ. Поэтому один и тот же Java-апплет может работать на любом типе компьютеров, для которого создана "виртуальная машина".
Java-апплет может быть вставлен в web-страницу. Создаются апплеты с помощью специальных программных пакетов, таких, например, как Java Developer Kit. С помощью Java-апплетов можно добиться интересных визуальных эффектов на странице. Но следует помнить, что их загрузка и выполнение очень сильно замедляют работу компьютера посетителя сайта с апплетами. Поэтому Java-апплеты стоит использовать лишь в очень редких случаях, например, для внедрения в страницу сложного калькулятора научных расчетов. Во всех остальных случаях рекомендуется воздерживаться от их применения. Большинство возможностей Java-апплетов может быть реализовано средствами JavaScript и VBScript, а также Dynamic HTML[47].
Следы на песке
Если вы будете просматривать структуру жесткого диска с помощью программы DiskEditor, то вас наверняка заинтересует, каким образом можно найти на диске тот или иной описанный выше его компонент. Скажем, Master Boot Record или FAT. А сделать это можно, используя сигнатуры - последовательности байт, характерные для того или иного компонента файловой системы.
К примеру, в самом конце Master Boot Record находится сигнатура 55AAh (так в шестнадцатиричном представлении: собственно эта сигнатура занимает два байта). По ней можно найти конец Главной Загрузочной Записи. Строго говоря, в первом секторе винчестера сначала располагается Partition Table, а лишь потом - Master Boot Record. Но это важно лишь при изучении структуры диска с помощью просмотра содержимого магнитных ячеек или при восстановлении данных на жестком диске.
Boot Record каждого логического диска с файловой системой FAT можно найти, ориентируясь на всегда присутствующую в ней строку "MSWIN4" (в текстовом представлении). FAT всегда начинается с последовательности шестнадцатиричных цифр F8 FF FF FF.
Слишком умные серверы
Наличие пяти различных кодировок для русского языка создало определенные проблемы. Прежде всего, возникла необходимость в специальных программах-перекодировщиках, о которых речь пойдет ниже. Но самая большая проблема оказалась в российских почтовых серверах.
Казалось бы, а в чем она могла заключаться? Главное, чтобы серверы могли обрабатывать сообщения в восьмибитных кодировках, и тогда в какой бы кодировке сообщения не пересылались, они всегда могли бы быть прочитаны принимающей стороной с помощью программы, умеющей работать с этой кодировкой. Но, увы, не все оказалось таким простым… В некоторые почтовые серверы их создатели вложили возможность автоматической перекодировки поступающих сообщений - возможно, для некоей "стандартизации": глупый пользователь, ничего не понимающий в компьютерах, написал и отправил письмо в кодировке Windows-1251, - так надо его письмо перевести в KOI-8, чтобы было, как у нормальных людей, никогда не использующих Windows! Хотя, может быть, у создателей перекодирующих серверов были и иные соображения.
Если на такой перекодирующий сервер поступит сообщение в кодировке Windows-1251, и он его воспримет именно как сообщение в этой кодировке, то письмо преспокойно будет перекодировано в KOI-8 и отправлено дальше. О том, в какой кодировке написано письмо, всегда указывается в его заголовке или тексте. Просмотреть текст сообщения именно в том виде, в каком сообщение передается почтовыми серверами (то есть со всей служебной информацией) можно в любой почтовой программе. Например, в Microsoft Outlook Express 5.0 это можно сделать, щелкнув правой кнопкой мыши на письме, выбрав из контекстного меню пункт "Свойства", а в появившемся окне - вкладку "Подробности". Тогда можно будет просмотреть заголовок сообщения. Нажав на кнопку "Исходное сообщение", вы увидите текст письма так, как он передается по Сети. Кодировка письма указывается в заголовке сообщения (рис.13.7).
Рис.13.7. Указание на кодировку письма в заголовке сообщения.
Русская версия Microsoft Outlook Express 5.0 по умолчанию для всех отправляемых сообщений ставит кодировку KOI-8 и сообщения отправляет именно в этой кодировке. Однако некоторые почтовые программы могут делать ошибки - письмо написано, например, в KOI-8, а программа пишет в заголовке письма, в служебной информации, что письмо имеет кодировку Windows-1251. Если такое письмо будет отправлено адресату, то оно сразу не сможет правильно отобразиться в его почтовой программе - на экране будет мешанина символов вроде той, что помещена в заголовке этой главы. Поскольку почти все почтовые программы позволяют просматривать одно и то же письмо в различных кодировках, то получатель письмо прочитать все же сможет, просто выбрав для него правильную кодировку.
Но если такое письмо - с несоответствующим содержанию заголовком - попадет на перекодирующий почтовый сервер, то ситуация резко осложнится. Посмотрев на заголовок письма, сервер решит, что, раз оно написано в Windows-1251, как там указано, то оно должно быть перекодировано в стандартную для Сети (по мнению сервера и его создателей) кодировку KOI-8. К письму будет применено преобразование Windows-1251 - KOI-8: будут заменены соответствующие коды символов. Но письмо-то уже изначально было в KOI-8! И что получается? Автор письма написал в нем "Добро пожаловать". В KOI-8 оно перекодировалось как "дНАПН ОНФЮКНБЮРЭ". А сервер эту фразу снова перекодировал по тем же законам, что и любая перекодировка из Windows-1251 в KOI-8. И получилось: "Дмюом нмтчймачпщ". Понять что-либо уже так просто стало невозможно.
Ну, а если на пути письма попалось несколько перекодирующих почтовых серверов, и оно было перекодировано не один раз, то дешифрация такого письма становится крайне сложной задачей.
События, методы, свойства
Когда-то давным-давно программы, написанные и работавшие тогда еще под MS-DOS, получали от пользователя данные, обрабатывали их и выдавали затем результат. Почти любая программа предусматривала в своей работе период ввода данных, период обработки, период выдачи результата. Подобные действия были принципом работы Dos-овских программ. И программирование их называлось структурным - надо было строго и последовательно разрабатывать алгоритм, реализовывать заданный порядок действий программы, в который в процессе работы пользователь в момент, для этого не предназначенный, вмешаться не мог, разве только принудительно остановив программу.
С появлением операционной системы Windows стал широко известен другой принцип программирования и создания алгоритмических языков - принцип объектно-ориентированного языка.
Это значит, что основная направленность разработчика сместилась с действия на объект - на его реакции на действия пользователя, на его свойства и на их изменение. И VBA является типичным представителем объектно-ориентированных языков, как по своему синтаксису, так и по архитектуре программ. Основными понятиями объектно-ориентированного языка являются объект, свойство, метод, событие.
Объект - это все, над чем может совершаться какое-либо действие или то, что имеет определенные характеристики. К примеру, открытый документ Word - это объект, первая буква в нем - это тоже объект, тридцатое слово, десятое предложение, второй рисунок - это все объекты. Объектами также являются запущенная программа, какой-нибудь файл на диске, даже сам Word - это тоже объект.
Почти каждый объект внутри себя имеет подобъекты, которые, в свою очередь, являются полноценными объектами и могут иметь свои подобъекты. Например, у объекта "Документ" есть подобъект "Десятое предложение", у которого есть подобъект "Второе слово", у которого есть подобъект "Третья буква". С помощью объектно-ориентированного языка VBA можно обратиться к любому объекту, если знать его иерархию - то есть все те объекты, чьим подобъектом он является.
Свойство - это любая характеристика объекта. К примеру, у объекта - первой буквы документа есть свойства: выделение жирным, выделение цветом, подчеркивание, выделение курсивом, регистр и много еще других. У объекта - документа есть свойства: наличие автоматической расстановки переносов, наличие автоматической проверки грамматики и др.
Большинство свойств объектов VBA можно задавать программно, однако есть свойства Read-Only - не допускающие изменений.
Многие свойства объектов Word также задаются через стандартные диалоговые окна Word - например, Файл-Параметры страницы или Сервис-Параметры, однако их всегда можно задать и в программе, а соответствующие диалоговые окна использовать при записи макроса для того, чтобы посмотреть синтаксис команды задания того или иного свойства.
Метод - это какое-либо действие над объектом. Например, печать текста или поиск текста в документе. У многих методов есть параметры метода, позволяющие задать параметры действия. Вот пример:
With Selection.Find
.Text = "Этот текст надо заменить"
.Replacement.Text = "Заменить на этот текст"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
В данном примере вначале объекту VBA "Find", являющемуся подобъектом объекта "Selection", задаются необходимые свойства ".Text", ".Forward", ".Format" и другие. Затем выполняется метод ".Execute" для объекта "Selection.Find" с параметром "Replace:=wdReplaceAll"(т.е. "Заменить все"). Команда With … End With позволяет не писать для каждого свойства или подобъекта полное название соответствующего объекта, что дает возможность экономить место и делать программу лучше и быстрее работающей.
Свойства и методы по-разному отображаются в контекстной подсказке. Так, против названий свойств стоит серый символ указывающей руки, а против названий методов - зеленый значок летящей коробки (см.на рис.1.8 в предыдущей главе).
Событие - это то, что "происходит с объектом помимо его воли", "результат действия какого-то другого метода". Это "все, что случается" с объектами по милости пользователя или программы. Нажатие кнопки, набор буквы, клик мыши, наступление какого-либо момента времени, завершение работы любой другой программы, - все это события.
События - основа работы любой программы. И даже если программа должна работать автономно (например, планировщик заданий), то в качестве событий используется наступление того или иного времени на системных часах. Так, когда пользователь нажимает кнопку на форме, происходит событие нажатия этой кнопки.
Для каждого события можно написать программу, которая будет срабатывать именно тогда, когда это событие произойдет. Особое значение понятие событий имеет при написании программы реакций формы на изменения ее компонентов, а также при описании новых классов.
На каждое событие пишется своя подпрограмма, которая это событие "обрабатывает" - то есть выполняет определенные действия, которые должны быть выполнены, когда это событие происходит.
Сокровищница имен
Раздел HKEY_CLASSES_ROOT является точной копией раздела HKEY_LOCAL_MACHINE\SOFTWARE\Classes и содержит в себе информацию о всех зарегистрированных в системе типах файлов. Именно из этого раздела берется информация для представления в окне "Типы файлов" (рис.14.2). Но хранится информация о зарегистрированных расширениях весьма своеобразно и сложно. Вначале в разделе HKEY_CLASSES_ROOT идет список всех расширений (с точками вначале!), зарегистрированных в системе, каждое из которых является названием раздела реестра. В каждом таком разделе обязательно есть параметр "По умолчанию". В нем записано как бы "внутреннее" название расширения, которое "в ходу" у системы (рис.14.3, слева).
В разделе HKEY_CLASSES_ROOT также присутствует раздел с именем этого "внутреннего" названия расширения (расположенный ниже в окне редактора реестра), в котором находятся параметры, определяющие меню правой кнопки мыши для этого расширения. В параметре "По умолчанию" этого раздела записано "официальное" название типа файлов с таким расширением, которое, например, присутствует в списке окна "Типы файлов" (рис.14.3, справа, также см.рис.14.2).
В разделе, имя которое соответствует расширению с точкой вначале, также могут находиться различные параметры, определяющие интеграцию данного типа файлов в "Проводник". В частности, если создать в этом здесь раздел с именем, соответствующим внутреннему названию расширения, там - раздел с именем ShellNew, а в нем - строковый параметр NullFile (рис.14.4, слева), то в выпадающий список "Создать файл" будет помещено "официальное" название типа файлов (рис.14.4, справа). Так будет только в случае, если "официальное" название типа файлов присутствует в реестре, и указана программа, который этот файл открывает (см.ниже).
Рис.14.3. Слева показано, где можно узнать "внутреннее" имя типа файлов или задать его. Ну, а справа показано, где расположено "официальное" название типа файлов.
Посмотрите его также и на рис.14.2.
Рис.14.4. Создайте параметр NullFile, как показано слева, и любуйтесь на новый пункт в меню Создать, как показано справа.
При выборе в этом списке этого типа файлов будет создан пустой файл с расширением, соответствующим этому "официальному" названию, и с таким же именем, что и "официальное" название. Если в папку Windows\ShellNew поместить файл с этим расширением, а в разделе ShellNew создать не параметр NullFile, а параметр FileName, и в его значении указать имя этого файла, то при выборе этого типа файлов в списке "Создать..." в текущей папке будет создана копия файла, помещенного в папку Windows\ShellNew.
Кроме того, в разделе ShellNew могут также быть параметры Data и Command. В первом случае значением параметра Data должен быть набор двоичных данных, которые будут помещены в пустой файл при его создании из меню "Создать". А во втором в параметре Command может быть указан путь к какому-либо исполняемому файлу с такими параметрами командной строки, которые приводят к созданию нового файла этой программы. Так, например, создаются ярлыки из меню "Создать".
Поэтому для того, чтобы почистить меню "Создать", придется потратить немало времени. Надо с помощью функции "Поиск" Редактора реестра найти в разделе HKEY_CLASSES_ROOT все разделы ShellNew, а в них - параметры "NullFile", "FileName", "Data" и "Command" и оставить среди них только нужные.
Если в раздел ShellNew поместить несколько разных полей для создания файла, то выполняться их указания будут согласно приоритету в последовательности "NullFile", "FileName", "Data", "Command".
В разделе (рис.14.4, справа) с именем "внутреннего" названия расширения могут находиться разделы DefaultIcon, параметр "По умолчанию" которого определяет иконку этого типа файлов[36], а также раздел "shell", в котором располагаются команды контекстного меню правой кнопки мыши данного типа файлов.
Название действия, которое отображается в меню правой кнопки мыши над файлом данного типа, может быть либо названием одного из подразделов раздела shell, либо значением параметра "По умолчанию" этого подраздела (в последнем случае название самого подраздела не имеет значения[37]). В подразделе с именем команды контекстного меню располагается подраздел command, в параметре "По умолчанию" которого указан полный путь к программе, которая должна выполнить данное действие (рис.14.5).
Рис.14.5. Вот место, где указывается программа, открывающая файл.
Если для какого-либо типа файлов параметр Default Icon не указан, то в качестве иконки для него используется стандартная иконка документа. Если же в системном реестре вообще нет указания на такой тип файлов, то для него берется иконка с изображением логотипа Windows.
Все вышеизложенное несколько трудно для восприятия, но увы - это так. Приведена же здесь эта информация для того, чтобы вы поняли назначение различных групп разделов реестра. Кроме того, из данной информации есть несколько практических выводов.
Во-первых - теперь вы можете свободно редактировать выпадающее меню "Создать...". Для удаления лишних пунктов оттуда надо просто провести поиск по словам FileName, NullFile и др. и удалить параметры ShellNew в тех найденных разделах, которые не нужны.
Вы можете удивиться, найдя весьма много параметров FileName и NullFile, причем в разделах типов файлов, которые не присутствуют в меню "Создать...". Это чаще всего "обломки" предыдущих инсталляций программ. Дело в том, что для того, чтобы название типа файлов появилось в меню "Создать...", нужно правильное оформление всех разделов реестра, посвященных данному типу: и раздел с "внутренним" именем, и раздел shell, и в нем обязательно - раздел с именем open и т.д.
Для добавления какого-либо пункта в меню "Создать..." нужно найти раздел с именем нужного расширения и добавить в него подразделы с его "внутренним" именем и именем ShellNew, а там - указать параметр NullFile (или FileName с именем файла).
Ну и, естественно, проверить наличие и правильность оформления раздела с "внутренним" именем этого расширения.
"Обломки" инсталляций - разделы с именами типов файлов могут, к примеру, образоваться так. Программа Microsoft Photo Editor при своей установке поместила в реестр записи о том, что файл с расширением .gif имеет "внутреннее" имя "giffile", создала под него в реестре два раздела - .gif и giffile, прописав там все, что нужно. При установке программы ACDSee она в разделе .gif заменила "внутреннее" имя этого типа на свое - ACDSee.GIF и создала под него раздел с именем "ACDSee.GIF", куда и разместила свои команды. А прежний-то раздел, "giffile", остался! Но он теперь уже не соответствует никакому типу файлов, так как ни у одного расширения нет такого "внутреннего" имени. После длительной эксплуатации системы таких обломков накапливается достаточно много. Поэтому поиск нужного раздела надо начинать именно со списка расширений, а потом уже переходить к списку "внутренних" имен, узнав нужное.
В некоторых разделах, посвященных типам файлов, можно найти еще и другие разделы. Например, раздел "ddeexec" в подразделе с именем команды раздела shell какого-либо типа файлов содержит те команды DDE, которые должны использоваться. (Некоторые программы способны воспринимать команды операционной системы при открытии того или иного типа файлов и, к примеру, открывать их не в новом окне, а в своем подокне. Это называется Dynamic Data Exchange, DDE - динамический обмен данными.)
В некоторых разделах встречаются параметры Content-Type. Это - указания Интернет-браузеру на тот случай, если он встретит подобный файл в Интернете. Существуют и другие возможные виды разделов, но подробное их описание выходит за рамки данной книги.
Некоторые типы файлов могут быть зарегистрированы в реестре по упрощенной схеме. При ее использовании "внутреннее" имя типа файлов не указывается, а те параметры, которые должны были бы присутствовать в разделе с "внутренним" именем, находятся в разделе с именем расширения файла.
Такая схема тоже работает, но все же является не совсем корректной.
Каталог имеет только два "внутренних" имени и тем самым два подраздела - Folder и Directory, соответствующие его пустому и непустому состояниям. В каждом из этих подразделов содержатся команды, применяемые ко всему каталогу. В подразделе с именем "*" находятся команды, применяемые ко всем типам файлов, а в подразделе Unknown - к файлам, которые в реестре не зарегистрированы (то есть в нем нет подразделов с именами, соответствующими их расширениям). Подраздел с именем Drive соответствует логическому диску.
В подразделе с "внутренним" именем типа файла может содержаться также параметр EditFlag. В зависимости от его значения запрещаются те или иные параметры редактирования действий с этим типом файлов с помощью окна Вид-Параметры-Типы файлов, вызываемого из "Проводника". Вы, наверное, замечали, что редактировать через это окно действия с каталогом или логическим диском нельзя? Так вот это именно из-за значения параметра EditFlag[38].
В разделе HKEY_CLASSES_ROOT также имеется подраздел CLSID, едва ли не самый большой во всем реестре. Он содержит в себе информацию об обьектах операционной системы, имеющих свои идентификаторы
- длинные числа в фигурных скобках, как бы большой список всех их имен. С помощью этого подраздела идет общение между различными компонентами системы, и именно он позволяет слаженно им работать и дает возможность добавлять новые обьекты.
Обьектами в операционной системе может стать все, что угодно - программы, папки, компоненты программ и др. Строго говоря, обьект в программистском понимании - это все, что имеет имя и к чему можно обращаться, как к единому целому.
Этой возможностью пользуются разработчики программ, интегрирующихся в систему. Служебные папки, такие, как Панель управления, Удаленный доступ к сети, Принтеры, которые вы наверняка в свое время безуспешно искали на жестком диске, являются именно такими обьектами и имеют свои идентификаторы.
Идентификаторы также имеют и реальные папки, выполняющие в системе какие- либо функции, например, Рабочий стол, Корзина. Вы можете даже дать такой идентификатор какой-либо из своих папок (тогда ее, в частности, можно будет включить в окно "Мой компьютер", как показано на рисунке).
Совет. Вот как это можно сделать
1. Откройте раздел реестра HKEY_CLASSES_ROOT\CLSID и добавьте туда раздел с именем {FD4DF9E0-E3DE-11CE-BFCF-....любые 12 цифр и букв...}. Тем самым вы создадите еще один идентификатор обьекта Windows. (Вообще говоря, и остальные цифры могут быть произвольными. Важно лишь, чтобы в реестре не оказалось двух одинаковых идентификаторов.)
2. Добавьте в этот раздел параметр По умолчанию = "Название папки". Здесь введите то имя, под которым вы хотите, чтобы папка отображалась в окне "Мой компьютер".
3. Добавьте в этот раздел подразделы с параметрами:
- DefaultIcon и параметр по умолчанию там - путь к желаемой иконке папки.
- InProcServer32 и параметр по умолчанию там - "shell32.dll", а также параметр "ThreadingModel" со значением "Apartment".
- Shell, в нем подраздел с именем, соответствующим желаемому названию команды по умолчанию для папки (например, "Открыть"), а в нем подраздел Command (то есть так же, как и для любого обычного типа файлов). Введите строку "c:\windows\explorer /n / root, ...путь к нужной папке..." в качестве значения параметра по умолчанию в подразделе Command. Можете добавить в раздел Shell и другие команды в таком же виде.
- ShellEx, в нем подраздел PropertySheetHandler, а в нем - подраздел с именем, равным имени всего раздела, который вы создали для своей папки (то есть {FD4DF9E0-E3DE-11CE-BFCF-....любые 12 цифр и букв...}). Это, впрочем, не обязательно, но желательно.
- ShellFolder, а в нем - параметр Attributes со значением 0.
Теперь ваша папка стала системным обьектом - таким же, как, скажем, и "Удаленный доступ к сети", "Принтеры".
У нее есть свой идентификатор - это длинное выражение в фигурных скобках. Если вы добавите его в качестве имени подраздела в раздел HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\mycomputer\NameSpace, то она появится в окне "Мой компьютер" (имя у нее там будет то, которое вы задали на шаге 2). А чтобы разместить ее на Рабочем столе, добавьте ее идентификатор рядом в раздел Desktop\NameSpace раздела Explorer.
А если вместо строки "c:\windows\explorer…" указать путь к какой-нибудь программе, то тогда получится, что ярлык этой программы вы поместите в окно "Мой компьютер" и сможете запускать ее прямо оттуда!
Некоторые обьекты операционной системы, кроме идентификаторов, имеют еще и словесные имена. В этом случае эти имена отображаются в качестве имен разделов в той же части HKEY_CLASSES_ROOT, что и "внутренние" имена типов файлов и содержат в себе данные об идентификаторе в одном из своих параметров. Их остальные параметры могут хранить различную служебную информацию.
Для того, чтобы изменить параметры
Для того, чтобы изменить параметры (внешний вид и имя, в частности) системных иконок, найдите разделы с именами, соответствующим их идентификаторам в разделе HKEY_CLASSES_ROOT\CLSID и поменяйте нужные вам параметры в них. Вот идентификаторы некоторых из системных иконок:
{20D04FE0-3AEA-1069-A2D8-08002B30309D} - "Мой компьютеp"
{645FF040-5081-101B-9F08-00AA002F954E} - "Коpзина"
{208D2C60-3AEA-1069-A2D7-08002B30309D} - "Сетевое окpужение"
{FF393560-C2A7-11CF-BFF4-444553540000} - "History"
{992CFFA0-F557-101A-88EC-00DD010CCC48} - "Удаленный доступ к сети"
{21EC2020-3AEA-1069-A2DD-08002B30309D} - "Панель управления"
{2227A280-3AEA-1069-A2DE-08002B30309D} - "Принтеры"
Если в "Проводнике" вы создадите папку с именем Имя.Идентификатор, то она превратится в соответствующую папку (верно не для всех идентификаторов, скажем, новый "Мой компьютер" вам так создать не удастся). А добавив параметр InfoTip с строкой в качестве значения в один из таких разделов, можно организовать всплывающую подсказку для соответствующей папки. Добавив некоторые подобные папки в "Главное меню", можно получить весьма интересные результаты.
В параметре "По умолчанию" каждого подраздела раздела CLSID располагается название обьекта, так что вы можете в какой-то степени узнать, для чего тот или иной раздел предназначен.
В каждом подразделе раздела CLSID с именем, соответствующем тому или иному идентификатору, находится подраздел InprocServer или InprocServer32, в параметре "По умолчанию" которого указана библиотека[39], содержащая программы работы с этим обьектом.
С помощью идентификаторов можно редактировать контекстное меню правой кнопки мыши различных файлов, добавляя туда команды работы с этими файлами. Так, к примеру, происходит при установке программы WinZip, после которой в контекстном меню каждого файла и папки появляется пункт "Add to Zip". Многие антивирусные программы, например, Antiviral Toolkit Pro, позволяют вызывать их из контекстного меню какого-либо файла для проверки именно его, помещая команду своего вызова в это меню.
Чтобы добавить возможность вызова программы из какой-либо библиотеки для работы с тем или иным типом файлов, в разделе CLSID создается подраздел вида {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} и как-нибудь именуется в его параметре "По умолчанию". Затем в этом подразделе создается подраздел InprocServer, а уже в его параметре "По умолчанию" указывается путь к библиотеке, в которой располагаются программы для работы с нужным типом файлов.
Далее в подразделе с именем, равным "внутреннему" имени нужного типа файла или его расширению, создается подраздел ShellEx. В нем могут располагаться так называемые "обработчики" - подразделы с именами PropertySheetHandler, DropHandler и т.д., предназначенные для задания различных способов вызова программ для работы с файлами этого типа. И уже именно в них помещаются разделы (с произвольными именами, обычно отражающими названия программ, для которых они предназначены), в параметрах "По умолчанию" которых указываются соответствующие номера идентификаторов.
Идентификаторы, которые указаны в параметрах "По умолчанию" подразделов раздела ContextMenuHandler, добавляют команды связанных с ними библиотек в контекстное меню правой кнопки мыши. Если добавить идентификатор в подраздел раздела DragAndDropHandler (естественно, предварительно создав сам этот раздел), то команда, соответствующая этому идентификатору, будет вызвана, когда файл того типа, для которого все это расписывается, переносится в какую-либо папку при нажатой правой клавише мыши. То, что указано в разделе DropHandler, срабатывает, когда что-либо переносится мышью на сам файл, - например, когда WinRar добавляет файл в архив при его перетаскивании на иконку архива.
Если в разделе ShellEx раздела реестра с именем, соответствующим "внутреннему" имени какого-либо типа файла или его расширению, создать подраздел PropertySheetHandler, а в нем - подраздел с идентификатором в параметре "По умолчанию", то команда из библиотеки, на которую указывает этот идентификатор, выполняется при вызове пункта "Свойства" контекстного меню правой кнопки мыши файла этого типа и позволяет добавлять к окну свойств файла дополнительные вкладки.
Например, так поступает программа DFolder (о ней рассказано в следующей главе), присоединяя к окну свойств папок вкладку с указанием занимаемого файлами этой папки физического места на жестком диске (рис.14.5).
Именно благодаря возможности использования подобных обработчиков ContextMenuHandler, PropertySheetHandler и др. программы могут изменять меню правой кнопки мыши как им необходимо. К примеру, добавлять в окно свойств окна для быстрого просмотра изображений. Причем такое окно появляется не для всех типов файлов, а только для тех, в подразделе ShellEx которых присутствует обработчик PropertySheetHandler, а в его подразделе указан нужный идентификатор, - то есть только для файлов картинок.
Рис.14.5. Возможность появления в меню "Свойства" каждой папки такого
окна, как справа, дана параметром в разделе PropertySheetHandler,
показанном слева
Параметры и разделы, изменяющие контекстное меню, вносятся программами в реестр при их инсталляции или из диалоговых окон самих программ.
Вряд ли, конечно, тем, кто профессионально не занимается программированием, эти данные пригодятся непосредственно в работе. Но, во всяком случае, теперь вы не будете в реестре гостем, незнакомым с местностью, а сможете понимать назначение его записей. Ну, а если когда-нибудь вы возьметесь за изучение технологии составления программ, то эта информация вам в какой-то степени поможет ее освоить.
В операционных системах Windows 2000 и Windows XP данный раздел реестра устроен практически так же, как описано выше.
Краткий вывод. Каждый тип файлов, зарегистрированный в системе, представлен в разделе HKEY_CLASSES_ROOT системного реестра в двух местах:
1. В начале раздела, в подразделе с именем расширения этого типа файлов с точкой вначале. Здесь приводится "внутреннее" имя этог типа файлов, а также информация о включении данного типа в меню "Создать...".
2. В подразделе с именем, соответствующим "внутреннему" имени. Здесь указывается "официальное" имя этого типа файлов, а также указывается его иконка и определяются пункты контекстного меню правой кнопки мыши для него.
В реестре встречаются "обломки" предыдущих регистраций в виде подразделов с уже утратившими актуальность "внутренними" именами типов файлов.
Создание первой макрокоманды
Антон Орлов, http://antorlov.chat.ru
В предыдущих двух главах рассказывалась о языке Visual Basic for Applications (сокращенно - VBA), его возможностях и правилах, а также о Редакторе VBA - средстве создания программ на этом языке в среде Microsoft Office. Теперь же на наглядном примере рассмотрим процесс создания простой макрокоманды для Word, подробно обьясняя и иллюстрируя все шаги этого процесса.
Цель этой главы - показать ход мыслей программиста, осваивающего неизвестную ему среду разработки без предварительной подготовки. Постарайтесь внимательно ее прочитать, буквально останавливаясь на каждой строчке, ибо, единожды осознав принципы самостоятельного изучения нового языка программирования, вы потом сможете с их помощью быстро и эффективно осваивать другие средства создания программ для компьютеров.
Создание программы
В отличие от других средств разработки программного обеспечения, где единственным способом создания новой программы является написание ее кода и создание в визуальных редакторах диалоговых окон или использование уже готовых фрагментов кода других программ, в VBA есть уникальное средство разработки, не присутствующее больше практически нигде и позволяющее быстро научиться создавать простые макросы для компонентов Office, в том числе и для Microsoft Word, без использования описаний языка. Это средство - так называемая "запись макросов". При работе в Word можно включить специальный режим записи макросов, и тогда все действия пользователя в редакторе будут автоматически "переводиться" на язык VBA и записываться в виде текста программы. Этот текст можно потом изучить для выяснения синтаксиса и устройства языка, а также необходимым образом его модифицировать.
Для записи макроса в Word надо выбрать из меню "Сервис" пункт "Макросы", а затем из выпадающего подменю - пункт "Начать запись".
Документы Word - собственно документы с расширением ".doc" и шаблоны документов с расширением ".dot" - устроены так, что могут хранить в себе программы. Каждую программу, хранящуюся в документе, может вызывать на исполнение либо кнопка на панели инструментов, либо сочетание клавиш, либо пункт меню, либо другая программа. Возможно любое сочетание способов вызовов. Поэтому перед началом записи макроса пользователю предлагается сразу назначить записываемому макросу способ его вызова (рис.1.1).
Если на данном этапе для вызова макроса не будет назначена кнопка или сочетание клавиш, то это всегда можно будет сделать впоследствии с помощью диалогового окна "Настройка".
После нажатия кнопки "Ок" окна назначения способа вызова макросу в окне Word появится панель "Запись макроса" (рис.1.2).
Рис.1.1. Назначение макросу способа вызова - кнопка на панели
инструментов или сочетание клавиш.
С этого момента все действия пользователя тщательно протоколируются, хотя и с определенными ограничениями - так, в таком режиме невозможно проводить выделение текста мышью (перемещением курсора с нажатой клавишей Shift можно), не работает контекстное меню правой кнопки мыши. Но этих ограничений немного.
Рис.1.2. Панель "Запись макроса".
">После окончания выполнения необходимых действий необходимо нажать левую кнопку на панели - "Остановка записи". Если необходимо прерваться и все же выделить какой-нибудь обьект мышью, то необходимо нажать правую кнопку на этой панели - "Пауза". При повторном ее нажатии процесс записи продолжится.
Пример подробного анализа результатов подобной записи будет показан в главе 3. А сейчас рассмотрим другой, более традиционный способ написания программ на VBA - посредством Редактора VBA.
Средства отладки программы
Редактор VBA обладает очень большими возможностями отладки программы, то есть поиска в ней алгоритмических и языковых ошибок. Поскольку язык VBA - не компилируемый, а интерпретируемый (то есть готовая программа представляет собой текст исходного кода, хранящийся в шаблоне или документе, который переводится в машинные коды при каждом ее запуске, в то время как конечный продукт средств создания программ на остальных языках программирования представляет собой файл с исполняемым машинным кодом), то после завершения написания кода и успешной его отладки программа готова к использованию.
Для запуска на выполнение готовой или записанной программы из редактора VBA необходимо нажать клавишу F5. Программа начнет выполняться и, если в ней вдруг найдутся ошибки в записи команд или обращения к неизвестным командам, будет выдано соответствующее сообщение (рис.1.13).
Рис.1.13. Сообщение об ошибке компиляции
Данное сообщение означает, что эта команда редактору VBA неизвестна. Значит - надо изменить код программы, соответственно исправив его.
(В VBA можно создавать собственные команды - функции или процедуры, которые могут вызываться так же, как и встроенные. Об этом будет рассказано в следующей главе.)
Если возникает ошибка вследствие неправильного использования команд VBA, то редактор VBA выдает диалоговое окно, в котором приводится некоторое описание ошибки. Так, при попытке выделить жирным шрифтом десятимиллионное слово в документе было выдано сообщение "Запрашиваемый номер семейства не существует" (рис.1.14), так как десятимиллионного слова в документе не было.
В диалоговом окне на рис.1.14, как можно видеть, есть кнопка под названием "Отладка". Нажав на нее, можно перейти в режим отладки программы - то есть специального состояния редактора VBA, в котором программа может исполняться построчно, а программист имеет возможность видеть значения всех переменных программы и даже принудительно задавать эти значения. Также в режим отладки можно перейти из редактора VBA, поставив курсор внутрь программы и нажав клавишу F8.
Если ошибка произошла в макросе, находящемся в недоступном шаблоне (например, загруженным глобально через папку автозагружаемых файлов Word), то кнопка "Отладка" будет неактивна.
Рис.1.14. Сообщение об ошибке из-за неправильного использования команд VBA
В режиме отладки программисту доступны следующие возможности:
1. Пошаговое исполнение программы. Выполняются все команды последовательно, но выполнение каждой команды требует нажатия кнопки F8. Если программа где-то выдает ошибку алгоритма, то можно посмотреть, на каком конкретно этапе это происходит. При пошаговом исполнении в редакторе подсвечивается желтым цветом команда, которая будет выполнена следующей.
2. Просмотр значений переменных. Подведя в режиме отладки курсор к имени любой переменной, можно увидеть ее значение (рис.1.15).
Кроме того, значения всех переменных программы можно увидеть в окне Локальные переменные (рис.1.16, вызов - из меню Вид).
Рис.1.15. Просмотр значения переменной в режиме отладки
При дальнейшем выполнении программы значения переменных в этом окне принимают те значения, которые они имеют в программе. Это очень полезно для отладки алгоритма программы, когда необходимо найти ошибку в ее внутренней логике, связанную с неправильной или недостаточно точной разработкой порядка действий программы.
Рис.1.16. Окно локальных переменных.
3. Точки останова. Если программа длинная, то проходить по всем ее строчкам с помощью кнопки F8 - занятие не слишком интересное и приятное. В этом случае лучше использовать точки останова, то есть отметки в тексте программы, где ее исполнение должно остановиться, а сама программа - перейти в режим отладки. Для установки точки останова нужно щелкнуть левой кнопкой мыши на сером левом поле окна модуля, и тогда появится коричневая строка с кружочком на месте точки останова (рис.1.17).
Рис.1.17. Точка останова. На самом деле она коричневая.
Начиная с этого места, программа будет выполняться пошагово по нажатию кнопки F8.
Отказаться от пошагового выполнения можно путем нажатия кнопки F5. Точки останова полезны, когда нужно локализовать дающее ошибку место в программе, особенно если оно находится в середине текста или не единичное.
4. Окно контрольного значения. В этом окне можно задать определенное выражение, значение которого будет подсчитываться параллельно с выполнением программы. Кроме того, выделив в режиме отладки какое-нибудь выражение и нажав Shift и F9, можно увидеть его значение, а также добавить это выражение в окно контрольного значения и отслеживать его дальнейшие изменения.
Такая возможность необходима, например, при отладке длинной программы с множеством арифметических выражений, одно из которых дает ошибку. С помощью этого окна можно отследить, когда, при изменении какого параметра значение выражения станет неприемлемым.
К примеру, идет вычисление оптимального количества учеников в каждом классе с учетом множества параметров и где-то подозревается наличие ошибки: не сходится сумма количеств всех учеников во всех классах с количеством учеников в школе. Можно, конечно, обойтись без всяких там окон контрольного значения и вставить в текст программы после каждого вычисления проверку равенства суммы количества всех учеников во всех классах с численностью учеников школы, но это очень усложнит программу, да и потом придется удалять все эти добавления, - а если программа большая, то сделать это не так просто. Гораздо лучше поставить контрольное значение - сумму количеств всех учеников во всех классах - и при пошаговом исполнении программы отследить, где, на каком этапе происходит ее ненужное изменение.
5. Окно проверки или Отладки. Это окно вызывается из меню Вид - Окно отладки. В текст программы можно вставить специальные команды - Debug.Print (a+b, например - если надо отслеживать значение этой суммы). Тогда при выполнении этой команды в Окне отладки будет печататься то, что задано в ее параметрах (рис.1.18).
Рис.1.18. Окно отладки.
Возможности применения этого окна многообразны.
Можно выводить в него сообщения (командой Debug.Print) в случае выполнения или невыполнения какого-либо условия. Можно отображать в нем промежуточные результаты вычислений для контроля их правильности - чтобы не смотреть и искать нужное выражение в окнах Локальных переменных или Контрольного значения, а получать их сразу, перед глазами. Можно даже использовать это окно как маленький калькулятор или командную строку, и тогда при нажатии Enter после ввода команды она будет тут же выполнена! Надо только перед самой командой писать слово Print, если команда должна выдать какой-нибудь результат в этом же окне.
6. Стек вызова. В этом окне отображается структура программы, состоящей из нескольких подпрограмм - процедур или функций, а также показывается, какие переходы возможны между этими подпрограммами. Если программа сложная и большая, то разобраться, какая подпрограмма вызывает ту или иную другую подпрограмму, достаточно трудно, - для этого и стоит использовать Стек вызова, в котором все вызовы подпрограмм друг друга наглядно изображены.
Окна Контрольного значения, Локальных переменных, Отладки и Стека вызова могут быть вызваны как из меню Вид или соответствующими сочетаниями клавиш, так и при нажатии кнопок на панели "Отладка". Достаточно только подвести курсор к каждой кнопке панели, чтобы увидеть, какую команду она вызывает.
Во время работы макрокоманды ее можно прервать в любой момент нажатием клавиш Ctrl и Break. После этого будет возможен переход в режим отладки с места остановки или завершение программы.
Для выхода из режима отладки до завершения полного выполнения программы необходимо выбрать функцию Сброс из меню Запуск или нажать на панели "Отладка" кнопку "Сброс".
В режиме отладки возможен принудительный переход к какой-либо команде для того, чтобы дальнейшее выполнение программы пошло именно с нее. Для этого надо просто перетащить мышкой по серой полосе слева указатель в виде желтой стрелки на нужное место. Если Вы, просматривая при отладке текст, забыли, где программа была остановлена, то просто выберите из меню Отладка команду "Показать следующую инструкцию".
И помните, что вы можете всегда получить подробную справку по любой команде, поставив на нее курсор и нажав клавишу F1. В Справочной системе по VBA для русской версии Microsoft Office 97 некоторые разделы Справки даже переведены на русский язык, но, к сожалению, в последующих версиях Office это доброе начинание продолжения не нашло.
Очень полезно при разработке программ на VBA смотреть примеры использования команд, приводимые в справке - в разделах "Example" многих справочных окон (рис.1.19). Если вам никак не удается создать работающий фрагмент кода программы - посмотрите в справке в разделе примеров, не встретится ли вам там то, что вы так долго пытались создать. Все фрагменты кода в справке можно свободно копировать в свои программы. Во всяком случае, в справке все команды написаны грамотно и правильно.
Рис.1.19. Фрагмент кода в справке
Средства создания кода
Основным рабочим местом программиста на VBA является окно текста программ и дизайна форм (рис.1.7). Именно здесь пишется текст программ и разрабатываются диалоговые окна. Для того, чтобы открыть его для какого-либо компонента проекта, надо просто два раза щелкнуть на нем мышью или выбрать из контекстного меню пункт "Программа".
Рис.1.7. Окно текста программ и дизайна форм.
Контекстная подсказка редактора VBA
Для начала написания программы надо в окне модуля или кода формы написать фразу "Sub Уникальное имя программы", после чего Редактор VBA сам добавит фразу "End Sub", и между этими двумя фразами должен заключаться текст основной части программы.
Редактор VBA - очень дружественный редактор. Он постоянно подсказывает программисту, какие параметры имеет та или иная команда, как надо корректно ее написать. Например, если набрать команду MsgBox (эта команда вызывает на экран диалоговое окно, например, такое, как всем известное окошко "Сохранить изменения в документе?") и набрать после нее открывающую круглую скобку, то над курсором сразу же появится подсказка (см.также рис.1.7.), из которой можно получить информацию о синтаксисе данной команды, то есть о том, как конкретно нужно задавать ее параметры - в данном случае текст окошка, количество кнопок, значок и звук при появлении - в тексте программы.
Язык VBA называется обьектно-ориентированным. Это значит, что очень многие его команды имеют особенный формат, отличный, скажем, от формата языков Basic или Pascal, которые изучались в школах еще 10 лет назад. Типичная команда VBA имеет такой вид: <Обьект>.<Обьект, входящий в первый обьект>.<…>.<Тот обьект, с которым нужно произвести действие>.<Собственно действие>. Иными словами, каждая команда пишется как бы "с конца": вначале определяется то, над чем надо произвести действие - обьект, а затем само действие - метод. Разделителями компонентов команды служат знаки "точка". Вот пример такой команды:
SuperTypist - набиратель текстов
Небольшая программа SuperTypist, созданная Константином Ушаковым, предназначена для быстрого и удобного набора текстов. Для работы с программой сначала нужно создать небольшой словарь с теми словами, которые, по Вашему желанию, должны набираться автоматически (о том, как создавать этот словарь и куда его потом помещать, написано в инструкции к программе). Когда же вы начнете набирать какое-нибудь слово из словаря, макрос автоматически подставит его окончание, как только это слово будет однозначно определено. Если вы желаете набрать другое слово, начинающееся с тех же букв, что и записанное в словаре, то просто продолжайте набор, и подставленное слово исчезнет. А если вы согласны с макросом, то нажмите стрелку влево, и курсор автоматически перейдет к концу вставленного слова.
Изучение SuperTypist будет полезно при необходимости обеспечить работу программы с файлами, а также переназначить клавиши, - для выполнения своих функций SuperTypist делает так, что программа, проверяющая наличие набираемого слова в словаре и помещающая его в документ срабатывает каждый раз, когда на клавиатуре нажимается какая-либо буквенная клавиша.
Загрузить SuperTypist можно из Библиотеки Microsoft Office Extensions, расположенной по адресу http://www.microsoft.ru/offext.
Таблица FAT
Таблица FAT - это как бы уменьшенное изображение строения всего жесткого диска (рис.8.2). Она состоит из отдельных записей-"строчек" с информацией о последовательности кластеров в файлах.
В каждой записи FAT содержится информация следующих видов:
1. Если кластер, к которому относится данная запись FAT, не является последним в файле, то в данной записи будет указан номер следующего кластера, в котором записан данный файл.
2. Если кластер, к которому относится данная запись FAT, является последним в файле, то в данной записи будет стоять специальная метка конца файла.
3. Если кластер, к которому относится данная запись FAT, не относится ни к какому файлу, то в данной записи будет находится информация, указывающая, что этот кластер свободный.
4. Если кластер, к которому относится данная запись FAT, расположен на поврежденной области диска, то в данной записи будет находится информация, указывающая, что этот кластер поврежден и не должен использоваться.
Рис.8.2. Если вы хотите наглядно представить себе, что такое FAT, то запустите программу дефрагментации диска из Windows95/98 и отобразите сведения о диске. Вот FAT - это примерно то же самое, только там вместо цветных квадратиков - отдельные записи, описывающие состояние каждого кластера диска.
Каждая запись в FAT имеет вполне определенную длину - 12, 16 или 32 бита. В зависимости от длины отдельных таких записей в FAT ее разновидности так и называются - FAT12, FAT16 и FAT32.
С целью повышения надежности на диске обычно находится две копии FAT, записанные в его начале одна за другой. При сбое в первой копии используется вторая, резервная, а при сбое в обоих - лучше сохранившаяся.
О том, с какого сектора начинается каждый кластер, нетрудно рассчитать на основе информации о размерах кластера и номере сектора начала области с файлами, разбитой на кластеры, что, собственно, и делается операционной системой.
Узнать, какая файловая система установлена на вашем жестком диске, в операционных системах Windows можно в окне "Свойства диска". (Файловая система FAT16 обозначается как просто "FAT".)
В FAT располагается информация только о физическом строении файлов - о том, в каких кластерах располагается каждый файл. В ней нет ни названий файлов, ни дат их создания, вообще - нет никакой информации о них. Только информация о связях кластеров между собой в файлы.
При обращении операционной системы, скажем, для чтения какого-либо файла она обязана посмотреть сначала в FAT, узнать, в каких кластерах располагается нужный файл, а затем приказать головкам жесткого диска пройтись по этим кластерам и считать их содержимое. То есть - при каждом запросе на считывание или запись файла обязательно происходит обращение и к FAT. Вследствие этого с целью предотвратить постоянные перемещения головок по жесткому диску (к FAT и к кластерам с данными) FAT переписывается в оперативную память - кэшируется, и работа с ее копией на самом диске происходит лишь при изменении таблицы FAT, например, при создании нового файла или сохранении созданного ранее.
Сохраните лишний раз в процессе работы какой-нибудь Word'овый, скажем, файл на жесткий диск, и вы заметите, как диск "хрюкнет" - то есть произойдет перемещение головок взад-вперед по диску. Причем шумовой эффект не будет зависеть от фрагментированности диска - даже на абсолютно чистом диске с единственным редактируемым файлом шум все же появится. Это так, потому что для записи файла головки жесткого диска будут перемещаться между областью FAT-таблицы, которая располагается в начале диска, и собственно записываемыми данными на диске.
Таблицы стилей
С помощью стандартных тэгов HTML "<font...>", "<b>" и.т.д. можно задавать тексту web-страницы определенное оформление. Эти тэги поддерживаются всеми существующими в настоящее время браузерами. У тэга "<font...>" могут иметься параметры: size, color, face. Однако в случае, когда на странице имеется большое количество таких тэгов, то ее размер серьезно возрастает. Кроме того, становится сложным процесс изменения дизайна страницы: так, для того, чтобы заменить один цвет шрифта на другой, приходится просматривать весь документ и заменять значение параметра color во всем тексте. Если несколько страниц сайта были обьединены единым дизайном текста, то при попытке изменить хотя бы один параметр придется перерабатывать все эти страницы.
Возникает закономерное предложение: а почему бы не отделить описание форматирования текста от самого текста? Чтобы информация о внешнем виде, свойствах всех тэгов одного типа находилась в каком-то одном месте. А еще лучше - чтобы она могла быть доступной не с одной web-страницы, а сразу с нескольких, чтобы не было проблем с единообразным оформлением сайта. Для реализации такой идеи были придуманы так называемые "каскадные таблицы стилей" - CSS.
Каскадные таблицы стилей - это определенный способ записи информации об оформлении web-страницы, как бы некий отдельный язык разметки web-документов. Все современные браузеры его поддерживают, начиная с четвертых версий Microsoft Internet Explorer и Netscape Navigator.
При разработке стандарта CSS, помимо обеспечения разделения текста и описания его форматирования, в него еще было добавлено множество новых свойств, позволяющих сделать web-страницу более красивой и привлекательной. К примеру, появилась возможность задавать в пикселах отступы абзаца со всех четырех сторон, цветные и фигурные рамки вокруг фрагментов текста и даже вид курсора и всплывающую подсказку над каким-либо элементом. Поэтому, используя таблицы стилей, можно работать с гораздо большим количеством свойств и параметров, чем при использовании стандартных тэгов HTML.
Свойства, то есть указания об оформлении, при использовании CSS можно задавать любым обьектам страницы - абзацам, ссылкам, ячейкам таблицы, а также произвольным фрагментам страницы. Для этого в тэги всех таких обьектов помещается специальный параметр - class. Все обьекты web-страницы, имеющие одинаковое значение параметра class, считаются принадлежащими к одному и тому же классу оформления.
Под "классом" в программировании вообще и в CSS в частности понимается определенный тип данных или обьектов. Классы могут создаваться программистом самостоятельно. Например, можно выделить на web-странице различные фрагменты текста и обьявить с помощью указания параметра class, что все они должны иметь одни и те же определенные создателем web-страницы свойства. Стандартные обьекты web-страницы, такие, как абзацы, ссылки тоже могут принадлежать к какому-либо определенному классу, созданному автором web-страницы. Подробнее понятие класса разбиралось в первой части книги.
Оформление каждого класса и типа стандартных обьектов описывается в начале страницы в тэге "<style>". Содержимое этого тэга и называется "таблицей стилей", и именно в нем располагается информация об оформлении различных элементов web-страницы. Желательно, чтобы таблица стилей помещалась в разделе "<head>" web-страницы, хотя она может находиться и после тэга "<body>" в любом месте web-страницы.
Вот пример таблицы стилей:
<STYLE type="text/css">
P{text-align: justify; color: "#000000"}
A:link {font-family: Arial; color: "#2f4f4f"}
A:visited {font-family: Arial; color: "#717171"}
A:active {font-family: Arial; color: "#d4aa00"}
A:hover {font-family: Arial; color: "#c39100"}
.text1 {color: #113311; font-size: 12 px; font-weight: bold}
.text2 {font-size: 12 px; font-weight: bold}
.risun {height: 10; width: 20}
</STYLE>
В
ней задано оформление двум стандартным тэгам HTML - "<a>" и "<p>" и трем классам обьектов - с именами text1, text2 и risun.
Если такую таблицу поместить на web-страницу, то весь текст, содержащийся в тэгах "<p>", будет выровнен по ширине и окрашен в черный цвет (которому и соответствует указанный в таблице стилей номер #000000).
Для того, чтобы обеспечить такое же оформление страницы без использования таблицы стилей, пришлось бы в каждом тэге "<p>" указывать параметр align=justify, а после тэга перед текстом ставить указание на цвет шрифта: "<font color=#000000>". Помимо увеличения размера страницы и затруднения написания ее кода это привело бы еще и к невозможности быстро поменять цвет или выравнивание всех абзацев - пришлось бы править каждый тэг.
Запись о параметрах оформления стандартного тэга, содержащаяся в таблице стилей, при отображении страницы полностью эквивалентна указанию этих параметров именно в этом тэге. Поэтому если на странице, содержащей приведенную выше таблицу стилей, поставить тэг "<center>" перед тэгом "<p>", то текст, оформленный тэгом "<p>", останется выровненным по ширине (так как такое сочетание будет эквивалентно записи "<center><p align=justify>"), а если после - "<p><center>" - то он будет выровнен по центру.
Тэг "<a>" (то есть гиперссылка) допускает четыре состояния: просто расположенная на странице - link, активная (то есть нажимаемая в данный момент) - active, посещенная - visited и "готовящаяся стать активной" (состояние при наведении курсора на ссылку) - hover. Все эти состояния можно описать по-отдельности в таблице стилей, как это и показано выше - например, обычная ссылка зеленого цвета, а при подведении к ней курсора становится желтой.
В вышеприведенной таблице описано еще три класса обьектов - text1, text2
и risun. Для того, чтобы использовать эти описания для обьектов на web-странице, необходимо указать принадлежность того или иного обьекта к определенному классу с помощью включения параметра class в тэг этого обьекта.
Например, указание "<td class=text1>" приведет к оформлению текста, содержащегося в данной ячейке таблицы, в соответствии с условиями, указанными в таблице стилей - в данном случае он будет иметь высоту в 12 пикселов, оформлен жирным шрифтом и т.д..
Для оформления как класса произвольных фрагментов страницы необходимо использовать тэг "<div>": "<div class=text1>", окружая им эти фрагменты. У тэга "<div>" нет каких-либо свойств, имеющихся по умолчанию, вроде отступов спереди и сзади у тэга "<p>", поэтому его использование никак не повлияет на остальные параметры вида страницы, кроме тех, что определяются заданным в этом тэге классом.
Допустимо задание свойств не только тексту, но и изображениям - например, если в странице с приведенной выше таблицей стилей присвоить класс risun изображению: "<img src="d.gif" class=risun>", то оно будет иметь размеры, указанные в таблице (то есть здесь - высота в 10 пикселов и ширина в 20 пикселов).
Если необходимо задать определенные свойства всего лишь одному элементу страницы, то необязательно выделять его в отдельный класс или создавать ради него таблицу стилей. Можно просто указать нужное свойство в тэге этого элемента с помощью параметра style, например, <p style="margin-top: 140px"> задает отступ сверху в 140 пикселей только для абзаца, в тэге которого указано это свойство.
Параметр style, указанный непосредственно в тэге, имеет приоритет перед параметрами в таблице стилей. Так, текст, содержащийся в тэге "<p style="text-align: center">", будет выровнен по центру независимо от того, какое выравнивание было задано в таблице стилей для тэга "<p>".
Способ задания размера шрифта в таблице стилей несколько отличается от употребляемого в тэге "<font…>". Если в качестве значения параметра "size" тэга "<font…>" может указываться число от 1 до 7, соответствующее размеру шрифта от самого маленького до самого большого, то в таблице стилей, в параметре "font-size" какого-либо элемента, допускающего его задание для себя, может быть указан либо фиксированный размер шрифта в пикселах (например, "font-size: 12 px"), который при отображении в браузере увеличить или уменьшить будет нельзя (в Microsoft Internet Explorer 5.0 это можно сделать в меню "Вид-Размер Шрифта"), либо процентное значение ("font-size: 120%"), которое задаст размер шрифта относительно установленного в браузере (с помощью вышеуказанного меню) по умолчанию.
Первый способ стоит использовать при необходимости строго задать размер букв надписи (скажем, при их размещении в ограниченной по ширине ячейке таблицы), а второй - во всех остальных случаях. Злоупотреблять первым способом указания размера шрифта - в пикселах - не стоит, так как многие пользователи предпочитают настраивать просмотр web-страниц, в том числе и размеры шрифтов, исходя из своих предпочтений, а указание размера шрифта в пикселах не даст им этого сделать.
Синтаксис таблицы стилей можно посмотреть в приведенном выше примере. Все задаваемые параметры заключаются в фигурные скобки. Разделитель между параметрами - точка с запятой, разделитель между параметром и его значением - двоеточие. Перед именем определяемого класса в таблице стилей ставится точка, а перед определяемым стандартным тэгом HTML - нет. Каждый новый тэг или класс описывается с новой строки.
Параметры, могущие быть заданными для каждого типа обьектов, весьма многообразны. Полный их перечень приводится в специальной литературе по таблицам стилей. Кроме того, с ним можно ознакомиться с помощью программы Microsoft Script Editor, описанной в следующей главе.
Таблицу стилей можно использовать одну на несколько web-страниц. Можно даже брать ее с другого сайта. Для этого надо сохранить таблицу стилей (от тэга "<style>" до тэга "</style>" без самих этих тэгов) в текстовом файле с расширением .css и поместить этот файл на сервер, желательно в ту же самую директорию, где будут находиться сами web-страницы. В раздел "<head>" каждой страницы надо поместить тэг "<link rel=stylesheet type="text/css" href="url">", где вместо Url поставить имя файла с таблицей стилей или путь к нему, если он находится не в той же самой директории, что и web-страницы. В этом случае при загрузке web-страницы таблица тоже будет загружена. При изменении описаний тэгов и классов в такой таблице стилей изменится внешний вид всех страниц, на которых она используется.
Следует помнить, что при таком использовании таблицы стилей при сохранении пользователем web-страницы на жестком диске локального компьютера без использования функций сохранения страниц со всеми компонентами, имеющихся в последних версиях браузеров Microsoft Internet Explorer или Netscape Navigator, сохраненная web-страница полностью потеряет заданное в таблице форматирование. Это и понятно - сама же таблица тогда не будет сохранена.
С помощью таблиц стилей можно задать обьектам страницы огромное количество свойств - гораздо большее, чем позволяют стандартные тэги HTML. Например, можно указать для фрагмента текста отступы от остального текста, причем эти отступы могут быть и отрицательными, что позволяет добиваться весьма оригинального вида web-страницы - c наложением фрагментов текста друг на друга. Можно сделать страницу с "водяными знаками" на заднем плане, причем без использования сложной графики в качестве фона.
Пример подобной web-страницы - на рис.17.1. Ее HTML-текст имеет следующий вид:
<HTML><HEAD>
<STYLE type="text/css">
.x1 {color: green; font-size: 40pt}
.x2 {color: navy; font-size: 50pt; margin-top: -10px;}
.x3 {color: silver; font-size: 80pt; margin-top: -140px}
</STYLE>
</HEAD><BODY><CENTER>
<DIV class="x1">Первая строка</DIV>
<DIV class="x2">Вторая строка</DIV>
<DIV class="x3">Третья строка</DIV>
</CENTER></BODY></HTML>
Как легко видеть, свойство margin-top определяет отступ текста сверху от предыдущего элемента web-страницы. Задав его значение отрицательным, можно получить наложение текста на предыдущий элемент.
В качестве элементов могут выступать и изображения, и таблицы.
Рис.17.1. Пример Web-страницы,
сделанной с использованием таблицы стилей.
Вот, к примеру на рис.17.2 представлена web-страница, созданная без использования тэгов "<table>", всего с одним рисунком.
Подчеркнутый адрес является ссылкой. Как видите, возможности таблиц стилей позволяют сделать web-страницу похожей на красочный полиграфически изданный буклет, причем без использования сложной и медленно загружающейся графики.
К слову, текстовые редакторы Microsoft Word 2000 и Microsoft Word XP потому и могут сохранять в web-странице все форматирование, доступное им, что при сохранении документа в формате HTML широко используют таблицы стилей и тэг style.
Рис.17.2. На этой странице нет таблиц и есть лишь один рисунок.
В какой-то мере принцип таблицы стилей похож на принцип стилевого оформления текста в Word. Точно так же - в Word можно задать изначально параметры текста для каждого стиля, а потом устанавливать для фрагментов текста оформление определенным стилем. При этом все фрагменты текста, оформленные одним и тем же стилем, будут выглядеть одинаково и в соответствии с установленными для этого стиля параметрами текста. Ну, а при необходимости произвести мелкие изменения внешнего вида текста в каком-либо фрагменте нет необходимости создавать новый стиль - достаточно непосредственно изменить оформление этого фрагмента. Замените в этом описании работы в Word слово "стиль" словом "класс", и оно будет относиться уже к таблицам стилей.
Если подытожить, то таблица стилей - это поддерживаемый всеми современными браузерами способ определения оформления для всех однотипных элементов web-страницы, как входящих в число стандартных элементов HTML, так и создаваемых самостоятельно разработчиком, при котором информация об оформлении размещается в начале web-страницы или в отдельном файле. При использовании таблиц стилей элементам страницы можно задавать большое количество свойств. Вместе с тем допустимо указание этих свойств и вне таблицы стилей, в любом тэге с помощью специального параметра style.
Тайны Word'овых глубин
Антон Орлов, http://antorlov.chat.ru
"Ну вот. Опять пишут про этот Word для всяких там ламеров. Да все уже знаем про него, неужели больше не о чем писать?" - наверняка подумали вы, глядя на заголовок этой главы. Что ни говори, в России Microsoft Word - программа известная, едва ли не самая: и под все платформы реализована, и практически бесплатная... Но неужто вы все-все знаете про него? Word - этот как большой город: некоторые улицы, особенно центральные, известны всем, некоторые - подальше от центра - многим, а на задворки вообще обычно почти никто не заглядывает. А ведь там зачастую встречаются весьма и весьма интересные штучки. Именно им и посвящена данная глава.
Microsoft Word писался не один день. И не два. И не месяц. На разработку этого пакета в полном обьеме ушло как минимум лет семь - если учитывать все версии, а то и больше. Поэтому Word можно исследовать как город - смотреть, а что есть в его самых отдаленных районах, где мало кто бывает. Тем более что интерфейс у этой программы достаточно дружественный, во всяком случае, все его возможности по меньшей мере можно увидеть. И вряд ли можно найти пользователя, который знал бы о Word'е абсолютно все-все - исключая, наверное, лишь его создателей. Впрочем, и они уже, наверное, многое забыли.
Итак - пройдемся по закоулкам. Все перечисленное ниже верно для всех версий Microsoft Word - от 97 до 2002, если не указано обратное.
1. Третий день идет долгая и трудная работа по написанию многотомного труда. Каждый день, садясь с утра за компьютер или открывая Word после очередной перезагрузки, приходится мучительно долго искать место, где остановился в последний раз. Тогда, когда идет уже не собственно создание книги или диссертации, а ее редактирование, поиск может превратиться в весьма сложную задачу, причем настолько, что многие пользователи Word'а пишут специальные макросы для облегчения этого процесса. Принцип макросов-то прост - ставят автоматически закладку в место курсора при закрытии документа, а при открытии - к ней переходят.
Или другая ситуация - работаешь, работаешь и вдруг вместо Ctrl+Del нажимаешь Ctrl+End и летишь в конец документа. Опять долго и упорно разыскивать место, где был последний раз, что ли?
">Но мало кто знает, что для решения всех этих проблем не надо ни макросов, ни поисков - в Word есть прекрасная команда "Последнее исправление". Где ее найти, будет рассказано ниже, а вызвать ее можно комбинацией клавиш Shift+F5. Она мигом доставит вас в ту точку документа, где было произведено его последнее изменение. И не надо никаких макросов и закладок.
2. Нажав клавишу PageDown, можно прокрутить документ в окне Word'а на целый экран. С помощью клавиши F5 можно вызвать диалоговое окно, с помощью которого путешествовать по страницам, ссылкам, таблицам, рисункам. Но... все же, как это неудобно! Вызывать окно, которое в любом случае часть документа заслоняет, закрывать его потом и снова вызывать... Многовато забот! И мало кто знает, что в Word функции этого окна доступны из маленькой кнопочки с нарисованным шариком внизу справа под полосой прокрутки (рис.27.1).
Нажав на эту кнопку, можно из всплывшего окна выбрать единицы расстояния, на которое хочется перемещаться, - такие же, как и в окне "Перейти". Сам переход осуществляется путем кликов на двойные стрелочки, глядящие вверх и вниз по обе стороны кнопки. Куда как удобнее стандартного окна... Его, кстати, тоже можно из всплывающего окошка вызвать, если так уж хочется.
3. Если вы работаете с большим количеством документов, загруженных в Word, постоянно изменяя многие из них, но вполне может возникнуть ситуация, что вам, скажем, надо срочно отойти от компьютера. Естественно, есть опасения, что в случае, когда наступит сбой в электропитании или иная неприятная ситуация, может произойти потеря несохраненных данных. Но как сохранить все документы? По одному - но их много, и время уйдет немало. Закрыть Word и посохранять все по очереди? Тоже не быстро.
Лучше нажмите Shift и кликните мышью на меню Файл - вы увидите там новый пункт меню: Закрыть все, который и следует выбрать в такой ситуации.
4. Когда документ сложноформатированный, в нем много разнооформленных абзацев, то ориентироваться в их свойствах становится трудно. Если нужно узнать, какие отступы у того или иного фрагмента текста, то приходится лезть в диалог их задания. Но можно еще просто нажать Shift+F1 - и тогда, кликнув на каком-нибудь фрагменте текста, можно получить исчерпывающую информацию о его характеристиках.
Если же, нажав Shift+F1, кликнуть на какой-нибудь кнопке или команде из меню, то появится краткая справка о ее назначении (рис.27.2). Опытные пользователи Word'а, конечно, все эти назначения знают, но это сочетание клавиш можно показать неопытному пользователю и таким образом избавиться от массы простых вопросов с его стороны.
Рис.27.2. Учебник по Word - всегда под рукой. Shift+F1+клик на кнопке.
5. Наверняка, читая предыдущие строки, хотелось сказать: а неужели в Microsoft Word нет хотя бы списка всех этих многочисленных "скрытых команд"? Ну отчего же нет - есть. Только до него надо добираться. В меню "Сервис" выберите "Настройка". Вам откроется окно настроек панелей. Выберите в нем вторую вкладку - "Команды", а в левом столбце - пункт "Все команды" (рис.27.3).
Справа - все команды Word, которые могут быть выполнены в этом текстовом редакторе. Часть из них изначально, по умолчанию связана с соответствующими пунктами меню и кнопками на панели - вроде команды печати документа или его сохранения. Некоторые могут быть вызваны из диалоговых окон, отображающихся при выборе некоторых пунктов меню. Но достаточно большая часть этих команд остается неизвестной широкой публике, а ведь они могли бы весьма и весьма пригодиться.
Рис.27.3. А вот и список всех команд Word. И известных, и неизвестных.
Чтобы выяснить, какая команда что делает, можно поступить несколькими способами.
Во-первых, просто перетаскивать имена заинтересовавших команд на какую-нибудь панель, выходить из окна настроек и пробовать эти команды, наблюдая, какие изменения каждая команда выполняет. Можно использовать кнопку "Описание" внизу слева окна настроек и читать справку по каждой команде. А если хочется быстро просмотреть краткие пояснения о назначении каждой команды, то откройте окно настройки сочетаний клавиш (кнопка "Клавиатура" внизу справа окна настроек) и, выделяя каждую команду, читайте под списком команд интересующую вас информацию (рис.27.4).
Рис.27.4. Прочитайте здесь краткую справку по каждой команде.
Заодно и назначьте комбинацию клавиш понравившимся командам.
Однако для того, чтобы вам не пришлось сканировать весь этот список, если надо найти что-то определенное, стоит рассказать о некоторых особенно полезных командах.
AllCaps - "Все заглавные/все прописные", ChangeCase - "Изменить регистр" - команды, весьма иногда полезные. Если приходится приводить в нормальный вид текст, набранный с широким использованием выделения заглавными буквами (никогда так не делайте - и читается плохо, и редактировать трудно, да и вообще - признак плохого тона), то диалог изменения регистра приходится вызывать весьма часто. Не слишком-то это и приятно - постоянно мышью вверх-вниз двигать. Лучше уж назначить этим командам сочетания клавиш.
AutoScroll - команда, которая может оказаться весьма полезной тем, у кого нет мышки с колесиком для прокрутки текста. Обычно эта команда вызывается автоматически при нажатии на это самое колесико - но для этого нужна такая мышь. Если ее вызвать, то курсор окажется прикрепленным к вертикальной полосе прокрутки, и при его смещении от середины этой полосы вверх или вниз документ будет автоматически прокручиваться в соответствующем направлении.
Чем дальше от середины смещен курсор, тем быстрее "едет" документ. Помимо удобства при поиске нужного фрагмента документа эта команда еще очень удобна при простом чтении текста - сместил курсор от середины чуть-чуть, и Word за тебя даже страницы перелистывает, а ты просто сиди и гляди на экран!
CharScale. Это - команда "растягивания" текста по горизонтали. Она может часто использоваться при изготовлении печатных изданий, когда надо "вписать" текст в страницу или в колонку. Команда имеет свою кнопку, которую можно поместить на любую панель.
Аналогичную функцию выполняет пункт "Масштаб" вкладки "Интервал" диалогового окна "Параметры шрифта". Но не правда ли, использовать кнопку удобнее? В Интернете даже встречаются макросы, программно делающие то, что делает эта команда, уже встроенная в Word.
ColumnSelect - выделяет прямоугольный блок текста, причем его границы могут проходить и внутри страницы. То же самое можно сделать, двигая мышью при нажатой клавише Alt. Зачем? - спросите вы. Например, для выделения одного столбца таблицы, сделанной в MS-DOS с помощью символов табуляции и пробелов. Выделив столбец, его можно скопировать в другое место и впоследствии работать с его текстом.
DecreaseIndent и IncreaseIndent - управляют отступами от текста до левого края страницы. Чем двигать мышью бегунки на верхней линейке, может, удобнее использовать эти команды?
DottedUnderline - подчеркивание пунктиром. DoubleUnderline - двойное подчеркивание. Иногда требуется именно такое выделение.
GrowFont, GrowFontOnePoint, ShrinkFont, ShrinkFontOnePoint - это функции, которые так нужны некоторым пользователям Word, что для выполнения их функций они даже пишут специальные сложные макросы. А ведь писать их не надо - все уже в Word'е есть! Увеличить размер шрифта выделенного фрагмента на один-два пункта - просто, если размер всех букв в этом фрагменте одинаков. А если нет? Если часть - скажем, заголовки - на два пункта уже больше остальных? Простое присвоение шрифту фрагмента определенного значения размера полностью сотрет все различия в размерах, что часто совсем не нужно. Эти же команды предназначены именно для равномерного изменения размеров всех шрифтов, входящих в выделение. Иными словами, размер каждого символа, вне зависимости от первоначального изменится на одинаковое количество пунктов.
GrowFont - увеличивают размер, ShrinkFont - уменьшают. Быстро и удобно.
Spike. В переводе с английского это слово означает - "копилка". И это действительно копилка - некий обьект внутри Word'а, в который можно складывать различные вещи. Ну, вещи-то вполне определенные - фрагменты текста. Как в любой копилке, то, что складывается в нее, сохраняется, а новое, попадающее в нее, просто прибавляется к уже имеющемуся. То есть вы можете собрать со всего документа нужные куски текста без постоянных перемещений и копирования-вставки - просто собирайте в "Копилку" эти фрагменты, а потом, перейдя на нужное место, выполните команду InsertSpike. Это - как бы большой буфер обмена.
К примеру, в документе есть двадцать фрагментов какого-либо повествования. Вы хотите собрать их в одно место и вставить в другой документ. С помощью "Копилки" это будет очень легко - двигайтесь по тексту сверху вниз и собирайте фрагменты. В "Копилке" текст будет накапливаться - фрагменты расположатся в ней один за другим. Потом нажмите "Добавить копилку", и весь собранный текст поместится туда, где стоит курсор. Только следует помнить две вещи: во-первых, текст при помещении в "Копилку" удаляется - скопируйте его в буфер обмена перед тем, как кидать в нее, а, во-вторых, при "выкидывании" текста из "Копилки" она очищается - скопируйте в буфер обмена то, что вставится из копилки, если хотите еще куда-нибудь это вставить.
ListCommands - команда, в чем-то могущая заменить данную статью. Она выводит в отдельный документ список всех команд Word, имена которых помещены в окно "Все команды", которое сейчас и рассматривается. К сожалению, их описания в список не включаются, но зато включаются сочетания клавиш, назначенные им. Можно также вывести только те команды, которым назначено хотя бы одно сочетание клавиш.
MicrosoftSystemInfo - выводит "Информацию о системе", программу фирмы Microsoft. То же можно получить, нажав кнопку "О системе" в окне Word "Справка" - "О программе".
SelectCurColor, SelectCurFont, SelectCurIndent и SelectCurSpacing - выделение по цвету шрифта, шрифту, отступу и выравниванию соответственно. Выделяет текст от позиции курсора до изменения указанного параметра. Скажем, SelectCurColor выделит текст от курсора до первой буквы другого цвета. Если назначить этим командам комбинации клавиш, то можно в какой-то степени упростить процесс выделения текста при редактировании.
SkipNumbering. Если вы пишете статью, включающую в себя большой список, то, наверное, вас часто раздражала не очень удобная привычка Word'а принудительно перенумеровывать все абзацы. А если так же принудительно удалить какой-нибудь номер, то вся остальная нумерация возьмет да и собьется. Вызовите эту команду, и тогда абзац, в котором стоит курсор, будет тихо-спокойно из нумерации исключен, а весь остальной список не пострадает.
ToolsCalculate - встроенный в Word калькулятор. Считает только четыре действия, но обычно и этого хватает. Выделите текст и вызовите эту функцию (рис.27.5). В буфер обмена и в статусную строку будет помещен результат вычисления. Причем Word посчитает результат выражения, даже если цифры и знаки разделены буквами - скажем, являются частью предложения.
Рис.27.6. "Менеджер задач" для Word.
">WindowList - нечто вроде "менеджера задач" для Word. Эта команда вызывает диалог "Переход в окно" (рис.27.6), с помощью которого можно перейти к редактированию нужного документа. Этот же диалог вызывается пунктом "Другие окна" меню "Окно", который появляется в этом меню, когда число открытых документов превышает десять. Несмотря на то, что эта функция в Word вроде бы находится на достаточно заметном месте, "менеджер задач" для Word неоднократно реализовывался программно, с помощью макросов, и до сих пор на просторах Сети попадаются подобные произведения. Впрочем, при работе в новых версиях Office - 2000 и XP - данное окно уже может пользователю не требоваться: Word этих версий нетрудно настроить так, чтобы для каждого документа на системной Панели задач создавалась отдельная кнопка.
Всем вышеперечисленным командам (как, впрочем, и остальным) вы можете назначить не только кнопки на панели, но и сочетания клавиш. Не забудьте про это - иногда быстрее клавиши нажать, чем мышью до панелей добираться. Ну, а остальные пункты из списка "Все команды" вы можете исследовать самостоятельно. Может, что еще найдете.
6. В Word можно легко проводить сравнение двух документов по словам. Для этого достаточно открыть один из сравниваемых документов, вызвать команду из пункта меню "Сервис"-"Исправления"-"Сравнить версии" и выбрать в открывшемся диалоговом окне второй файл для сравнения. Все разночтения будут выделены, в зависимости от их характера - зачеркиванием, цветом.
7. Стандартное окно замены фрагментов текста - что может быть привычнее? И многие так и считают - привычное всегда одно и то же: один текст заменить на другой, да и все. Но это не совсем так. Кнопка "Больше..." (рис.27.7) внизу справа окна замены открывает перед пользователем мощные возможности поиска, серьезно превосходящие стандартные. Удивительно, но многие пользователи Word, с которыми, в частности, мне доводилось беседовать, не знают о них!
Справа внизу в окне, распахнувшемся после нажатия кнопки "Больше", есть кнопка "Специальные символы". Они позволяют задать в условиях поиска и замены символы конца абзаца, разрыва страницы или строки, символы табуляции и др. Если вам нужно провести замены с участием именно этих символов, используйте этот список. К сожалению, там указаны не все допустимые специальные символы. К примеру, символ "^0xxx", где "ххх" - это какое-либо число, обозначает символ таблицы ASCII с кодом "ххх". Можно также заменять какой-либо текст на содержимое буфера обмена, заранее подготовленное и скопированное туда.
">Кнопка "Формат", находящаяся слева от кнопки "Специальные символы", позволит вам заменять не только содержание текста, но и его оформление.
К примеру, выделить во всем тексте какое-либо слово жирным шрифтом не составит труда.
Но это еще не все. В расширенном окне поиска и замены есть пункт "Подстановочные знаки" (рис.27.8). Используя их, можно производить "нечеткий поиск" и замену, то есть, скажем, менять местами слова в словосочетаниях в тексте (скажем, вместо "Петр Иванов" везде поставить "Иванов Петр", и причем имя и фамилия могут быть в любом падеже), заменить, скажем, точку в дробях на запятую, и наоборот, оставив все остальные запятые и точки в неприкосновенности, а также многое другое.
Рис.23.8. С помощью "подстановочных знаков" можно переделать текст так,
как хочется, всего за пару минут
Если вам нужно найти или заменить один из символов, который используется для обозначения подстановочных знаков, скажем, восклицательный знак - ! - то поставьте перед ним обратную косую черту - "\" (как в командной строке разделитель имен папок): "\!".
Нажав на знак вопроса вверху справа, а затем кликнув на пункте "Подстановочные знаки", вы увидите небольшую справку о назначении этого пункта. Когда вы нажмете на маленькую стрелочку внизу, вам откроется подробнейшая справка по использованию подстановочных знаков. Разберитесь с ней и поэкспериментируйте - потом не пожалеете!
7. Вам надо провести какую-либо замену не во всем тексте, а лишь в какой-то его части? Выделите эту часть и вызовите функцию замены. А вот как быть, если тот текст, в котором надо провести замену, разбросан по всему документу? Тут бы подошло многократное выделение. В WordXP такая возможность есть - достаточно при выделении нового фрагмента удерживать клавишу Ctrl, и имеющееся выделение сброшено не будет. А как быть в более старых версиях Word?
А в них можно использовать несложный прием. Выделите фрагменты, где вы желаете что-либо заменить, каким-либо цветом. Кнопка выделения цветом есть на панели "Форматирование" по умолчанию, если же вдруг ее там нет, то поместите ее на какую-либо панель из окна настроек, пункта "Формат".
А потом укажите в параметрах поиска "Выделение цветом" и проводите замену. Остальной текст, не отмеченный вами, будет не тронут! Снять выделение цветом можно с помощью той же кнопки.
">Надеюсь, что глава открыла перед вами новые глубины казалось бы, так давно уже известной программы... Ну, а если вы все уже знаете и глава показалась вам абсолютно бесполезной, так как говорила, по вашему мнению, об очевидных вещах, - то мне остается вас только поздравить! Вы - просто суперпрофессиональный пользователь Word. Но даже в этом случае помните, что ваши коллеги, которые не столь хорошо еще освоили текстовый редактор, будут вам очень благодарны, если вы поделитесь с ними информацией из этой главы.
Такая обычная ScanDisk...
Наблюдая за работой всем известной, стандартной программы ScanDisk из Windows 95/98, можно увидеть немало интересного... Конечно, если смотреть внимательно и вдумыватся в то, что видишь.
1. Программа ScanDisk просматривает FAT. Так как вся FAT находится в одном месте диска, то считывается и проверяется она очень быстро. На этом этапе своей работы ScanDisk ищет ошибки файловой системы - общие кластеры, и в случае обнаружении таковых исправляет структуру FAT, копируя эти кластеры для каждого из содержащих их файлов и соответственно изменяя содержимое FAT. |
2. А теперь ScanDisk проходит по структуре каталогов - то есть считывает все файлы-каталоги, проходя по их иерархии. Это связано с необходимостью многократного перемещения головок жесткого диска, поскольку эти файлы расположены в разных местах диска. Поэтому времени на "Проверку папок" уходит немало. На этом этапе также собираются данные для последующего анализа диска на предмет наличия потерянных кластеров - помеченных как занятые, но не принадлежащих ни одному из файлов. Сам этот анализ происходит сразу после "Проверки папок". Потерянные кластеры могут быть преобразованы в файлы или удалены.
3. Системная область - это область, занимаемая FAT. Ониа находится в начале логического диска. В те секторы, которые FAT занимает, данные пользователя записывать нельзя, а повреждение здесь приведет к потере и расположенных на диске файлов, так как операционная система не сможет их найти.
4. Проверяется область данных пользователя на предмет поврежденных секторов. В случае обнаружения таковых в FAT будут занесены соответствующие указания.
TCode
Программа TСode Алекса Бойко (рис.13.13) - пожалуй, самый мощный инструмент для восстановления многократно перекодированных файлов. Ей подвластна практически любая комбинация перекодирующих серверов. Кроме того, она умеет работать с системами конвертации вложенных файлов base64 и quoted-printable. TCode по своему действию похожа на предыдущую описанную программу, только позволяет проводить также и ручную перекодировку.
Рис.13.13. TCode - ни одно письмо перед ней не устоит.
Кроме того, TCode позволяет проводить и обычную конвертацию текста из одной кодировки в другую, что иногда может пригодиться при подготовке web-страниц. Надо только в меню в окне программы отказаться от использования автоопределения кодировки.
При испытаниях TCode справилась даже с такой нетривиальной задачей, как раскодирование письма, пять раз неправильно перекодированного (для этого письмо сохранялось как KOI-8, а открывалось как Windows-1251 в виде мешанины символов, и опять сохранялось как ISO-8859-5, и так пять раз). На расшифровку такого письма размером в полкилобайта с помощью TCode ушло около 10 минут на Pentium-166, причем результат был вполне читаем, хотя и не совсем полностью правилен.
Загрузить TCode можно с адреса http://perecod.chat.ru/tcode.rar или с сайта автора http://alexboiko.da.ru. Не забудьте отказаться в меню Settings от автоматического перекодирования буфера обмена, а то во время работы TCode вы не сможете с ним работать в других программах.
TextViewer
С помощью вышеописанных средств - возможностей Word и WordPad - можно иногда выходить из положения, когда срочно надо напечатать или отредактировать файл, набранный в редакторах под MS-DOS, но при большом количестве таких файлов работа с ними станет весьма затруднительной. Однако в настоящее время имеется достаточно большое количество различных бесплатных программ, написанных русскими программистами специально для решения проблем совместимости различных кодировок. Одной из таких разработок является TextViewer Георгия Гуляева (рис.13.10).
Рис.13.10. TextViewer.
TextViewer открывает текстовые файлы и файлы в формате Rtf. Слева вверху на панели инструментов программы находятся шесть кнопок - пять из них позволяют просмотреть открытый документ в соответствующей кодировке (Dos-866, Windows-1251, KOI-8, Macintosh, Iso-8859-5), а шестая - просмотреть текстовое содержимое файла в формате Rtf, если таковой будет загружен в TextViewer. Открытый файл можно сохранить в нужной кодировке, выбрав соответствующую опцию в окне "Файл-Сохранить как…". Имеется возможность произвести печать файла, использовать функцию предварительного просмотра перед печатью, поиск в тексте и замену фрагмента. Можно выбрать шрифт для отображения текста, с помощью удобного диалогового окна связать программу TextViewer с различными типами текстовых файлов.
В целом можно сказать, что разработка Георгия Гуляева - превосходная замена стандартному "Блокноту". Возможность работы с различными кодировками, открытие файлов любого размера, возможность замены - все это дает TextViewer'у неоспоримые преимущества перед Notepad'ом. Однако на компьютерах, не оснащенных процессором Pentium, TextViewer весьма медленно запускается, в связи с чем использование его как стандартного редактора текстовых файлов, например, на 486-м процессоре будет затруднительно.
Загрузить TextViewer можно с сайта Георгия Гуляева "http://www.freespeech.org/georgy" или с сервера бесплатных программ "http://www.freeware.ru".
Типы данных и объявление переменных
Все переменные в программе на VBA могут содержать какую-нибудь информацию: текст, число, утверждение истинности и др. В зависимости от вида содержимого они подразделяются на типы данных, - соответственно текстовые, числовые, булевые (то есть принимающие значения "да" или "нет", соответственно по-английски "True" или "False"). В VBA определено большое количество различных типов данных, которые может содержать переменная. Вы можете получить информацию о всех возможных типах данных VBA из Справки, найдя в Предметном указателе раздел "Типы Данных" (рис.2.1).
Так, переменная типа Integer - это целое число -32768 до 32 767, а переменная типа String - это строка текста длиной до двух миллионов символов.
Рис.2.1. Справка по типам данных VBA
В зависимости от типа данных с переменной можно производить те или иные действия и вычисления - с числовыми математические, с текстовыми - текстовые (выделение подстроки из строки, получение отдельных символов из строк и др.
Для того, чтобы переменная могла использоваться в программе, она должна быть объявлена - то есть указана в соответствующем разделе модуля, который так и называется - Описания и располагается в самой верхней его части, до начала первой программы (рис.2.2). Для этого нужно вставить туда описание переменной вида "Dim x(переменная) As (тип данных): Dim a As Integer". Вместо слова Dim могут также использоваться слова Public и Private.
Переменная, объявленная как Public, может использоваться и программами из других модулей и форм, при этом она своего значения не теряет, а переменные, объявленные как Private или Dim, могут использоваться только в программах модуля, в котором они объявлены. При наличии такой же переменной в программах другого модуля ее значение не будет передаваться в них при их вызове из программы модуля, где она объявлена.
Рис.2.2. Область описаний программы
Как Public или Private переменная может быть объявлена только в разделе описаний переменных.
С помощью же инструкции ( то есть команды, не выполняющей реальных действий) Dim она может быть объявлена и в тексте программы, но тогда ее другие модули уже использовать не смогут никак.
Объявление типа переменных нужно программе, чтобы она заранее отвела под них именно столько оперативной памяти, сколько нужно для размещения именно такой переменной. Для логической - хватит и одного бита, для буквенной - нужен целый байт, а для строковой или числовой - значительно большие обьемы. Можно вообще не объявлять специально переменные, включая их в текст программы по мере надобности, так как тогда VBA присвоит им автоматически специальный для таких случаев тип данных Variant и отведет для каждой переменной максимально возможную область памяти, что, впрочем, не имеет особо отрицательного значения из-за большого обьема оперативной памяти на современных компьютерах.
Тип данных Variant отличается еще и тем, что переменные с таким типом автоматически могут преобразовываться в нужный другой тип, например, если переменная "х" имеет тип Variant и значение 2 (число), то после команды "x=Str(x)", которая преобразует число в строку, она уже будет иметь значение "2", то есть текстовая строка с цифрой "2". Такое преобразование было бы невозможно, если бы переменная "х" была объявлена как Integer.
Может показаться, что определять все переменные как тип Variant или вообще не включать в модуль раздел описаний является очень хорошим решением, однако стоит помнить, что необъявленные переменные не могут быть использованы в других модулях или формах, а, кроме того, переменные типа Variant занимают очень много места в оперативной памяти. Можно запретить для себя использование необъявленных переменных, вставив в начало модуля, в верх раздела описаний инструкцию Option Explicit, и тогда программа остановится и перейдет в режим отладки, если вдруг наткнется на такую переменную.
Стоит быть внимательнее с типами данных, так как в некоторых случаях неправильное их использование может дать ошибку.Например, переменная с типом Integer не может превысить значение 32 767; если же надо использовать большие числа, то следует определить ее тип как Long, а если она может быть еще и дробной, то - Double.
TreeView - кнопка "Пуск" для Microsoft Word
Данная разработка способна серьезно облегчить труд тех, чей рабочий инструмент - Microsoft Office. Коротко можно сказать, что она - окно "Открыть файл", сделанное по образцу папки Internet Explorer'a "Избранное" (или меню Windows "Пуск"), - в виде выпадающего меню отображаются все документы в текущей папке и в любых других, указанных пользователем, что позволяет искать и открывать документы, не выходя из Word и не роясь в изрядно поднадоевшем окне Word "Открыть" (рис.6.2).
Программа имеет множество полезных настроек. К примеру, можно создать любое необходимое Вам количество панелей, на которых разместить любые наборы указывающих на папки кнопок. Если у Вас на жестком диске есть двенадцать каталогов, где Вы храните свои документы, то можно создать панель с кнопками, соответствующими все этим двенадцати каталогам, и получать доступ к их содержимому одним нажатием мыши. Кроме того, с помощью программы "TreeView" очень легким становится процесс сохранения документов в различных папках. Достаточно лишь перейти с ее помощью по дереву каталогов TreeView в нужную папку и из меню программы выбрать команду сохранения.
Рис.6.2. TreeView. Чтобы открыть нужный файл, просто пробегитесь мышкой по этим ниспадающим меню и найдите его.
В программе реализованы такие функции, как обращение к командам API для поиска файлов, динамическое изменение содержимого панелей инструментов и выпадающих меню, работа с реестром, работа с изменяемым автозагружаемым шаблоном. Если вас интересует, как можно сделать все вышеизложенное - поучитесь на наглядном примере.
Автор "TreeView" - Антонюк Дмитрий Александрович из города Комсомольск-на Амуре. Программу можно загрузить с сайта разработчика http://treeview.chat.ru.
Unicode
В ранних версиях Windows для каждой кодовой страницы должен был иметься свой шрифт, так как в один шрифт - в одну кодовую страницу - нельзя было поместить больше 255 символов. Это имело определенные неудобства, и был придуман и утвержден новый стандарт таблицы символов - Unicode. Согласно этому стандарту каждый символ кодировался не восемью, а шестнадцатью битами информации, что позволяло закодировать до 65536 символов. Эта кодировка также получила название двухбайтовой кодировки. Для совместимости со старыми стандартами первые 256 символов стандарта Unicode соответствовали стандартной кодовой таблице, а на остальных местах можно было разместить все необходимые символы всех языков. Были созданы новые шрифты в стандарте Unicode. Безусловно, использовались в них далеко не все 65 тысяч символов - стандарт имеет большой задел на будущее, и пока в шрифтах, совместимых с этим стандартом, "заняты" только первые сотни мест.
В шрифте Unicode имеется как бы несколько кодовых страниц сразу. Вот, к примеру, состав Unicode-шрифта Times New Roman (рис.13.4).
Рис.13.4. Содержимое шрифта Times New Roman, соответствующего
стандарту Unicode, в окне Word97 "Вставка символа"
Вы видите в правом углу диалогового окна Word "Вставка символа" список региональных кодовых страниц, представленных в этом шрифте. Для того, чтобы программы, не поддерживающие стандарт Unicode (например, Microsoft Word 6.0), могли работать с такими шрифтами, операционная система осуществляет так называемую "подстановку шрифтов", то есть "раскладывает" шрифт Unicode на отдельные кодовые страницы и выбирает из него ту страницу, которая соответствует установленной в системе. Параметры подстановки прописываются в системном реестре, а в операционных системах Windows9x - и в файле Win.ini (рис.13.5).
Рис.13.5. Подстановка шрифтов в файле Win.ini.
Смысл находящихся в системном реестре и в файле win.ini выражений - указание программам на то, где в шрифте искать символы, соответствующие нужной кодовой странице.
Так, для шрифта Times New Roman эти символы (кириллица) начинаются с 204-го места, что и указано в Win.ini. Теперь Microsoft Word 6.0 спокойно будет работать с Unicode - шрифтом Times New Roman, воспринимая его как обычный кириллический шрифт. При этом в восприятии этого текстового редактора шрифт Times New Roman окажется как бы "разложенным" на набор шрифтов (Times New Roman Cyr, Times New Roman CE и др.), каждый из которых будет соответствовать определенной кодовой странице, несмотря на то, что все эти "шрифты" хранятся в одном файле.
Иногда встречается ситуация, когда Microsoft Word 97 вполне нормально отображает на экране текст, но на принтер выводится набор квадратиков. Это вот как раз проявляется некорректное взаимодействие программного обеспечения, когда одни компоненты (Word97) поддерживают новый стандарт, а другие (драйвера к принтеру) - нет[30].
Существуют русские шрифты, полностью совместимые с стандартом Unicode, которые без проблем отображаются и печатаются как в старых, так и в новых программах. Они содержат только стандартный набор символов, соответствующий русской кодовой странице и отличаются еще красивым их дизайном. В выпадающем меню выбора шрифта они обычно имеют префикс "a_" (рис.13.6).
Рис.13.6. Шрифты Unicode - работают везде.
"Untaco" - расшифровка чисел и их обновление
Довольно часто в бухгалтерской и финансовой документации вместе с цифровой записью числа требуется указывать и его текстовую расшифровку - например, писать "сто" после числа 100. Довольно ясно, что делать это вручную утомительно, да и небезопасно - можно легко ошибиться. И не случайно данный процесс весьма большое количество пользователей решило поручить макросам - программам на VBA. Дополнений для Word, помещающие в документ текстовые расшифровки чисел, создано немало.
Однако программа Untaco (рис.6.1) серьезно отличается от своих аналогов одной особенностью. Дело в том, что Untaco умеет автоматически обновлять те расшифровки, которые вставлены с ее помощью. Если после вставления расшифровки числа вы измените его значение, то расшифровка тоже соответственно изменится при сохранении, печати документа или вызове специальной команды, и вам не придется вставлять ее повторно. При работе с деловыми документами, бухгалтерской отчетностью такая автоматическая синхронизация расшифровки числа с его значением весьма важна, так как любое несогласование здесь может вызвать серьезные последствия.
Кроме того, параметры вставляемых с помощью Untaco расшифровок можно весьма широко настраивать. Так, расшифровка может производиться на русском или украинском языках в именительном или дательном падеже, а также на английском языке, иметь вид наименования денежной единицы (поддерживается шесть их видов), простой текстовой расшифровки, а также количества процентов. В двух последних случаях расшифровываются и доли чисел вплоть до тысячных. Нетрудно научить программу помещать часть расшифровки или всю ее в скобки, делать ее первую букву заглавной. Компоненты программы могут копироваться в редактируемый документ, что позволит обеспечивать обновление расшифровок даже на компьютере, где Untaco не установлена.
Рис.6.1. Untaco - многофункциональный конвертор "число-текст" с возможностью автоматического обновления расшифровок чисел.
В Untaco реализованы интересные технические решения, связанные с работой с переменными в документе, закладками, интеллектуальной обработкой текстовых строк, а также с операциями над самими макросами (их копирование и удаление). Также в Untaco показано, как осуществить подмену стандартных команд Word (например, "Сохранить", "Печать") макрокомандами. Простой и удобный инсталлятор демонстрирует возможность помещения компонентов программ в шаблон Normal.dot.
Программа Untaco доступна с адресов: http://antorlov.chat.ru или http://www.newtech.ru/~orlov.
ВерсткаТекстаКнижкой - книгоиздательство в Word
Иногда при подготовке документов в Microsoft Word возникает необходимость распечатать их в виде книжки размером в половину листа, так, чтобы после печати ее можно было бы сшить посередине. Такую книжку удобно взять с собой, да и просто читать, а для учебных материалов подобный вид был бы самым удобным. Зачастую методические пособия в высших учебных заведениях выпускаются именно в таком формате.
До недавнего времени стандартными средствами Word сделать такую книжку было невозможно. Многие пользователи прибегали к различным ухищрениям (к примеру, устанавливая "зеркальные" поля в полстраницы и пропуская каждый лист через принтер четыре раза) или пытались освоить специализированные программы верстки вроде PageMaker'а. В любом случае создание брошюры было весьма непростой задачей. В OfficeXP возможность делать брошюры появилась, однако просмотреть макет перед печатью и вывести на принтер его отдельные листы невозможно, так что при сбое принтера приходится перепечатывать весь макет заново. Кроме того, системные требования данного пакета программ весьма немалые.
Но книжку можно спокойно сделать в Word любой версии, начиная с 97-го, с помощью программы, написанной специально для этого и называющейся просто - "ВерсткаТекстаКнижкой". Она использует довольно оригинальный способ создания макета книжки, в качестве основы для него взяв надписи - обьекты Microsoft Word, способные содержать в себе текст. Надписи могут быть между собою связаны, и текст, вводимый в одну из них, при исчерпании свободного места в ней перетечет в другую, следующую по порядку связывания надпись. Эта возможность и используется в программе, которая заполняет макет книжки связанными надписями, соответствующими ее отдельным страничкам, а затем копирует в них текст из исходного документа. В результате получается макет книжки, готовый к печати (рис.6.3), который в случае необходимости можно спокойно редактировать, а при сбое в процессе печати нетрудно перепечатать любой лист макета. Макет составлен так, что каждый второй лист в нем является обратной стороной первого, поэтому на принтере с двусторонней печатью получить готовую книжку можно, просто послав на печать документ со сверстанным макетом.
На обычных принтерах необходимо посылать на печать вначале нечетные, а затем четные страницы макета (для автоматизации данного процесса служит специальный макрос, входящий в комплект поставки программы). При необходимости макет книжки можно перенести для печати на другой компьютер, где данная программа не установлена.
Каждый второй лист в макете книжки - обратная сторона первого, так что на принтере с двусторонней печатью достаточно будет одного "прохода", чтобы получить готовую книжку, а на остальных принтерах придется сначала посылать на печать нечетные, а затем четные страницы макета, соответственным образом переложив листы после первой печати. Для автоматизации такой печати служит специальный макрос, входящий в комплект поставки программы.
Исходный документ при работе макроса не изменяется. В тексте могут содержаться графические обьекты, сноски, диаграммы, которые автоматически переносятся в макет книжки.
У программы имеется множество настроек и дополнительных возможностей. Так, можно создать пустой макет документа из определенного числа страничек, а потом вставить туда текст. Можно создать книжку не из последовательно располагающихся листов, а разбитую на отдельные тетрадки, которые затем можно будет сшить между собой. Можно задать параметры верстки так, что на каждой страничке полученной книжки будут располагаться две колонки текста. Программой производится нумерация страничек книжки, причем шрифт и расположение номеров пользователь может задать. Имеется подробное руководство пользователя, которое рекомендуется прочитать перед началом использования программы. Программа имеет как русский, так и английский интерфейс.
Также в комплект поставки входит программа "Файлообьединялка", которая поможет вам обьединить содержимое множества однотипных файлов в один.
Разумеется, у программы есть и недостатки, в основном обусловленные ограничениями Word в плане работы с надписями. Так, при наличии в исходном документе таблиц процесс верстки брошюры серьезно затрудняется, так как ширину таблиц приходится подгонять под ширину полученных страничек.
Иногда при попадании таблицы на границу страничек пара ее строчек, примыкающих к этой границе, перестают отображаться (следствие ошибки в самом Word'е) - приходится принудительно разбивать таблицу. В случае наличия в исходном документе рисунков зачастую необходимо неоднократно переверстывать макет заново (впрочем, это нетрудно благодаря входящей в комплект дополнительной утилите), подбирая нужный размер рисунка, - программа их не масштабирует. Впрочем, данные проблемы возникают лишь при работе со сложными документами, содержащими большое количество таблиц и графики.
Рис.6.3.Сделать книгу в Word теперь не проблема. Вот написать бы еще ее сначала
Ознакомиться с кодом компонентов пакета программ "ВерсткаТекстаКнижкой" рекомендуется всем, кто интересуется возможностями VBA по работе с содержимым документа, пользовательскими формами. Также весьма примечателен инсталлятор программы, который нетрудно приспособить для установки собственных разработок.
"ВерсткуТекстаКнижкой" можно загрузить с адресов: http://antorlov.chat.ru или http://www.newtech.ru/~orlov.
Веселый подвальчик
Все приведенные здесь истории являются вольными пересказами случаев, рассказы о которых путешествуют среди "компьютерщиков". Были ли они в реальности или нет - знают лишь их авторы, но о том, кто эти авторы, никто уже не знает...
Пленочная клавиатура
Одна подмосковная фирма приобрела в московском компьютерном магазине 10 компьютеров. Через пару недель в этот же магазин приехала секретарша этой фирмы и приобрела 10 прозрачных пластмассовых крышек для клавиатур. Через неделю она приехала опять и приобрела уже 20 штук. Удивленные менеджеры спросили покупательницу: а, собственно, зачем она это делает. В ответ они услышали, что "уж очень они ненадежные, лопаются каждую неделю, пальцы царапают..." Выяснилось, что сотрудники фирмы посчитали, что крышки являются защитным покрытием для клавиатуры и все это время печатали прямо через них...
Мышь-акселератор
В службу сервиса компьютерного магазина позвонила девушка и сказала, что у нее "компьютер не заводится". На вопрос, что она конкретно делает, звонящая ответила: "я жму на белую педаль, а компьютер не включается".
Этой педалью оказалась мышь - девушка положила ее на пол и посчитала, что от нажатия на "маленькую белую педальку" компьютер заведется, как автомобиль...
Усмирение CD-Rom'а
Один программист, решив подшутить над сотрудниками бухгалтерии организации, в которой он работал, вечером после их ухода с рабочих мест поместил на бухгалтерские компьютеры небольшую программу, функцией которой было открытие и закрытие лотка CD-ROM'а с периодом в 2 секунды. Запрограммировав начало ее работы на 15-00 следующего дня, он на следующий день с удовольствием представлял себе, какой шум поднимется среди мнительных бухгалтеров, боящихся любой поломки в сложной технике.
Когда в 16-00 следующего дня к нему никто не обратился, он решил посмотреть, что же происходит в бухгалтерии. И увидел, что лотки CD-ROM'ов на всех компьютерах этого отдела крест-накрест заклеены полосами широкого скотча, прочности которого как раз хватало для противодействия мотору, выдвигающему эти лотки...
Подставка для кофе
Звонок в службу сервиса компьютерного магазина:
Клиент: - Алло, тут у меня сломалась компьютерная подставка для кофе.
Менеджер (удивленно):
- Простите, это как?
Клиент: - Ну, я позавчера у вас купил компьютер, а сегодня она сломалась. Надо бы заменить...
Менеджер: - Простите, но у нас нет в продаже компьютеров с подставкой для кофе и никогда не было. Вы, наверное, что-то путаете. Может, вы приобрели компьютер на какой-нибудь рекламной акции? Как она выглядит, эта подставка?
Клиент: - Да ни на какой акции я не был, компьютер в вашем магазине приобрел. А подставка - да из компьютера выезжает, кнопку нажать только надо. Еще на ней надпись: 20 - хэ.
Менеджер долго не мог ничего ответить, поняв, что "компьютерная подставка для кофе" - это лоток CD-ROM'а.
Громкий компьютер
У клиента сервисной службы компьютерного магазина после включения компьютера раздавался противный пронзительный звук, который на протяжении всего времени работы на компьютере то усиливался, то уменьшался, то вообще исчезал. Создавалось впечатление, что внутри компьютера стоит двигатель электрички, работающий на полную мощность. С этой проблемой клиент и пришел в службу сервиса.
Выяснилось, что сборщик его компьютера подключил встроенный динамик на место индикатора активности жесткого диска, и, соответственно, звук из динамика раздавался всякий раз, когда к жесткому диску происходило обращение.
* * *
Данный текст - глава из книги "Тайны и секреты компьютера (второе издание)", недавно вышедшей в издательстве "Горячая линия - Телеком". Эта книга предназначена для тех, кто самостоятельно осваивает мир информационных технологий. Программирование в среде Microsoft Office, устройство сетей Internet и Fidonet, работа системы электронной почты, структура системного реестра Windows и файловой системы, строение жидкокристаллических дисплеев и проблема наличия различных кодировок русского языка, - про все это рассказывается в ней.Многообразие тем и легкий стиль изложения сделают ее вашим спутником на долгое время, и вы всегда сможете найти в ней нужную именно в данный момент информацию. Если Вы интересуетесь компьютерными технологиями, желали бы расширить свои знания и умения в этой области, то она Вам наверняка понравится. На сайте http://comptain.nm.ru, посвященном этой книге, вы можете ознакомиться с ее оглавлением и аннотацией, прочитать некоторые главы, купить в Интернет-магазине.
Вложенные файлы
Изначально система электронной почты предназначалась для обмена исключительно текстовыми сообщениями и не могла пересылать файлы, приложенные к письмам, так как последние обычно являлись архивами и представляли собой двоичные данные, то есть не раскладывающиеся на удобовразумительную последовательность символов.
Безусловно, можно было принудительно разбить последовательность бит в файле на группы из восьми бит и попытаться перевести его в текст (эксперимент может проделать каждый, переименовав какой-либо исполняемый файл или архив в файл с расширением ".txt" и загрузив его в Microsoft Word 97 или Microsoft Word 6.0), но в этом случае в таком тексте было бы большое количество символов с кодами меньше 33 и больше 127, из которых со вторыми могла бы возникнуть проблема обрезания старшего бита в семибитных почтовых серверах, описанная выше, а первые могли очень своеобразно отобразиться в почтовой программе. Кроме того, символы с кодами, большими 127, имели шанс подвергнуться перекодировке в российских почтовых серверах. Ясно, что после подобных преобразований вряд ли пересылаемая программа бы заработала, а архив открылся - их код стал бы практически невосстановимо испорченным.
Поэтому были разработаны специальные системы вложений двоичных файлов в почтовые сообщения, основанные на конвертации двоичных данных в набор символов с кодами от 33 до 127, могущий быть впоследствии подвергнутым обратному преобразованию в исходные двоичные данные. Систем такой конвертации было разработано несколько, самые употребительные из них - uuencode, base64, quoted-printable.
Почтовая программа, умеющая работать с вложениями, конвертировала перед отправкой письма вложенные файлы в одну из таких кодировочных систем, помещая перед вложением соответствующее указание на такую конвертацию, а при получении письма с вложениями просматривала текст письма и при нахождении вставки фрагмента, закодированного как, например, uuencode или base64 (что определялось по специальному указателю в тексте письма), превращала этот фрагмент в исходный двоичный файл.
Сейчас все общеупотребительные почтовые программы умеют это делать.
Вот, к примеру, фрагмент письма с вложением, просматриваемый с помощью функции Microsoft Outlook Express "Свойства-Подробности-Исходное сообщение" (рис.13.8).
Рис.13.8. Фрагмент письма с вложением.
Все как на ладони. Указано, что приложено к письму - архив Zip с названием 999.zip, указан способ конвертации вложения - base64, а дальше идет набор символов первой половины кодовой таблицы, за который можно быть уверенным, что он пройдет через любые почтовые серверы неизмененным. Outlook Express при получении такого письма распознает наличие вставки base64, отобразит вложенный файл на панели вложений и позволит сохранить его на жесткий диск или прочитать, подвергнув обратному преобразованию из base64.
Если вложенный файл является текстовым (наиболее частый случай - HTML-вариант письма, который может быть составлен, к примеру, с помощью программы Outlook Express), то для него, помимо способа конвертации (обычно quoted-printable), указывается еще и кодировка исходного текстового файла для того, чтобы почтовая программа получателя, раскодировав его, могла его правильно отобразить (рис.13.9).
Рис.13.9. Указание на кодировку текстового вложения. В данном случае текстовое вложение еще подвергнуто преобразованию quoted-printable.
Иногда встречаются семибитные сервера, которые не "обрезают восьмой бит", а попросту обнуляют все символы с кодами, большими 127. В этом случае пришедшее письмо выглядит как набор вопросительных знаков, и никакая перекодировка не помогает - информация об исходных кодах символов оказывается полностью потерянной. В этом случае использование системы конвертации вложений для самого текста письма позволит ему проходить и по таким почтовым серверам.
Волшебный мир макросов
Антон Орлов, http://antorlov.chat.ru
О том, как создавать программы на встроенном в Microsoft Office языке программирования Visual Basic for Applications (VBA), было подробно рассказано в предыдущих главах. Но теория будет еще полезнее, если подкрепить ее практикой - примерами реально работающих программ, написанных на этом языке. А таких - немало. К сожалению, многие из них не такие уж и известные, но весьма интересные и полезные для очень многих пользователей.
В этой главе вы найдете небольшой обзор существующих на настоящее время программ на языке VBA, работающих в среде Microsoft Office. Обратите внимание на них - если вы часто и много используете текстовый редактор Microsoft Word или другие компоненты Office, то они могут серьезно помочь вам в работе. Отличительная особенность большинства программ, описанных здесь – то, что они распространяются с открытым кодом. То есть – вы можете свободно просматривать текст программ, исследовать его, учиться на опыте ваших коллег, изучая код их программ и стремясь понять предназначение каждой строчки и каждой команды.
Не думайте, что изучение кода уже созданных программ как-то неправильно или незаконно. Вы тем самым служите распространению знаний на Земле (хотя бы и просвещаясь самостоятельно), а это - весьма благородная цель. К тому же и вашим коллегам это принесет пользу - их труд по написанию красивого и быстрого кода, помимо создания хорошей программы, еще и даст вам возможность стать умелым программистом.
Все описанные здесь программы доступны через Всемирную Сеть. К сожалению, вполне возможно, что к моменту выхода книги некоторые адреса поменяются, но с помощью средств поиска в Сети найти их снова будет вполне возможно.
Всплывающая подсказка
Это простой прием, но о нем, увы, знают не все web-мастера. Чтобы добавить к любому обьекту web-страницы всплывающую подсказку, как, скажем, на рис.22.7, добавьте в его тэг параметр title="Подсказка". К примеру, для тэга <a href=""> это будет выглядеть как <a href="http://www.duel.ru" title="Интересная газета">.
Добавлять всплывающие подсказки можно практически к любым тэгам web-страницы. И к тэгу <p>, и <table>, и <img…>. Если вам надо добавить подсказку к тэгу, который не допускает такого (скажем, кнопка формы), то просто окружите этот обьект тэгами <div>...</div> и укажите параметр title именно в нем: <div title="Подсказка">...</div>. Таким образом вы сможете всю web-страницу снабдить всплывающими подсказками и поместить в них различную полезную для посетителей информацию.
Рис.22.7. Добавить к гиперссылке всплывающую подсказку просто,
а для посетителя - удобно.
Выборочная загрузка
1. Сайт www.harchikov.ru посвящен творчеству популярного певца-барда Александра Харчикова. На сайте должны были быть представлены вышедшие альбомы певца в количестве 15 штук и записи песен каждого альбома в MP3-формате. При создании сайта возникла необходимость обеспечить удобную навигацию. Общепринятый способ - ссылки на страницы с описанием каждого из альбомов и песнями из него - имел тот недостаток, что посетитель, желающий просмотреть не один альбом, а сразу несколько, был бы вынужден постоянно переходить со страницы на страницу, делая лишние усилия. Кроме того, в случае разрыва связи во время загрузки какого-либо файла посетитель, ушедший на другую страницу, был бы вынужден снова возвращаться на ту, с которой он этот файл загружать начал, тратя время на ее поиск. Недостаток другого варианта - размещения информации о всех альбомах на одной странице - ясен: размер этой страницы получился бы очень большим, а интересная посетителю информация могла бы занимать лишь небольшую ее часть.
Рис.19.2. Чтобы просмотреть лишь избранные альбомы, достаточно их отметить...
Рис.19.3. ...и вот, как на ладони - только они.
Поэтому было сделано так. На главной странице разместилась форма, а у каждого названия альбома - checkbox, внизу же страницы - кнопка перехода на список альбомов. Посетитель мог отметить заинтересовавшие его альбомы (рис.19.2), и после нажатия кнопки перехода PHP-сценарий выводил ему страницу с описаниями лишь тех альбомов, которые посетитель выбрал (рис.19.3).
Сделано это просто.
Все checkbox'ы заглавной страницы сайта имеют свои имена: <INPUT name=pan01 type=checkbox> и находятся в большой форме, параметром action которой является имя файла с программой на PHP, выводящей описания альбомов в соответствии с данными этой формы, а для передачи данных формы используется метод get
(т.е. ее заголовок имеет вид <FORM action=albm.php method=get name=forma>). Последнее приводит к тому, что в адресе страницы с выведенными описаниями альбомов присутствуют переменные (см.рис.19.3), т.е.
если посетитель занесет этот адрес в "Избранное", то при последующих возвращениях на сайт по этой ссылке (например, для дальнейшей загрузки песен выбранных альбомов) ему не придется вновь выбирать альбомы на заглавной странице, как это было бы в случае использования метода post, не помещающего имена переменных и их значения в строку адреса (что выглядит красивее). Кнопка, вызывающая переход на страницу, указанную в параметре action заголовка формы, должна иметь тип submit:
<INPUT type=submit value="Вывести оглавления отмеченных альбомов">
Загрузив заглавную страницу сайта www.harchikov.ru, можно легко изучить ее структуру.
В файле же albm.php помещена простая программа, выглядящая так:
<?php
if ($bar01==True) {include ("bar01.php"); }
if ($bar02==True) {include ("bar02.php"); }
... по строке на каждый альбом ...
?>
В файлах bar.01.php, bar02.php и т.д. находятся описания альбомов и ссылки на MP3-файлы песен. Если checkbox с соответствующим именем был отмечен на заглавной странице, то переменная его имени оказывается равной True - именно это и проверяется в сценарии.
Рис.19.4. Если вас заинтересовали лишь отдельные вопросы,
нет надобности загружать всю страницу.
Удивительно, что этот простейший прием в настоящее время практически не применяется на сайтах Сети - используется традиционная схема размещения информации со множеством ссылок на отдельные разделы. А ведь как удобно - например, на сайте Александра Харчикова можно выбрать альбомы, сгенерировать себе страницу со ссылками на песни из них и, заходя на нее, постепенно загружать песни или передать весь список ссылок на файлы в какую-нибудь из программ-"качалок". Или, скажем, на сайте фирмы "Экон-Профи" (www.econprofi.ru) точно так же сделан раздел "Вопросы и ответы" (рис.19.4), - отметив интересующие вопросы на странице раздела, можно получить подробные консультации исключительно по выбранным темам.
Полученная страница и загрузится быстрее, да и при ее распечатке лишней бумаги тратить не потребуется.
Данную схему, разумеется, можно доработать. Опыт показывает, что посетители чаще всего предпочитают просмотреть либо два-три выбранных раздела, либо все разделы сразу. В последнем случае им придется отмечать все checkbox'ы страницы, что занимает время и силы. Поэтому стоит поместить на страницу еще и кнопку вывода сразу всех разделов - "Просмотреть все". Ей можно назначить гиперссылку с адресной строкой, содержащей все переменные в значении on, а можно немного доработать код PHP на странице-обработчике запроса, попросту добавив во все условия проверку значения еще одной, общей для всех условий переменной: if (($bar02==True) || ($all==True)) {... (напоминаю, что знак || означает "или"), и тогда гиперссылка может вести всего лишь на адрес albm.php?all=True. Можно для решения той же задачи поместить на страницу пару сценариев на JavaScript, выполняющих соответственно отметку всех checkbox'ов и, наоборот, их очистку (см. такой, к примеру, на странице www.harchikov.ru/cass.php). Так что простор для творчества имеется, и немалый.
Выпадающее меню
Если вы хотите на web-страницу поместить выпадающее меню для быстрой навигации по сайту, например, такое, как на рис.22.6, где при выборе какого-либо пункта происходит автоматический переход на соответствующую страницу, то его можно сделать с помощью средств JavaScript.
Вот пример такого скрипта:
<form><select name="P1" size="1" onchange="top.location.href = this.options[this.selectedIndex].value; this.selectedIndex=0">
<option selected>Выберите раздел сайта для перехода:</option>
<option value="page1.htm">Страница 1</option>
<option value="page2.htm">Страница 2</option>
...
</select></form>
Рис.22.6. Выпадающее меню - удобный способ ориентации на сайте.
А для того, чтобы при выборе того или иного пункта меню происходило открытие выбранной страницы в новом окне, первая строка сценария должна иметь вид
<form><select name="P2" size="1" onchange="window.open (this.options[this.selectedIndex].value); this.selectedIndex=0">
Событие onchange происходит при изменении значения меню - при выборе того или иного его пункта. Команда top.location.href="адрес" заставляет браузер перейти по указанному адресу, а команда window.open="адрес" открывает web-страницу по этому адресу в отдельном окне. "This" - это заменитель имени обьекта select. Свойство этого обьекта this.selectedIndex принимает значение порядкового номера выбранного пункта, а если ему задать значение 0, то выбранным станет самый первый пункт. Команда this.options[this.selectedIndex]. value принимает значение, указанное в свойстве value выбранного пункта.
Если ваш сайт не очень большой, но содержит много различных материалов, то в качестве карты сайта удобно использовать не отдельную страницу, а такое выпадающее меню, в котором перечислены все матералы.
Web-программирование
Все языки программирования, используемые при разработке web-сайтов, можно разделить на две большие группы.
К первой будут относиться те из них, код которых выполняется на компьютере посетителя сайта - в его браузере. Это известные всем JavaScript, VBScript, Java-апплеты. Программы на этих языках встраиваются в код web-страниц (или выносятся в отдельный файл с вызовом из web-страниц, но браузер все равно обрабатывает такие вынесенные программы как если бы они были встроены в код страницы).
Во вторую же группу можно включить те языки, программы на которых выполняются на том компьютере, где расположен web-сервер. Эта группа будет гораздо более обширной, - дело в том, что в принципе на web-сервере могут исполняться программы на любом языке (даже командных .bat-файлов MS-DOS), важно лишь, чтобы на нем была установлена программа-интерпретатор этого языка, удовлетворяющая особым требованиям - стандарту CGI, которым также должен удовлетворять сам web-сервер.
PHP относится ко второй группе - программа на PHP исполняется на web-сервере. Однако от других CGI-языков PHP очень сильно отличается в лучшую сторону, - прежде всего своей простотой. Создавая программы на PHP, нет необходимости учитывать все те многочисленные мелочи, которые отравляют жизнь программистам на Perl или C++: не надо заботиться о правах доступа к файлам сценария, не надо прописывать точные пути к различным модулям, нет необходимости следить за отсутствием в файле скрипта недопустимых символов. Синтаксис языка таков, что он допускает его легкое освоение как начинающим программистом, так и тем, кто уже использовал ранее какой-либо язык программирования. Для тестирования PHP-программ на локальном компьютере необязательно устанавливать на нем ту же операционную систему, что и у провайдера хостинга сайта, где эти программы будут применяться, - достаточно лишь установить соответствующей web-сервер и подключить к нему модуль PHP. Можно целиком и полностью сосредоточиться на решаемой задаче и не думать о мелочах. Именно это и делает PHP весьма хорошим выбором для web-дизайнера, который, начав его использовать, может вообще забыть о каких-либо других CGI-языках.
WOPR - Woody's Office Portal
WORP, или Woody's Office Portal - это большой и мощный пакет макросов, выполняющих самые разнообразные задачи, - от предоставления пользователю усовершенствованных диалоговых окон сохранения и открытия файлов до создания и печати конвертов или буклетов. С помощью компонентов WORP можно вставить в документ зеркальное отображение любого его фрагмента, свободно изменять даты создания и изменения файлов, удобно настраивать параметры вставляемых рисунков. WORP поможет пользователю в восстановлении поврежденных документов Word или в управлении стилями.
Сайт программы расположен по адресу http://www.wopr.com. Основная версия программы работает под Word 97, однако на сайте есть модули, использующие возможности новых версий Word. К сожалению, по умолчанию код WORP закрыт от просмотра, однако вам может помочь решить эту проблему упоминаемая в прошлой главе бесплатная версия программы AVPR с сайта www.passwords.ru. Программа распространяется по принципу Shareware, а объем установочного файла превышает три мегабайта.
Word как web-редактор
Количество Web-редакторов, созданных к настоящему времени разными компаниями и даже отдельными людьми, весьма большое. На все вкусы: и чисто текстовые, и визуальные, и даже поддерживающие стандарт WYSIWYG, хотя и не всегда полноценно. Но каждый из этих редакторов надо где-то доставать, загружать из Сети или покупать, устанавливать, осваивать, - в общем, дел предостаточно. Даже встроенный в Office 2000 и Office XP web-редактор Script Editor нужно установить и освоить.
Однако для того, чтобы быстро создать HTML-документ, не нужно специальных редакторов. Уже в Microsoft Word 97 есть встроенный конвертор, позволяющий сохранить документ в формате HTML. При этом будет сохранено большинство параметров форматирования текста. Word 2000 и Word XP сохраняют в HTML-документе абсолютно все такие параметры, используя язык XML - несколько более "продвинутую" версию HTML, поддерживаемую современными версиями браузеров. В Office 97 HTML-конвертор по умолчанию не устанавливается, так что при инсталляции пакета приходится указывать соответствующую опцию. В Word 2000 и Word XP HTML-формат сделан одним из основных, и эти редакторы можно настроить так, что все документы будут сохраняться только в формате HTML, причем без каких-либо потерь в оформлении.
Вызвать конвертор HTML из Word 97 можно, выбрав из меню "Файл" команду "Сохранить в формате HTML" (будет там, лишь если конвертор установлен), а в Word 2000/XP - вызвав оттуда же команду "Сохранить как web-страницу".
Вот, к примеру, на рис.22.11 слева показан код, создаваемый HTML-конвертором из Word 97, а на рис.22.11 справа - конвертором из Word 2000.
Рис.22.11. Слева - код документа HTML, созданного в Word 97.
Справа - код документа HTML, созданного в Word 2000.
Посмотрев на результаты работы HTML-конверторов различных версий Office, можно сделать определенные выводы.
Во-первых, и тот, и другой конверторы создают весьма нерациональный код для размещения в Web.
HTML-конвертор из Word 97 просто "закидывает" документ лишними тэгами <font>. А HTML-конверторы Word 2000 и Word XP используют громоздкий язык XML, поэтому даже просто производить ручное редактирование кода, созданного этими версиями Word, крайне сложно.
Во-вторых, эти конверторы позволяют использовать Word как web-редактор, так как любой HTML-документ можно открыть в Word, отредактировать и вновь сохранить в HTML-формате. При этом даже в Word 97 доступный набор функций редактирования вполне приличный, во всяком случае, не уступает программе FrontPage Express.
В-третьих, они создают полноценные web-страницы, если посредством этих конверторов сохранять документы с внедренными рисунками, - полноценные в том плане, что все эти рисунки окажутся сохраненными в той же папке, что и HTML-документ.
В-пятых, конверторы из Word 2000 и Word XP сохраняют в HTML-документе абсолютно все форматирование, даже надписи, автофигуры и расстояние между абзацами, в то время как Word 97 может проигнорировать немало информации. И даже если некоторые элементы оформления, сохраненные HTML-конверторами Word 2000 и Word XP, будут неправильно отображаться в браузере, то при повторном открытии документа в Word документ станет выглядеть абсолютно так же, как и перед его закрытием.
В-четвертых, ни Javascripts, ни VBScripts в web-страницу посредством Word так просто не вставить.
HTML-конверторы редактора Word могут сослужить неплохую службу тому, кто желает быстро разместить в Интернете результаты своих трудов, но при этом не знает языков разметки web-документов и не имеет времени на знакомство с ними. Тем более что в этом случае для создания web-страницы не нужно осваивать абсолютно никаких дополнительных программ - достаточно знать основные приемы работы в Word. Впрочем, это вполне очевидное применение таких конверторов.
Но и тем, кто знаком с web-дизайном, профессионально строит сайты, не стоит говорить, что HTML-конвертор Word - "редактор для ламеров", для тех, кто ничего не понимает в компьютерах, и на этом основании никогда его не использовать.
Конвертор может очень серьезно облегчить решение многих задач при создании сайтов. Но так как же профессионалы в web-дизайне могут использовать HTML-конвертор Word? Начнем с конвертора из Word 97.
Во-первых, этот конвертор - идеальное средство для быстрой и удобной конвертации большого обьема текста в формат HTML. При создании электронной библиотеки или размещении в Сети больших материалов он будет незаменим. Даже если исходно информация подготавливалась в каком-либо другом редакторе, то для помещения текста в Web достаточно сохранить его в формате Rtf, а потом открыть полученный файл в Word и конвертировать в HTML.
Все таблицы, содержавшиеся в исходном документе, тоже будут отконвертированы в HTML-код.
Однако, к сожалению, код web-страницы, полученный в результате такой конвертации, придется дорабатывать. Для этого его нужно будет открыть в любом текстовом редакторе, поддерживающем функцию замены (весьма хорошим выбором будет Microsoft Word 6.0, поставленный поверх Word 97 в другой каталог, однако можно использовать и режим Вид-Источник HTML в самом Word 97) и удалить все тэги <font… >, </font>, 	 (символ табуляции), все лишние ссылки и строчки, а затем немного подредактировать (добавив вручную пару-тройку гиперссылок в начало, в конец текста, установив желаемый шрифт и параметры фона). Если для редактирования полученного web-документа использовать Microsoft Word 6.0 или Microsoft Word 97 в режиме просмотра источника HTML, то имеет смысл все операции замены записать в макрокоманду.
Если имеется желание оформить документ так же, как и текст на листе бумаги (то есть без расстояния между абзацами и с отступами красных строк), то стоит заменить все границы однотипных по выравниванию абзацев конструкциями типа <br> , а также добавить символы (попросту пробелы) в начало каждого абзаца, за исключением центрированных заголовков.
Вторая очень полезная функция HTML-конвертора Word 97 - это "вытаскивание" рисунков из документа Word.
Вопрос о переводе рисунка, внедренного в Word, в формат Gif или Jpeg иногда встает очень остро. Простое копирование рисунка в MS Paint, Photo Editor, Adobe Photoshop через буфер обмена к хорошему результату не приведет - качество изображения будет очень плохим. Многие издательства вследствие этого не принимают к публикации файлы Word с внедренными рисунками, если у них используются для верстки другие программы. Однако "вытащить" рисунки из документа Word элементарно просто - нужно всего лишь сохранить его в формате HTML. При этом все внедренные графические обьекты окажутся сохраненными в формате Gif или Jpeg в той же папке, что и полученный web-документ.
HTML-конвертор Word 97 сохраняет изображения очень интеллектуально и хорошо. Он самостоятельно выбирает формат - Gif или Jpeg - для каждого рисунка, исходя из соотношения между размером и качеством будущего файла. Само сохранение происходит крайне корректно и экономно - если один и тот же bmp-файл отконвертировать в Jpeg-формат с помощью графического редактора, например, ACDSee, или вставить в документ Word, сохранить тот в формате HTML и сравнить размеры полученных файлы с рисунками (качество будет одинаковым), то разница может достигать даже полутора-двух раз в пользу HTML-конвертора Word. Таким образом, этот конвертор можно считать на настоящее время еще и наиболее эффективным средством для конвертации графических изображений в форматы Gif или Jpeg.
Диаграммы и формулы, подготовленные соответственно в Microsoft Graph и Microsoft Equation Editor, также конвертируются в файлы типа Gif или Jpeg. Чтобы вставить на web-страницу график или алгебраическое выражение, не надо осваивать сложные графические редакторы или возиться со сканером. К сожалению, автофигуры и обьекты WordArt HTML-конвертором Word 97 не обрабатываются и при сохранении документа игнорируются[59].
Благодаря большому набору готовых обьектов очень удобно использовать средства рисования в Word для создания несложной графики для Web.
Нарисуйте то, что вам надо, с помощью автофигур, сгруппируйте, вставьте на свое же место с помощью команды "Правка - Специальная вставка" как "Рисунок Wmf" и сохраняйте документ в HTML-формате. А конвертируя таким же образом обьекты WordArt (то есть с помощью "Специальной вставки"), можно безо всякого труда получить прекрасные заголовки для ваших web-страниц. В то время как создать красиво оформленный текст даже в Adobe Photoshop представляет собой задачу нетривиальную, в Word с помощью обьекта WordArt это делается за несколько секунд.
Итак - HTML-конвертор Word 97 полезно использовать любому web-мастеру в следующих случаях:
· При необходимости отконвертировать в формат HTML тексты большого обьема, особенно содержащие таблицы, диаграммы, рисунки. Полученный web-документ будет требовать некоторой доработки (удаления лишних тэгов), которая может быть выполнена в любом текстовом редакторе, имеющим функцию замены фрагментов текста, - лучше с возможностью использования специальных символов (конца абзаца и др.).
· При необходимости "вытащить" из документа Word рисунки и сохранить их в отдельных файлах формата Gif или Jpeg.
· При необходимости создать несложный рисунок, диаграмму, формулу или красивый заголовок для помещения на web-странице. В этом случае можно даже просто создать такие рисунки или графики в чистом документе с помощью средств Office, потом сохранить этот документ в формате HTML и использовать полученные графические файлы в своей работе.
Фактически, используя только Microsoft Word 97, можно создать полноценную и красиво оформленную Web-страницу, при этом добившись эффектов, которые доступны не каждому графическому редактору. Нужно только не останавливаться на простом сохранении текста в HTML-формате, а немного еще поработать с самим HTML-кодом.
Конвертор HTML из Word 2000 резко отличается от своего предшественника.
Прежде всего - HTML стал в Word 2000 одним из стандартных форматов. Можно установить HTML как формат сохраняемых документов по умолчанию. В этом случае надежность сохраняемых документов резко повысится (повреждение хотя бы одного байта в обычном документе Word приведет к полной нечитаемости файла, а изменение даже нескольких десятков байт в HTML-документе в самом крайнем случае приведет к нечитаемости лишь этих поврежденных байт), но один документ будет располагаться в нескольких файлах, если он содержит внедренные графические обьекты.
Word 2000 при сохранении документа в формате HTML вносит в него очень большое количество избыточной информации. Избыточной не в том плане, что абсолютно лишней, а в том, что она требуется лишь самому Word'у и не используется даже самыми современными браузерами. Кроме того, браузеры не от Microsoft отображают сохраненные в Word 2000 web-документы зачастую непредсказуемым образом, вручную же поправить это, редактируя сам HTML-код, практически невозможно. Вследствие этого использовать Word 2000 для создания Web-страниц несколько затруднительно. Обьекты WordArt и автофигуры Word 2000 в HTML сохранять умеет, но делает это в самом коде HTML-файла. Сам Word и Microsoft Internet Explorer 5.0 их отображает, но другие браузеры игнорируют.
Область применения HTML-файлов, создаваемых в редакторе Word 2000, меньше, чем для Word 97. Их стоит размещать в Internet лишь тогда, когда сложное оформление очень важно для web-страницы, а сделать его вручную в других редакторах нет возможности. Кроме того, очень желательно, чтобы посетители сайта с такой страницей использовали исключительно браузер Microsoft Internet Explorer версией не ниже четвертой. Но зато в Word 2000 HTML очень хорошо установить как формат для сохранения документов по умолчанию. В этом случае устойчивость документа к повреждениям резко повысится, а для его просмотра будет достаточно браузера.
Использовать Word 2000 для извлечения картинок из Word или конвертации изображений в форматы Gif или Jpeg по-прежнему можно.
К форматам Gif или Jpeg в Word 2000 добавился формат Png, который тоже может использоваться в качестве web-графики, но доступен только самым последним моделям браузеров.
Поэтому тем, кто собирается использовать возможности Microsoft Word для облегчения работы по созданию web-страниц, желательно при инсталляции Word 2000 сохранить Word 97 (отметив соответствующую опцию в одном из диалоговых окон программы инсталляции Microsoft Office 2000) и использовать в качестве HTML-конвертора именно его.
Конвертор HTML из Word XP по своим прикладным возможностям почти полностью идентичен своему предшественнику из Word 2000, так что все сказанное об HTML-конверторе из Word 2000, верно и для него. Однако в новой версии Word в HTML-конвертор добавлена функция "сохранения как web-страницы с фильтром", при использовании которой в создаваемый web-документ не включаются многие параметры форматирования исходного текста. В результате web-страница получается меньшего размера, а ее исходный код становится по крайней мере читаемым. Кроме того, в Word XP документ можно сохранить в виде "web-архива" (с расширением .mht или .mthml), то есть одного файла, в который включаются как текст документа, так и все рисунки и таблицы стилей. Внутренняя структура такого файла построена на основе стандарта MIME[60]. Web-архив может просматриваться через браузер Microsoft Internet Explorer версии не ниже 4.0. Для использования при создании сайтов эти новые возможности во многом бесполезны, однако использовать web-архив в качестве замены стандартному типу файлов .doc, используемому в Word для сохранения документов по умолчанию, представляется весьма перспективным, - в самом деле, при полном сохранении оформления текста web-архив весьма устойчив к повреждениям (так как фактически представляет собой HTML-документ с фрагментами, закодированными base64 или uuencode[61]), а, кроме того, может быть просмотрен даже в том случае, если у пользователя не установлен ни Word, ни какой-либо другой просмотрщик .doc-файлов, - в Microsoft Internet Explorer'е.
Исходя из всего вышеизложенного, можно сказать, что встроенный в Word конвертор HTML - не такая и бесполезная вещь, как иной раз кажется на первый взгляд. Неопытным пользователям он может помочь быстро создать web-страницу в случае необходимости, а опытным даст немало уникальных возможностей, облегчающих труд по созданию сайта. Конверторы из Word 2000 и Word XP таких возможностей дает меньше, позволяя зато весьма хорошо защитить документы Word от возможных повреждений путем использования формата HTML (а Word XP - и формата web-архива) в качестве стандартного.
Ознакомьтесь с возможностями этих конверторов. Вот увидите - не пожалеете о затраченном на это времени.
WordPad
Если под рукой нет ни Microsoft Office, ни каких-либо других программ для чтения текстов MS-DOS, то можно на крайний случай воспользоваться текстовым редактором WordPad, поставляющийся вместе с Windows9x. В меню этого редактора "Открытие файла" в качестве шаблона для имени файла надо указать пункт "Текстовые документы MS-DOS", и тогда открываемый текстовый файл будет отображен правильно.
Зачем он нужен?
Можно спросить: а зачем же может вообще потребоваться PHP? Разве обычных HTML и пары JavaScript не достаточно для создания красивой web-страницы?
Ну, во-первых, PHP может очень серьезно облегчить работу создателя сайта. С помощью команды include() можно автоматически вставлять один и тот же фрагмент HTML-кода во множество страниц, просто поместив в них эту команду с именем файла, содержащего код общей части. Причем этот код тоже может меняться в зависимости от страницы, в которую он включается, - достаточно в этой странице установить значение какой-либо переменной, а в коде общей части поместить инструкцию if, результат работы которой зависит от этого значения. В результате для обновления такой общей части будет достаточно отредактировать один файл - тот, который ее, собственно, и содержит, - и тогда для посетителей сайта соответственно изменятся все его страницы, как если бы вы все их вручную отредактировали.
Работа web-мастера по поддержке сайта при использовании PHP заметно облегчается. К примеру, немного поработав, можно сделать сценарий, "пробегающий" по всем файлам в каком-либо каталоге и "вытаскивающий" оттуда какие-либо фрагменты (например, содержимое тэгов "meta" - функция get_meta_tags). Таким образом можно, скажем, автоматически создавать оглавления журналов или библиотек: стоит поместить в каталог новую статью (оформленную согласно определенным правилам), как она тут же станет появляться в оглавлении на главной странице без необходимости эту главную страницу обновлять вручную.
С помощью PHP можно серьезно облегчить частое обновление страницы - так, если страница содержит часто меняющуюся вставку (например, новости), то будет неплохо поместить на место этих новостей инструкцию include ("file"), а в этом файле разместить текст новостей. В результате при обновлении новостей редактированию придется подвергать лишь сам их текст, а не HTML-код заглавной страницы, что и самому делать легче, и неопытному помощнику доверить можно.
Помощь web-мастеру и службе поддержки web-ресурса - это лишь весьма малая часть функций PHP. Используя PHP, можно обогатить сайт огромным количеством новых возможностей, делающих его удобным и нужным для посетителя. Так, с помощью функции mail() легко обеспечить отправку почтового сообщения по какому-либо адресу со страниц сайта, - например, мнения посетителя о сайте или вопроса его владельцу. Сделать гостевую книгу, чат или форум на PHP тоже возможно, в Сети нетрудно найти немало уже готовых подобных сценариев. В следующем разделе будет рассказано, как с помощью PHP улучшить удобство работы с сайтом, содержащим множество однотипных небольших разделов, или создать мини-Интернет-магазин.
Одним из наиболее заметных достоинств PHP является возможность легкой работы с серверами баз данных. Ранее, до появления этого языка, задание, выражающееся словами "приделать базу данных к web-странице", было довольно трудным и малодоступным для начинающих web-дизайнеров. Приходилось либо самостоятельно разрабатывать хитроумные скрипты, взаимодействующие как с программой управления базой данных, так и с web-страницами сайта, либо закупать их у фирм-разработчиков. С помощью же PHP использование базы данных на сайте стало чуть ли не элементарным. Для работы с подавляющим большинством типов баз данных в PHP есть встроенные функции, поэтому теперь для достаточно лишь установить на web-сервере программу работы с базой данных (наиболее часто используется бесплатная MySQL - http://www.mysql.com) и включить в текст PHP-сценария команды работы с нею (их список приведен в описании языка вместе с примерами использования).
Возможности PHP можно весьма серьезно расширить с помощью дополнительных модулей, содержащих различные функции. Эти модули при необходимости размещаются на web-сервере, на котором установлен PHP-интерпретатор. Их можно загрузить с адреса http://www.php.net, там же в разделе документации приведено и полное их описание. (В том web-сервере с установленным PHP, который распространяется с сайта http://php.spb.ru, никаких дополнительных модулей нет для уменьшения размера дистрибутива.) Например, модуль Zlib позволяет работать из программы на PHP с архивами в формате Gzip, а модуль libswf - с Flash-презентациями, создавая их и редактируя прямо из программы на сервере.
Так как PHP - развивающийся язык, то новые модули появляются довольно часто, однако использовать их можно лишь после установки на web-сервер, что провайдеры хостинговых услуг могут не сделать. Поэтому при желании использовать функции из какого-либо модуля нужно сначала проверить, поддерживает ли их web-сервер, на котором вы собираетесь размещать сайт.
Сделать это можно, либо разместив на сервере страницу со строчкой <?php phpinfo() ?> и загрузив ее с сервера в браузер (на ней будет отображена информация о версии PHP, параметрах web-сервера и многом другом, в том числе дополнительных модулях), либо попросту задав вопрос группе технической поддержки сервера.
PHP можно использовать и для написания полноценных программ, работающих и на локальном компьютере и не требующих для своего выполнения ни браузера, ни web-сервера. В этом случае вместе с программой должен поставляться также и интерпретатор этого языка. Однако рассмотрение такого способа его применения выходит за рамки и этой книги, и большинства общедоступных руководств.
В этой главе приведены только
В этой главе приведены только самые основы этой огромной темы - принципов размещения информации на магнитных носителях. Была рассмотрена лишь не самая сложная и не самая удачная файловая система FAT. Существуют и другие файловые системы, превосходящие FAT по сложности и возможностям. Зачастую они основаны даже на совсем других принципах организации данных, нежели FAT, однако все же именно FAT на настоящее время остается наиболее распространенной файловой системой.
В главе 26 этой книги вы найдете подборку вопросов и ответов, посвященных проблеме установки на компьютер нескольких операционных систем. В ответах на вопросы содержится немало интересной технической информации, так что в том случае, если вы заинтересовались темой организации хранения данных на жестком диске, то обязательно ознакомьтесь и с ней.
Весьма интересной и полезной является тема восстановления информации на жестком диске после вирусной атаки или ошибки операционной системы. Ей посвящено немало публикаций, как в Интернете (например, на сервере www.ixbt.ru), так и в периодической печати. Информация, приведенная в этой главе, поможет вам понимать их.
Да и в любом случае - весьма полезно знать, как работает то, с чем сталкиваешься каждый день...
* * *
Данный текст - глава из книги "Тайны и секреты компьютера (второе издание)", недавно вышедшей в издательстве "Горячая линия - Телеком". Эта книга предназначена для тех, кто самостоятельно осваивает мир информационных технологий. Программирование в среде Microsoft Office, устройство сетей Internet и Fidonet, работа системы электронной почты, структура системного реестра Windows и файловой системы, строение жидкокристаллических дисплеев и проблема наличия различных кодировок русского языка, - про все это рассказывается в ней. Многообразие тем и легкий стиль изложения сделают ее вашим спутником на долгое время, и вы всегда сможете найти в ней нужную именно в данный момент информацию. Если Вы интересуетесь компьютерными технологиями, желали бы расширить свои знания и умения в этой области, то она Вам наверняка понравится. На сайте http://comptain.nm.ru, посвященном этой книге, вы можете ознакомиться с ее оглавлением и аннотацией, прочитать некоторые главы, купить в Интернет-магазине.
всегда творческий процесс. Но помните,
Разработка сайта - всегда творческий процесс. Но помните, что самой главной заповедью для любого web-мастера является необходимость обеспечить удобство посетителя. Только от вас зависит, как будут заходить на ваш сайт пользователи, - ругая web-мастера или восхищаясь его мастерством, и захотят ли они вернуться на сайт снова. Уважайте своего посетителя и стремитесь всячески облегчить ему процесс получения информации с вашего сайта, - ведь это нужно не только ему, но и вам.
Web-дизайн - это еще и вид искусства. Но, как и в любом другом виде творчества, одним из самых важных условий создания действительно хорошего дизайна является чувство меры. Создать сайт, оформленный многокрасочной графикой - полезное дело, но куда как более почетным для разработчика будет создание сайта с минимумом графики, но не менее красивого, и к тому же гораздо быстрее загружающегося.
Помните, что дизайнер, могущий сделать сайт, работать с которым посетителю удобно и приятно, очень высоко ценится! И именно удобство посетителя должно стоять на первом месте у разработчика Web-страниц - сразу после хорошего и нужного информационного наполнения. Создавайте такие сайты, на которые хотелось бы зайти и вам.
* * *
Данный текст - глава из книги "Тайны и секреты компьютера (второе издание)", недавно вышедшей в издательстве "Горячая линия - Телеком". Эта книга предназначена для тех, кто самостоятельно осваивает мир информационных технологий. Программирование в среде Microsoft Office, устройство сетей Internet и Fidonet, работа системы электронной почты, структура системного реестра Windows и файловой системы, строение жидкокристаллических дисплеев и проблема наличия различных кодировок русского языка, - про все это рассказывается в ней. Многообразие тем и легкий стиль изложения сделают ее вашим спутником на долгое время, и вы всегда сможете найти в ней нужную именно в данный момент информацию. Если Вы интересуетесь компьютерными технологиями, желали бы расширить свои знания и умения в этой области, то она Вам наверняка понравится. На сайте http://comptain.chat.ru, посвященном этой книге, вы можете ознакомиться с ее оглавлением и аннотацией, прочитать некоторые главы, купить в Интернет-магазине.
прекрасный пример того, как изобретение,
История PHP - прекрасный пример того, как изобретение, действительно нужное людям, способно завоевать весь мир. Начавшись с небольшого приложения, созданного энтузиастом-любителем, PHP превратился в самый массовый и самый многофунциональный язык web-программирования. Простой синтаксис и логичная структура, отсутствие затрудняющих работу особенностей, модульность конструкции интерпретатора, легкость взаимодействия с базами данных, - все это и сделало PHP таковым.
Освоить PHP может каждый. Наличие множества весьма информативных ресурсов Интернета и полнота официального описания языка делают этот процесс легким и быстрым. Для реализации довольно широкого круга задач вполне хватит даже простой модификации фрагментов кода, приводимых в справке к официальному описанию. А, как показано выше, PHP позволяет не только дать посетителям сайта новые возможности, но и серьезно облегчить труд создателя сайта, тем самым сэкономив больше времени, чем затрачено на его освоение. Поэтому вы никогда не пожалеете, что занялись изучением этого языка.
и приемы могут помочь вам
Все вышеизложенные советы и приемы могут помочь вам сделать сайт удобнее и приятнее для посетителя. Однако не следует забывать, что главное, что необходимо людям на вашем сайте - это его содержание!
И первое, самое главное правило размещения информации в Интернете - это необходимость ее другим пользователям. Если то, что расположено на сайте, интересно и нужно - то его станут посещать в любом случае, сколь бы некрасивым он бы ни был. А если содержимое сайта никому не нужно, кроме его автора (вроде "сайта Васи Пупкина" - фотография автора и его собаки, плюс список его увлечений, плюс ссылки на общеизвестные ресурсы Сети), то никакие приемы web-дизайна не помогут. Более того - такой сайт вызовет лишь отвращение к его автору.
Второе правило - сайт должен быть удобным. Посетитель не должен гадать, куда ему надо нажать, чтобы получить ту или иную информацию. Читать текст на сайте должно быть легко, а ориентироваться - просто. Страницы сайта должны быстро загружаться, - думайте прежде всего о тех, кто работает в Интернете с помощью модемного подключения и платит за каждую минуту доступа в Сеть[62]. Если на сайте много текстовой информации, - не забудьте разместить архив с ней, чтобы его можно было быстро загрузить и читать, отключившись от Сети.
И, в-третьих, сайт должен быть красивым. Пусть вашим посетителям будет приятно на нем находиться, - тогда и мнение их о вас и о том, что на сайте представлено, будет хорошим. Да и вообще - приятно ведь работать с хорошо сделанной вещью, от одного взгляда на которую становится ясно, что ее автор любит тех, для кого трудится. Пусть мир станет хоть немного красивее от того, что в нем появится ваше творение.
Смело - вперед!
Вот и закончилась эта большая и сложная глава. Но несмотря на свои размеры, она охватила лишь очень малую часть секретов системного реестра Windows. Конечно, хотелось бы узнать поподробнее про другие разделы, выяснить наконец, где прячутся другие интересные настройки... Можно, конечно, поискать книги, полазить по Интернету. Но это все - дорого и сложно.
А ведь между тем у вас есть все инструменты для того, чтобы системный реестр открывал перед вами все новые свои тайны. Этот инструмент - ваши глаза и руки, ваш разум и память. Наблюдайте, исследуйте, делайте выводы, экспериментируйте (естественно, приняв все меры предосторожности!), - и тогда вы не на чьих-то словах, а на собственном опыте узнаете многие и откроете новые секреты этого недокументированного сердца Windows - системного реестра.
* * *
Данный текст - глава из книги "Тайны и секреты компьютера (второе издание)", недавно вышедшей в издательстве "Горячая линия - Телеком". Эта книга предназначена для тех, кто самостоятельно осваивает мир информационных технологий. Программирование в среде Microsoft Office, устройство сетей Internet и Fidonet, работа системы электронной почты, структура системного реестра Windows и файловой системы, строение жидкокристаллических дисплеев и проблема наличия различных кодировок русского языка, - про все это рассказывается в ней. Многообразие тем и легкий стиль изложения сделают ее вашим спутником на долгое время, и вы всегда сможете найти в ней нужную именно в данный момент информацию. Если Вы интересуетесь компьютерными технологиями, желали бы расширить свои знания и умения в этой области, то она Вам наверняка понравится. На сайте http://comptain.nm.ru, посвященном этой книге, вы можете ознакомиться с ее оглавлением и аннотацией, прочитать некоторые главы, купить в Интернет-магазине.
Затемняющиеся иконки
Один из основных законов так называемого "usability" - принципов создания удобных вещей, в данном случае web-сайтов, гласит, что интерфейс обьекта, с которым работает пользователь, должен быть ему знакомым. То есть, в данном случае, - зайдя на web-страницу, посетитель не должен гадать и думать, для чего предназначен тот или иной ее элемент. Достигнуть этого можно с помощью похожести интерфейса web-страницы на какой-нибудь другой, привычный пользователю. Например, интерфейс операционной системы.
Наверняка все, работающие с Windows 98 и более старшими версиями этой операционной системы, помнят о возможности настроить вид папок так, что при наведении курсора иконка файла будет затеняться, а при нажатии в этот момент левой кнопки мыши файл откроется. Так почему бы не реализовать такой же эффект на web-странице, содержащей файловый архив? Скажем, поставить в качестве ссылок такие же иконки этих файлов, как и соответствующие их формату в интерфейсе операционной системы (например, для архива формата Zip - изображение сжатых струбциной ящиков от стола,). Тогда посетитель, зайдя на страницу, сразу увидит знакомые значки и ему будет проще ориентироваться на ней - то, что предназначено для загрузки с сайта, будет видно сразу.Однако просто использовать в качестве ссылок иконки архивов - это весьма банально и неинтересно. А что, если сделать их такими же затемняющимися, как и в Windows? Представьте себе - навел посетитель курсор мыши на значок, а он стал темным, увел - он стал обычным. Но как это реализовать?
Можно, разумеется, использовать традиционный метод - использовать два варианта значка (обычный и затемненный) и с помощью небольшого скрипта организовать их замену друг на друга при наведении и уходе курсора мыши. Однако такое устройство страницы приведет к тому, что на страницу придется поместить еще и сценарий для предварительной загрузки картинок (иначе соответствующие варианты значков будут загружаться лишь при наведении мыши, то есть - не сразу).
Кроме того, при сохранении web- страницы на локальном диске посетителя иконки, загружаемые в сценариях, не копируются на винчестер, и в итоге во время работы пользователя с сохраненной страницей при наведении курсора мыши иконки будут заменяться на белые "дырки", что, ясно, не есть хорошо.
Однако для достижения вышеописанного эффекта вполне можно обойтись и одним изображением, если использовать так называемые "фильтры". Вот пример сценария, использующего их.
В начало страницы, в раздел "<head>" следует добавить скрипт:
<script language="JavaScript1.2">
Далее следует стандартный синтаксис сценария на Javascript. Для экономии места используется одна функция, которой сообщается имя графического обьекта на web-странице, на котором используется затемнение, и требуемое действие - либо применение этого затемнения, либо его отмена.
function g(c,w)
{
if (w==0)
Если нужно "затемнить" картинку:
{
c.style.filter="light";
...применяем фильтр "light", который окрашивает картинку в определенный цвет...
if (c.filters.light)
{
c.filters.light.addAmbient(130,130,210,120)
}
...и задаем в качестве затемняющего цвета - темно-синий оттенок. Эта команда используется лишь в том случае, когда браузер может работать с фильтрами - именно поэтому она помещена после оператора if, проверяющего, существует ли для браузера фильтр light.
}
else
c.style.filter=0
Ну, а если нужно, наоборот, вернуть картинке первоначальный вид, то просто отменяем все фильтры.
}
</script>
В тэг каждой картинки, для которой требуется реализация эффекта "затемнения", следует вставить команды "onMouseover="g(this,0)" onMouseout="g(this,1)":
<IMG src="z.gif" border=0 height=30 width=30 onMouseover="g(this,0)" onMouseout="g(this,1)">
В результате при наведении курсора мыши на картинку она будет затемняться - как на рисунке выше.
К сожалению, данный прием работает только в браузере Microsoft Internet Explorer версии 5.0 и старше. Пользователи же остальных браузеров увидят простую непереливающуюся картинку и ничего больше.
Примеры сценария и иконки архивов вы можете взять с адресов http://antorlov.chat.ru, http://karamurza.chat.ru, http://skywars.chat.ru, http://ambarsum.chat.ru.
Железный ключ
HKEY_DYN_DATA - пожалуй, самый недокументированный раздел реестра. Отчасти это обьясняется тем, что данные в этом разделе создаются и корректируются автоматически. Любое вмешательство пользователя может лишь нарушить работу компьютера, - здесь нет ничего такого, что требовало бы необходимости редактирования через Редактор реестра. Интерес этот раздел представлял, скорее всего, лишь для разработчиков самой Windows на стадии ее отладки, а также, может быть, для разработчиков драйверов различных устройств компьютера. Но, так как уж он присутствует в системном реестре, то и программа regedit.exe его отображает.
В отличие от всех остальных разделов, содержимое которых хранится в файлах системного реестра на жестком диске и загружается в оперативную память лишь в случае необходимости его считывания или изменения, все данные HKEY_DYN_DATA при загрузке операционной системы размещаются в оперативной памяти и находятся там вплоть до завершения работы операционной системы.
В разделе HKEY_ DYN_DATA находятся два подраздела. Первый из них, HKEY_DYN_ DATA\Config Manager\ Enum посвящен состоянию "железа" компьютера. Если в разделе HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\Class расположена информация о том, какие устройства установлены в компьютере, то в этом разделе - данные об их функционировании, о том, как они работают - исправно или нет. Информация в окне Панель управления - Система - Устройства формируется из содержимого обоих этих разделов.
Второй же раздел, PerfStats - это раздел статистики. Он связан (но не является "отражением", как, скажем, HKEY_CLASSES_ROOT) с разделом HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\Perf Stats (рис.14.16) и содержит статистическую информацию по параметрам этого раздела. Можно сказать, что в HKEY_LOCAL_ MACHINE\System\CurrentControlSet\Control\ PerfStats перечислены параметры статистики системы, а в HKEY_DYN_DATA\ PerfStats - их значения. Именно отсюда берет свои данные программа Системный монитор.
Назначение раздела HKEY_DYN_DATA - постоянно находиться в оперативной памяти и поставлять системе информацию о состоянии устройств компьютера по первому ее требованию. Чтобы в этом случае не пришлось ничего загружать в память, а все там уже было. Можно было бы, конечно, перенести всю эту информацию в раздел HKEY_ LOCAL_MACHINE, в соответствующие ключи, но тогда быстродействие системы бы серьезно замедлилось. А так - раздел не очень большой и не содержит в себе ничего, кроме данных для системы, - ни названий, ни пояснений. Чисто служебная информация.
В системном реестре Windows 2000/XP данный раздел отсутствует.
Жесткий диск
Если вскрыть корпус жесткого диска и посмотреть, что там внутри, то наиболее заметной деталью будет стопка темных или зеркальных дисков, насаженных на одну ось и занимающих большую часть пространства внутри корпуса винчестера[17]. Именно они и являются хранилищем информации. В качестве материала для дисков обычно используется алюминий, реже - стекло или керамика. Диски покрыты слоем окиси хрома, которая, собственно, и обладает возможностью сохранять в себе магнитные метки, и жестко закреплены на оси, которая в своей нижней части является якорем плоского электродвигателя. Между каждыми двумя дисками есть некоторое расстояние.
Сбоку от стопки дисков находится блок головок, состоящий из расположенных один над другим держателей с головками, скрепленных в единое целое. Блок головок может поворачиваться, причем так, что держатели головок заходят в промежутки между дисками. Данные хранятся на обоих поверхностях каждого из дисков, поэтому вокруг каждого диска находится по две головки - сверху и снизу. В процессе работы стопка дисков вращается вокруг своей оси, поэтому блок головок в принципе может получить доступ к любому участку любого из дисков.
Поворотом блока головок управляет специальный электромагнитный двигатель, вмонтированный в его основание. Также внутри корпуса жесткого диска находится небольшая микросхема - усилитель сигналов, соединенная шлейфом из проводов с блоком головок. Магнитные диски, блок головок и микросхема заключены в герметичный корпус, заполненный обеспыленным воздухом. В целом содержимое корпуса напоминает проигрыватель грампластинок, отличающийся тем, что одновременно на ось насажены несколько дисков, для каждого из них с обоих его сторон имеется по звукоснимающей головке, и все головки для всех дисков связаны в единый блок. В выключенном состоянии блок головок повернут так, что головки находятся у оси стопки дисков, в так называемой "зоне парковки".
Снаружи герметичного корпуса располагаются различные микросхемы, управляющие жестким диском, в частности, микросхема с нестираемой служебной информацией, кэш диска - как бы его "оперативная память", куда помещаются передаваемые на диск данные перед тем, как стать записанными на винчестер и некоторые другие блоки.
Блок головок может перемещаться поперек стопки дисков с определенным шагом. При своем перемещении он ориентируется на специальные магнитные метки, нанесенные на диски при их изготовлении. Тот фрагмент поверхности диска, который доступен одной головке при неподвижном блоке и полном обороте стопки дисков, называется дорожкой, совокупность всех фрагментов поверхностей всех дисков, доступных при одном обороте стопки дисков и неподвижном блоке, именуется цилиндром. Количество цилиндров зависит от радиуса дисков и возможного шага перемещения блока головок.
Каждая дорожка с помощью магнитных меток еще во время изготовления винчестера[18]
разбивается на секторы - непосредственные единицы хранения информации на жестком диске. Согласно существующим стандартам, в каждом секторе может быть записано 512 байт информации, метка начала сектора и число, рассчитываемое на основе информации в секторе для отслеживания возможных ее изменений (так называемая "контрольная сумма сектора"). Начало каждой дорожки и сектора также особо помечается, причем начала всех дорожек, как нетрудно понять, расположены в плоскости одного радиуса стопки дисков.
Кроме того, на поверхности дисков, обычно между секторами, размещаются служебные магнитные метки, использующиеся для определения и стабилизации скорости вращения стопки дисков, а также более быстрого поиска нужных секторов и дорожек.
Управляет работой жесткого диска особая микросхема, именуемая контроллером винчестера.
Для чтения или записи какого-либо сектора контроллеру следует указать номер цилиндра, номер дорожки и номер сектора на этой дорожке. (Номера дорожек еще называют "номерами головок" - так как на каждую дорожку, входящую в цилиндр, приходится как раз одна головка.) Получив эту информацию, контроллер прикажет блоку головок расположиться над дорожками цилиндра, а затем начнет работать с той головкой, которая находится над нужной дорожкой, приказав ей дождаться того момента, когда вследствие вращения стопки дисков под ней пройдет нужный сектор, а затем считать из него информацию или, наоборот, записать туда данные.
Несмотря на то, что в каждый отдельный момент контроллер винчестера может работать максимум лишь с одним сектором на одном из дисков стопки, блок головок перемещается целиком - со всеми головками. Это может показаться нерациональным, но иначе конструкция винчестера очень бы усложнилась.
После окончания сборки жесткого диска на заводе проводится его тестирование с помощью специальной аппаратуры. К сожалению, на существующем уровне развития технологий добиться идеально качественной поверхности магнитных дисков невозможно, поэтому на них обязательно будут дефектные участки - места, куда невозможно полноценно осуществить запись данных. Чтобы этот факт не приводил к невозможностью работать со всем жестким диском, во время тестирования составляется так называемая "таблица переназначения дефектных секторов". При этом контроллер жесткого диска программируется так, что при поступлении обращения операционной системы к дефектному сектору в действительности работа осуществляется с резервными сектором, находящимся в специальной области диска (располагающейся, в зависимости от модели винчестера, на каждой дорожке или, чаще, в отдельных цилиндрах). Данные о соответствии дефектных секторов диска резервным также находятся в специально выделенной области и загружаются в память контроллера жесткого диска при начале работы винчестера.
При запуске компьютера и подаче напряжения на жесткий диск после краткого самотестирования микросхем винчестера начинает работать электродвигатель и раскручивает стопку дисков. Когда скорость вращения двигателя достигает определенной величины, за счет давления воздуха, увлекаемого дисками при вращении, держатели головок чуть-чуть приподнимают их над дисками, и под ними возникает воздушная подушка. Головки получают возможность перемещаться поперек стопки дисков, не касаясь их поверхности. Как только это происходит, контроллер винчестера дает им команду считать информацию стабилизации скорости вращения, всегда находящуюся в одних и тех же местах, а также таблицу переназначения дефектных секторов.
После этого производится самотестирование жесткого диска путем считывания определенной последовательности дорожек, и, если все прошло нормально, сообщение BIOS'у об успешном запуске винчестера.
BIOS, или базовая система ввода-вывода: Base Input-Output System, - это программа, записанная в микрочипе на материнской плате. Она содержит в себе функции управления ресурсами материнской платы и некоторых периферийных устройств, а также программу работы с жестким диском - считывания и записи данных, перемещения головок. Операционная система MS-DOS использует именно BIOS для работы с ресурсами компьютера - когда MS-DOS посылает команду считать данные с винчестера, то выполняет ее BIOS. Системы Windows9x/Me, Windows NT/2000/XP, Linux используют свои программы-драйвера для работы с винчестерами.
BIOS'у компьютера и операционной системе не обязательно поставляются точные данные о физическом строении ("физической геометрии") жесткого диска - о количестве цилиндров, головок, секторов. Электроника винчестера способна "на лету" пересчитывать данные "физической геометрии" в так называемую "логическую геометрию" диска и уже именно ее параметры сообщать BIOS'у. Например, старые модели BIOS не могут работать больше, чем с 1024 цилиндрами, 256 дорожками в цилиндре и 63 секторами на дорожке. Это связано с возможностями его так называемого "прерывания 13", способа работы с жестким диском, изначально в BIOS запрограммированного и используемого MS-DOS, а также операционными системами Windows во время загрузки. Поскольку развитие жестких дисков шло именно по пути увеличения количества цилиндров (в самом деле, представить себе жесткий диск с 256 головками одна над другой сложно), то для того, чтобы с диском можно было работать через BIOS, контроллер винчестера представляет BIOS'у, скажем, диск с 20480 цилиндрами и 4 дорожками как диск из 1024 цилиндров и 80 дорожек.
К сожалению, даже при использовании конвертации "физической геометрии" диска в "логическую" максимальный обьем винчестера, с которым можно работать средствами BIOS, составляет 1024*256*63*512= 8455716864 байт = около 8 гигабайт.
С дисками большего обьема работать посредством 13-го прерывания BIOS невозможно[19]. Поэтому на новых материнских платах BIOS особым образом усовершенствован ("прерывание 13" сделано "расширенным") , и это ограничение емкости дисков в нем отсутствует.
Современные операционные системы при своей работе не используют 13-е прерывание BIOS, а поэтому могут работать с дисками весьма большого обьема. Но каждая операционная система должна загрузиться, а в процессе загрузки ее файлы могут быть считаны с диска только средствами BIOS'а. Поэтому в случае использования больших дисков со старым BIOS'ом с загрузкой операционной системы могут быть сложности.
Кроме того, на современных жестких дисках применяется особая форма разделения дорожек на секторы, при которой внешние дорожки, протяженность которых больше, чем внутренних, разбиваются на большее количество секторов. При этом для операционной системы диск все равно имеет равное количество секторов на каждой дорожке, а преобразование запросов операционной системы в команды блоку головок производится в соответствии со специальными таблицами, записанными в микросхемах жесткого диска.
В жестких дисках последних 7-8 лет выпуска имеется так называемая система S.M.A.R.T. (то есть "Self Monitoring Analysis and Reporting Technology") - особые компоненты устройства, предназначение которых заключается в отслеживании возможных неисправностей и устранении их по мере возникновения. Так, в то время как в старых дисках таблица переназначения дефектных секторов формировалась на заводе, выпускающем винчестеры, а впоследствии уже не могла изменяться, то в новых винчестерах система S.M.A.R.T. во время работы диска отслеживает качество записи и чтения с каждого сектора и при его снижении заранее переназначает сектор на резервный, не дожидаясь момента отказа. Изначально же область резервных секторов делается больше, чем нужно в момент изготовления диска, - с расчетом на будущее.
Читая старые статьи и воспоминания компьютерщиков, вы наверняка обращали внимание на описания ситуации, когда жесткий диск покрывается сбойными секторами, и наверняка поражались, что, к счастью, вас эта чаша минула - ваш недавно выпущенный диск абсолютно исправен и не имеет ни одного поврежденного сектора.
Но это так из-за действия системы S.M.A.R.T. - она просто даже не дает операционной системе заметить, что тот или иной участок диска испортился, моментально переназначая на него резервные секторы. И только тогда, когда вся резервная область будет исчерпана, на вашем жестком диске появятся видимые из операционной системы сбойные участки.
Помимо слежения за качеством поверхности жесткого диска, S.M.A.R.T. также отслеживает изменения параметров работы механики винчестера, таких, как время достижения диском расчетной скорости вращения, время доступа к различным зонам диска и в случае, когда эти параметры выходят за допустимые пределы, сообщает операционной системе, что диск собирается испортиться. Если операционная система поймет сообщения S.M.A.R.T., то пользователю будет сообщено о вскоре предстоящей необходимости замены диска.
Для просмотра параметров S.M,A.R.T. можно воспользоваться программным комплексом HDDUtility Дмитрия Пашкова (адрес для загрузки - http://www.ibaranov.ru/hddutil.rar, программа работает только в среде Windows9x). Кроме того, если ваш диск выпущен фирмой Quantium после 1997 года, то с помощью HDDUtility вы сможете просмотреть его дефект-лист непосредственно и узнать, какие конкретно сектора являются переназначенными. Если же у вас нет HDDUtility или воспользоваться вы им вы не можете (например, по причине работы в другой операционной системе), то используйте любой программный пакет для тестирования компонентов компьютера, имеющий функцию прорисовки графика скорости последовательного чтения секторов диска (например, ZiffDavis WinBench 99). Моменты резкого падения скорости чтения соответствуют переназначенным секторам, так как при тестировании такого сектора тратится время на перемещение магнитной головки в резервную область и обратно к той дорожке, на которой располагался переназначенный сектор.
Если при заводском тестировании на одной поверхности магнитной пластины будет найдено столько плохих секторов, что весь дефект-лист окажется заполненным, а другая поверхность будет в порядке, то ту магнитную головку, которая должна работать с дефектной поверхностью, просто отключают.
Вас, кстати, никогда не удивляло наличие в магазинах дисков, скажем, на 10 и 30 гигабайт при заявленной емкости одной пластины в этих моделях в 20 гигабайт? Величины-то 20-ти не кратны. Так вот в таких дисках одна из сторон их магнитных пластин имеет так много дефектов, что просто отключена и диск промаркирован на меньшую емкость. Скажем в 10-гигабайтном винчестере стоит 20-гигабайтная пластина, в которой работает только одна сторона.
На свободное место в резервной зоне поврежденные сектора переназначаются лишь на некоторых моделях жестких дисков. На остальных же переназначение секторов может идти лишь на резервные, находящиеся лишь на той же дорожке. Или на том же секторальном блоке. Или на том же цилиндре. Использование же для переназначения секторов резервной области другой дорожки (блока, цилиндра) невозможно. Делается это для некоего упрощения работы системы переназначения секторов, подразумевается, что повреждения поверхности про исходят в относительно случайном порядке. При длительной работе жесткого диска примерно так и происходит, однако, скажем, при ударе по диску или при его падении может происходить повреждение сразу множества секторов, расположенных в одном месте. Тогда, если эти поврежденные секторы находились, например, на одной дорожке, резервная область этой дорожки окажется переполненной переназначенными секторами, и места в ней для всех не хватит. Многие bad-сектора останутся непереназначенными, и при проверке диска кластеры, их содержащие, будут помечены как поврежденные. Однако резервные области на остальных дорожках останутся незаполненными - те-то дорожки повреждены не были, и общий процент переназначенных секторов будет не таким уж и высоким. Поэтому получится ситуация, при которой согласно сообщениям S.M.A.R.T. процент заполнения дефект-листа низкий, в bad-блоки на диске имеются. Однако моделей жестких дисков, использующих именно такой способ работы с переназначенными секторами, не так и много.
Шумовой эффект "хрюканья", возникающий при работе с жестким диском, обусловлен перемещением головок взад-вперед по диску.
Процесс равномерного считывания содержимого диска практически бесшумен. Вы можете сами в этом убедиться, сравнив шумовые эффекты от работы программы ScanDisk в режиме проверки поверхности диска, при которой блок головок медленно и равномерно перемещается вдоль диска, и программы Defrag, при работе которой блок головок постоянно двигается взад-вперед.
Однако даже при работе ScanDisk в режиме "полной" проверки диск все равно время от времени "всхрюкивает". Это происходит как раз в те моменты, когда проверка доходит до дефектного сектора, и контроллер винчестера заставляет головки переместиться в зону, где содержатся резервные секторы. Из этого следует простой практический вывод: если вы желаете узнать, насколько качественно сделана поверхность вашего жесткого диска без каких-либо специальных программ проверки S.M.A.R.T. или тестирования скорости считывания, то запустите ScanDisk в режиме полной проверки, дождитесь начала тестирования поверхности и прислушайтесь к звукам, доносящимся из корпуса компьютера. Каждое "хрюканье" будет означать наличие одного дефектного сектора. Естественно, в период проверки не следует допускать какую-нибудь еще работу с жестким диском со стороны операционной системы или запущенных программ, включая планировщики заданий и хранитель экрана.
"Всхрюкивание" жесткого диска при начале загрузки компьютера также связано с перемещением головок по определенной последовательности дорожек во время самотестирования.
Жесткий диск в своем "натуральном" виде, полученном на заводе, непригоден для размещения информации. Чтобы на винчестере можно было хранить данные, необходимо создать на нем файловую систему.