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

         

Aditor


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

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

Загрузить Aditor можно с адреса "http://perecod.chat.ru/aditor.rar" или с сервера бесплатных программ "http://www.freeware.ru".

Рис.13.11. Exclude Symbols.

">



Application.ActiveDocument.PageSetup.Orientation = wdOrientLandscape


Эта команда устанавливает альбомную ориентацию листа в документе. У обьекта Application (то есть приложение, программа, в данном случае - Word) есть подобьект - ActiveDocument (активный документ, а есть еще другие, неактивные документы, тоже загруженные в Word), у этого подобьекта есть подобьект - PageSetup (параметры страницы; а есть еще подобьекты Selection - то, что в данный момент выделено, Characters - все буквы в тексте и др.), у него есть подобьект Orientation (ориентация листа; а есть еще BottomMargin - нижний отступ, LeftMargin - левый отступ и др.), которому присваивается "=" значение wdOrientLandscape - то есть альбомная ориентация листа. Такой же вид имеет и команда получения информации об ориентации листа - она будет выглядеть так:

p = Application.ActiveDocument.PageSetup.Orientation

и после ее выполнения значение переменной р будет wdOrientLandscape или wdOrientPortrait соответственно. (Более подробно синтаксис языка VBA будет рассмотрен в следующей главе.)

При написании команд редактор VBA постоянно подсказывает возможные варианты следующего шага. Например, стоит написать в тексте программы слово Application и поставить точку, как сразу появятся возможные варианты продолжения (рис.1.8).

Рис.1.8. Редактор VBA может сам предлагать продолжения команды

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

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


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





Рис.1.9. Ошибка компиляции.

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

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

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

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


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

Щелкнув два раза на названии формы, можно открыть окно Дизайна форм (рис.1.10).



Рис.1.10. Окно Дизайна форм.



Рис.1.11. Окно свойств элементов формы

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

Если выбрать какой-нибудь элемент формы и из его контекстного меню выбрать пункт "Свойства", то откроется Окно свойств (рис.1.11).

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



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

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

Все модули, входящие в состав проекта, можно сохранить в текстовом файле. Для этого в Менеджере проектов из контекстного меню правой кнопки мыши соответствующего модуля надо выбрать функцию "Экспорт файла". Модуль будет сохранен в текстовом файле с расширением ".bas". Можно просто перетащить название модуля в окно Explorer'а, держа нажатой левую кнопку мыши - редактор VBA поддерживает механизм Drag-and-Drop. Вставить ранее сохраненный модуль можно через команду "Импорт файла" того же меню или путем перетаскивания его иконки в окно редактора VBA.



Рис.1.12. Окно Просмотр обьектов (справа)

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


Автопереход


Для того, чтобы после загрузки web-страницы происходил автоматический переход на другую страницу, принято ставить в ее области <head> выражение <meta http-equiv="Refresh" content="число секунд до перенаправления; URL= адрес страницы, куда произойдет перенаправление, обязательно с http://">. Однако в том случае, если посетитель, находясь на той странице, куда его перенаправили, нажмет в своем браузере кнопку "Назад", то возникнет несколько некрасивая ситуация: он станет нажимать на эту кнопку, желая вернуться на ту страницу, где был ранее, попадать снова на страницу с перенаправлением, и тэг Refresh будет его опять отправлять на тот сайт, который указан в нем для перенаправления. Это может вызвать у посетителя отрицательные эмоции, так что для автоматического перенаправления лучше вставить в самое начало страницы, можно даже в раздел <head> небольшой сценарий:

<script language="javascript">

window.location.replace("адрес страницы, куда произойдет перенаправление, обязательно с http://");

</script>

Команда window.location.replace() загружает в браузер посетителя страницу с указанным адресом, но не помещает информацию о ней в "Историю" ваших путешествий в Web. Тем самым предотвращается случайное возвращение посетителя на страницу с перенаправлением.

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



Береги пароль смолоду


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

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

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

Итак - начнем с описания методов воровства паролей.

Атаки

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

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

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

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

2. Узнав логин с паролем лично от вас.

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

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

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

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

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

3. Открыв сохраненные пароли на вашем компьютере.

Если вы используете операционную систему Microsoft Windows 95 или 98, а злоумышленник физически получит доступ к вашему компьютеру, то ему может легко удастся узнать сохраненные на жестком диске пароли. Для этого достаточно скопировать и запустить программу OpenPass, а затем навести ее на любое окно, в котором пароль отображается звездочками. Звездочки исчезнут, а на их месте появится пароль.

Программа OpenPass пригодится и вам - если вы вдруг забудете свои сохраненные пароли, то с ее помощью их нетрудно будет восстановить. Так что, если хотите, загрузите ее с адреса http://perecod.chat.ru/openpass.rar.



Рис.24.1. Казалось бы - убедительное письмо, забота о пользователях.


Но… приглядитесь-ка к адресу "службы поддержки"! Ничего подозрительного не замечаете? Да и не будет солидный провайдер требовать высылать ваши пароли ему почтой. Не попадитесь на подобную уловку!

3. Похитив с вашего компьютера файлы, в которых пароль был сохранен.

Если вы сохраняете пароли на жестком диске своего компьютера, то похитить их не так и трудно. На врезках описано, как это можно сделать, - украв файл с расширением .pwl из каталога Windows и ветвь HKEY_CURRENT_USER\RemoteAccess из системного реестра.

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

4. Установив на ваш компьютер программу, которая узнает вводимый вами пароль и логин и отошлет их злоумышленникам.

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

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

HookDump может использоваться и в "мирных" целях - скажем, для отслеживания действий неопытных пользователей за компьютером.


В случае "краха" системы можно будет не тратить время на расспросы, "что и когда нажал", а просто посмотреть отчет HookDump и узнать, что произошло. Поэтому вы можете загрузить эту программу с адреса http://perecod.chat.ru/hookdump.rar. Однако не увлекайтесь использованием HookDump'а, думаю, понятно, почему…

Чтобы воспользоваться отчетом HookDump'а, необходимо забрать его с того компьютера, где он был создан. Однако есть программы-трояны, которые отсылают такие отчеты автоматически по электронной почте.

5. Попросту подобрав пароль.

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

Защита

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

1. Ьерегитесь вирусов и троянов!

Обязательно проверяйте на вирусы все загружаемые из Сети, добываемые с компакт-дисков программы! Используйте для этого самые современные антивирусные программы - например, Antiviral Toolkit Pro. Почаще просматривайте содержимое автозагружаемых папок и разделов реестра Windows ("Автозагрузка" в Главном меню, подразделы Run, RunOnce, RunOnceEx, RunServices, RunServicesOnce разделов HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion и аналогичного в HKEY_LOCAL_MACHINE, а в Windows95/98/Me - еще и раздел [boot] в system.ini, параметры load и run в win.ini, файлы autoexec.bat и config.sys) на предмет появления там "чего лишнего". Никогда не открывайте вложения в письмах, несогласованные с отправителем! В общем - выполняйте требования антивирусной безопасности.



2. Не используйте простых паролей!

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

3. Если вы работаете в Windows95/98/Me, то никогда не сохраняйте пароли на вход в Интернет на жестком диске!

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

4. Используйте разные пароли для разных ресурсов!

Никогда не используйте один и тот же пароль на вход в Интернет и на ваш почтовый ящик! Если требования провайдера таковы, что эти пароли должны быть одними и теми же - то либо не пользуйтесь этим ящиком вообще и заведите себе аккаунт на сервере бесплатных почтовых ящиков вроде www.mail.ru, www.cmail.ru, www.inbox.ru, www.chat.ru и т.д., либо не сохраняйте пароль на доступ к нему на жестком диске! Ведь хранится этот пароль в системном реестре и расшифровывается быстро и просто.

5. Если уж вы решили сохранять пароль на вход в Сеть на компьютере - используйте надежные программы для их хранения.

