![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
||
|
Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 4 Всего: 18 |
К примеру, у меня есть программа, которую будут использовать несколько юзеров на одной машине. Программа, в процессе своей работы накапливает некоторые данные, с которыми работает сама, без вмешательства юзера. Тем не менее, для каждого юзера данные различные.
Мне известны два наиболее распространенных варианта, каждый из которых имеет свои недостатки: 1. Хранить данные в папке с программой. Пример qip. Тут недостаток в том, что любой юзер будет иметь доступ к файлам другого юзвера, кроме что ограничивать доступ вручную. 2. Второй вариан, как делают большинство программ, хранить данные в папке «Application Data» юзера. Этот вариант мне больше нравится, но он не лишен недостатков. При переустановки системы все данные пойдут на юг лесом. А к примеру qip можно держать на другом разделе и даже не морочится с установкой. Да и настолько мне кажется философия .Net говорит в пользу первого варианта… Какой по Вашему мнению вариант более правильный, или есть третий хороший вариант? |
|||
|
||||
Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Есть два нормальных варианта:
1) Хранить данные в папке "Application Data" юзера. Надеяться, что сисадмин компьютера, на котором установлена программа, не идиот, и перенес пользовательские профили на другой раздел, отличный от системного. 2) Пользоваться операционными системами с разумно организованной файловой системой (в которых от сисадмина не требуются проявления интеллекта для решения подобных задач). ![]() |
|||
|
||||
kemiisto |
|
||||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 16 Всего: 160 |
Мне больше нравится первый вариант (правда, я не очень понимаю, причём тут "философия .NET"...). И указанный тобой недостаток
во втором варианте тоже может присутствовать. ![]() Да, и ещё я не понимаю, зачем ограничивать доступ к данным, которые
![]() Добавлено через 1 минуту и 41 секунду
![]() Это сообщение отредактировал(а) kemiisto - 17.1.2009, 02:40 -------------------- |
||||||||
|
|||||||||
Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 4 Всего: 18 |
Там может иметь доступ разве что юзверь с учётной записью администратора. Посмотри ту же папку «Application Data», там все данные такого типа. Если данные (файлы), предназначены для работы с ними юзверя, они хранятся в папке «Мои документы» А почему к ним давать доступ кому попало? |
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 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 секунды Тот же QIP: переписка с заказчиком, "волшебные" номера, явки, пароли... Извините, лучше я в папке AppData это буду хранить (ещё и атрибут шифрования накину), чем, скажем, в корне D ;) -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 16 Всего: 160 |
CodeMonkey, и это по твоему без вмешательства юзера? Добавлено через 6 минут и 21 секунду
А я и сказал а может и не присутствовать. Добавлено через 7 минут и 46 секунд Да. И Фантом его уже озвучил - испоьзовать *nix системы! ![]() -------------------- |
||||
|
|||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Да, это я называю "без вмешательства пользователя". С моей точки зрения это данные, создаваемые программой автоматически. "С вмешательством" пользователя - это когда вы в текстовом редакторе что-то написали и выбрали "Сохранить как". А то, что эти данные ещё куда-то программа может скидывать - это уже другое дело. А что тогда по-вашему без вмешательства юзера? Без вмешательства юзера компьютер даже не включится. Как насчёт водящего мыла? Это с вмешательством или без? Как насчёт кэша, где могут храниться критические данные. Это с вмешательством или без? Как насчёт автоматической БД thumbnails? Это с вмешательством или без? Суть в том, что всё это - данные пользователя, а, следовательно, доступ к ним должен быть ограничен. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 4 Всего: 18 |
Я и сам за второй вариант.
![]() Всем спасибо, хотя дискуссию думаю можно и продолжить. ![]() |
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Вообще это зависит от обстоятельств. Например, многие программы предлагают две версии: стационарную или мобильную (или же одну, но при установке спрашивается, куда ставим: на машину или на флешку).
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
OverFrosT |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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, и я считаю её оптимальной. Она удовлетворяет двум самым важным аспектам: портабельности путём несложной настройки и многопрофильности+разграничению прав. Реестр в этом случае по некоторым аспектам идёт вровень, по некоторым - проигрывает. |
|||
|
||||
Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 18 Всего: 50 |
||||
|
||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
если юзер совсем нуб поставил прогу в "C:/Program Files", то и при первом варианте при переустановке системы все данные идут лесом. а домашний каталог можно и на другом разделе хранить, + мастер переноса файлов никто не отменял. -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Некрофилы
![]() -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: 5 Всего: 8 |
Мммммда......
не дай бог Вам уважаемые писать коммерческий софт... А если по существу, то изучите соглашение для ос виндовс для разработчиков прикладных программ (особенно делая упор на висту и выше). И тогда не будет возникать глупых опросов о том "как написать софт коротый не будет работать у половины пользователей". Добавлено через 10 минут и 26 секунд Судя по голосованию ~40% напишут софт не совместимый с вистой... еще 40% сделают все чтобы сисадмин ![]() остальные определятся в зависимости от солнечной активности... как им поступить... что ж... это объективная реальность... удивляться тут нечему. Application Data - это данные приложения! но не как ни пользователя! и я даже не знаю как бы я ![]() ![]() Всех злобным кодерам советую изучить структуру хранения данных в opera (браузер такой)... имхо один из лучших вариантов организации данных приложения и пользователя. -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
Rohoss |
|
||||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 4 Всего: 18 |
Вы бы внимательно прочитали первый пост, а потом ругались бы.
Вот именно, Application Data - это данные приложения, но для каждого пользователя они различны |
||||
|
|||||
Matematik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 17 Всего: 50 |
||||
|
||||
OverFrosT |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 19.8.2010 Репутация: нет Всего: нет |
Qu1nt,
Если бездумно форматят системный диск - то конечно, тут ничем не спасёшь. Но если юзер соображает, то файл куда легче скопировать через тот же LiveCD, что муторней намного в случае реестра (хотя и возможно). Правда, будут проблемы с правами доступа на NTFS. Хм.
Взаимоисключающие параграфы? |
||||||
|
|||||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
||||
|
||||
Finalist |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 23.5.2006 Репутация: нет Всего: 1 |
а почему не хранить данные в локальной базе? Sqlite например...
пустую базу(дефолтную) запихнуть в ресурсы, и если нету в корне проги то создать... и после переустановки винды. и, поидее, с флешки будет работать. Если данных мало, или они не сложные, можно в файл писать в папке с екзешником, заксорить потом, или во время записи\чтения. игры так делают.. свой, самый простой вариант шифра. и уже проблематично данные достать... В реестр писать надо только то, что актуально в текущей винде, до переустановки.. да и то, реестр такой жидкий,что вечно в нем какие-то ошибки и глюки.. чистить надо. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Зачем такие сложности?
![]() Добавлено через 28 секунд Ааааа!! Я понял, настоящие герои программисты всегда идут в обход ![]() |
|||
|
||||
Finalist |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 23.5.2006 Репутация: нет Всего: 1 |
Человек беспокоится о
а в зашифрованном файле долго разбираться где чьи данные. и я, не думаю, что это сложность) или сложность это sql? стабильный движок работы с данными проще чем писать сериализацию данных. если конечно не использовать совсем простую сериализацию и запись в файл. |
|||
|
||||
drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: 5 Всего: 8 |
он самый Rohoss, пардон, много раз слово юзер упоминалось... переклинило... время то позднее было... да не просто... но с другой стороны вероятность того что их грохнут при переястановке тоже выше, да и подойдут ли они (данные) если просто перезалить на новый профиль. Если не подойдут, то плохо, если подойдут то смысла их шифровать нет... тк любой пользователь сможет их получить. ЗЫЖ при правильно настроеной политике безопасности проблем с утечками практически нет. -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Для этого в каждом профиле пользователя свои данные. На крайний случай, если все работают с одной программой и в одном профиле, то можно иметь несколько папок с настройками |
||||
|
|||||
Finalist |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 23.5.2006 Репутация: нет Всего: 1 |
это уже пусть Rohoss, выбирает как лучше, ему делать)) я просто вариант предложил
|
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Я думаю, что за полтора года он успел сделать выбор, не?
![]() -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
Rohoss |
|
|||
![]() Начальник интернета ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1308 Регистрация: 9.10.2006 Где: Matrix Репутация: 4 Всего: 18 |
Угу ![]() |
|||
|
||||
Motorocker |
|
|||
poison free Профиль Группа: Участник Сообщений: 8 Регистрация: 3.10.2007 Где: Пермь Репутация: нет Всего: нет |
Проголосовал:
Вариант 1 или 2, в зависимости от ситуации Поддерживаю OverFrosT. При таком способе хранения настроек обычные пользователи лишаются проблем, а опытные получают портабельную программу. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |