Re[16]: Э.Реймонд "Искусство программирования для Unix"
От: Дарней Россия  
Дата: 25.08.05 11:51
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Ну так файлы конфигов тоже, в общем-то, общедоступны (с учетом прав,

C>естественно). Так что тут вопрос уже доверия к приложению.

На самом деле проблема даже не в злонамеренных прогах. Нередко бывает так, что прога портит чужую ветку просто по причине криворукости автора (см также про нецелевое использование веток)
Залезть в чужой файл конфига по ошибке — это существенно сложнее даже для самого криворукого программера
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[9]: Хранение настроек приложения
От: Cyberax Марс  
Дата: 25.08.05 12:53
Оценка:
WFrag wrote:

> C>А вообще, работа с реестром не должна быть

> C>обычным делом — нужны специальные графические оболочки для нужных
> C>настроек. Например, "Control Panel".
> А если хочется сделать нечто не задуманное изначально в утилите настройки?

Тогда welcome to regedit, или welcome to WMI в WindowsXP.

> Собственно, предлагаю прочитать (если не читал) правило разделения

> (Rule of Separation: Separate policy from mechanism; separate
> interfaces from engines) в книге "The Art of Unix Programming". И
> сказать, в чем ты с ней не согласен.

Оно хорошо подходит для программирования, но не для пользовательского
интерфейса.

> Утилиты обработки текстов общего назначения (find, grep, sed, etc)

> заведомо покрывают большую функциональность, чем ты можешь покрыть в
> своей оболчке для настройки чего-либо.

Блин, мне не нужно покрывать большую функциональность, мне даже не нужно
покрывать всю функциональность. Мне лишь нужно сделать 99% самых часто
используемых функций легкодоступными из GUI. Для остального — есть
скриптовой интерфейс.

Так что ли сложно понять?

> Зачем отбирать возможность использовать эту мощь? Хочется высокого

> уровня и простоты — используй утилиты настройки, фронтенды. Но зачем
> их ставить во главу угла?

А затем, что они УДОБНЫ для использования.

> Например, я запросто могу положить свой /etc в CVS. Реестр — нет.


А tdsam базу из Samba? Или там базы mysql'а?

> Или пустить поиск по сложному критерию.


Можно.

> Или найти разницу между двумя версиями конфига.


regdiff.exe

> И для этого мне не нужны специальные утилиты.


Что такое "специальные утилиты"?

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[9]: Хранение настроек приложения
От: Cyberax Марс  
Дата: 25.08.05 12:57
Оценка:
punk4 wrote:

> C>Ну так сделайте программу, которая будет интерпретировать реестр как

> C>текстовый файл. Кстати, реестр можно править в виде .reg-файлов,
> которые
> C>абсолютно текстовые.
> Да уж, абсолютно, вот вам значение произвольно из первого попавшегося
> места
> {23170F69-40C1-278A-1000-000100020000}
> расскажите ка мне что он оно значит?????

Расскажите, что значит "szap -n 1 -x"?

Уже запустили man? Так вот, я уже запустил MSDN.

> C>У меня реестр достпен как виртуальный каталог в FAR'е, так что все

> C>спокойно делается без мышки. А вообще, работа с реестром не должна быть
> C>обычным делом — нужны специальные графические оболочки для нужных
> C>настроек. Например, "Control Panel".
> А у меня конфигурационные файлы доступны в vi, vim, joe, emacs и что вам
> еще будет угодно

Но вот, к сожалению, не доступны из центрального удобного пользователю
средства конфигурирования. Всякие webmin'ы пока еще не очень развиты.

> при желании хоть в Worde можно править с использованием

> всей мощи которую предлагает то или иное средство. IMHO панимание приходит
> быстрее и лучше когда руками и головой делаешь а не галки ставишь в окнах.

Да ничерта оно не приходит быстрее.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[10]: Хранение настроек приложения
От: WFrag США  
Дата: 25.08.05 13:07
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Оно хорошо подходит для программирования, но не для пользовательского

