Из русского перевода книги «Кицур Шулхан Арух» (краткий «Шулхан Арух», см. в Википедии), главы 24 «О дефектах в свитке Торы» (цитирую фрагментарно):
В свитке Торы могут встретиться ошибки, допущенные переписчиком, а также дефекты, образовавшиеся со временем. В некоторых случаях из-за них весь свиток Торы становится непригодным для публичного чтения [...] Прервать чтение свитка Торы надо в следующих случаях:
если расстояние между буквами слова настолько велико, что кажется, будто написано не одно слово, а два, и наоборот, если оно столь мало, что два слова сливаются в одно;
если обнаружены слившиеся буквы и очевидно, что это произошло еще во время написания текста;
если пробел в тексте, указывающий на начало следующего раздела, находится не на месте.
Короче говоря, без надлежащей типографики даже Тора теряет свою святость.
На пост-запрос следует отвечать редиректом на страницу, где есть какой-то результат выполнения этого запроса, скажем, список комментариев, где новый комментарий уже запостился.
Когда на странице, полученной по посту, жмёшь F5, «Эксплорер» спрашивает, переотправить ли данные формы. Естественно, нормальный пользователь не понимает, почему у него это спрашивают, и почему нельзя просто перезагрузить страницу — вдруг там появились ещё комментарии? А нельзя потому, что у браузера просто нет никакого механизма получения страницы заново, кроме как повторением того же пост-запроса.
Неопытный пользователь жмёт «Отмену», но быстро обнаруживает, что это приводит только к печальному «Внимание: страница устарела». Так он постепенно научается всегда требовать переотправки формы, становясь, таким образом, опытным пользователем. Опера совершенно справедливо переотправляет форму, не задавая пользователю бессмысленных вопросов.
Естественно, что при переотправке формы комментарий запосчивается дважды, трижды или восемнадцать раз. Не стоит переживать по этому поводу; пусть переживает создатель такого кривого сайта.
Исключение
Отвечать на пост-запрос страницей можно только в экстремальной ситуации.
Например, пользователь запостил новый комментарий, а веб-сервер из-за какого-нибудь сбоя не смог связаться с сервером БД, чтобы этот комментарий добавить в базу. Сообщение об ошибке должно содержать текстарию с полным текстом комментария (чтобы не получилось, что всё написанное пропало) и объяснять человеку, что если его сообщение представляет для него ценность, он должен его скопировать и сохранить себе на память (или попробовать запостить позже).
Иными словами, нарушать это правило можно только тогда, когда иначе предотвратить потерю данных невозможно физически.
То, что «Беларусь» — это не по-русски, понимает любой человек, знакомый с основными принципами русской орфографии, которые, кстати, часто даются именно в противопоставление белорусским.
Удивительно, как превратно некоторые понимают смысл государственного языка. Обычно идея объявления какого-то языка государственным в том, чтобы использовать этот язык, который объективно существует. А некоторые ребята думают наоборот: если мы объявили язык государственным, то мы сразу получили право его менять как хотим, и при этом другие государства должны следовать нашей прихоти.
То есть, например, Гондурас может объявить английский государственным наряду с испанским, и сразу решить, что Америка теперь по-английски будет называться Estados Unidos. Ну и кому будет не наплевать, что они там решили в Гондурасе по поводу английского языка? Да пусть хоть жопой называют и считают при этом, что говорят по-английски. В Бобруйск, животные! Или что там есть, в Гондурасе.
Хотя, если бы идиотов не было, жить было бы не так весело, правда?
Сегодня случайно подслушал диалог о том, можно ли писать в аське неправильно — не задумываться о грамотности для экономии времени.
Я считаю, что писать нужно правильно везде. Думаю, идея разрешить в аське написание слов с ошибками приходит в голову к не самым грамотным людям, которым обычно нужно время на перепроверку, расстановку запятых и тому подобное, тогда как грамотный человек сразу пишет правильно.
Орфография священна, но пунктуацию я позволяю себе использовать свободно, избавляясь, например, от тех запятых, которые, на мой взгляд, мешают чтению написанного с той интонацией, с которой я задумал. Важно тут то, что я не «забываю» поставить запятые, а вполне целенаправленно расставляю их так, как сам хочу.
В подслушанном мною этом диалоге про аську, в частности, обсуждалось использование слова «щас» вместо «сейчас». Приводился довод о том, что «щас» вдвое короче, и поэтому можно наплевать на «правильное» написание слова.
Моя гипотеза состоит в том, что «щас» — это не вольное написание слова «сейчас», а просто-напросто другое слово (естественно, произошедшее от «сейчас»). Я пришёл к такому выводу, когда заметил, что я произношу эти слова по-разному («сейчас» произносится в два слога: си-час) и использую их в разных случаях.
Слово «щас» имеет оттенок сиюминутности («щас приду», «там щас снукер по телеку»), в то время как «сейчас» говорит о большем интервале, о настоящем времени («молодёжь сейчас не та», «сейчас мне не до переезда в Москву»). Есть ещё отдельное слово «ща» со своей областью применения («ща, погодь»; ср.: «сейчас, погодь»). Все три слова взаимозаменяемы, но всё-таки у каждого есть свои типичные случаи использования.
Не является орфографической ошибкой (в моей системе ценностей) написание слова наперекор словарю, если имелось ввиду выделить особое, нестандартное произношение слова (то же «погодь» из примера выше; и многое другое: «чё» вместо «что», «дарова» вместо «здорово», «ваще» вместо «вообще»; наконец, «плиз» вместо «пожалуйста»).
Короче, не нужно оправдывать безграмотность экономией времени. Как бы человек ни спешил, сразу видно, как у него обстоят дела с русским языком.
Теперь поговорим про затронутую тему соотношения анимации и производительности.
А что можно сказать про анимацию и производительность? Ребята, посмотрите на Мак и Айфон. В Айфоне процессор крутится на четырёхстах мегагерцах.
Всё понятно: против анимации выступают пользователи Винды, которые не видели нормальной анимации. Собственно, я тоже при установке винды первым делом отключаю весь этот кошмар. Проблема всей анимации Винды — если забыть о чудовищном качестве реализации — её бессмысленность.
В Висте Микрософты сделали более крутую графическую подсистему, которая позволяет сделать всё плавным, поэтому на анимацию в Висте по крайней мере не так больно смотреть. Но Микрософты всё ещё думают, что анимация — это просто развлечение пользователя. Они ещё не понимают, что Дашбоард плавно прилетает из-за спины не только потому, что это круто, но и для того, чтобы пользователь понимал, что он за спиной. Они не понимают, что окна утекают в Док настолько реалистично для того, чтобы пользователь совершенно подсознательно чувствовал, что вот эта штука в Доке — это и есть его окно. Поэтому на Маке для переключения между окнами есть Экспоузей, а на Висте — эта тупая хрень с окнами, стоящими к тебе боком и заслоняющими друг друга. Про Тайм-машину вообще чего говорить — понятно, что там анимация в интерфейсе сделала продукт — первое в истории человечества приложение для бекапа, которым люди будут пользоваться.
Если кто не знает, когда у Джобса в интервью спросили, зачем они сделали в Дашбоарде, что когда бросаешь в него новый виджет, от него идут круги по воде, он ответил: Because we can. Этот ответ в три раза умнее, чем может показаться сначала. Этим ответом он дал понять, что все остальные этого не делают просто потому, что не могут. Разговоры про потерю производительности — отмазки неудачников. И, «могут» здесь означает не только техническую возможность, но ещё и умение сделать это так, чтобы это действительно выглядело хорошо и помогало в работе.
Микрософты к 2008 году так и не обратили внимания на то, что в мире существует инерция. Поэтому если бы они сделали летающие туда-сюда строчки при пересортировке, это было бы просто невнятное мельтешение.
Да, я вполне допускаю, что может быть анимация в случае с пересортировкой таблицы была бы и лишней. Но уж точно не стоит делать её «отключаемой».
Если, реализовав такой контрол, мы обнаружим, что анимация мешает (не помогает), её нужно просто убрать, совсем.
К вопросу о том, что нельзя лишать пользователя возможности сортировки задом наперёд по алфавиту — вдруг понадобится.
Ну, естественно, лишать нельзя — нужно было просто изначально не давать пользователю возможности сделать что-нибудь противоестественное и бессмысленное, потому что потом, когда дойдёт, что это была ошибка, пользователи научатся использовать какие-нибудь её побочные эффекты, и убрать её уже будет нельзя.
Ха, собственно так и произошло: люди не хотят отдавать сортировку против алфавита потому, что они используют её, чтобы быстро попасть в конец списка. Не было бы её никогда — люди бы жали End, крутили скроллинг или придумали бы что-то ещё. Но так — им дали ещё и способ добиться схожего эффекта через элемент управления, не имеющий никакого отношения к задаче — и некоторые случайно стали этим пользоваться.
В Виндоусе за каким-то чёртом можно переместить Панель задач в любую сторону экрана. Эта возможность создала кучу головной боли и пользователям (многие случайно перетаскивают панель задач, и потом не знают, как её вернуть; заодно ломается расположение иконок на десктопе), и разработчикам (любое приложение должно учитывать, что панель задач может оказаться где угодно, и вести себя адекватно). Естественно, если в следующей версии Винды это убрать, многие чудаки, которые зачем-то это используют, заплачут (можете написать в комментарии, какая это удобная фича!). На Маке нельзя переместить меню вниз или вбок. Я ни разу не слышал, чтобы кого-то это не устраивало, или хотя бы чтобы кому-то в принципе пришло в голову это сделать.
Я ведь уже рассказывал почему сейчас нереально исправить ошибку московского метро с тем, что каждая платформа называется по-своему? Да, рассказывал 18 раз. Обычное дело: люди нашли побочный эффект и научились его использовать, и поэтому теперь защищают плохую систему.
В e2 мне предстоит убрать трекбек, кросспост в же-же, древовидные кейворды, возможность спрятать часть заметки за «читать дальше» и ещё ряд функций. Я уже предвижу, как сильно все будут ругаться и насколько e2 станет лучше.
Мне было лень отвечать на все комментарии к заметке про таблицы в интерфейсах. Когда видишь, что комментаторы не читают друг друга, уже отвечаешь без удовольствия, но когда обнаруживаешь, что люди и заметку-то толком не прочитали — совсем грустно становится.
Больше всего меня развлекли те, кто рассказывал мне о том, какой логикой руководствовались программисты, направляя стрелку туда или сюда. А то я сам не знаю. Но почему мне должно быть до этого дело?
После того, как я опубликовал заметку, товарищ написал мне: «логика в направлении стрелочки достаточно очевидна, на мой взгляд». Я попросил его не подсматривая ответить мне, что значит стрелка вниз в сортировке по дате. Через 26 секунд он ответил, и ошибся. Я специально не пишу, что именно он ответил — проверьте себя.
Надо сказать, что комментарии, как положительные, так и отрицательные, убедили меня в том, что я всё сделал по большому счёту правильно. Явная ошибка только одна — изменение заголовка. Нужно просто придумать, где лучше всего разместить эту надпись.
Гипотеза, что надпись хуже воспринимается, чем треугольник, так как надпись надо читать, довольно любопытна. Надпись «Новые сверху», действительно, нужно прочитать, чтобы понять: «новые сверху». А взгляд на треугольник совершенно мгновенно позволяет понять вот что: «это треугольник». Мне представляется — возможно, комментаторы меня поправят — что информация о том, что новые сверху, более актуальна и имеет больше ценности, чем информация о том, что на экране пользователя изображён треугольник.
Замечу, что чтобы получить информацию, вообще, нужно больше времени, чем чтобы её не получать. Я не усматриваю в этом факте недостатка информации как явления, и не готов делать из него вывод о том, что информацию нужно прятать и затуманивать.
Кстати. Одним из самых идиотских шагов в истории телевизорной индустрии был отказ от надписей «Picture in picture», «Teletext», «Menu» и т. д. на пультах и переход к бессмысленным, никому не понятным иконкам. Что с того, что я очень быстро увидел квадратик, половинка которого закрашена в чёрный цвет с палкой и двумя смотрящими на неё треугольниками?
Какие-то иконки на пульте
Этот подход позволил компаниям сэкономить на производстве локализованных версий пультов для каждой страны. Вместо того, чтобы сделать пульты понятными всем, они сделали их непонятными даже тем, кто в состоянии читать латиницу и знает пару слов по-английски.
Да, ещё. Если кому-то вдруг это интересно, мне понравились идеи про указывание прямо в таблице над и под данными или рядом с ней слов «новые», «старые» (Шурик Бабаев, Centaur) и про градиентный фон (LXj; правда, непонятно, что он значит, но всё равно понравилось).
В следующих частях поговорим про отбирание у пользователя функциональности, которой он мог бы хотеть воспользоваться, и про отключабельность анимации.
Иногда в интерфейсах нам нужно выводить таблицу каких-нибудь объектов. Всем знакомый пример — Проводник:
Стандартный контрол для вывода таблиц подразумевает возможность сортировки объектов по любой из колонок, причём в двух направлениях. В большинстве случаев в Проводнике мы просто пользуемся сортировкой по алфавиту и не обращаем внимания на то, как выделен выбранный вариант сортировки. Но мы знаем, что если ткнуть в заголовок какой-нибудь другой колонки, то всё пересортируется по ней:
Если ткнуть в уже выбранный столбец, то сортировка изменит направление:
Обратите внимание, что выбранное направление сортировки обозначается стрелочкой сразу после названия. Эта стрелочка на удивление бессмысленна: по ней невозможно понять, как же в действительности отсортированы файлы. Чтобы это понять, нужно смотреть на сами файлы. Почему стрелка в верх означает прямую сортировку по алфавиту, а стрелка вниз обратную — загадка. Мне кажется логичным обозначать наоборот: если файлы расположены сверху вниз (т. е. по алфавиту), то и стрелку рисуем вниз. В случае с сортировкой по атрибутам или ещё какой-нибудь экзотике всё ещё туманнее.
Проблема, конечно же, в том, что такая таблица сделана на универсальном контроле, который должен работать с абсолютно любыми данными. Что можно улучшить?
Во-первых, вообще перестанем считать сортировку по алфавиту сортировкой. Просто файлы так сами по себе идут, если их не сортировать (пользователю нет дела до того, что файлы на диске лежат как попало, да ещё и фрагментированы).
Фон под именами файлов убран — и так понятно, что они идут по алфавиту. На название колонки Имя тыкнуть нельзя — в этом нет никакого смысла. Названия других колонок чуть больше выделяются своей выпуклостью, подсказывая пользователю, что на них можно ткнуть.
Во-вторых, перестанем думать, что для любой сортировки нужно два варианта — снизу вверх и сверху вниз.
Но как определить, для какой сортировки нужно переворачивание? Очень просто. Когда файлы идут по алфавиту, но вверх ногами, у нас есть ощущение, что они идут снизу вверх. Это противоестественно и глупо. Значит, такой сортировки быть не должно. Если же файлы отсортированы по дате, то для нас может иметь и вариант «новые сверху» и вариант «старые сверху» (т. е. в хронологическом порядке). В обоих случаях мы считаем, что файлы идут сверху вниз. Это просто два разных способа сортировки (а то, что они завязаны на одну колонку, — просто техническая деталь), значит, в этом случае возможность переключения нужна.
Теперь заголовок колонки человеческим языком говорит о том, как отсортированы файлы. Он выделен жирным, а сами даты изображены на контрастном фоне, благодаря чему сортировка выделяется как «особое» отображение папки — перейдя вдругую папку, человек не растеряется, обраружив, что на диске C: после папки Windows исчезла папка Work. Повторяющиеся значения выбранного поля приглушаются, чтобы было проще следить за их изменением. Сменить сортировку на «Старые сверху» можно привычным способом.
Естественно, при изменении сортировки файлов, они должны плавно перелетать туда-сюда, меняясь местами, причём так, чтобы файлы, летящие вверх, пролетали над файлами, летящими вниз.
В комментариях предлагаю обсудить, какие ещё возможны улучшения.
Гениальность стиля Житлобуда состоит в том, что он применим свободно абсолютно ко всему. Логотип можно не только независимо растягивать по ширине и высоте, его вообще можно деформировать как хочешь, и он не потеряет ни грамма узнаваемости. Возникающие там и тут споры о том, является ли такой логотип полноценным, совершенно удивительны: именно такой логотип и является полноценным!
Точка зрения, что логотип должен быть константой и может лишь подвергаться пропорциональному масштабированию, довольно странная. Нужно понимать, что компании начали обзаводиться фирменными стилями задолго до появления программы «Корел дро» и компьютеров вообще. Логотипы и знаки художники могли вообще рисовать красками.
Флаг советского союза тоже не был отрисован в векторе. Все знали, что это жёлтые Серп и молот и красном фоне в левом верхнем углу. Понятия «жёлтый» и «красный» тоже имели ясный всем смысл безо всякого пантона. Возможно, где-то и хранятся документы, описывающие конкретные пропорции всех элементов и расстояния от краёв, но об этом никто не знает. Флаг рисовали все, кто мог, и никто не задавался вопросом о том, соответствует ли он брендбуку.
Формалистское разделение на «знак», «логотип», «фирменные цвета», «фирменные шрифты», «фирменные узоры» и всё такое возникло, очевидно, тогда, когда все стали слизывать брендбуки друг у друга, тупо повторяя заголовки разделов. Но какой-то компании может быть и нафиг не понадобится фирменный узор, а другая и без знака перебьётся. Стиль должен быть целостным, а не просто состоять из набора формальных атрибутов.
Выдать заказчику компакт-диск и руководство, где сказано, что ничто нельзя сдвигать ни на миллиметр, намного проще, чем придумать стиль, который не теряет узнаваемости, как над ним не издевайся, и который все смогут воспроизвести, даже если брендбук вдруг вообще потеряется.