7

7. ОБОЛОЧКА SHEZ

 

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

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

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

            Архивировать можно файлы с любым содержимым, но наилучший эффект достигается при обработке текстовых файлов (для них сжатие в два раза – не предел). Длина EXE- и COM-файлов может быть уменьшена на треть, что тоже является весьма хорошим показателем. Наименьшими возможностями сжатия обладают файлы графических изображений. Однако если изображение однородно, то степень сжатия файла превзойдет все Ваши ожидания.

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

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

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

            Вместо того чтобы описывать каждую из распространенный утилит в отдельности, мы решили рассмотреть оболочку SHEZ версии 5.5 (последней на момент написания книги) от 15.05.90 г., разработанную Джимом Дерром (США). Эта оболочка является надстройкой над наиболее известными утилитами архивации-разархивации        , существенно облегчая (однако не значит ускоряя) работу с ними. Благодаря широким функциональным возможностям, удобстве и простоте использования, а также своей уникальности, SHEZ пользуется в настоящее время заслуженной популярностью. Тем не менее SHEZ несколько запаздывает с поддержкой новых перспективных архиваторов. Так, версия оболочки 5.5 не обеспечивает работу с архиваторами LNA и ARJ.

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

 

7.1. Общая характеристика оболочки

             SHEZ является специализированной оболочкой, ориентированной на обслуживание ZIP-, ARC-, LZH- (ICE-), ZOO- и PAK-архивов. Для каждого из этих форматов архивов используются свои алгоритмы уплотнения, но все они дают примерно одинаковую степень сжатия. Тем не менее по этому показателю в лучшую сторону выделяется LZH-формат. За несколько повышенную степень сжатия приходится расплачиваться увеличением времени обслуживания LZH-архивов, что вполне естественно. ZIP-формат предусматривает оптимизацию либо по степени сжатия, либо по времени обслуживания архивов. Требующийся пользователя вариант выбирается при конфигурировании оболочки. В результате он принимается по умолчанию, но в процессе работы может быть изменен. Кроме того, ZIP-архивы обеспечивают повышенную надежность хранения информации так как имеют два экземпляра справочника. Существует также автономная утилита PKZIPFIX, служащая для восстановления поврежденных ZIP-архивов. По указанным причинам ZIP-формат получил наибольшее распространение, хотя его лидерство не является абсолютным. Так, в Японии стандартным фактически считается LZH-формат. Разработанный же и реализованный в недавнее время ARJ-формат способен поставить под сомнение целесообразность использования ZIP-архивов.

            Оболочка SHEZ обеспечивает:

            - создание и обновление архивов;

            - отображение справочников архивов;

            - проверку целостности архивов;

            - просмотр и печать помещенных в архивы текстовых файлов;

            - выполнение помещенных в архивы программных файлов;

            - тестирование помещенных в архивы файлов на предмет наличия в последних компьютерных вирусов;

            - извлечение файлов из архивов;

            - преобразование архивов из одного формата в другой, в том числе в саморазархивирующиеся файлы;

            - выполнение основных операций с файлами (манипулирование файлами);

            - редактирование текстовых файлов.

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

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

            В состав собственно оболочки SHEZ входят наряду с другими следующие необходимые для работы файлы:

SHEZ.EXE         - файл с главной исполняемой программой;

SHEZ.HLP         - файл с базой данных справочника;

SHEZCFG.EXE – файл с программой конфигурирования оболочки.

 

            Эти файлы занимают около 175 Кбайт дисковой памяти.

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

                           1) утилиты PKZIP и PKUNZIP фирмы PKWARE для поддержки ZIP-архивов;

                           2) утилиты PKPAK и PKUNPAK той же фирмы для обслуживания ARC-архивов;

                           3) утилита LHARK (но не LHA) Харуясу Йошизаки для работы с LZH- и ICE-архивами;

                           4) утилита ZOO Раула Дхеси для обработки ZOO-архивов;

                           5) утилита PAK компании No Gate Consulting для манипулирования PAK-архивами;

                           6) программа LIST Вернона Бьюрга для визуализации текстовых файлов (можно использовать и другой визуализатор, в частности, WPVIEW из оболочки Norton Commander);

                           7) какой-либо текстовый редактор для редактирования файлов;

                           8) полидетектор ViruScan фирмы McAfee Associates для обнаружения компьютерных вирусов (см. п. 10.4.3.).

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

