LINUX.ORG.RU
ФорумTalks

Реестр! Ы!


0

1

Шучу, не обязательно реестр...

Навеяно срачем не по теме в теме: http://www.linux.org.ru/forum/talks/5707291
«Пост гнева относительно /etc/бла-бла-бла.conf»

Почему когда речь заходит о конфигах и реестре, то oldschool'ные (а может и не oldschool'ные, а просто тролли) *nix'оиды посылают лечиться приверженцев реестра и других БД-образных конфигохранилищь?

То, что в винде реестр представляет собой неудобоваримое нечто еще не означает что нельзя сделать хорошо.
Обычно выдвигается аргумент типа «Текстовый конфиг можно править текстовым редактором».
А что бинарный нельзя? Можно сделать редактор который будет выглядеть как текстовый, будет маленьким и удобным, его без проблем можно будет использовать на том самом удаленном сервере, о котором так часто пишут oldschool'ные тролли.
Можно сделать текстовый интерфейс на уровне файловой системы (Например через FUSE или как часть ядра. Oldschool'ные тролли «Ааа... жуть... Реестр в ядре... Иди на семерочку!»). Пользователь сможет править конфиг как текст, программы будут работать через библиотеку, храниться может это все очень по-разному. Более того, можно будет сделать текстовый интерфейс с разным сиснтаксисом.

Какие я вижу плюсы:
- Равноправие текстового (или еще какого там)и графического конфигураторов. Если в этом, так называемом реестре, сделать схемы, то строить GUI можно будет быстро и просто, гораздо проще чем писать парсер конфига.
Хочешь GUI, а хочешь grep, sed и т.п.
- Легко связать со справкой даже для текстового интерфейса (см. пред пункт)
- Единый формат. Одни программы легко меняют конфиги других.

★★★★★
Ответ на: комментарий от ugoday

Отсюда мораль: всё должно быть сделано тупо и просто


Весь спор идет не из-за формата конфигов, а из-за предполагаемого удобства доступа к ним. Т.е. причиной послужило отсутствия единого стандарта в бесчисленных сборках на базе ядра линукс.
Концепция «реестра», как общей базы данных, вполне здравое предложение. Рассматривайте как еще один инструмент.

TGZ ★★★★
()
Ответ на: комментарий от TGZ

> Весь спор идет не из-за формата конфигов

Концепция «реестра», как общей базы данных


не угадал ;)

melkor217 ★★★★★
()
Ответ на: комментарий от Tark

> Товагищи, давайте без гуйни.
Заметьте, не я про это первый начал? :)

Lumi ★★★★★
()
Ответ на: комментарий от TGZ

спор идет не из-за формата конфигов

Спор идёт именно об этом. Пионеры предлагают заменить проверенные средства UNIX, обеспечивающие мощь, простоту, надёжность, переносимость и отказоустойчивость на совершенно нелепый мегакомбаен, который принципиально лишён всех этих достоинств.

ugoday ★★★★★
()
Ответ на: комментарий от Lumi

Ну, я редактирую конфиг только для apache, ejabberd и ещё кое-чего. Там всё документировано, простой и интуитивно понятный формат конфига, по дефолту лежит в худшем случае файл, где нужно поменять пару строчек. А в каком формате лежит всё остальное - мне глубоко всё равно.

melkor217 ★★★★★
()

Поставь себе семерочку максимальную.

AiFiLTr0 ★★★★★
()
Ответ на: комментарий от Lumi

Безусловно. Нормальным людям свойственно настраивать инструментарий под себя и подстраивать его под текущую задачу.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

> Спор идёт именно об этом. Пионеры предлагают заменить проверенные средства UNIX, обеспечивающие мощь, простоту, надёжность, переносимость и отказоустойчивость на совершенно нелепый мегакомбаен, который принципиально лишён всех этих достоинств.

А я считаю, что пусть каждая программа хранит как хочет. Но неплохо было бы написать прослойку, которая предоставляет конфиг в каком-нибудь страшном универсальном формате. Меня принимаете в свой кружок спорящих?

melkor217 ★★★★★
()
Ответ на: комментарий от melkor217

Так в каждом дистрибутиве ведь есть ГИПы для любителей. А для не-любителей - старый добрый метод правки в любом текстовом редакторе...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от melkor217

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

Lumi ★★★★★
()
Ответ на: комментарий от Eddy_Em

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

melkor217 ★★★★★
()
Ответ на: комментарий от melkor217

пусть каждая программа хранит как хочет.

Это хорошо. У нормальных людей останутся годные текстовые конфиги.

прослойку, которая предоставляет конфиг в каком-нибудь страшном универсальном формате.

А некоторые используют в конфиге тьюринг-полный язык. Даже близко не представлю как это можно представить в виде страшно универсального (но всё же реального) формата.

Меня принимаете в свой кружок спорящих?

заходи.

ugoday ★★★★★
()

