Registry vs. .ini?

JohnS
Уже с Приветом
Posts: 144
Joined: 14 May 2002 21:58

Post by JohnS »

Храните в бандлах лучше:

Использование
------------------------

rb = ResourceBundle.getBundle( this.getClass().getName() );
String sHost = rb.getString("HOST")
adda
Уже с Приветом
Posts: 1822
Joined: 31 Aug 2001 09:01
Location: CA-> PA

Post by adda »

Я предпочитаю ини файл. Первое - потому что его легко перетаскивать с одного компа на другой. Второе - регистр сам по себе штука большая и совать туда все подряд просто глупо. Вы не замечали, как он быстро разрастается после того, как вы поработаете несклько месяцев? Так что зачем туда совать всякую дурь. Кстати, я обычно пишу программы, которые "помнят " размеры окон, их положение и прочую чушь из последнего сеанса. И если в проекте с полсотни окошек, то сами посудите, зачем все это нужно.
И последнее, в случае ини файла легко вернуть приложение в "первобытное состояние" - просто нужно стереть ини файл и все. А если вы храните все в регистре, а юзер чего нибудь там нарулил? Писать описание, где чего потереть в случае чего в регистре?
Да, естественно, что файл должен создаваться автоматически при запуске программы (если его нет ) и писать туда надо используя утилиты или Дельфовый класс для работы с ним.
Stick
Уже с Приветом
Posts: 774
Joined: 26 Dec 2000 10:01
Location: Minsk -> Милуоки, США

Post by Stick »

Я предпочитаю registry. Потому, что работая с МSовскими языками я имею легкий и прямой доступ к этому самому реестру.
Дискуссия получилась интересная, но она сводится к фразе: "О вкусах не спорят". ИМХО, и тот и другой способ хорош, и тот и другой правилен.
[quote:fb92650099="adda"] И последнее, в случае ини файла легко вернуть приложение в "первобытное состояние" - просто нужно стереть ини файл и все. А если вы храните все в регистре, а юзер чего нибудь там нарулил? Писать описание, где чего потереть в случае чего в регистре?[/quote:fb92650099]
Не вижу проблем, чтоб затереть в реестре все записи касающиеся вашей апликации. И для каждой такой записи вы всегда можете определить default value.
[quote:fb92650099="adda"] или Дельфовый класс для работы с ним.[/quote:fb92650099]
Каждый взирает на проблему со своей колокольни, а проблема абстрактна в отношении к технологии, которой вы её будете решать.
Stick around!
8K
Уже с Приветом
Posts: 5552
Joined: 20 Mar 2001 10:01
Location: SFBA

Post by 8K »

[quote:bdd17bb507="adda"]в случае ини файла легко вернуть приложение в "первобытное состояние" - просто нужно стереть ини файл и все. А если вы храните все в регистре, а юзер чего нибудь там нарулил? Писать описание, где чего потереть в случае чего в регистре?[/quote:bdd17bb507]
Создать .reg file, который при двойном щелчке на нем удаляет
соответствующие ветки реестра. Например, такой :) :
[code:1:bdd17bb507]
Windows Registry Editor Version 5.00

[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft]
[/code:1:bdd17bb507]
tortilla
Уже с Приветом
Posts: 1204
Joined: 28 May 2002 05:23
Location: California

Post by tortilla »

Спасибо всем.
I am writing to .ini file so far.
As for the users- они деиствительно тупие , нот ето ОК, так как они не будут лезть ни в регистры, ни в .ини филе . Но вот у них есть лихои парень - ДБА. Уж если он полезет, то все, хана нам. Но емы мы руки оборвем, чобы не лазил ( когда- нибудь, после очередного crash)
Stick
Уже с Приветом
Posts: 774
Joined: 26 Dec 2000 10:01
Location: Minsk -> Милуоки, США

Post by Stick »

:mrgreen: :mrgreen: :mrgreen:
Stick around!
adda
Уже с Приветом
Posts: 1822
Joined: 31 Aug 2001 09:01
Location: CA-> PA

Post by adda »

