Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
- | [[UNИX, осень 2007, 04 лекция (от 26 октября)|Предыдущая лекция]] | [[UNИX, осень 2007, 06 лекция (от 09 ноября)|Следующая лекция]]
| + | == From Ebaums Inc to MurkLoar. == |
- | | + | We at EbaumsWorld consider you as disgrace of human race. |
- | '''Официальная страница:''' http://uneex.cs.msu.su/uneex/LecturesLinuxSoft2007/04_StartFromDesktop
| + | Your faggotry level exceeded any imaginable levels, and therefore we have to inform you that your pitiful resourse should be annihilated. |
- | | + | Dig yourself a grave - you will need it. |
- | <div class="comment">Лектор опоздал потому, что ему надо было забрать железяку. Железяка интересная. Те ребята, которые собирали китайские железяки, клеили на них «сделано в России» и продавали туда, где нельзя покупать китайское железо, стали делать тонкие клиенты, но оказалось, что тонкие клиенты не просто больше, чем монитор, нужна ещё прошивка, прошивку сделали какую-то свою на основе Gentoo, и лектору надо было объяснять, что ему прошивка не нужна, нужна только железка, и памяти доставить. В итоге оказалось, что дешевле купить обычный комп.</div>
| + | |
- | | + | |
- | Про то, что видит человек после того, как загрузился Linux. На прошлой лекции был продемонстрирован диалог новичка и гуру, и из них были вычленены два вопроса решаемых:
| + | |
- | * Консоль
| + | |
- | * Добыча информации из дистрибутива
| + | |
- | | + | |
- | Linux отличается от других коммерческих поделок тем, что снабжается большим количеством документации разных уровней, но проблема в том, что сейчас документации столько много, что её уже проблемно запаковывать всю в дистрибутив, ибо это уже информационное пространство. Тем не менее, мы решаем проблемы в порядке поступления, но если нет привычки сначала читать документацию, а потом делать, то возникает проблема — необходимо разобраться в том, что на экране. А на экране не Linux, а графическая оболочка. Лектор так твёрдо утверждает, что это не Linux, потому что это (то, что видит пользователь после загрузки ОС, графическая оболочка) изменчиво, вариабельно, и зависит от того, что установлено. Если же в случае Mac OS с её замечательной Aqua'ой всё приблизительно одинаково, то в случае с Linux, который сам по себе (то есть, ядро) графической оболочки не имеет и которая ставится отдельно и совершенно произвольно, это не так.
| + | |
- | | + | |
- | == Изучение рабочего стола == | + | |
- | | + | |
- | === Состав ===
| + | |
- | Спецсимволами «(x)» могут отмечаться необязательные компоненты рабочего стола. Таки образом, что включает в себя то, что видит пользователь:
| + | |
- | * (х) Регистрация в системе. Нормальные UNIX-системы требуют логин и пароль, эта процедура запроса может быть как вполне текстовая, а быть и графическая (xdm/gdm/kdm), а может и вообще не быть (это называется автологин). Например, совершенно бессмысленно спрашивать логин-пароль, если загружаешься с Live CD, ну и для удобства пользования всяких людей, которым не до логина и не до пароля, оно может быть отключено.
| + | |
- | * Рабочий стол
| + | |
- | ** (х) Иконки на рабочем столе. Это такая незначащая часть. Иконки на рабочем столе — быстрый доступ к каким-то файлам-каталогам-программам
| + | |
- | ** (х) Панели. Постоянно присутствующая на экране хреновина, выполняющая какие-то функции: часики отображает, кнопка «Пукс» <!-- авторское — eSyr --> («путь к социализму») — метаменю. Панель выполняет функцию визуализационную. Панель быстрого доступа (запуска). Практически то же самое, что и на рабочем столе, но сгруппировано в одном месте. Ящики выдвижные с быстрым запуском. Системный лоток. Список задач запущенных. Довольно удобная штука, которую придумали в Apple — меню приложения.
| + | |
- | * (х) Виртуальные экраны и панель от них. Что такое виртульаные экраны — дисплей один, а графическая система делает вид, что их несколько, и разные окна могут регистрировать себя на разных экранах
| + | |
- | * (х) Постоянное меню
| + | |
- | * (х) Меню в окне
| + | |
- | * (х) Сводные меню приложений
| + | |
- | * (х) Клавиатурные сокращения, работа с раскладкой, и др.
| + | |
- | * (х) Оконный декоратор, управление окнами. Приложение не рисует обычно декорацию, оно должно отрабатывать события. Отрисовкой рамки занимается декоратор.
| + | |
- | | + | |
- | Мы описали всё, но, как оказалось, всё это опционально. Из таких кусочков состоит рабочий стол, но он (как можно видеть) может и не состоять. Поэтому от того, что может быть переходим к тому, как это устроено.
| + | |
- | | + | |
- | === X-сервер ===
| + | |
- | Почему графическая среда устроена так гибко? Почему всё необязательно? А что обязательно? Обязательна ровно одна вещь — X-сервер. Много-много лет назад существовала такая ОС, которая называлась The V System. Поскольку она была никакая не свободная, не открытая и была ровно до тех пор, пока ей какая-то контора занималась. Для неё была граф. оболочка W System, она каким-то чудом выжила и перекочевала в МИТ, где продолжила развиваться по уже университетским стандартам и называлась Xwindow System. Эта графоболочка построена по клиент-серверной технологии. Сервер умеет выполнять какие-то графические команды: нарисуй прямоугольник, напечатай то-то. Это не простые команды, а специализированные под взаимодействие с другими программами. Второе свойство Х-сервера --- он опрашивает устройства ввода-вывода --- мышь и клавиатура. То есть, граф. сервер это такой терминал в самом общем понятии, то есть оконная программа, которая взаимодействует с пользователем. Это называется Х-сервер. Существует множество программ Х-клиентов, которые делают ровно то же самое, но со своей клиентской части, то есть посылают команды и обрабатывают данные об устройствах ввода-вывода. Взаимодействие между клиентом и сервером происходит любым способом: через сеть, через файл-дырку...
| + | |
- | | + | |
- | Где-то в то же время изобреталась оконная система, и понятие окно тесно связано с клиент-сервером. То есть, приложению выделяется место, при попаданию курсором (например) в которое все события будут передаваться ему. Потом выяснилось, что курсор --- неудобно, и появилось понятие фокуса, нам необязательно опираться на положение курсора, мы просто говорим, что есть окно, и оно получает события. Понятно, что это понятие условное, и пикселы возбуждения не испытывают от того, что он в фокусе. Фокус мышкой удобен, когда она рядом, если же она уползает постоянно, то это не очень удобно. Бывают и другие способы. Опять же, вспоминаем другие не столь гибкие оболочки, где всё это прибито гвоздями.
| + | |
- | | + | |
- | Взаимодействие клиента и сервера строго стандартизированно, и называется x11.
| + | |
- | | + | |
- | Два варианта подключения по сети:
| + | |
- | * ip-based. Всем клиентам с этого ip можно работать с сервером
| + | |
- | * на той машине, где стоит сервер, генерируется mit magic cookie, магическую печеньку имени МИТ, и доступ к ней имеет тот, кто её создал, эту печеньку можно отдать кому-нибудь ещё. И с использованием этой печеньки можно ходить к серверу.
| + | |
- | | + | |
- | В переменной окружения DISPLAY указывается адрес х-сервера, по умолчанию :0.0 (формат address:screen:display)
| + | |
- | | + | |
- | Ранее было сказано, что х-сервер работает с устройствами ввода и видеокартой. Но это неправда. Не смотря на наличие mit magic cookie, протокол ненадёжный, печеньку можно перехватить, завалить оригинал, но думать об этом нужно только в том случае, если вы об этом думаете, вряд ли, если в комнате стоят три компьютера, то вы вряд ли будете оставаться спокойным, если вдруг одна машина умерла, а за другой сидит какой-то волосатый дядька и радостно потирает руки. Поэтому для того, чтобы запустить х-клиенты, надо куда-то залогиниться. А поскольку логин обычно надёжный (secure-shell), то осталось попросить программу, которая его организует, одну вещь --- туннелировать х-протокол. То есть, на удалённой машине просто работает х-сервер, который перенаправляет запросы.
| + | |
- | | + | |
- | Ещё бывает xprint и х-сервер в окне.
| + | |
- | | + | |
- | Это самый базовый уровень.
| + | |
- | | + | |
- | === Необязательные элементы. Оконные мэнеджеры ===
| + | |
- | Разумеется, этого недостаточно. Вспомним тот список, который был стёрт, и решим её методом: "одна задача-одна программа". Это вообще идеология unix, не делать комбайнов, которые постоянно разваливаются, а делать несколько отдельных программ, которые хорошо делают свою работу, и потом налаживать взаимодействие между ними.
| + | |
- | | + | |
- | Первое, что надо решить --- управление окнами. Это решается тривально в плане инжиниринга, и эту задачу решили порядка 3 десятков программистких групп, существует порядка 30 window-manager'ов. Обычно, помимо посылания разных команд приложениям, он рисует ещё и рамочку.
| + | |
- | | + | |
- | Ещё --- меню. Можно встроить в window-manager, но может быть та же.
| + | |
- | | + | |
- | Виртуальные рабочие столы. Можно встроить в оконный менеджер, можно запустить специальную прокладку.
| + | |
- | | + | |
- | Панели. Этим разным панелям могут соответствовать разные программы.
| + | |
- | | + | |
- | Иконки на рабочем столе.
| + | |
- | | + | |
- | Никакой метафоры «рабочий стол» нет. Кто обязан представить рабочее пространство в виде рабочего стола? Никто, пока вы не попросите. И программа нарисует ещё несколько окошек, точно таких же. Другое дело, что вы их рассматриваете как иконки.
| + | |
- | | + | |
- | Оконный менеджер --- программа особая, в частности, он делает то, чего не делают другие программы. Он берёт на себя все события, а потом только отдаёт их другим окнам. Например, фокус.
| + | |
- | | + | |
- | Таким способом, unix-way, мы сконструировали себе вполне осмысленное рабочее место.
| + | |
- | | + | |
- | Дополнительно можно добавить различные дополнительные приложения, например, часики, которые рисуют себя где-нибудь поверх всего.
| + | |
- | | + | |
- | Примеры:
| + | |
- | * twm --- самая старая
| + | |
- | * fvwm
| + | |
- | * *box --- самый первый blackbox, fluxbox....
| + | |
- | * icewm --- в альтлинух используется как самый лёгкий wm
| + | |
- | * ion
| + | |
- | * wmii
| + | |
- | * 9wm --- оконный менеджер из plan9. Пример wm. Котрый занимается только окнами, меню делает 9menu
| + | |
- | * встроенные в desktop enviroment менеджеры --- metacity, kwin
| + | |
- | | + | |
- | === Недостатки ===
| + | |
- | | + | |
- | Из-за разрозненности плохо организуется межпроцессное взаимодействие в плане обмена информацией, например, буфер обмена предназначен только для текста. Если надо копировать графику, размеченный текст и т. п., нужно использовать что-нибудь другое.
| + | |
- | | + | |
- | {{UNИX, осень 2007}}
| + | |
- | {{Lection-stub}}
| + | |