Позднее Ctrl + ↑

Админбар в e2 Selecta

В Селекте появился администраторский тулбар (он же админбар).

Когда вы не залогинены, то он позволяет вам залогиниться, традиционно вызываясь по Ctrl+Shift+L (login).

Администраторский тулбар в Селекте в роли логинилки

Обратите внимание на новую галочку «Чужой компьютер», которой раньше не было.

Когда вы залогинены, он предоставляет вам навигацию по вашему блогу.

Администраторский тулбар в Селекте

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

Заодно посмотрите, как красиво в стандартном дизайне теперь выводятся разные сообщения. Только Call stack в релизе вы не увидите (даже если вы включите settings/debug/show_call_stack в реестре, там всё будет в функциях с бессмысленным названием в строке 1 файла core.php).

Анонимусам

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

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

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

HTML 5

Анне Ван Кестерен опубликовал описание ключевых отличий HTML 5 от HTML 4. Среди приятных мелочей:

[The new element] article represents an independent piece of content of a document, such as a blog entry or newspaper article.

The a and area elements have a new attribute called ping that specifies a space separated list of URIs which have to be pinged when the hyperlink is followed.

A new autofocus attribute can be specified on the input (except when the type attribute is hidden), select, textarea and button elements. It provides a declarative way to focus a form control during page load.

The new required attribute applies to input […] and textarea. It indicates that the user has to fill in a value in order to submit the form.

You can now disable an entire fieldset by using the disabled attribute on it.

The input element has a bunch of other new attributes to specify contraints: autocomplete, min, max, pattern and step.

The style element has a new scoped attribute which can be used to enable scoped style sheets. Style rules within such a style element only apply to the local tree.

The draggable attribute [on any element] can be used together with the new drag & drop API.

The menu element is redefined to be useful for actual menus.

HTML5 has none of the presentational attributes that were in HTML4 (including cellpadding and cellspacing).

getElementsByClassName() to select elements by their class name.

innerHTML as an easy way to parse and serialize an HTML or XML document. This attribute was previously only available on HTMLElement in web browsers and not part of any standard.

activeElement and hasFocus to determine which element is currently focused and whether the Document has focus respectively.

classList is a convenient accessor for className and the object it returns exposes methods, such as has(), add(), remove() and toggle().

Что ж, ждём имплементации. Думаю, в Опере 9.5 многое из этого будет реализовано. Какие-то из фич, связанных с формами, кажется, уже есть.

Я только не понял, за что выкинули элемент s. Написал Ван Кестерену письмо с просьбой по возможности оставить его.

Яндекс.Ахтунг

Решил посмотреть Яндекс.Погоду в Москве и обнаружил забавную ссылку:

Яндекс.Ахтунг

Новый дизайн в e2 Selecta

В e2 Selecta будет новый «базовый» дизайн, который будет выглядеть примерно так (в качестве контента — недавний слепок Минвайла):

Скриншот e2 Selecta

О рендеринге шрифтов

Когда в Виндоусе только появился СlearType, некоторые не использовали его, говоря, что шрифт выглядит размытым. А некоторые не используют его и сейчас.

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

Текст без ClearType’а — это как моноширинный текст в тестовом режиме 80×25. Вызывает ностальгию и удивление: боже, неужели когда-то приходилось работать с таким ужасом!

В Mac OS X использует другая технология сглаживания шрифтов. На Маке шрифты выглядят более «фотошоповыми»: у букв есть толщина и форма. Что бы вы все не говорили о том, что шрифты на Маке размытые, шрифты на Маке для меня выглядят куда привлекательнее, чем под Виндой.

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

WWDC 2007

WWDC 2007: Новые док, рабочий стол и Файндер в Леопарде, Сафари для Виндоуса, AJAX-приложения на «Айфоне». Как будто бы скучновато. А вам как всё это?

Новые знаки на Курчатова и Блюхера

На перекрёстке улицы Блюхера со строящейся улицей Курчатова (которую я предлагаю называть бульваром) повесили вот такие знаки:

Знак на перекрёстке Курчатова и Блюхера

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

Зато «ж.-д. вокзал» написали правильно.

Лондон — 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.

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

Ранее Ctrl + ↓