Я в интернете

РСС    Джейсон-фид

Есть автоматические трансляции в Тумблер и Же-же. Если не работает, напишите мне: ilyabirman@ilyabirman.ru.

Избранное

Позднее Ctrl + ↑

Таблицы в интерфейсах

Иногда в интерфейсах нам нужно выводить таблицу каких-нибудь объектов. Всем знакомый пример — Проводник:

Обычная сортировка по имени

Стандартный контрол для вывода таблиц подразумевает возможность сортировки объектов по любой из колонок, причём в двух направлениях. В большинстве случаев в Проводнике мы просто пользуемся сортировкой по алфавиту и не обращаем внимания на то, как выделен выбранный вариант сортировки. Но мы знаем, что если ткнуть в заголовок какой-нибудь другой колонки, то всё пересортируется по ней:

Сортировка по размеру файла

Если ткнуть в уже выбранный столбец, то сортировка изменит направление:

Сортировка по имени вверх ногами

Обратите внимание, что выбранное направление сортировки обозначается стрелочкой сразу после названия. Эта стрелочка на удивление бессмысленна: по ней невозможно понять, как же в действительности отсортированы файлы. Чтобы это понять, нужно смотреть на сами файлы. Почему стрелка в верх означает прямую сортировку по алфавиту, а стрелка вниз обратную — загадка. Мне кажется логичным обозначать наоборот: если файлы расположены сверху вниз (т. е. по алфавиту), то и стрелку рисуем вниз. В случае с сортировкой по атрибутам или ещё какой-нибудь экзотике всё ещё туманнее.

Проблема, конечно же, в том, что такая таблица сделана на универсальном контроле, который должен работать с абсолютно любыми данными. Что можно улучшить?

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

Сортировка по имени - это отсутствие сортировки

Фон под именами файлов убран — и так понятно, что они идут по алфавиту. На название колонки Имя тыкнуть нельзя — в этом нет никакого смысла. Названия других колонок чуть больше выделяются своей выпуклостью, подсказывая пользователю, что на них можно ткнуть.

Во-вторых, перестанем думать, что для любой сортировки нужно два варианта — снизу вверх и сверху вниз.

Но как определить, для какой сортировки нужно переворачивание? Очень просто. Когда файлы идут по алфавиту, но вверх ногами, у нас есть ощущение, что они идут снизу вверх. Это противоестественно и глупо. Значит, такой сортировки быть не должно. Если же файлы отсортированы по дате, то для нас может иметь и вариант «новые сверху» и вариант «старые сверху» (т. е. в хронологическом порядке). В обоих случаях мы считаем, что файлы идут сверху вниз. Это просто два разных способа сортировки (а то, что они завязаны на одну колонку, — просто техническая деталь), значит, в этом случае возможность переключения нужна.

Сортировка по дате бывает двух видов

Теперь заголовок колонки человеческим языком говорит о том, как отсортированы файлы. Он выделен жирным, а сами даты изображены на контрастном фоне, благодаря чему сортировка выделяется как «особое» отображение папки — перейдя вдругую папку, человек не растеряется, обраружив, что на диске C: после папки Windows исчезла папка Work. Повторяющиеся значения выбранного поля приглушаются, чтобы было проще следить за их изменением. Сменить сортировку на «Старые сверху» можно привычным способом.

Естественно, при изменении сортировки файлов, они должны плавно перелетать туда-сюда, меняясь местами, причём так, чтобы файлы, летящие вверх, пролетали над файлами, летящими вниз.

В комментариях предлагаю обсудить, какие ещё возможны улучшения.

Должен ли логотип быть константой

Гениальность стиля Житлобуда состоит в том, что он применим свободно абсолютно ко всему. Логотип можно не только независимо растягивать по ширине и высоте, его вообще можно деформировать как хочешь, и он не потеряет ни грамма узнаваемости. Возникающие там и тут споры о том, является ли такой логотип полноценным, совершенно удивительны: именно такой логотип и является полноценным!

Точка зрения, что логотип должен быть константой и может лишь подвергаться пропорциональному масштабированию, довольно странная. Нужно понимать, что компании начали обзаводиться фирменными стилями задолго до появления программы «Корел дро» и компьютеров вообще. Логотипы и знаки художники могли вообще рисовать красками.

