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

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

> как ты определишь, какой файл тебе нужен?

По имени файла, имени параметра в файле или содержащейся в нём информации. Или средствами менеджера пакетов. Или правильно — из документации :)

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

Через запросы к MySQL? Или средствами самой Джумлы? Знаю «веб-программистку», которая оплачивает техподдержку, чтобы ей помогали искать информацию в Джумле.

Ты явно в БД хорошо разбираешься. У большинства людей с этим хуже. Если вынудить всех пересесть на БД, каждый раз придётся подолгу разбирать, что они наворотят.

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

По работе имею дело с программой, которая создаёт даже не 100, а всего порядка 40 -50 веток реестра


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

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

>Стандартной утилитой поиска в реестре. То, что ты написал слово капсом не делает его ужасающим аргументом.

я вот про что вам говорю: предположим, вы сделаете реестр. Ок. И засунете туда утилиту поиска. Ты что, хочешь сказать, что вам удастся создать Тьюринг-полный ЯП для вашей утилитки поиска? Который развивается >30 лет?! Который имеет альтернативы? Не верю. Будет у тебя там тупой find как в regedit'е. А у меня есть sed & awk. Вот только, очень неудобно парсить sed'ом BLOB'ы. Поверь мне. А необходимость sed'ить конфиги - бывает.

Вспомни автостарт в Windows - существует свыше 30 разных мест по всему реестру, где можно стартануть какой-нить вирусняк/кейлоггер/вписать гадость по вкусу. И фиг найдёшь... В отличие от скажем Slackware Linux, которая аккуратно содержит стартовые скрипты в строго отведённых местах. На практике, найти автостарт в Slackware в разы проще чем в Windows. Хотя кажется, что наоборот. Особенно удобно искать информацию в конфигах, которые создаёт сама ОС, например - как узнать какое ПО когда установлено в систему? и какие конкретно файлы? В бинарных дистрах с rpm & dpkg ты устанешь мучать гугл/ман на эту тему. В Slackware для этого достаточно стандартных утилит из codeutils (ls, less, любимый редактор, sed, grep)

Продолжай спорить с собой, я понаблюдаю.

у тебя есть другие предложения? ты собираешься включить в БД индекс по полю «значение»? Знаешь, как на практике приходится править БД? Очень просто: делаем дамп, прогоняем через sed, и заливаем обратно. Всё потому, что встроенных средств самой БД часто недостаточно. Но это тогда, когда БД необходима. И то, всё плохо - смотри, изменилась одна ячейка БД, но для обработки/бекапа тебе приходится сливать сотни метров (а то и больше!) дампа. Да, и VCS не привинчивается к БД - потому как не тексмтовая это БД (даже если там текстовые данные).

Да, и ещё: для эффектного управления твоей гипотетической ОС с реестром мне нужно скурить over9000 манов, и выучить специализированный ЯП (который ты туда впихнёшь). Для управления slackware, где всё на текстовых конфигах и bash-скриптах мне не нужно ничего учить: я и так УЖЕ всё знаю. sed ты не привинтишь к своему реестру, придётся тебе либо городить своё, либо оставить только самый примитив как в венде. Вердикт - фтопку. Хотя идея да, красивая. Только не нужная. Реестр целесообразен лишь на десктопе с Win95, где 10 установленных программ. Для чего-то более функционального реестр слишком не масштабируем. А для чего-то более мелкого (роутер например) реестр избыточен.

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

> Для управления slackware, где всё на текстовых конфигах

О, это ключевой момент для понимания писанины этого луддита ))

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

нет, не всё, по частям. не весь же реестр сразу блокируется.

RedPossum ★★★★★
()

Отличная идея универсализации! мне нравится, и у меня как раз в нескольких программах нужно ввести конфиги, однако можно ли узнать ответы на следующие вопросы, которые для меня не очевидны: 1). как я понял пока нету единой реализации db в ядре, поэтому какую базу данных вы посоветуете использовать. просто в последнее время очень много холиваров на эту тему и я не знаю что выбрать, так же сейчас модное направление NoSQL и многие люди не хотят видеть sql сервера у себя на компе. 2). Где можно прочитать об авторизации программы на сервере? Как моя программа сможет объяснить, что это именно она и имеет право изменять структуру и вобще данные в таблицах. 3). Как я должен реализовывать многопользовательскую конфигурацию программы? во всеми текущими возможностями системы 4). Так же вы писали про удобные стандартные программы работы с реестром, где я могу их посмотреть? 5). Так же мне хотелось бы попробовать стандартную библиотеку для работы с такими конфигами 6). Насколько переносима ваша система на другие платформы?

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

Какой то бред.

я вот про что вам говорю: предположим, вы сделаете реестр. Ок. И засунете туда утилиту поиска. Ты что, хочешь сказать, что вам удастся создать Тьюринг-полный ЯП для вашей утилитки поиска? Который развивается >30 лет

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

Вспомни автостарт в Windows - существует свыше 30 разных мест по всему реестру, где можно стартануть какой-нить вирусняк/кейлоггер/вписать гадость по вкусу. И фиг найдёшь...