Например, программу Professional Dialer Желтухина Александра (можно загрузить с сайта http://pdialer.virtualave.net или с сервера www.freeware.ru) или SP Dialer Александра Панченко (можно загрузить с сайта http://spacreat.chat.ru).


При сохранении паролей с помощью этих программ они шифруются по достаточно сложным алгоритмам, но главное - с использованием уникальных данных, имеющихся только на вашем компьютере. Скажем, Professional Dialer использует для этого заводской серийный номер жесткого диска компьютера, а SP Dialer - номер первого логического диска. И та, и другая величина никогда не повторяются на различных компьютерах, а определить их без специальных программ не так и просто, к тому же используются они при шифровании весьма хитроумно. То есть - если даже злоумышленник похитит файлы, в которых эти "звонилки" сохранили пароли, он все равно не сможет ими воспользоваться без вашего компьютера. Более того - обе эти программы превосходно защищены даже от OpenPass - с ее помощью просмотреть пароли в этих программах не удастся! (Хотя это, впрочем, может сослужить и плохую службу - если вы решите перенести пароли на другой компьютер или поменяете жесткий диск, и вдруг обнаружите, что напрочь свои пароли забыли…) Да и HookDump ничего не даст при использовании Professional Dialer и SP Dialer - если, конечно, вы запрограммировали пароли в них до того, как HookDump

был запущен.

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

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

6.


Если вы все же верны стандартной "звонилке" Windows 9x - то задайте пароль на вход в Windows, не оставляйте его пустым!

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

7. Никогда не храните на счету много денег!

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

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

8. Регулярно меняйте свой пароль на вход в Интернет, а если это возможно - то и логин.

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

9. По возможности - защитите ваш компьютер от атак через Сеть.

Если вы это можете - установите файерволл (вроде AtGuard, Personal Firewall или другой). В крайнем случае попросите сделать это вашего знакомого, кто может. Если вы работаете в Windows95/98/Me, то правильно настройте параметры подключения к сети в Windows (пиктограмма "Сеть" в Панели Управления) - они должны выглядеть так, как на рис.24.2.


Удалите все компоненты, кроме Контроллера удаленного доступа, Клиента для сетей Microsoft и протокола TCP/IP. Впрочем, если вы удалите и Клиент для сетей Microsoft, то много не потеряете - не сможете пароли сохранять в реестре и делать кое-что еще. Ни в коем случае не открывайте доступ к файлам в соответствующем окне - иначе поживиться содержимым ваших дисков будет куда как проще.

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

10. Ну и, ясное дело, никому не сообщайте ваших паролей без излишней необходимости.

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



Рис.24.2. Пусть параметры сети в вашей Windows выглядят так.

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


Даже если он украдет файл .pwl и user.dat вашего профиля, все равно этого будет мало для похищения паролей. Только проследите, чтобы у вас в окне Панель управления - Система - Устройства - Устройства чтения компакт-дисков - Ваша модель CD-Rom'а - Свойства - Настройка не стояла галочка в пункте "Автоматическое распознавание диска" - иначе даже при запущенном screensaver'е можно будет вставить автозапускающийся компакт-диск в CD-Rom, а на этом диске поместить вирусы и трояны.

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

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

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

 

Как хранятся пароли в Windows 9x

Ниже будет рассказано, как осуществляется хранение паролей в операционных системах Windows версий 95/98.

Информация о названиях соединений, настройках соединений и логинах, под которыми осуществляется вход в Интернет, располагается в системном реестре Windows, в разделе HKEY_CURRENT_USER\RemoteAccess\Profile. Каждый подраздел этого раздела соответствует одниму соединению. Информация о телефонах провайдеров содержится в разделе HKEY_CURRENT_USER\ RemoteAccess\Addresses. Каждый параметр этого раздела соответствует одному соединению.

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


Имя этого файла совпадает с именем пользователя Windows. Если в операционной системе зарегистрировано несколько пользователей, то для каждого из них создается отдельный файл .pwl.

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

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

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


Библиотека макросов


В Интернете есть целый сайт, посвященный программам на VBA. Это - неоднократно уже упомянутая Библиотека Microsoft Office Extensions - http://www.microsoft.ru/offext. Там представлены макросы на любой вкус: и для набора текстов, и для бухгалтерской работы, и даже игры. На сайте программы Microsoft Office Extensions есть также специальный раздел "VBA-форум", в котором публикуются статьи специалистов по VBA как для начинающих, так и для опытных разработчиков.

Рис.6.5.

Знак качества

PC Magazine

">Всем программам, помещаемым в Библиотеку Microsoft Office Extensions, выдается специальный Знак Качества "Yes, Its Works" (рис.6.5). Его можно размещать на сайте программы, на коробках с дистрибутивом, в общем, где угодно! Так что если вы хотите, чтобы ваша программа имела престижную оценку от Тестовой лаборатории PC Magazine - обязательно отправьте ее в Библиотеку.

Но самое главное - если вы отправите в Библиотеку свою программу, то у вас появится шанс получить приз за нее, если ваше творение будет признано наилучшим. На сайте Microsoft Office Extensions проводится конкурс на лучшую разработку для Microsoft Office, и победителям этого конкурса выдаются вполне реальные призы, например, персональный компьютер или клавиатура с оптической мышью. Условия получения призов представлены на сайте конкурса. Фактически конкурс Microsoft Office Extensions является единственным местом в Сети, где разработчики бесплатных программ могут получить достойное вознаграждение за свой труд.

Когда вы наконец-то решите представить свою разработку на конкурс, то для начала посетите страницу http://www.microsoft.ru/offext/rules и загрузите с нее Лицензионное соглашение и Анкету разработчика, которые вам необходимо заполнить. Вы можете свободно изменять Лицензионное соглашение так, как вам заблагорассудится, но в Анкете должны указать точные данные. Помните, что оба этих документа будут распространяться вместе с вашей разработкой, так что не указывайте там слишком конфиденциальных данных.


Затем поместите вашу разработку, а также Анкету и Лицензионное соглашение в архив формата Zip и отошлите его в виде аттачмента по адресу offext@microsoft.com. В течение 24 часов вам должно придти потверждение получения вашей разработки, отправляемое автоматически. Если оно не пришло, то повторите отправку - видно, почтовые серверы сработали с ошибками.

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

Однако есть также и Пожелания Тестовой лаборатории PC Magazine разработчикам. Если представляемая программа им соответствует, то это повышает ее шансы на выигрыш в конкурсе.  И вот какие это пожелания:

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

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

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

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

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


Что такое API?


Для того, чтобы облегчить труд своих коллег и обеспечить всем программам для Windows универсальный интерфейс, программисты Microsoft создали такую вещь, как API - "Application Programming Interface".

Рис.5.1. Это окно вызывается

функцией API.

">Это - набор функций и процедур, которые могут наиболее часто использоваться программами: отображение дерева каталогов, поиск файлов, отображение стандартного окна с кнопками закрытия, минимизации и развертывания на весь экран и многих других. В итоге разработчик, создающий программу для Windows, не должен продумывать и разрабатывать специальные подпрограммы для отображения окна программы, окна для выбора папки и остальных подобных элементарных операций, - ему достаточно просто вызвать из библиотек kernel32.dll или user32.dll, содержащих функции и процедуры API, нужную ему функцию, а она уже все сделает за него сама. Таких функций и процедур много - порядка 600.

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

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

В языке Visual Basic for Applications (VBA) многие функции и процедуры API вызываются сами при выполнении программы интерпретатором, так что использовать их для отображения окон ввода и вывода текста, рисования на экране геометрических фигур и других простых действий совершенно нет необходимости, - их VBA вызывает по мере надобности, а программе на нем достаточно использовать соответствующие функции этого языка. Однако иногда возникает необходимость в некоторых действиях, для которых либо нет аналогов во встроенных функциях VBA, либо они работают нерационально или слишком медленно. Например, окно выбора папки с изображением дерева каталогов (рис.5.1) или программа поиска файлов (аналог на функциях VBA - объект "Application.FileSearch" - работает слишком медленно при больших количествах файлов). Для таких случаев в VBA предусмотрена возможность вызова функций API.

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


О некоторых из таких программ рассказано в следующей главе.

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

Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal kState As Long) As Integer

Sub Program()

GetAsyncKeyState (vbKeyShift Or vbKeyControl)

If GetAsyncKeyState(vbKeyShift) Then

Call macro1: Exit Sub

ElseIf GetAsyncKeyState(vbKeyControl) Then

Call macro2: Exit Sub

End If

Call macro3

End Sub

Первая строчка - это как бы "резервирование" функции API для использования в программе на VBA. Видно, что вызывается функция  GetAsyncKeyState из библиотеки (файла, содержащего программы, предназначенные только для использования другими программами) user32.dll, причем в эту функцию передается номер клавиши, а возвращает она целое число (а именно - 0, если клавиша с соответствующим номером не нажата, и -32767 или 1, если нажата). Любую функцию или процедуру, вызываемую из библиотек, не относящихся к VBA, необходимо так резервировать с помощью команды Declare.

Фраза vbKeyShift в команде - это заменитель кода клавиши Shift (его значение - 16), а vbKeyControl, как нетрудно понять - заменитель кода клавиши Control. Структура инструкций "If…Then", думается, ясна[9], а если нет - посмотрите в справке VBA. Команда Call перед именем макроса, как вы помните, означает его запуск.

В Интернете есть русские сайты, посвященные API[10]. Посетите их, чтобы узнать больше об этом наборе функций.


Что такое Unformat


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

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

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



"Декодер почты в неверной кодировке"


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

Для раскодирования текста надо просто вставить его в окно программы и нажать кнопку "Расшифровать". "Декодер" имеет просто превосходный интерфейс, который среди всех программ, описанный в этой

Рис.13.12. Декодер почты в неверной кодировке.

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

Загрузить программу можно с сайта разработчика www.postman.ru/~a12/decoder.



Динамическая карта сайта


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

Очень хорошим способом было бы размещение всей информации (например, краткого содержания остальных страниц сайта) на его первой странице так, чтобы она была доступна вся сразу, но без прокрутки. Например, так, как сделано на странице http://antorlov.euro.ru/resurses.htm (рис.22.8). При заходе на нее в левой части страницы пользователь видит список статей, а справа от списка - небольшое приветствие. Как только он просто наведет, даже не нажмет, курсор мыши на какое-либо название статьи в списке, то на месте приветствия появится краткий реферат статьи. Нажав же на название, он может загрузить архив со статьей. Если посетитель пожелает прочитать статью в online-режиме, то для этого на странице предназначены кнопки справа, ведущие на страницы, содержащие тексты статей.

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



Рис.22.8. Чтобы прочитать реферат статьи, не надо даже ни на что нажимать.

Достаточно просто подвести курсор к ее названию.

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

Как же это реализовать? Использовать возможности VBScript и Dynamic HTML. Скачайте страничку с вышеуказанного адреса и посмотрите, как она устроена. Графики там мало (только фон, портрет и кнопки навигации), так что ее дизайн без графики заметно не изменится.

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

Вначале - краткое пояснение. Тэг <div> выделяет из основного текста страницы какой-либо фрагмент, которому с помощью этого тэга можно задать какие-либо свойства, назначить скрипт для выполнения. "Onmouseover" - это команда Dynamic HTML, означающая, что другая команда, заключенная в круглые скобки после нее, будет выполняться при наведении курсора мыши на тот обьект, в тэге описания которого команда "Onmouseover" присутствует. Параметр "rowspan=NN" означает слияние между собой ячеек таблицы, расположенных в одной колонке, на протяжении NN строк таблицы. "Id" - это уникальное имя какого-либо обьекта, позволяющее управлять свойствами этого обьекта с помощью скриптов. Обьяснение назначения каждой строки кода - под ней.

<html><head><title></title></head><body>

Заголовок страницы.

<div onmouseover=(document.all.txt0.innerHTML= =document.all.privet.innerHTML)>



Верхняя часть страницы. При наведении курсора на нее текст в правой части таблицы меняется на приветствие.

</div><table width="100%">

Начало самой таблицы

<tr><td>&nbsp;</td>

Первая колонка, соответствующая названиям статей

<td rowspan=NN>

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

<div id=txt0>

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

</div>

<div style="display: none" id=privet>Приветствие</div>

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

<SCRIPT FOR=window EVENT=onload LANGUAGE="JScript">

document.all.txt0.innerHTML=document.all.privet.innerHTML;

</SCRIPT>

Этот скрипт исполняется сразу после окончания загрузки страницы и автоматически замещает изначальный текст тэга <div id=txt0> на приветствие, без каких-либо движений курсора.

<div style="display: none">

<div id=txt1>Реферат 1</div>

...

Основное "хранилище" текстов рефератов. Каждая строка типа <div id=txtNN>Реферат NN</div> содержит текст одного реферата. Поскольку перед этой группой строк стоит тэг <div style="display: none">, то посетителю содержимое этих строк не видно - они служат лишь "источником текстов": тексты рефератов берутся отсюда по мере необходимости.

</div></td><td>&nbsp;</td></tr>



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

<tr onmouseover=(document.all.txt0.innerHTML= =document.all.txt1.innerHTML)>

<td><a href="file1.zip">Статья 1 - загрузить</a></td>

<td><a href="stat1.htm">Прочитать</a></td></tr>

...

 

Основной блок сценария. Каждый такой фрагмент описывает одну строку таблицы, строка содержит название статьи, ссылку на ее архив, ссылку на online-вариант статьи, а также команду Dynamic HTML, выпол няющуюся при наведении курсора на строку и заменяющую содержимое видимого тэга <div id=txt0> содержимым соответствующего невидимого тэга <div id=txtNN>Реферат NN</div>.

Таких фрагментов должно стоять друг за другом столько, сколько рефератов и статей представлено на странице. Естественно, в каждом следующем фрагменте ссылки и параметр onmouseover должны быть другими, - document.all.txt0.innerHTML=document.all.txt2.innerHTML и т.д.

</table>

 Конец таблицы

<INPUT TYPE=button id=btn1 value="Прочитать все описания">

 

Кнопка, запускающая скрипт, помещенный ниже. Он выводит содержимое всех тэгов <div id=txtNN>Реферат NN</div> в отдельное окно - чтобы те, что привык читать длинные страницы со списками ресурсов сайта, могли бы прочесть все рефераты в привычной обстановке.