[quote:eeea6b7fe8="8K"][quote:eeea6b7fe8="adda"]в случае ини файла легко вернуть приложение в "первобытное состояние" - просто нужно стереть ини файл и все. А если вы храните все в регистре, а юзер чего нибудь там нарулил? Писать описание, где чего потереть в случае чего в регистре?[/quote:eeea6b7fe8]
Создать .reg file, который при двойном щелчке на нем удаляет
соответствующие ветки реестра. Например, такой :) :
[code:1:eeea6b7fe8]
Windows Registry Editor Version 5.00

[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft]
[/code:1:eeea6b7fe8][/quote:eeea6b7fe8]

Спасибо за совет, но все эти вещи тривиальны и давно известны. И делаются в любой среде очень просто. Другое дело, что реестр растет как на дрожжах после установки любой софтины и совершенно не факт, что деинсталятор удаляет все, что надо. Про юзера не говорю. А вот стереть папку с ненужной программой и находящимся в ней ини файлом - ума не требует и делают это все, даже самые тупые. Честно говоря, я вообще не понимаю этой любви к реестру. Единственное, что приходит на ум, то что в свое время это было круто. Ну и еще из за привычки делать так называемую "защиту" программы с его помощью.
И по моему глубокому убеждению, читается все из ини файла быстрее, чем из реестра, размером в двадцать метров.
8K
Уже с Приветом
Posts: 5552
Joined: 20 Mar 2001 10:01
Location: SFBA

Post by 8K »

[quote:5e196a9301="adda"]Честно говоря, я вообще не понимаю этой любви к реестру. Единственное, что приходит на ум, то что в свое время это было круто. Ну и еще из за привычки делать так называемую "защиту" программы с его помощью.[/quote:5e196a9301]
Реестр позволяет навешивать правильный ACL на уровне отдельных ключей. Мне кажется, что это круто до сих пор. Но, конечно, не для программ, которые "на коленке" пишутся.
User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Post by tengiz »

[quote:538a5ad7ea="adda"]Честно говоря, я вообще не понимаю этой любви к реестру. Единственное, что приходит на ум, то что в свое время это было круто.[/quote:538a5ad7ea]
Ещё причины крутизны рееста: realtime уведомления об изменениях отдельного ключа, дата последнего обновления отдельного ключа, сериализация доступа, транзакции - реестр очень сложно разрушить в смысле физической целостности. И, хотя это скорее экзотика, чем повседневность, являясь глобальным системым ресурсом реестр позволяет осуществлять значительно более быстрые операции, чем .ini - если это нужно, то всё изменения немедленно могут быть доступны другим программам не дожидаясь, пока lazy write скинет "грязные" данные на диск.

Бог в помощь в реализации таких же возможностей для текстовых .ini файлов.
Cheers
User avatar
U-96
Уже с Приветом
Posts: 1626
Joined: 07 Sep 2000 09:01
Location: Nashua, NH

Post by U-96 »

[quote:563ab2bbd7="adda"]
И по моему глубокому убеждению, читается все из ини файла быстрее, чем из реестра, размером в двадцать метров.[/quote:563ab2bbd7]
Убеждение ошибочное, на интервью советую держать его при себе, а пересказывать MSDN, где написано: "The following are the initialization-file functions. They retrieve information from and copy information to a system- or application-defined initialization file. These functions are provided only for compatibility with 16-bit versions of Windows. New applications should use the registry." :umnik1:
Только что помогал нашему тех-саппорту проводить разъяснительную работу с юзерами. Жаловались, что их приложение, основанное на нашей библиотеке, тормозит на загрузке или сохранении workspace. Смотрю внутрь - в библиотеке поддерживаются два варианта: писать конфигурацию в regisry или в application's ini-file. Данных - несчастных 30 килобайт. При переключении на запись в registry все работает быстрее чем юзер успеват кнопку на мыше отпустить. При работе с ini-files - несколько секунд. Смотрю внуть еще глубже - чтение/запись в ini-flie происходит посредсвом функций WritePrivateProfileString & GetPrivateProfileString. Чтобы прочесть/записать каждое значение, они файл ищут, открывают, читают/пишут, закрывают... Соответственно и производительность просто никакая.
MaxSt
Уже с Приветом
Posts: 21835
Joined: 11 Apr 1999 09:01
Location: RU

Post by MaxSt »

