[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Изменение раскладки при помощи hal



On Wed, 12 Aug 2009 23:09:51 +0400
Victor Wagner <vitus@wagner.pp.ru> wrote:

> Проблема на самом деле заключается в величине барьера между состоянием
> "пользователь" и состоянием "хакер" (т.е. человек, пытающийся
> разобраться во внутреннем устройстве куска кода и изменить его
> функционирование в желаемую ему сторону). В хорошо устроенной системе
> этот барьер невелик. Например, в классических coreutils каждый кусок
> кода имеет документированный интерфейс и его всегда можно обернуть в
> коротенький шелловский скрипт или алиас, чтобы изменить функционирование
> в нужную сторону. Но вот чтобы залезть внутрь, надо сильно изменить
> режим работы мозгов. Поэтому в нынешней системе даже набор классических
> CLI-утилит хорошо устроенной системой не является. 

Сомневаюсь, что только в нынешней. Всё-таки интерактивные приложения
появились далеко не сегодня. Для неинтерактивных приложений всё просто,
так как у них режим работы как в режиме диалога с человеком, так и из
скриптов, одинаков.

Разлад, как мне кажется, начался с появлением первого интерактивного
приложения, т.е. ещё до появления unix. Причём expect решил задачу
"деинтерактивизации" недостаточно хорошо: слишком многое приходится
изучить для того, чтобы выразить простейшую мысль "сходи telnet-ом на
модем и спроси у него, какой у меня сейчас внешний IP". С приложениями
на ncurses или под x11 ещё хуже: для них нет даже вменяемого аналога
expect-а, который бы не ломался при переставлении двух кнопок местами.

Раз не получается унифицировать интерактивный и неинтерактиный режимы
работы, то надо искать другие пути, как сообщить человеку способ
повторить сделанное. Можно или предъявить легкочитаемый код (но это уже
надо надевать маску хакера), либо сообщить, что было сделано. К примеру,
программы для записи дисков (tkburn и k3b) могут показать, что
использовались mkisofs и cdrecord с такими-то параметрами. К сожалению,
я исчерпал этим примером список известных мне программ, обладающих таким
свойством.

Тут становятся интересны веб-приложения. В силу их технических
ограничений ни один, даже самый изворотливый, автор не сумеет вытащить
всю логику целиком на интерфейсную часть. А отправляемые формы имеют
подписанные вполне человеческим языком поля и легко могут быть
просмотрены сниффером или firebug-ом.  Поэтому записать, а потом
воспроизвести сделанное, модифицировав по аналогии, достаточно просто.
(Разумеется, этот абзац относится только к веб-приложениям, написанным
вручную, а не сгенерённым какими-нибудь richfaces)

Ещё более интересны веб-приложения становятся из-за имеющихся средств
разделения данных и оформления, когда в браузер приходит не непонятная
мешанина из структурных элементов и украшающей их мишуры, а отдельный
xml-ник с данными и отдельная xslt-программка.

Возможно, если бы интерактивная программа только конвертировала нажатия
кнопок, движения мышкой и изменения полей ввода в сообщения к "ядру",
которые бы при желании становились видны оператору, то это бы снизило
порог перехода к программированию. Но тут сразу же возникает вопрос, на
каком уровне абстракции должно происходить общение оболочки с "ядром" и
будет ли вообще достаточно только одного уровня абстракции.

-- 
Alexander Galanin
http://galanin.nnov.ru


Reply to: