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