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

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


    Прохождения игр    
Demon's Souls |#4| Adjudicator & Tower Knight
Demon's Souls |#3| Cave & Armor Spider
Demon's Souls |#2| First Boss
SCP-077: Rot skull

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


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

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

Предыдущая страница Следующая страница
1 ... 34 35 36 37 38 39 40  41 42 43 44 45 46 47 ... 71
работы в среде UNIX. UNIX с самых первых дней стремился быть независи-
мым от типов устройств. Первым шагом явилось использование файлов уст-
ройств  и  драйверов.  Следующим шагом был файл termcap,  который пре-
доставил  единообразный  способ  получения  информации  о  терминалах.
Последним этапом является утилита terminfo, предоставляющая эту инфор-
мацию таким способом, который лучше обеспечивает функциональный доступ
из программ.
     Поскольку в пределах командного файла не так легко определить,  с
какой  системой работает ваш компьютер,  использована переменная SYSV.
Эту переменную можно изменить при помощи редактора,  поэтому today мо-
жет  работать в разных системах.  Способами выяснения системы могли бы
служить программа uname,  существование определенных shell-программ  в
каталоге  /bin  или  какой-нибудь  системный  файл,  содержащий  номер
версии.  По умолчанию переменная SYSV установлена так,  чтобы  утилита
today  работала  НЕ  в системе System V.  С этим связано существование
фрагмента программы, который нужно изменять вручную.
     Как вы  можете  самостоятельно  получить  информацию о терминале?
Каждый терминал имеет свои специфические  особенности.  Все  терминалы
характеризуются  в основном файлом описания терминала termcap.  В этом
файле каждая характеристика дается под своим именем вместе с  аппарат-
ным кодом этой функции.  Таким образом, мы можем, например, редактором
vi заглянуть в termcap и увидеть, как управлять терминалом, на котором
мы  работаем.  Файл termcap сильно зашифрован и загадочен.  По данному
вопросу не очень много документации,  что порождает множество экспери-
ментов и ошибок.
     Переменными, которые нас интересуют,  являются "so" для выделения
информации  (инверсный режим) и "se" для завершения выделения (обычный
режим),  а также режим мерцания,  если он  есть  у  вашего  терминала.
Termcap, похоже, не содержит информацию о том, как включить режим мер-
цания,  поэтому вам,  вероятно, нужно будет для этого посмотреть доку-
ментацию на терминал. В системе System V (версия 2) команда tput возв-
ращает соответствующее значение.
     По умолчанию в today выполнены установки для ANSI терминала,  яв-