[quote:37b9080ea9="adda"]Честно говоря, я вообще не понимаю этой любви к реестру. Единственное, что приходит на ум, то что в свое время это было круто.[/quote:37b9080ea9]

Наоборот, это INI-файлы были круты в свое время - помните Win 3.1?
Насчет природы любви к реестру позвольте MSDN процитировать:
---------------------------------------------------------------------------------------
1. [b:37b9080ea9]Problems using INI files[/b:37b9080ea9]
2. [b:37b9080ea9]Solutions using the Registry[/b:37b9080ea9]

1. INI files are text-based, and are limited to 64K in total size.
2. The Registry has no size restriction and can include binary and text values.

1. Information stored in INI files is non-hierarchical and supports only two levels of information (specifically, section headings with a list of key names under each).
2. The Registry contains more standardized values.

1. INI files provide no mechanism for storing user-specific information, thus making it difficult for multiple users to share a single computer or for users who move around on the network to have access to their user-specific settings.
2. The Hkey_Users key stores user-specific information.

1. Configuration information in INI files is local to each system, and no API mechanisms are available for remotely managing configuration, thus making it difficult to manage multiple computers.
2. The Registry can be remotely administered and system policies (which are stored as Registry values) can be downloaded from a central server each time a new user logs on.

When you upgrade from Windows 3.1 to Windows 95, system-specific information such as the static reference to loading virtual device drivers is moved, as appropriate, from the SYSTEM.INI file to the Registry.

For backward compatibility, Windows 95 does not ignore AUTOEXEC.BAT, CONFIG.SYS, and INI files, because many Win16-based applications still use them. For example, Windows 95 allows Win16-based applications to use INI files for the parameters, device drivers, and so on, that the applications need to run.
---------------------------------------------------------------------------------------
конец цитаты

Так что motivation коллеги tortilla мне ясны - видимо большой опыт программирования под Win 3.1 сказывается. Тяжело переучиваться. А пора ведь. :)

MaxSt.
War does not determine who is right - only who is left.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Хорошо что помимо меня еще люди заступились за .ini файлы
adda, в кои веки я с Вами согласен !
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

А по-моему, по рабоче крестьянски, данные, с которыми работает программа должны быть расположены примерно так:
1. Системные конфигурационные данные - в системных конфигурационных .ini файлах.
2. Юзерские конфигурационные данные - в юзерских конфигурационных .ini файлах, данные имеют более высокий приоритет, чем общесистемные.
3. Данные, которые меняет программа в течении сессии и они должны храниться до следующей сессии - должны храниться в отдельных файлах, лучше текстовых, но на крайняк можно и в бинарных, по вкусу.
4. Данные, которые меняет программа в течении сессии и они НЕ должны храниться до следующей сессии - должны храниться в отдельных временных файлах,
Если есть проблемы со скоростью, можно держать файлы категорий 3 и 4 открытыми.
При такой сортировке данных на мой взгляд удобство работы и гибкость - наибольшие, а вероятность краха наименьшая.
А реестр - MD :)
Дальше, все будет только хуже. Оптимист.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Реестр - штука отчасти маркетинговая, лишняя причина чтобы людям было бы сложнее уходить с Win платформы
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
8K
Уже с Приветом
Posts: 5552
Joined: 20 Mar 2001 10:01
Location: SFBA

Post by 8K »

[quote:c76101ff90="f_evgeny"]А реестр - MD :)[/quote:c76101ff90]
Не по плечу вам парадигма Windows programming :)
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

[quote:85e1c1018a="8K"][quote:85e1c1018a="f_evgeny"]А реестр - MD :)[/quote:85e1c1018a]
Не по плечу вам парадигма Windows programming :)[/quote:85e1c1018a]
Да. Никак не могу понять почему вместо того, чтобы делать просто и хорошо, надо делать сложно и плохо.
Дальше, все будет только хуже. Оптимист.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

[quote:f555b5638a="8K"][quote:f555b5638a="f_evgeny"]А реестр - MD :)[/quote:f555b5638a]
Не по плечу вам парадигма Windows programming :)[/quote:f555b5638a]