Флаг советского союза тоже не был отрисован в векторе. Все знали, что это жёлтые Серп и молот и красном фоне в левом верхнем углу. Понятия «жёлтый» и «красный» тоже имели ясный всем смысл безо всякого пантона. Возможно, где-то и хранятся документы, описывающие конкретные пропорции всех элементов и расстояния от краёв, но об этом никто не знает. Флаг рисовали все, кто мог, и никто не задавался вопросом о том, соответствует ли он брендбуку.

Советские флаги

Формалистское разделение на «знак», «логотип», «фирменные цвета», «фирменные шрифты», «фирменные узоры» и всё такое возникло, очевидно, тогда, когда все стали слизывать брендбуки друг у друга, тупо повторяя заголовки разделов. Но какой-то компании может быть и нафиг не понадобится фирменный узор, а другая и без знака перебьётся. Стиль должен быть целостным, а не просто состоять из набора формальных атрибутов.

Выдать заказчику компакт-диск и руководство, где сказано, что ничто нельзя сдвигать ни на миллиметр, намного проще, чем придумать стиль, который не теряет узнаваемости, как над ним не издевайся, и который все смогут воспроизвести, даже если брендбук вдруг вообще потеряется.

Качаем права потребителя

Вчера я купил одну вещь, а она оказалась слегка бракованной. Приехал в магазин менять, а второй такой нет. Выбрал другую, а она дешевле. Ну, думаю, хорошо — денег мне дадут. А мне говорят: «Вам придётся докупить чего-то на разницу в цене». Что это, если не развод?

Говорю: «Почему это?». Отвечают: «Ну, вот такое у нас правило». Я: «Давайте подумаем, кто из руководства вашего магазина может принять решение о том, чтобы нарушить это правило». Последнее произносится доброжелательно, со спокойной уверенностью в том, что ничего тебе докупать не придётся.

Естественно, через несколько минут мне вернули разницу деньгами.

Самая распространённая ошибка — начинать в таких ситуациях скандалить и ругаться с продавцами. Это бессмысленно по двум причинам: во-первых, продавец чаще всего не может принять решения за пределами тех инструкций, которые ему изложил его руководитель, а во-вторых, обиженный вами продавец намного менее охотно пойдёт вам навстречу.

Портрет среднестатистического избирателя-имбецила

Портрет среднестатистического избиратели-имбецила специально для Минвайла нарисовал независимый эксперт:

... но мне всё ещё хочется думать, то мир становится лучше. Хотя я знаю, что нет. Мне всё ещё хочется, чтобы люди вокруг стали лучше, хотя я знаю, что этого никогда не будет. И мне по прежнему хочется думать, что я могу что-нибудь сделать, чтобы люди и мир всё-таки стали лучше. [...] но если что и становится лучше, то только моё мастерство отрицать всё, что неправильно.

Чак Паланик. Уцелевший

Итак, очередные выборы порадовали меня всё тем же кретинизмом избирателей.

Не буду вдаваться в подробности относительно того, как подставить участковую избирательную комиссию (УИК) и насолить абсолютно неповинным людям; расскажу лучше о том, как выглядит среднестатистический избиратель, и что нужно делать, чтобы не выделяться из массы таковых.

Всё по порядку: что нужно делать и как себя вести.

  1. Придти на участок за 15 минут до его официального открытия и угрожать, что уйдёшь и больше не будешь ходить на выборы.
  2. Жаловаться, что музыка играет слишком тихо/громко и члены УИК не танцуют; а вот в советское время...
  3. Жаловаться, что нет праздничной атмосферы, на входе не встречают скоморохи и не наливают водки; а вот в советское время...
  4. Обязательно принести с собой приглашение, которое всем кидают в ящик, и отдать его членам УИК.
  5. Требовать у членов УИК призов и подарков (очень важно, без этого пункта вы теряете 50% харизмы).
  6. Расписаться в журнале для голосования своей ручкой и поразмашистей, не обращая внимания, что член УИК просит расписаться его ручкой в указанной клетке.
  7. Свернуть бюллетень минимум пополам, а лучше в 4-8 раз.

Если бы все члены УИК были как я (а ведь я достаточно лоялен и миролюбив), то на следующие выборы явка составила бы 40% вместо 70%, потому что у меня нет никакого желания нянчиться с дебилами, уговаривать их, извиняться и улыбаться. Мне хочется верить, что выборы — это осознанный шаг вменяемого человека.

