пятница, 30 марта 2018 г.

GOSTdown: автоматическая вёрстка документации по ГОСТам

Введение

В данном посте описаны решения, которые легли в основу GOSTdown — набора шаблонов и скриптов для автоматической вёрстки. GOSTdown предназначен для тех, кому приходится писать и оформлять научно-технические отчёты (НТО) или программы по Единой системе программной документации (ЕСПД). Такие документы нередко имеют крупный размер, создаются долго и несколькими людьми, и перед сдачей проверяются на соответствие ГОСТам. Традиционно для создания таких документов используется Microsoft Word. Исполнители привыкли делать в Word, заказчики привыкли принимать в Word. Заказчиков мы обсуждать не будем, а поговорим об исполнителях и их проблемах.

Проблема

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

Строго говоря, Word имеет средства для всех вышеперечисленных задач. Да, для всех. С параллельным редактированием и слиянием изменений Word в одиночку не справится, но установка сервера Sharepoint решит и этот вопрос.

Допустим, существуют люди, которые используют Word и его возможности, и у них всё получается. Им будет неинтересно читать дальше. Этот пост может представлять интерес для людей, у которых:
  • Какие-то заголовки упорно не появляются в оглавлении, а другие, которые в нём не нужны — упорно появляются
  • Текст документа пестрит сообщениями [ошибка! источник ссылки не найден] или ненадёжными прямыми номерами, вставленными отчаявшимися коллегами
  • Постоянно ломается форматирование многоуровневых списков
  • Съезжает форматирование при вставке пункта списка из буфера обмена, вне зависимости от способа вставки
  • Отслеживание изменений невозможно, потому что от «Отформатировано: русский» рябит в глазах
  • Нет Sharepoint, а если он и появится, никто не научится им пользоваться
  • При сохранении doc-файла в .docx работа Word необъяснимо и фатально замедляется
  • Любая попытка привести в порядок зоопарк стилей в 100-страничном документе делает всё только хуже
  • Есть необходимость редактировать основной текст документа в iOS или Android, и при этом не портить оформление при сохранении.

Решение

Решение заключается в том, чтобы редактировать документ в формате, основанном на тексте (plain text), а для чтения, печати и сдачи осуществлять преобразование текста в docx-файл, оформленный по всем правилам.

Исходный текстовый формат позволит легко отслеживать и сливать изменения (в идеале — с применением git или иной системы контроля версий). Автоматизированная процедура преобразования в docx пронумерует всё необходимое, расставит номера ссылок и применит стили оформления.

Пример исходного текста в Markdown:

Результат в PDF, сохранённом из docx:

Полный пример документа см. в репозитории. Там же находится руководство пользователя (README.md). Примеры результатов см. в архиве артефактов репозитория.

Остальное — технические детали, в которых всё самое интересное.

Выбор исходного формата и конвертера

С конвертером всё просто: он фактически единственный и называется Pandoc. Он обладает уникальным движком преобразования латеховских формул в формулы Word 2010.

Pandoc — универсальный инструмент для преобразования более чем 20 форматов друг в друга. Но схема его работы такова, что любые преобразования идут через внутреннее промежуточное представление документа в самом Pandoc. Модель внутреннего представления не содержит всех возможностей всех исходных форматов (и наоборот, содержит возможности, которые присутствуют не во всех исходных форматах). Это фактически приводит к выбору формата для нашей задачи. Есть только один формат, на 100% соответствующий внутреннему представлению Pandoc: Markdown. Точнее, Pandoc’s Markdown (формат Markdown сам по себе существует во многих вариациях).

Формулы в Pandoc’s Markdown вводятся в формате LaTeX. Для библиографии доступны разные варианты, включая BibTeX. Это привычно многим сотрудникам научных организаций, которые занимаются написанием статей.

Иллюстрации в Markdown вставляются в виде внешних файлов в форматах PNG, JPEG и EMF (последний — для графиков и векторных рисунков).

Ссылками в Pandoc занимаются т.н. фильтры: pandoc-citeproc (для библиографических ссылок) и pandoc-crossref (для всего остального). Эти фильтры — отдельные программы, запускаемые из Pandoc и работающие с документом в его внутреннем представлении.

Библиография

Существует два ГОСТа: 7.1-2003 (Библиографическая запись. Библиографическое
описание) и 7.0.5-2008 (Библиографическая ссылка). При создании списка
литературы в программной и научно-технической документации формально требуется применять ГОСТ 7.1. Но реально его никто не применяет из-за нелепых требований:
  • вставлять пометку «[Текст]» в ссылки на любые тексты (т.е. практически во все ссылки);
  • повторять имя первого автора дважды (включая случай, если автор всего один);
  • писать полный список авторов после названия (до трёх включительно), а если их четыре и более, то упоминать только первого «и др».
ГОСТ 7.0.5 обходится без этих требований, поэтому его более охотно используют
вместо 7.1 — ту его часть, которая называется «затекстовые ссылки», про
которые, впрочем, сказано, что «Совокупность затекстовых библиографических
ссылок не является библиографическим списком».

В пакете pandoc-citeproc, используемом в Pandoc, есть стилевой файл в формате CSL 1.0.1, основанный на ГОСТ 7.0.5 с отдельными элементами ГОСТ 7.1.

В целом, правила ГОСТов (как 7.1, так и 7.0.5) настолько сложны, что автоматизировать библиографию по всем правилам невозможно. Вышеупомянутый формат CSL 1.0.1, задуманный как универсальный окончательный формат для формирования всей библиографии на свете, разумеется, не подходит в полной мере для этих ГОСТов.

В частности, в ГОСТе есть разумное требование: английские ссылки должны быть с английскими вспомогательными словами (Vol., No., pp., ed. и прочие), а русские — с русскими. В CSL 1.0.1 такой опции не предусмотрено. Опция появилась в расширении CSL-M, которое не поддерживается в pandoc-citeproc. Это препятствие удалось частично преодолеть ценой установки вспомогательного поля «note» в русскоязычных статьях и дополнительных изменений в CSL-файле.

Шаблон

Pandoc работает с основным текстом документа. Такие вещи, как титульный лист и колонтитулы, легко создаются пользователями в Word в режиме WISYWIG, тогда как их создание в Pandoc затруднено или невозможно. Для разрешения этого противоречия в GOSTdown существует файл-шаблон в формате docx, который содержит следующее:
  1. Формат колонтитулов (Pandoc «подхватывает» этот формат при генерации документа с основым текстом)
  2. Перечень стилей, которые впоследствии использует Pandoc при генерации docx-файла
  3. Собственно неосновное содержимое документа, т.е. небольшая часть содержимого, которая не генерируется из Markdown.

Постобработка

Напомним, Pandoc преобразует файл основного текста в формате Markdown в аналогичный файл в формате docx. Сразу после получения этого файла возникает задача вставки его в нужное место шаблона (после титульного листа). Этим занимается скрипт постобработки. И не только этим: файл, сгенерированный Pandoc, хотя и содержит необходимые стили, всё же не является готовым продуктом. Для получения готового продукта необходимо следующее:
  1. Установка стилей нумерации и отступы для списков и вложенных списков (Pandoc в настоящий момент не обладает механизмом шаблонизации списков)
  2. Исправление выравнивания номеров формул (нумерованные формулы pandoc-crossref генерирует как таблицы из двух колонок)
  3. Исправление горизонтального выравнивания ячеек таблиц, в которых есть только формула и больше ничего (Word в таком случае берёт настройки выравнивания из формулы, а не из ячейки, а Pandoc не заботится о том, чтобы выравнивание в формуле совпадало с оным в ячейке.)
  4. Установка стилей таблиц (Pandoc не умеет этого делать)
  5. Установка стилей ненумерованных заголовков (они отличаются от стилей нумерованных, а Pandoc присваивает всем заголовкам одного уровня один стиль).
  6. Разные другие мелочи по части форматирования
  7. Вставление оглавления средствами Word
  8. Подсчёт количества страниц, рисунков, таблиц, приложений, литературных источников, и вставка этих чисел в необходимое место документа.
  9. Сохранение полученного документа не только в docx, но и в PDF.
Всё это делается с помощью Word COM. Фактически, любая инсталляция Word на Windows открывает возможности для программного управления содержимым документа так же, как пользователь делал бы это вручную в программе. Широко известно применение этой технологии в макросах (VBA), но макросы не очень удобны тем, что сами хранятся в документе. Менее известен следующий факт: с COM-объектами без труда можно работать в скриптах Powershell. Это и реализовано в GOSTdown, см. скрипт для запуска Pandoc и постобработки.

Вопросы и ответы

1. Где рамочки с боковыми ячейками для подписей?

В представленном примере Описания программы имеются рамки на листе утверждения и титульном листе. В основной части ГОСТ разрешает рамку не наносить. В НТО рамки не требуются нигде.

2. Всё это точно по ГОСТу?

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

