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 и т.п.
- Легко связать со справкой даже для текстового интерфейса (см. пред пункт)
- Единый формат. Одни программы легко меняют конфиги других.

★★★★★

Так вот деточки, послушайте старого дядю... %-)))

В светлом будущем будет у вас и реестр и база и быстрый бинарный поиск всего нужного вконфиге.

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

XML->SQL->Binary Database file...

Да будет так!

Deleted
()
Ответ на: комментарий от megabaks

и это говорит нытик неосиливший найти конфиги в своём дистре

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

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

воот, в тред вошли люди с правильным состоянием сознания =)

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

>я люто бешено плюсую систему, в которой конфиги никто не правит за ненадобностью.
таких НЕ СУЩЕСТВУЕТ!
впринципе!
иначе кастую пруф на хомпагу!
и да - ЛЮБАЯ настройка - это правка конфига!
через как и куда править - не суть!

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

Хотя главный демон не нужен. Я его не знаю нафига написал...

Yareg ★★★
()

Чем конфиг в арче не реестр? Там ведь конфиги всего в одном конфиг файле, и сеть, и прочая фигня?

firestarter ★★★☆
()

Читать Реймонда по два часа вечером натощак.

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

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

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

Хватит тут хаскеллить и факториалить. Вот http://pastebin.com/QTig3Ev0 маленький конфиг, приведите пример структуры таблицы.

Tark ★★
()

> - Равноправие текстового (или еще какого там)и графического конфигураторов. Если в этом, так называемом реестре, сделать схемы, то строить GUI можно будет быстро и просто, гораздо проще чем писать парсер конфига.

Какие схемы? Какое равноправие? Зачем реестр, если там тоже perl и sed? Никакой конкретики.

- Легко связать со справкой даже для текстового интерфейса (см. пред пункт)


Там ничего не понятно.

- Единый формат.


ПЛОХАЯ идея.

melkor217 ★★★★★
()

Вот конкретный маленький пример простого конфига из 23 строк. Приведите хотя-бы примерную оптимальную структуру БД.

понятия не имею. Чесна. По мне так все эти конфиги - зло, и они должны генериться автоматически на основе текущего состояния программы. Можно в какую-нибудь no-sql бд, если так уж тебя пугают таблички. А что и как в этой бд будет храниться - пусть бд сама и решает. Мое дело в нее объекты сохранить и получить назад когда потребуется.

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

>они должны генериться автоматически на основе текущего состояния программы

Тогда что станет с конфигами, если программа упадёт?)

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

но на каждом сервере поднимать базу и репликацию(пусть и скриптом) ради нескольких десятков килобайт файлов кажется немного оверхедом.

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

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

>понятия не имею. Чесна. По мне так все эти конфиги - зло, и они должны генериться автоматически на основе текущего состояния программы. Можно в какую-нибудь no-sql бд, если так уж тебя пугают таблички. А что и как в этой бд будет храниться - пусть бд сама и решает. Мое дело в нее объекты сохранить и получить назад когда потребуется.
Вооот, мы уже на верном пути. И чем сохранение объектов в no-sql базу отличается от сериализации объектов в формате YAML на диск?

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

Хранить все пароли на бумажке, приклеенной к монитору :)

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

Тогда что станет с конфигами, если программа упадёт?)

если в момент падения прога писала что-то в конфиг, то транзакция отменяется, и конфиг возвращается назад на момент до начала транзакции. Если не писала - не происходит ничего, прога перезапускается и читает что там в конфиге понаписано.

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

И чем сохранение объектов в no-sql базу отличается от сериализации объектов в формате YAML на диск?

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

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

>Тогда что станет с конфигами, если программа упадёт?)

Конфиги в линуксе нужны оттого, что программы падают. Так и запишем.

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

Ты просто так написал, как будто бы никакой операции сохранения и нет. Как в ФантомОС)

Yareg ★★★
()

Черт с ним с реестром и БД. Главное, что большинство поделок работает по схеме «считать конфиг - начать работу - ... - завершить работу - сохранить конфиг». Благодаря этому, в 2010 году видим чудеса типа сбивания всех настроек из-за падения (которое между прочим не только самой программой вызвано может быть). Слово «надежность» многие похоже не слышали.

PayableOnDeath
()

> А что бинарный нельзя? Можно сделать редактор который будет выглядеть как текстовый, будет маленьким и удобным,

То есть, он будет выглядеть как vim, а не как emacs. Щас начнется :-)

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

Идите в ж#пу. Нет ничего лучше текста и магомед пророк его. Я посмотрю как вы на форум будете выкладывать свой бинарный конфиг на форум в случае проблем.

На удаленном сервере, система обычно крутится годами, и ее админит куча приходящих-уходящих людей... Отсюда - revision history конфига, а так же комментарии в оном часто просто бесценны, и поэтому любой формат идет в лес.

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

gods-little-toy ★★★
()
Ответ на: комментарий от stevejobs

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

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

>И чем сохранение объектов в no-sql базу отличается от сериализации объектов в формате YAML на диск?

Чем это будет принципиально отличаться от нынешних конфигов?

RedPossum ★★★★★
()

Лирическое отступление: недавно у родителей комп в выньХП был заблокирован всплывающим порнобаннером. А я как семь лет назад на линух перешёл, так с виндой дела и не имел. Забыл уже всё. Первой мыслью линуксоида было загрузиться как-нибудь, разобраться с системой инициализации и вручную удалить зловредный процесс. Нихрена не получилось, потому что сложно всё очень. А вот разобраться с SysV или bsd-like init'ом в нормальной оси --- как два байта переслать.

