Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#15| Dragon God
Demon's Souls |#14| Flamelurker
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Сэйдж Рас Весь текст 822.4 Kb

Приемы профессиональной работы в Unix

Предыдущая страница Следующая страница
1 ... 23 24 25 26 27 28 29  30 31 32 33 34 35 36 ... 71
       ко проще в том смысле,  что он делает только один проход.  Кроме  того,
       log - это "живая" программа.  Она не является статичной и должна посто-
       янно  изменяться  в  соответствии  с  вашими  процедурами  копирования.
       Посредством  такой модификации log способна сообщить вам действительные
       имена файлов.
            Log является  разновидностью программы,  ссылающейся сама на себя.
       Для показа действительных имен файлов она просматривает свое содержимое
       и  выбирает  (используя sed) имена log-файлов из команды more,  которая
       выводит их.  Поскольку вы добавляете файлы протокола, программа log мо-
       жет хранить текущие, потому что она просматривает сама себя для опреде-
       ления того,  что соответствует действительности. Применяя процедуру по-
       иска таким образом, мы избавляемся от необходимости сохранять отдельные
       файлы данных с именами в них или использовать  какие-то  соглашения  об
       именовании  выполнения  той же задачи.  Способность программы log обра-
       щаться самой к себе позволяет вам добавлять неограниченное число файлов
       протокола в список,  и вам предоставляется свобода по выбору имен таких
       файлов.
            Возможно, вы заметили,  что стратегия,  использованная в командном
       файле log,  может быть использована для обеспечения вывода на экран лю-
       бого набора файлов (записные книжки, документация или еще что-то). Все,
       что вам нужно сделать для этого - записать их в соответствии с командой
       more и добавить столько команд в главное меню, сколько вы хотите.

            Пояснения

            Строка 4 очищает экран, используя команду c, представленную ниже в
       этой книге.  (Вместо этого вы снова можете использовать команду  clear,
       если она доступна.)
            Строка 5 устанавливает в позиционные параметры выход команды date.
       Это то же самое,  что мы делали в программе cpiobr. Строки 6-17 выводят
       меню. Здесь использован один оператор echo, как описано в cpiobr. Стро-
       ка 13 читает команду пользователя.
            Строки 20-27 выполняют основную работу программы.  Если  введенная
       команда была просто возвратом каретки (трактуется как нуль),  программа
       завершается.  В строке 23 команда sed просматривает файл $HOME/bin/log.
       Это требует,  чтобы вы поместили log в подкаталоге двоичных модулей ва-
       шего регистрационного каталога. Если вы разместите ее где-либо в другом
       месте,  вы должны изменить эту строку.  Команда sed использует ключ -n,
       который запрещает вывод,  за исключением того, что явно указано для пе-
       чати. Строка -e находит имена файлов.
            Данный подход использует функцию замены в команде sed. Таким обра-
       зом  мы можем заменить все за исключением имени файла,  а затем напеча-
       тать его.  Смысл этой записи примерно такой:  сперва мы ищем  выражение
       more (/more/),  находя тем самым все строки в файле протокола, содержа-
       щие слово "more".  По определению,  каждый файл протокола выводится  на
       экран, используя команду more. Поскольку вы добавляете файлы протокола,
       каждая новая строка должна содержать слово more,  поэтому  файлы  нахо-
       дятся автоматически по выражению команды sed.
            Затем мы указываем команде sed сделать  замену.  Первое  выражение
       содержит в себе всю строку от начала до конца,  но мы применяем круглые
       скобки для отметки внутри нее образца .*, тем самым выделяя часть стро-
       ки  между пробелом после "more" и первой точкой с запятой в конце стро-
       ки.  Если вы посмотрите на все строки в файле log, которые начинаются с
       "more",  то вы увидите,  что это соответствует имени файла,  которое мы
       ищем.
            Затем мы указываем команде sed заменить всю строку на первый обра-
       зец "pattern 1". "Pattern 1" - это запись команды sed для первого отме-
       ченного или "отмеченного биркой" выражения. Другими словами, мы замени-
       ли имя файла на всю строку целиком и указали команде sed напечатать ре-
       зультат, тем самым выдавая на экран имя файла.
            Эта работа выполняется  для  такого  количества  операторов  more,
       сколько вы имеете.  Чем больше файлов log вы имеете,  тем больше файлов
       обрабатывает команда sed.  Обратите внимание, что оператор sed просмат-
       ривает  любое количество символов от начала строки для нахождения слова
       "more".  Не указывая в программе конкретное число символов,  на которое
       нужно отступить,  вы получаете тем самым свободу выбора ваших собствен-
       ных уровней отступа.
            Если введенная команда не является допустимой,  выдается сообщение
       об ошибке.
            Эта программа не имеет цикла,  поэтому срабатывает один раз.  Если
       вы хотите запустить ее снова, вы должны снова ввести log.

            Пример
          $  log
          1
            После запуска программы выводится меню.  Введите число 1 для того,
       чтобы увидеть все имена log-файлов.
            Теперь, когда мы изучили, как распознавать и управлять файлами во-
       обще,  давайте рассмотрим некоторые систематические  методы  управления
       ИНФОРМАЦИЕЙ в файлах.  Мы начинаем в следующей главе с файлов,  которые
       важны для нас как для программистов.

      * ГЛАВА 4. Управление программной документацией *

      ВВЕДЕНИЕ
      4.1.   ПРОГРАММИРОВАНИЕ и УПРАВЛЕНИЕ ДОКУМЕНТАЦИЕЙ
      4.2.   ИЗВЛЕЧЕНИЕ ДОКУМЕНТИРУЮЩИХ ЗАГОЛОВКОВ
      4.2.1. stripc - из файла на языке Си
      4.2.2. stripf - из Си-функции
      4.2.3. strips - из командного файла Shell
      4.3.   ctags - создание файла признаков исходного кода проекта

     ВВЕДЕНИЕ

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

     4.1. ПРОГРАММИРОВАНИЕ И УПРАВЛЕНИЕ ДОКУМЕНТАЦИЕЙ

            В данной главе представлен набор командных файлов командного  про-
       цессора  для  извлечения  документирующей  информации из исходного кода
       программ на Си и командных файлов командного  процессора.  Используются
       две стратегии.  Первая состоит в том,  что,  следуя стандартной "модели
       документации" в исходном коде, вы можете придумать командные файлы, ко-
       торые просто "вытягивают" самые новые разделы с заголовочной информаци-
       ей из файлов с исходным кодом и собирают их затем в новый  файл.  Такие
       файлы служат в качестве каркаса для документации по программе. Следова-
       тельно,  при условии,  что заголовки исходного кода изменяются  разными
       программистами стандартным образом,  простая команда UNIX может извлечь
       полностью новый каркас руководства.
            Этот подход  реализуют  командные  файлы stripc,  stripf и strips.
       Stripc и stripf предоставляют листинги блоков документации уровня файла
       и уровня функций из ваших исходных файлов на Си,  а strips извлекает доку-
       ментацию из командных файлов командного процессора.
            Второй подход  -  доступ  к определенным видам структур (таким как
       функции на Си) в теле самого программного кода.  Этим методом вы можете
       точно найти, как называется данная функция, без сосредоточенного изуче-
       ния горы листингов. Командный файл ctags является и полезным инструмен-
       том,  и  моделью  применения  этого  подхода к другим видам программных
       структур.
            Ctags объединяет  свой  выводной  файл  с редактором vi/ex с целью
       предоставления простого способа доступа к любой заданной функции  и  ее
       просмотра,  копирования  или редактирования в текущей программе.  Ctags
       делает это путем предоставления признаков,  которые  понимает  vi,  для
       каждой функции, обнаруженной в любом указанном наборе файлов. Таким об-
       разом, вы можете использовать простую команду редактора, чтобы получить
       то,  что вам нужно.  Вы больше не обязаны заботиться о том,  какой файл
       содержит какую функцию.  Ctags - отличный пример применения мощи UNIX в
       полном объеме.
            Имея такие инструментальные средства,  вам не нужно изобретать ко-
       лесо,  так как вы можете легко находить и выбирать те средства, которые
       необходимы вам в конкретном приложении.  Вы уже написали программу  уп-
       равления терминалом Trantor TR-101? Примените ctags и найдите ее. Более
       того,  самодокументируемый напечатанный файл и документация о функциях,
       полученная  с помощью этих командных файлов,  дают другим программистам
       хороший старт в понимании того,  что вы сделали.  Это даже может слегка
       произвести впечатление на вашего начальника.
            Каким в общих чертах будет наш подход к созданию  таких  командных
       файлов?  У  нас  есть некоторые потенциальные преимущества в применении
       такого вида доступа в системе UNIX. Прежде всего, исходные файлы не от-
       личаются от других текстовых файлов,  поэтому мы можем использовать все
       имеющиеся в UNIX средства поиска и распознавания шаблонов (sed,  awk  и
       т.д.),  чтобы находить символьные строки. Во-вторых, мы освоили технику
       обхода файловых деревьев и работы с отобранными типами файлов,  описан-
       ную в предыдущих главах.  Наш подход состоит в объединении этих средств
       таким образом,  чтобы они обеспечивали доступ к структурированной доку-
       ментации, содержащейся в программных файлах.

            4.2. Извлечение документирующих заголовков
            4.2.1. stripc - из файла на языке Си

---------------------------------------------------------------------------

            ИМЯ: stripc
---------------------------------------------------------------------------
Предыдущая страница Следующая страница
1 ... 23 24 25 26 27 28 29  30 31 32 33 34 35 36 ... 71
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (52)

Реклама