3. Почему шрифты не Arial и Times New Roman, а какие-то другие?

Требований по гарнитуре нет в ГОСТах (за исключением ГОСТов на стандарты и на конструкторскую документацию). В представленных шаблонах используются общедоступные гарнитуры фирмы «Паратайп»: PT Serif (с засечками), PT Sans (без засечек) и PT Mono (моноширинный) Объяснение, почему паратайповские шрифты идеально подходят для документов на русском языке, см. здесь.

4. Почему docx-файлы такие большие?

Из-за вышеупомянутых шрифтов, встроенных в файл. Можно отключить встраивание шрифтов (за него отвечает опция -embedfonts), и тогда файлы станут адекватного размера, но если на компьютере вашего коллеги или заказчика не установлены шрифты PT Serif, PT Sans и PT Mono, то при открытии документа в Word шрифты заменятся на шрифты по умолчанию, и документ в итоге будет выглядеть не так, как было задумано.

5. Почему не LaTeX?

Государственные заказчики не возьмут LaTeX-файл, т.к. не знают, что это такое. В принципе, если заказчику не нужен исходник и достаточно PDF-файла, то можно использовать и LaTeX.
Pandoc умеет генерировать docx-файлы из LaTeX, но генерация осуществляется с потерями из-за разницы в идеологиях LaTeX и Word в области стилей. Теоретически возможен вариант генерации и LaTeX и docx-файлов из одного исходника в Markdown с помощью Pandoc, но в реальности такое средство пока не создано.

6. Почему не Google Docs? Там даже формулы появились

Да, и даже доступны дополнения (Add-ons) для нумерации и библиографии. В Google Docs удобные средства совместной работы, но ограниченные средства форматирования. Нет стилей (кроме небольшого исходного набора). Проблематична вставка векторных рисунков. Нет поддержки офлайновой работы. (На самом деле есть, но тогда перестаёт решаться проблема слияния изменений.)

7. Почему не LibreOffice?

Во-первых, потому, что в LibreOffice/OpenOffice крайне плохо обстоит дело с отображением формул. Позвольте не называть остальные 17 причин.

8. Как преобразовать имеющийся docx в Markdown?

Конечно же, с помощью Pandoc (он ведь преобразует в любую сторону). Конечно, информация о стилях исходного документа при этом потеряется. Возможно, после конвертации потребуется ручная правка. Дополнительные проблемы могут возникнуть с формулами: Pandoc распознаёт в docx-файлах только формулы, набранные средствами Word 2010 (не MS Equation и не MathType). Известен трюк с участием LibreOffice для пересохранения формул MS Equation в Word 2010. Для более позднего MathType он, кажется, не работает.

9. Чем редактировать Markdown?

Любым текстовым редактором, начиная с notepad.exe. Например, для Windows есть Notepad++, для Linux — Emacs, для всех десктопных ОС — Visual Studio Code. Все они бесплатные.
Преимущество текстового представления в том, что вносить правки в текст можно хоть со смартфона в самолёте (и если настроен GitLab CI, вы сразу получаете готовый документ).

10. Что такое Gitlab CI и как мне получить docx, редактируя файл не на Windows?

См. соответствующий раздел руководства. Машина с Windows (удалённая) всё же понадобится, см. раздел «Системные требования».

11. Чем редактировать Markdown так, чтобы сразу видеть результат?

Это сложнее. Вам потребуется или вышеупомянутый Visual Studio Code, или Atom. Потребуется также установить расширение Markdown Preview Enhanced (MPE). Альтернативное расширение — Markdown Preview Plus (MPP), только для Atom. Эти расширения используют Pandoc для того, чтобы делать из вашего Markdown-файла HTML-файл для предпросмотра. Прочие средства редактирования Markdown, в т.ч. онлайновые, рассчитаны на другие диалекты Markdown и не будут отображать Pandoc’s Markdown в полной мере.

Пользовательские настройки для MPE в VS Code таковы:
{
    "markdown-preview-enhanced.usePandocParser": true,
    "markdown-preview-enhanced.pandocArguments":
       "--filter=pandoc-crossref, --filter=pandoc-citeproc"
}
При нажатии Ctrl+k v включается предпросмотр, который, хоть и не совпадает в точности с будущим docx-файлом, аккуратно отображает все формулы, таблицы, блоки кода и изображения (кроме EMF).


12. Таблицы неудобно редактировать в виде текста, что делать?

В Visual Studio Code и Atom существуют многочисленные расширения для упрощения работы с Markdown, в т.ч. с таблицами. Таблицы самого сложного вида (с многоабзацевыми ячейками) они, к сожалению, не поддерживают. Такие таблицы поддерживает Emacs и его table-mode.

13. Мне нужны вещи, которые есть в Word, но отсутствуют в Markdown, что делать?

Если речь идёт об относительно небольшом фрагменте документа, не укладывающимся в формат (например, сложная таблица с объединёнными ячейками), то пользователь может держать этот фрагмент в отдельном docx-файле, редактируя его в Word. Вставка фрагмента в основной текст может делаться скриптом, аналогично тому, как сейчас сам основной текст вставляется в шаблон на место %MAINTEXT%.

Благодарности

В создании GOSTdown принимала активное участие Алёна Водолагина (ИПА РАН), также помощь оказывал Даниил Аксим (ИПА РАН). Разумеется, GOSTdown не был бы возможен без замечательного ПО: Pandoc, pandoc-citeproc и pandoc-crossref (автор последнего — Николай Якимов, МАИ). Ну и Microsoft помогла своими Word COM и Powershell, чего уж там.

понедельник, 29 января 2018 г.

Три жалобы

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

Часть первая. HTTPS

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

Какие аргументы звучат в пользу HTTPS? Якобы этот протокол гарантирует:
  1. Защиту от прослушивания
  2. Защиту от подмены канала
  3. Защиту от модификации данных
Мне кажется, что ничего этого нет и не будет.

Прослушивание канала

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

Не инсталлируете сомнительные программы, чтобы оградить себя от хакеров? Правильно делаете, но средства взлома бывают и в известных программах, в том числе в программах с открытыми исходниками; когда их обнаруживают, случается скандал. В программах с закрытыми исходниками средства взлома обнаружить сложнее, поэтому с ними скандалы возникают реже. Злой умысел разработчиков или случайность — неважно, вы скачали программу и тем самым подарили свою машину хакерам. Пользуетесь антивирусом? Антивирусы ловят только то, что уже известно. Если вы оказались в первой волне заражения, антивирус не спасёт.

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

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

Более того, злоумышленник может не озадачиваться полным контролем над сервером. Ему достаточно пропихнуть в веб-страницу свой код — после чего все данные, введённые пользователем на странице, отправятся из браузера прямиком на сервер злоумышленника. Сегодняшняя новость: «Мошенники смогли разместить на YouTube рекламу с кодом для майнинга криптовалюты». Мошеннический Javascript на сервисе Google, каково?

Особого упоминания заслуживает Heartbleed — ошибка в реализации OpenSSL, которая, фактически, сводила на нет защищённость SSH, HTTPS и всего такого. С марта 2012 по апрель 2014 хакеры могли беспрепятственно красть ключи от любых защищённых соединений.

Помимо программ есть операционные системы, также полные дыр.

Наконец, есть уязвимости в аппаратной части. В конце 2017 г. мир узнал, что почти все процессоры с 1995 года имеют уязвимости Meltdown и Spectre, позволяющие программам читать память ядра и других программ. То есть, читать пароли и ключи прямо из оперативной памяти. На мобильных устройствах тоже. Выходят заплатки для операционных систем, программ и микрокода, но их эффективность ограничена. Ошибки в процессорах не исправить.

Ещё одна декабрьская новость: найден способ захватывать контроль над выключенными компьютерами. Поток таких новостей никогда не иссякнет. Серверы и машины пользователей никогда не будут защищены от проникновений. Следовательно, HTTPS никогда не станет гарантией защиты соединения.

Подмена канала

Ленивый злоумышленник даже не станет взламывать ваш канал или красть ваши данные вышеперечисленными способами. Он просто подделает канал, и вы ему дадите все данные добровольно. По защищённому соединению. Простейший способ — заманить вас на легально заведённый адрес, напоминающий настоящий по доменному имени, дизайну и степени надёжности. Критерием надёжности сайта с защищённым соединением является сертификат. Сертификаты продаются удостоверяющими центрами (CA), гарантирующими добропорядочность сайтов. В 2016 г. появился бесплатный центр Let’s Encrypt.

Считаете, что CA помогут браузеру надёжно отличить мошенников от честных людей? Нет такого. Центры подвержены коррупции и бардаку, как и всё в мире. Платный центр Symantec недавно потерял репутацию настолько, что Google планирует отказаться от признания его сертификатов. На молодой и бесплатный Let’s Encrypt тоже поступают жалобы.

