<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Блог Михаила Озорнина: заметки с тегом гайдлайны</title>
<link>https://mikeozornin.ru/blog/tags/guidelines/</link>
<description>Главная · Блог · Работы ·</description>
<author>Михаил Озорнин</author>
<language>ru</language>
<generator>E2 (v3798; Aegea)</generator>

<itunes:owner>
<itunes:name>Михаил Озорнин</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Главная · Блог · Работы ·</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Как выглядит хороший макет</title>
<guid isPermaLink="false">164</guid>
<link>https://mikeozornin.ru/blog/all/what-is-a-good-handoff/</link>
<pubDate>Tue, 11 May 2021 10:19:02 +0300</pubDate>
<author>Михаил Озорнин</author>
<comments>https://mikeozornin.ru/blog/all/what-is-a-good-handoff/</comments>
<description>
&lt;p class="lead"&gt;В продолжении тредов Романа Шамина про дружбу дизайнеров и фронтендеров решил вытащить в блог одну из статей наших гайдов — про то, что такое «хорошо переданный макет». Все вытащенные из гайдов статьи доступны по тегу &lt;a href="http://mikeozornin.ru/blog/tags/guidelines/"&gt;гайдлайны.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Треды Романа Шамина:&lt;br /&gt;
&lt;a href="https://teletype.in/@romanshamin/what-design-want-from-frontend"&gt;teletype.in/@romanshamin/what-design-want-from-frontend&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://teletype.in/@romanshamin/what-frontend-want-from-design"&gt;teletype.in/@romanshamin/what-frontend-want-from-design&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Дальше привожу статью из наших командных договоренностей.&lt;/p&gt;
&lt;h2&gt;О чем эта статья&lt;/h2&gt;
&lt;p&gt;Если макет сделан не очень удобно для разработчиков, это плохо: разработчику будет сложно понять как сделать правильно, он потратит больше времени и где-то ошибется. Дизайнеру придется писать больше замечаний, люди будут менее довольны друг другом.&lt;/p&gt;
&lt;p&gt;Эта статья описывает как хорошо передать макет в разработку.&lt;/p&gt;
&lt;h2&gt;Хранение и состав макетов&lt;/h2&gt;
&lt;h3&gt;Список самих экранов&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Уровень «Минимально достаточный»&lt;/b&gt;&lt;br /&gt;
Всем членам команды продукта понятно где и как искать макеты:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;где найти макеты по нужной фиче,&lt;/li&gt;
&lt;li&gt;где найти старый макет,&lt;/li&gt;
&lt;li&gt;как понять актуальная версия или нет.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Договоренности команды о процессе выкладывания макетов записаны.&lt;/p&gt;
&lt;p&gt;При обновлении макетов уведомляется проектная команда (аналитик, фронтенд, тех. писатель, QA).&lt;/p&gt;
&lt;h3&gt;Состав экранов&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Уровень «Минимально достаточный»&lt;/b&gt;&lt;br /&gt;
Для фичи понятен набор экранов, на которые вносятся изменения: какие экраны новые, какие экраны дорабатываются.&lt;/p&gt;
&lt;p&gt;Если экранов несколько, то понятны переходы между экранами.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Уровень «Хорошо»&lt;/b&gt;&lt;br /&gt;
Доступна актуальная схема экранов продукта (карта сайта).&lt;/p&gt;
&lt;p&gt;Если в фиче несколько экранов, то для них сделан кликабельный прототип с переходами между экранами.&lt;/p&gt;
&lt;h2&gt;Экраны&lt;/h2&gt;
&lt;h3&gt;Структура экранов&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Уровень «Минимально достаточный»&lt;/b&gt;&lt;br /&gt;
Понятна структура экрана: из каких блоков состоит экран, какие между ними соотношения по размерам и отступам.&lt;/p&gt;
&lt;p&gt;Как ведут себя блоки экрана при прокрутке и ресайзе.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Уровень «Хорошо»&lt;/b&gt;&lt;br /&gt;
У продукта есть понятная сетка, описаны типовые лейауты страниц: список, дашборд, форма редактирования, страница просмотра и т. д.&lt;/p&gt;
&lt;h3&gt;Элементы на странице&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Уровень «Минимально достаточный»&lt;/b&gt;&lt;br /&gt;
По каждому визуальному элементу на макете понятно, что это такое: текст, компонент, иконка, паттерн.&lt;/p&gt;
&lt;p&gt;По каждому компоненту понятно, что это за компонент, какой его режим используется, понятно, если в коде нет этого компонента или функции существующего компонента.&lt;/p&gt;
&lt;p&gt;Понятны размеры элемента, его взаимоотношения с соседними элементами.&lt;/p&gt;
&lt;p&gt;Понятно как элемент тянется, что будет, если в элементе будет меньше или больше контента.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Уровень «Хорошо»&lt;/b&gt;&lt;br /&gt;
Все элементы описаны, разработчик знает где искать документацию на каждый используемый тип элемента: текст, компонент, иконку, паттерн.&lt;/p&gt;
&lt;p&gt;Размеры элементов и отступы между элементами логичны, ожидаемы и понятны.&lt;/p&gt;
&lt;p&gt;Примеры:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/what-is-a-good-handoff-1@2x.png" width="600" height="88" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;&lt;b&gt;Плохо:&lt;/b&gt; Случайные размеры блоков, фронтендерам сложно понять отступы&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/what-is-a-good-handoff-2@2x.png" width="595" height="330" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;&lt;b&gt;Плохо:&lt;/b&gt; Случайные размеры блоков, фронтендерам сложно понять отступ&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/what-is-a-good-handoff-3@2x.png" width="600" height="88" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;&lt;b&gt;Хорошо:&lt;/b&gt; Размеры блоков понятны&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/what-is-a-good-handoff-4@2x.png" width="600" height="96" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;&lt;b&gt;Хорошо:&lt;/b&gt; Размеры блоков понятны, блоки расположены предсказуемо по сетке&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Кегли&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Уровень «Минимально достаточный»&lt;/b&gt;&lt;br /&gt;
Для каждого текста на странице понятен стиль или mixin, который нужно взять, эти стили и mixin’ы однозначно определяются из самого макета.&lt;/p&gt;
&lt;p&gt;Эти mixin’ы не противоречат компонентам, паттернам или аналогичным элементам других экранов продуктов.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Уровень «Хорошо»&lt;/b&gt;&lt;br /&gt;
Есть актуальная таблица миксинов, описаны общие принципы их использования.&lt;/p&gt;
&lt;p&gt;Примеры:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/what-is-a-good-handoff-5@2x.png" width="453" height="168" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;&lt;b&gt;Плохо:&lt;/b&gt; Кегль не замапплен, неясно какой типографический миксин взять&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/what-is-a-good-handoff-6@2x.png" width="453" height="206" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;&lt;b&gt;Хорошо:&lt;/b&gt; Кегль и цвет замапплен, понятно что указать&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Цвета&lt;/h3&gt;
&lt;p&gt;Речь идет про цвет любого интерфейсного элемента: текста, иконки, рамки, фона, блока, линии.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Уровень «Минимально достаточный»&lt;/b&gt;&lt;br /&gt;
Не используются цвета не из палитры проекта.&lt;/p&gt;
&lt;p&gt;Переменные цветов подписаны, разработчику легко понять, какую переменную использовать (копировать hex-код не норм).&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Уровень «Хорошо»&lt;/b&gt;&lt;br /&gt;
Составлена таблица цветовых токенов: default text, disabled text, error icon для всех используемых в проекте тем.&lt;/p&gt;
&lt;p&gt;В макетах прилинкованы цвета из этой таблицы (не error-500, а validation-text-color).&lt;/p&gt;
&lt;p&gt;Примеры:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/what-is-a-good-handoff-7@2x.png" width="453" height="168" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;&lt;b&gt;Плохо:&lt;/b&gt; Цвета не замаплены, неясно какой цвет выбирать&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/what-is-a-good-handoff-8@2x.png" width="453" height="206" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;&lt;b&gt;Хорошо:&lt;/b&gt; Цвета замаплены, понятно что указать&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Отступы&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Уровень «Минимально достаточный»&lt;/b&gt;&lt;br /&gt;
Понятны сами отступы между всеми блоками на странице и их внутренняя логика.&lt;/p&gt;
&lt;p&gt;Отступы на макете не противоречат компонентам (например, в компоненте «кнопка» отступы 6 16, а на макете 6 12).&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Уровень «Хорошо»&lt;/b&gt;&lt;br /&gt;
Описана интерфейсная микросетка и описание модулей.&lt;/p&gt;
&lt;p&gt;Логика отступов описана, есть типовые отступы и их завязка на сетку.&lt;/p&gt;
&lt;h3&gt;Пиктограммы&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Уровень «Минимально достаточный»&lt;/b&gt;&lt;br /&gt;
Разработчик знает, как вообще подключаются пиктограммы в проект.&lt;/p&gt;
&lt;p&gt;Понятно, что это за конкретная пиктограмма, как ее подключить и вставить.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Уровень «Хорошо»&lt;/b&gt;&lt;br /&gt;
Есть общий список пиктограмм, их коды, параметры вставки в код продукта и документацию.&lt;/p&gt;
&lt;p&gt;&lt;aside class="aside-margin-right"&gt;Чтобы не мучиться со сборкой пакетов иконок, &lt;a href="http://mikeozornin.ru/blog/tags/icon-font/"&gt;почитайте как собирать их автоматически&lt;/a&gt;&lt;/aside&gt;&lt;/p&gt;
&lt;p&gt;Иконки версионируются, к продукту или в документацию можно подключить нужную версию пакета иконок.&lt;/p&gt;
&lt;p&gt;Примеры:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/what-is-a-good-handoff-9@2x.png" width="453" height="310" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;&lt;b&gt;Плохо:&lt;/b&gt; Иконка не замаплена, нужно искать её в наборе самостоятельно&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/what-is-a-good-handoff-10@2x.png" width="453" height="267" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;&lt;b&gt;Хорошо:&lt;/b&gt; Указано какая иконка и из какого набора. Примечание: mc — префикс одного из наших наборов иконок.&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Текст&lt;/h2&gt;
&lt;p&gt;См. также &lt;i&gt;Правильный процесс вычитки&lt;/i&gt; (ссылки нет, статья не вытащена наружу).&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Уровень «Минимально достаточный»&lt;/b&gt;&lt;br /&gt;
Рыба в макете правильная с точки зрения состояний, смысла и точная с точки зрения чисел и значений.&lt;/p&gt;
&lt;p&gt;Нет никаких Значение-1, Значение-2, Значение-3 и Лорем ипсумов.&lt;/p&gt;
&lt;p&gt;Из текста понятно, о чем он: это важно, чтобы техписатели могли его понять и улучшить.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Уровень «Хорошо»&lt;/b&gt;&lt;br /&gt;
Текст в состоянии production-не стыдно, техписатели только полируют его.&lt;/p&gt;
&lt;h2&gt;Состояния&lt;/h2&gt;
&lt;h3&gt;Другие состояния&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Уровень «Минимально достаточный»&lt;/b&gt;&lt;br /&gt;
Понятно, как сделать все остальные состояния: переключенные вкладки, переключатели, чекбоксы и радиокнопки (если они влияют на компоновку интерфейса).&lt;/p&gt;
&lt;p&gt;Отрисованы или описаны (если этого достаточно) все варианты дропдаунов, селектов и других выпадаек.&lt;/p&gt;
&lt;p&gt;Кроме самих этих состояний описаны переходы между ними.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Уровень «Хорошо»&lt;/b&gt;&lt;br /&gt;
Если блоки меняются значительно, то лучше не пытаться описать отдельные выпадайки, а нарисовать блоки целиком, чтобы было меньше путаницы&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/what-is-a-good-handoff-11@2x.png" width="750" height="1220" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Хорошо: Нарисованы альтернативные состояний экрана&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;Загрузка&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Уровень «Минимально достаточный»&lt;/b&gt;&lt;br /&gt;
Понятно как загружаются элементы экрана, в какой последовательности, как отображается процесс загрузки.&lt;/p&gt;
&lt;p&gt;Как должен вести себя продукт, если загрузка медленная, элементов много, или загрузка не удалась.&lt;/p&gt;
&lt;h3&gt;Пустое состояние&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Уровень «Минимально достаточный»&lt;/b&gt;&lt;br /&gt;
Понятно, как выглядит пустое состояние всех блоков и элементов, когда в них нет данных.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Уровень «Хорошо»&lt;/b&gt;&lt;br /&gt;
Пустые состояния систематизированы, используются типовые решения.&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/what-is-a-good-handoff-12@2x.png" width="398.5" height="1000" alt="" /&gt;
&lt;/div&gt;
&lt;h3&gt;Валидация&lt;/h3&gt;
&lt;p&gt;См. &lt;a href="https://mosaic.ptsecurity.com/components/validation/overview"&gt;Валидация данных&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Уровень «Минимально достаточный»&lt;/b&gt;&lt;br /&gt;
Понятно, когда и как срабатывает валидация.&lt;/p&gt;
&lt;p&gt;Как и когда показывается.&lt;/p&gt;
&lt;p&gt;Все сообщения об ошибках проходят через дизайнера, для каждой из возможных ошибок дизайнер придумывает способ предотвращения ошибки или способ отображения, если её нельзя предотвратить&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Уровень «Хорошо»&lt;/b&gt;&lt;br /&gt;
Валидация соответствует общему гайдлайну.&lt;/p&gt;
&lt;p&gt;Валидация способствует не попаданию с ситуацию срабатывания валидации.&lt;/p&gt;
&lt;h3&gt;Много данных&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Уровень «Минимально достаточный»&lt;/b&gt;&lt;br /&gt;
Понятно как работает экран, когда во всех потенциальных местах (текст, списки, таблицы) будет много данных.&lt;/p&gt;
&lt;p&gt;Все вытащенные из гайдов статьи доступны по тегу &lt;a href="http://mikeozornin.ru/blog/tags/guidelines/"&gt;гайдлайны.&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;См. также&lt;/h2&gt;
&lt;p&gt;Гайд Контура: &lt;a href="https://guides.kontur.ru/principles/layouts/"&gt;guides.kontur.ru/principles/layouts/&lt;/a&gt;&lt;br /&gt;
Чек-лист &lt;a href="https://twitter.com/Prit4er1"&gt;Prit4er1&lt;/a&gt;: &lt;a href="https://www.notion.so/5c03c7554ff542da9c77a6f420935282"&gt;notion.so/5c03c7554ff542da9c77a6f420935282&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>Как писать дату и время в интерфейсах</title>
<guid isPermaLink="false">92</guid>
<link>https://mikeozornin.ru/blog/all/how-to-write-datetime-in-ui/</link>
<pubDate>Thu, 28 Jun 2018 02:24:02 +0300</pubDate>
<author>Михаил Озорнин</author>
<comments>https://mikeozornin.ru/blog/all/how-to-write-datetime-in-ui/</comments>
<description>
&lt;p class="lead"&gt;Это статья из наших внутренних дизайнерских гайдлайнов, поэтому тут может встретиться неожиданная категоричность.&lt;/p&gt;
&lt;h2&gt;Общие правила&lt;/h2&gt;
&lt;p&gt;В интерфейсе:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;год пишется только тогда, когда он отличается от текущего,&lt;/li&gt;
&lt;li&gt;месяцы лучше писать словами, а не цифрами,&lt;/li&gt;
&lt;li&gt;в случае сокращенного написания месяца &lt;i&gt;июнь&lt;/i&gt; и &lt;i&gt;июль&lt;/i&gt; лучше писать полностью.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;В бумажных отчетах:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;год допустимо указывать даже тогда, когда он совпадает с текущим.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Лучше использовать те форматы, которые указаны ниже, если желаемого вами формата здесь нет, то это лишний повод подумать о том, нужен ли он.&lt;/p&gt;
&lt;h2&gt;1 Абсолютные даты&lt;/h2&gt;
&lt;h3&gt;1.1 Полный + время&lt;/h3&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Русский&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;English&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 ноября, 12:25&lt;/td&gt;
&lt;td&gt;November 1, 12:25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 ноября 2014, 12:25&lt;/td&gt;
&lt;td&gt;November 1, 2014, 12:25&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;&lt;i&gt;⚠ Перед использованием попробуйте понять, зачем нужно время, если дата может быть в прошлом году&lt;/i&gt;&lt;/p&gt;
&lt;h3&gt;1.2 Короткий + время&lt;/h3&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Русский&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;English&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 янв, 12:25&lt;/td&gt;
&lt;td&gt;Jan 1, 12:25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 дек 2015, 12:25&lt;/td&gt;
&lt;td&gt;Dec 1, 2015, 12:25&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;1.3 Полный без времени&lt;/h3&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Русский&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;English&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1­ ноября&lt;/td&gt;
&lt;td&gt;November 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 ноября 2014&lt;/td&gt;
&lt;td&gt;November 1, 2014&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;1.4 Короткий без времени&lt;/h3&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Русский&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;English&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 янв&lt;/td&gt;
&lt;td&gt;Jan 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;2 ноя 2014&lt;/td&gt;
&lt;td&gt;Nov 2, 2014&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h2&gt;2 Относительные даты&lt;/h2&gt;
&lt;h3&gt;2.1 Время в прошлом, длинно&lt;/h3&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Что&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Русский&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;English&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt; 1 мин&lt;/td&gt;
&lt;td&gt;1 секунду назад&lt;/td&gt;
&lt;td&gt;1 second ago&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;td&gt;5 секунд назад&lt;/td&gt;
&lt;td&gt;5 seconds ago&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt; 59 мин&lt;/td&gt;
&lt;td&gt;1 минуту назад&lt;/td&gt;
&lt;td&gt;1 minute ago&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;td&gt;2 минуты назад&lt;/td&gt;
&lt;td&gt;2 minutes ago&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;td&gt;5 минут назад&lt;/td&gt;
&lt;td&gt;5 minutes ago&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Сегодня&lt;/td&gt;
&lt;td&gt;16:25&lt;/td&gt;
&lt;td&gt;16:25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Вчера&lt;/td&gt;
&lt;td&gt;Вчера, 13:25&lt;/td&gt;
&lt;td&gt;Yesterday, 13:25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Позавчера и старше&lt;/td&gt;
&lt;td&gt;20 декабря, 13:25&lt;/td&gt;
&lt;td&gt;December 20, 13:25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Позавчера и старше, если год не совпадает с текущим&lt;/td&gt;
&lt;td&gt;20 декабря 2017&lt;/td&gt;
&lt;td&gt;December 20, 2017&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;2.2 Время в прошлом, коротко&lt;/h3&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Что&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Русский&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;English&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt; 1 мин&lt;/td&gt;
&lt;td&gt;5 с назад&lt;/td&gt;
&lt;td&gt;5 s ago&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt; 59 мин&lt;/td&gt;
&lt;td&gt;5 мин назад&lt;/td&gt;
&lt;td&gt;5 min ago&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Сегодня&lt;/td&gt;
&lt;td&gt;16:25&lt;/td&gt;
&lt;td&gt;16:25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Вчера&lt;/td&gt;
&lt;td&gt;Вчера, 13:25&lt;/td&gt;
&lt;td&gt;Yesterday, 13:25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Позавчера и старше&lt;/td&gt;
&lt;td&gt;20 дек, 13:25&lt;/td&gt;
&lt;td&gt;Dec 20, 13:25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Позавчера и старше, если год не совпадает с текущим&lt;/td&gt;
&lt;td&gt;20 дек 2017&lt;/td&gt;
&lt;td&gt;Dec 20, 2017&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h2&gt;3 Диапазоны дат&lt;/h2&gt;
&lt;p&gt;В русском: если обе даты без пробелов, то среднее тире (&amp;amp;ndash;) без пробелов, если внутри даты есть пробелы, то между датами &amp;amp;thinsp;&amp;amp;mdash;&amp;amp;thinsp; (длинное тире отбитое тонкими пробелами). Если вы не используете среднее тире, то замените его на длинное.&lt;/p&gt;
&lt;p&gt;В английском: всегда использовать среднее тире. С пробелами, если обе даты содержат пробелы. В остальных случаях — без пробелов.&lt;/p&gt;
&lt;h3&gt;3.1 Полный со временем&lt;/h3&gt;
&lt;p&gt;Отличие от 3.2: этот лучше подходит для связных текстов, использования в целых предложениях, заголовках писем или разделов&lt;/p&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Русский&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;English&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;С 1 ноября, 12:25 по 5 ноября, 13:35&lt;/td&gt;
&lt;td&gt;From November 1, 12:25 to November 5, 13:35&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;С 1 ноября 2014, 12:25 по 12 мая, 13:35&lt;/td&gt;
&lt;td&gt;From November 1, 2014, 12:25 to May 12, 13:35&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;С 1 ноября 2013, 12:25 по 12 мая 2014, 13:35&lt;/td&gt;
&lt;td&gt;From November 1, 2013, 12:25 to May 12, 2014, 13:35&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Когда один и тот же день:&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 ноября, с 12:25 по 13:35&lt;/td&gt;
&lt;td&gt;November 1, from 12:25 to 13:35&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 ноября 2014, с 12:25 по 13:35&lt;/td&gt;
&lt;td&gt;November 1, 2014, from 12:25 to 13:35&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;3.2 Средний (с тире) со временем&lt;/h3&gt;
&lt;p&gt;Отличие от 3.1: этот лучше использовать в таблицах и аналогичных конструкциях.&lt;/p&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Русский&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;English&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 ноября, 12:25 — 5 ноября, 13:35 (&amp;amp;thinsp;&amp;amp;mdash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;td&gt;November 1, 12:25 — November 5, 13:35 (&amp;amp;thinsp;&amp;amp;ndash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 ноября 2014, 12:25 — 12 мая, 13:35 (&amp;amp;thinsp;&amp;amp;mdash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;td&gt;November 1, 2014, 12:25 — May 12, 13:35 (&amp;amp;thinsp;&amp;amp;ndash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 ноября 2013, 12:25 — 12 мая 2014, 13:35 (&amp;amp;thinsp;&amp;amp;mdash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;td&gt;November 1, 2013, 12:25 — May 12, 2014, 13:35 (&amp;amp;thinsp;&amp;amp;ndash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Когда одна дата:&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12:25—13:35, 1 ноября (12:25&amp;amp;ndash;13:35)&lt;/td&gt;
&lt;td&gt;12:25—13:35, November 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12:25—13:35, 1 ноября 2014 (12:25&amp;amp;ndash;13:35)&lt;/td&gt;
&lt;td&gt;12:25—13:35, November 1, 2014&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;3.3 Короткий со временем&lt;/h3&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Русский&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;English&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 янв, 12:25 — 5 ноя, 13:35 (&amp;amp;thinsp;&amp;amp;mdash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;td&gt;Jan 1, 12:25 — Nov 5, 13:35 (&amp;amp;thinsp;&amp;amp;ndash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 дек 2015, 12:25 — 3 янв, 13:35 (&amp;amp;thinsp;&amp;amp;mdash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;td&gt;Dec 1, 2015, 12:25 — Jan 3, 13:35 (&amp;amp;thinsp;&amp;amp;ndash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Когда одна дата:&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12:25—13:35, 1 ноя (12:25&amp;amp;ndash;13:35)&lt;/td&gt;
&lt;td&gt;12:25—13:35, Nov 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12:25—13:35, 1 ноя 2014 (12:25&amp;amp;ndash;13:35)&lt;/td&gt;
&lt;td&gt;12:25—13:35, Nov 1, 2014&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;3.4 Полный без времени&lt;/h3&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Русский&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;English&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;В одном месяце&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1­—5 ноября (1&amp;amp;ndash;5)&lt;/td&gt;
&lt;td&gt;November 1—5 (1&amp;amp;ndash;5)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1—5 ноября 2014 (1&amp;amp;ndash;5)&lt;/td&gt;
&lt;td&gt;November 1—5, 2014 (1&amp;amp;ndash;5)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;В разных месяцах&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 ноября — 12 декабря (&amp;amp;thinsp;&amp;amp;mdash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;td&gt;November 1 — December 12 (&amp;amp;thinsp;&amp;amp;ndash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 ноября 2014 — 12 января (&amp;amp;thinsp;&amp;amp;mdash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;td&gt;November 1, 2014 — January 12 (&amp;amp;thinsp;&amp;amp;ndash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 ноября 2013 — 12 января 2014  (&amp;amp;thinsp;&amp;amp;mdash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;td&gt;November 1, 2013 — January 12, 2014 (&amp;amp;thinsp;&amp;amp;ndash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;3.5 Короткий без времени&lt;/h3&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Русский&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;English&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 янв — 2 июня (&amp;amp;thinsp;&amp;amp;mdash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;td&gt;Jan 1 — Jun 2 (&amp;amp;thinsp;&amp;amp;ndash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 ноя 2014 — 12 дек (&amp;amp;thinsp;&amp;amp;mdash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;td&gt;Nov 2, 2014 — Dec 12 (&amp;amp;thinsp;&amp;amp;ndash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 ноя 2014 — 12 дек 2014 (&amp;amp;thinsp;&amp;amp;mdash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;td&gt;Nov 2, 2014 — Dec 12, 2014 (&amp;amp;thinsp;&amp;amp;ndash;&amp;amp;thinsp;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h2&gt;4 Длительность&lt;/h2&gt;
&lt;p&gt;Как делают другие:&lt;/p&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Кто&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Что советует&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Где&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Гугл&lt;/td&gt;
&lt;td&gt;0:30, 1:01:05&lt;/td&gt;
&lt;td&gt;&lt;a href="https://material.io/design/communication/data-formats.html#date-time"&gt;https://material.io/design/communication/data-formats.html#date-time&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Атлассиан&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;&lt;a href="https://atlassian.design/server/patterns/date-formats/"&gt;https://atlassian.design/server/patterns/date-formats/&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;САП&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;&lt;a href="https://experience.sap.com/fiori-design-web/formatting-dates/"&gt;https://experience.sap.com/fiori-design-web/formatting-dates/&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;Есть два формата: цифрами и словами. Вне зависимости от строкового представления сортировка всегда по длительности, а не по строковому представлению.&lt;/p&gt;
&lt;h3&gt;4.1 Цифрами&lt;/h3&gt;
&lt;p&gt;Используйте всегда один и тот же формат в рамках одной таблицы, блока, лучше экрана, а лучше — модуля или продукта. Нельзя где-то указывать длительность до секунд, а где-то до минут, будет путаница. Всегда недалеко от длительности лучше подписать, что это за формат. Если секунды указываются, то это очень желательно, если секунды не указываются, то строго требуется.&lt;/p&gt;
&lt;p&gt;Стоит помнить, что 1 секунда и 1,0 секунда — не одно и то же, нельзя их путать.&lt;/p&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;С секундами     &lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Только минуты&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0:12,256&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;td&gt;Ведущий &lt;b&gt;0:&lt;/b&gt; для минут обязателен&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0:12&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;td&gt;Ведущий &lt;b&gt;0:&lt;/b&gt; для минут обязателен&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2:25&lt;/td&gt;
&lt;td&gt;0:02&lt;/td&gt;
&lt;td&gt;Для варианта &lt;i&gt;Только минуты&lt;/i&gt; ведущий &lt;b&gt;0:&lt;/b&gt; для часов обязателен&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;25:25&lt;/td&gt;
&lt;td&gt;0:25&lt;/td&gt;
&lt;td&gt;В этом и ниже миллисекунды скорей всего не нужны, если речь идет не о спортивных соревнованиях&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;25:00&lt;/td&gt;
&lt;td&gt;0:25&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2:25:25&lt;/td&gt;
&lt;td&gt;2:25&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;21:25:25&lt;/td&gt;
&lt;td&gt;21:25&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1:02:25:25&lt;/td&gt;
&lt;td&gt;1:02:25&lt;/td&gt;
&lt;td&gt;&lt;i&gt;Только минуты&lt;/i&gt; в этом случае смотрится особенно неудачно&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;48:25:25&lt;/td&gt;
&lt;td&gt;48:25&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;4.2 Буквами полный&lt;/h3&gt;
&lt;p&gt;Все числа округляются до целых. Написать 25 минут и 25,5 секунд — нельзя.&lt;/p&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt; Русский&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;English&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Если хотите миллисекунды, см. 4.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12 секунд&lt;/td&gt;
&lt;td&gt;12 seconds&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 минуты и 25 секунд&lt;/td&gt;
&lt;td&gt;2 minutes 25 seconds&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;25 минут и 25 секунд&lt;/td&gt;
&lt;td&gt;25 minutes 25 seconds&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;25 минут&lt;/td&gt;
&lt;td&gt;25 minutes&lt;/td&gt;
&lt;td&gt;Обратите внимание, здесь не написаны секунды, так и надо&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 часа и 25 минут&lt;/td&gt;
&lt;td&gt;2 hours 25 minutes&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;21 час и 25 минут&lt;/td&gt;
&lt;td&gt;21 hours 25 minutes&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 день и 2 часа&lt;/td&gt;
&lt;td&gt;1 day 2 hours&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;48 часов и 25 минут&lt;/td&gt;
&lt;td&gt;48 hours 25 minutes&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10 дней&lt;/td&gt;
&lt;td&gt;10 days&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 недели и 5 дней&lt;/td&gt;
&lt;td&gt;2 weeks 5 days&lt;/td&gt;
&lt;td&gt;Если нужно понедельное деление&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6,5 месяцев&lt;/td&gt;
&lt;td&gt;6.5 months&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;4.3 Буквами короткий&lt;/h3&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt; Русский&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;English&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12,256 с&lt;/td&gt;
&lt;td&gt;12.256 s&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12 с&lt;/td&gt;
&lt;td&gt;12 s&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 мин 25 с&lt;/td&gt;
&lt;td&gt;2 min 25 s&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;25 мин 25 с&lt;/td&gt;
&lt;td&gt;25 min 25 s&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;25 мин&lt;/td&gt;
&lt;td&gt;25 min&lt;/td&gt;
&lt;td&gt;Обратите внимание, здесь не написаны секунды, так и надо&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 ч 25 мин&lt;/td&gt;
&lt;td&gt;2 h 25 min&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;21 ч 25 мин&lt;/td&gt;
&lt;td&gt;21 h 25 min&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 д 2 ч&lt;/td&gt;
&lt;td&gt;1 d 2 h&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;48 ч 25 мин&lt;/td&gt;
&lt;td&gt;48 h 25 min&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10 д&lt;/td&gt;
&lt;td&gt;10 d&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 нед 5 д&lt;/td&gt;
&lt;td&gt;2 w 5 d&lt;/td&gt;
&lt;td&gt;Если нужно понедельное деление&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6,5 мес&lt;/td&gt;
&lt;td&gt;6.5 mo&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;С десятичной дробью — лучше не надо&lt;/h3&gt;
&lt;p&gt;С десятичной дробью можно писать только месяцы и годы и только с округлением до половины. Минуты, часы, дни и недели нельзя даже с округлением до половины. В таком виде сложно понять, сколько это, если дробная часть не 0,5.&lt;/p&gt;
&lt;p&gt;Лучше не использовать &lt;s&gt;зачеркнутые&lt;/s&gt; варианты.&lt;/p&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt; Десятичная&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Сколько это на самом деле&lt;/b&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;s&gt;3,10 часа&lt;/s&gt;&lt;/td&gt;
&lt;td&gt;3:06&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;s&gt;3,20 часа&lt;/s&gt;&lt;/td&gt;
&lt;td&gt;3:12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;s&gt;3,25 часа&lt;/s&gt;&lt;/td&gt;
&lt;td&gt;3:15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;s&gt;3,30 часа&lt;/s&gt;&lt;/td&gt;
&lt;td&gt;3:18&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;s&gt;3,33 часа&lt;/s&gt;&lt;/td&gt;
&lt;td&gt;3:20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;s&gt;3,40 часа&lt;/s&gt;&lt;/td&gt;
&lt;td&gt;3:24&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;s&gt;3,50 часа&lt;/s&gt;&lt;/td&gt;
&lt;td&gt;3:30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;s&gt;3,60 часа&lt;/s&gt;&lt;/td&gt;
&lt;td&gt;3:36&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;s&gt;3,67 часа&lt;/s&gt;&lt;/td&gt;
&lt;td&gt;3:40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;s&gt;3,70 часа&lt;/s&gt;&lt;/td&gt;
&lt;td&gt;3:42&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;s&gt;3,80 часа&lt;/s&gt;&lt;/td&gt;
&lt;td&gt;3:48&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;s&gt;3,90 часа&lt;/s&gt;&lt;/td&gt;
&lt;td&gt;3:54&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3,5 года&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;s&gt;3,8 года&lt;/s&gt;&lt;/td&gt;
&lt;td&gt;3 года, 9 месяцев и около 22 дней&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;s&gt;3,2 месяца&lt;/s&gt;&lt;/td&gt;
&lt;td&gt;3 месяца и около 6 дней&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h2&gt;5 Выбор периода показа чего-нибудь&lt;/h2&gt;
&lt;h3&gt;5.1. Говорите по-человечески&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;Неделя&lt;/i&gt; лучше &lt;i&gt;7 дней&lt;/i&gt;, &lt;i&gt;месяц&lt;/i&gt; лучше &lt;i&gt;30 дней&lt;/i&gt;, это более по-человечески. С этим есть проблема: &lt;i&gt;месяц&lt;/i&gt; менее однозначно, чем &lt;i&gt;30 дней&lt;/i&gt;, вариант &lt;i&gt;30 дней&lt;/i&gt; безопасней. Если вы уверены (например, проверили), что у вас разногласия нет, или что оно допустимо, то &lt;i&gt;месяц&lt;/i&gt;, лучше &lt;i&gt;последние 30 дней&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Пример: Яндекс в достаточно строгом продукте Яндекс.Метрика использует неделю и месяц. Они точно тестировали разные формулировки и сделали так:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/metrika.yandex.ru-time-range@2x.png" width="545" height="36" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Можно Яндексу, можно и вам&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;5.2 Пишите «дней», а не «суток»&lt;/h3&gt;
&lt;p&gt;Всегда вместо &lt;i&gt;суток&lt;/i&gt; употреблять &lt;i&gt;дней&lt;/i&gt;. Так тоже более человечно, в жизни не говорят &lt;i&gt;позвоню через трое суток&lt;/i&gt;, говорят &lt;i&gt;позвоню через три дня&lt;/i&gt;. Фразу &lt;i&gt;последние 7 дней&lt;/i&gt; нельзя понять иначе как &lt;i&gt;последние 7 суток&lt;/i&gt;. Никто не поймет её как &lt;i&gt;последние 7 суток за вычетом последних 7 ночных периодов&lt;/i&gt;.&lt;/p&gt;
&lt;h3&gt;5.3 Будьте последовательны&lt;/h3&gt;
&lt;p&gt;Хорошо: Неделя, Месяц, Квартал&lt;br /&gt;
Хорошо: Последние 7 дней, 30 дней, 90 дней&lt;br /&gt;
Плохо: Неделя, 30 дней, Квартал.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Примечание&lt;/b&gt;&lt;br /&gt;
90 дней и кварталы могут быть вместе и использоваться в разных частях системы одновременно. Если кому-то нужна поквартальная отчетность, должны быть точно кварталы. 1 квартал, 2 квартал, Q1, Q2, и так далее.&lt;/p&gt;
&lt;h3&gt;5.4 Используйте адекватные величины&lt;/h3&gt;
&lt;p&gt;Используйте те величины, какими бы назвали этот период в жизни. Вместо 48 часов лучше 2 дня, вместо 3600 секунд — 1 час, вместо 1440 минут — 1 день. 24 часа, 60 минут — норм. Могут быть исключения, но обычно так.&lt;/p&gt;
&lt;h2&gt;5.5 Не делайте слишком много&lt;/h2&gt;
&lt;p&gt;Это искусственный макет, так не надо:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/too-many.png" width="415" height="333" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Вот тут ↑ перебор вариантов. Такое количество пунктов сложно сверстать, из него непросто выбрать (с учетом того, они почти все одинаковые по тексту).&lt;/p&gt;
&lt;p&gt;Что делать, если пунктов много:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Решить интерфейсно: сгруппировать, выбрать другой элемент управления, сделать последовательный выбор, переверстать.&lt;/li&gt;
&lt;li&gt;Решить продуктово: убрать часть опций, сделать автоматическую магию.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;5.6 Не дублируйте везде «последние»&lt;/h3&gt;
&lt;p&gt;И Мильчин, и другие люди советуют не дублировать в списках одинаковое начало.&lt;/p&gt;
&lt;h3&gt;5.7 Итого&lt;/h3&gt;
&lt;p&gt;Кажется, что выбирать надо из следующих вариантов (использовать все не надо):&lt;br /&gt;
секунды: 1, 5, 10, 15, 30, 60&lt;br /&gt;
минуты: 1, 5, 10, 15, 30, 60&lt;br /&gt;
часы: 1, 2, 4, 6, 8, 12, 24&lt;br /&gt;
дни: 1, 5, 7, 10, 14, 15, 30, 90, 180&lt;br /&gt;
недели: 1, 2, 4&lt;br /&gt;
месяцы: 1, 2, 3, 6, 12&lt;br /&gt;
лет: 1, 2, 5, 10&lt;/p&gt;
&lt;p&gt;Если вашего интервала тут нет, может он и не очень осмысленен? Наличие в интерфейсе интервалов &lt;i&gt;последние 5 часов, 18 минут, 13 дней,&lt;/i&gt; — вызывает вопросы. Такое может быть из-за особой специфики (например 5-часовые смены операторов), но обычно такого не должно быть.&lt;/p&gt;
&lt;div class="post-summary"&gt;&lt;div class="post-summary__text"&gt;&lt;p&gt;Очень важно написать для всех этих случаев форматтеры (функции форматирования) в используемом вами фреймворке. Только так можно гарантировать, что форматы будут правильные, тире не заменятся на дефисы.&lt;/p&gt;
&lt;p&gt;Проще один раз отладить и сделать эталонную реализацию.&lt;/div&gt;
&lt;/div&gt;

&lt;br/&gt;
Подобные посты отмечены тегом &lt;a href="http://mikeozornin.ru/blog/tags/gaydlayny/"&gt;гайдлайны&lt;/a&gt;</description>
</item>

<item>
<title>Как делать подписи для таймсерий</title>
<guid isPermaLink="false">91</guid>
<link>https://mikeozornin.ru/blog/all/how-to-label-timeseries/</link>
<pubDate>Mon, 04 Jun 2018 02:21:35 +0300</pubDate>
<author>Михаил Озорнин</author>
<comments>https://mikeozornin.ru/blog/all/how-to-label-timeseries/</comments>
<description>
&lt;p class="lead"&gt;Таймсерии — графики, где что-то зависит от времени обычно. В посте я расскажу, как делать на них подписи. Это улучшенная версия статьи из наших внутренних дизайнерских гайдлайнов, поэтому тут может встретиться неожиданная категоричность.&lt;/p&gt;
&lt;h2&gt;В чем проблема&lt;/h2&gt;
&lt;p&gt;Если не следить за подписями, то программа или библиотека расставит отметки автоматически. Скорей всего она поделит интервал на равные промежутки и может получиться плохо. Вот скриншот временной оси графика, обратите внимание, что показано только время:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/timeseries-post-0@2x.png" width="651" height="53" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Библиотека отрисовки почему-то решила не подписывать даты и подписала только время. На самом деле пеньки &lt;i&gt;3:00 21 мая, 15:00 23 мая, 3:00 26 мая, 15:00 28 мая, 3:00 31 мая, 15:00 2 июня.&lt;/i&gt; Понять это из подписей почти невозможно.&lt;/p&gt;
&lt;p&gt;Я перерисую скриншот, чтобы можно было менять и иллюстрировать:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/timeseries-post-0-2@2x.png" width="520" height="52" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Первое, что нужно сделать — всегда писать даты:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/timeseries-post-1@2x.png" width="520" height="52" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Стало понятно, но тоже плохо. Пеньки получились неудобные, читать их неудобно. Все потому, что программа поделила ось на равные промежутки и подписала их. В данном случае число отсчетов не совпало с числом дней, поэтому программа выбрала промежутками не целые дни.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/timeseries-post-2@2x.png" width="520" height="60" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Пурпурные линии — границы дней&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;В посте я расскажу что с этим всем делать.&lt;/p&gt;
&lt;h2&gt;Общие правила&lt;/h2&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Подписи отметок соотносятся с масштабом. При показе данных за год показывать время с точностью до минут не имеет смысла.&lt;/li&gt;
&lt;li&gt;Всегда выбирается максимально детальный разумный масштаб. Если без проблем указывается с точностью до дней, то не надо укрупнять отметки до 5-дневных просто так.&lt;/li&gt;
&lt;li&gt;Отметки должны быть регулярны. Разный шаг не позволит удобно прикинуть промежуточное значение. Если регулярные метки не получаются, то основную часть отметок лучше сделать регулярными, а нерегулярные остатки сложить к одному из концов интервала.&lt;/li&gt;
&lt;li&gt;Смысловые отметки лучше несмысловых. Отметка &lt;i&gt;22:12&lt;/i&gt; — странно, &lt;i&gt;22:30&lt;/i&gt; — норм. Вряд ли имеет смысл использовать что-то, не попадающее в этот список:&lt;br /&gt;
&lt;i&gt;1, 5, 10, 15, 30 секунд,&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;1, 5, 10, 15, 30 минут,&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;1, 2, 4, 6, 12, 24 часов,&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;1, 2, 5, 10, 15 дней,&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;1, 2 недели (если нужны именно календарные недели),&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;1, 2, 3, 6 месяцев,&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;1, 2 года, 5, 10 лет.&lt;/i&gt;&lt;br /&gt;
Дробными числами, не подходящими под указанные выше, допустимо подписывать только начало и конец.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Информативность&lt;/h2&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Дублировать одно и то же — плохо. Не надо писать у отметок так: &lt;i&gt;01.01.2015, 01.02.2015, 01.03.2015, 01.05.2015.&lt;/i&gt; Но и &lt;i&gt;01.01, 01.02, 01.03, 01.05&lt;/i&gt; тоже плохо (см. следующий пункт). Кстати, кто-нибудь заметил, что я пропустил апрель?&lt;/li&gt;
&lt;li&gt;Для дат лучше всего использовать формат &lt;i&gt;1 мая, 2 июня, 13 ноя&lt;/i&gt;. Месяцы сокращаются до трех букв без точки (кроме мая, июня и июля), ведущий ноль у числа не пишется.&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/timeseries-post-6@2x.png" width="509" height="98" alt="" /&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Если год на отметках повторяется, то лучше подписать его у первой отметки этого года, а у следующих не подписывать. Год стоит продублировать у крайних отметок, чтобы было проще понять, какая это дата.&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/timeseries-post-5@2x.png" width="507" height="120" alt="" /&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Секунды у времени не пишутся, если не сказано обратного — &lt;i&gt;22:12&lt;/i&gt;. Любое время, кроме полуночи лучше писать без ведущих нулей: &lt;i&gt;6:25, 9:13, 12:56,&lt;/i&gt; но &lt;i&gt;00:00&lt;/i&gt;. Для секунд, там где они нужны, допускается писать только секунды: &lt;i&gt;10:55, :56, :57, :58, :59, 11:00, :01, :02.&lt;/i&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Оформление&lt;/h2&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Если отметок много и они переносятся в две строки, лучше снизить число отметок, а не переносить.&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/timeseries-post-7@2x.png" width="507" height="112" alt="" /&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Текст подписи выравнивает по центру, сама подпись — по пеньку.&lt;/li&gt;
&lt;li&gt;Между отметками должен быть минимальный отступ в 16 пк, если отступ будет меньше, то отметки слипнутся.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Края интервала&lt;/h2&gt;
&lt;p&gt;Когда левая и правая границы важны, нужно подписать эти отметки явно. Скорей всего для этого придется убрать подписи у ближайших отметок: отметки &lt;i&gt;6:00&lt;/i&gt; (между &lt;i&gt;3:52&lt;/i&gt; и &lt;i&gt;8:00&lt;/i&gt;) и &lt;i&gt;2:00&lt;/i&gt; (между &lt;i&gt;00:00&lt;/i&gt; и &lt;i&gt;3:12&lt;/i&gt;) как бы должны быть, но не влезли:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/timeseries-post-first-and-last-1@2x.png" width="527" height="57" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Если явно задана только левая, а правая — &lt;i&gt;сейчас&lt;/i&gt;, то правую можно не подписывать:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/timeseries-post-first-and-last-2@2x.png" width="527" height="57" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Если края не принципиальны, то можно не подписывать оба конца:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/timeseries-post-first-and-last-3@2x.png" width="527" height="57" alt="" /&gt;
&lt;/div&gt;
&lt;h2&gt;Примеры&lt;/h2&gt;
&lt;p&gt;Примеры того, что получится, если воспользоваться рекомендациями:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/timeseries-post-examples-200@2x.png" width="500" height="615" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/timeseries-post-examples-480@2x.png" width="845" height="615" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/timeseries-post-examples-1600@2x.png" width="2000" height="774" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Если применить все рекомендации к примеру из начала поста, то получится как-то так:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/timeseries-post-8@2x.png" width="524" height="284" alt="" /&gt;
&lt;/div&gt;
&lt;div class="post-summary"&gt;&lt;div class="post-summary__text"&gt;&lt;p&gt;Выводы простые: не доверяйте программе ставить отметки как получится, скорей всего получится плохо.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description>
</item>

<item>
<title>Как подписывать скриншоты</title>
<guid isPermaLink="false">83</guid>
<link>https://mikeozornin.ru/blog/all/how-to-label-screenshots/</link>
<pubDate>Mon, 12 Feb 2018 12:19:47 +0300</pubDate>
<author>Михаил Озорнин</author>
<comments>https://mikeozornin.ru/blog/all/how-to-label-screenshots/</comments>
<description>
&lt;p class="lead"&gt;У нас в компании есть команда технических писателей, которые пишут руководства по продуктам. В руководствах техписатели вставляют скриншоты экранов и рассказывают как и что работает. Некоторое время назад я помог им разработать рекомендации по оформлению подписей к таким скриншотам. Расскажу на что обращать внимание. Вряд ли тут будет что-то новое дизайнерам, а вот остальным, надеюсь, поможет.&lt;/p&gt;
&lt;p&gt;Я подключился совсем рано, когда подписи скриншотов были совсем сырыми:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/1-1.png" width="1491" height="358" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;То, что ко мне попал один из самых первых черновиков — большая удача, из черновика получились хорошие примеры. Их не пришлось придумывать из головы, они вышли иллюстративные и при этом реальные.&lt;/p&gt;
&lt;h2&gt;Общие правила&lt;/h2&gt;
&lt;p&gt;Про оформление подписей есть бюрошный совет: &lt;a href="https://bureau.ru/bb/soviet/20140728/"&gt;bureau.ru/bb/soviet/20140728.&lt;/a&gt; В нем Артём рассказывает о роли подписей, о том, как их ставить и как рисовать выноски. Подписчики учебника «Типографика и верстка» могут дополнительно посмотреть &lt;a href="https://bureau.ru/books/typography/71"&gt;разворот 71.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Я не буду повторяться и писать про толщину линий и их цвет, про расстояния до обозначаемого объекта, в двух ссылках выше это описано.&lt;/p&gt;
&lt;h2&gt;Прием 1: УВЛ (убрать все лишнее)&lt;/h2&gt;
&lt;p&gt;Самое простое, с чего можно начать улучшение этой картинки — убрать очевидные сущности. Текста станет меньше, свободного места — больше, подписи станут компактней и аккуратней.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/1-1.png" width="1491" height="358" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Слово &lt;i&gt;button&lt;/i&gt; встречается 12 раз и все они используются, чтобы сказать «это — кнопка». Вообщем почти все элементы на этом скриншоте — кнопки, поэтому &lt;i&gt;button&lt;/i&gt; безболезненно убирается:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/1-2.png" width="1449" height="329" alt="" /&gt;
&lt;/div&gt;
&lt;h2&gt;Прием 2: вынести общее за скобки&lt;/h2&gt;
&lt;p&gt;Иногда от повторений нельзя избавиться совсем.  В примере ниже повторяется не просто &lt;i&gt;button,&lt;/i&gt; а &lt;i&gt;filter button.&lt;/i&gt;&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/1-3.png" width="366" height="168" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Убрать &lt;i&gt;button&lt;/i&gt; можно, а вот от &lt;i&gt;filter&lt;/i&gt; избавиться нельзя. Если убрать слово &lt;i&gt;filter&lt;/i&gt;, то потеряется важный смысл. При этом &lt;i&gt;filter button&lt;/i&gt; относится ко всем четырем действиям, все они — действия над сохраненными фильтрами. Нет необходимости писать про сохраненные фильтры 4 раза, можно написать один раз и больше не повторяться.&lt;/p&gt;
&lt;p&gt;Например, так:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/1-4.png" width="470" height="158" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Фактически мы вынесли &lt;i&gt;filter button&lt;/i&gt; за скобки, как в математическом выражении.&lt;/p&gt;
&lt;h2&gt;Прием 3: соблюдать теории близости&lt;/h2&gt;
&lt;p&gt;&lt;aside class="aside-margin-right"&gt;&lt;span class="related-excerpt"&gt;Теория близости: &lt;a href="https://www.artlebedev.ru/kovodstvo/sections/136/"&gt;artlebedev.ru/kovodstvo/sections/136/&lt;/a&gt;&lt;/span&gt;&lt;/aside&gt;&lt;/p&gt;
&lt;p&gt;Нужно следить, чтобы при расположении подписей не нарушалась теория близости. Здесь надпись близка к чужой палочке, возникает путаница:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/5-1@2x.png" width="639" height="213" alt="" /&gt;
&lt;/div&gt;
&lt;h2&gt;Прием 4: использовать естественное соответствие&lt;/h2&gt;
&lt;p&gt;Известный инженерный психолог Дональд Норман в своей книге «Дизайн привычных вещей» сформулировал принцип «естественного соответствия». Проще всего объяснить картинкой. Слева просто так, справа — естественное соответствие:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/norman@2x.png" width="1000" height="294" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;На этом куске скриншота все 4 иконки стоят ровно в ряд с одинаковыми отступами:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/3-1.png" width="602" height="192" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;По возможности лучше не подписывать что-то сбоку, что-то снизу, а расположить подписи в ряд, с одинаковыми интервалами, — это усилит взаимосвязь:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/3-2.png" width="471" height="145" alt="" /&gt;
&lt;/div&gt;
&lt;h2&gt;Прием 5: выравнивать текст осмысленно&lt;/h2&gt;
&lt;p&gt;Подпись к элементу можно поставить по-разному: слева, справа, ближе к центру. По-разному можно выровнять текст: по левому краю, по центру или по правому краю. Если расположение и выравнивание выбирать не случайно, то оно помогает лучше соотнести подпись с элементом, к которому она написана.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/6-1.png" width="625" height="170" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Подпись периода расположение по центру и похожа на форме на отображаемый период: невысокая и широкая. Иконка &lt;i&gt;Expand timeline&lt;/i&gt; расположена в правой части поля, поэтому выноску располагается с правой стороны текста. Дополнительно можно было бы использовать выравнивание текста &lt;i&gt;Expand timeline&lt;/i&gt; по правому краю, а &lt;i&gt;Apply filter&lt;/i&gt; по центру, но это не обязательно в данном случае.&lt;/p&gt;
&lt;p&gt;За выравниваем всегда следят на транспортных схемах: правильное расположение названия станции помогает понять, где какая станция. Посмотрите, например, линейные схемы Московского метро: &lt;a href="https://www.artlebedev.ru/metro/line-map/"&gt;artlebedev.ru/metro/line-map.&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Прием 6: убрать «почти, но не совсем»&lt;/h2&gt;
&lt;p&gt;&lt;aside class="aside-margin-right"&gt;&lt;span class="related-excerpt"&gt;Конечно это упрощение, но сейчас так надо&lt;/span&gt;&lt;/aside&gt;&lt;/p&gt;
&lt;p&gt;Существует общее правило в дизайне: блоки, надписи и другие элементы нужно или выровнять совсем, или совсем не ровнять. Не должно быть элементов, неровных на чуть-чуть, не должно быть никаких «почти, но не совсем».&lt;/p&gt;
&lt;p&gt;Посмотрим на картинку:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/2-1.png" width="1500" height="139" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Здесь много &lt;i&gt;почти, но не совсем&lt;/i&gt;, всего 6 видов разного выравнивания:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/2-2.png" width="1525" height="160" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Подписи будут аккуратней, если их выровнять друг относительно друга так:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/2-3.png" width="1551" height="121" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Ещё примеры «почти, но не совсем» &lt;a href="http://ilyabirman.ru/meanwhile/all/almost/"&gt;в посте Ильи Бирмана&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Прием 7: следить за типографикой&lt;/h2&gt;
&lt;p&gt;Подписи — неблагодарный для верстки формат: колонка узкая, а тут ещё могут появиться эти длинные русские слова. В узких колонках особенно важно следить за интерлиньяжем (межстрочным интервалом), лучше уменьшить его относительно базового. &lt;i&gt;Filter&lt;/i&gt; и &lt;i&gt;panel&lt;/i&gt; расположены так далеко друг относительно друга, что может показаться, что это две подписи. Если уменьшить интерлиньяж будет лучше:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/4-1.png" width="1151" height="392" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Ещё для подписей обычно применяют кегль, уменьшенный на пару пунктов относительно основного текста.&lt;/p&gt;
&lt;p&gt;Про интерлиньяж:&lt;br /&gt;
&lt;a href="http://bureau.ru/bb/soviet/20140310/"&gt;bureau.ru/bb/soviet/20140310/ &lt;/a&gt;&lt;br /&gt;
&lt;a href="http://bureau.ru/bb/soviet/20140224/"&gt;bureau.ru/bb/soviet/20140310/ &lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Прием 8: редактировать текст&lt;/h2&gt;
&lt;p&gt;Из-за узкой колонки в подписях может быть много переносов на другие строки. Лучше, если они будут в логически обоснованных местах.&lt;/p&gt;
&lt;h2&gt;Прием 9: рассказывать по частям&lt;/h2&gt;
&lt;p&gt;Иногда бывает так: уже убрал все лишнее, вынес за скобки, сократил и отредактировал текст, а все равно ничего не лезет. Как ни стараешься, ничего не помогает: подписей слишком много, они мешают друг другу, получается каша.&lt;/p&gt;
&lt;p&gt;В этом случае можно рассказывать по частям. Например, сначала показать общие части, потом подписать отдельные элементы этих частей:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/7-1.png" width="1609" height="703" alt="" /&gt;
&lt;/div&gt;
&lt;div class="post-summary"&gt;&lt;div class="post-summary__header"&gt;&lt;p&gt;Приемы&lt;/p&gt;
&lt;/div&gt;&lt;div class="post-summary__text"&gt;&lt;ol start="1"&gt;
&lt;li&gt;Убрать все лишнее&lt;/li&gt;
&lt;li&gt;Вынести общее за скобки&lt;/li&gt;
&lt;li&gt;Соблюдать теории близости&lt;/li&gt;
&lt;li&gt;Использовать естественное соответствие&lt;/li&gt;
&lt;li&gt;Выравнивать текст осмысленно&lt;/li&gt;
&lt;li&gt;Убрать «почти, но не совсем»&lt;/li&gt;
&lt;li&gt;Следить за типографикой&lt;/li&gt;
&lt;li&gt;Редактировать текст&lt;/li&gt;
&lt;li&gt;Рассказывать по частям&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Про подписи есть ещё два поста Сергея Стеблины, он шарит сильно лучше меня, поэтому если дочитали досюда, то прочитайте и его, вам уже нечего терять:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://steblina.com/neznal/?go=all/razmery-lineyki/"&gt;Размеры и линейки&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://steblina.com/neznal/?go=all/korotko-o-vynoskah-i-podpisyah/"&gt;Коротко о выносках и подписях&lt;/a&gt; — на самом деле не коротко&lt;/li&gt;
&lt;/ul&gt;
</description>
</item>


</channel>
</rss>