После моих пятых выборов в комиссии — всё ещё хочется верить...

Напомню, это был независимый эксперт, специально для Минвайла.

Необходимый признак

Меня ещё раздражает терминология «необходимый признак» и «достаточный признак». Это придумал какой-то умник-заумник, который хотел, чтобы математика казалась очень сложной штукой, постижимой только теми, у кого есть борода (т. н. консилиумом бородатых дядек). Из этой же когорты (или плеяды) был человек, придумавший понятие конгруэнтности.

У нас в школе это называлось «свойство» и «признак». Свойство — это то, что свойственно объекту, а признак — это то, по чему его можно признать. Термин «необходимый признак» идиотичен хотя бы потому, что признать, например, ряд сходящимся, используя необходимый признак — нельзя. То есть необходимый признак не является признаком вовсе. Это делает его чем-то вроде телефонной трубки, отбойного молотка и стола справок.

Ну и, кроме того, эта терминология заставляет лишний раз задумываться над самой собой, вместо того, чтобы задуматься над сутью вещей. Она заставляет нас смотреть на вещи не с той стороны.

Например, «необходимый признак» равенства треугольников — это попарное равенство углов. Но это необходимый, но не достаточный признак! То есть признать треугольники равными ещё нельзя. То есть — бессмысленная информация.

Эта же информация приобретает смысл при формулировании её нормальным образом, например:

Свойство равных треугольников. У равных треугольников попарно равны все углы.

Теперь, решая какую-то задачу, и дойдя до того, что какие-то треугольники равны, мы сможем сделать выводы о равенстве углов. Или:

Признак неравенства треугольников. Треугольники не равны, если не равны попарно все их углы.

Теперь мы знаем, что если у треугольников попарно не равны все углы, то треугольники не могут быть равны.

О теоремах, данных без доказательств

Я учился в математической школе. Учился весьма посредственно, но, например, те, кого вовсе отчисляли, переходя в обычную школу, стабильно учились там на отлично без малейшего напряжения мозга.

Однажды для меня стало большим откровением, что в обычных школах некоторые теоремы и формулы давались без доказательства. То есть, людям просто говорили, что есть теорема Фалеса, а есть — формула Герона. А потом сразу давали задачи, которые можно было решить с их использованием. Это для меня было абсолютным разрывом мозга. Это не укладывалось в голове. Я совершенно не мог понять, какой смысл в том, чтобы проходить формулу, не выводя её — это же тогда просто бессмысленный набор букв и знаков. Ну или максимум «занимательный факт»: британские учёные выяснили, что.

Нас, помню, развлекал учитель математики, читая на перемене вопросы билетов экзамена по геометрии из какой-то там другой школы. Идея того, что в ответ на вопрос нужно тупо по памяти написать формулу или формулировку теоремы, представлялась смешной всему классу.

Позже в университете для некоторых моих одногруппников казалось странной необходимость доказывать теоремы или выводить формулы. По школьной привычке учить формулы наизусть эти люди учили наизусть и вывод формул, не понимая, что там происходит. При этом многие из них благодаря прилежности хорошо писали контрольные; боялись же они экзамена. У меня история была обратная: всегда было очень трудно попасть на экзамен, потому, что для этого надо было сдать зачёт, а чтобы допуститься на него, нужно было написать все контрольные в семестре. Терпения же и внимательности на решение практических задачек всегда не хватало.

Экзамены по математике в университете я сдавал на 4, 4, 4 и 5 (в четвёртом семестре была теория функции комплексного переменного, которую я обожаю).

Каждый раз, когда я сдавал листочек с ответами Олегу Геннадьевичу, напротив большинства пунктов задания он ставил минус. Потом, когда он вызывал меня отвечать, он спрашивал: почему не решили эту задачу? Я говорил: забыл формулу такую-то и откуда она берётся. Он говорил: ну, а если бы знали формулу, что бы делали? Я отвечал: нашёл бы то-то, подставил бы в формулу, выразил бы это через это и получил бы ответ. Он подсказывал: ну, вот если вы возьмёте то-то, представите это как сумму этого и этого, а потом домножите на то-то, то вы увидите, как вывести формулу. Я садился, выводил формулу, и он ставил мне плюсик, не дожидаясь, пока я решу собственно задачу. Потом мы переходили к следующему пункту... Почему, спрашивал он, не доказали теорему? Я говорил: я знаю, что при соблюдении таких-то условий она вытекает из того-то через то-то и то-то, но совершенно не помню, как от вот этой формулы делается переход дальше. Он говорил: ну дак дальше из того-то следует, что так-то и так-то... А! перебивал его я, ну точно же, и тогда мы сможем заменить это на это, и там то-то то-то сократится и останется как раз то, что нам нужно!

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

