Позднее Ctrl + ↑

Лондон — 2012

Логотип Олимпийских игр в 2012 году в Лондоне является самым уродским логотипом олимпийских игр который я когда-либо видел.

As one of my friends put it, it looks like a bunch of old people tried to imagine something that would appeal to young people. Unfortunately, they forgot that today’s young people don’t live in the 1980’s.

Пишет Реймонд Чен.

Кажется, Лебедев — единственный, кто нашёл в этом логотипе что-то хорошее.

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

Тёмное прошлое «черновиков» в e2

Как я уже сказал, главным нововведением в e2 Selecta (release 1.3) будет подсистема черновиков.

Скрытые заметки

Строго говоря, в e2 тысячу лет была возможность писать черновики. Эта «возможность» представляла собой поле IsVisible в таблице заметок и галочку «Отображать заметку» в интерфейсе. Я её сделал «на всякий случай» и быстро убедился, что это совсем не лишняя возможность. Но у неё было несколько проблем, которые последовательно решались через жопу, о чём я сейчас вам и расскажу. Это очень интересная история, вот смотрите.

Когда галочка «Отображать заметку» была только в форме редактирования, это было неудобно, потому, что за ней надо было идти в эту форму, поэтому галочке в пару была быстро добавлена ссылка под заметкой: «Скрыть заметку» или «Показать заметку».

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

Вдобавок к тому, что это было неудобно, это ещё и порождало глюк. Допустим, заметка была создана 1 июня (скрытой). Потом вторая заметка в этот же день была сразу опубликована видимой и получила УРЛ вида ##адрес-блога/2007/06/01/2/##. На неё кто-нибудь поставил ссылку. Теперь, допустим, 6 июня мы, наконец, дописали ту, первую заметку, перетащили её на 6 июня и сделали видимой. Заметка от первого июня стала теперь видна по адресу ##адрес-блога/2007/06/01/1/## и ссылка на неё сломалась. И все подписчики RSS получили её по второму разу, потому, что УРЛ изменился. Классно?

Всплывание скрытых заметок

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

Но это не решило проблемы «уезжания» заметки по мере написания других. Поэтому я решил, что эта галочка будет по умолчанию включена, чтобы заметка при редактировании всегда «всплывала».

Наверное, вы уже видите, что это удесятерило вероятность проявления глюка с ломающимися УРЛами и RSS; зато стало хоть чуть-чуть удобнее. Да, но это добавило ещё новый глюк. Некоторые заметки являются скрытыми не потому, что их ещё не сделали видимыми, а потому, что их скрыли. Я скрываю некоторые свои старые заметки, потерявшие актуальность для публики, но важные для меня. И вот, если такую заметку начать редактировать (например, чтобы опечатку исправить), то она вдруг всплывала в самом верху блога. Я так накололся один раз, но этого хватило. Естественно, я просто забыл убрать чёртову галочку.

Это ещё не всё. Всплывали всё новые проблемы. При создании заметки делались некоторые «волшебные» действия, такие, как отправка заметки в ЖЖ, рассылка трекбеков. Но нужно ли отправлять в ЖЖ заметку, созданную скрытой? Пожалуй, нет. Поэтому в коде создания заметке всё то, что отвечало за эти действия, было завёрнуто в if, который не давал всему этому произойти, если заметка была скрытой.

«Черновики»

Тут был сделан важный вывод: нужно как-то отличать «черновики» от «скрытых заметок».