В Линуксе мне очень нравится, что путём копирования своего хомячка можно перенести целиком сконфигурированный профайл на другой комп. А можно вообще хомяки по NFS расшарить, что очень удобно в корпоративной среде с централизованной авторизацией. И эти же конфиги динамически править скриптами реализуя «доменные политики» (или как там это в маздаях называется). А как переносить этот РЕЕСТР? Шо переносить, а шо - нет? Да ну его в задницу! Пусть всё будет как есть - просто, удобно и надёжно.

И да, ИДИ НА СЕМЁРОЧКУ!!!111адинадин

Saloed
()
Ответ на: комментарий от Lumi

Олдскул, фигли. Я ещё в школе на уроках труда с помощью напилинга делал годный молоток из большой болванки.

ugoday ★★★★★
()
Ответ на: комментарий от Lumi

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

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

Хотя к чему я это, тут же флейм-тред )

melkor217 ★★★★★
()
Ответ на: комментарий от ugoday

> А некоторые используют в конфиге тьюринг-полный язык. Даже близко не представлю как это можно представить в виде страшно универсального (но всё же реального) формата.

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

melkor217 ★★★★★
()
Ответ на: комментарий от ugoday

У нас в школе тоже была мастерская. :)
Да и в универе год поработали. А до этого про Цинциннати почти ничего и не знал.

Lumi ★★★★★
()
Ответ на: комментарий от ugoday

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

Подстраивайся под инструментарий, забивай шурупы болванкой. Зато универсальный единый подход!

melkor217 ★★★★★
()
Ответ на: комментарий от melkor217

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

melkor217 ★★★★★
()

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

------------------------------------------------------------------------
-- Key bindings. Add, modify or remove key bindings here.
--
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $

    -- launch a terminal
    [ ((modm .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)

    -- launch dmenu
    , ((modm,               xK_p     ), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"")

    -- launch gmrun
    , ((modm .|. shiftMask, xK_p     ), spawn "gmrun")

    -- close focused window
    , ((modm .|. shiftMask, xK_c     ), kill)

     -- Rotate through the available layout algorithms
    , ((modm,               xK_space ), sendMessage NextLayout)

    --  Reset the layouts on the current workspace to default
    , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)

 ....
    -- управление mpc
    , ((modm              , xK_Pause ), spawn "mpc toggle")
    , ((modm              , xK_Prior ), spawn "mpc volume +1")
    , ((modm              , xK_Next  ), spawn "mpc volume -1")
    , ((modm              , xK_Left  ), spawn "mpc prev")
    , ((modm              , xK_Right ), spawn "mpc next")
    ]
    ++

    --
    -- mod-[1..9], Switch to workspace N
    -- mod-shift-[1..9], Move client to workspace N
    --
    [((m .|. modm, k), windows $ f i)
        | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
        , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
    ++

    --
    -- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
    -- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
    --
    [((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f))
        | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
        , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]


ugoday ★★★★★
()
Ответ на: комментарий от Tark

По ссылке маленький кусочек конфига apache. Кто предложит такую структуру БД, от которой не захочется вырвать себе глаза, тот может взять с полки пирожок.

А ты думал - почему II$ такой убогий и не гибкий?.. В M$ не придумали, вот почему.

Saloed
()
Ответ на: комментарий от firestarter

>Чем конфиг в арче не реестр? Там ведь конфиги всего в одном конфиг файле, и сеть, и прочая фигня?
$ grep -v '^#' /etc/rc.conf |wc -l
27
Думаю, всё тут не уместится.

x3al ★★★★★
()
Ответ на: комментарий от ugoday

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

melkor217 ★★★★★
()
Ответ на: комментарий от melkor217

> Хотя к чему я это, тут же флейм-тред )
Я с содроганием вспоминаю тот первый мегафлейм про гномореестр... :D
С тех пор как-то интуитивно тянусь к методам, требующим минимальной ручной правки. В идеале пройтись седом по шаблону конфига и вот оно... счастье.

Lumi ★★★★★
()
Ответ на: комментарий от melkor217

Это не конфиг, это скрипт.

Эта штука настраивает мой XMonad. Это конфиг. Ну уж во всяком случае не скрипт, т.к. это программа на компилируемом языке.

запихать в БД как строку

*** прикрыл морду ладонями.

ugoday ★★★★★
()
Ответ на: комментарий от different_thing

Каждая прога должна хранить (прозрачно) свой конфиг отдельно. Чтобы там не было никакого хлама и ничего лишнего, не касающегося проги


Интересно, зачем тебе знать о том, как именно хранит конфиги программа.

Alsvartr ★★★★★
()
Ответ на: комментарий от ugoday

> Эта штука настраивает мой XMonad. Это конфиг.

Это не конфиг, а скрипт, настраивающий XMonad. Хотя можно, конечно, обозвать конфигом на тьюринг-полном языке.

