Редактирование: UNИX, осень 2007, 06 лекция (от 09 ноября)

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.

Текущая версия Ваш текст
Строка 5: Строка 5:
В прошлый раз говорили про то, что человек видит, впервые загрузив Линух, и эти впечатления сильно разнятся.
В прошлый раз говорили про то, что человек видит, впервые загрузив Линух, и эти впечатления сильно разнятся.
-
В прошлый раз был рассказ про клиент-серверную модель, ей больше 20 лет. И то ли потому, что эту разработку подхватил МИТ, то ли люди, которые занимались этой разработкой, не поскупились на ум, что архитектура оказалась настолько всеобъемлющей, что ещё 3---4 года назад в ней не надо ничего менять, и другие оконные системы потихоньку догоняли, вот, в Висте анонсировали передовую технологию --- ядро отдельно от оконной системы, хотя бы частично. Но, тем не менее, особенно с выходом очередного МакОС 10 выяснилось, что Х.Орг надо бы доработать. Доработать в части программно-интерфейсной, например, там не специфицировано, что такое иконка.
+
В прошлый раз был рассказ про клиент-серверную модель, ей больше 20 лет. И то ли потому, что эту разработку подхватил МИТ, то ли люди, которые занимались этой разработкой, не поскупились на ум, что архитектура оказалась настолько всеобъемлющей, что ещё 3---4 года назад в ней не надо ничего менять, и другие оконные системы потихоньку догоняли, вот, в Висте анонсировали передовую технологию --- ядро отедельно от оконной системы, хотя бы частично. Но, тем не менее, особенно с выходом очередного МакОС 10 выяснилось, что Х.Орг надо бы доработать. Доработать в части программно-интерфейсной, например, там не специфицировано, что такое иконка.
-
== Организация рабочего стола ==
 
В прошлой части мы выяснили, что для организации рабочего стола существует следующее:
В прошлой части мы выяснили, что для организации рабочего стола существует следующее:
* Х-сервер (+окно + фокус) --- определяет фреймворк
* Х-сервер (+окно + фокус) --- определяет фреймворк
Строка 24: Строка 23:
* Копирование совпадает с выделением
* Копирование совпадает с выделением
-
Кроме праймари буффера есть секнодари и дерево подбуферов... Х11 это такая программа, которая за 25 лет обросла таким количеством вещей, что никто уже и не помнит, что это и зачем.
+
Кроме праймари буффера есть секнодари и дерево подбуферов... Х11 это такая программа, которая за 25 лет обросла таким количеством вещи, что никто уже и не помнит, что это и зачем.
Все перечисленные пункты делаются с помощью отдельных программ:
Все перечисленные пункты делаются с помощью отдельных программ:
* Десктоп --- у icewm есть idesk (?), который делает рабочий стол и отделён от wm
* Десктоп --- у icewm есть idesk (?), который делает рабочий стол и отделён от wm
* Кучи программ для разных панелей
* Кучи программ для разных панелей
-
* XhotKey --- поддержка горячих клавиш
+
* XhotKey ---
* Klipboard --- собирает то, что копирует пользователь...
* Klipboard --- собирает то, что копирует пользователь...
-
== Потребность в объектной модели ==
 
