Автор: dg
Дата сообщения: 14.06.2004 00:49
Касательно выведения хода выполнения. Если невозможно хотя бы приблизительно определить, сколько времени осталось до завершения процесса, делать прогресс-бар неуместно. Вместо этого я бы сделал доступной в реальном времени развёрнутую статистику, a-la:
Сколько времени прошло с начала обработки текущего задания (очереди, профайла — не знаю точно, как это называется)
Сколько всего файлов в текущем задании / сколько из них завершено (или осталось) Cумарный объём файлов в текущем задании / сколько уже перемещено (или осталось)
Сколько всего фрагментов в текущем задании / сколько из них перемещено (или осталось)
Имя текущего файла в работе; сколько всего в нём фрагментов / сколько уже перемещено (или осталось)
Средняя скорость дефрагментации на данный момент (не знаю, как это должно подсчитываться, но думаю, что не сложно)
Ну и на основе предыдущих пунктов, возможно удастся без особых затрат ресурсов сделать грубую прикидку, сколько времени осталось.
В принципе, без последнего пункта можно и обойтись, если подсчитать это сложно.
Эту статистику можно выводить в отдельном маленьком окне (для которого хорошо бы сделать функцию «Поверх всех окон»). Для каждого из текущих процессов (профайлов) можно сделать по своему окну — пользователь сам решит, за какими из них ему интересно следить, а за какими — нет.
Как уже неоднократно говорилось ранее, просто необходимо выводить какое-либо сообщение при завершении дефрагментации. Как минимум, там должно содержаться, закончился ли процесс успешно, и, если нет, — причина ошибки (например, недостаточно места). Для меня программа, работающая без подобного отчёта, ценности, увы, не представляет. Однако, хотелось бы, чтобы эта информация была более полной — содержала пункты, которые я привёл выше, + подробную информацию об ошибке (например, сколько именно места необходимо было программе для успешной обработки текущего задания). В случае, если программа была свёрнута в трей, это сообщение можно делать всплывающим (a-la стандартный «baloon tip» Windows), а если она была развёрнута в полное окно — то и вывод результатов должен быть отдельным окном, с кнопкой ОК. В обоих случах текст этого сообщения должен записываться в лог (также туда надо заносить события создания заданий и их старта).
Подхожу к главному. Конечно, я толком не понимаю самой сути дефрагментации. Не понимаю — и от этого сильно уважаю. Почему доступны только опции «Переместить в начало / в конец диска»? А если мне абсолютно всё равно куда перемещать — лишь бы дефрагментировать максимально полно?.. Признаюсь — этот диалог поставил меня в тупик.
Далее. Что будет делать программа, если у меня на диске нету столько свободного места, сколько занимает файл? (Например, для меня критично дефрагментировать файлы виртуальных дисков VMware, они занимают по 2 Гб, а свободно на диске, ну, положим, 1,5 Гб). Понятно, что полной дефрагментации файла при таких условиях можно достичь, а можно и не достичь — как повезёт, зависит от положения остальных файлов (поправьте меня, если я не прав). Так что будет делать программа? Я так понимаю, что есть три варианта поведения:
Откажется дефрагментировать файл вообще (сегодня это происходит молча, и я даже не могу судить о том, что произошло).
Дефрагментирует его настолько, насколько получится (скажем, было пять фрагментов, а стало два — уже неплохо).
Раскидает остальные файлы на диске (хотя они и не были включены в профайл) так, чтобы заданный файл поместился единым куском и таким образом доведёт дефрагментацию до победного конца.
Повторяю, эти предположения сделаны дилетантом, который плохо представляет собой суть процесса дефрагментации, поэтому если я не прав — не взыщите.
Ну, и конечно, хотелось бы опции дефрагментации разделов целиком — как у «взрослых» дефрагментаторов. Я понимаю, что основная цель программы — не это, а решение для отдельных файлов. Но согласитесь, хотелось бы иметь одну программу для комплексного решения проблемы дефрагментации (сейчас приходится держать три, включая вашу — ни одна из них меня полностью не удовлетворяет).
В завершение скажу, что я, к сожалению, совершенно избалован красивыми программами для американских людей. После всего вышеперечисленного меня сильно заботит визуальная красота интерфейса. Надеюсь, когда-нибудь дойдёт дело и до этого.
Желаю удачи в вашем начинании.
Добавлено
Ещё раз — как я себе представляю работу программы в идеале.
1. В Проводнике Windows я выбрал файл и запустил его дефрагментацию из контекстного меню
1.1. Кстати, туда же — в контекстное меню — я бы попросил добавить пункты «Добавить файл в текущий профайл» и просто «Добавить в профайл...» (второе должно выводить выбор профайла с возможностью создания нового).
2. Факт создания задания заносится в лог.
3. Начинается дефрагментация файла.
4. Это тоже заносится в лог.
5. Выводится всплывающее сообщение в системном трее с информацией о статусе дефрагментации текущего задания.
5.1. Со временем (скажем, через 20 секунд) оно исчезает, как и положено всякому всплыающему сообщению.
5.2. При нажатии НА это сообщение появляется постоянное окно с более полной информацией о ходе выполнения задания.
5.3. Это же постоянное статусное окно можно включить из меню по правой кноке по значку программы в трее.
5.4. Это же постоянное меню можно включить в настройках программы (чтобы появлялось по умолчанию при запуске любого задания).
5.5. Это постоянное окно можно сделать «Поверх всех окон».
5.5. Это свойство тоже можно сделать умолчанием для всех таких окон в настройках программы.
5.6. Ну, понятно, что это окно можно закрыть обратно, если надоест.
6. Дефрагментация заканчивается.
7. Результаты дефрагментации заносятся в лог.
8. Об этом выводится сообщение пользователю.
8.1. Если постоянное статусное окно было отключено, результаты появляются всплывающем сообщением в трее. Оно исчезает само через те же 20 секунд.
8.1. Если было включено постоянное статусное окно, результаты появляются в нём же. Само оно не исчезает, надо нажать кнопку.