Ну уж во всяком случае не скрипт, т.к. это программа на компилируемом языке.


Ок, я просто не очень в курсе что с хацкелем там делать принято. Думал что он динамический и, как следствие, почти наверняка интерпретируемый.

melkor217 ★★★★★
()
Ответ на: комментарий от Eddy_Em

делай раз:

% cp /usr/share/xmonad-0.9/ghc-6.12.3/man/xmonad.hs ~/.xmonad

делай два:

% emacs ~/.xmonad/xmonad.hs

И ничего кошмарного тут нет. Приведёный сегмент с настройками mpc --- фактически единственное, что я принёс в исходный конфиг от себя. Для написания

  ((modm              , xK_Pause ), spawn "mpc toggle")
не требуется интеллектуальных сверхусилий.

ugoday ★★★★★
()
Ответ на: комментарий от melkor217

он динамический и, как следствие, почти наверняка интерпретируемый.

он строго шо писец статически типизируемый компилируемый язык. Кстати, динамический (тоже шо писец) лисп --- тоже компилируемый.

ugoday ★★★★★
()
Ответ на: комментарий от Alsvartr

зачем тебе знать о том, как именно хранит конфиги программа.

чтобы знать какой файл открывать и какие настройки прописывать.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Все равно как-то лишнего многовато... То ли дело:

...
LockCommand="chbg -interval 0.1 -effect 1 -randomize -screensaver -R /Data/Photo/Bukovo.org"
ClockCommand="cal"
KeyWinRaise=""
KeyWinOccupyAll=""
KeyWinLower=""
KeyWinClose="Ctrl+Alt+F4"
KeyWinMinimize="Alt+Space"
KeyWinMaximize="Ctrl+Alt+Enter"
KeyWinMaximizeVert="Alt+Ctrl+Up"
KeyWinMaximizeHoriz="Alt+Ctrl+Right"
KeyWinFullscreen="Ctrl+Alt+F"
...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

можно перевести

[((m .|. modm, k), windows $ f i)
        | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
        , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]

на язык key=value?

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

чтобы знать какой файл открывать и какие настройки прописывать.


Нет, я о более низкоуровневых вещах. «должна хранить (прозрачно) свой конфиг отдельно. Чтобы там не было никакого хлама и ничего лишнего».

А по поводу «какой файл открывать» в подходе с БД есть одно рациональное звено - не нужно знать, какой файл открывать. Вообще не нужно беспокоиться о том, что этот файл в другом дистрибутиве может быть совершенно в другом месте.

Alsvartr ★★★★★
()
Ответ на: комментарий от Eddy_Em

правильный ответ: на язык ключ=значение это перевести нельзя.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

> он строго шо писец статически типизируемый компилируемый язык. Кстати, динамический (тоже шо писец) лисп --- тоже компилируемый.

Ну, оптимизирующий компилятор лиспа это очень серьёзная тема. Хоть динамические языки почти бесполезно оптимизировать раньше рантайма, у лиспа там есть некоторые перспективы. И вообще, ту же Scheme многие замечательно оптимизируют в рантайме.

melkor217 ★★★★★
()
Ответ на: комментарий от Alsvartr

Чтобы там не было никакого хлама и ничего лишнего".

Хлам и лишнее --- это БД, которая в данном случае ни к селу, ни к городу.

в подходе с БД есть

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

не нужно знать, какой файл открывать.

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

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

ты не поверишь, я об этом и сейчас не беспокоюсь.

ugoday ★★★★★
()
Ответ на: комментарий от melkor217

оптимизирующий компилятор лиспа это очень серьёзная тема

дык, сделали же.

у лиспа там есть некоторые перспективы.

Судя по шотауту --- один из быстрейших языков, если чо.

ugoday ★★★★★
()
Ответ на: комментарий от Komintern

>если конфиги приложений хранятся в БД, то где хранится конфиг БД?
так и до проблемы останова не долго ))

а почему Tcl/tk включены в питон?

а почему у grub свой драйвер клавиатуры?

dimon555 ★★★★★
()
Ответ на: комментарий от ugoday

Будь добр, представь его в виде БД


Какая именно проблема хранить текст в БД, а не в файлике?

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


Вся проблема в том, что ты пытаешься работать с БД/файликами, а не конкретно с информацией. Весь цимес хранения в БД - это возможность сортировать, искать и деплоить информацию по критериям, отличным от низкоуровневых представлений файловой системы. Таких, как путь до файлика, например. Выложить кусок БД ты можешь очень просто - сформировав нужный запрос и получив на выходе нужную тебе информацию. Не понимаю, в чем проблема.

зато нужно знать какие таблицы редактировать.


Не нужно. Нужно знать, какую информацию редактировать. О таких вещах, как таблицы вообще можно не знать. Никто не предлагает вручную работать с потрохами БД.

ты не поверишь, я об этом и сейчас не беспокоюсь.


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

Alsvartr ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.