ляющегося консольным в системе XENIX.  Эти коды были вручную извлечены
из  файла  /etc/termcap и вставлены в текст программы.  Если ваши коды
отличаются,  вы должны выяснить их.  Обратите внимание,  что  в  файле
/etc/termcap  символ  ESCAPE  представлен  как \E.  Это не годится для
today,  и вы должны изменить такое представление на настоящий  ESCAPE.
Поскольку  ESCAPE является символом выхода из режима ввода в редакторе
vi, вы должны использовать команду control-V в этом редакторе для вво-
да управляющих символов.  Последовательность control-V вызывает печать
символа ^, а ESCAPE - печать символа [. Таким образом, реальная коман-
да  входа в инверсный режим в редакторе vi представлена последователь-
ностью ^[[7m.  Эта команда включает символы ^[ в качестве ESCAPE и за-
тем обычные символы [7m для изменения режима.
     Теперь, когда характеристики терминала учтены, цель утилиты today
-  выделить  текущий день календаря в инверсном виде,  а все остальное
оставить в обычном виде.  Это делается путем передачи по конвейеру вы-
хода  команды  cal  команде sed.  Утилита sed находит число в выходных
данных и подставляет специальную  графическую  ESC-последовательность.
Поскольку  ваш  терминал  использует специальные символы для изменения
режима, вы не увидите их выдачи на экран.
     Данная программа не имеет опций или какого-то особого входа.  Она
распечатывает календарь с отмеченным сегодняшним днем.

     ПОЯСНЕНИЯ

     В строке 4 выполняется инициализация  переменной  SYSV  значением
"n".  Это заставляет программу переходить к особой области,  в которой
жестко закодированы управляющие коды терминала,  определенные вручную.
Если вы работаете с последними версиями системы System V,  то вам нуж-
но, чтобы эта переменная имела значение "y".
     В строке 6 позиционным параметрам присваивается результат команды
date. Мы обратимся к этим значениям позже.
     Строки 8-16 - это остальная часть программы. Они представляют со-
бой один оператор if-then-else.  Строки 9-12 поддерживают  принятый  в
System  V  метод tput для получения характеристик терминала,  а строки
13-15 управляют ручным способом их получения.
     В обоих случаях переменным shell присваиваются ESC-последователь-
ности.  Эти значения используются позже.  В обоих случаях  выполняется
вызов команды cal с использованием значений месяца и года,  полученных
от команды date.  Этот образ календаря пропускается по конвейеру через
утилиту sed,  которая ищет указанный день "сегодня",  также полученный
от команды date.  Когда этот день найден,  sed заменяет цифры  дня  на
последовательность  включения  инверсного  режима,  последовательность
включения режима мерцания, если он есть, и символы дня, а затем после-
довательность возврата в обычный режим работы терминала. Последняя ко-
манда sed заполняет пробелами начало строки для размещения ее в центре
экрана.

     УПРАВЛЕНИЕ ДЕЛОПРОИЗВОДСТВОМ

     Много рабочего времени тратится на запоминание важной информации,
такой как деловые встречи, адреса, номера телефонов, расписания, учет-
ные  сведения о проектах и так далее.  Большинство из такой информации
может быть сохранено в системе UNIX в виде  простых  структурированных
текстовых файлов, которыми можно манипулировать с помощью соответству-
ющих средств. Автоматизация этой области может освободить много време-
ни для выполнения "настоящей" работы.
     Хотя мощные коммерческие программы для сохранения такой  информа-
ции имеются в среде MS-DOS,  эти программы не имеют широкого распрост-
ранения в UNIX.  Часто у вас нет  необходимости  в  отдельной  большой
программе для выполнения таких работ в UNIX. UNIX обеспечивает хороший
компромисс между легкими в применении,  но  не  гибкими  коммерческими
программами и программированием на мощных,  но непростых в использова-
нии традиционных языках программирования. Возможности языка shell плюс
богатый ассортимент встроенных команд UNIX дают мощный, гибкий и СРАВ-
НИТЕЛЬНО простой в  использовании  компромисс.  В  данном  разделе  мы
представляем широкий набор средств управления личной информацией,  ко-
торые вы можете приспособить для своих нужд.
     Для шутки  начнем с программы по имени jargon - генератора техни-
ческих терминов,  конструирующего замысловатые фразы.  С  его  помощью
можно удивлять людей тем,  как много вы знаете,  или начать прибыльную
вторую карьеру в качестве составителя рекламы. Комбинирование слов по-
рождает сотни фраз.
     Затем мы рассмотрим программу phone.  Phone - это командный файл,
управляемый с помощью меню, который поддерживает базу телефонных номе-
ров и  сопутствующей  информации.  Она  сводит  воедино  разнообразные
аспекты сопровождения базы данных и обслуживания запросов к ней.
     Последнее инструментальное средство называется office. Это управ-
ляемая  при помощи меню утилита,  которая дает одноклавишный доступ ко
всем функциям делопроизводства.  Сюда относятся почта, новости, кален-
дарь, номера телефонов и автоматические напоминания.

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

     ИМЯ:   jargon
---------------------------------------------------------------------------

     НАЗНАЧЕНИЕ

     Компьютеризованная версия старого настольного  генератора  техни-
     ческих терминов.

     ФОРМАТ ВЫЗОВА

jargon

     ПРИМЕР ВЫЗОВА

jargon    Если ввести 125 в ответ на запрос, то на выходе
 125          получится фраза Total Monitored Concept

     ТЕКСТ ПРОГРАММЫ jargon

1   :
2   # @(#) jargon v1.0 Technical jargon generator
Author: Russ Sage
2а                       Генератор технического жаргона

4   echo "\n\t\tThe Jargon Generator"
5   while :
6   do
7           echo "\nEnter a 3 digit number (000-999), ?
, or : \c"
8           read NUM

10          case $NUM in
11          "") exit;;
12          \?) cat < /dev/
null ||
27                    { echo "\nNot a valid number, try again
"; continue; };;
28          *)   echo "\nInvalid input, try again"
29               continue;;
30          esac

32          N1=`echo $NUM|cut -c1`
33          N2=`echo $NUM|cut -c2`
34          N3=`echo $NUM|cut -c3`
35          SEN=""

37          case $N1 in
38          0)  SEN="${SEN}Integrated ";;
39          1)  SEN="${SEN}Total ";;
40          2)  SEN="${SEN}Systematized ";;
41          3)  SEN="${SEN}Parallel ";;
42          4)  SEN="${SEN}Functional ";;
43          5)  SEN="${SEN}Responsive ";;
44          6)  SEN="${SEN}Optional ";;
45          7)  SEN="${SEN}Synchronized ";;
46          8)  SEN="${SEN}Compatible ";;
47          9)  SEN="${SEN}Balanced ";;
48          esac

