Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Где правильно хранить данные программы? 
V
    Опции темы
 
Читаем топик, потом голосуем :smile
Вариант 1 [ 10 ]  [22.22%]
Вариант 2 [ 20 ]  [44.44%]
Оба не правильны [ 4 ]  [8.89%]
Вариант 1 или 2, в зависимости от ситуации [ 10 ]  [22.22%]
Свой вариант (опишу в топике) [ 1 ]  [2.22%]
Всего проголосовавших: 45
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
Rohoss
  Дата 17.1.2009, 02:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: 4
Всего: 18



К примеру, у меня есть программа, которую будут использовать несколько юзеров на одной машине. Программа, в процессе своей работы накапливает некоторые данные, с которыми работает сама, без вмешательства юзера. Тем не менее, для каждого юзера данные различные.
Мне известны два наиболее распространенных варианта, каждый из которых имеет свои недостатки:
1.    Хранить данные в папке с программой. Пример qip. Тут недостаток в том, что любой юзер будет иметь доступ к файлам другого юзвера, кроме что ограничивать доступ вручную.
2.    Второй вариан, как делают большинство программ, хранить данные в папке «Application Data» юзера. Этот вариант мне больше нравится, но он не лишен недостатков. При переустановки системы все данные пойдут на юг лесом.

 А к примеру qip можно держать на другом разделе и даже не морочится с установкой. Да и настолько мне кажется философия .Net говорит в пользу первого варианта…


Какой по Вашему мнению вариант более правильный, или есть третий хороший вариант?



--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
Фантом
Дата 17.1.2009, 02:32 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: нет
Всего: 49



Есть два нормальных варианта:

1) Хранить данные в папке "Application Data" юзера. Надеяться, что сисадмин компьютера, на котором установлена программа, не идиот, и перенес пользовательские профили на другой раздел, отличный от системного.

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

PM   Вверх
kemiisto
Дата 17.1.2009, 02:40 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 16
Всего: 160



Мне больше нравится первый вариант (правда, я не очень понимаю, причём тут "философия .NET"...). И указанный тобой недостаток
Цитата(Rohoss @  17.1.2009,  00:07 Найти цитируемый пост)
любой юзер будет иметь доступ к файлам другого юзвера, кроме что ограничивать доступ вручную

во втором варианте тоже может присутствовать. 

Цитата(Rohoss @  17.1.2009,  00:07 Найти цитируемый пост)
При переустановки системы все данные пойдут на юг лесом.

 smile Старый добрый Windows...

Да, и ещё я не понимаю, зачем ограничивать доступ к данным, которые
Цитата(Rohoss @  17.1.2009,  00:07 Найти цитируемый пост)
Программа, в процессе своей работы накапливает некоторые, с которыми работает сама, без вмешательства юзера.

 smile

Добавлено через 1 минуту и 41 секунду
Цитата(Фантом @  17.1.2009,  00:32 Найти цитируемый пост)
Надеяться, что сисадмин компьютера, на котором установлена программа, не идиот, и перенес пользовательские профили на другой раздел, отличный от системного.

Цитата(Фантом @  17.1.2009,  00:32 Найти цитируемый пост)
Пользоваться операционными системами с разумно организованной файловой системой

 smile Вот, вот. 

Это сообщение отредактировал(а) kemiisto - 17.1.2009, 02:40


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Rohoss
Дата 17.1.2009, 03:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: 4
Всего: 18



Цитата(kemiisto @  17.1.2009,  02:40 Найти цитируемый пост)
любой юзер будет иметь доступ к файлам другого юзвера, кроме что ограничивать доступ вручнуюво втором варианте тоже может присутствовать. 

Там может иметь доступ разве что юзверь с учётной записью администратора.


Цитата(kemiisto @  17.1.2009,  02:40 Найти цитируемый пост)
Да, и ещё я не понимаю, зачем ограничивать доступ к данным, которыеЦитата(Rohoss @  17.1.2009,  00:07 )Программа, в процессе своей работы накапливает некоторые, с которыми работает сама, без вмешательства юзера. 


Посмотри ту же папку «Application Data», там все данные такого типа. Если данные (файлы), предназначены для работы с ними юзверя, они хранятся в папке «Мои документы»
А почему к ним давать доступ кому попало?



