Для сохранения настроек приложения. Собственно, есть некоторое устоявшееся мнение, что реестр — это зло. Но вот с т.з. разработки, в чем это зло заключается?
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Для сохранения настроек приложения. Собственно, есть некоторое устоявшееся мнение, что реестр — это зло. Но вот с т.з. разработки, в чем это зло заключается?
Что такое реестр? Это такое дерево с именованными ветками и листьями. Что такое файловая система? (Ответ вписать.) В чем принципиальное отличие реестра от файловой системы? (Ответ вписать.)
Из подобного переизобретения велосипедов вытекает то, что:
— нужен специальный огромный API для работы с реестром
— нужна куча специальных тулзов для работы с реестром
— и все равно интерфейс ФС проще и богаче
А миллионы готовых и подходящих средств для работы с ФС не работают:
— его не посмотреть в файловом менеджере и не приложить к письму
— простой backup не сохраняет реестр
— приложение не скопировать на флешку, чтобы запустить у друга
— его нельзя поднять под управлением системой контроля версий
— ...
Шифрование? Права доступа? Эффективное хранение? Получение нотификаций об изменении? Все это есть в ФС.
Здравствуйте, pgregory, Вы писали:
P>Здравствуйте, Воронков Василий, Вы писали:
ВВ>>Для сохранения настроек приложения. Собственно, есть некоторое устоявшееся мнение, что реестр — это зло. Но вот с т.з. разработки, в чем это зло заключается?
P>Что такое реестр? Это такое дерево с именованными ветками и листьями. Что такое файловая система? (Ответ вписать.) В чем принципиальное отличие реестра от файловой системы? (Ответ вписать.)
К чему это? Я задал вполне конкретный вопрос — какие недостатки у реестра для хранения настроек приложения. В этом плане он должен сравниваться не с ФС, а скажем с ХМЛ, который кладется в Isolated Storage.
P>Из подобного переизобретения велосипедов вытекает то, что: P>- нужен специальный огромный API для работы с реестром
АПИ и для других способов нужен. К тому же он есть. Вполне простой и удобный.
P>- нужна куча специальных тулзов для работы с реестром
Кому нужна? Зачем?
P>- и все равно интерфейс ФС проще и богаче
Скажу на ваш манер — что такое ФС? "Я использую ФС для сохранения настроек приложения" звучит несколько странно. Если хотите сравнивать, то приведите конкретный пример для сравнения.
P>А миллионы готовых и подходящих средств для работы с ФС не работают: P>- его не посмотреть в файловом менеджере и не приложить к письму
Зачем его смотреть в файловом менеджере? Кто мешает экспортировать ветку и приложить к письму? А как isolated storage будете прикладывать к письму?
P>- простой backup не сохраняет реестр
Что такое "простой backup"?
P>- приложение не скопировать на флешку, чтобы запустить у друга
Так, давайте не путать теплое с мягким. Приложение можно скопировать на флешку, но при этом не скопируются настройки приложения. Оно может потом даже прекрасно запуститься с флешки, но с дефлотными настройками. Так?
Теперь снова вопрос — с чем сравнивается реестр?
1. Приложение само умеет создавать файлик настройками где-нибудь в MyDocuments. Результат — скопировать просто так нельзя, нужно искать файлик, потом вручную кидать его в нужную папку.
2. Isolated storage — тут вообще фиг скопируешь что-либо ИМХО.
3. Реестр — экспорт ветку, файлик на флешку, на компе друга импорт двойным щелчком. По мне так даже проще чем п. 1.
И? В чем проблема?
P>- его нельзя поднять под управлением системой контроля версий
Это вообще странное что-то. Система контроля версия в которой хранятся конфиги установленных приложений или что?
А файл экспорта можно хранить где угодно.
P>- ...
Да нет, вы уж продолжайте.
P>Шифрование?
Что с чем сравниваем? Если я пишу конфиг в ИНИ-файл у меня ровно те же возможности о шифровании.
P>Права доступа? Эффективное хранение? Получение нотификаций об изменении? Все это есть в ФС.
Вы не забыли, что речь идет о сохрании настроек приложения?
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Для сохранения настроек приложения. Собственно, есть некоторое устоявшееся мнение, что реестр — это зло. Но вот с т.з. разработки, в чем это зло заключается?
С точки зрения разработки разницы нет — что в XML, что в .ini, что в реестр. Разница появляется в процессе эксплуатации. Если настройками в файлах можно управлять теми же способами, что и самим приложением (копировать, переименовывать, дублировать), то настройки в реестре управляются уже через одно место (читай — regedit, regedt32). Ну и добавим сюда обыкновение оставлять хлам в реестре при деинсталляции с сопутствующей перегрузкой и притормаживанием.
ИМХО, реестр полезен только для хранения данных, необходимых для связи системы и приложения. Скажем — список COM-объектов, кодеки, драйвера, и т.п. А индивидуальные настройки приложения пихать в реестр большого смысла нет.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>С точки зрения разработки разницы нет — что в XML, что в .ini, что в реестр.
Реестр предлагает определенную модель доступа к данным, которая в ряде случаев может быть удобна. К примеру, если не хочется сразу вычитывать весь конфиг, а читать и писать его по частям. В реестре это — by design. В ХМЛ и ИНИ придется что-то шаманить самостоятельно.
ГВ>Разница появляется в процессе эксплуатации. Если настройками в файлах можно управлять теми же способами, что и самим приложением (копировать, переименовывать, дублировать), то настройки в реестре управляются уже через одно место (читай — regedit, regedt32).
Ну даже с помощью regedit я не вижу особых проблем с управлением настройками приложения. Не сказал бы я, что там "через одно" место. Те же операции в принципе — скопировать, дублировать, переименовать
ГВ>Ну и добавим сюда обыкновение оставлять хлам в реестре при деинсталляции с сопутствующей перегрузкой и притормаживанием.
Вообще это тоже момент неоднозначный. "Хлам" приложения и в файловой системе оставляют. Я, конечно, понимаю, чем хлам "в папочках" отличается от хлама в реестре, только вот в ФС приложения хранят свои настройки по-разному, иногда вообще нетривиально найти, где у них там конфиг лежит. А в реестре я хоть знаю куда идти и почистить его заметно проще. Даже утилитки специальные есть.
Так что, честно, мне кажется, что эта проблема может быть и имеет место быть, но все же несколько преувеличена.
ГВ>ИМХО, реестр полезен только для хранения данных, необходимых для связи системы и приложения. Скажем — список COM-объектов, кодеки, драйвера, и т.п. А индивидуальные настройки приложения пихать в реестр большого смысла нет.
Так хочется понять, в чем главное зло-то. Действительно есть устоявшееся мнение, что реестр — это как бы не очень хорошая штука. Но если задуматься, то что-то проблем особых не видно
Здравствуйте, Воронков Василий, Вы писали:
ГВ>>С точки зрения разработки разницы нет — что в XML, что в .ini, что в реестр. ВВ>Реестр предлагает определенную модель доступа к данным, которая в ряде случаев может быть удобна. К примеру, если не хочется сразу вычитывать весь конфиг, а читать и писать его по частям. В реестре это — by design. В ХМЛ и ИНИ придется что-то шаманить самостоятельно.
Нет никакой проблемы в том, чтобы разбить настроечный файл на несколько файлов и таким образом читать/писать настройки по частям. Тогда как каждый дополнительный ключ в реестре косвенно сказывается на работе всей системы.
ВВ>Ну даже с помощью regedit я не вижу особых проблем с управлением настройками приложения. Не сказал бы я, что там "через одно" место. Те же операции в принципе — скопировать, дублировать, переименовать
Тут неприятность в дополнительном поиске содержимого в реестре, правильном его экспорте/импорте и далее по списку. Во всяком случае, пользователю это не столь привычно, как копирование файлов.
ГВ>>Ну и добавим сюда обыкновение оставлять хлам в реестре при деинсталляции с сопутствующей перегрузкой и притормаживанием.
ВВ>Вообще это тоже момент неоднозначный. "Хлам" приложения и в файловой системе оставляют. Я, конечно, понимаю, чем хлам "в папочках" отличается от хлама в реестре, только вот в ФС приложения хранят свои настройки по-разному, иногда вообще нетривиально найти, где у них там конфиг лежит. А в реестре я хоть знаю куда идти и почистить его заметно проще. Даже утилитки специальные есть.
Ой, не скажи. Чистить реестр как раз заметно сложнее. Вот лежит у тебя какая-нибудь ветка типа HKCU\Software\MyCompany\TheirSoftware — а в ней куча данных. По каким критериям ты определишь, что эту ветку нужно убирать, если в ней нет ни одной ссылки на ФС и ни одного GUID?
ВВ>Так что, честно, мне кажется, что эта проблема может быть и имеет место быть, но все же несколько преувеличена.
Настройки в ФС можно найти тривиальным поиском по дате обновления. А в реестре всё может оказаться распиханным вообще неизвестно куда — лишь бы прав доступа хватило.
ВВ>Так хочется понять, в чем главное зло-то. Действительно есть устоявшееся мнение, что реестр — это как бы не очень хорошая штука. Но если задуматься, то что-то проблем особых не видно
Именно. Сугубо с технической точки зрения критическая проблема ровно одна (ИМХО) — ограничение на размер сохраняемых данных. Заморочки в основном у пользователя — как раз вот те самые дополнительные средства для копирования/переименования.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Воронков Василий, Вы писали: ВВ>Ну даже с помощью regedit я не вижу особых проблем с управлением настройками приложения. Не сказал бы я, что там "через одно" место. Те же операции в принципе — скопировать, дублировать, переименовать
Ага, только в ФС можно для конфигов привычные тулзы использовать. Например, .emacs или xmonad.hs — суть программы и должны редактироваться как минимум в нормальном редакторе, а не в regedit32.
ВВ>Вообще это тоже момент неоднозначный. "Хлам" приложения и в файловой системе оставляют. Я, конечно, понимаю, чем хлам "в папочках" отличается от хлама в реестре, только вот в ФС приложения хранят свои настройки по-разному, иногда вообще нетривиально найти, где у них там конфиг лежит. А в реестре я хоть знаю куда идти и почистить его заметно проще. Даже утилитки специальные есть. ВВ>Так что, честно, мне кажется, что эта проблема может быть и имеет место быть, но все же несколько преувеличена.
Ненене, все наоборот. Чтобы, например, почистить /home — достаточно удалить все невидимые папки и файлы, кроме априори нужных. А вот чистить реестр — значительно сложнее.
Здравствуйте, Воронков Василий, Вы писали: P>>- его нельзя поднять под управлением системой контроля версий ВВ>Это вообще странное что-то. Система контроля версия в которой хранятся конфиги установленных приложений или что?
Не странное, а очень удобное. Позволяет быстро откатывать неудачные изменения в конфигах и быстро переносить настройки приложений с машины на машину. От ручного экспорта реестра отличается как git от vss.
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Для сохранения настроек приложения. Собственно, есть некоторое устоявшееся мнение, что реестр — это зло. Но вот с т.з. разработки, в чем это зло заключается?
Реестр — самый худший вид управления настройками, не считая всех прочих, что человечество испробовало за свою историю. (с)
Здравствуйте, Воронков Василий, Вы писали: ВВ>Реестр предлагает определенную модель доступа к данным, которая в ряде случаев может быть удобна.
Был тут холивар на эту тему. Тролль-Мамут уверял, что более, чем половине приложений достаточно конфига в виде "ключ-значение", а я ему не верил.
Здравствуйте, Don Reba, Вы писали:
ВВ>>Для сохранения настроек приложения. Собственно, есть некоторое устоявшееся мнение, что реестр — это зло. Но вот с т.з. разработки, в чем это зло заключается? DR>Реестр — самый худший вид управления настройками, не считая всех прочих, что человечество испробовало за свою историю. (с)
Не-не. Реестр — самых худший из всех. Правильный способ конфигурации — это человекочитаемые файлы настроек (с комментариями) и Augeas для программной работы с ними.
К примеру, я свой /etc кладу в git-репозиторий, и могу посмотреть когда там чего менялось. Причём к измнениям я ещё и комментарии пишу (типа "поменял лимиты postgres'у").
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>>>С точки зрения разработки разницы нет — что в XML, что в .ini, что в реестр. ВВ>>Реестр предлагает определенную модель доступа к данным, которая в ряде случаев может быть удобна. К примеру, если не хочется сразу вычитывать весь конфиг, а читать и писать его по частям. В реестре это — by design. В ХМЛ и ИНИ придется что-то шаманить самостоятельно. ГВ>Нет никакой проблемы в том, чтобы разбить настроечный файл на несколько файлов и таким образом читать/писать настройки по частям.
Ну в принципе да.
ГВ>Тогда как каждый дополнительный ключ в реестре косвенно сказывается на работе всей системы.
Время формирования разделов при загрузке ты имеешь в виду?
ВВ>>Ну даже с помощью regedit я не вижу особых проблем с управлением настройками приложения. Не сказал бы я, что там "через одно" место. Те же операции в принципе — скопировать, дублировать, переименовать ГВ>Тут неприятность в дополнительном поиске содержимого в реестре, правильном его экспорте/импорте и далее по списку. Во всяком случае, пользователю это не столь привычно, как копирование файлов.
А пользователю вообще привычно с конфигами вручную возиться?
ГВ>>>Ну и добавим сюда обыкновение оставлять хлам в реестре при деинсталляции с сопутствующей перегрузкой и притормаживанием. ВВ>>Вообще это тоже момент неоднозначный. "Хлам" приложения и в файловой системе оставляют. Я, конечно, понимаю, чем хлам "в папочках" отличается от хлама в реестре, только вот в ФС приложения хранят свои настройки по-разному, иногда вообще нетривиально найти, где у них там конфиг лежит. А в реестре я хоть знаю куда идти и почистить его заметно проще. Даже утилитки специальные есть.
ГВ>Ой, не скажи. Чистить реестр как раз заметно сложнее. Вот лежит у тебя какая-нибудь ветка типа HKCU\Software\MyCompany\TheirSoftware — а в ней куча данных. По каким критериям ты определишь, что эту ветку нужно убирать, если в ней нет ни одной ссылки на ФС и ни одного GUID?
Я чаще убеждаюсь в обратном. Как раз настройки в ФС часто выглядят как MyCompanyName\{GUID}\{GUID} и т.д. Вот и ищи, что там надо удалить, а что — нет. Особенно, если от MyCompanyName стоит несколько приложений. Мне вот как правило реестр проще чистить. Меньше телодвижений.
ГВ>Настройки в ФС можно найти тривиальным поиском по дате обновления. А в реестре всё может оказаться распиханным вообще неизвестно куда — лишь бы прав доступа хватило.
Большинство чистилок реестра так же и работают — мониторят его по дате обновления и сносят лишнее. ИМХО если пользователь озаботится такой задачей как держать реестр в частоте это можно сделать легко и просто.
В случае с ФС для реализации подобной автоматической очистки это надо, ну не знаю, всю ФС мониторить, видимо.
ВВ>>Так хочется понять, в чем главное зло-то. Действительно есть устоявшееся мнение, что реестр — это как бы не очень хорошая штука. Но если задуматься, то что-то проблем особых не видно ГВ>Именно. Сугубо с технической точки зрения критическая проблема ровно одна (ИМХО) — ограничение на размер сохраняемых данных. Заморочки в основном у пользователя — как раз вот те самые дополнительные средства для копирования/переименования.
Здравствуйте, Mr.Cat, Вы писали:
ВВ>>Ну даже с помощью regedit я не вижу особых проблем с управлением настройками приложения. Не сказал бы я, что там "через одно" место. Те же операции в принципе — скопировать, дублировать, переименовать MC>Ага, только в ФС можно для конфигов привычные тулзы использовать. Например, .emacs или xmonad.hs — суть программы и должны редактироваться как минимум в нормальном редакторе, а не в regedit32.
Да не всякое приложение дружит с таким способом редактирования конфигов. Банальный пример — приложение хранит в конфиге список каких-нибудь хостов. Конфиг красивый, ХМЛ-ный — взял да добавил кучку новых в емаксе. Только вот один нюанс — креденшиалы к хостам зашифрованы.
Все-таки приложения с конфигом для ручной правки это ИМХО некоторый обособленный случай. Ни раз вот мне в голову не приходило руками конфиг Ворда править.
ВВ>>Вообще это тоже момент неоднозначный. "Хлам" приложения и в файловой системе оставляют. Я, конечно, понимаю, чем хлам "в папочках" отличается от хлама в реестре, только вот в ФС приложения хранят свои настройки по-разному, иногда вообще нетривиально найти, где у них там конфиг лежит. А в реестре я хоть знаю куда идти и почистить его заметно проще. Даже утилитки специальные есть. ВВ>>Так что, честно, мне кажется, что эта проблема может быть и имеет место быть, но все же несколько преувеличена. MC>Ненене, все наоборот. Чтобы, например, почистить /home — достаточно удалить все невидимые папки и файлы, кроме априори нужных. А вот чистить реестр — значительно сложнее.
Здравствуйте, Mr.Cat, Вы писали:
P>>>- его нельзя поднять под управлением системой контроля версий ВВ>>Это вообще странное что-то. Система контроля версия в которой хранятся конфиги установленных приложений или что? MC>Не странное, а очень удобное. Позволяет быстро откатывать неудачные изменения в конфигах и быстро переносить настройки приложений с машины на машину. От ручного экспорта реестра отличается как git от vss.
А это пример реальной практики? Т.е. будете вручную добавлять конфиги каждого приложения в сурс-контрол, потом не забывать чек-аутить перед запуском приложения или что имеется в виду?
ЗЫ. Виста вон сама за версиями следит, и никаких git-ов не надо.
Здравствуйте, Don Reba, Вы писали:
ВВ>>Для сохранения настроек приложения. Собственно, есть некоторое устоявшееся мнение, что реестр — это зло. Но вот с т.з. разработки, в чем это зло заключается? DR>Реестр — самый худший вид управления настройками, не считая всех прочих, что человечество испробовало за свою историю. (с)
А может, это, рейтинг "управлений настройками" составить?
Здравствуйте, Mr.Cat, Вы писали:
MC>Здравствуйте, Воронков Василий, Вы писали: ВВ>>Реестр предлагает определенную модель доступа к данным, которая в ряде случаев может быть удобна. MC>Был тут холивар на эту тему. Тролль-Мамут уверял, что более, чем половине приложений достаточно конфига в виде "ключ-значение", а я ему не верил.
Ну я бы сказал так — более, чем половине приложений глубоко по боку те ограничения на размер значения, которые накладывает реестр. А иерархию-то там строить можно не хуже, чем где-либо еще.
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Что такое "простой backup"?
copy /s
ВВ>Теперь снова вопрос — с чем сравнивается реестр? ВВ>1. Приложение само умеет создавать файлик настройками где-нибудь в MyDocuments. Результат — скопировать просто так нельзя, нужно искать файлик, потом вручную кидать его в нужную папку.
Это зависит от политики управления настройками. Может статься, что файл настроек лежит себе тихо-мирно рядом с программой, а не в MyDocuments. Да даже если в MyDocuments, то скопировать файл настроек оттуда проще, чем лазить по реестру.
ВВ>2. Isolated storage — тут вообще фиг скопируешь что-либо ИМХО.
+1.
ВВ>3. Реестр — экспорт ветку, файлик на флешку, на компе друга импорт двойным щелчком. По мне так даже проще чем п. 1.
Шиш там я позволю что-то импортировать двойными щелчками в свой реестр! А если он назаписывает чего-то в одиозный RunOnce? Не-не-не, Девид Блейн, поди на фиг со своей магией! Вынули флешку — забыли про настройки.
ВВ>И? В чем проблема?
В совокупности факторов. Настройки, сохраняемые в недрах компьютера, а не на флешке, доступ к которой определяется по радужной оболочке — вообще зло.
P>>- его нельзя поднять под управлением системой контроля версий
ВВ>Это вообще странное что-то. Система контроля версия в которой хранятся конфиги установленных приложений или что?
Легко! Это как раз очень правильно — хранить в системе контроля версий (внимание!) полный комплект средств разработки вместе с настройками. Тогда в один клик можно сконфигурировать совершенно чистую машину (ОС + система контроля версий).
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Cyberax, Вы писали:
C>Не-не. Реестр — самых худший из всех. Правильный способ конфигурации — это человекочитаемые файлы настроек (с комментариями) и Augeas для программной работы с ними.
Я не очень пристально вглядывался, только прочитал FAQ/Quick Tour, но по-моему, это попытка создать тот же реестр, только изначально обречённая на неполноценность. Это будет сложнее, из за множества парсеров более глючно и менее функционально чем реестр.
C>К примеру, я свой /etc кладу в git-репозиторий, и могу посмотреть когда там чего менялось. Причём к измнениям я ещё и комментарии пишу (типа "поменял лимиты postgres'у").
C>Как мне так сделать с реестром?
Желание, конечно, нестандартное, но экспорт из реестра в текстовый формат делается элементарно через reg export/reg import. Коментарии допускаются.
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Для сохранения настроек приложения. Собственно, есть некоторое устоявшееся мнение, что реестр — это зло. Но вот с т.з. разработки, в чем это зло заключается?
не знаю в чем зло, но зачем мне еще один интерфейс хранения данных если уже есть ФС?
If the message above is in English — means I'm wasting my work time and work computer to post here. No hard feelings
Здравствуйте, Геннадий Васильев, Вы писали:
ВВ>>Что такое "простой backup"? ГВ>copy /s
Ну что, неужели экспорт ветки в реестре это так сложно?
Вы все вообще какого-то странного пользователя описываете — с реестром "мышкой" работать не умеет, зато круто "управляет конфигами" да еще и емаксе их правит
ГВ>Это зависит от политики управления настройками. Может статься, что файл настроек лежит себе тихо-мирно рядом с программой, а не в MyDocuments. Да даже если в MyDocuments, то скопировать файл настроек оттуда проще, чем лазить по реестру.
Вообще файлик настроек рядом с программой класть это разве не очередной пример зла
Тут и с правами проблемы, а уж если разные пользователи на компьютере.
ВВ>>3. Реестр — экспорт ветку, файлик на флешку, на компе друга импорт двойным щелчком. По мне так даже проще чем п. 1. ГВ>Шиш там я позволю что-то импортировать двойными щелчками в свой реестр! А если он назаписывает чего-то в одиозный RunOnce? Не-не-не, Девид Блейн, поди на фиг со своей магией! Вынули флешку — забыли про настройки.
Этот метод не сработает, если настройки надо копировать в папку МоиДокументы.
Вообще говоря, если приложения by design работает с флешки, то ему достаточно сделать кнопочку — "экспорт настроек" — и все. Пользователь лазить нигде не будет.
ВВ>>И? В чем проблема? ГВ>В совокупности факторов. Настройки, сохраняемые в недрах компьютера, а не на флешке, доступ к которой определяется по радужной оболочке — вообще зло.
Да, как круто-то все у вас
А давай все же реестр сравнивать не с трюками из фильмов про Джеймса Бонда, а с самым популярным после него средством — ХМЛ-файлик в MyDocuments\CompanyName\Guid\Guid
P>>>- его нельзя поднять под управлением системой контроля версий ВВ>>Это вообще странное что-то. Система контроля версия в которой хранятся конфиги установленных приложений или что? ГВ>Легко! Это как раз очень правильно — хранить в системе контроля версий (внимание!) полный комплект средств разработки вместе с настройками. Тогда в один клик можно сконфигурировать совершенно чистую машину (ОС + система контроля версий).
Мда, и этим людям сложно экспортировать ветку из реестра