Re[6]: А чем плох реестр?
От: Sshur Россия http://shurygin-sergey.livejournal.com
Дата: 16.11.09 08:44
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:



ГВ>Буду предельно краток: мне, достаточно опытному пользователю (простите мне мою самонадеянность), лень запускать regedt32, искать нужный ключ и экспортировать его содержимое. Поэтому я солидарен с теми, кто считает хранение настроек в реестре злом. Сей топик есть ни что иное, как попытка рационализации этой самой лени.


А мне, как отчасти сисадмину, лень запоминать какие настройки где у какой программы лежать, и проще экпортировать ветку HKCU\software\vendor\appname на новый компьютер. Это если один пользователь за компом. В принципе, если настройка лежит вместе с программой в папке, то тоже при переносе ПО на новый компьютер все просто — ничего дополнительно делать не надо. Но такой вариант плох по другим причинам. см ниже.


ГВ>Нужно делать систему предпочтений — если нет настроек в МоихДокументах, то посмотреть в каталоге рядом с .exe. А уже в MyDocuments сохранять настройки тогда, когда пользователь об этом прямо скажет. Помимо этого бон тон — дать вменяемое имя файлу настроек (не {GUID}-{NNN}). Разумеется, любое из этих пожеланий может быть не выполнено.


Если заменить MyDocuments на какую-нибудь перемещаемую с профилем папку типа appdata, то все так и должно быть. Только с реестром в этом случае проще, есть HKCU и HKLM, и не надо думать, в какой папке лежит программа. С настройками в файлах проще общаться, если нет перемещаемых профилей и на одном компьютере работает один человек. В остальных случаях — не факт.

Скажем, типичная ситуация №1 — за одним компьютером по очереди по сменам работают разные пользователи, и у всех разные права. Надо по разному настроить используемое ПО. Все это под windows и AD с перемещаемыми профилями. Вот, если мы имеем настройки в реестре в HKCU, то собственно надо один раз настроить каждого пользователя, после чего все будет автоматически работать. Если мы имеем настройки в файле в appdata, то все точно так же. Если сисадмин достаточно ленив, чтобы не хотеть настраивать профиль каждого нового пользователя, то он может либо написать скрипт, который при входе в систему либо пропишет в реестре нужные права, либо скопирует откуда-нибудь эталонный файл с настройками. Что в принципе по сложности одинаково. Так что в такой ситуации реестр и файлы одинаково удобны. Это если настройки в appdata или HKCU. Если настройки в папке с программой либо HKLM — то проблема.

А вот ситуация №2 — когда разные пользователи заходят на определенный компьютер, у них должны быть определенные настройки ПО, причем отличающиеся от настроек на остальных компьютерах. Если ПО достаточно умное, чтобы можно было задать приоритет настроек в HKLM (или в файле с папкой ПО), то проблем нет. Но, такое ПО может быть только одно — разработанное самостоятельно. В остальных случаях сисадмины обретают геморрой, причем независимо от того, в файле настройки или в реестре. Правда, скриптами на вход в систему любая проблема лечится, но ... it depends, как говорится, зависит и от ПО и от прямоты рук сисадминов

Третья ситуация — надо настроить новый компьютер взамен выгоревшего. ПО поставили, ввели в домен. Ну и начинается — если ситуация №1, то ничего делать не надо, настройки автоматом с профилем подтянутся. Если программа требует настроек в HKLM либо в файле с программой, то придется что-то делать (если конечно скриптов нет). Идеальная ситуация — когда админам надо просто развернуть готовый образ диска с системой и ПО, ввести компьютер в домен — и все будет работать у всех. Что требует либо развернутой системы скриптов, либо настроек в перемещаемых папках либо HKCU. Повторюсь, что если админы умеют готовить WSH, то ничего невозможного нет, там куча средств как для работы с реестром, так и с файлами

А вообще, дьявол, он в деталях, все, что в жизни встречается, в теории не предусмотришь.
Шурыгин Сергей