<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>

Заголовок скрипта. В нем указывается язык скрипта - VBScript.

Sub btn1_onClick()

Означает, что скрипт выполняется при клике на кнопку btn1.

Set nwnd=window.open

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

er="URL сайта"

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



nwnd.document.writeln ("<html><title>Статьи</title> <body><p>Список</p>")

Запись заголовка новой страницы.

nwnd.document.writeln (txtNN.innerHTML+"</p>&nbsp;<a href="+er+"fileNN.zip> Скачать </a>")...

Собственно выведение текстов рефератов в новое окно. Таких строчек должно быть столько же, сколько и рефератов. В каждой строчке должно быть указано соответствующее значение txtNN

и fileNN - для каждого реферата.

nwnd.document.writeln ("<p>Эти статьи доступны на <a href="+er+">сайте</a></p></body></html>")

Запись конца страницы.

End Sub

</SCRIPT>

Конец скрипта.

<div onmouseover=(document.all.txt0.innerHTML= =document.all.privet.innerHTML)>

Нижняя часть страницы. При наведении курсора на нее текст в правой части таблицы меняется на приветствие.

</div></body></html>

 Конец страницы.

Этот текст является основой, "костяком" страницы. При разработке сайта на эту основу можно добавлять графику, текст, другие скрипты. Так, поскольку Netscape Navigator и остальные браузеры не поддерживают многие возможности Dynamic HTML, то для них не стоило бы скрывать текст рефератов - они ведь тогда не смогут его отобразить! Выход - в небольшом скрипте:

 

<SCRIPT language="JavaScript">

if (navigator.appName == "Microsoft Internet Explorer")

{

document.write ("<div style=\"DISPLAY\: none\">");

}

</SCRIPT>

Этот скрипт нужно расположить на месте тэга "<div style="display: none">" перед текстами рефератов, и тогда они будут скрыты от посетителя тогда и только тогда, когда посетитель использует браузер Microsoft Internet Explorer, поддерживающий Dynamic HTML в полном обьеме. Однако, поскольку в настоящее время браузер Netscape Navigator и другие используется где-то в 5-10% случаев (данные по счетчику Hotlog на весну 2002 г., рис.22.9), то лучше использовать только реализацию для Microsoft Internet Explorer, а для Netscape Navigator, Opera и других браузеров сделать отдельную страницу с автоматическим переходом на нее, вставив для этого в самое начало страницы следующий скрипт:

<SCRIPT LANGUAGE="JAVASCRIPT">

if (navigator.appName != "Microsoft Internet Explorer")

{

window.location.replace("Страница_для_NN.htm");

}

</SCRIPT>

Для Netscape Navigator можно использовать традиционную структуру страницы без использования вышеописанных возможностей.



Рис.22.9. Статистика использования браузеров


DiskEditor


Это редактор содержимого диска, разработанный нашими соотечественниками - компанией ФизТехСофт. Он позволяет просматривать содержимое диска не средствами операционной системы, а "на физическом уровне" - побайтово, то есть смотреть, что записано в каждой электронной ячейке диска, в каждом его секторе. Вот, как, к примеру, выглядит корневой каталог логического диска - смотрите рис.8.11, или FAT - рис.8.12. Разобраться в хитросплетении кодов, конечно, сложно... Одно радует - операционная система делает это автоматически, а мы этого даже не замечаем.

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

Рис.8.11. Это - корневой каталог диска, отображенный в DiskEditor'е.

Именно так он выглядит на уровне дорожек, секторов и битов.

Рис.8.12. Святая святых диска - таблица FAT.

Вот что это такое в реальности...

В случае печальной необходимости восстановления винчестера можно запустить DiskEditor с дискеты. Имеется возможность создать загрузочную дискету специально для DiskEditor'а, для чего в комплекте редактора есть специальная программа, инсталлирующая на дискету сокращенную версию операционной системы PTS-DOS, позволяющую загрузиться с этой дискеты и работать с DiskEditor'ом. Шестнадцатиричное представление информации удобно использовать для восстановления программного кода загрузочных секторов диска, ну, а текстовое представление поможет вам все-таки вытащить нужную информацию с диска (рис.8.13). Правда, только представленную в формате простого текста или HTML и только за один прием из одного кластера (второй по всему диску искать придется), но все же хоть что-то[25]...

 

Рис.8.13. Слева - вот файл с так нужными мне данными, который был

на погибшем диске. Справа - DiskEditor нашел его на поверхности диска.

Скачать "DiskEditor" можно с сайта компании-производителя http://www.PhysTechSoft.com или с адреса http://perecod.chat.ru/discedit.rar. Эта программа помещается на дискету, и на ней еще остается место.



Для студентов и программистов


Пакет макросов, который называется очень просто - "Дополнения для Word", создан Петром Каньковски и доступен с адреса http://kankowski.narod.ru. Основное его предназначение - расширение возможностей пользователя Word, в особенности в плане составления документов, удовлетворяющих требованиям современных научных издательств и ВУЗов. Так, в комплекте пакета есть шаблоны "Реферат", "Заявление", позволяющие быстро оформить соответствующий документ, а параметры основного шаблона программы во многом соответствуют российским требованиям к оформлению научных публикаций. При установке программы большому расширению подвергается список автозамены - после установки пакета в него добавляются многие сокращения, позволяющие серьезно сэкономить время при наборе текста  (например, "док-т" заменяется на "документ", "эл-т" - на "элемент").