--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
CodeMonkey
Дата 17.1.2009, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Я за v2.

Если выбираешь вариант 1, то ты фактически вешаешь на своей программе крест для обычных (не продвинутых) пользователей.
И вот почему.
Потому что не продвинутый пользователь ставит программу в папку по-умолчанию, т.к. он не знает, как её сменить. А папка по-умолчанию - это Program Files. А Program Files - это только чтение для не админов - ок, в XP и ниже считай все работают админами (за исключением корпоративной среды) - а в Vista и выше - наоборот. 
Соответственно, ваша программа не будет работать, если её устанавливать по-дефолту (практика "жми Next/Next/Next...").

P.S. Я, кстати, QIP сам не люблю за то, что он профили в папке с пользователями хранит. Вместо того, чтобы перетащить свой профиль на другую машину, мне теперь приходится по всему винту шерстить в поисках этих программ, которые хрен знает где хранят свои данные. Хорошо хоть Infium версия научилась делать правильно.

P.P.S. Ссылка в темуссылка в тему 2.

Добавлено через 2 минуты и 52 секунды
Цитата(kemiisto @  17.1.2009,  02:40 Найти цитируемый пост)
Да, и ещё я не понимаю, зачем ограничивать доступ к данным, которые
Цитата(Rohoss @  17.1.2009,  00:07 )
Программа, в процессе своей работы накапливает некоторые, с которыми работает сама, без вмешательства юзера.

Тот же QIP: переписка с заказчиком, "волшебные" номера, явки, пароли...    Извините, лучше я в папке AppData это буду хранить (ещё и атрибут шифрования накину), чем, скажем, в корне D  ;)


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
kemiisto
Дата 17.1.2009, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 16
Всего: 160



Цитата(CodeMonkey @  17.1.2009,  08:53 Найти цитируемый пост)
Тот же QIP: переписка с заказчиком, "волшебные" номера, явки, пароли...

CodeMonkey, и это по твоему без вмешательства юзера?

Добавлено через 6 минут и 21 секунду
Цитата(Rohoss @  17.1.2009,  01:22 Найти цитируемый пост)
Там может иметь доступ разве что юзверь с учётной записью администратора.

А я и сказал
Цитата(kemiisto @  17.1.2009,  00:40 Найти цитируемый пост)
может присутствовать

а может и не присутствовать.

Добавлено через 7 минут и 46 секунд
Цитата(Rohoss @  17.1.2009,  00:07 Найти цитируемый пост)
или есть третий хороший вариант?

Да. И Фантом его уже озвучил - испоьзовать *nix системы! smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
CodeMonkey
Дата 17.1.2009, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата(kemiisto @  17.1.2009,  11:42 Найти цитируемый пост)
и это по твоему без вмешательства юзера?

Да, это я называю "без вмешательства пользователя". С моей точки зрения это данные, создаваемые программой автоматически. "С вмешательством" пользователя - это когда вы в текстовом редакторе что-то написали и выбрали "Сохранить как". А то, что эти данные ещё куда-то программа может скидывать - это уже другое дело.
А что тогда по-вашему без вмешательства юзера? Без вмешательства юзера компьютер даже не включится. Как насчёт водящего мыла? Это с вмешательством или без? Как насчёт кэша, где могут храниться критические данные. Это с вмешательством или без? Как насчёт автоматической БД thumbnails? Это с вмешательством или без? 
Суть в том, что всё это - данные пользователя, а, следовательно, доступ к ним должен быть ограничен.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Rohoss
Дата 17.1.2009, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: 4
Всего: 18



Я и сам за второй вариант. smile  Ну всё же хотел убедиться в правильности выбора.
Всем спасибо, хотя дискуссию думаю можно и продолжить. smile 



--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
CodeMonkey
Дата 17.1.2009, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Вообще это зависит от обстоятельств. Например, многие программы предлагают две версии: стационарную или мобильную (или же одну, но при установке спрашивается, куда ставим: на машину или на флешку).


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
OverFrosT
Дата 19.8.2010, 18:22 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 19.8.2010

Репутация: нет
Всего: нет



Реестр:
- непереносимость между машинами
- помирает в случае падения винды
+ можно плодить копии проги с одним и тем же набором настроек
+ контроль доступа
+? по-майкрософтовски кошерно
+ возможность делать иерархию
+ возможность записывать бинарные данные

