скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыРеферат: Администрирование локальных сетей

4.2   X ресурсы

Ресурсы определяют поведение программ (геометрия, цвета, шрифты, поведение клавиатуры, ….). Существует несколько способов позволяющих их изменять:

·     Опции командной строки

·     .Xdefaults файл

·     загрузка ресурсов через менеджер ресурсов

·     application resource файлы (app-delaults файлы)

Менеджер ресурсов xrdb

xrdb [option] filename

основные опции:

                -load                       ресурсы загружаемые из файла перезаписывают сущестивующие

                -merge                    ресурсы загружаемые из файла обьеденяются с сущестивующими

                -remove                 ресурсы указаные в файле удаляются из собственности менеджера

ресурсов.

                -edit                        поместить ресурсы собственности менеджера в файл

Для задания ресурсов используют строку вида:

                [client_name] * resource:  value

или

            [client_сlass] * resource:  value

Имена и классы клиентов

Каждый Х клиент имеет имя и класс. Имя определяет специфического клиента а класс категорию клиента. Ресурсы определенные через имя клиента имеют больший приоритет перед теми что определены через класс клиента. Для лучшего понимания ресурсы определенные через класс пишуться с большорй буквы. Назначить имя клиенту можно при его старте:

xterm –name myTerminal

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

            Xterm.name:                             myTerminal

            MyTerminal*background:                       green

Имена и классы ресурсов

Ресурсы как и классы имеют имена и классы.  Индивидуальные пишутся с маленькой буквы. Ресурс класса всегда ссылается на класс ресурсов. Поэтому если ресурс *background: red  сделает все тоновые цвета красными, то *Background: red сделает красными те ресурсы которые принадлежат к классу Background к которым могут принадлежать cursorColor, pointerColor … Индивидуальные ресурсы всегда имеют приоритет перед ресурсами классов. Это демонстрирует следующий пример ресурсного файла:

            *Foreground:                 red

            Xterm*Foreground:        gray

            Xterm*foreground:         yellow

            Xterm*CursorColor:       green

В именах ресурсов возможно употребление символа * на первом месте. Нарример ресурс *foreground будет обозначать цвет тона всех приложений, в отличии от xterm*foreground только xterm-a.

Типы ресурсов

Помимо того что каждое приложение может использовать свои собственные ресурсы, существует огромное количество стандартизированых ресурсов. Напрример рассмотренные выше цвета которые можно задавать и в RGB представлении (соответствие между именем цвета и RGB содержится в файле /usr/X11/lib/rgb.txt).  Помимо них к стандартным ресурсам относятся геометрические (width, height, column, row), шрифты (Font, FontList, FontSet) и.т.п.

Управление шрифтами

В системе X11 шрифты бывают двух видов: bitmap (растровые) шрифты и  scalable typeface (векторные). Растровый шришт состоит из набора файлов в каждом из которых хранятся символы определенного размера. С растровыми шрифтами напрямую может работать Х сервер и Font сервер. Векторный шрифт перед тем как должен быть выведен на дисплей проходит серию математических обработок после которых он превращается в растровый определенного размера, начертания и.т.п. Если Х сервер желает работать с векторными шрифтами, он должен их получить от Font сервера.

Настройка путей поиска шрифтов. Команда xset.

 В качества источника шрифтов для Х сервера может выступать либо директория, либо Font сервер который принимает соединения на определенный TCP порт (tcp/<hostname>:portnumber).  Путь поиска может быть установлен командой xset.

xset option 

где option может принимать следующие значения:

                q                                              выводит информацию о системе X11 включая fontpath

-fp source[,source …]    удаляет источник с начала (-fp) или с конца (fp-) пути

fp- source [,source]       поиска шрифтов

+fp source[,source …]  добавляет источник к началу (+fp) или к концу (fp+) пути

fp+ source [,source]      поиска шрифтов

fp= source [,source]      назначает fontpath                    

fp default                      сбрасывает fontpath в значение по умолчанию

fp rehash                      заставляет сервер перечитать базу шрифтов (это нужно в тех

случаях когда изменялось содержимое директорий со

шрифтами)

Получение списка шрифтов доступных в системе. Команда xlsfont

xlsfont [-option]

Где option

-display host:display               Х сервер с которого нужно получить листинг шрифтов

-l                                                      генерировать маленький листинг

-ll                                                     генерировать большой листинг

-lll                                                    генерировать очень большой листинг