Real and fake side-by-side
Обычный PayPal (слева) и подставной (справа). Это реальный мошеннический сайт, которому Let’s Encrypt выдал сертификат. Пользователь видит успокаивающий зелёный значок, а на мелочи не обращает внимания. Источник.

Если мошеннику не удалось получить сертификат, это не повод отчаиваться: на существующих CA свет клином не сошёлся, он может создать собственный CA. Изначально браузер не будет доверять этому CA (и сайту злоумышленника). Благонадёжные CA подтверждены корневыми сертификатами, хранящимися в браузере и операционной системе. Как вы уже догадались, уязвимости, позволяющие мошенникам установить свои корневые сертификаты в систему, обнаруживаются регулярно.

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

Модификация данных

Протокол защищает канал связи от модификации — при условии, что злоумышленник, опять же, не лезет на сервер или машину пользователя. В действительности, конечно, он это делает.
Допустим, злодей хочет показать вам рекламу. При HTTP можно быть купить у провайдера пакет рекламы, вставляемой в страницы, а HTTPS сделал это невозможным, ну и что? Показ рекламы с тем же успехом можно купить у сайта напрямую или через всякие агентства по рекламе в вебе. На десктопе рекламой блещет скайп, на мобильных устройствах рекламу содержит каждое второе бесплатное приложение.
Ещё одна иллюстрация — AdBlock, превратившийся из блокировщика рекламы в её менеджера, не говоря уже о сайтах, которые детектируют AdBlock, издеваются над пользователем и всё равно показывают ему рекламу. Словом, вам покажут всю рекламу, которая вам полагается: так работает бизнес. Если вы хотите уменьшить количество рекламы в жизни, то заниматься надо не игрой в шпионов по HTTPS, а гораздо более скучной вещью — законами.


HTTPS-сайты в своей первозданной чистоте. Тщательно запланированные и реализованные. Ни единого пикселя непрошеной рекламы от провайдера.

Что плохо в HTTPS?

  • Соединение устанавливается дольше, чем в HTTP. Шифрование/дешифрование создаёт дополнительную нагрузку на процессор.
  • Пользовательские проблемы из-за навязанной технологии. Например: на гаджете открыт сайт по HTTPS через сотовую сеть, гаджет подключается к публичному вай-фаю, пользователь совершает переход внутри сайта (т.е. обращается к тому же сайту, но к другой странице), провайдер публичного вай-фая перенаправляет пользователя на свою страницу авторизации, гаджет считает это попыткой хакерской атаки и жалуется на неправильный сертификат, страницу не показывает, пользователь во фрустрации.
  • Сложность легального анализа трафика для сбора данных и блокировки контента. Считаете, что тайна любого трафика священна и провайдер не должен его видеть вообще? Ну, заметьте, что средства анализа трафика и блокировки добровольно-принудительно внедрились во все крупные сайты с согласия хозяев. Наверняка не за горами легальное прослушивание HTTPS-трафика на стороне провайдера (изобретут официальные сертификаты для прослушивания, если ещё не). Технологии шифрования, как и в случае с рекламой, ничего принципиально не поменяли и не поменяют. Для перемен нужны законы.
  • Забота для вебмастера добывать сертификат для сайта. Самоподписанные сертификаты объявлены браузерами практически вне закона. Приличные сертификаты нужно покупать. Или получить сертификат в Let’s Encrypt и нервно ожидать момента, когда эта организация начнёт наглеть и играть в хотелки с вебмастерами; или же навыдаёт кучу сертификатов мошенническим сайтам и лишится доверия браузеров. Да и с платным центром сертификации это тоже может произойти, см. выше про Symantec.
HTTPS уместен в онлайн-платежах и на сайтах, где есть вход по паролю. Внедрение HTTPS во все сайты без оглядки на реалии приведёт к дальнейшему развитию технологий легального и преступного взлома и в итоге к ослаблению безопасности тех сайтов, где защита действительно нужна.

Часть вторая. Сглаженные шрифты

Большая часть шрифтов в наши дни — векторные: TrueType от Microsoft, Type 1 от Apple, OpenType от Microsoft и Apple вместе, METAFONT от Дональда Кнута. Глифы векторных шрифтов состоят из кривых (2, 3, 2+3 и произвольного порядка соответственно). Считается, что векторные шрифты должны быть в равной степени применимы для экрана и для печати (чего на самом деле не бывает).

С печатью более-менее всё хорошо. Лазерные принтеры растеризуют чёрные векторные глифы бинарным способом, без полутонировния. При большой плотности точек, которую имеют принтеры (600-1200 DPI), ступенчатость линий не является проблемой.

С экраном в основном всё плохо. Если при плотности пикселей ~96 PPI растеризовать кривые «как есть», получается неприятная глазу ступенчатая картинка. Алгоритмы удаления ступенчатости не дают объективно хорошего результата, это не точная наука. Существуют дисплеи высокой плотности (200-400 PPI), на которых проблема ступенчатости стоит менее остро. Но, во-первых, эти дисплеи мало распространены (преимущественно на мониторах Apple и топовых мобильных устройствах), и во-вторых, бороться со ступенчатостью нужно и на этих дисплеях тоже, особенно для прямых косых линий и для любой анимации с текстом.

Я не буду касаться рендеринга текста в PDF. Он, как правило, плох, но PDF — формат в первую очередь для печати, а не для экрана, так что грешно придираться.

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

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

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

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

1. Применить «сглаживание», несмотря ни на что

Получится как-то так:



Обратите внимание, как повезло букве f, она попала ровно по пикселям. Буквам l, i, t, h повезло меньше, хотя исходные толщины их вертикальных черт такие же, как у f. Очевидно, сглаживание не работает. Невозможно развидеть то, что вертикальные черты глифов, кроме l, размыты по краям и занимают большую, чем l, ширину.

2. Применить субпиксельное сглаживание (ClearType)

Эта технология использует физические свойства жидкокристаллических дисплеев и увеличивает разрешение растеризации чёрных глифов в три раза по горизонтали, а по вертикали не увеличивает. (По этой причине ClearType не используется на смартфонах и планшетах, каковые устройства должны работать одинаково при различных поворотах экрана.)

Диалог с шестью вариантами ClearType в Windows.


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

При растеризации серых точек (при сглаживании) применение ClearType порождает малозаметные цветные артефакты на границах.

Для отображения белых глифов на чёрном фоне алгоритм субпиксельного сглаживания возможен, хотя и несколько отличается и, кажется, отсутствует на практике.

К сожалению, субпиксельное сглаживание всегда сглаживает линии, даже вертикальные. То есть, несмотря на втрое большее горизонтальное разрешение, ему присущи недостатки обычного сглаживания. Посмотрите на ножки буквы m, они все различаются. Вертикальные черты в h и i, T и L — все различаются.

3. Применить хинтинг

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


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

Хинтинг бывает и без сглаживания, что не делает его хуже. Вот примеры отличного хинтинга:

Хинтинг в PT Sans без сглаживания.


Хинтинг в PT Serif без сглаживания.


Example of bi-level rendering, with detail area.
Какой-то шрифт от Microsoft без сглаживания. (Источник)

Как видно, отсутствие полутонов не уменьшает читательность текста на расстоянии. И это наводит на мысль, что можно...

4. Не использовать векторный шрифт

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

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



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

Пользователи экранов с 200+ PPI взирают на все эти проблемы с лёгким недоумением.


Часть третья. Нейросети

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

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

Внезапно в начале 2000-х появились графические ускорители (GPU) с их особой архитектурой, существенно превосходящей архитектуру CPU для задач типа вычисления освещённости при рендеринге 3D-картинки. Пришло осознание, что GPU можно использовать не только для 3D. В 2007 году возникла Nvidia CUDA, позволяющая писать программы для GPU практически на обычном Си. За год до этого был предложен особый вид нейросетей под названием «deep learning». Он оказался лучше, чем другие виды нейросетей.

CUDA позволила применить «deep learning» на реальных задачах, для которых мощности традиционных CPU не хватало. Нейросети начали захватывать мир, и к настоящему моменту захватили.

Из каждого утюга слышны новости об успехах нейросетей. Использовать технологии машинного обучения, отличающиеся от deep leaning, стало неприлично. Для нейросетей есть современные средства на Питоне. Вся движуха AI сегодня в нейросетях, а более строгие математические методы считаются вчерашним днём и нишевыми инструментами. Школьники создают нейросети для определения жанра музыки. Геологи создают нейросети для поиска месторождений.

Откуда этот ажиотаж, зачем?

Нейросеть не может победить другие алгоритмы

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

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

Заметим, что нейросеть — не единственный подход такого рода. Можно назвать битовые отпечатки, байесовские классификаторы, SVM, Монте-Карло + цепи Маркова, кластерный анализ. Эти вещи в принципе не хуже нейросетей и друг друга.

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

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

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

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

Польза нейросетей дико преувеличивается

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

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