Ini
+ отличная переносимость
+ при падении винды легко скопировать
+ можно редактировать вручную (экспертные натстройки, которым не нашлось места в ГУЕ)
- сложно организовать иерархию
- сложно хранить бинарные данные (то есть, придётся кодировать в base64 или ещё как-нибудь)

Xml
+ все плюсы Ini
+ иерархия любой вложенности и сложности
- бинарные данные опять же в пролёте

контроль доступа в случае файлов ложится на файловую систему.

Хранение файла в папке с прогой:
+ прога самодостаточна, портабельна, легко переносится (в т.ч. на флешку или компакт)
- права доступа в XP+
- несколько юзеров юзают одни настройки

Хранение файла в AppData:
+ с правами доступа всё ОК (причем по дефолту)
+ у каждого юзера свои настройки
- прога не самодостаточна, при переносе нужно искать файл "где-то там"

В общем, мой выбор таков:
1) Файлы - однозначно. Формат файла определяется нуждами, глупо для линейного набора параметров "key=value" юзать XML.
2) При запуске проверка на наличие файла в папке с программой (либо любой другой способ указать программе, чтобы искала настройки рядом с собой - дополнительный файл seek_settings_here или portable.dat (а-ля AlReader и PDF-XChange Viewer) либо файл самых общих настроек, указывающий относительный путь к подпапке с персональными настройками (а-ля FileZilla) - не суть). Но делать ОБЯЗАТЕЛЬНО! Ибо портабельность рулит.
3) Если рядом с собой настроек не найдено - идти в AppData.

Именно такая схема используется в uTorrent, и я считаю её оптимальной. Она удовлетворяет двум самым важным аспектам: портабельности путём несложной настройки и многопрофильности+разграничению прав. Реестр в этом случае по некоторым аспектам идёт вровень, по некоторым - проигрывает.
PM MAIL   Вверх
Qu1nt
Дата 19.8.2010, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 18
Всего: 50



Цитата(OverFrosT @  19.8.2010,  17:22 Найти цитируемый пост)
- бинарные данные опять же в пролёте

Base64.
PM MAIL   Вверх
k0rvin
Дата 19.8.2010, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(Rohoss @ 17.1.2009,  02:07)
2.    Второй вариан, как делают большинство программ, хранить данные в папке «Application Data» юзера. Этот вариант мне больше нравится, но он не лишен недостатков. При переустановки системы все данные пойдут на юг лесом.

если юзер совсем нуб поставил прогу в "C:/Program Files", то и при первом варианте при переустановке системы все данные идут лесом. а домашний каталог можно и на другом разделе хранить, + мастер переноса файлов никто не отменял.


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
CodeMonkey
Дата 20.8.2010, 02:30 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Некрофилы  smile 


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
drkot
Дата 23.8.2010, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



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

А если по существу, то изучите соглашение для ос виндовс для разработчиков прикладных программ (особенно делая упор на висту и выше). И тогда не будет возникать глупых опросов о том "как написать софт коротый не будет работать у половины пользователей".

Добавлено через 10 минут и 26 секунд
Судя по голосованию ~40% напишут софт не совместимый с вистой... 
еще 40% сделают все чтобы сисадмин  smile  при попытке перенести данные пользователя.
остальные определятся в зависимости от солнечной активности... как им поступить...

что ж... это объективная реальность... удивляться тут нечему.

Application Data - это данные приложения! но не как ни пользователя! и я даже не знаю как бы я  smile  того  smile  который принес бы мне проект сохраняющий туда данные пользователя.

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


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Rohoss
Дата 24.8.2010, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: 4
Всего: 18



Цитата(drkot @  23.8.2010,  23:38 Найти цитируемый пост)
Application Data - это данные приложения! но не как ни пользователя! и я даже не знаю как бы я    того    который принес бы мне проект сохраняющий туда данные пользователя.

Вы бы внимательно прочитали первый пост, а потом ругались бы.
Цитата(Rohoss @  17.1.2009,  02:07 Найти цитируемый пост)
Программа, в процессе своей работы накапливает некоторые данные, с которыми работает сама, без вмешательства юзера. Тем не менее, для каждого юзера данные различные.


Вот именно, Application Data - это данные приложения, но для каждого пользователя они различны



--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2058 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.