-n                                                    количество колонок для листинга

-w                                                    ширина каждой колонки для листинга

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

Использование Font сервера.

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

Запуск фонт сервера (если он не был запущен предварительно) осуществляется командой:

/usr/X11/bin/fs –daemon –port <TCP_port>

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

                 /etc/set_parms   font_c-s

Конфигурационный файл фонт сервера находится в каталоге /etc/X11/fs/config . По сигналу SIGUSR1 он перечитывает свою конфигурацию.

Описание шрифтов. XLFD формат.

Стандарт Х11 предусматривает язык описания шрифтов XLFD (X Logical Font description). Согласно ему имя шрифта состоит из 15 позиций разделенных минусами:

FontNameRegistry-Foundry-FamilyName-Weightname-Slant-SetwidthName-AddStyle-Name-PixelSize-PointSize-ResolutionX-ResolutionY-Spacing-AverageWidth-CharSetRegistry-CharSetCoding

Каким именно будет результирующее имя в XLFD формате зависит от типа фонт-запроса к Х серверу. Возможные типы запросов:

                Reference XLFD                  Этот запрос идет при выполнениии команды xlsfonts и имя

берется из файла fonts.dir . Векторные шрифты при этом имеют PixelSize и PointSize нулевыми.

                Request XLFD                     В результате этого запроса будет получено XLFD имя

запрашиваемого шрифта или его алиас из файла font.alias. При этом поля содержащие * (обозначающие любое значение) будут заменены на ?

resolved XLFD                     Это уже точное имя шрифта которое выддается сервером в ответ на запрос. Все поля являются заполненными, но результат может и не совпадать с исходным запросом.

XLFD синтаксис

FontNameRegistry           авторитетный источник который зарегистрировал шрифт. Обычно пустое поле J

Foundry                                имя “оцифровщика”  шрифта

FamilyName                        трейд-марка или коммерческое имя шрифта

WeightName[ext]              относительный вес шрифта (жирность). Для векторных шрифтов может обозначать темность или светлось (параметр ext)

Slant[ext]                             напрвление шрифта (roman, italic, oblique, …) для векторных шрифтов параметр задает наклов в угловых единицах.

SetwithName                      ширина юнита (сжатый или растянутый)

AddStyleName[ext]          название для уникальной идентификации шрифта (serife, cursive, …) В векторных шрифтах определят степень поворота или зеркальность шрифта.

PixelSize[ext]                     высота шрифта в пикселях. Для векторных шрифтов параметр указывает дополнительную растяжку по горизонтали.

PointSize[ext]                     размер кубика в поинтах.

ResolutionX                        Разрешение (горизонтальное и вертикальное) шрифта в

ResolutionY                        пикселях на инч. Если не указано сервер выбирает сам в зависимости от разрешения дистплея.

                                               

Spacing                                расстояние между юнитами в шрифте. (М – фиксированное,

Р – пропорциональное)

AverageWidth                    Cредняя ширина шрифта

CharacterSetRegistry      имя закрепленное X консорциумом за CharacterSetEncoding

CharacterSetEncoding    определяет кодировку

Файл font.dir

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

Файл font.alias

Этот файл так же как и font.dir содержится в каталогах шрифтов и служит для лиасинга

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

            xset fp rehash

а также рестартовывать по сигналу SIGUSR1 фонт сервер.

Администрирование растровых шрифтов.

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

·     Если шрифт не в .pcf формате сконвеертировать его с помощью программы bdftopcf

·     Скомпрессировать шрифт утилитой compress

·     Скопировать в нужную директорию

·     Запустить mkfontdir для модификации fonts.dir файла.

·     Если директория со шрифтами используется только Х сервером то выполнить xset fp rehash , если она используется еще и фонт сервером то рестартовывать по сигналу SIGUSR1 фонт сервер.

Для удаления растрового шрифта из системы Х11 необходимо:

·     Удалить фонт файл.

·     Запустить mkfontdir для модификации fonts.dir файла.

·     Если директория со шрифтами используется только Х сервером то выполнить xset fp rehash , если она используется еще и фонт сервером то рестартовывать по сигналу SIGUSR1 фонт сервер.

Для создания fonts.dir файла достаточно запустить mkfontdir указав ей в качестве аргумента директорию со шрифтами.

Компилирование .BDF шрифтов в .PCF шрифты.

 

Растровые шрифты в системе Х11 могут быть представлены в нескольких формах:

·     .pcf         Переносимый бинарный формат описания шрифта

·     .pcf.Z     компрессированный .pcf

·     .bdf         текстовый формат

·     .bdf.Z     компрессированный .bdf

·     .bcf         компрессированный .bdf

·     .snf         не переносимый бинарный формат шрифта  (использовался до X11R5)

·     .snf.Z      компрессированный .snf (использовался до X11R5)

·     .scf          компрессированный .snf (использовался до X11R5)

·    

Предпочтительным форматом для Х сервера является компрессированый .pcf.

Для конвертации .bdf в .pcf с одновременной компрессией можно воспользоваться командой:

bdftopcf font_file.bdf | compress > font_file.pcf.Z


4.   Программирование на HP-UX

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

                Расмотрим пример компиляции.

$ cc –Aa myprog.c

                Процес компиляции покадет все сообщения (статус,предупреждения, ошибки) на стандартный поток вывода ошибок (stderr). После этого компилятор создаст файл a.out который уже можно запускать. Аналогично можно скомпиларовать Фортрановскую прогамму командой f77. Если програма состоит из несколько файлов, то омпиляция будет выглядет следующем образом:

$ cc –Aa main.c myfunc.c

main.c:

myfunc.c:

после этого можно будет запускать a.out.

Можно сказать что процес компиляции похожий как на рисунке:


На самом деле процесс компиляции намноого сложнее. Этот процес компиляции занимает несколько этапов.

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

2)    После компиляция (этап создания) обьектных файлов запускаеться линковщик (HP-UX linker (ld))

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


Для более детального просмтотра этапов прохождения компиляции, можно посмотреть задав опцию v (verbose)

$ cc -Aa -v main.c  myfunc.c

cc: CCOPTS is not set.

main.c:

/opt/langtools/lbin/cpp.ansi main.c /var/tmp/ctmAAAa16327 -D__hp9000s700 -D__hp9000s800 -D__hppa -D__hpux -D__unix -D_PA_RISC1_1

cc: Entering Preprocessor.

/opt/ansic/lbin/ccom /var/tmp/ctmAAAa16327 main.o -Oq00,al,ag,cn,Lm,sz,Ic,vo,lc,mf,Po,es,rs,sp,in,vc,pi,fa,pe,Rr,Fl,pv,pa,nf,cp,lx,st,ap,Pg,ug,lu,dp,fs,bp,wp! -Aa

myfunc.c:

/opt/langtools/lbin/cpp.ansi myfunc.c /var/tmp/ctmAAAa16327 -D__hp9000s700 -D__hp9000s800 -D__hppa -D__hpux -D__unix -D_PA_RISC1_1

cc: Entering Preprocessor.

/opt/ansic/lbin/ccom /var/tmp/ctmAAAa16327 myfunc.o -Oq00,al,ag,cn,Lm,sz,Ic,vo,lc,mf,Po,es,rs,sp,in,vc,pi,fa,pe,Rr,Fl,pv,pa,nf,cp,lx,st,ap,Pg,ug,lu,dp,fs,bp,wp! -Aa

cc: LPATH is /usr/lib/pa1.1:/usr/lib:/opt/langtools/lib:

/usr/ccs/bin/ld /opt/langtools/lib/crt0.o -u main main.o myfunc.o -lc

cc: Entering Link editor.

Из этого примера можно посмотреть такие этапы

cpp.ansi это С препроцесор после этого запускаеться /lib/ccom – эта програма(компилятор) уже создает файлы. Последний этап это этап создания исполняемого кода, это  Линкер, которые связывает все обьекты .

Что такое Обьектный файл ?

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

Названия делятся на 3 категории:

1)    Локальные обьявления (local definition) – это коды или данные которые могут использоваться только в том обьектном файле где они обьявленые.

2)    Глобальные обьявления (global definition) – это обьявления прорцедур,функций,данных котоые могут быть доступны из других обьектных файлов

3)    Внешние ссылки (extern references) – это обьявления которые глобальный инаходяться в других обьектных файлах.

Для просмотра обявлений успользуеться програма nm.

Этап линкирования.

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

$ cc main.c

/bin/ld: Unsatisfied symbol:

                my_func (code)

Работа с библиотеками

Очень полезным средсвом для хранения сылски реализаций внешних обьявлений есть библиотеки. Стандартная библиотека libc которая содержит «основные» функции для C,Fortran

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.