Отсюда мораль: всё должно быть сделано тупо и просто. А вы с вашими бд-реестрами в ядре ступайте в анус ничистой собаки.

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

>Можно так и хранить плэйн-текст для сложных стурктур...
Таким образом вместо написания парсера, мы пишем клиент к БД и парсер.

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

> если вообще все программы будут вообще все данные хранить в одной и той же бд унифицированным способом (а сама бд, вместе с так ее за ногу, репликацией

синхронной или асинхронной? И где конфигурацию репликации хранить? Тоже в реплицируемой бд?

gods-little-toy ★★★
()
Ответ на: комментарий от RedPossum

>Чем это будет принципиально отличаться от нынешних конфигов?
Ничем, это в сущности они и есть.

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

если все программы будут хранить конфиги в ямле, причем этот конфиг можно будет однозначно получить независимым от дистрибутива и ОС способом - я согласен)

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

> В светлом будущем будет у вас и реестр и база и быстрый бинарный поиск всего нужного вконфиге.

А что, сейчас поиск медленный? Приведите ссылку на то, чтобы кто-то где-то имел проблемы со *скоростью поиска в конфиге* !!!???!!

gods-little-toy ★★★
()

1) По любому придётся писать слой совместимости. Как вариант, виртуальная ФС для /etc, где всё в классическиих форматах. Возможность залезть текстовым редактором в конфиг и поправить что-то должна быть всегда.

2) Реестр как в винде - говно. По сути, просто бинарная база таблиц. Параметр и число/строка. При этом монструозный интерфейс обращения к нему располагает превращать реестр в помойку. Взять винду - там часто хранится то, что должно лежать в /var.

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

4) Подразумевается, что конфиг в /etc это нечто либо не требующее вмешательства пользователя (подавляющее большинство программ). Или, как в крутых серверных программах, всё документировано. При этом можно (например, в ejabberd) не вникая поменять true на false пару раз и прописать вместо hostname.domain требуемый домен, чтобы всё заработало.

5) Всё равно не будет нормальной единой программы редактирования конфигов. Сейчас они привязаны к грамматике, а будут к именам полей и отношений в базе.

6) Универсальная модель «для всего» всегда слишком громоздко и неповоротливо. Экономия времени разработчика весьма сомнительная, многие предпочтут и дальше делать конфиги в таком формате, в каком программе удобнее с ней работать.

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

>об этих деталях можно подумать позднее.
Дизайнерским духом пахнет...

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

> несколько пользователей одновременно правят несколько взаимосвязанных конфигов нескольких программ. На файлах это кошмар.

приведи практический сценарий где такое происходит, и приводит к какому-то осмысленному результату.

gods-little-toy ★★★
()

> Обычно выдвигается аргумент типа «Текстовый конфиг можно править текстовым редактором». А что бинарный нельзя?

Вообще-то нельзя.

Можно сделать редактор который будет выглядеть как текстовый, будет маленьким и удобным, его без проблем можно будет использовать на том самом удаленном сервере, о котором так часто пишут oldschool'ные тролли.


Этот маленький редактор выплюнет в лучшем случае XML. Это единственное, чем можно объединить множество сложных вариантов конфига.

НИКТО не будет редактировать XML.

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

если все программы будут хранить конфиги в ямле

Осталось уговорить всех программистов. Займись этим.

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

> если все программы будут хранить конфиги в ямле, причем этот конфиг можно будет однозначно получить независимым от дистрибутива и ОС способом - я согласен)

При портировании между дистрибутивами и ОС есть гораздо более серьёзные проблемы, учесть несколько путей конфига - мелочь.

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

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

ничего страшного, т.к. изменение в

 /home/masha/.coolprogramrc
никак не скажется на
 /home/pasha/.coolprogramrc

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

А по делу, объясните мне недалёкому, чем текстовые конфиги отличаются от реестра.

Понятно, что про бинарники ТС дал маху, но оставим это на его совести.

Вот давайте подойдём с такой стороны - если я просто в FS упорядочу конфиги с помощью дерева каталогов, типа /etc - корень, /etc/sys - системные настройки, /etc/home - точка монтирования ветви пользователя физически лежащей в /home/etc, /etc/hrd - всё что касается железа и etc.. :)

Вплоть до листьев типа /etc/home/gnome/apps/MyCoolApp/main.conf.

ФС при этом даёт нам кучу возможностей по представлениям с помощью тех же симлинков.

Например мы можем иметь /etc/apps/MyCoolApp/home и /etc/apps/MyCoolApp/share которые будут симлинками (ну или наоборот) на /etc/home/gnome/apps/MyCoolApp и /etc/share/gnome/apps/MyCoolApp соответственно.

Так вот - это уже реестр или ещё текстовые конфиги?

Suntechnic ★★★★★
()

Вот, mono идею подкинул. Сделать прослойку, которая представляет конфиг в универсальном формате. А откуда брать конфиги и как парсить - свалить на прослойку. Возможно, именно сделано в GSettings, но достоверно проверить не удалось.

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

портирование не нужно

если программа может все ресурсы получить с помощью универсальных дистро-независисых запросов, то для нее все дистрибутивы одинаковы

выборку таких параметров можно, кстате, также встроить в тот самый «реестр». в ветку HKEY_CURRENT_CONFIG/Distro/Generic oh shi~!!!

или что, есть какие-то вещи, которые так принципиально нельзя получить?

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

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

Способ получения у тебя сливается со способом хранения. Посмотри мой пост чуть выше.

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