Не такая уж она высокая, парадигма эта
Мне она не по плечу, а по другому органу, пониже :)
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
adda
Уже с Приветом
Posts: 1822
Joined: 31 Aug 2001 09:01
Location: CA-> PA

Post by adda »

[quote:e6ce07d51f="Dmitry67"][quote:e6ce07d51f="8K"][quote:e6ce07d51f="f_evgeny"]А реестр - MD :)[/quote:e6ce07d51f]
Не по плечу вам парадигма Windows programming :)[/quote:e6ce07d51f]

Не такая уж она высокая, парадигма эта
Мне она не по плечу, а по другому органу, пониже :)[/quote:e6ce07d51f]

Все же пока господа любители реестра не привели никаких разумных доводов в пользу его использования и как обычно, попытались помазать грязью (правда, очень культурно) тех, кто не согласен.
Несомненно, реестр штука нужная, особенно когда пишешь что то с использованием собственных СОМ компонентов или использую все тот же СОМ+ на радость клиенту. И естественно, большие корпоративные проекты где имеется множество версий нарезаных на том же СОМе без него никуда.
Но для большинсвта приложений пользовательских (утилит, клиентской части приложений среднего размера и прочее) на мой взгляд нет никаких разумных объяснений для его применения.
И уж хранить по 30к информации о настройке программы в реестре (или еще где либо) для одного приложения - это надо обладать недюжинными талантами. Вообще то в таких случаях больше подходит нормальная БД.
Andy77
Уже с Приветом
Posts: 577
Joined: 19 Oct 2000 09:01
Location: Kiev, Ukraine -> Boston, MA -> Minneapolis, MN -> Exton, PA

Post by Andy77 »

[quote:f1b78466c2="adda"]Все же пока господа любители реестра не привели никаких разумных доводов в пользу его использования и как обычно, попытались помазать грязью (правда, очень культурно) тех, кто не согласен...[/quote:f1b78466c2]

Adda, Вы скоро станете классиком на Привете :) - Тенгиз и MaxSt, приведшие с десяток доводов, не считаются? :roll: :nono#:
yocto
Уже с Приветом
Posts: 3640
Joined: 13 Sep 1999 09:01
Location: Canada

Post by yocto »

Есть еще один экзотический способ. Когда я писал одну программу, то было требование - не создавать локальных файлов и не оставлять следов в registry.
Но какие-то настройки надо было сохранять. Так я использовал сам exe-файл.
Сохранял настройки в виде файла в именованном потоке самой программы.
Правда, для этого подходит только NTFS. Но преимущества кое-какие дает.
Особенно когда не очень хочеться показывать всем желающим, что у тебя там в настройках лежит.
MaxSt
Уже с Приветом
Posts: 21835
Joined: 11 Apr 1999 09:01
Location: RU

Post by MaxSt »

[quote:e20570d80b="f_evgeny"]А по-моему, по рабоче крестьянски, данные, с которыми работает программа должны быть расположены примерно так:
1. ...
2. ...
3. ...
4. ...[/quote:e20570d80b]

Извините, но это не по рабоче-крестьянски, это по-досовски.

Как насчет naming convensions для user-specific ini-файлов? Каждому юзеру папочку создадите и будете туда все сваливать в кучу? Несколько десятков 10-100 байтовых файлов, так? Причем некоторые файлы будут текстовые, некоторые - бинарные. Возможно, внутри этого юзерского каталога вам придется несколько подкаталогов сделать, чтоб весь этот зоопарк упорядочить.

Если вы это называете удобством, то внимание на экран - [b:e20570d80b]Вопрос[/b:e20570d80b].
Как всю эту структуру данных посмотреть в удобном виде?

Время досовских утилит прошло, господа. Я сам их в свое время немало написал, на ассемблере в том числе. Другие времена на дворе. Требуется remote configuration. Для нового юзера требуется автоматическая установка стандартного набора конфигураций с центрального сервера... еще куча всего. for details - см. мой предыдущий пост.

MaxSt.
War does not determine who is right - only who is left.
User avatar
f_evgeny
Уже с Приветом
Posts: 10367
Joined: 12 Apr 2001 09:01
Location: Lithuania/UK

Post by f_evgeny »