Что с помощью отдельных программ не делается:
Что с помощью отдельных программ не делается:
* Нет полноценного драг-н-дропа объектов.
* Нет полноценного драг-н-дропа объектов.
Строка 41: Строка 39:
** встроенные окна
** встроенные окна
*** трей
*** трей
-
* Startup-shutdown notification --- если в консоли интерфейс управления совмещён с интерфейсом передачи данных, и там явно видно, когда запустилось приложение, как оно работает и как умирает; в случае с оконной системой действия по запуску и завершению могут никак не обозначаться визуально. В принципе, если бы народ соблюдал некую дисциплину программирования, то это можно было бы организовать даже на уровне наборного десктопа: был такой xtoolwait, который ждал, пока запущенное приложение зарегистрирует окно через xtool. Это решение, которое позволяет разруливать race condition, но возникает непонятное требование использовать xtool, ну и отслеживать хочется не только запуск.
+
* Startup-shutdown notification --- если в консоли интерфейс управления совмещён с интерфейсом передачи данных, и там явно видно, когда запустилось приложение, как оно работает и ка умирает; в случае с оконной системой действия по запуску и завершению могут никак не обозначаться визуально. В принципе, если бы народ соблюдал некую дисциплину программирования, то это можно было бы организовать даже на уровне наборного десктопа: был такой xtoolwait, который ждал, пока запущенное приложение зарегистрирует окно через xtool. Это решение, которое позволяет разруливать race condition, но возникает непонятное требование использовать xtool, ну и отслеживать хочется не только запуск.
* Документация. С одной стороны, документации полно, с другой, нигде не написано, что её полно, пользователю нужно решать конкретной проблемы, контекстная справка
* Документация. С одной стороны, документации полно, с другой, нигде не написано, что её полно, пользователю нужно решать конкретной проблемы, контекстная справка
* Интерфейс с системой. Граф. система сама по себе, система сама по себе. Всё это замечательно, только непонятно, как открыть флешку.
* Интерфейс с системой. Граф. система сама по себе, система сама по себе. Всё это замечательно, только непонятно, как открыть флешку.
-
Ни одна из этих задач не является неразрешимой, отличие в том, что если предыдущие задачи решаются в соответствии со стандартом х11, то есть, классически, и если нет у вас меню, запустили одну из десяти имеющихся, и будет вам меню, или свой photkeys, который поддерживает vaio, или ещё что-нибудь. Тут же, если хочется скопировать файл из одной программы в другую, то нужно, чтобы сначала программы договорились, нужен фреймворк. И садятся ребята и пишут фремворк, некий абстрактный рабочий стол, который оперировал бы не с окнами, а с объектами, и позволял с этими объектами работать.
+
Ни одна из этих задач не является неразрешимой, отличие в том, что если предыдущие задачи решаются в соответствии со стандартом х11, то есть, классически, и если нет у вас меню, запустили одну из десяти имеющихся, и будет вам меню, или свой photkeys, который поддерживает vaio, или ещё что-нибудь. Тут же, если хочется скопировать файл из одной программы в другую, то нудно, чтобы сначала программы договорились, нужен фреймворк. И садятся ребята и пишут фремворк, некий абстрактный рабочий стол, который оперировал бы не с окнами, а с объектами, и позволял с этими объектами работать.
-
В прошлом семестре говорилось, что графический интерфейс --- матрица пикселей, то рабочий стол --- работа с объектами. То есть нужна объектная модель, поверх которой всё будет работать. Так сделали ребята из кде. Кроме этого, нужна единая интерфейсная библиотека (например, qt). И если две программы написаны на qt, то они смогут обмениваться объектами. Так, собственно, и сделано в виндовсе --- там есть винапи, точнее был, пока не появился дотнет, и винапи теперь не поддерживается. Так что wine поддерживает винапи, а виндовз --- всё меньше.
+
В прошлом семестре говорилось, что графический интерфейс --- матрица пикселей, то рабочий стол --- работа с объектами. То есть нужна объектная модель, поверх которой всё будет работать. Так сделали ребята из кде. Кроме этого, нужна единая интерфейсная библиотека (например, qt). И если две программы написаны на qt, то они смогут обмениваться объектами. ТаК, собственно, и сделано в виндовсе --- там есть винапи, точнее был, пока не появился дотнет, и винапи теперь не поддерживается. Так что wine поддерживает винапи, а виндовз --- всё меньше.
Но теперь надо делать все программы с поддержкой этого всего. Иначе возвращаемся к тому, с чего начали. В итоге, каждый фреймворк имеет свою объектную модель, свою интерфейсную библиотеку, свой десктоп и свой набор ПО.
Но теперь надо делать все программы с поддержкой этого всего. Иначе возвращаемся к тому, с чего начали. В итоге, каждый фреймворк имеет свою объектную модель, свою интерфейсную библиотеку, свой десктоп и свой набор ПО.
-
== Существующие решения ==
 