"Дополнения для Word", а также другие разработки Петра Каньковски особенно заинтересуют тех, кто создает программы на VBA, так как все они поставляются с открытым исходным кодом и подробными комментариями в нем. Особенно примечательны специальные компоненты для разработчиков, доступные так же с сайта Петра - "Пакет для разработчиков" и "Ice In Eyes" (доступный со страницы http://kankowski.narod.ru/dev.htm). Помимо действительно полезных макросов, например, набора математических функций, и коллекции красивых значков, программисты на VBA найдут в этих разработках и коды функций работы из VBA с API - программным интерфейсом Windows, позволяющие отображать диалоговые окна Windows, вызывать команды операционной системы. Одна из разработок представляет собой HTML-конвертор, позволяющий эффективно и качественно преобразовать файл Excel в web-страницу. Этот конвертор в отличие от встроенных в Office средств сохранения данных в формате HTML генерирует компактный и корректный код.

Весьма примечательным является "Справка" к пакету, содержащая, помимо его описания, еще и обширную подборку советов по работе с Word. С "Дополнениями…" поставляется методичка "Как написать реферат", которая может помочь студентам в учебной работе с излишне строгими преподавателями. К сожалению, у пакета есть и мелкие дефекты (например, отключение без запроса отображения горизонтальной линии прокрутки вместе с кнопками выбора вида документа, развертывание по умолчанию окна Справки на весь экран), однако они не умаляют его достоинств и не мешают с ним работать.

На сайте Петра есть подборка ссылок на Интернет-ресурсы, посвященные VBA, а также сборник полезных советов по работе с Word и использованию API.



Другие способы


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

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

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



Dynamic HTML


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

Внешний вид страницы, написанной на стандартном HTML, после загрузки страницы изменен быть не может. Для того, чтобы сделать страницу на чистом HTML после ее полной загрузки хотя бы немного по-другому выглядящей, требуется ее полная перезагрузка. То есть - страница не может быть интерактивной: не может изменяться, реагируя на действия посетителя. Для возможности изменять внешний вид web-страницы без ее перезагрузки, в ответ на определенные действия пользователя, и был придуман Dynamic HTML.

Чтобы возможности Dynamic HTML могли быть использованы, web-страница должна просматриваться в браузере, способном обрабатывать команды Dynamic HTML. На сегодняшний день все последние версии браузеров Microsoft Internet Explorer (начиная с версии 4.0) и Netscape Navigator Dynamic HTML поддерживают[48].

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

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

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

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

Для изменения какого-либо элемента web-страницы нужно присвоить этому элементу идентификатор (попросту включить в его тэг параметр "id="оригинальное имя""), и затем с помощью команды изменить какое-либо свойство этого элемента. К примеру, для замены какого-либо рисунка web-страницы на другой нужно в тэг рисунка включить идентификатор - например, "<img src="picture1.jpg" id=pict>", а затем в скрипт или описание события элемента - команду: "pict.src="picture2.jpg"" (то есть установить значение свойства "источник" - src - элемента pict как picture2.jpg). При выполнении этой команды исходный рисунок picture1.jpg будет замещен новым - picture2.jpg. Как можно видеть, такая возможность отrрывает очень широкие перспективы перед web-дизайнерами. Можно, к примеру, организовать "галерею": посетитель нажимает название картины и ему тут же, без перехода на другую страницу, показывается эта картина.

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


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

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

Set abzaci=document.all.tags("p")

abzaci(0).align="right"

Эти две строки создают коллекцию всех тэгов абзацев и обращаются ко второму ее элементу - второму абзацу, присваивая значение "right" параметру "align" его тэга "<p>". Нумерация элементов всех коллекций начинается с нуля.

Следует помнить, что при присваивании элементам страницы каких-либо свойств можно использовать лишь доступные свойства. Нельзя, например, непосредственно присвоить тэгу "<p>" или "<div>" свойство color. Для этого нужно изменить свойство style элемента "<p…>", например, командой "имя_элемента.style.color="red"", так как сами тэги "<p>" и "<div>" свойство color не поддерживают.

Для изменения текста на web-странице следует использовать специальное свойство обьектов, могущих содержать текст - innerHTML. Например, следующая команда заменит текст тэга "<div id=asdf>Старый текст</div>" новым текстом: "asdf.innerHTML="<b>Новый текст</b>"". При этом новый текст может содержать тэги HTML, как, например, здесь - "<b>", они будут интерпретироваться так же, как если бы были в документе изначально.



Команды Dynamic HTML можно включать как в скрипты, так и в текст web-страницы. В последнем случае они должны быть включены в обработчики событий элементов страницы. С каждым элементом web-страницы могут происходить различные события: на него могут навести курсор мыши, его могут кликнуть, его могут выделить и т.д. При каждом совершении того или иного события может быть выполнен скрипт или какая-либо команда Dynamic HTML. Вот, к примеру, как должна выглядеть команда, которая при наведении курсора мыши на рисунок производит вышеописанную замену текста: "<img src="picture.jpg"

onmouseover=(asdf.innerHTML="<b>Новый текст</b>")>".

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

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

Согласно статистике, собираемой с многих сайтов Интернета, более 99 процентов пользователей Всемирной Сети используют современные браузеры, поддерживающие языки скриптов и таблицы стилей. Поэтому использование новых технологий создания web-страниц, таких, как Dynamic HTML, VBScripts и JavaScripts и CSS, вполне оправдано. Для тех же посетителей, которые не пользуются современными браузерами, можно при желании сделать отдельный вариант сайта с использованием только стандартных средств HTML.


Exclude Symbols


Программа "Exclude Symbols" Вардугина Александра из Кемерова является многофункциональным пакетным обработчиком текстовых файлов. Как видно из рисунка 19.11, программа поддерживает четыре кодировки - Windows-1251, KOI-8, Dos866 и Iso-8859-5, позволяя переводить текстовые файлы из одной кодировки в другую. Допустима обработка до пятнадцати файлов за один раз: файлы обрабатываются последовательно. В программе есть также ряд весьма интересных функций, например, превращения всех символов в файле в заглавные или, наоборот, в строчные, удаления пустых строк из текста, замены групп пробелов табуляцией, замены символов в обрабатываемых файлах.

Обращает на себя внимание интересная возможность автоматического определения кодировки документа. Делается это по довольно очевидному алгоритму. Вот пример. В русском языке есть союзы "и" и "в", но нет ни союзов "Ё" и "ў" (символы кодовой страницы Windows-1251, имеющие такие же коды символов, как и символы "и" и "в" в кодовой странице Dos866), ни союзов "Й" и "Ч" (символы кодовой страницы Windows-1251, имеющие такие же коды символов, как и символы "и" и "в" в кодовой странице KOI-8). Поэтому ясно, что текст, открытый как имеющий кодировку Windows-1251, в котором встречаются одиноко стоящие символы "и" и "в", скорее всего, и принадлежит кодовой странице Windows-1251, если же в нем встречаются одиноко стоящие символы "Ё" и "ў", то это, скорее всего, текст в кодировке MS-DOS, а если в этом тексте есть одинокие символы "Й" и "Ч", то, наверное, текст написан в кодировке KOI-8. На подобных принципах основан и способ автоматического определения кодировки документа в программе "Exclude Symbols". Поэтому можно, указав в качестве обьекта для перекодирования группу файлов, не особенно беспокоиться о кодировке каждого из них - достаточно просто указать ту кодировку, которую нужно получить на выходе, а в качестве исходной поставить значение "auto". Программа сама определит для каждого обрабатываемого файла его исходную кодовую страницу, решит, нужна ли ему конвертация в другую кодировку и при необходимости выполнит такую конвертацию.

Обращает на себя внимание оригинальный и удобный нестандартный интерфейс программы. Загрузить "Exclude Symbols" можно с адреса http://perecod.chat.ru/exsym.rar.



Файловая система


Каждый пользователь Windows может провести небольшой интересный эксперимент.

Перейдите в корневой каталог какого-нибудь логического диска, например, С, выделите там все папки и файлы и посмотрите совокупный обьем хранящейся в них информации с помощью пункта "Свойства" меню правой кнопки мыши. Если вы работаете в Windows98, обратите внимание на число в окне свойств выделенных папок, после которого стоит слово «занято», - эта величина показывает размер физически занятого этими папками пространства на диске. В Windows2000/XP соответствующая строчка так и гласит - "на диске: столько-то байт". Ну, а в Windows95 посмотрите в окне "Мой компьютер" обьем занятого пространства диска, точно так же вызвав пункт «Свойства диска» (рис.8.1).

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

К примеру, на диске С по данным окна "Мой компьютер" и соответствующей строчки в окне свойств совокупности размещенных на нем папок и файлов было занято 1.83 гигабайт, а обьем всего содержимого диска - 1.44 гигабайта (рис.8.1). Почему так? Куда делись еще 0.39 гигабайт? А ведь этого обьема несколько лет назад хватило бы на небольшой жесткий диск...

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

Рис.8.1. Неодинаковые данные.

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

В разных операционных системах файловая система устроена по-разному. В этой главе будет рассмотрена система FAT, использующаяся в MS-DOS, Windows95 и Windows98 в качестве основной файловой системы, так как она является наиболее просто устроенной и на ее примере легко продемонстрировать основные принципы организации данных. Структура файловых систем, использующихся в качестве основных в операционных системах Unix, Linux, Windows NT/2000/XP другая, но их устройство - тема отдельной книги.



Фидошники


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

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

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

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

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



Рис.16.1. В FidoNet можно даже поиграть...

Во всяком случае, хотя бы отчасти представите себе, как вы будете там жить.

Если вы хотите хотя бы приблизительно посмотреть, каково это - быть "фидошником", поиграйте в превосходную игру Юрия Нестеренко, которая так и называется - "Fido". Свежую версию вы можете скачать с сайта http://yun.complife.net, а если он окажется недоступен, то предыдущая версия лежит на http://perecod.chat.ru/fido.rar. В Интернете есть сайты, на которых можно найти полиси FidoNet (договоренности составляющих этой сети, согласно которым они работают), статьи о Fido, юмор и словари "фидошного" диалекта.Конференции Fidonet

(основное средство "фидошного" массового общения) доступны и через Всемирную Сеть - например, с сайта http://www.fido-online.com.


Folder Size Shell Extensions (DFolder)


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

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

Создана эта бесплатная программа французом Лоренцом Бергером, а загрузить ее можно с адреса http://perecod.chat.ru/ dfolder.rar.



Функция XOR


1 вход

2 вход

Результат

0

0

0

1

0

1

0

1

1

1

1

0

Иными словами, это некое подобие функции Или[15], которая в отличие от настоящей Или возвращает 0, если на входы было подано сразу две единицы.

А теперь - приглядитесь повнимательнее и обратите внимание на интереснейшую вещь: если на вход функции Xor подать значение 1 входа и результат, то получится значение 2-го входа! И то же самое - со значением 2 входа и результатом: получается значение 1-го входа. Следовательно, зная итог функции Xor и значение на любом из входов, можно получить значение на другом входе, то есть функция Xor обратима.

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

11010101010110101001101010111110101010111110101010001…

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

10010101010011

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

11010101010110101001101010111110101010111110101010001…

10010101010011100101010100111001010101001110010101010…

И теперь - шифруем: применяем к этим двум последовательностям функцию Xor:

01000000000101001100111110000111111111110000111111011…

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

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

Функция Xor, разумеется, присутствует и в VBA. Вот пример кода, реализующего возможности шифрования с ее помощью.

Sub encrypt()

Dim a, b, c, d As String

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

a = "secret text from kgb agent from newyork rezidentura…"

Пароль: может запрашиваться от пользователя:

b = "password"

Итог шифрования:

c = ""

Узнаем длины каждой из строк - пароля и исходного текста:

lentext = Len(a)

lenpass = Len(b)

Собственно шифрование:

For cn = 1 To lentext

В этой строке попробуйте разобраться самостоятельно. Здесь выполняется функция Xor с каждым символом исходной строки и соответствующим символом пароля, как бы "повторенным" на всю длину исходного текста. Mid берет из середины строки символ, Asc - превращает его в ASCII-код, Str - превращает число в строку, Trim - удаляет пробелы:

 

d = Trim(Str(Asc(Mid(a, cn, 1)) Xor Asc(Mid(b, ((cn - 1) Mod lenpass) + 1, 1))))

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

 

Select Case Val(d)

Case 0 To 9

d = "00" + d

Case 10 To 99

d = "0" + d

End Select

c = c + d

Ну вот и все, и так - с каждым символом из исходной строки:

Next cn

Теперь в переменной с - шифрованная строка, каждой исходной букве соответствует 3 символа. Ее можно записать, например, в документ:

Selection.TypeText Text:=c



End Sub

 

А теперь - программа расшифровки данных. Точно так же разберем ее по строкам.

Sub decrypt()

Dim a, b, c, d As String

Строка для расшифровки:

c = "003004016001018027082016021025007083017029029009"

Пароль:

b = "password"

Итог расшифровывания:

a = ""

Узнаем длины каждой из строк:

lentext = Len(c)

lenpass = Len(b)

Собственно расшифровывание (попробуйте разобраться самостоятельно в структуре команды - это не так сложно):

 

For cn = 1 To lentext Step 3

a = a + Chr(Val(Mid(c, cn, 3)) Xor Asc(Mid(b, (Int(cn / 3) Mod lenpass) + 1, 1)))

Next cn

В итоге в переменной a - расшифрованная строка, ее можно записать в любое место - в документ, к примеру:

Selection.TypeText Text:=a

End Sub

 

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


Графика


В самом документе HTML не может быть графических обьектов, так как язык HTML - язык оформления текста, что следует даже из его названия (HyperText Markup Language). Но графические обьекты могут быть вставлены в документ с помощью тэга "<img src="...">", и тогда они будут отображаться при просмотре web-страницы через браузер. Кроме того, несложные графические файлы могут быть конвертированы в специальный формат VML и вставлены в web-страницу, однако VML способен воспринимать только браузер Microsoft Internet Explorer версии 5.0 и выше, как, впрочем, и web-архивы - файлы, в которых с помощью использования стандарта MIME обьединяются в один файл web-страница и все размещенные на ней рисунки и другие обьекты .

В качестве графики могут выступать только файлы в формате Gif и Jpeg, и, для самых новых моделей браузеров - Png. Файлы остальных типов через браузер не могут быть просмотрены.

Для помещения картинки на web-страницу необходимо указать в тэге "<img src="...">" путь к ее файлу. Если графический обьект располагается в той же директории, что и web-страница, на которой он размещен, то в его тэге "<img src="...">" достаточно указать только название файла. Если он расположен в одной из папок сайта, на котором находится web-страница, то можно указать относительный путь к нему - типа "<img src="images/ris.gif">". Если же рисунок, включаемый в web-страницу, располагается на другом сайте, то этом случае в тэге "<img src="...">" должен быть указан полный адрес рисунка - вида "<img src="http://www.site.ru/images/ris.gif">". При просмотре страницы браузер сам загрузит нужную графику с указанного адреса. Полный адрес рисунка можно указывать и в двух других случаях.

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


Для создания графических обьектов можно использовать любой редактор графики - от Adobe Photoshop до MS Paint. Если редактор не поддерживает форматы Gif и Jpeg, то можно воспользоваться конвертирующими программами или функциями конвертации других программ - вроде MS Photo Editor, открыв в нем файл, сделанный в редакторе, и сохранив в формате Gif или Jpeg. Весьма неплохие возможности по конвертации графических файлов предоставляет программа ACDSee.

Формат Gif рекомендуется применять для рисунков, имеющих много областей, залитых одним цветом (наподобие рисунков из коллекции Clipart пакета Microsoft Office). В файле в формате Gif происходит сжатие информации о рисунке путем замены в последовательности одинаковых точек изображения информации о каждой точке информацией о виде точки и о их количестве. К примеру, вместо указания "красная точка, красная точка, красная точка, красная точка" будет использовано указание "четыре красные точки". Такое сжатие происходит только со строго горизонтальными линиями изображения.

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

Некоторые цвета в изображении формата Gif могут быть обьявлены "прозрачными". Это значит, что при вставлении такого рисунка в web-страницу на месте областей, закрашенных этим цветом, будет виден фон страницы. Чтобы сделать в файле Gif какой-либо цвет прозрачным, достаточно воспользоваться входящим в состав Microsoft Office графическим редактором PhotoEditor.


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

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

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

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

Вот, к примеру, исходная картинка (рис.17.3), файл Jpeg, сохраненный с качеством в 50 процентов (рис.17.4), и файл Jpeg, сохраненный с качеством в 10 процентов (рис.17.5).





Рис.17.3. Исходная картинка.



Рис.17.4. Файл Jpeg, сохраненный с качеством в 50 процентов.



Рис.17.5. Файл Jpeg, сохраненный с качеством в 10 процентов.

При этом первый рисунок имеет размер 142 килобайта, второй - 17, а третий - 7. Как можно видеть, при утере до половины всей информации о мелких деталях изображения его видимое качество заметно не ухудшается, а размер сокращается во много раз. Именно это и позволяет использовать изображения в формате Jpeg, сжатые на 60-70 процентов, в оформлении web-страниц. Поэтому обязательно оптимизируйте графику, сохраняя или пересохраняя размещаемые в Web рисунки в jpeg-файлах с качеством 40-50%.

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

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

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

Существует множество программ для создания графических обьектов в форматах Gif и Jpeg. Но, к сожалению, на сегодняшний день нельзя назвать ни одной программы, которая сочетала бы в себе многофункциональность и удобство для пользователя. Сложную графику хорошо делать в Adobe Photoshop, но для его освоения придется потратить немало часов.В качестве элементарного средства можно использовать MS Paint, а затем изображение, созданное в нем, конвертировать в нужный формат с помощью Microsoft Photo Editor.

Кроме того, рисунки, созданные в Microsoft Word, будут отконвертированы в форматы Gif и Jpeg при сохранении документа в формате HTML. Таким образом конвертор HTML редактора Microsoft Word можно использовать для преобразования в форматы Gif и Jpeg внедренных в документы рисунков. Конвертор HTML сам выберет лучший формат для каждого рисунка, подберет степень оптимизации.


Хакеры


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

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

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

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

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

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



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

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

Весьма красивую и полную статью о том, кто такой хакер на самом деле, вы можете найти на сайте Антона Секачева - http://www.sekachev.ru, далее - по ссылкам. А принадлежит она перу Эрика Реймонда, человека, довольно известного в мире хакеров. Возможно, прочитав ее, вы вдруг обнаружите, что всю свою жизнь подсознательно следовали принципам хакеров и ваше выработанное в трудных схватках с судьбой мировоззрение поразительно похоже на то, что описано в этой статье. Что ж - в этом случае остается только вас поздравить: возможно, скоро вы найдете тех, с кем сможете вместе идти дальше по долгому и трудному пути совместного бескорыстного познания окружающего мира.


Хранение скрытой информации в документе


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

Можно, конечно, использовать Свойства документа (объект "Dialogs(wdDialogFileSummaryInfo).Comments"), но лучше сделать такую запись с помощью добавления специальной переменной прямо в документ Word:

 

ActiveDocument.Variables.Add Name:="x1", Value:="Текст"

ActiveDocument.Variables.Add Name:="x2", Value:=12

Прочитать эти переменные можно будет с помощью похожей функции:

y1 = ActiveDocument.Variables("x1").Value

y2 = ActiveDocument.Variables("x2").Value

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

For Each per In ActiveDocument.Variables

Debug.Print per.Name + " " + per.Value

Next per

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



Или о проблемах понимания русского языка…


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

Строчки, подобные той, что вас так привлекла в заголовке, наверняка иногда встречались вам в путешествиях по Интернету или при чтении электронной почты. Как вы наверняка знаете, такое возникает из-за неправильно подобранной кодировки для чтения текста, - в Internet Explorer даже есть меню специальное: Вид-Вид кодировки (если использовать пятую версию, а в более старых может быть и в других меню). Вы также наверняка пробовали открывать в программах для Windows файлы с текстом, созданные в старых программах для Dos, например, набранные в Norton Editor, и почти всегда возникало затруднение с их чтением: текст отображался примерно так, как на рис.13.1, и что-либо понять было просто невозможно.

Рис.13.1. Файл, набранный в Norton Editor и открытый в Блокноте

В чем же тут дело? Что такое "кодировка"? Почему их столько много, и все они разные? И, наконец, каким образом можно решить их проблему - не запускать же каждый раз Norton Editor, чтобы прочитать и напечатать свои старые файлы?



Интернет-магазин


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

К примеру, такой "виртуальный магазин" аудиокассет сделан на странице http://www.harchikov.ru/cass.php (рис.19.5). Посетитель может просмотреть описания кассет и отметить заинтересовавшие его предложения, поставив галочку в checkbox'ах. В низу страницы расположен раздел оформления заказа - сверившись с суммой (рассчитываемой небольшим сценарием на javascript и выводимой средствами Dynamic HTML в соответствующей строке формы), посетитель должен ввести свои контактные данные и отправить заказ, нажав соответствующую кнопку.

Страница "магазина" содержит форму с заголовком <FORM METHOD="post" ACTION="http://www.harchikov.ru/zakaz.php" NAME="mainform"> - то есть PHP-программа, обрабатывающая форму, находится в файле zakaz.php на сайте www.harchikov.ru (и именно на эту страницу произойдет переход после нажатия кнопки отправления заказа на исходной странице - "Отправить заказ"), а в адресной строке переменные отображаться не будут. Поскольку программы на PHP, чтобы быть исполненными, должны содержаться в какой-либо web-странице, то команда отправки почты содержится в файле zakaz.php. Вот как выглядит PHP-сценарий, формирующий письмо с заказом и отправляющий его администратору сайта:

 <?php

$zak=" \n";

if ($RNS == True){$zak="$zak Русские не сдаются!  \n"; }

if ($ZAR == True){$zak="$zak За Родину  \n"; }

if ($PRP == True){$zak="$zak Песни пролетариата  \n"; }

...

mail ("mail@harchikov.ru", "Заказ на кассеты", "С адреса $email с контактными данными $cont пришла заявка на приобретение кассет: $zak. Отправитель пользовался браузером $HTTP_USER_AGENT, работал с IP-адреса $REMOTE_ADDR", "From: $email\nReply-To: $email\nContent-Type: text/plain; charset=windows-1251");


?>



Рис.19.5. Интернет-магазин - выбирай и заказывай. А строили его всего 5 минут.

Команда, собственно отправляющая письмо, стоит последней - это mail (описание читайте выше). Так как весьма желательно, чтобы получатель письма мог сразу начать выполнять заказ, не тратя время на расшифровку письма, то с помощью небольшого фрагмента кода на основе данных о значениях переданных переменных создается строка с построчным перечнем полных названий заказываемых товаров (чтобы не было проблем с восприятием интерпретатором кириллических символов в качестве имен переменных, имя каждого checkbox'а содержит только латинские буквы, например, PVS - <INPUT NAME=PVS TYPE=checkbox>) - и уже эта строка помещается в письмо. В результате тот, кто обрабатывает заказы, получит аккуратный список заказанных товаров и сведения о заказчике.

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

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

Упомянутый сценарий Интернет-магазина подробно рассмотрен в книге "PHP: полезные приемы".


Исследуем компьютер


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

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

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

Так что - в путь!



Из мира Интернета


*       *       *

·

На сайте http://karamurza.chat.ru

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

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



Из мира Интернета


*       *       *

·

Сайт "Песни Русского Сопротивления", расположенный по адресу www.harchikov.ru

- первый в RuNet'е крупный музыкальный проект патриотической направленности. На нем представлены:

1. Альбомы Александра Харчикова - известного исполнителя патриотических песен, композитора и поэта, неоднократного лауреата конкурса "Песни Сопротивления".

2. Песни в исполнении Ивана Баранова, победителя конкурса "Песни Сопротивления" в 1999 и 2001 годах.

3. Альбом "Посторонним вход запрещен" группы "28 панфиловцев". Основные темы альбома - Родина, Долг, Воинская честь.

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

·           На сайте "Портал советской музыки", расположенном по адресу http://sovmusic.narod.ru, представлены MP3-записи песен советского времени, в основном 30-40-х годов. Встречаются раритетные записи, например, первая версия гимна СССР, составленная в 1938 году.

*       *       *



"Яблочники"


Если наш, российский "компьютерщик" приедет в США, то его наверняка поразит одна вещь. В то время как в России гонка процессоров идет между Intel и Amd, операционных систем - между Linux и Windows, то, придя в американский университет, вы в 30% случаев обнаружите на столах интернет-классов компьютеры, в которых зачастую нельзя даже засунуть принесенные вами дискеты, а если окажется можно, то все равно они работать не будут. Еще эти компьютеры разрабатываются только одной фирмой во всем мире, а на каждом из них виднеется эмблема с надкушенным красочным яблоком. Это Macintosh - компьютер, который, по мысли своих создателей, является настоящим другом и помощником человеку и умеет разговаривать с ним на понятном языке.

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

Однако есть в нашем мире люди, которые не мыслят свою жизнь без Macintosh'ей - как мы не мыслим свою без PC. Они, конечно, не являются чем-то вроде секты или поклонников культа, но представляют из себя довольно сплоченное общество. Во многом с Macintosh'ами работают те, кто занят в издательском деле (для таких случаев это просто идеальный компьютер), но есть и просто - любители. Их нередко можно встретить в web-конференциях, где они не дают покоя ни любителям Unix, ни любителям Windows…

Хотите - прогуляйтесь по сайтам для поклонников Macintosh'ей. Это - и "Все для Macintosh" - http://www.mymac.ru, и Мак-почта - http://macbox.ru, и даже раздел "MacOS" на www.freeware.ru. Если хотите услышать Macintosh'еманов в реальном времени - посетите Форум Macintosh на том же http://www.mymac.ru, только учтите, что иной раз баталии там разгораются нешуточные.


*         *         *

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


Язык Интернета


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

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

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

Все тэги HTML заключаются в угловые скобки: "<тэг>". Это и есть признак тэга - браузер интерпретирует то, что заключено в угловые скобки, как директивы отображения страницы, если это возможно, и не отображает их самих на экране[45]. Регистр букв в наименовании тэга значения не имеет.

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

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

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



Экраны на жидких кристаллах


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

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

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

Называются эти экраны жидкокристаллическими - по основному их компоненту. По-английски это название звучит как Liquid Crystal Display, или сокращенно LCD. А действует он так.

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

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

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

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

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

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

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


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

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

Для просмотра изображения на жидкокристаллическом экране не обязательно иметь подсветку. Можно использовать и отраженный свет. Только в этом случае дальний от экрана поляризационный фильтр следует заменить зеркалом. В этом случае вне действия электростатического поля свет пройдет через наружный фильтр, повернется в слое жидких кристаллов на 90 градусов, отразится от зеркала и снова пройдет через кристаллы, и в результате развернется на 180 градусов, что позволит ему вновь пройти через наружный фильтр. А при наличии на кристаллах электростатического поля этого не произойдет.



Рис.15.1. Один элемент жидкокристаллического экрана

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

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


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

Нетрудно понять все трудности при разработке и производстве жидкокристаллических дисплеев. Во-первых, сделать матрицу с миллионами ячеек с одинаковым качеством нелегко - ведь экран с разрешением 1024*768 точек имеет 786432 точки-пиксела, каждый из которых состоит из трех единиц - красного, зеленого и синего субпикселов. То есть всего в экране такого разрешения должно быть 2359296 (т.е.больше двух миллионов!) жидкокристаллических ячеек. Добиться, чтобы они все полноценно работали, очень трудно - наверняка некоторые из ячеек окажутся дефектными и не будут пропускать свет. Поэтому жидкокристаллические мониторы с большим размером экрана делают из двух-трех отдельных матриц, соединяя их вместе.

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

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


Как хранятся данные?


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

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



Каталоги


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

А хранится она в каталогах.

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

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

В файлах каталогов, созданных в Windows95 и более старших версиях этой операционной системы, в каждом дескрипторе хранится как длинное имя файла, так и короткое - вида progra~1.exe, которое находится в том же месте дескриптора, что и в каталогах, созданных в MS-DOS. Таким образом обеспечивается возможность работы с созданными в Windows каталогами в старых операционных системах - эти системы смотрят в файл каталога и считывают оттуда лишь короткие имена файлов, а системы Windows умеют считывать из дескрипторов еще и длинные имена. Естественно, что при копировании или перемещении средствами MS-DOS файлов, созданных в Windows, длинные имена теряются, так как в этом случае операционная система MS-DOS копирует данные о файлах из одного файла каталога в другой, а так как она не умеет читать ту часть дескрипторов этих файлов, в которой записаны их длинные имена, то она их и игнорирует.

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




Рис.8.3. Пустая папка тоже

занимает место.

Рис.8.4. Если хотите убедиться, что каталог ре-ально из себя представляет файл с информацией об именах и физическим размещении других файлов на диске, посмотрите отчет программы Norton SpeedDisk. Она показывает, какие файлы записаны в том или ином кластере. Вы обязательно найдете записи вроде тех, что здесь - а это названия папок, не обычных файлов!

">Так как каталог - это обычный файл, то пустой каталог все равно будет занимать место на диске. К примеру, создайте на пустой дискете пустую папку и посмотрите обьем дискеты. На ней будет занято 512 байт (рис.8.3). Это и есть обьем файла, являющегося этим каталогом. Или, если у вас установлен пакет программ Norton Utilities для Windows, посмотрите на отчет программы Norton Speed Disk (рис.8.4), - в нем показывается покластерная структура жесткого диска и указываются, какие файлы расположены в каждом кластере. В отчете вы увидите, что некоторые кластеры содержат файлы с именами каталогов - то есть файлы самих этих каталогов.


Кэширование


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

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

Рис.8.5. В операционных системах Windows95/98 здесь можно указать, сколько путей к папкам и файлам операционная система запомнит и бу-дет потом использовать.

">считать его, а потом повторить этот алгоритм сначала, до тех пор, пока не доберешься до каталога, непосредственно содержащего файл... Ясно, что весь этот процесс - "поход" в корневой каталог и затем по дереву каталогов, постоянное обращение то к файлам-каталогам, то к FAT, а лишь затем считывание самого файла - занимает немало времени. Поэтому операционные системы используют специальные методики для упрощения и ускорения работы с файлами. Самая простая и распространенная - это кэширование, то есть помещение часто используемых данных в оперативную память. Так, всегда кэшируется FAT, а также информация о структуре каталогов и располагающихся в них файлах. В операционных системах Windows95/98 задать количество кэшируемого материала можно в окне "Файловая система" вкладки "Быстродействие" пункта "Система" Панели управления (рис.8.5).


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

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


Кластерная организация


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

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

Чтобы решить эту проблему, был придуман принцип кластерной структуры жесткого диска и использования специальной таблицы размещения файлов. При использовании этого принципа весь жесткий диск как бы делится на множество кусочков равного обьема - кластеров, каждый из которых содержит одинаковое число секторов.
В начале диска размещается особая область с данными - FAT-таблица (от File Allocation Table - таблица размещения файлов), в которой записывается, в каких кластерах находится содержимое каждого находящегося на жестком диске файла. Например, примерно так: "файл записан в 121, 122 и 123 кластерах".

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

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


Ключи конфигурации


Рис.14.16. Статистический центр систе-мы. Хотите посмотреть эти данные? Не лазьте в реестр - запустите Системный монитор, и увидите то же самое.

">HKEY_CURRENT_CONFIG - это описание текущей конфигурации оборудования компьютера. Этот раздел является отражением одной из ветвей раздела HKEY_LOCAL_MACHINE\Config, в котором описаны все созданные в системе конфигурации оборудования. Сами эти конфигурации создаются с помощью диалогового окна Панель управления - Система - Конфигурации. Когда конфигурация меняется, меняется и содержимое раздела HKEY_ CURRENT_CONFIG - он начинает "отражать" уже другую ветвь раздела HKEY_LOCAL_MACHINE\ Config.

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

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



Кодовая страница


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

Когда компьютерная программа получает из какого-нибудь источника компьютерные же данные, в которых содержится текст (читает текстовый файл с диска, с CD-ROM'а, получает текст из Интернета), то она выделяет из получаемого массива данных последовательности по восемь бит и воспринимает их как байты. Каждому байту, то есть каждой последовательности из восьми нулей и единиц соответствует определенный символ. Какой же конкретно? А вот это узнается программой из так называемой "таблицы символов", которая знакома абсолютно каждой программе, могущей отображать текст и используется программой для такого отображения.

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

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

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

Но с помощью восьми бит можно закодировать до 256 символов - в самом деле, каждый бит может иметь значение 0 или 1, то есть одно из двух, следовательно, всего различных восьмибитовых последовательностей может быть 2*2*2*2*2*2*2*2=28=256. Английских букв - 26, их же, но заглавных - столько же, цифры и служебные символы вроде запятой, точки займут еще ну, мест 50, если по максимуму. Поэтому для возможности адаптации операционных систем к различным другим алфавитным системам (то есть, в применении к русскому языку, русификации программ[29]) в качестве строгого международного стандарта было принято строгое соответствие отображаемым символам лишь первых 127 последовательностей восьми бит - то есть первой половины кодовой страницы, а вторую половину отдали "на откуп" производителям регионального программного обеспечения и информационных ресурсов - чтобы они размещали в ней свои алфавиты.





Рис.13.2. Визуальное отображение кодовой страницы -

программа "Таблица символов"

Узаконенные международными стандартами коды первых 127 символов кодовых страниц, которые должны быть едиными во всех таких страницах, получили название "стандарта ASCII". Эти символы также могут кодироваться всего семью битами информации. Первые 32 кода (от 0 до 31) были назначены управляющим символам (например, символ с кодом 13 - это символ конца абзаца), остальные кодировали строчные и прописные латинские буквы, цифры, знаки препинания и математических операций. Коды второй половины этой 256-символьной кодовой страницы получили название "расширенного стандарта ASCII". Ими кодировались, как уже было сказано выше, национальные алфавиты, а также символы псевдографики, математические и некоторые другие символы. Первый бит кода символа второй половины кодовой страницы имел значение "1", в то время как для первой половины он равнялся "0". Вы можете легко отобразить на экране символ с желаемым кодом, набрав, например, в Word его код (десятичный на цифровой клавиатуре, с нулем вначале) при удерживаемой клавише Alt.

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


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

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

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


В то время как на


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

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

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

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



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

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

Выходы были. Первый, самый тогда распространенный - писать письмо транслитом, latinskimi bukvami. Некрасиво и плохо читаемо, зато надежно - дойдет в исходном виде всегда. Но, поскольку все же не все почтовые сервера были семибитные, была создана специальная кодировка для электронной почты, которая отличалась тем, что на места, соответствующие кодам символов, большим 127, были поставлены русские символы, похожие по звучанию на английские буквы на местах, соответствующих кодам символов, меньших на 128. Иными словами, в этой новой кодировке коды 225, 226, 227, 228 соответствовали символам "а", "б", "ц", "д", которые при семибитном преобразовании перешли бы в коды 97, 98, 99, 100, соответствующие английским буквам "a", "b", "c", "d".


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

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

KOI-8 использовалась не только Unix-системами. Так, любой пользователь персонального компьютера под управлением MS-DOS или Windows, имеющий выход к электронной почте, должен был иметь у себя программу для получения и отправки сообщений, умеющую работать с KOI-8. Выход к системе электронной почты был возможен и с компьютеров фирмы Apple - с Макинтошей, однако в операционных системах для этих компьютеров использовалась своя, оригинальная русская кодировка символов, отличающаяся от всех остальных. Для того, чтобы облегчить переписку между пользователями разных типов компьютеров и операционных систем, KOI-8 была принята как универсальная кодировка, и любая почтовая программа была обязана уметь читать и отправлять сообщения в этой кодировке.


Компьютерная социология


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

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

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

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



Красоты из глубин Word


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

Эту проблему успешно решает программа "Генератор иконок". Впрочем, вернее ее бы можно было бы назвать "Вытаскиватель иконок". Дело в том, что Microsoft Office содержит в себе, в своих исполняемых файлах и библиотеках около 3000 значков. Эти значки по умолчанию назначены разным командам, большую часть которых обычный пользователь никогда не вызывает по причине ненадобности или отсутствия информации о них. Но это не значит, что значки для этих команд нельзя использовать для своих целей! Icon Generator извлечет из "недр" Word'а эти значки, разместив их на специально созданных панелях инструментов (рис.6.4), так что вам останется лишь скопировать их на свои панели с помощью стандартной функции "Копировать значок" режима настройки панелей. Пусть ваш Word расцветится красивыми иконками!

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

Программу "Генератор иконок" можно загрузить с адресов http://antorlov.chat.ru/develop.htm или http://www.newtech.ru/~orlov/develop.htm.

Рис.6.4. И все это хранит в себе Word



Крутые Специалисты


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

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

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

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



Куски реестра в файлах


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

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

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

Рис.14.17. Фрагмент реестра, экспортированный в текстовый файл.

Ниже команды Regedit4 находятся ключи, вносимые в реестр. Для каждого вносимого в реестр имени раздела должна быть выделена отдельная строка. Полное имя раздела (сокращения не допускаются) помещается в квадратные скобки. Имена параметров этого раздела приводятся по одному на строке, начиная за следующей сразу за именем раздела, в кавычках, рядом на той же строке - их значения. Значения строковых параметров должны приводиться в кавычках, значения параметров типа Dword - в виде шестнадцатиричной строки dword:00000000 (без кавычек), значения двоичных параметров - в шестнадцатиричной системе в виде строки hex:14,00,00,00 (без кавычек).

Если в значении строкового параметра встречается символ "\", то он заменяется (в экспортированном файле реестра) на пару таких символов. Сам символ "\" используется для переноса слишком длинных строк. Имя каждого раздела или подраздела, вносимого в реестр, независимо от его иерархического расположения, должно писаться полностью и на отдельной строке. Между описаниями каждого из разделов и в конце файла должно находиться по одной пустой строке. Символ "@" соответствует параметру "По умолчанию".

С помощью такого файла можно также и удалять записи из системного реестра. Для этого нужно перед именем раздела поставить знак "-": "[-HKEY_LOCAL_MACHINE\........]".

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



Линуксоиды


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

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

Среди тех, кто любит работать с операционной системой Linux, есть те, кто одной из важных целей своей жизни сделал доказательство превосходства Linux над операционными системами Windows. Обычно таковые бывают не самыми компетентными в работе с Linux, но весьма крикливыми на Интернет-форумах и гостевых книгах. Скажем, когда на форумах www.ixbt.com обсуждается тема тонкой настройки Windows, в ней обязательно попадется пара-тройка сообщений типа "Windows - суксь, Linux - рулезь", "Кончай юзать мастдай, переходи на Linux", или даже с не совсем приличными словами.

Можно спросить: а откуда, собственно, взялись "линуксоиды"? Почему бы им просто не работать с действительно неплохой и весьма грамотно спроектированной и реализованной ОС Linux и никого не критиковать за выбор другой ОС?

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

А основные претензии две. В определенной степени они перекликаются с принципами двух предыдущих описанных групп - "хакеров" и "крутых спецов". Итак, первая - это недостаточная продуманность программ от Microsoft. В то время как Linux спроектирована очень грамотно, "менеджеры среднего звена" (т.е. те, кто сам код не пишет, а занимается разработкой общих алгоритмов и отдельных элементов интерфейса) в Microsoft вместо реального удобства пользователя зачастую больше думали о коммерческом успехе и громких рекламных фразах, что не могло не привести к неудобству и неэффективности внешне эффектных компонентов ОС. (К примеру, у мыслящего лишь рекламными слоганами маркетолога могла возникнуть идея сделать "Проводник" на движке Internet Explorer. Скорость работы "Проводника" уменьшилась на порядок, количество "глюков" возросло на порядок, - зато можно так писать в проспектах и листовках "теперь ваш компьютер является частью Интернет!", Хорошо еще, можно использовать Windows95 - так нет, официально Microsoft больше эту ОС не поддерживает.) К тому же код Windows

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

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



Есть и вторая причина ненависти к Windows и Microsoft, - о ней, правда, мало кто упоминает. В основном именно она вызывала массовую критику первых версий "виндов" со стороны "специалистов" компьютерного сообщества. В настоящее время данная причина во многом ушла в прошлое, хотя отголоски ее нередко можно встретить на "чисто технических" форумах. Какая это причина? А простая - "Microsoft пустила к компьютеру дилетантов". В самом деле - ранее, в "до-виндовскую" эру, работа с компьютером для непосвященного выглядела во многом чародейством. Ввод непонятных команд, настройка конфигурационных файлов (даже в MS-DOS - config.sys, к примеру), сочетания клавиш в программах и особенности командных строк, - все это узнать человеку, впервые приобретшему компьютер, было очень непросто. Большинству приходилось либо приобретать множество книг и их читать и изучать, - либо обращаться за помощью к "специалистам". Те за признание их авторитета, ящик пива или сумму в твердой валюте настраивали autoexec.bat, меню Нортона или почтовую программу. Но с появлением Windows и графического интерфейса ситуация изменилась. Любой человек, даже совершенно ранее незнакомый с компьютером, получил возможность абсолютно самостоятельно его исследовать и научиться с ним работать, - разумеется, если он умел думать и исследовать. В результате необходимость обращаться к "специалистам" по настройке Нортона или автозапуска почти отпала. Более того - Windows даже без какой-либо настройки стала доступна для выполнения нужной работы, - скажем, напечатать текст и вывести его на принтер в большинстве случаев было можно даже без установки дополнительных программ, всего лишь с помощью WordPad'а. Естественно, тех, кто не мыслил свою жизнь без конфигурационных файлов и командной строки, такая ситуация устроить не могла, - "как же так, я столько времени потратил на изучение родного MS-DOS'а, прежде чем полноценно стал с ним работать, а тут какой-то "ламер" сразу сел за "мастдай" и стал работать, не прибегнув к моим услугам!" Многие быстро освоили "новую технику" и стали специалистами уже, например, по настройке Windows.


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

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

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


Меры предосторожности


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

В Windows98 резервное копирование реестра совершается автоматически. Каждый раз при успешном запуске Windows запускается программа scanregw.exe, которая копирует файлы реестра в папку Windows\Sysbckup, заархивировав их в файл типа .cab (что уменьшает их обьем раза в четыре). Кроме того, в архив с реестром помещаются файлы win.ini и system.ini, также содержащие важные настройки системы. Для восстановления реестра используется программа scanreg.exe, работающая в Режиме MS-DOS.

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

1. Перезагрузить компьютер кнопкой Reset.

2. При загрузке компьютера держите нажатой клавишу Ctrl. В появившемся меню выберите пункт Command Prompt Only и дождитесь появления приглашения MS-DOS. Если вызвать меню загрузки таким образом не удается, то вставьте в дисковод загрузочную дискету и загрузитесь с нее. Дождитесь вывода на экран приглашения MS-DOS.

3. Введите команду scanreg /restore. Запустится программа восстановления системного реестра. Выберите желаемую копию (лучше всего наиболее позднюю, что можно определить по дате) и следуйте дальнейшим указаниям программы.

4. Перезагрузите компьютер. Все должно заработать.

По умолчанию программой scanregw.exe сохраняется 5 копий реестра - от пяти последних запусков Windows. Можно сделать так, что сохраняться будет не 5, а больше (до 100) или меньше копий реестра. Для этого создайте файл scanreg.ini в каталоге с утилитами scanreg.exe и scanregw.exe и укажите там параметр MaxBackupCopies со значением, равным числу желаемых резервов (просто написав в первой строчке файла scanreg.ini строку MaxBackupCopies=число_резервов).
Также можно заставить операционную систему сохранять в архивах с копиями реестра и другие файлы - просто добавьте в scanreg.ini строки Files=полный путь к файлу.

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

Если у вас установлена Windows95, но вы желаете воспользоваться этими утилитами, то извлеките с помощью программы WinZip 7.0 или WinRar 2.50 и выше файлы scanregw.exe и scanreg.exe из файлов .cab дистрибутива Windows98[33]

и поместите туда, куда сочтете нужным. Эти программы прекрасно работают и в этой операционной системе.

При работе в Windows95 и отсутствии возможности установки утилит резервирования реестра для его архивации в Режиме MS-DOS просто скопируйте файлы реестра в какую-либо папку вне каталога Windows, а для его восстановления произведите обратную операцию, скопировав заранее зарезервированные файлы поверх испорченных в каталоге Windows.

Если даже после восстановления системного реестра Windows не загрузилась - то увы, ее переустановка неизбежна. По всей видимости, в таком случае повредился какой-то системный файл, не реестр. (В этом случае ваши эксперименты над реестром не были причиной сбоя.) Вытаскивайте из папки Program Files и каталога с операционной системой все мало-мальски для вас ценное (не забудьте эвакуировать все нужное из папки "Рабочий стол", или "Desktop" в английской версии, - там находится все содержимое вашего рабочего стола, а также из каталога Profiles, если таковой существует - чтобы спасти файлы остальных пользователей, и из папки Applications Data в каталоге с Windows - там находятся папки с почтой Outlook Express, а также шаблоны Word2000), стирайте их (не забудьте предварительно снять со всех файлов в них атрибут "Только чтение",  или придется подтверждать каждое удаление), удалите папку Recycled и запускайте setup.exe из каталога с дистрибутивом Windows.


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

Весьма желательно после установки Windows скопировать ее дистрибутив на жесткий диск и сделать загрузочную дискету. В любом случае восстановление Windows придется вести из Режима MS-DOS, а в таком случае доступ к CD-Rom'у будет невозможен, если не загрузить драйвера для него. Последнее же сделать не всегда возможно, так что надежнее будет иметь дистрибутив Windows на жестком диске.

Если вы отключите авторезервирование реестра в Windows98 или работаете с Windows95, то время от времени резервирование реестра рекомендуется повторять. Делать это надо в следующих случаях.

1. Когда вы установили новую большую программу и убедились, что она работает. Большие программные пакеты, например, Microsoft Office или Intermet Explorer, делают в реестре при своей установке большое количество записей, и могут отказаться работать, если впоследствии их не обнаружат. Если вы выполните переустановку реестра в таком случае, то вам придется переустановить и все эти программы.

2. Когда вы проводите нужное вам редактирование реестра, и оно оказывается успешным.

3. Когда вы добавляете новые учетные записи в Outlook Express, The Bat!, в ftp-менеджеры и почтовые клиенты, и эти записи вам крайне необходимы. Они хранятся в системном реестре и в случае его замены - пропадут.

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

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

6. Когда вы установили новое устройство.

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


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

Кроме утилиты scanregw.exe из дистрибутива Windows98, фирмой Microsoft также создано несколько утилит, которые делают то же, что и эта, но несколько более красиво. К ним относятся программы Cfgback.exe и ERU (находятся на лицензионном компакт-диске Windows). Последняя сохраняет еще и все файлы настроек и автозапуска (win.ini, system.ini, msdos.sys, autoexec.bat, config.sys). Утилиты резервирования и восстановления реестра есть и почти в любом пакете дисковых утилит вроде Nuts&Bolts.

Для создания резервной копии системного реестра в Windows2000/XP необходимо загрузить компьютер с системной дискеты MS-DOS или в какой-нибудь другой операционной системе, установленной на нем (если таковая присутствует) и скопировать в отдельную папку все файлы, содержащиеся в подкаталоге system32/config той папки, куда Windows установлена. Произвести копирования файлов реестра этой операционной системы при работе в ней невозможно.


в этом редакторе есть средство


Да-да, не удивляйтесь - как ни странно, в этом редакторе есть средство открытия файлов в другой кодировке! Правда, поддерживается только возможность открытия и сохранения файлов в кодировке MS-DOS, но и это немаловажно - именно в этой кодировке распространяется большинство книг в "электронных библиотеках", огромное количество документов подготовлено в редакторах под MS-DOS и сохранено в текстовом формате в кодировке MS-DOS. Как же использовать это средство?

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

Если вы открываете таким образом текст, представленный в кодировке MS-DOS, то лучше всего выбрать пункт "Текст DOS". Тогда при открытии файла его текст будет просто отображен на экране. Если файл, открытый таким образом, отредактировать и сохранить, то его формат сохранится, - он по-прежнему останется написанным в кодировке MS-DOS. Чтобы сохранить его в Windows-1251, надо воспользоваться пунктом меню "Файл-Сохранить как…" и указать там "Только текст" для сохранения в текстовом файле или другой формат для сохранения в нем.

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

В русской версии Microsoft Office 97 Professional есть специальный встроенный конвертер "Лексикон для DOS", его можно установить, выбрав соответствующий пункт при установке самого Office, но работа этого конвертера, хоть и несравненно лучше первого, все же оставляет желать лучшего.

Существует программа "Конвертор текста MS-DOS", специально предназначенная для обработки и оптимизации текста, набранного в MS-DOS. Разработка представляет собой макрокоманду для Microsoft Word 97 и Microsoft Word 2000 и запускается из Word. Она, кроме удаления лишних символов конца абзаца, также на основе количества пробелов перед первой буквой в строке устанавливает значение выравнивания (по ширине, по центру, по правому краю), заменяет несколько идущих подряд пробелов на один ("Лексикон" для MS-DOS пытается с помощью добавления лишних пробелов передать выравнивание текста по ширине), оптимизирует пробелы вокруг точек, запятых, других знаков препинания - ведь, в самом деле, пробел перед запятой выглядит несколько странно. Имеется возможность обработки сразу большого количества файлов с автоматическим их сохранением. Программа имеет множество настроек, могущих удовлетворить почти всех требовательных пользователей. "Конвертор текста MS-DOS" является частью пакета программ "ВерсткаТекстаКнижкой" и распространяется вместе с ним. Вы всегда можете загрузить этот пакет с адресов: http://antorlov.chat.ru и http://www.newtech.ru/~orlov.

К сожалению, работа с кодировками KOI-8, ISO-8859-5, Macintosh в среде Microsoft Word невозможна. Существуют макросы для перекодирования текста из KOI-8 в загруженном в Word тексте, но они работают медленно и поэтому пользоваться ими нецелесообразно.

В Microsoft Word 2000 и Microsoft Word XP при открытии документа в кодировке MS-DOS производится попытка автоматической его конвертации в читаемый вид, однако она не всегда срабатывает корректно.


Напутствие


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

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

Создавая программы на Visual Basic for Applications, вы сможете на опыте получить представление практически обо всех современных принципах программирования: как структурных - основанных на последовательном выполнении всех команд программы, так и "событийных", согласно которым программа должна реагировать соответствующим образом на действия пользователя. В современном программировании используются как структурный, так и событийный принципы: интерфейс программ построен по принципу реакции на события, а функции, выполняемые программой - по принципу независимой работы. Например, графический редактор Paint, да и тот же Word в большей своей части являются приложениями, управляемыми событиями - действиями пользователя; а, скажем, программы дефрагментации или проверки диска работают почти независимо от пользователя, он только должен задать им начальные параметры. В VBA можно писать как программы, управляемые событиями (посредством разработки форм), так и работающие последовательно и независимо (используя только модули), а также, разумеется, и приложения, сочетающие в себе оба способа действия.

VBA может служить не только полноценной средой разработки приложений, работающих в Microsoft Office, но и как бы "учебным центром" по освоению принципов и различных приемов современного программирования. Работа с системным реестром, с файловой системой и даже со встроенными в Windows функциями программирования API и многое другое, - все это вы сможете изучить на опыте, используя VBA, причем сделать это Вам будет значительно легче, чем если бы Вы сразу начали учиться программировать на Delphi или Visual Basic for Windows. 

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

Если Вы научитесь программировать на VBA, поймете принципы разработки алгоритмов и основные приемы программирования, освоите среду написания программ - редактор VBA, то для Вас практически не составит труда начать создавать программы на Visual Basic for Windows. У этого языка абсолютно такой же синтаксис, такая же среда разработки с контекстной справкой и пошаговыми подсказками, на первый взгляд он отличается от VBA разве что набором доступных встроенных процедур и функций и отсутствием возможности записи макросов. Безусловно, есть и более глубокие различия, но при создании не очень сложных программ они не будут иметь большого значения. Вы сможете легко освоить средство разработки программ Delphi, хотя логика языка Pascal, лежащего в основе Delphi, несколько отличается от логики Visual Basic. Однако и среда разработки, и общие принципы программирования в Delphi те же. Несколько труднее будет освоить C++ и его производные из-за серьезно отличающегося синтаксиса и высокой сложности этого языка, но это не всегда необходимо, - подавляющее большинство проектов программ можно реализовать на Visual Basic или Delphi.


Настройка вызова программы. Последние штрихи


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

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

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

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


Всплывающие подсказки кнопок можно задать самостоятельно с помощью команды "CommandBars("Имя панели").Controls("Номер иконки на панели").TooltipText = "Текст подсказки"".

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

Вам может не понравиться весьма ограниченный выбор значков для кнопок, предлагаемый Word'ом. Этот набор, вызываемый из меню "Выбрать значок для кнопки" в режиме настройки панелей, действительно, маловат. Но никто не мешает с помощью других команд того же меню скопировать значок с любой другой кнопки на любой другой панели или создать его самому во встроенном редакторе изображений на кнопках. Кроме того, красивые значки можно извлечь из "недр" Office, - а он содержит в себе около двух тысяч разнообразных значков! Для этого достаточно ввести в Окне отладки команду

CommandBars("имя существующей панели инструментов").Controls.Add(Type:=msoControlButton, ID:=797).FaceId = x

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

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

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


Небольшое отступление


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

Как уже неоднократно упоминалось, язык VBA называется обьектно-ориентированнным. Такое название дано этому языку, как, впрочем, и большому количеству других современных языков программирования, из-за особого строения его команд (более подробно синтаксис VBA был описан во второй главе). Типичная команда Visual Basic имеет такой вид: <Обьект>.<Обьект, входящий в первый обьект>.<…>.<Тот обьект, с которым нужно произвести действие>.<Собственно действие>. Иными словами, каждая команда пишется как бы "с конца": вначале определяется то, над чем надо произвести действие - обьект, а затем само действие - метод. Разделителями компонентов команды служат точки. Вот пример такой команды:

Selection.Font.Size = 12

Эта команда устанавливает размер шрифта во всем выделенном тексте в 12 пунктов. У обьекта Selection

(то есть выделенная в данный момент часть текста) есть подобьект Font - шрифт выделенного текста, а у подобьекта Font - свойство Size. Свойство Size тоже можно считать подобьектом. Знак "=" - это оператор присваивания, в данном случае свойству Size обьекта Font обьекта Selection присваивается значение 12 - размер шрифта во всем выделенном тексте устанавливается в 12 пунктов.

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

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

а = Selection.Font.Size

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

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

будет иметь значение 9999999. Если выделен графический обьект, то команда будет ошибочной, о чем VBA выдаст соответствующее сообщение.



Немного истории


В отличие от многих других языков программирования, PHP был создан не какой-либо корпорацией или гением-программистом, а обычным пользователем, Расмусом Лердорфом, в далеком 1994 году. Цель разработки языка была проста - сделать домашнюю страничку Расмуса более интерактивной, а значит, и более привлекательной для посетителей. Расмус разработал базовый синтаксис и написал первый интерпретатор своего языка, получившего название Personal Home Page Tools - т.е. PHP. Этот интерпретатор мог обрабатывать лишь несколько основных команд, однако начало было положено.

В 1995 году Расмус доработал интерпретатор PHP, соединив его с другой своей программой, умевшей обрабатывать HTML-формы (именовавшейся FI - от "Form Interpretator"), а также сделал так, что интерпретатор, получивший название PHP/FI Version 2, мог становиться частью web-сервера. Последнее сделало программы на PHP очень быстроисполняющимися. Кроме того, в том же 1995 году интерпретатор PHP был дополнен возможностями обработки новых команд, в частности, функций работы с сервером баз данных MySQL и автоматического создания gif-файлов (последнее, к примеру, может быть использовано для генерации кнопок-счетчиков посещений). PHP/FI был размещен в Сети для всеобщего использования, и началось его повсеместное распространение.

Web-мастера быстро оценили достоинства нового языка web-программирования - легкость освоения и богатство возможностей, и вскоре традиционные Perl, C++ стали сдавать ему свои позиции. Так как исходный код интерпретатора был открыт (а сам он, ясное дело, бесплатен), то энтузиасты стали заниматься его доработкой, и летом 1998 года появился на свет PHP3 - детище Зива Сураски и Энди Гутманса (Zeev Suraski and Andi Gutmans). В этой версии интерпретатора были исправлены баги предыдущей версии и добавлены новые функции, что еще больше поспособствовало его победному шествию по миру. Уже к концу 1999 года число сайтов, построенных на основе PHP, перевалило за миллион. Весьма важным достоинством PHP также являлось то, что его можно было использовать в различных операционных системах - от Windows до Unix и Linux.

В 2000-м году вышла четвертая версия интерпретатора PHP, разработанная компанией Zend Technologies, дополненная множеством новых функций. В настоящее время именно она является наиболее распространенной.



Немного о панелях, шаблонах и макросах


Панель инструментов Microsoft Word 97/2000/XP - то есть ее название, набор кнопок, расположенных на ней, связь этих кнопок с командами и макросами - может храниться либо в шаблоне Microsoft Word 97/2000/XP (*.dot), либо в документе Word (*.doc). При этом имеет место быть следующее:

1. Если панель инструментов сохранена в Normal.dot, то она доступна всегда, когда открыт Word.

2. Если панель инструментов сохранена в шаблоне, который загружен как глобальный - то есть помещен в папку автозагружаемых файлов Word, то она также доступна всегда, когда открыт Word, но ее можно убрать, выгрузив шаблон с помощью диалогового окна "Сервис-Шаблоны и надстройки".

3. Если панель инструментов сохранена в шаблоне, на котором основаны документы, например, в одном из шаблонов, находящихся в папке шаблонов пользователя Word[14]

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

4. Если панель инструментов сохранена в каком-либо документе, то она доступна тогда, когда активен этот документ.

Панели инструментов можно копировать из одного шаблона или документа в другой с помощью диалогового окна "Организатор" (Сервис - Шаблоны и надстройки - Организатор).

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

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

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

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

Если при запуске Word в папке Шаблоны не оказывается шаблона Normal.dot, то он создается Word'ом на основании стандартов по умолчанию. В него помещается изначальный набор панелей инструментов.

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

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


Немного о паролировании и шифровании


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

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

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



Немного полезных советов


1.  Если вы используете браузер Microsoft Internet Explorer, то наверняка знакомы с эмблемой Microsoft в правом верхнем углу окна браузера. Во время загрузки страницы эта эмблема вращается. Если хотите, можете заменить эмблему Windows на свой собственный символ. Создайте два bmp-файла - 38*1520 и 24*960 пикселов. В каждом из них нарисуйте последовательность кадров размером 38*38 и 24*24 пикселов, как, скажем, на рисунке:

Также сделайте отдельные bmp-файлы с картинками размером в 38*38 и 24*24 пикселов. А затем пропишите пути к первым двум файлам в параметрах BrandBitmap и SmBrandBitmap раздела HKEY_CURRENT _USER\Software\ Microsoft\Internet Explorer\Toolbar, а ко вторым - в параметрах BigBitmap и SmallBitmap раздела HKEY _LOCAL_MACHINE\SOFTWARE\ Microsoft\Internet Explorer\Main. После перезагрузки браузера изображения из файлов с последовательностью кадров будут выводится в момент путешествия по Интернет, а из файлов с отдельными кадрами - при полностью загруженной web-странице.

2.  В процессе работы системный реестр из-за особенностей действий с ним операционной системы обрастает лишними двоичными данными. Они не имеют никакого значения для программ, обращающихся к реестру, но занимают место. Для того, чтобы избавиться от них, загрузитесь в Режиме MS-DOS и из командной строки запустите команду regedit /e file.reg, а когда она закончит работу - команду regedit /с file.reg. При этом реестр будет экспортирован в текстовый файл, а потом загружен обратно. Все лишние двоичные данные исчезнут, а размер реестра станет меньше. Данный прием работает исключительно в среде Windows 9x.