C>интерфейса.

Почему? Идея проста — не навязывай жестких ограничений. plain-text конфигурация содержит минимум оных. Хочешь высокоуровневый интерфейс — пожайлуста, пиши фронтенд! Хочешь низкоуровневый текстовый — пожайлуста, используй готовые сто-лет-назад-написанные тектовые утилиты!

А, например, при скриптовом подходе тебе уже навязываются ограничения. В виде онтологии (понятий и их связи) конфигурационного файла. Ты уже не можешь трактовать данные просто как текст (например, чтобы сделать тот же diff), ты вынужден трактовать их как осмысленные данные со строгой структурой.

C>Блин, мне не нужно покрывать большую функциональность, мне даже не нужно

C>покрывать всю функциональность.

О чем и речь — тебе не нужно. Мне — нужно. Не всегда, но как запасной вариант чтобы был.

C>Мне лишь нужно сделать 99% самых часто

C>используемых функций легкодоступными из GUI. Для остального — есть
C>скриптовой интерфейс.

C>Так что ли сложно понять?


Скриптовый интерфейс — это не то. Он все равно задает ограничения. Пример — текстовый diff. Работает с любым тектовым файлом (конечно, при соблюдении этим файлом неких разумных ограничений на структуру).

C>А затем, что они УДОБНЫ для использования.


Ну так и сделай их именно фронтендами к текстовым конфигам.

C>А tdsam базу из Samba? Или там базы mysql'а?


ХЗ что это. Я про настройки говорю, кои в /etc.

C>Можно.


Ну, скажем, найти и заменить по регекспу. Опять отдельная утилита? Почему бы просто не воспользоваться уже готовым, скажем sed?

C>Что такое "специальные утилиты"?


regdiff.exe
Re[11]: Хранение настроек приложения
От: Cyberax Марс  
Дата: 25.08.05 13:21
Оценка:
WFrag wrote:

> C>Оно хорошо подходит для программирования, но не для пользовательского

> C>интерфейса.
> Почему? Идея проста — не навязывай жестких ограничений. plain-text
> конфигурация содержит минимум оных. Хочешь высокоуровневый интерфейс —
> пожайлуста, пиши фронтенд! Хочешь низкоуровневый текстовый —
> пожайлуста, используй готовые сто-лет-назад-написанные тектовые утилиты!

Ну так для реестра тоже давно уже нужные утилиты написаны, и
высокоуровневый интерфейс делать значительно удобнее, так как API для
доступа к реестру уже давно есть.

> А, например, при скриптовом подходе тебе уже навязываются ограничения.

> В виде онтологии (понятий и их связи) конфигурационного файла. Ты уже
> не можешь трактовать данные просто как текст (например, чтобы сделать
> тот же diff), ты вынужден трактовать их как осмысленные данные со
> строгой структурой.

Я могу сделать из реестра .reg-файл со всеми вытекающими последствиями.

> C>Блин, мне не нужно покрывать большую функциональность, мне даже не

> нужно
> C>покрывать всю функциональность.
> О чем и речь — тебе не нужно. Мне — нужно. Не всегда, но как запасной
> вариант чтобы был.

Так он есть — реестр прекрасно доступен для утилит. А для работы с
устройствами вообще есть специальный скриптовой интерфейс WMI.

> C>А затем, что они УДОБНЫ для использования.

> Ну так и сделай их именно фронтендами к текстовым конфигам.

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

> C>А tdsam базу из Samba? Или там базы mysql'а?

> ХЗ что это. Я про настройки говорю, кои в /etc.

Ну так там далеко не все есть.

> C>Можно.

> Ну, скажем, найти и заменить по регекспу. Опять отдельная утилита?
> Почему бы просто не воспользоваться уже готовым, скажем sed?

Экспортируем нужный ключ в .reg и дальше sed'ом. Потом имортируем
обратно в реестр, причем все это можно сделать через пайпы в лучшем
стиле Юникса.

