Решение по-эпловски
Об одном из сильнейших приёмов в решении любой дизайнерской проблемы пишет у себя Женя Арутюнов. Вот встроенный в Мак простейший текстовый редактор Текстэдит:
Типа проблема в том, что тулбар может не влезть в окно по ширине. А решение состоит в том, чтобы не считать это проблемой. «Не поместился — значит не поместился», — пишет Женя.
Этот приём мы называем «решением по-эпловски». Исходная формулировка у нас была такая: «Решить по-эпловски — значит сделать вид, что проблемы нет». Но со временем я понял, что «сделать вид» тут лишние. Проблемы ведь реально нет. От этого продажи Маков не упадут, недовольные пользователи не станут звонить чаще в суппорт, ни один пользователь не задумается о переходе на Виндоус. Во вселенной никого не волнует, что будет с этим тулбаром, если он не влезет!
Там в комментариях обсуждение небольшое, стоит глянуть. Ясное дело, куча людей против.
Безусловно у Эпла полно недодумок и недоделок, и не исключено, что в данном случае они просто не предусмотрели этой ситуации, и поэтому оно работает как-то так, как получается само собой. Однако нам тут важно не Эплам оценку дать, а самим правильный вывод сделать. Тем более, что если бы они её предусмотрели, что почти наверняка оставили бы ровно так.
В разработке кучи продуктов тратится значительное время на совершенно несущественные детали. Поэтому сталкиваясь с проблемой и необходимостью предусмотреть какую-то особую ситуацию, стоит сначала посмотреть, как что будет, если ничего специально не делать. Вы удивитесь, как часто окажется, что ничего страшного не произойдёт.
Пример из собственного опыта. В Эгее комментарии удаляются без диалога подтверждения, зато с возможностью восстановить, если случайно стёр. Восстанавливалка доступна до перезагрузки страницы. Смысл в том, что при нажатии на удаление комментарий на самом деле не удаляется, просто в базе ему ставится флаг невидимости. При восстановлении этот флаг убирается.
В чём тут проблема. Да вот как-то бы по-настоящему удалить удалённые комментарии из базы после того, как их уже всё равно нельзя восстановить. Ну, думаю, решение вы теперь сами сможете угадать.
Отмазка отличная, круче не видел.
И ведь действительно пофиг на базу, пускай захламляется.
Правильный подход! Пускай база завалится мусором! Зато все всегда под рукой! У меня так на столе примерно...
Марк, вам не любоваться же базой. А от того, что она захламлена в какой-то области, система тормозить не станет.
Когда/если вдруг нужно (или владелец блога считает, что нужно) почистить базу, это можно сделать и прямым SQL-запросом.
Сразу вспоминается ВКонтакте, решивший не удалять фотографии пользователей из базы, а просто скрывать ссылки на них.
Тут есть потенциальная проблема/опасность, связанная с «прайвеси», поэтому аналогия не вполне корректная.
Перед тем как поставить флаг «удалён», надо отправить ещё один запрос «Удалить удалённые» — проще всего, можно ещё заморочиться с кроном (он в данном случае подходит лучше всего), можно её сделать отдельную страницу «Корзина» и прикрутить поиск, сортировку, экспорт, архивирование и ещё много нужных вещей =D
Можно было пойти ещё дальше и не убирать восстанавливалку после перезагрузки страницы.
Это сложнее и хуже. Сложнее, потому что сейчас восстанавливалку при удалении рисует Джаваскрипт, а чтобы выводить её после перезагрузки нужно в шаблонах предусмотреть её вид и логику вывода для удалённых комментариев. Хуже, потому что пользователей будут бесить торчащие повсюду восстанавливалки и будет возникать вопрос «А как совсем удалить?»
Всё верно. Проблемы базы пользователя не должны волновать.
Глеб Радченко: а что, от этого контактом стали пользоваться меньше людей? Или он от этого медленнее работать стал?
Владимир Твердохлебов: в таком случае может возникнуть ситуация, в которой будут удалены комментарии, которые потом пользователь захочет восстановить.
Проще всего, по-моему, раз в месяц (неделю, несколько дней) чистить базу от удаленных комментариев старше одного месяца (недели, нескольких дней).
А еще можно назвать вещи своими именами и сделать две кнопки: «скрыть комментарий» и «удалить комментарий».
В этом есть определенный смысл: если спамерские или хамские комментарии скрывать, а не удалять, то назойливого спамера или хама можно легко забанить по IP.
Пример с удалением верный.
Для меня логика простая: удаление дорогая операция, а дисковое пространство очень дешевое.
Самое очевидное и простое решение, как мсне кажется, удалять комментарии через некоторое время. Если за несколько часов комментарий не восстановили, значит он не нужен
У этой проблемы с тулбаром есть решение, оно обыденное и часто используется.
Просто ты путаешь баг с фичей
Что?
А?
Это не проблема. Проблема бы возникла, если бы кнопки перестали влезать на экран с минимальным разрешением.
Вероятно саппорт эппла и сейчас получает по нескольку обращений в месяц от пользователей, которые не могут найти нужную кнопку на панели, но на фоне других проблем это несущественно.
Если какое то дело долго не делать —
обычно оказывается что делать то было и необязательно!
http://www.exler.ru/expromt/images/19-09-2011/11.jpg — тут тоже кое-что не поместилось, но кто-то явно идиот. Или дизайнер, или фоннат.
2Глеб Радченко: насколько знаю, на сервисах с таким объёмом данных что-то удалять из базы технически нецелесообразно, это пагубно влияет на производительность. Следовательно, даже удалённая-удалённая анкета с фотографиями и комментариями никогда не будет удалена.
А вообще, ничто не может быть оправданием банальной лени, подаваемой в виде благодетели от «гения».
Ничто. Кроме эппла.
На самом деле, Эпл так не думает. Попробуйте изменить размеры других окон, например в Файндер — там появляется стрелочка-меню с исчезнувшими кнопками.
А ТекстЭдит так себя ведет по той же причине, почему в Висте были стремные ВордПад и Пэинт времен 98-го, а в 7-ке они просто суперские с риббоном!
У Эпл сейчас нет времени и ресурсов переделать все с учетом новых собственных же стандартов и требований к UI. Маленькая компания, что сказать. Не удивлюсь, если через год-два переделают. Сколько им понадобилось лет, чтобы переписать Файндер? Медленно-медленно.
Собственно, если в качестве бд используется MySQL и таблицы в InnoDB, подчищать базу смысла никакого не имеет. Файлы InnoDB в обьёме не уменьшаются, да и зачем дефрагментировать их для CMS?
По поводу неудаления удаляемых фотографий во ВКонтакте (с предлогом выглядит неуместно и без него тоже). Если фотографии не удалять, то новые фотографии будут добавляться на диск последовательно из занимать непрерывные последовательности блоков. Если фотографии удалять, то между удалённых фотографий на диске будут возникать «дырки» из свободных блоков и новые фотографии будут по этим дыркам разбиваться, фрагментироваться, что снизит производительность. К тому же можно предположить (я сам не пользуюсь, так что хз), что фотографии удаляются реже, чем не удаляются. А читаются фотографии гораздо чаще, чем пишутся: записывается на диск фотография один раз, а просматривается сотни, тысячи раз.
З.Ы. Да, вы правильно поняли, я фанат дефрагментации. Сегодня перед уходом на работу не мог оторваться от экрана с перемигивающимися квадратиками. :-)
@Маздайщик
В новых файловых системах (да уже и не новых), например, файлы пишутся туда, где есть место для него — или всегда в конец, или в большущую дыру. Фрагментация наступает только на забитом под завязку диске.
Эгея не ставится. Что за хуйня. Куда писать?
Да на почту писать, на почту.
Как это «ни один пользователь не задумается о переходе на Виндоус»?
Не могу сказать, что именно TextEdit меня достал, но куча вот таких проблем и тупняков в МакОС в итоге заставила меня перейти именно на Виндоус.
Некто Неизвестный просто отжог своим комментарием :) Виртуально плюсую за чувство юмора +)