Теорема и её доказательство, формула и её вывод, данные в неразрывной связке, воспитывают навык видеть во всём здравый смысл. Не обязательно знать это всё наизусть, чтобы сформировать правильное отношение к математике. Важно, что математика существовала бы, даже если бы не было Пифагора и Фалеса, Эйлера и Коши, Остроградского и Гаусса. Всё работает так, как работает, с неизбежностью, а не потому, что кто-то так придумал.

Когда люди учат в школе теоремы без доказательств, они потом твердят, что факториал нуля равен 1 по определению. Знающие же то, что математика существует независимо от того, что написано в определениях, понимают, что факториал нуля равен 1 объективно, и он оставался бы равен 1, даже если бы об этом никто не написал в определении.

В математике так много разделов и направлений, и они так сильно взаимосвязаны, что практически невозможно придумать способ последовательного изложения всего этого, чтобы никогда не было необходимости ссылаться вперёд. Нужно быть готовым, что иногда тебе придётся поверить во что-то на слово, а уже позже убедиться, что это действительно так. Человек же, приученный всегда верить на слово, про вторую часть мгновенно забывает.

Про пьянство

Про алкоголь где-то встречалась мне фраза, смысл которой в том, что только имбецил может получать удовольствие от затуманивания собственных мозгов. Ложность этого высказывания подтверждается тем, что такое удовольствие умудряются получать многие знакомые мне люди, которых я считаю вполне умными, однако у меня всё равно не укладывается в голове, как можно в собственный организм сознательно тащить отравляющие вещества, от которых, к тому же, дурно пахнет.

Я про всё это вспомнил, послушав вчерашнего Радзиховского (где он вообще-то отвечал на вопрос о запрете рекламы курения, но эту часть я пропускаю):

Сейчас юбилей хорошего фильма Рязанова «Ирония судьбы, или С лёгким паром» — это открытая, а не скрытая реклама алкоголизма в чистом виде. Вообще в российских фильмах пьяниц изображают самыми симпатичными людьми, самое милое и очаровательное, что происходит — это когда напиваются как свиньи. Вот как-то не показывают фильмы, когда человек бы выблёвывал из себя отвратительного цвета и запаха зелёную жидкость и его по щекам била мать ребёнка — такого не показывают. Зато очаровательные пьяные разговоры, очаровательное пьяное общение — будь то общение академиков, бомжей, или академиков с бомжами, или бомжа с академиками — это продолжается под разговоры о вымирании России, о геноциде нации и прочем бреде. Вот вместо этого бреда надо было бы бороться не только, конечно же — что абсолютно необходимо — с рекламой табака и не только давать жёсткие запреты на курение, но беспощадно бороться с косвенной, и потому особенно сильной рекламой пьянства и алкоголизма и выбивать из башки у людей представление, что только пьющий человек в России является человеком.

Я очень рад, что с начала года многочисленные сограждане отбывают административный арест за управление автотранспортом в нетрезвом виде. Я бы ввёл закон, согласно которому управление автотранспортом в нетрезвом виде, вдобавок к административному аресту и штрафу, подразумевает лишение водительских прав навсегда без какой-либо возможности восстановления. Я бы также полностью запретил все виды рекламы спиртных напитков, включая их антирекламу.

Когда-то на «Серебряном дожде» шли ролики типа «не садитесь за руль, если выпили» (может до сих пор идут — не знаю). Каждый раз, слушая их, я думал: неужели люди — такие непрошибаемые, беспросветные, запредельные дебилы, что с ними нужно как с безмозглым быдлом говорить вот таким вот тоном: «ну пожалуйста», «подумайте о других», «не делайте этого»? Амёбам подсказывают: «лучше вызовите такси» или «попросите сесть за руль друга» — естественно, целевая аудитория роликов догадаться до столь гениального решения самостоятельно не сможет. Звучит как если бы население уговаривали «пожалуйста, не засовывайте голову в унитаз и не нажимайте на слив после этого». Зачем убеждать полностью лишённое мозга существо не совершать кретинских поступков?