В ляликсе одно ядро стартует как минимум два процесса - hotplug и init. По факту есть еще слушающие netlink умники. Ты в конфигурационном дерьме этих вот вещей давно бывал? Вспомнишь сходу куда надо смотреть что бы найти всё, что запускается? ) Про то что стартует йузерспейсное говно можно просто молчать. Всё на скриптах

Да, и ещё: для эффектного управления твоей гипотетической ОС с реестром мне нужно скурить over9000 манов, и выучить специализированный ЯП (который ты туда впихнёшь).

ГАГАГАГА

no comments

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

Итак, ты создал «стандартную точку восстановления» и изменил 18 параметров у 4 программ. Теперь откати из своей «стандартной точки восстановления» 2 параметра для одной программы. А также, например, определи чем отличияются настройки 5-й программы на двух соседних компьютерах. Как научишься делать это - возвращайся, будешь обьяснять очередному идеологу насколько текстовый читабельной конфиг лучге блоба.

no-dashi ★★★★★
()
Ответ на: комментарий от vasily_pupkin

1). удобный редактор настроек хранящихся в ldap в студию
2). а заодно и по половине пунктов настроек в т.ч. чтобы обычный пользователь домашнего компа смог это настроить без двух недельных проблем.
3). ну и напоследок аргументацию того, что все настройки можно отобразить в key-value хранилище

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

>Попробуй придумать зачем это нужно в унифицированном хранилище.

sed'ить БД? ну а как я поменяю скажем все eth0 на eth1? ручками? как в венде?

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

потому-что написать однострок на sed дело 5и минут. написать парсер на скажем php - дольше. Да и не факт, что у нас есть этот php. А как чужие скрипты запускать? Например я нагуглил однострок на ruby, которого не знаю, где гарантия, что он не сделает rm -rf ? sed есть везде, в ЛЮБЫХ системах.

Потом попробуй придумать что будет, если хранилище будет находится на локальном узле только частично.

не вижу проблемы. вам запрещено обрабатывать удалённые файлы? мне проще набрать ssh sed... Чем ломать себе голову, как подключить по этому-же ssh ваш regedit.

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

Ты уже научился восстанавливать из «стандартной точки восстановления» только требуемые изменения? Нет? Тогда брысь отсюда

no-dashi ★★★★★
()
Ответ на: комментарий от qnikst

1) ldapvi
2) што? удобный редактор по половине пунктов настроек? это как?
3) это всегда так, если у вас «настройки», а не исполняемый кусок кода, отчужденная логика программы. Это тоже можно запихать в хранилище, как value. Целиком.

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

сейчас винты идут терабатными размерами. с сотнями мегабайт ты переборщил, а вот десятки мегабайт для крупных приложений - вполне можно пережить. btw, Adobe Creative Suite после установки весит гигов 13...

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

Учитывая, сколько в линуксе «базарных» проектов, с введением реестра проблема станет ещё острее, чем для оффтопика.

базарные проекты и программеры не осилившие потратить 2 часа на изучения орма - не нужны, закапывай

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

>Какое слово тебе не понятно в «стандартные точки восстановления»? ))

мне все слова понятны. смысл фразы не ясен. это-же что-то вендовое? В Linux'е сделать «точку восстановления» очень просто: пишем cp programm.conf programm.conf.old и - ВСЁ. Можно всю /etc забекапить. Можно делать это по расписанию. Как это сделать с реестром - решительно непонятно (разве что dd весь хард. что и практикуют маздайщики). Будете наворачивать туда свой планировщик+архиватор? Вы мне ещё ЯП Тьюринг-полный не сделали. ;)

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

Кто не способен навести порядок в одной таблице, тот тремя положение только усугубит.

на одной таблице неудобно хранить граф

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