Генерация или дорисовывание красивых бесполезных картинок давно делалось и без нейросетей методами математической статистики.

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

С распознаванием речи всё то же самое.

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

Увлечение нейросетями проникло даже в астрономию. Нейросеть нашла экзопланету! Нейросеть ищет резонансы в движении астероидов! Конечно, без нейросетей всё это делалось и делается куда лучше. Просто мода.

Нейросети разорительны

IBM вложила миллиард долларов в нейросетевой компьютер Watson, который якобы научился выдавать диагнозы онкобольным и назначать курс лечения. Оказалось, что врачи лучше справляются с этой работой. Кроме онкологии, Watson отличился интересной трактовкой песен Боба Дилана и ещё несколькими вещами.

Кстати, идея о том, что нейросеть на компьютере может каким-то образом симулировать мозг, абсолютно несостоятельна. Мозг — это не нейросеть. Это неизвестно что. Наука, кажется, до сих пор открывала лишь то, чем мозг не является. В III веке до н.э. люди изобрели гидравлику и предположили, что мозг — это гидравлическое устройство. В XVI-XVII веках с развитием механизмов появились фантазии на тему мозга как механизма. Электричество, телеграф, первые вычислительные машины — всё находило место в гипотезах о происхождении мысли. Теперь вот нейросети в тренде. А мозг всё так же непостижим.

Швейцарский профессор Генри Маркрам в 2013 г. получил от Евросоюза 1.3 миллиарда долларов на проект, посвящённый симуляции могза человека (!) на компьютере. В 2015 г. профессора выгнали из проекта за шарлатанство и распил. Сам проект закрывать не стали, неудобно. Профессор успел симулировать часть неокортекса крысы объёмом 0.3 мм3. Ещё одним выдающимся проектом является симуляция нервной системы червя-нематоды.

После AI Winter, нагрянувшей в середине 1970-х, человечество разочаровалось в Лиспе и экспертных системах. Придёт ли вторая зима, после которой упадёт популярность Питона и нейросетей на GPU?

четверг, 5 января 2017 г.

О разрушении Карфагена в документообороте

Съеден оливье с мандаринами. Выпито шампанское. Прослушана новогодняя речь президента. Подарены/получены в подарок носки. Разошлись гости. И утомлённый человек спрашивает себя: что я могу изменить в жизни?

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

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

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


СЛУЖЕБНАЯ ЗАПИСКА

Уважаемый [Имя и отчество руководителя],

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

Мы пишем различные отчёты, официальные письма, приказы, служебные записки. Большая часть текстов набирается в MS Word с использованием гарнитуры Times New Roman. Последнее обстоятельство порождает три проблемы. Перечислим их в порядке убывания важности.


Проблема Times New Roman № 1: эстетическая непривлекательность

Наши тексты выглядят посредственно — не из-за содержания, а из-за оформления. Русскоязычный текст, набранный в Times New Roman, невозможно оформить хорошо.

Классическая английская гарнитура Times New Roman, созданная Стэнли Морисоном в 1932 г. для газеты The Times, не вызывает претензий. Но в кириллице для Times New Roman, созданной в период между 1956 и 1967 гг. неизвестным автором в фирме Monotype, нарушены естественные формы и пропорции букв. Шрифт в прямом начертании непривлекательно выглядит и труден для чтения. Жирное и курсивное начертания выглядят ещё хуже и ещё менее читабельны.

В Приложении 1 содержится развёрнутая критика кириллической адаптации Times New Roman.


Проблема Times New Roman № 2: ограничения к распространению в Linux

Компания Microsoft с 1990-х годов распространяет вместе с MS Windows гарнитуру Times New Roman, лицензированную у Monotype. Отдельно от MS Windows эта гарнитура не поставляется. Аналогичным образом поступила компания Apple с операционной системой OS X. Пользовательские лицензии Windows и OS X не допускают использования гарнитуры на других операционных системах.

Пользователи Linux вынуждены или устанавливать себе Times New Roman самостоятельно, фактически нарушая пользовательское соглашение, или пользоваться альтернативными шрифтами. У пользователей Windows и OS X эти альтернативные шрифты, как правило, не установлены, что создаёт путаницу в совместной работе.


Проблема Times New Roman № 3: потенциальные политические запреты