Форматирование номеров телефона

Полагаю, когда Айфоны начнут официально завозить в Россию, номера на них будут форматироваться правильно out of the box. А сейчас, чтобы получить красивые номера, достаточно добавить в файл UIPhoneFormats.plist на телефоне вот такие строчки:

<key>ru</key>
<array>
<string>8 (###) ###-##-##</string>
<string>+7 (###) ###-##-##</string>
</array>
<key>ua</key>
<array>
<string>+38 (###) ###-##-##</string>
</array>

Обратите внимание, какой простой формат шаблонов. Хранение различных конфигов в XML-файлах (в случае с айфоном — бинарных, но декодер доступен в онлайне) очень радует в эпловских продуктах. Достаточно быть хотя бы немножко «в теме», чтобы настроить какие-то вещи под себя.

В итоге получается вот так:

Форматирование номеров на Айфоне

Как считают станции Московского метро на примере открытия Сретенского бульвара

Обновил свою схему метро в связи с открытием Сретенского бульвара.

А теперь о грустном.

Строящаяся станция московского метро «Сретенский бульвар» станет единственной в столичной подземке, откуда нельзя будет выйти в город.

Пишут везде. Я не перестаю восхищаться идиотизмом московской системы, когда люди не понимают, что такое станция и делают вид, что платформа — это станция. Когда нормальный человек слышит, что из станции нет выхода в город, он задаётся вопросом о том, нахрен она вообще нужна. Тут же приходит на ум, что видимо смысл этой станции лишь в том, чтобы перейти на другие линии и ехать дальше.

Но в Москве вместо понятного и естественного концепта переходов на линию (ещё раз, см. «и ехать дальше» в конце предыдущего предложения) используется извращение под названием «переход на станцию», не встречающееся в других видах транспорта на этой планете. Поэтому со станции Сретенский бульвар можно перейти на станции Тургеневскую и Чистые пруды, из каждой из которых есть выход в город.

Только в Москве могли додуматься сказать, что из стации Сретенский бульвар нет выхода в город. Во всём остальном мире люди бы повесили указатели «выход в город» на этой станции и не грузили бы людей бессмысленным «забавным фактом». Ни одного пассажира ни в одной подземке мире не смутит, если указатель «выход в город» проведёт его через платформу другой линии. Ему вообще плевать, что встретится на пути.

Иными словами, утверждение о том, что из станции Сретенский бульвар нет выхода в город, просто-напросто ложно. Но ведь «станция без выхода в город» — это так прикольно! Про это можно написать целый абзац и заставить человека думать о том, как это так.

При этом Сретенский бульвар называют 174-й станцией московского метро.

Если бы станции считали честно, то станций бы в московском метро было 140, а так — 174. Это очень удобно с точки зрения писькомерства. Если бы в Лондоне станции считали по московскому методу, то там бы их было не 275, а аж 385. Но там здравый смысл почему-то побеждает.

И эти люди уже не стесняясь называют Люблинскую линию Люблинско-Дмитровской. Видимо, существует распоряжение сверху сделать всё возможное, чтобы люди не смогли запомнить никакие названия линий и продолжали называть их зелёненькими и зеленоватенькими.

Заметка изначально опубликована под названием «Сретенский бульвар», но переименована 9 июля 2021

Про нехождение на выборы

Любые философские рассуждения о том, почему не нужно ходить на выборы, — демагогия и бред сивой кобылы в лунную ночь.

Человек может не пойти на выборы, потому, что он весь день в воскресенье будет на даче. Человек может не пойти на выборы, потому, что он забыл вовремя получить открепительное. Человек даже может не пойти на выборы, потому, что ему влом было выйти из дома в такую холодину — это я ещё могу хоть как-то понять.

Но не ходить на выборы из идейных соображений — идиотизм запредельный. А теперь этим ещё и гордятся, и это стало модно называть «гражданской позицией». В терминах насилуемой девушки это называется «раз уж ты ничего не можешь сделать, попробуй расслабиться и получить удовольствие». Этот подход, в принципе, имеет право на существование, но всё-таки приличная девушка никогда не будет рассказывать о таком своём решении с гордостью. Конечно, если к слову «позиция» всё это и может иметь какое-то отношение, прилагательное «гражданская» тут явно неуместно.

Ранее Ctrl + ↓