[quote:cf4e84909a="MaxSt"][quote:cf4e84909a="f_evgeny"]А по-моему, по рабоче крестьянски, данные, с которыми работает программа должны быть расположены примерно так:
1. ...
2. ...
3. ...
4. ...[/quote:cf4e84909a]

Извините, но это не по рабоче-крестьянски, это по-досовски.

Как насчет naming convensions для user-specific ini-файлов? Каждому юзеру папочку создадите и будете туда все сваливать в кучу? Несколько десятков 10-100 байтовых файлов, так? Причем некоторые файлы будут текстовые, некоторые - бинарные. Возможно, внутри этого юзерского каталога вам придется несколько подкаталогов сделать, чтоб весь этот зоопарк упорядочить.

Если вы это называете удобством, то внимание на экран - [b:cf4e84909a]Вопрос[/b:cf4e84909a].
Как всю эту структуру данных посмотреть в удобном виде?

Время досовских утилит прошло, господа. Я сам их в свое время немало написал, на ассемблере в том числе. Другие времена на дворе. Требуется remote configuration. Для нового юзера требуется автоматическая установка стандартного набора конфигураций с центрального сервера... еще куча всего. for details - см. мой предыдущий пост.

MaxSt.[/quote:cf4e84909a]
Это, типа, как в юниксе.
Насчет стандартной настройки для каждого юзера - нет ничего проще.
Ремоут конфигурация? Что, есть какие-то проблемы?
И тут вот некоторые позволяют себе... (C) "Тот самый Мюнхаузен" говорить, что операции с реестром очень надежные, может быть, спорить не будем, зато какие последствия, когда реестр разрушается! Как будто Кощею иглу сломали! :)
Дальше, все будет только хуже. Оптимист.
adda
Уже с Приветом
Posts: 1822
Joined: 31 Aug 2001 09:01
Location: CA-> PA

Post by adda »

[quote:f48002dc64="Andy77"][quote:f48002dc64="adda"]Все же пока господа любители реестра не привели никаких разумных доводов в пользу его использования и как обычно, попытались помазать грязью (правда, очень культурно) тех, кто не согласен...[/quote:f48002dc64]

Adda, Вы скоро станете классиком на Привете :) - Тенгиз и MaxSt, приведшие с десяток доводов, не считаются? :roll: :nono#:[/quote:f48002dc64]
Спасибо за комплимент. Но вы прочитали то, что написал Тегиз? В конце своего поста он написал "но это скорее экзотика, чем повседневная вещь." И после этого вы считаете, что это доводы?
МаксСт привел цитату из майкрософтовой документации и предложил переучиваться. Т.е. опять таки переход на личности, причем совершенно ничего не зная о человеке и о том, чем он занимается по жизни. Где доводы то?

Разговоры о том, что в реестре хорошо хранить сотни настроек для конкретного юзера вообще меня умиляют. Десятки кг в реестр от каждой софтины, что на компе стоит? Вы знаете такой хороший принцип программирования - Keep it simply, stupid!
Это фореве.
User avatar
U-96
Уже с Приветом
Posts: 1626
Joined: 07 Sep 2000 09:01
Location: Nashua, NH

Post by U-96 »

[quote:bad57e4fa1="f_evgeny"]зато какие последствия, когда реестр разрушается! Как будто Кощею иглу сломали! :)[/quote:bad57e4fa1]Ну да, какое разительное отличие от ini-файлов, которые имеют чудесные способности к регенерации в случае разрушения, как морские звезды, червяки или ящерицы. :mrgreen:
И кстати, когда у вас последний раз registry самопроизвольно разрушался?
Stick
Уже с Приветом
Posts: 774
Joined: 26 Dec 2000 10:01
Location: Minsk -> Милуоки, США

Post by Stick »

[quote:9956b7ab57="f_evgeny"]А по-моему, по рабоче крестьянски, данные, с которыми работает программа должны быть расположены примерно так:
1. Системные конфигурационные данные - в системных конфигурационных .ini файлах.
2. Юзерские конфигурационные данные - в юзерских ...
А реестр - MD :)[/quote:9956b7ab57]
Даёшь каждую переменную в отдельный файл!
Имея настройки это имя файла. Это очень удобно! :mrgreen:
Stick around!

Return to “Работа и Карьера в IT”