"Не следует преумножать сущности сверх необходимости" (с) Оккам
Re: А чем плох реестр?
От: Baudolino  
Дата: 16.11.09 09:43
Оценка: 21 (2)
ВВ>Для сохранения настроек приложения. Собственно, есть некоторое устоявшееся мнение, что реестр — это зло. Но вот с т.з. разработки, в чем это зло заключается?
Зло всегда исходит от разработчика, а не от инструмента.
1. Файлы удобнее просматривать и редактировать. С этим утверждением трудно спорить, однако, спорить и не нужно. Важнее ответ на вопрос, а зачем пользователю просматривать и редактировать настройки приложения вручную? Обладает ли пользователь достаточной для этого компетенцией?
2. С реестром работать удобнее, поскольку API заточен под хранение настроек (транзакции и т.п.). Для хранения настроек в файлах при этом существует множество готовых библиотек, но это может означать как зависимость от нестандартного API (минус), так и улучшенный по сравнению с реестром функционал (плюс).
3. Резервное копирование отдельных файлов делать пока проще, чем копировать отдельные ветки реестров (но если бэкап пишется вручную на powershell, то разницы нет). Плюс к файлам.
4. C т.з. быстрого развертывания оба способа эквивалентны, только это делается не через жопу (зачеркнуто) контроль версий.
5. С т.з. переноса пользовательских данных оба способа эквивалентны — пользовательский реестр хранится в %USERPROFILE% (было бы здорово, если бы у разработчиков хватало ума проверять совместимость своих продуктов с Easy Transfer).
6. Флешка не является аргументом в пользу файлов, т.к. вы можете переместить на нее %APPDATA% (=%USERPROFILE%\AppData\Roaming) и хранить на ней настройки любого приложения (разумеется, если оно не хардкодит системные пути) незаметно от него.
Re[6]: А чем плох реестр?
От: Воронков Василий Россия  
Дата: 16.11.09 09:57
Оценка: +1
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Буду предельно краток: мне, достаточно опытному пользователю (простите мне мою самонадеянность), лень запускать regedt32, искать нужный ключ и экспортировать его содержимое. Поэтому я солидарен с теми, кто считает хранение настроек в реестре злом. Сей топик есть ни что иное, как попытка рационализации этой самой лени.


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

ВВ>>Вообще файлик настроек рядом с программой класть это разве не очередной пример зла

ВВ>>Тут и с правами проблемы, а уж если разные пользователи на компьютере.
ГВ>Согласен. А что, если речь идёт о флешке?

Да что вы уперлись-то в эту флешку? Очень частный случай на самом деле.
К тому же мне может быть, к слову, даже удобно, что приложение, запускаемое на флешке, хранит настройки в реестре — на каждом компе будет возможность сконфигурить его по-разному без лишних телодвижений.

ВВ>>Этот метод не сработает, если настройки надо копировать в папку МоиДокументы.

ГВ>А вот пусть программы будут настолько правильными, что они не будут требовать хранить настройки в МоихДокументах, а будут довольствоваться тем, что лежит рядом с .exe?

Ну а что в этом правильного-то?
С т.з. идеологии винды — это неправильно.

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

ГВ>>>Легко! Это как раз очень правильно — хранить в системе контроля версий (внимание!) полный комплект средств разработки вместе с настройками. Тогда в один клик можно сконфигурировать совершенно чистую машину (ОС + система контроля версий).

ВВ>>Мда, и этим людям сложно экспортировать ветку из реестра
ГВ>Не "сложно", а ЛЕНЬ. И мне плевать на концептуальную правильность хранения данных в реестре. Мне лень с ним возиться.

А с сурс-контролом не лень возиться?
Какой там "полный комплект средств разработки вместе с настройками" ты хочешь в один клик без реестра поднимать?

Не, ну правда, я о многом прошу — приводить реальные, а не гипотетические аргументы в стиле "что было бы, если бы все конфиге хранились в сурс-контроле"?
Re[8]: А чем плох реестр?
От: Воронков Василий Россия  
Дата: 16.11.09 09:58
Оценка:
Здравствуйте, Cyberax, Вы писали:

ГВ>>>Мда? Что-то такая эвристика представляется довольно рискованной...

ВВ>>Ну почему же, обычный бэкап реестра, о котором вы тут говорите. Делаете слепок до установки и после деинсталляции. Затем весьма банальный мерж.
ВВ>>Потом, я не знаю, если пользователь у вас все конфиги в сурс-контроле хранит да еще и сидит под виндой — ну не повезло ему — то ему сам бог велел первым делым именно реестр весь целиком туда и запихать. Как раз для тех самых целей восстановления и прочего.
C>А ты сам-то пробовал так делать? Вот попробуй и расскажи как получится.