В очередном обновлении при создании скрытой заметки её идентификатор в базе стал сохраняться в реестр (##/system_data/drafts##, кажется). И она считалась «черновиком». Когда заметка становилась видимой, её идентификатор удалялся из реестра (если он там был, разумеется). Теперь для любой заметки критерием «черновиковости» было наличие идентификатора в реестре, и галочка с длинным названием отображалась только у «черновиков».

При переходе от скрытости к видимости для «черновиков» выполнялся тот набор действий, который выполнялся для заметок, сразу же публикующихся видимыми.

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

От «черновиков» к черновикам

Примерно в таком состоянии система прожила довольно длительное время. В последнем доступном релизе, Oranda Third Edition, всё работает именно так. То есть, если не знать всех подробностей, которые вы теперь знаете, более-менее неплохо. Но если подробности знать, то становится понятно, что всё это ни в какие ворота не лезет. Проблема со «съезжающими» УРЛами хоть и не сильно разрушительная, но всё же неприятная, так и не была решена.

В одном из внутренних билдов, появившихся уже после Oranda Third Edition, появилась незаметная фича, которая при обращении к заметке с несуществующим номером за данный день, открывала просто последнюю заметку этого дня. То есть в примере выше по адресу ##адрес-блога/2007/06/01/2/## заметка, ставшая номером 1, оставалась видимой. Эта фича делала всю конструкцию почти замечательной внешне.

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

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

ALTER TABLE Notes ADD IsPublished TINYINT (1) DEFAULT ’1’ NOT NULL AFTER Text
ALTER TABLE Notes CHANGE IsPublished IsPublished TINYINT (1) DEFAULT ’0’ NOT NULL

Начиная с v1511 черновик — это черновик, а не «черновик». В одной из следующих серий я расскажу, как прекрасно теперь всё работает, и даже покажу скриншоты. Последний внутренний билд называется v1648.

Для меня это была больная тема, и я очень рад, что наконец сделал всё по-людски.

Снежок

4 июня. Неделю назад было под 30. Сейчас падает снежок. Клещи в растерянности.

Перекрёстки

Американцы для обозначения перекрёстков не используют слово «перекрёсток». На вопрос о местонахождении чего-либо они просто говорят, например, «Broadway and West 42 street». «And» тут как раз и обозначает, что речь о перекрёстке — Бродвея и Сорок второй улицы.

Я давно взял этот приём на вооружение, и говорю именно так по-русски. Где находится ресторан «Уральские пельмени»? Ленина и Энгельса. Я ни разу не столкнулся с непониманием или хотя бы лёгким смущением.

Графически для обозначения перекрёстков, возможно, подойдёт знак „×“:

Уральские пельмени пр-т Ленина × ул. Энгельса
Сицилия ул. Пушкина × ул. Тимирязева
Главпивтрест ул. Молодогвардейцев × ул. Куйбышева

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

Идентификация Борна

Посмотрел The Borne Identity. Франка Потенте великолепна, в «Беги, Лола, беги» с рыжими волосами она была не так хороша. Ну и фильм вообще хороший (хотя, может, это из-за неё). Собственно, дальше я буду умничать.

Перевести название фильма как «Идентификация Борна» — это, ну вы знаете мой любимый пример, всё равно, что перевести The Borne Magazine как «Магазин Борна». Или The Borne Notebook как «Ноутбук Борна».

При чём тут идентификация? Похожие буквы, ну и что?

В самом конце, когда Мари спросила у Борна «ID», это перевели как «документы». Почему бы не «идентификация», а?

Немного справочных материалов по теме:

  • magazine значит «журнал», магазин по-английски — shop, store, mall (если мы говорим о магазине, где вещи продают);
  • notebook значит «записная книжка», ноутбук по-английски — laptop или на худой конец notebook computer;
  • identity значит «документ, удостоверяющий личность», или просто «личность», идентификация по-английски — identification;
  • «идентификация» значит «опознание», что не имеет никакого отношения к теме;
  • если нужно перевести identity обязательно однокоренным словом, то получится «идентичность», но не «идентификация».

«Личность Борна» было бы куда лучше.

Джейсон Борн и Джеймс Бонд — весьма созвучны, кстати. Интересно, случайно ли это.

О нумерации ночных часов

У этой заметки есть новая версия

На самом деле такой формат записи времени очень удобен, и нечего над ним смеяться. Я использовал его в своём расписании программ «Эха Москвы» (само расписание заметно устарело).

Два часа ночи со среды на четверг — это формально четверг, но для нормального человека это среда, потому, что ещё три часа назад была среда и с тех пор он не ложился спать — с чего бы сейчас быть четвергу? Причём, скажи ты «в среду в два часа ночи» или «в четверг в два часа ночи» — всё равно переспросят, что имеется в виду. Поэтому приходится так и говорить: «в два часа ночи со среды на четверг». А это длинно. То есть, в разговоре-то нормально, а в расписании так писать — это бред.

Вариант «в среду в 26:00» однозначно определяет время. Чтобы привыкнуть к такой форме записи нужно пять минут.

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

Для обозначения полуночи часто пишут 24:00, но если вдуматься, это настолько же формально некорректно, насколько 26:00. После 23:59 идёт 00:00.

Это совершенно никого не смущает: 24:00 понятнее, чем 00:00; 24:00 — это очевидно полночь с рассматриваемого дня на следующий, а не с предыдущего на рассматриваемый, а 00:00 заставляет задуматься и вне контекста непонятно. Но интересно, что после 24:00 следующая программа может идти в 0:30. От этого взрывается мозг — это почти как в американской системе, когда 12 PM (буквально «двенадцать после полудня») означает полдень (хотя в действительности через двенадцать часов после полудня наступает полночь), а после этого идёт 1 PM («один после полудня»), и это час дня.

Почему же 24:00 мы считаем нормальным, а 26:00 — уже нет?

Давно уже пора понять, что «день» и «сутки» — разные понятия (см. также понятие «завтра»). То, что японцы додумались не занулять счётчик ни после 23, ни после 24 часов, говорит о них как о больших молодцах. Нормального человека не должно волновать, что начались другие сутки; день продолжается пока ты не ляжешь спать.

e2 Selecta

Сегодня начинается альфа-тестирование следующей версии e2 (релиз 1.3), которая называется Selecta. Если хотите поучаствовать — пишите в почту.

Скоро опубликую список изменений с релиза 1.22 Oranda TE.

Авторам блогов с трёхстрочными постами, к которым френды пишут однострочные комментарии, ничего интересного от нового релиза ждать не стоит. Ключевое нововведение в Селекте — черновики заметок.

Но про Веб 2.0 это была чистая правда.

Три страшных беды Макоса

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

Меню по правой кнопке

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

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

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

Да, можно нажать Show all, или что там, чтобы открыть результаты поиска в новом окне. В этом окне у каждого файла будет меню по правой кнопке. Но в этом меню не будет никаких нормальных действий с файлом! Это совершенно поразительно. Там нужно нажать Reveal in Finder, чтобы этот файл открылся Файндером, и вот уже там можно будет что-то с ним сделать.

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

Всё-таки ctrl+клик в 100 раз сложнее, чем просто клик. Видимо, исторически пользователи Мака залезали в контекстное меню значительно реже, чем пользователи Винды, и поэтому разработчики Макоса были весьма слабо мотивированы сделать это меню приличным и доступным везде.

Диалоги открытия и сохранения файлов

Диалоги открытия и сохранения файлов здесь позволяют только открывать и сохранять файлы, и больше ничего.

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

Последний раз такую наглость по отношению к пользователю я видел в приложениях MS-DOS.

Формула акселерации мыши

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

Если бы это было так, пользоваться мышью было бы почти невозможно. Это работало в текстовых режимах 80×25 в ДОСе, но при сегодняшних разрешениях это было бы полным провалом. Если хотите попробовать, можете отключить в Винде акселерацию и посмотреть, что будет: Панель управления, Мышь, Параметры указателя, Включить повышенную точность установки указателя (нужно снять галочку).

В Макосе акселерация, конечно, есть, но она ужасна. Движения мыши дёрганы и неадекватны. Допустим, курсор находится над каким-то пунктом меню, а тебе нужен следующий. Ты начинаешь плавно вести мышку вниз. Она еле-еле шагает по одному пикселю. Ты уже проехал по столу 2 сантиметра, и так и не доехал до нужного пункта меню. Тогда ты слегка ускоряешь движение... и ты уже перепрыгнул через 3 пункта. Чёрт возьми.

Такое ощущение, что вместо какой-нибудь параболической или экспоненциальной формулы они тут пользуются тупой логикой вроде: если скорость мыши больше N, то умножать её на 5. За полчаса работы рука устаёт примерно как после длинной лекции, в течение которой непрерывно нужно что-то записывать.

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

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

Ранее Ctrl + ↓