Таких проектов не так много, это KDE, Gnome, GNUSTEP. Среди этих трёх интересен наиболее последний, он написан действительно абстрактно от графической подложки, авторы вдохновились nextstep'ом. Проект живой, у них есть релизы, в последнем году выиграли двух студентов в google soc. Написан он на objective c (?), хороший язык, только его никто не знает.
Таких проектов не так много, это KDE, Gnome, GNUSTEP. Среди этих трёх интересен наиболее последний, он написан действительно абстрактно от графической подложки, авторы вдохновились nextstep'ом. Проект живой, у них есть релизы, в последнем году выиграли двух студентов в google soc. Написан он на objective c (?), хороший язык, только его никто не знает.
Строка 60: Строка 57:
Скорее всего, то, что вы увидите, будет либо гном, либо kde, реже xfce. Ещё есть rox, на который лектор в своё время возлагал большие надежды.
Скорее всего, то, что вы увидите, будет либо гном, либо kde, реже xfce. Ещё есть rox, на который лектор в своё время возлагал большие надежды.
-
Но тут возникает проблема: такие вещи, как интерфейс с системой, подсистема помощи, и так далее, представляете себе уровень бессмысленной работы --- дали много денег и написать огромную графическую конфигурилку для системы, которая отвечает на вопросы типа «где моя флешка», она смотрит на системные логи и показывает всё пользователю. Но чреез полгода мог поменяться формат системных сообщений, линукс тоже не стоит на месте, кде изменяется. Первая проблема в том, что взаимодействие с системой и внешними источниками активности --- задача двойная и очень большая работа. Поэтому, сколько бы не писались такие программы, это работа на вчера.
+
Но тут возникает проблема: такие вещи, как интерфейс с системой, подсистема помощи, и так далее, представляете себе уровень бессмысленной работы --- дали много денег и написать огромную графическую конфигурилку для системы, которая отвечает на вопросы типа «где моя флешка», она смотрит на системные логи и показывает всё пользователю. но чреез полгода мог поменяться формат системных сообщений, линукс тоже не стоит на месте, кде изменяется. Первая проблема в том, что взаимодействие с системой и внешними источниками активности --- задача двойная и очень большая работа. Поэтому, сколько бы не писались такие программы, это работа на вчера.
-
Вторая проблема состоит в том, что все программы должны быть собраны с использованием этой системной библиотеки. Если запустить гткшное приложение в кде, то (по крайней мере, лет 5 назад), общаться с ним можно не более, чем в рамках х-протокола. Потому что оно не знает о кдешной модели.
+
Вторая проблема состоит в том, что все программы должны быть собраны с использованием этой системной библиотеки. Если запустить гткшное приложение в кде, то )по крайней мере, лет 5 назад(, общаться с ним можно не более, чем в рамках х-протокола. Потому что оно не знает о кдешной модели.
Всё это вплоть до настройки цветовых схем. Вот поменял фон программы. потом выясняется, что пользуешься не одной программой, а тридцатью, и как поменять у них всех? Существует xresources --- способ настройки всех иксовых программ одновременно. Организован он в виде единого дерева. Если есть окно класса window и с заголовком terminal, то к нему можно обратиться как через класс, так и через название.
Всё это вплоть до настройки цветовых схем. Вот поменял фон программы. потом выясняется, что пользуешься не одной программой, а тридцатью, и как поменять у них всех? Существует xresources --- способ настройки всех иксовых программ одновременно. Организован он в виде единого дерева. Если есть окно класса window и с заголовком terminal, то к нему можно обратиться как через класс, так и через название.
.window.menu:«qq»
.window.menu:«qq»
-
Если хочется специфицировать для всех окон сразу, то можно использовать звёздочку: *.background:gray
+
Если хочется специфицировать для всех окон сразу, то можно использовать звёздочку:
 +
*.background:gray
Если бы это всё писала одна команда, то можно было договориться о едином именовании и было бы хорошо.
Если бы это всё писала одна команда, то можно было договориться о едином именовании и было бы хорошо.
Строка 76: Строка 74:
* Не надо вести двойную разработку
* Не надо вести двойную разработку
* Проще объединить усилия, чем разъединять
* Проще объединить усилия, чем разъединять
 +
* Artwork --- иконки. В танго уже 1500 иконок
-
Artwork --- иконки. В танго уже 1500 иконок
 
- 
-
== freedesktop ==
 
В момент, совпавший с разделением xfree86 и ... зародилась организация freedesktop, freedesktop.org, которая занимается двумя вещами:
В момент, совпавший с разделением xfree86 и ... зародилась организация freedesktop, freedesktop.org, которая занимается двумя вещами:
* Разработка некоторых проектов
* Разработка некоторых проектов
Строка 86: Строка 82:
Что есть в этом драфте:
Что есть в этом драфте:
* DnD --- проблема почти решённая
* DnD --- проблема почти решённая
-
** Ещё не поддержано, но предлагается
+
** Ешё не поддержано, но предлагается
*** передача файлов --- direct save. Вопрос, что нужно с этим файлом нести
*** передача файлов --- direct save. Вопрос, что нужно с этим файлом нести
*** uri
*** uri
Строка 107: Строка 103:
* Курсоры
* Курсоры
-
== dbus ==
+
В линуксе, а также и во freebsd используется общая шина передачи данных --- dbus. Люди,работающие линуксом, знают её в связке с hal в качестве связки работы железа и приложений. Всё это уехало в будущее --- передавать по dbus настройки и power management.
-
 
+
-
В линуксе, а также и во freebsd используется общая шина передачи данных --- dbus. Люди, работающие с линуксом, знают её в связке с hal в качестве связки работы железа и приложений. Всё это уехало в будущее --- передавать по dbus настройки и power management.
+
{{UNИX, осень 2007}}
{{UNИX, осень 2007}}
{{Lection-stub}}
{{Lection-stub}}

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Личные инструменты
Разделы