Нет. А ты пробовал реальные конфиги установленных приложений добавлять в сурс-контрол?
Re[8]: А чем плох реестр?
От: Воронков Василий Россия  
Дата: 16.11.09 09:59
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Во всех Правильных ОС я могу сделать _полный_ backup моих настроек, если просто скопирую домашний каталог. В Windows если я попробую так сделать с HKCU — получу нерабочую систему при переносе между разными компьютерами (уже пробовал).


Причем тут правильные ОС? Обязательно нужно открывать филиал Вынь вс. Линь?
Речь о реестре и, соответственно, о Винде.
Re[4]: А чем плох реестр?
От: Baudolino  
Дата: 16.11.09 10:00
Оценка:
MC>Ненене, все наоборот. Чтобы, например, почистить /home — достаточно удалить все невидимые папки и файлы, кроме априори нужных. А вот чистить реестр — значительно сложнее.
Пользовательский реестр aka Ntuser.dat это одна большая невидимая папка, в которой вы можете отфильтровать априори нужное. Вопрос только в том, знаете ли вы, что нужно, а что нет.
Re[8]: А чем плох реестр?
От: Воронков Василий Россия  
Дата: 16.11.09 10:03
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Здравствуйте, Воронков Василий, Вы писали:


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

ВВ>>>>Время формирования разделов при загрузке ты имеешь в виду?
ГВ>>>В частности.
ВВ>>А что еще?
ГВ>На поиске это так или иначе должно сказываться. Точных деталей на вскидку не скажу.

Да вот хотелось бы как раз деталей-то. Кстати, на каком поиске? Том, который типа быстрый и модный с индексацией? Или на старом "с собачкой"?
Да и по поводу скорости бута винды. Вот помню, да, было это весьма заметно на моем лаптопе Compaq Presario с процессором Pentium 3

ГВ>Да-да-да. Особенно если поставить две-три программы, а потом попытаться снести первую. Мерж может показать уйму интересных картинок.


А в чем проблема? Перед "каждой" установкой делаешь снимок.
Не, можно конечно долго такой подход критиковать, но я это не сам сейчас придумал — есть отдельный класс программ, причем платных как правило. Под ФС такие решения не существуют вообще.

ВВ>>Потом, я не знаю, если пользователь у вас все конфиги в сурс-контроле хранит да еще и сидит под виндой — ну не повезло ему — то ему сам бог велел первым делым именно реестр весь целиком туда и запихать. Как раз для тех самых целей восстановления и прочего.

ГВ>Да не всю систему восстанавливать, а рабочее окружение. Для этого реестр хранить в сурс-контроле не нужно (в идеальном случае).

Что такое идеальный случай? Да и про рабочее окружение тоже хотелось бы... Ты Visual Studio не используешь?
Re[2]: А чем плох реестр?
От: Воронков Василий Россия  
Дата: 16.11.09 10:03
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

ВВ>>Для сохранения настроек приложения. Собственно, есть некоторое устоявшееся мнение, что реестр — это зло. Но вот с т.з. разработки, в чем это зло заключается?

PD>Если не секрет, расскажи, почему тебя это заинтересовало в 5 часов утра ?

Да вот, только из бана вышел
Re[2]: А чем плох реестр?
От: Воронков Василий Россия  
Дата: 16.11.09 10:05
Оценка:
Здравствуйте, LaptevVV, Вы писали:

ВВ>>Для сохранения настроек приложения. Собственно, есть некоторое устоявшееся мнение, что реестр — это зло. Но вот с т.з. разработки, в чем это зло заключается?