А еще можно использовать WMI:
Set colItems = objWMIService.ExecQuery("Select * from 
Win32_ComputerSystem",,48)
For Each objItem in colItems
objTextFile.WriteLine("Manufacturer: " & objItem.Manufacturer)
objTextFile.WriteLine("Model: " & objItem.Model)
objTextFile.WriteLine("Name: " & objItem.Name)
objTextFile.WriteLine("NumberOfProcessors: " & objItem.NumberOfProcessors)
objTextFile.WriteLine("TotalPhysicalMemory: " & objItem.TotalPhysicalMemory)
objTextFile.WriteLine("UserName: " & objItem.UserName)
Next


> C>Что такое "специальные утилиты"?

> regdiff.exe

Ну так diff тогда тоже специальная.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[12]: Хранение настроек приложения
От: mibe  
Дата: 25.08.05 13:33
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

C>А какая разница? Вы же не сравниваете файлы с помощью прямого чтения

C>диска, вы пользуетесь API для работы с FS.

тут у меня скорее претензия, что это API не такое же как для работы с ФС. то есть что реестр концептуально похож на ФС, но не является ФС.
--
Far.Net
Re[12]: Хранение настроек приложения
От: raskin Россия  
Дата: 25.08.05 17:20
Оценка:
Cyberax wrote:
> Еще в Win3.0 для поддержки OLE.
Но его погром, кажется, не был так опасен.
>> > Ну никто не говорил, что реестр — идеален. Но вот для первой реализации
>> > — вполне ничего.
>> Но только зачем?
> Унифицировать формат файлов с конфигами.

Прыжок — попытка улететь. А если нужны чуть сложнее что делать?

>> > diff для реестра давно написан. У меня называется regdiff.exe —

>> > сравнивает между собой reg-файлы и ветки рееста.
>> Это буду знать. Но сравнивает он не копии dat-файлов, а всё-таки
>> reg-файлс реестром. Так я могу и 2 reg-файла сравнить (так я делал).
>
> А какая разница? Вы же не сравниваете файлы с помощью прямого чтения
> диска, вы пользуетесь API для работы с FS.
>
> Хотя утилиты для сравнения физических файлов реестра тоже есть — их
> обычно используют при восстановлении системы после сбоев.

Да, это я ерунду сказал про то, что с чем.

>> Кроме того, отсутствие интерфейса ФС не даёт читать реестр

>> проводником+блокнотом, а требует пользоваться конкретным GUI или его
>> аналогами (с похожим видом).
>
> У меня используется плугин к FAR'у, который позволяет ходить по реестру
> (в том числе и удаленному или в виде reg-файла) как по обычному диску.

Ну, это существует, но Вы же сами говорили "а если ничего не
прикручивать, а чтоб работало..". Мне удобно не вылезать из ViM. И по
файлам ходить им (да, урезано. Но иногда достаточно + привычка, что copy
в командной строке набирать не проблема). И я не уверен, есть ли решение
для ViM.

>> Хотя уже существуют текстовые. Деланье boot-дискет реестр усложняет

>> (возможно, теперь это менее актуально). Он
>> лишняя сущность, от которой много зависит и которую нельзя игнорировать.
>
> Ну так конфиг-файлы — тоже усложняют создание boot-дискет. Они тогда
> тоже — лишняя сущность?

Что надо на Rescue (не привязывая к системе)? Интерпретатор команд,
драйвера для чтения с разных устройств — возражений нет. Наверное,
что-то для работы с текстом. Редактор, вроде как. Небольшой. Критичные
куски настроек. Без перечисленного обойтись — можно, но не хочется. Под
любой ОС. И тут — что-то для реестра. Содержащее фактически драйвер и
дублирующее редактор. Либо имеющее расходы на сопряжение с редактором.
Если бы была идея "храните настройке на спец. разделе (можно loopback),
и это обычная ФС" — было бы легче.
Posted via RSDN NNTP Server 2.0 beta
Re[14]: Э.Реймонд "Искусство программирования для Unix"
От: raskin Россия  
Дата: 25.08.05 17:24
Оценка:
Cyberax wrote:
> Ну в юниксах так и делают. В моем /etc/passwd есть: qmaild, qmails,
> qmailr, qmailq, qmailp, mysql, nobody, identd, irc, gnats, ejabberd,
> Debian-exim, majordomo и еще штук пять.

Это не то, это для демонов — и, как правильно сказал Влад, чтобы если
что — зараза не полезла. А вот в LFS на полном серьёзе рекомендуется
система управления приложениями, когда *все* (а не только постоянно
меняемые/настроечные) файлы *любого* (не только сетевого) приложения
имеют свой UID. В том числе UID libc и libstdc++ разный.
Posted via RSDN NNTP Server 2.0 beta
Re[16]: Э.Реймонд "Искусство программирования для Unix"
От: raskin Россия  
Дата: 25.08.05 17:26
Оценка:
Cyberax wrote:
> Ну так файлы конфигов тоже, в общем-то, общедоступны (с учетом прав,
> естественно). Так что тут вопрос уже доверия к приложению.

Ну, тут, по слухам (не пробовал) ввели SELinux, который позволяет ТАКОЕ
начудить.

А проверенный метод — запускать под chroot. Но это, увы, требует прав root.
Posted via RSDN NNTP Server 2.0 beta
Re[17]: Э.Реймонд "Искусство программирования для Unix"
От: Cyberax Марс  
Дата: 25.08.05 17:51
Оценка:
raskin wrote:

>> Ну так файлы конфигов тоже, в общем-то, общедоступны (с учетом прав,

>> естественно). Так что тут вопрос уже доверия к приложению.
> Ну, тут, по слухам (не пробовал) ввели SELinux, который позволяет ТАКОЕ
> начудить.
> А проверенный метод — запускать под chroot. Но это, увы, требует прав
> root.

Кстати, в Винде есть runas (и программные API для имперсонации), который
работает под любым пользователем — нужно только знать credential'ы
пользователя, под которым приложение запускается.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[15]: Э.Реймонд "Искусство программирования для Unix"
От: Cyberax Марс  
Дата: 25.08.05 17:53
Оценка:
raskin wrote:

>> Ну в юниксах так и делают. В моем /etc/passwd есть: qmaild, qmails,

>> qmailr, qmailq, qmailp, mysql, nobody, identd, irc, gnats, ejabberd,
>> Debian-exim, majordomo и еще штук пять.
> Это не то, это для демонов — и, как правильно сказал Влад, чтобы если
> что — зараза не полезла.

А что демоны — это не приложения? Хотя смотря какие демоны

> А вот в LFS на полном серьёзе рекомендуется система управления

> приложениями, когда *все* (а не только постоянно
> меняемые/настроечные) файлы *любого* (не только сетевого) приложения
> имеют свой UID. В том числе UID libc и libstdc++ разный.

Идея, кстати, неплохая. Правда тогда поддержка ACLей получается весьма
интересной.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[16]: Э.Реймонд "Искусство программирования для Unix"
От: Quintanar Россия  
Дата: 25.08.05 18:02
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Идея, кстати, неплохая. Правда тогда поддержка ACLей получается весьма

C>интересной.

Опять же в Reiser4 ACL очень органично сделаны. К ним можно обращаться как к файлам.
Re[16]: Э.Реймонд "Искусство программирования для Unix"
От: raskin Россия  
Дата: 25.08.05 18:11
Оценка:
Cyberax wrote:
> raskin wrote:
>> > Ну в юниксах так и делают. В моем /etc/passwd есть: qmaild, qmails,
>> > qmailr, qmailq, qmailp, mysql, nobody, identd, irc, gnats, ejabberd,
>> > Debian-exim, majordomo и еще штук пять.
>> Это не то, это для демонов — и, как правильно сказал Влад, чтобы если
>> что — зараза не полезла.
>
> А что демоны — это не приложения? Хотя смотря какие демоны
Там была идея учётки для paint.
>
>> А вот в LFS на полном серьёзе рекомендуется система управления
>> приложениями, когда *все* (а не только постоянно
>> меняемые/настроечные) файлы *любого* (не только сетевого) приложения
>> имеют свой UID. В том числе UID libc и libstdc++ разный.
>
> Идея, кстати, неплохая. Правда тогда поддержка ACLей получается весьма
> интересной.
Легко — кому нужен apache — в группу. Я не говорил, что идея плоха —
просто как дальнейшее развитие. Идея .. красивая в смысле hack.
Posted via RSDN NNTP Server 2.0 beta
Re[18]: Э.Реймонд "Искусство программирования для Unix"
От: raskin Россия  
Дата: 25.08.05 19:15
Оценка:
Cyberax wrote:
>> > Ну так файлы конфигов тоже, в общем-то, общедоступны (с учетом прав,
>> > естественно). Так что тут вопрос уже доверия к приложению.
>> Ну, тут, по слухам (не пробовал) ввели SELinux, который позволяет ТАКОЕ
>> начудить.
>> А проверенный метод — запускать под chroot. Но это, увы, требует прав
>> root.
>
> Кстати, в Винде есть runas (и программные API для имперсонации), который
> работает под любым пользователем — нужно только знать credential'ы
> пользователя, под которым приложение запускается.

su -c . Про API не скажу сразу, но и без API самому написать замену API
недолго.
Posted via RSDN NNTP Server 2.0 beta
Re[10]: Э.Реймонд "Искусство программирования для Unix"
От: raskin Россия  
Дата: 25.08.05 19:24
Оценка:
Cyberax wrote:
>> >> > Ээээ... А где у вас инкапсюляция данных, например, в apache.conf?
>> >> Во-первых, в том, что в файле не лежат настройки монитора.
>> > А /etc/X11/XF86Config — это галлюцинация?
>> Я имел в виду apache.conf .
>
> Врете. У меня настройки монитора в дефолтном конфиге Дебиана лежат в
> каталоге /etc/apache/../X11! Где же здесь инкапсюляция?

Дебиан крут. Если это умолчание. Но это из серии "сделайте Ваш выбор".

>> Кстати да, галлюцинация для 1/2 Linux-оидов.

>
> Кстати, не меньшая проблема — отсутствие стандартных методов поиска
> конфигов.
>
Документация по программе.. locate conf... Логи (искать по timestamp?).
Дистрибутив, документирующий правила складывания настроек. А так,
конечно, бардак. Но документация часто выручает.

Но поиск по реестру (при небольшой фантазии в названии корневой ветки)
тоже не скучен.
>> Вот Unix-оиды не хотят повторять славный путь.
>> Управление устройствами, кстати, очень стоит хранить текстом — ссоры
>> устройств можно было бы разруливать из-под консоли, предварительно их
>> деинициализировав (а... опять перезагрузка.. за что?).
> У меня конфликт устройств в последний раз был в 99 году (еще на
> материнке с ISA-слотами). Ну а в чем проблема один раз зайти в hardware
> monitor и поправить параметры — не представляю
А сейчас перезагрузка после этого нужна?

>> > Ну так делите по веткам в чем проблемы? Реестр же иерархический.

>> Нет, это-то реестр позволяет. Только в apache.conf пользователь
>> (извините, администратор) решает, что он вынесет, а что оставит в файле.
>
> И что? Пусть в хороших прогах конфиги делятся на HKLM-ные и HKCU-шные.
Не понял. Я имею в виду вынос независимой части файла, чтоб читать не
мешала. Чтоб было как fold в ViM. Но без привязки к средствам. Программа
может, разумеется, обрабатывать переменную структуры своей ветки реестра
(сильно переменную), но это не принято.
Posted via RSDN NNTP Server 2.0 beta
Re[17]: Э.Реймонд "Искусство программирования для Unix"
От: Cyberax Марс  
Дата: 25.08.05 19:58
Оценка:
raskin wrote:

>>> А вот в LFS на полном серьёзе рекомендуется система управления

>>> приложениями, когда *все* (а не только постоянно
>>> меняемые/настроечные) файлы *любого* (не только сетевого) приложения
>>> имеют свой UID. В том числе UID libc и libstdc++ разный.
>> Идея, кстати, неплохая. Правда тогда поддержка ACLей получается весьма
>> интересной.
> Легко — кому нужен apache — в группу.

Неудобно, группы в Винде и Линуксе представлены в виде плоского списка,
и если создавать на каждый Апач по группе, то в этом списке становится
трудно ориентироваться.

> Я не говорил, что идея плоха — просто как дальнейшее развитие. Идея ..

> красивая в смысле hack.

Угу.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[19]: Э.Реймонд "Искусство программирования для Unix"
От: Cyberax Марс  
Дата: 25.08.05 20:01
Оценка:
raskin wrote:

>> Кстати, в Винде есть runas (и программные API для имперсонации), который

>> работает под любым пользователем — нужно только знать credential'ы
>> пользователя, под которым приложение запускается.
> su -c . Про API не скажу сразу, но и без API самому написать замену API
> недолго.

runas в отличие от su после первого логина credential'ы еще умеет и
запоминать. Хотя это при желании и в Линуксе можно сделать.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[17]: Э.Реймонд "Искусство программирования для Unix"
От: Cyberax Марс  
Дата: 25.08.05 20:02
Оценка:
Quintanar wrote:

> C>Идея, кстати, неплохая. Правда тогда поддержка ACLей получается весьма

> C>интересной.
> Опять же в Reiser4 ACL очень органично сделаны. К ним можно обращаться
> как к файлам.

Однако даже в Reiser'е поиск всех файлов с данной entry в ACL занимает
линейное время (и может быть достаточно долгое), так что операции по
установке/удалению приложений будут медленными.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[18]: Э.Реймонд "Искусство программирования для Unix"
От: raskin Россия  
Дата: 25.08.05 20:18
Оценка:
Cyberax wrote:
>> >> А вот в LFS на полном серьёзе рекомендуется система управления
>> >> приложениями, когда *все* (а не только постоянно
>> >> меняемые/настроечные) файлы *любого* (не только сетевого) приложения
>> >> имеют свой UID. В том числе UID libc и libstdc++ разный.
>> > Идея, кстати, неплохая. Правда тогда поддержка ACLей получается весьма
>> > интересной.
>> Легко — кому нужен apache — в группу.
>
> Неудобно, группы в Винде и Линуксе представлены в виде плоского списка,
> и если создавать на каждый Апач по группе, то в этом списке становится
> трудно ориентироваться.

Ну, тогда FS менять, согласен. Хотя зачем весь список когда бы то ни
было читать целиком и глазами — не понял. Добавить пользователя в
группу/добавить группу. Но это дело вкуса.
Posted via RSDN NNTP Server 2.0 beta
Re[20]: Э.Реймонд "Искусство программирования для Unix"
От: raskin Россия  
Дата: 25.08.05 20:20
Оценка:
Cyberax wrote:
>> > Кстати, в Винде есть runas (и программные API для имперсонации), который
>> > работает под любым пользователем — нужно только знать credential'ы
>> > пользователя, под которым приложение запускается.
>> su -c . Про API не скажу сразу, но и без API самому написать замену API
>> недолго.
>
> runas в отличие от su после первого логина credential'ы еще умеет и
> запоминать. Хотя это при желании и в Линуксе можно сделать.

Права root и 1 час — и всё будет наверняка (Это — кратная
перестраховка). В freebsd sudo запоминает — это я знаю.
Posted via RSDN NNTP Server 2.0 beta
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.