?

Log in

No account? Create an account

mercury13_kiev


Это не баг, это фича!


Previous Entry Share Next Entry
Корзина на рабочем столе: как правильно и почему так не делают
mercury13_kiev

Насколько мне известно, корзина впервые сделана в компьютере «Лиза» фирмы Apple. В DOS/Windows она появилась под названием Delete Sentry, а Windows 95 сделала собственно корзину.

Корзина (или урна, как я её люблю называть) защищает файл от случайного удаления и реализует метафору полного отката: любое действие можно отменить, даже удаление файла. Однако настоящей корзины так и не смогли сделать. Потому что настоящая корзина должна обладать кучей функций.

Дисковое место, занятое файлами в корзине, считается свободным. То есть: удаляем файл на гигабайт — появился гигабайт свободного места. Но файл остаётся на диске, пока свободное место не упадёт до этого самого гигабайта.

Корзина не должна сигнализировать, что она пустая или занятая. Из стремления к порядку люди начнут эту корзину очищать, что идёт вразрез с её функциональностью.

Очистка корзины — уничтожение компромата, и только. Так что без этой функции, к сожалению, не обойтись.

Выброс файла в корзину должен быть быстр. Иначе большие кучи файлов люди будут удалять в обход урны.

Если человек удалил несколько файлов одним махом, они должны отображаться в корзине одним объектом. При этом можно восстанавливать как весь объект (каталог, несколько каталогов, кучу файлов), так и один файл из этой кучи.

При удалении чего-то большого корзина должна расширяться на короткое время (скажем, на час). После этого система начинает потихоньку (чтобы не перегружать диск) отдавать дисковое место.

Вопросов всё ещё много. Есть ли какие-то правила, что удалять безвозвратно, а что — в корзину? Удалили большой фильм и скачали новый — как сказать компьютеру, что надо выкинуть из корзины старый фильм, а не мелкие документы? (Есть мысль: задания более 30% объёма корзины считаются низкоприоритетными и удаляются первыми.) Как быть со съёмными и сетевыми дисками?

Почему такой корзины нет? В первую очередь потому, что такая корзина должна строиться всеобъемлюще: это файловая система, API ОС и её фоновые службы. Пока, как минимум в Windows, корзина выглядит чем-то прикрученным сбоку. В файловой системе нет понятия «корзина», потому приходится переименовывать по файлу, а затем дописывать какую-то БД — это медленно. По той же причине корзина считается занятым местом, и её нужно чистить, если места мало.

Интересный факт: в 90-е годы кто-то придумал программу для MacOS «Оскар Ворчун» (в честь героя кукольного шоу «Улица Сезам»). Этот Оскар сидел в корзине и пел «I love trash», когда её очищали. Дети любили эту программу, потому файлы родителей часто оказывались стёртыми. Вот уж профанация функции корзины! А прикрыли её… когда нажаловался правоторговец шоу!