LVV>BV{J в конкретном данном случае самое большое зло — в уязвимости. Достаточно стереть реестр и система накрывается!
LVV>Беречь его надо, копировать, восстанавливать — короче, геморрой!

Это да. Но я, кстати, еще заметил, что если стереть папочку C:\Windows, то чет мой компьютер вообще грузиться перестает
Re[8]: А чем плох реестр?
От: Sshur Россия http://shurygin-sergey.livejournal.com
Дата: 16.11.09 10:08
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Во всех Правильных ОС я могу сделать _полный_ backup моих настроек, если просто скопирую домашний каталог. В Windows если я попробую так сделать с HKCU — получу нерабочую систему при переносе между разными компьютерами (уже пробовал).


Если у вас на одной было установлена куча доп. ПО, а на другой нет — то неудивительно, что вы получили ошибки. На одинаковых
все должно работать, по крайней мере перемещаемые профили под windows так и работают — ntuser.dat копируется.

Другое дело, что если у вас домашний захламленный компьютер — то не стоит реестр со старого на новый переносить
Шурыгин Сергей

"Не следует преумножать сущности сверх необходимости" (с) Оккам
Re[9]: А чем плох реестр?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 16.11.09 10:13
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Да вот хотелось бы как раз деталей-то. Кстати, на каком поиске? Том, который типа быстрый и модный с индексацией? Или на старом "с собачкой"?

ВВ>Да и по поводу скорости бута винды. Вот помню, да, было это весьма заметно на моем лаптопе Compaq Presario с процессором Pentium 3

Надо покопать. Я вполне могу тут преувеличивать.

ГВ>>Да-да-да. Особенно если поставить две-три программы, а потом попытаться снести первую. Мерж может показать уйму интересных картинок.


ВВ>А в чем проблема? Перед "каждой" установкой делаешь снимок.


Ну прикинь сам, сколько и каких конфликтов может получиться.

ВВ>Не, можно конечно долго такой подход критиковать, но я это не сам сейчас придумал — есть отдельный класс программ, причем платных как правило. Под ФС такие решения не существуют вообще.


Не знаю, никогда такие средства не искал.

ГВ>>Да не всю систему восстанавливать, а рабочее окружение. Для этого реестр хранить в сурс-контроле не нужно (в идеальном случае).

ВВ>Что такое идеальный случай? Да и про рабочее окружение тоже хотелось бы... Ты Visual Studio не используешь?

Идеальный случай — полное копирование всего с системы конфигурационного управления. Один checkout — и ты получаешь сходу полный комплект исходников и средств разработки. Ничего архисложного, но с VS такой номер очень трудно организовать.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[9]: А чем плох реестр?
От: Sshur Россия http://shurygin-sergey.livejournal.com
Дата: 16.11.09 10:22
Оценка:
Здравствуйте, Sshur, Вы писали:

S>Если у вас на одной было установлена куча доп. ПО, а на другой нет — то неудивительно, что вы получили ошибки. На одинаковых

S>все должно работать, по крайней мере перемещаемые профили под windows так и работают — ntuser.dat копируется.


PS. Все работает с поправкой, что SID пользователя в домене один и тот же на всех машинах. Чтобы такой финт повторить без домена, надо делать экспорт реестра именно из HKCU например регэдитом и потом импорт им же. Ну и настройки ПО хранятся в Software — лучше перенести настройки избранных приложений, чем весь мусор что там есть
Шурыгин Сергей

"Не следует преумножать сущности сверх необходимости" (с) Оккам
Re[8]: А чем плох реестр?
От: Sshur Россия http://shurygin-sergey.livejournal.com
Дата: 16.11.09 10:27
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

C>Так вот — нифига оно не получается. В реестре полно ключей, которые постоянно меняются системой. Поэтому, полный backup реестра не имеет смысла — там будет слишком много мусорных изменений. Вменяемый merge тоже нереален.



Не надо сравнивать HKLM, и все. А ежели ваше ПО хранит настройки в HKLM, то это в принципе то же самое, что конфиги в c:\windows писать
Шурыгин Сергей

"Не следует преумножать сущности сверх необходимости" (с) Оккам
Re: А чем плох реестр?
От: elmal  
Дата: 16.11.09 10:32
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Для сохранения настроек приложения. Собственно, есть некоторое устоявшееся мнение, что реестр — это зло. Но вот с т.з. разработки, в чем это зло заключается?

Могу ошибаться, но реестр как хранилище настроек появился для того, чтоб экономить место на диске, чтоб не создавать отдельный файл ради булевской переменной, занимающий целый сектор. Во времена Win3.0 это было актуально.
С точки зрения разработки пофиг, не важно с реестром ты работаешь, с базой или файлом — это все враппится вменяемыми людьми, и при необходимости способ хранения настроек меняется на ура. Вот только с точки зрения пользователя абсолютно не пофиг.
Re[10]: А чем плох реестр?
От: Воронков Василий Россия  
Дата: 16.11.09 10:33
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Идеальный случай — полное копирование всего с системы конфигурационного управления. Один checkout — и ты получаешь сходу полный комплект исходников и средств разработки. Ничего архисложного, но с VS такой номер очень трудно организовать.


Ну не бывает же таких идеальных случаев под виндой Это все теория. Как то самое приложение с флешки. У которого на самом деле может быть куча system specific параметров (пути к папкам, настройки прокси и пр.), которые придется каждый раз конфигурить ручками. Которое может сохранять, скажем, местоположение и размер своего окна (у меня HD монитор, а у друга — 17-ка, запускаем, потом ищем "где" запустилось ).

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

Честно, хочется услышать не просто традиционные доводы, почему реестр это плохо, а задуматься, так ли это плохо, в конце 2009-го, под Виндой, как мы это привыкли считать?
Re[2]: А чем плох реестр?
От: Воронков Василий Россия  
Дата: 16.11.09 10:35
Оценка:
Здравствуйте, elmal, Вы писали:

ВВ>>Для сохранения настроек приложения. Собственно, есть некоторое устоявшееся мнение, что реестр — это зло. Но вот с т.з. разработки, в чем это зло заключается?

E>Могу ошибаться, но реестр как хранилище настроек появился для того, чтоб экономить место на диске, чтоб не создавать отдельный файл ради булевской переменной, занимающий целый сектор. Во времена Win3.0 это было актуально.
E>С точки зрения разработки пофиг, не важно с реестром ты работаешь, с базой или файлом — это все враппится вменяемыми людьми, и при необходимости способ хранения настроек меняется на ура. Вот только с точки зрения пользователя абсолютно не пофиг.

Мне кажется, с точки зрения пользователя еще больше пофиг. Может быть, с точки зрения админа — не пофиг. Но виндовый админ должен же с реестром уметь работать?
Re[3]: А чем плох реестр?
От: Niemand Австралия  
Дата: 16.11.09 10:37
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Зачем нам ХМЛ как еще один интерфейс хранения данных если уже есть ФС?

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

А еще инсталяция проги с текстовыми конфигами сводится к простой распаковке архива
If the message above is in English — means I'm wasting my work time and work computer to post here. No hard feelings
Re[4]: А чем плох реестр?
От: Воронков Василий Россия  
Дата: 16.11.09 10:46
Оценка:
Здравствуйте, Niemand, Вы писали:

ВВ>>Зачем нам ХМЛ как еще один интерфейс хранения данных если уже есть ФС?

N>потому что xml файл намного более осязаем для юзера чем реестр — его можно снести на флешку, открыть блокнотом и не видеть кучу других ключей. (тут я вижу возражение что мол есть .reg файлы — но их надо вностить в реестр что уже для юзера сложнее).

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

N>А еще инсталяция проги с текстовыми конфигами сводится к простой распаковке архива


А с реестром — double click по reg файлу
Re[3]: А чем плох реестр?
От: elmal  
Дата: 16.11.09 10:46
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

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

Мне лично с точки зрения пользователя абсолютно не пофиг, так как из-за того, что некоторые товарищи при деинсталляции своих мегапрограмм забывают вычищать реестр, у меня начинает все тормозить, в результате я вынужден искать программы — чистильщики реестра. А когда чтоб найти что ж запускается при автостарте, или для включение возможности отладки скриптов я должен regedit открывать, меня это вообще бесит.
Re[4]: А чем плох реестр?
От: Воронков Василий Россия  
Дата: 16.11.09 10:54
Оценка:
Здравствуйте, elmal, Вы писали:

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

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

А когда эти товарищи забывают файлуху почистить, то у вас тормозить не начинает? Скажем, при поиске по диску С? Да и к тому же никаких "чистилок" тут уже не предлагается, только ручками.
Потом, что тормозит-то? Построение веток реестра при загрузке? Вы уверены, что оно действительно тормозит на современных компьютерах? Может, тормоза по другим причинам? А то мне, честно, непонятно — производительность увеличивается на порядке, а тормозит все точно так же, как в конце 90-х.

E>А когда чтоб найти что ж запускается при автостарте,


...я пользуюсь полезной штукой под названием msconfig.exe

E>или для включение возможности отладки скриптов


Это вы о чем? Отладка скриптов в IE? Так в настройках же устанавливается

E> я должен regedit открывать, меня это вообще бесит.


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