Оболочка факультативно обеспечивает выгрузку из памяти около 90% своего кода в следующих случаях:

                           1) при временном выходе в DOS;

                           2) при редактировании текстового файла;

                           3) при выполнении программы из архива.

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

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

 

7.2. Подготовка оболочки к работе

  SHEZ проявится во всем своем великолепии, когда Ваша ПЗВМ имеет жесткий диск. Разместите файлы оболочки в одном каталоге, например, в C:\SHELLS\SHEZ. Дополнительные файлы можно поместить как в этот же, так и в другие каталоги, которые в последнем случае нужно будет зарегистрировать при конфигурировании.

Затем осуществите конфигурирование SHEZ'a программой SHEZCFG. После ее запуска на экране дисплея появится меню. Каждый пункт меню выбирается путем нажатия клавиши, соот­ветствующей подсвеченной букве в наименовании требуемого пункта. После выбора пункта Вам придется лишь корректно отвечать на задаваемые вопросы. По завершении этого процесса выберите в Меню конфигуратора пункт Save the configuration info для сохранения сделанных установок непосредственно в файле SHEZ.EXE.

Конфигуратор позволяет

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

  установить маршруты поиска файлов с дополнительными программами (PKZIP, PKUNZIP и т.д.) путем ввода пользователем их полных спецификаций;

  выбрать максимальное число файлов в архиве, которые SHEZ будет обслуживать;

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

  специфицировать диск для временных файлов, создаваемых оболочкой;

  включить режим свопинга;

— установить используемый впоследствии по умолчанию коэффициент сжатия для ZIP-архивов;

  задать версию утилит PKZIP и PKUNZIP.

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

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

Оболочка наряду со стандартными для DOS символами (* и ?) использует дополнительный символ-заменитель $. По умолчанию шаблону $.$ соответствуют ARC-, ZIP-, LZH- (ICE-), ZOO и РАК-архивы, т.е. файлы с расширениями ARC, ZIP, LZH, ICE, ZOO и РАК. Конечно, допустимы и осмысленные комбинации шаблонов DOS с символом $. Важно понимать при этом, что заменитель $ слева от точки сопоставим с любым именем файла, а справа от точки — с любым из перечисленных расширений. Например, шаблону Р*.$, равно как и шаблону Р$.$, соответствуют все архивы, имена которые  начинаются с Р. Если Вы хотите изменить трактовку шаблона $.$ (точнее — символа S справа от точки), то ответьте на соответствующий вопрос конфигуратора, перечислив через запятую расширения с предшествующими точками.

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

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

No              — не сортировать;

Name          — сортировать по имени файлов;

Extension    — сортировать по расширению имени файлов;

Date            — сортировать по дате создания файлов.

Задав в конфигураторе соответствующий режим, можно обеспечить проверку целостности (Integrity Check) оболочки при каждом ее запуске путем подсчета текущей контрольной суммы и сравнения ее с оригиналом. Факт несовпадения будет визуализироваться в специальном сообщении.

Для оперативной подстройки оболочки можно предварительно определить следующие глобаль­ные переменные: BIOS, MONO, SHEZEX, SHEZWORK, SHEZCMT и SHEZEV. Большинство из возможностей, задаваемых значениями глобальных переменных, реализуются и в конфигура­торе.

Если в качестве значения переменной BIOS задать Y, то оболочка при выводе на экран будет использовать средства BIOS. Если же установить значение N, то запись в видеопамять будет осуществляться непосредственно. В первом случае несколько снижается быстродействие оболочки, но обеспечивается лучшая совместимость ее с оборудованием ПЭВМ.

Значение Y переменной MONO переводит оболочку в монохромный режим, а N — в цветной.

Задание значений переменных BIOS и MONO приводит к отмене установок, сделанных при конфигурировании оболочки.

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

Значением переменной SHEZWORK можно указать каталог для внутреннего использования SHEZ'ом  под временные файлы. Этот каталог должен быть создан пользователем до запуска оболочки. При выходе из нее все файлы в данном каталоге (включая скрытые и системные) удаляются, но сам каталог сохраняется для последующего использования. Так что будьте бдительны!

Переменная SHEZWORK используется для повышения гибкости оболочки  при работе в LAN-сетях. Если эта переменная в окружении DOS не определена, то требуемый каталог будет создаваться автоматически и иметь предопределённое имя.

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

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