50          case $N2 in
51          0)  SEN="${SEN}Management ";;
52          1)  SEN="${SEN}Organizational ";;
53          2)  SEN="${SEN}Monitored ";;
54          3)  SEN="${SEN}Reciprocal ";;
55          4)  SEN="${SEN}Digital ";;
56          5)  SEN="${SEN}Logistical ";;
57          6)  SEN="${SEN}Transitional ";;
58          7)  SEN="${SEN}Incremental ";;
59          8)  SEN="${SEN}Operational ";;
60          9)  SEN="${SEN}Third-Generation ";;
61          esac

63          case $N3 in
64          0)  SEN="${SEN}Options";;
65          1)  SEN="${SEN}Flexibility";;
66          2)  SEN="${SEN}Capability";;
67          3)  SEN="${SEN}Mobility";;
68          4)  SEN="${SEN}Programming";;
69          5)  SEN="${SEN}Concept";;
70          6)  SEN="${SEN}Time-Phase";;
71          7)  SEN="${SEN}Projection";;
72          8)  SEN="${SEN}Hardware";;
73          9)  SEN="${SEN}Contingency";;
74          esac

76          echo "\n\"$SEN\""
77  done

     ПЕРЕМЕННЫЕ СРЕДЫ ВЫПОЛНЕНИЯ

N1    Первая цифра числа
N2    Вторая цифра числа
N3    Третья цифра числа
NUM   Число, введенное пользователем с клавиатуры
SEN   Предложение, полученное из найденных слов

       ОПИСАНИЕ

     ЗАЧЕМ НАМ НУЖЕН jargon?

     В нашем скоростном,  заполненном техникой мире на нас оказывается
большое давление с целью получения каких-то результатов.  К сожалению,
быстрота современной техники относится к выполнению программ,  а не  к
их созданию. Когда мы сделали всего лишь третью часть программы, а уже
пора ее предъявлять на рынок - как мы можем создать  впечатление,  что
наш  продукт  делает  больше,  чем  на самом деле?  Необходимо немного
пустить пыль в глаза заказчику. Пускание пыли состоит из фраз, которые
выглядят и звучат впечатляюще.  При строгой проверке мы можем увидеть,
что фраза составлена из настоящих английских  слов,  значение  которых
можно посмотреть в словаре. Эта фраза в целом совершенно бессмысленна,
но если нам повезет, то читатель этого не заметит!
     Одним из  простых способов получения таких вещей является наличие
таблицы взаимозаменяемых слов,  которые можно использовать для состав-
ления  предложений.  Если  у  вас система BSD,  то вы можете запустить
jargon вместе с программой fortune, которая имитирует случайные подар-
ки судьбы. Мудрость веков может принадлежать вам!

     ЧТО ДЕЛАЕТ jargon?

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

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

|
|                 The Jargon Generator
Предыдущая страница Следующая страница
1 ... 34 35 36 37 38 39 40  41 42 43 44 45 46 47 ... 71
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (52)

Реклама