Права на распространение Times New Roman находятся у компаний, зарегистрированных в США, и к этим компаниям применимы стандартные ограничения экспорта из США в РФ. Известен прецедент: АО «НПО РусБИТех», разработчик Astra Linux, не смог включить Times New Roman в свой продукт по причине своего сотрудничества с МО РФ (см. статью в газете «Коммерсантъ» от 12 декабря 2016 г: «Санкции прописали популярными шрифтами», http://www.kommersant.ru/doc/3168772). Не исключено, что мы или наши заказчики в будущем пострадают от аналогичных ограничений.


Решение

Решение называется PT Serif. Это гарнитура, созданная в 2010 году Александрой Корольковой из фирмы «Паратайп» по заказу Федерального агентства по печати и массовым коммуникациям. Цель заказа: создание первой гарнитуры, содержащей символы всех национальных алфавитов России в год 300-летия реформы русского алфавита. PT Serif можно скачать по адресу http://paratype.ru/public и инсталлировать в систему стандартными средствами.

Преимущества PT Serif:
  • Высокое качество дизайна. Текст приятно выглядит и хорошо читается.
  • Наличие курсивного и жирного начертаний, а также отдельного семейства PT Serif Caption для набора мелким кеглем.
  • Универсальность применения: шрифты подходят для технических текстов, официальных документов, иллюстраций.
  • Универсальность носителя: шрифты одинаково хорошо смотрятся на бумаге, в PDF, в веб-браузере, в MS Word и других редакторах на всех операционных системах.
  • Бесплатность и свобода распространения: гарнитура опубликована под свободной лицензией, допускающей использование и распространение без ограничений.
Недостатков в PT Serif не обнаружено, за исключением лёгкой непривычки к формам засечек, которая быстро проходит.

В Приложении 2 даны ответы на вопросы. Приложение 3 содержит проект приказа по переходу [нашей организации] на гарнитуру PT Serif.


С уважением,

[подпись]


Приложение 1. Профессиональная критика кириллицы в Times New Roman


Существует несколько кириллических адаптаций Times New Roman. В MS Word используется адаптация, разработанная фирмой Monotype. Приведём фрагмент из статьи Владимира Ефимова «Новые Римские Времена». Здесь цитируется авторская версия, доступная по адресу http://www.paratype.ru/e-zine/defis_07/times/ind_time.html.

Сокращённая версия была опубликована в журнале «Publish», № 4 за 1999 г. и доступна по адресу http://www.publish.ru/articles/199904_4042060.

«Кириллическая версия гарнитуры Times фирмы Monotype спроектирована достаточно профессионально, но выглядит для нас чужой и даже во многом раздражает. [...]

Прямое начертание шрифта Times фирмы Monotype имеет характерную форму букв Ж, К, ж, к с каплями на концах верхних изогнутых ветвей и прямые диагональные нижние ветви. Свисающие элементы у Д, Ц, Щ, д, ц, щ как будто пририсованы к нижним засечкам, вместо того, чтобы присоединяться к продолжению нижнего горизонтального штриха. Из-за такой конструкции свисающие элементы кажутся бессильно провисшими. [...] Буквы Г, г, м, ю слишком широки, а З, Ш, Щ, в, к слишком узки. Форма Ч, ч не слишком удачна. Верхняя часть Ж выглядит слишком широкой, развесистой и не согласуется с нижней. У прописной Ф малы овальные части. Прописная Я с прямой диагональной ногой имеет слишком сильную динамику влево и выглядит как зеркальное отражение латинской R, что противоречит направлению чтения. Акценты в буквах Й, й черноваты, хотя имеют близкую к традиционной форму с двумя каплями на концах. В целом начертание выглядит не очень сбалансированным по цвету и сильно колеблющимся по пропорциям, несмотря на во многом удачное решение трудных кириллических букв б, д, ф, э.

Курсивное начертание гораздо менее удачно как по цвету, так и по пропорциям по сравнению с прямым, хотя некоторые буквы довольно приличны, например, б, а также ж с зигзагообразной серединой. К сожалению, многие другие буквы имеют неудачную форму. Буквы г, к слишком широки. Прямая диагональная нога у к придает знаку жесткость и противоречит курсивному характеру строчных, так же как и верхний диагональный штрих с двусторонней горизонтальной засечкой, заимствованной из латинского k. Верхняя часть буквы ч слишком напоминает аналогичный знак прямого начертания, что противоречит остальным курсивным формам. Верхний выносной элемент у д кажется слишком жестким и колючим. Буква в очень узкая. Верхняя и нижняя части з несбалансированы, как и изогнутые с каплями верхний и нижний выносные элементы у ф, заимствованные у латинского f. Буква л очень острая сверху. Совершенно неудачна форма свисающих элементов у букв ц, щ. Буква я имеет архаичную форму нижней левой диагонали с каплей на конце. Прописные курсивные знаки повторяют ошибки прямого начертания, кроме того, неудачно решена форма Д, Ж, К, которая плохо согласуется с аналогичными знаками в прямом, а в букве Э слишком короткий средний горизонтальный штрих.

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

Приложение 2. Вопросы и ответы

Вопрос: почему после 25 лет использования Times New Roman что-то внезапно нужно менять?
Ответ: Альтернатива в виде PT Serif существует лишь 6 лет. В целом, использование Times New Roman — результат исторических причин и привычки. Вечно мириться с дурной привычкой невозможно. Наступает момент, когда лучше бросить раз и навсегда (как с курением). Сейчас подходящий момент для бросания Times New Roman.

Вопрос: какое дело рядовым сотрудникам до шрифтов в канцелярии и договорном отделе? Пусть набирают свои тексты как хотят и не мешают другим.
Ответ: Почти всем сотрудникам [нашей организации] приходится не только писать, но и читать и редактировать тексты, написанные их коллегами. Чаще всего эти тексты создаются в Times New Roman; таким образом, выдвигается, явно или неявно, требование работать с текстом в этой гарнитуре.

Вопрос: С каких пор Times New Roman стал плохим шрифтом? Им даже книги набирают.
Ответ: Английский Times New Roman никогда не был плохим, кириллический Times New Roman был плох с момента своего создания в 1950-х или 1960-х. Вероятно, его создавал человек, не имеющий большого опыта в создании кириллических гарнитур. В начале 1990-х годов, с приходом компьютерной версии Times New Roman в Россию вместе с Windows, в нашей стране не было спроса на хороший дизайн, при этом спрос на компьютеры был огромен. По инерции и Windows, и Times New Roman прижились.

Что касается русскоязычных книг с Times New Roman: эта гарнитура действительно представлена (к счастью, в подавляющем меньшинстве) в книгах, оригинал-макет которых готовился автором и в книгах, издаваемых издательствами, в которых дизайнером и верстальщиком подрабатывает племянница главного редактора.

Вопрос: Times New Roman требуется по ГОСТу, как мы можем использовать что-то ещё?
Ответ: Требования к гарнитуре предъявлены лишь в одном ГОСТ: ГОСТ Р 1.5-2012. Это ГОСТ на национальные стандарты, требующий Arial или (в случае, если стандарт основан на международном) Times New Roman. Ещё существует ГОСТ на чертёжные шрифты, но к документам они отношения не имеют. ГОСТы на всю прочую документацию ничего о гарнитуре не говорят. Заказчик имеет право выдвигать любые требования, в том числе и к гарнитуре, но это не ГОСТ, а каприз заказчика, который должен рассматриваться в частном порядке.

Вопрос: Ну вот мы пошлём заказчику документ, набранный в PT Serif, а у него нет этого шрифта, что произойдёт?
Ответ: Ничего страшного. В худшем случае шрифт при отображении вордовского файла у адресата автоматически заменится на другой (например, тот же Times New Roman). При этом название исходного шрифта будет видно в панели инструментов, что может подвигнуть пользователя на установку новой гарнитуры в свою систему. При посылке PDF, в отличие от документа Word, шрифт не потеряется. Даже в Word, если вы перед сохранением документа включите опцию внедрения шрифтов в файл (Файл -> Параметры -> Сохранение -> Внедрить шрифты в файл), то документ у адресата будет выглядеть так же, как у вас, и редактироваться будет тоже без проблем.

Вопрос: почему выбор пал на PT Serif среди тысяч других гарнитур?
Ответ: выбор был значительно сужен следующими требованиями: (i) универсальность, (ii) отсутствие ограничений на использование, (iii) наличие кириллицы, (iv) хорошее качество латинских и кириллических литер в прямом, курсивном и жирном начертаниях, (v) хорошее качество кернинга, (vi) адаптированность не только к бумаге, но и к экрану и к печати в PDF в общеупотребимом программном обеспечении.

PT Serif — единственная гарнитура, удовлетворяющая данным требованиям.

Вопрос: А почему размеры букв в PT Serif не совпадают с Times New Roman? У нас теперь поплывёт всё форматирование в документах?
Ответ: PT Serif не разрабатывался как метрическая замена Times New Roman. Была поставлена цель разработать качественную гарнитуру, и эта цель была достигнута. Действительно, в некоторых ситуациях ширины колонок, отведённых под текст в Times New Roman, не хватит на аналогичный текст в PT Serif. Большой беды в этом нет, можно увеличить колонки или уменьшить кегль шрифта.

Существует гарнитура PT Astra Serif, разработанная той же фирмой «Паратайп», метрически совместимая с Times New Roman. Она лишена недостатков Times New Roman, кроме ошибочных пропорций букв, которые невозможно было исправить, находясь в рамках требований метрической совместимости. В документах (скорее, на титульных страницах), где метрическая совместимость критична, можно использовать PT Astra Serif, в остальных — PT Serif.

Вопрос: А английские литеры есть в PT Serif? Греческие? Расширенная латиница?
Ответ: Стандартная латиница в PT Serif есть. Для набора документов с расширенной латиницей и греческими буквами можно рекомендовать гарнитуру PT Serif Expert, совместимую с PT Serif и бесплатную. В отличие от PT Serif, эта гарнитура имеет ограничения по распространению, которые, впрочем, не относятся к текстам, набранным с её использованием.

Вопрос: А как быть со шрифтами без засечек, например с Arial, который часто используется для объявлений и презентаций?
Ответ: Arial — очень неудачная гарнитура, даже в латинском варианте, не говоря уже о кириллической адаптации. Не вдаваясь в недостатки этой гарнитуры, можно смело рекомендовать гарнитуру PT Sans для использования вместо Arial. Эта гарнитура разработана фирмой «Паратайп», как и PT Serif, и обладает всеми достоинствами, упомянутыми выше в отношении PT Serif.

Вопрос: Всё так просто? Сменим шрифт и от наших документов будет не оторвать взгляд?
Ответ: Кроме шрифта, есть масса других вещей, которые можно улучшить. Существует достаточное количество учебников по типографике, в которых эти вещи описаны. Самая очевидная — пробелы. Во многих документах пробелы несоразмерно широки по причине выравнивания по ширине с отсутствием переносов. Рекомендуется либо задать выравнивание по левому краю (как на сайтах) либо включить расстановку переносов (как в книгах). Средства MS Word позволяют легко сделать и то, и другое.


Приложение 3. Проект приказа


П Р И К А З

О внедрении гарнитуры PT Serif вместо Times New Roman


Внедрить гарнитуру PT Serif вместо ранее используемой Times New Roman для оформления текстов в [название организации], включая:
  • приказы;
  • официальные письма;
  • объявления;
  • отчёты;
  • уставные и нормативные документы;
  • раздаточные материалы для участников заседаний;
  • трудовые договоры;
  • договоры, дополнительные соглашения, отчётную документацию (в случаях, когда это не противоречит требованиям заказчика).
[подпись руководителя]

воскресенье, 30 октября 2016 г.

Старая видеокарта + Linux + монитор с разрешением 2560x1440

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

Видеокарты GeForce GTS 450 были выпущены в 2010 году. Уже тогда существовали мониторы с разрешением 2560×1440 и 2560×1660, которые видеокарта, номинально, поддерживала. В 2016 году появились на свет мониторы DELL U2717D с разрешением 2560×1440. Одному из братьев не повезло: судьба забросила его на компьютер с GTS 450 с линуксом, который упорно выставлял 1920×1080, искренне считая, что ни монитор, ни видеокарта не способны на большее.

Видеокарта

Цифровое изображение, как и аналоговое, поступает на монитор в виде потока кадров с некоторой частотой. Обычная частота регенерации — 60 Гц.

Примечание: на ЭЛТ-мониторах частота регенерации совпадала с частотой мерцания изображения на мониторе; при частоте ниже 80 Гц у пользователей болели глаза. В ЖК-мониторах изображение не мерцает, но тем не менее обновляется с фиксированной частотой.

GTS 450 неспособна выдавать кадры размером 2560×1440 60 раз в секунду. В принципе, не любая частота возможна, даже в допустимых рамках. Например, частоту 30 Гц данная видеокарта выдать не может, а 33 Гц — может. Это не написано ни в какой документации и выясняется опытным путём.

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

Отметим, что линуксовые пользователи видеокарт Nvidia наделены выбором, какой драйвер использовать: проприетарный (nvidia) или свободный (nouveau). Ещё одна опция заключена в виде кабеля (VGA/DVI/HDMI). Так вот, со свободным драйвером ничего не выйдет. С DVI-кабелем тоже (включая Dual-link). По аналоговому VGA-кабелю карта не может передать такой сигнал (это, в отличие от всего остального, упомянуто в спецификации). Единственная работающая комбинация: проприетарный драйвер + HDMI.

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

Но как подобрать Modeline, зная только искомые ширину, высоту и частоту? Для унификации Modeline в видеокартах разных производителей есть (точнее, был) стандарт VESA GTF (Generalized Timing Formula). Воплощением этого стандарта на практике является одноимённая утилита командной строки:

$ gtf 2560 1440 33

  # 2560x1440 @ 33.00 Hz (GTF) hsync: 48.44 kHz; pclk: 162.77 MHz
  Modeline "2560x1440_33.00"  162.77  2560 2688 2960 3360  1440 1441 1444 1468  -HSync +Vsync

Как теперь сообщить Modeline драйверу? Многие делают это командой xrandr --newmode (например, Линус Торвальдс), но в проприетарном драйвере nvidia эта команда не поддерживается. Она поддерживается в nouveau, но не даёт результата в нашем случае. Кстати, стандарт GTF существовал до 2002 года, после чего был заменён на Coordinated Video Timings, реализованный утилитой cvt. Эта утилита выдаёт немного другой Modeline, который, как вы уже догадались, не работает.

Но мы отвлеклись. В проприетарном драйвере nvidia есть возможность задать Modeline путём добавления строки в секцию «Monitor» файла xorg.conf. Да, того самого, который устарел и не включается в дистрибутивы примерно с 2010 года. Впрочем, настройки через xorg.conf действуют и в современных версиях Xorg — если пользователь создаст этот файл.

Небольшая удача заключается в том, что графическая утилита nvidia-settings, входящая в состав драйвера nvidia, поможет нам создать xorg.conf, соответствующий оному драйверу и настройкам пользователя. Опция задания Modeline в утилите отсутствует (иначе всё было бы слишком просто, не так ли). Остаётся вписать желанные параметры вручную в уже сгенерированный утилитой файл. И обнаружить, что драйвер не хочет их выставлять.

Монитор

Драйвер отказывается передавать монитору сигнал, который тот не может принять (по идее, это способствует сохранению монитора от перегорания, ну и вообще, к чему такие трюки). Мониторы, выпускаемые c 2000-х годов (вспомните слово plug-n-play), рапортуют видеокарте о своих способностях посредством передачи EDID (Extended Display Identification Data). От монитора Dell U2717D драйвер получает некорректный EDID; виновен в этом либо монитор, либо драйвер, что, в сущности, неважно.

Отключить проверку EDID придётся вновь через опции драйвера в xorg.conf. Перечень опций приведён в конце поста. После перезапуска Xorg на мониторе устанавливается желанное разрешение — но проблемы на этом не заканчиваются.

Софт

На мониторе непривычно мелкий текст. Почему? Система рассчитывает физический размер шрифта по количеству точек на дюйм (DPI), переданного монитором в EDID. Но мы отключили EDID, да его и не было. Поэтому истинный DPI остался системе неведом, и она использует наиболее распространённое значение 96 DPI. На самом деле, в указанном мониторе DPI равно 109.

Примечание: DPI напрямую не указан в спецификации монитора. Его можно рассчитать несколькими способами по другим показателям. В спецификации ошибочно указана ширина активной области (569.736 вместо 596.736 мм), поэтому при расчёте по ширине у доверчивых пользователей получится 114 вместо 109.

Установка DPI, как и всё предыдущее, ложится на плечи пользователя. В xorg.conf есть опция задания DPI. Кажется, она не работает, но лучше оставить, вдруг какие-то программы обратят внимание на неё. То, что работает явно и сразу — это задание DPI через xrandr:

xrandr --dpi 109
или
xrandr --fbmm 597x336
(правильные размеры рабочей области в миллиметрах).

Автозапуск этой команды имеет смысл делать после загрузки Xorg; например, в файле .xinitrc (более того, автору неизвестны никакие другие файлы, в которых добавление этой команды даёт ожидаемый результат). Итак, на мониторе теперь шрифты привычного размера. Везде, кроме браузера Google Chrome.

Проблема этого браузера в том, что он игнорирует системные настройки DPI. Собственной настройки DPI он также не имеет, считая DPI равным 96, в любую погоду.

Перекос Chrome в сторону меньшего DPI может исправить увеличенный дефолтный параметр зума (недефолтный зум регулируется кнопками Ctrl_+ и Ctrl_-, а дефолтный включается по Ctrl_0). Вычисляем требуемое значение: 109/96 ≈ 114%, идём в настройки браузера, находим там опцию «Page zoom» и обнаруживаем, что 114% в ней не поставить. В меню есть 110% или 125%. Но разве нас это остановит после всех мучений? Вызываем Inspect для меню, добавляем в него нужный пункт (или подменяем имеющийся) и выбираем. При перезапуске Chrome значение 114% исчезнет из меню зума — но сам зум останется на 114% и будет компенсировать неверное значение DPI.

Приложение: xorg.conf

Настройки собраны с форумов и могут быть избыточны; но зачем тратить время на выявление лишних, если конструкция в целом работает.

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "DELL U2717D"
    HorizSync       30.0 - 88.0
    VertRefresh     50.0 - 75.0
    Option         "DPMS"
    Option         "DPI" "109 x 109"
    Modeline "2560x1440"  162.77  2560 2688 2960 3360  1440 1441 1444 1468  -HSync +Vsync
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTS 450"
    Option         "ModeValidation" "NoEdidModes, AllowNonEdidModes, AllowNon60HzDFPModes, NoMaxPclkCheck, NoEdidMaxPclkCheck, NoHorizSyncCheck, NoVertRefreshCheck, NoEdidDFPMaxSizeCheck, NoPredefinedModes"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "UseEDID" "False"
    Option         "UseEDIDDPI" "False"
    Option         "UseEDIDFreqs" "False"
    Option         "ExactModeTimingsDVI" "True"
    Option         "metamodes" "2560x1440 +0+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    Option         "DPI" "109 x 109"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

четверг, 8 сентября 2016 г.

Новый сайт ИПА РАН

Институт прикладной астрономии, в котором я работаю пять лет, обзавёлся новым сайтом на новом домене: http://iaaras.ru.

воскресенье, 17 января 2016 г.

Лазерная локация Луны

— Американцы не летали на Луну
— Как? Совсем?
— Совсем!
— А фотографии?
— Подделаны
— А доставленный грунт?
— А ты его видел?
— А фото посадочных модулей на луне?
— Это макеты. Их туда специально поставили
— Кто?!
— Ты чо тупой? Американские астронавты и поставили!

(анекдот)

Расстояние от Луны до Земли — около 384 тыс. км., это в 30 раз больше диаметра Земли и в 960 раз больше высоты орбиты Международной космической станции. Луна заняла прочное место в научно-фантастических сюжетах — как обитаемая база с космодромом для запусков ракет в Солнечную систему и как месторождение Гелия-3 для термоядерных реакторов.

Смотритель лунного горнодобывающего комплекса в фильме «Луна» 2009 г.

В реальности ничего этого нет, а экспедиции на Луну прекратились более 40 лет назад. Тем не менее, Луна служит базой для научных экспериментов, в которых удалённость спутника от Земли скорее помогает, чем мешает. Наша планета мала; для многих физических и астрономических исследований требуется лаборатория, превосходящая её по размерам. Ниже пойдёт речь о том, как Луну сделали частью такой лаборатории.

Ретрорефлекторы

Уголковый отражатель (corner cube) представляет собой три плоских отражающих поверхности, пересекающиеся под прямым углом. Луч света, попавший в такую конструкцию, отразится по одному разу от каждой из трёх сторон и уйдёт в направлении, противоположном исходному. Отражатель не требует электроэнергии и обслуживания; если на Луне установить отражатель, а в обсерватории на Земле — лазер, оптический телескоп и высокоточные часы, то можно будет регулярно измерять время хода луча от обсерватории до отражателя и обратно (от 2 до 2.7 секунд).


Ненаучное использование лунных отражателей. Источник: xkcd.

Первая высадка людей на Луну состоялась 20 июля 1969 г. во время экспедиции «Аполлон 11». Время пребывания астронавтов на поверхности было ограничено; из всевозможных предметов и устройств, которые человечество желало установить на Луне, при планировании миссии было выбрано три наиважнейших: панель уголковых отражателей (Laser Ranging Retroreflector, LRRR), сейсмограф и американский флаг. Все три объекта были успешно установлены; сейсмограф выработал свой ресурс через 3 недели, а ретрорефлектор функционирует по сей день. Флаг, вероятно, тоже.

Ретрорефлектор в правой руке Базза Олдрина и на поверхности Луны. Источник: NASA.

Космическая гонка шла полным ходом; уже 10 ноября 1970 г. произошло очередное историческое событие: посадка на Луну космического аппарата «Луна-17» с управляемым «Луноходом-1». Аппарат был сделан в СССР; единственной импортной частью была панель из 14 уголковых отражателей, сделанная французской фирмой «Aérospatiale».


Слева: Луноход. Справа: лазерный отражатель, установленный на передней части Лунохода (модель).

Впоследствии ещё две панели были установлены участниками экспедиций «Аполлон 14» и «Аполлон 15» в 1971 г, и последняя прилунилась вместе с «Луноходом-2» на космическом аппарате «Луна-21» в 1973 г. Таким образом, на Луне есть пять ретрорефлекторов. Все они установлены в различных районах. Наибольший по площади ретрорефлектор — «Аполлон 15», содержащий 300 уголковых отражателей диаметром 3.8 см (его предшественники содержали по 100 отражателей).


Слева: ретрорефлектор «Аполлона-15» (источник). Справа: карта лунных ретрорефлекторов.

Отражатели медленно деградируют; по оценкам 2010 г. они отражают в 10 раз меньше фотонов, чем в начале эксплуатации. Высказываются различные гипотезы о причинах деградации, наиболее вероятной считается лунная пыль.

Обсерватории

Лазерная локация Луны осуществлялась и до «Аполлона-11». За неимением ретрорефлекторов телескопы улавливали фотоны, отражённые от лунного грунта. Первые успешные эксперименты были проведены в 1962 г. сначала в Массачусетском технологическом институте, а затем в Крымской астрофизической обсерватории. В 1965 г. были получены наблюдения, имевшие погрешность 200 метров — и эта погрешность обуславливалась рельефом Луны, а не оборудованием обсерватории. С 1969 г. и далее локацию вели уже по отражателям, а не по грунту. Погрешность уменьшилась до 3 метров и продолжала падать по мере совершенствования лазеров. Наблюдения в КрАО прекратились в 1983 г. в связи с закрытием лунной программы СССР.

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

Обсерватория Расположение Период наблюдений Примечания
McDonald Техас, США 1970–н.в. Изначально наблюдения проводились с рубиновым лазером и телескопом диаметром 2.7 м. С 1983 г. проводились наблюдения на отдельной площадке «McDonald Laser Ranging Station» (MLRS) с YAG-лазером и телескопом диаметром 0.76 м. В 1988 г. MLRS была перемещена с перевала на гору Mt. Fowlkes
Haleakala Гавайи, США 1984–1990 Лазерная локация Луны была прекращена, однако обсерватория продолжает осуществлять лазерную локацию искусственных спутников Земли.
Observatoire de la Côte d’Azur (OCA) Лазурный берег, Франция 1984–н.в. Изначально наблюдения проводились под управлением Исследовательского центра в области геодинамики и астрометрии (Centre de recherches en géodynamique et astrométrie, CERGA). В 1986 г. рубиновый лазер был заменён на YAG, а в 2009 начал работу MeO-лазер.
Matera Базиликата, Италия 2003–н.в. Лазерная локация Луны проводится редко.
Apache Point Нью-Мексико, США 2006–н.в. Обсерватория выдаёт самые точные на сегодняшний день наблюдения лазерной локации Луны: погрешность составляет от 2 до 10 мм.

Станции лунной лазерной локации, регулярно проводящие или проводившие наблюдения

В начале 1970-х гг. попытки наладить лазерную локацию Луны предпринимались в Японии (обсерватория Окаяма) совместно с компанией Хитачи, однако работы были остановлены после прекращения финанасирования. Также наблюдения лунной лазерной локации проводились в Австралии в обсерватории Оррорал с 1972 по 1998 г. Имеется статья про обработку этих наблюдений, но сами наблюдательные данные недоступны. Во Франции до CERGA были попытки создания станции лунной лазерной локации в обсерватории Пик-дю-Миди, не увенчавшиеся успехом. В Германии, в многоцелевой геодинамической обсерватории около г. Ветцель были получены пробные измерения лунной лазерной локации, но регулярных измерений в этой обсерватории не проводится.


Лазерная локация Луны в обсерватории Apache Point. Автор: Dan Long. Источники: Википедия, NASA.

В настоящее время строится станция лунной лазерной локации в ЮАР, в сотрудничестве с OCA и NASA; а также в России, в Алтайском оптико-лазерном центре, по заказу Федерального агентства по техническому регулированию и метрологии.

Эксперимент

Неудачи или скудные результаты многих обсерваторий в лазерной локации лунных отражателей неслучайны. Краткий перечень основных трудностей эксперимента:
  • Наведение лазера и принимающей оптической системы необходимо осуществлять по звёздам или по лунным кратерам; необходимо слежение в реальном времени за движущейся Луной с учётом упреждения на время хода луча (от 1 до 1.3 секунд в одну сторону).
  • Фокусировка исходящего луча достигает в лучшем случае 1 угловой секунды в расходимости луча; при отражении возникает дифракция, и на Землю луч приходит в виде пятна диаметром 15 км. Лишь несколько фотонов в конечном итоге попадут в телескоп.
  • Кроме отражённых фотонов, в телескоп попадают (и это подавляющее большинство) «мусорные» фотоны от лунного грунта и земной атмосферы. Для борьбы с ними ограничивают период времени приёма (строб) и фильтруют принимаемые фотоны по длине волны, но и этого недостаточно; после сеанса измерений наблюдения подвергают статистической обработке, при которой уже окончательно отделяют истинные наблюдения от мусора.
  • Пульс лазера должен быть достаточно коротким, чтобы обеспечить хорошую точность наблюдений, и при этом достаточно мощным, чтобы содержать достаточное количество фотонов (не меньше 300 квадриллионов).
  • Для калибровки наблюдательных данных на телескопе требуется установка опорного отражателя; часть испускаемого луча отражается от него и обрабатывается теми же средствами, что и основные наблюдения.
  • Наблюдения при облачности или сильном ветре невозможны.
  • Зачастую невозможны наблюдения в дневное время суток или наблюдения отражателей, находящихся на освещённой части лунного диска.

Схема эксперимента. Автор: Том Мёрфи.

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

Модель, используемая при статистической обработке первичных наблюдений, должна содержать:
  • метеорологические параметры, от которых зависит время задержки световой волны в атмосфере Земли;
  • приблизительные (предвычисленные) данные об орбитально-вращательном движении Луны;
  • угол наклона ретрорефлекторных панелей (влияет на вероятностное распределение фотонов, отразившихся от различных угловых отражателей в панели);
  • неизвестные (определяемые в ходе обработки) поправки к показаниям регистрационных приборов станции.
В результате обработки серии наблюдений лунного отражателя формируется т.н. нормальная точка (normal point), содержащая время полёта некоторого «виртуального» фотона на некоторый момент времени. Нормальная точка имеет погрешность, вычисляемую в ходе обработки серии. Чем больше фотонов обработано в серии, тем меньше погрешность полученной нормальной точки.

В различных обсерваториях могут использоваться различные алгоритмы формирования нормальных точек. Алгоритмы, применяемые в Apache Point, изложены в диссертации одного из сотрудников.
Нормальные точки, в свою очередь, подвергаются обработке более высокого уровня (как правило, не в обсерваториях, а в специализированных научных центрах). При такой обработке учитываются внешние физические факторы, неизменные в процессе обработки сессии:
  • положение станции на Земле и отражателя на Луне;
  • дрейф станции (сантиметры в год);
  • смещение станции из-за твердотельных приливов от Солнца и Луны (десятки сантиметров);
  • смещение станции из-за океанических приливов (сантиметры);
  • смещение отражателя из-за твердотельных приливов от Солнца и Земли (сантиметры);
  • задержка света из-за гравитационного искривления пространства крупными телами (метры) и другие релятивистские эффекты.

Орбитально-вращательное движение Луны

Траектория фотона рассчитывается в инерциальной системе отсчёта, началом которой является барицентр Солнечной системы. В этой системе обсерватория и отражатель находятся в движении. Движение обсерватории складывается из движения Земли по орбите и вращения Земли; движение отражателя, соответственно — из орбиты Луны и вращения Луны.

Схема движения фотона в инерциальной системе отсчёта (источник).

Обработка наблюдений лазерной локации позволяет вычислить траекторию орбитально-вращательного движения Луны на длительном интервале времени (например, на 100 лет до и после периода наблюдений). Такая вычисленная траектория называется эфемеридой. Эфемерида Луны имеет большое значение при расчёте орбит искусственных спутников Земли, в частности навигационных спутников GPS и ГЛОНАСС: Луна возмущает их орбиты, и наличие эфемериды Луны позволяет смоделировать эти возмущения. Точность рассчитанных орбит навигационных спутников оказывает прямое влияние на точность позиционирования.

Луна гравитационно связана не только с Землёй, но и c Солнцем и с планетами — и вычисление её эфемериды, как правило, делается совместно с обработкой планетных наблюдений и вычислением эфемерид Солнца и планет. В мире существует всего три организации, выпускающие эфемериды тел Солнечной системы:
  1. Лаборатория реактивного движения (Jet Propulsion Lab) в Калифорнии (подразделение NASA) выпускает эфемериды JPL DE (Development Ephemeris).
  2. Институт прикладной астрономии РАН в Санкт-Петербурге выпускает эфемериды EPM (Ephemerides of Planets and Moon).
  3. Институт небесной механики и вычисления эфемерид (Institut de mécanique céleste et de calcul des éphémérides) в Париже выпускает эфемериды IMCCE INPOP.
Эфемериды распространяются бесплатно и обновляются примерно раз в год; новые версии отличаются от старых обработкой свежих наблюдений и более точными орбитами, которые удалось получить благодаря этим наблюдениям.

Смежные эксперименты

При обработке наблюдений лунной лазерной локации важно располагать как можно большей информацией о поведении Земли во время эксперимента: как Земля ориентирована в инерциальной системе, насколько сместилась обсерватория под действием приливов, как изменилось гравитационное поле Земли под действием тех же приливов. Эту информацию можно извлечь из специализированных наблюдений:
  • радиоинтерферометрия со сверхдлинными базами (РСДБ)
  • радиотехнические наблюдения GPS и ГЛОНАСС
  • лазерная локация искусственных спутников Земли
  • альтиметрия и другие


Лазерная локация Луны и смежные виды наблюдений. Источник: HartRAO.

Нельзя не упомянуть о блестящем эксперименте GRAIL: два спутника, кружась вокруг Луны в течение 2012 г., измеряли расстояние друг до друга, улавливая «горы» и «впадины» гравитационного поля Луны, после чего запланированно упали на Луну, оставив науке беспрецедентно точные данные о лунном гравитационном поле.


Космические аппараты GRAIL в неоднородном гравитационном поле Луны. Источник: NASA.

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

Интересную роль в лазерной локации Луны сыграл космический аппарат «Lunar Reconaissance Orbiter» (LRO), запущенный в 2009 г. и передающий на Землю фотографии лунной поверхности, сделанные с близкого расстояния. Дело в том, что местоположение первого «Лунохода» с 1971 г., после потери связи с ним, не было известно. Лазерная локация «вслепую» не давала результатов, и в итоге попытки использовать отражатель «Лунохода-1» для науки были оставлены. Высказывались даже печальные предположения о том, что панель с отражателями, установленная на аппарате, сбилась и направлена таким образом, что лазерная локация её с Земли невозможна. Но в марте 2010 г., изучая публично доступные снимки LRO, сотрудник ГЕОХИ РАН Альберт Абдрахимов обнаружил небольшое пятно, напоминающее Луноход и находящееся в районе его возможного пребывания.


«Луноход-1» на снимке LRO. Источник: NASA.

Уже в апреле 2010 г. Том Мёрфи из обсерватории Apache Point успешно провёл измерения лазерной локации потерянного Лунохода. Его координаты были уточнены. Выяснилось, что аппарат находится на расстоянии 5 км от ранее предполагаемой точки, и его отражатель в хорошем состоянии. С тех пор «Луноход-1» наблюдается всеми обсерваториями наравне с другими четырьмя отражателями. Это единственный отражатель, находящийся в северо-западной части лунного диска; введение его в строй позволило значительно повысить качество наблюдательных данных в целом.

Полученные фундаментальные результаты

  • Луна удаляется от Земли примерно на 38 мм в год, а её орбита становится более вытянутой. Причина этому — диссипация энергии из-за приливных эффектов, возникающих в Луне и Земле при действии их друг на друга. Изучение эволюции орбиты нашего спутника обогащает знания людей о том, как формировалась уникальная система «Земля-Луна».
  • У Луны есть жидкое ядро. «Лунотрясения» были обнаружены ещё сейсмографами, установленными американскими астронавтами, однако оставались сомнения относительно того, происходят ли они из-за геологической активности Луны или из-за приливных деформаций. В 2001 г. была предложена модель Луны с жидким ядром, которая великолепно объяснила сложное вращательное движение Луны, определяемое по лазерным измерениям.
  • С недостижимой ранее точностью были подтверждены постоянность скорости света и постоянность гравитационной константы.
  • Было обнаружено, что сильный принцип эквивалентности и общая теория относительности (ОТО) не нарушаются, в пределах точности лазерных измерений.

Будущие эксперименты и исследования

Точность лазерных наблюдений сегодня такова, что разработанная модель вращательного движения Луны не может предсказать всех наблюдаемых колебаний вращения. (Аналогичная ситуация, кстати, и с Землёй — но поправки к параметрам вращения Земли определяются из ежедневных РСДБ-наблюдений.) Сейчас в лабораториях мира ведётся разработка более точных моделей внутреннего строения Луны, учитывающих резонанс колебаний в лунной коре, приливную диссипацию энергии и другие эффекты. Эксперимент GRAIL позволил определить, что главные моменты инерции Луны рассогласованы с системой координат лунной коры — и это обстоятельство также не отражено в имеющейся модели. Создание новой модели сообщит новую информацию о физике процессов, происходящих на границе между корой и ядром.


Гипотеза о внутреннем строении Луны. Источник: NASA.

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


Транспондер посадочного аппарата «Чанъэ-2» (источник).

Были осуществлены радиолокационные наблюдения «Чанъэ-3», но использование этих результатов совместно с результатами лазерных наблюдений и современными моделями движения Луны пока не состоялось; сам «Чанъэ-3» прекратил работу в 2015 г. В будущем, при наличии транспондеров на последующих китайских «Чанъэ-4» и «Чанъэ-5» и других аппаратах, станет возможной круглосуточная радиолокация Луны многими радио-обсерваториями. Количество полученных наблюдений позволит компенсировать большую погрешность и достичь миллиметровой (лазерной) точности определения положения Луны.

Локационные наблюдения — радио- или лазерные — обладают низкой чувствительностью к положению Луны на орбите. Несмотря на миллиметровую точность лазерных наблюдений, реальная погрешность орбиты Луны в эфемериде составляет не меньше метра. Реальная погрешность расстояния до Луны — не менее 30 см. В модели эта погрешность «уходит» в координаты отражателей — сказывается то обстоятельство, что все отражатели расположены на одной (видимой) стороне Луны. Можно поставить эксперимент, который позволит преодолеть это ограничение: РСДБ-наблюдения квазаров лунным радиотелескопом совместно с земными. Да, для этого потребуется развернуть на поверхности Луны радиотелескоп. Но такой проект принесёт массу научных результатов, среди которых уточнённая орбита Луны будет далеко не основным.

Внеземные радиотелескопы необходимы для повышения точности инерциальной системы отсчёта по сравнению с нынешней реализацией (International Celestial Reference Frame, ICRF), основанной на земной сети радиотелескопов. Единственным действующим внеземным радиотелескопом является «Радиоастрон», созданный в АКЦ ФИАН. Этот 10-метровый радиотелескоп на земной орбите используется для астрофизических исследований, но неприменим для задач, связанных с построением систем отсчёта, из-за своей нестабильной орбиты.

«Радиоастрон» (или его полноразмерная модель?). Источник: АКЦ ФИАН.

Радиотелескоп, расположенный на Луне, позволит повысить точность инерциальной системы на порядок, при этом связав эту систему (через Луну) с остальными планетами. Такая система облегчит навигацию космических аппаратов в межпланетном пространстве, а также позволит провести массу новых фундаментальных исследований, которые она позволит провести: проверка тонких эффектов ОТО, изучение тёмной материи и движения Солнца в галактике, и другие; не говоря уже о том, что использование лунного радиотелескопа совместно с «Радиоастроном» сулит более точные астрофизические данные.

Идея создания земно-лунного радиоинтерферометра высказывалась ещё в 1985 г. Джеком Бёрнсом из Университета Нью-Мексико. Предложения поступают и в наши дни, но конкретных планов по созданию лунного радиотелескопа пока нет. Джек Бёрнс сейчас возглавляет сеть американских университетов по лунным астрофизических исследованиям. С Луной (а точнее говоря, с обратной стороной Луны) действительно связано много проектов астрофизических исследований, но это уже совсем другая история.

Мечты 30-летней давности: радиотелескопы на Луне (источник).

Автор благодарен С. Л. Курдубову (ИПА РАН) за многочисленные дискуссии, предшествующие написанию данной статьи.


Литература

Е. Ю. Алёшкина. Лазерная локация Луны. Природа, № 9 (2002).
Ю. Л. Кокурин. Лазерная локация Луны. 40 лет исследований. Квантовая электроника, 33, № 1 (2003).
Ю. Л. Кокурин, Л. А. Ведешин. Советско-французский эксперимент по лазерной локации Луны. Вестник АН СССР, 33, № 6 (1971).
Tom Murhpy. The Basics of Lunar Ranging.
James G. Williams, Dale H. Boggs, Slava G. Turyshev, J. Todd Ratcliff. Lunar Laser Ranging Science. Proceedings of 14th International Workshop on Laser Ranging (2004).