Что тебе не понятно в словосочетании «точка восстановления»? Ради интереса, как ты восстанавливаешь только требуемые значения из своей «стандартной» /opt/backup/*.tar* ?

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

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

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

cat /etc/httpd/conf/httpd.conf | grep include
ls -l /etc/httpd/conf.d/*.conf
ls -ld /etc/sysconfig/*

no-dashi ★★★★★
()
Ответ на: комментарий от question4

> виндовая реализация ... часто оказывается невозможно работать без прав суперпользователя

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

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

У нас уже есть такой реестр. /etc имя ему.

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

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

намекает на универсальность, независимость от ОС синтаксического анализа.

ага, и каждый раз нужно велосипедить этот синтаксический анализ заново

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

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

man на пакетный менеджер твоего дистрибутива. там это есть.

дистрибутиво-специфично -> не нужно

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

>Вы путаете хранилище данных, доступ к данным в хранилище и методику его обработки в одну кучу. В этом проблема.

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

проблемы у пользователей реестра.

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

Им действительно неоткуда взяться, потому что всё свалено в одну помойку. Это верно

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

и он специфичный для каждого дистрибутива отдельно.

тебе никогда не приходилось поработать в винде, когда Documents and Settings находятся не на диске C:, или не на диске где стоит винда? Попробуй, узнаешь много нового о том, к чему приводят привычки к «стандартному расположению». Кроме того, формально Debian/FEdora/Slackware/Arch это разные ОС, общего у них только API.

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

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

значит у вас неправильная ОС. мне root не нужен.

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

> Кастую стандартный sed реестра, стандартный diff реестра, стандартный patch реестра, стандартную VCS реестра etc.

для универсального реестра всё это необходимо будет написать. и vcs тоже, да.

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

Именно синтаксис — не нужен. Правила его написания хотя бы не меняются. А тут то пробелы значимые, то ещё что.

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

> тебе никогда не приходилось поработать в винде, когда Documents and Settings находятся не на диске C:

в винде положение стандартных папок прописано в реестре. Например, можно пользователю guest положить файлы не в стандартную папочку C:/Users/guest, а в... С:/Windows/Temp/looser. А расположение важных папок вообще забиндено на переменные окружения (C:/Windows -> %SYSDIR%, или как-то так.. не помню, да и неважно в мане есть). А если программеры пишут прогу из предположения что файлы лежат по уже устаревшему адресу «Documents and Settings» (сейчас вместо этого используется Users), то это злостное ССЗБ.

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

>для универсального реестра всё это необходимо будет написать. и vcs тоже, да.

стандартный cron реестра, стандартный ls реестра, стандартный DVCS реестра, стандартный... Это сколько-же метров займёт?! А сколько памяти пожрёт? (как я понимаю, база с обвязкой должна постоянно висеть в памяти?)

Может семёрочку правильнее и проще?

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

> А помнить значения каких-то полей БД всё равно придётся.

не факт.

[code]
Settings settings = new Settings()
settings.setScreenSize = new SettingScreenSize(640,480,32,59);
Registry registry = OS.getRegistry();
registry.save(«org.myapp.settings»,settings)
[/code]

а как это будет храниться - уже не мое дело. Как реализация реестра решит это хранить, так и будет.

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

Я хочу, что бы у меня поле description базы passwd имел доступ только юзер vasya

Для редактирования атрибутов учетных записей предназначены утилиты passwd, usermod, chfn и другие. Потому, что юзера vasya в /etc/passwd нет, а он есть например в /var/lib/mysql/userdb/users.

no-dashi ★★★★★
()
Ответ на: комментарий от drBatty

> Может семёрочку правильнее и проще?

если чо, MS уже сколько лет мечтает вместо файловой системы использовать базу данных. Хотели впилить в висту, да ниасилили. В десяточке точно будет )

stevejobs ★★★★☆
()

>А что бинарный нельзя?

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

- Единый формат. Одни программы легко меняют конфиги других.


Вот это как раз и основная причина глючности виндового реестра

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

> Через запросы к MySQL?

да дались тебе эти SQL. Запросы всё равно надо скрывать слоем абстракции. Хотя бы ормом каким-нибудь.

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

>Ты что, хочешь сказать, что вам удастся создать Тьюринг-полный ЯП для вашей утилитки поиска? Который развивается >30 лет?! Который имеет альтернативы? Не верю. Будет у тебя там тупой find как в regedit'е. А у меня есть sed & awk.

sed & awk тьюринг полные? Какие извращения, оказывается, существуют в мире линукс…

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

>Можно но любой неправильный символ может привести к непредсказуемым последствиям.

В этом смысле xml-конфиг ничем не лучше бинарного


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

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

>А если программеры пишут прогу из предположения что файлы лежат по уже устаревшему адресу «Documents and Settings» (сейчас вместо этого используется Users), то это злостное ССЗБ.

не ССЗБ. это «забота» о своих юзверях. И вы таки не рассказали, как это исправить? В Linux тоже бывает быдлокод, который требует например ../../../../lib/libexec/astral.so.6.6.6, при этом astral.so.6.6.6 имеет жуткую дыру, и её все заменили на 6.6.6a. Все, кроме автора прожки. В Linux можно сделать symlink, а что делать в венде?

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

Другой пример: что делать со старой прогой, которая понимает только koi8-r? или с новой, например с WinRAR? мириться с кракозябрами?

Яркий пример - сама венда, где в дампе regedit'а UTF-16, в текстовом редакторе CP1251, а в консоли CP866. Ну и как мне из своей программы что-то писать в Users? Если это Users на самом деле Users/вася ?

Вы хотите такое счастье перенести в Linux? Не надо.

PS: как сделать симлинк на куст реестра?

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

>если чо, MS уже сколько лет мечтает вместо файловой системы использовать базу данных. Хотели впилить в висту, да ниасилили. В десяточке точно будет )

файловая система == БД. так, между прочим...

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

> Яркий пример - сама венда, где в дампе regedit'а UTF-16, в текстовом редакторе CP1251, а в консоли CP866. Ну и как мне из своей программы что-то писать в Users? Если это Users на самом деле Users/вася ?

какой-то идиотский способ аргументации в треде:
на каждый чих очередная порция бреда про вантуз, а вроде про linux тут ...

Другой пример: что делать со старой прогой, которая понимает только koi8-r?


а не трогать это, пусть само отомрет.

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

В текстовом редакторе там давно уже есть юникод, с новым годом.

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