Когда-то, во времена Вседозволенности и Хаоса, программы хранили пользовательские настройки где угодно.
Многие люди хранили одну копию настроек для всей системы.
Со временем все операционные системы обзавелись нормальными профилями пользователей, стали ограничивать доступ к системным папкам, а всех программистов с детского сада приучали хранить настройки пользователя в папке (ветке) его профиля.
Казалось бы, вот и конец сказки.
Но нет. Бывают случаи, когда этот подход не работает. Я продемонстрирую это на примере ошибки (именно архитектурной ошибки, а не банального бага из-за опечатки) в одном из приложений Google.
Речь идет о сервисе Google Music. Как известно, слушать/скачивать музыку в этом сервисе можно через WEB-интерфейс, но загружать ее на сервер только из специального приложения Google Music Manager. После установки и входа в систему вам будет предложено указать папки, из которых вы хотите загрузить музыку в облако Google. Давайте выберем пару вещей:
Программа начнет загрузку файлов автоматически.
По завершении будет сообщено, что все успешно загружено.
Ну ок, пока все хорошо.
Теперь выйдите из системы и войдите в систему с другой учетной записью Google Music. И, обратите внимание, что мы видим:
В этом аккаунте уже прописаны такие же папки, и более того, песни уже скачиваются в другой аккаунт! Все это произошло само собой, без каких-либо действий с нашей стороны.
Для тех, кто еще не понял эпичности провала, приведу аналогию: вы приходите в гости к другу, просите проверить его электронную почту на его компьютере, заходите в свой аккаунт - и вдруг начинаются письма с почты вашего друга.
появиться в вашем почтовом ящике.
Прохладный? Прохладный.
Почему это случилось? Решение простое:
Google Music Manager хранит настройки общих папок в профиле пользователя в реестре.
При повторном входе в программу настройки не меняются.
Тот факт, что у одного пользователя может быть несколько учетных записей или ситуация «захода на чужой компьютер» вообще не учитывается.
И это ошибка.
Заключение
Если ваше приложение запрашивает у пользователя логин/пароль и куда-то подключается, стоит рассмотреть возможность хранения его настроек не в профиле пользователя ОС, а в собственных файлах профиля пользователя.Пользователи ОС != пользователи внешних сервисов.
Теги: #настройки #программирование
-
Черная Дыра Поглощает Звезду (Рендер)
19 Oct, 24 -
Олимп Эп-1
19 Oct, 24 -
We7 Предлагает Полмиллиона Бесплатных Песен
19 Oct, 24