азербайджанец (sushilshik) wrote,
азербайджанец
sushilshik

Таймлайны



http://nkbtr.org/timelines

Давно собирался написать скриптец для генерации таймлайнов. Вроде бы в инете уже есть куча сайтов с сервисами создания таймлайнов, с возможностью коллективной редактирования. Но до идеала им далеко. Например, стили и интерфейсы онлайн-таймлайнов обычно фиксированные, то есть под себя не настроишь. Механизмы коллективной работы самопальные, а хотелось бы что-то вроде git, то есть знакомую, профессиональную систему контроля версий. В итоге за несколько вечеров накодил мечту — https://github.com/sushilshik/timelines.

А история началась с того, что года полтора назад нужно было иллюстрировать пост таймлайном. Начал в Illustratorе чертить, получилось аккуратно и наглядно. Но было ясно, что вручную рисовать даты и интервалы все же слишком медленно, а поэтому процесс надо автоматизировать. И наконец руки дошли. Скрипт запускает Adobe Illustrator и согласно содержимому текстового файлика со списком дат рисует в Illustratore таймлайн — шкалу лет, а над ней ставит прямоугольнички-плашки событий, каждая плашка стоит как раз над своим местом на временнОй шкале таймлайна. Потом рисунок сохраняется в PDF файл. Чтобы добавить новую дату на таймлайн, нужно просто дописать строчку в текстовый файлик с «исходным кодом» таймлайна и опять запустить скрипт-построитель, который пересоздаст PDF файл. Для каждого таймлайна свой текстовый файл с «исходным кодом» — с конфигами и списком дат. Например, на основе данных из файла 1930-1947.txt строится таймлайн о Второй мировой войне, событиях ей предшествующих и последующих ей. На гитхабе в одном репозитории вместе лежат и файлы с «исходными кодами» таймлайнов и скрипты, которые строят изображения таймлайнов на основе этих «исходных кодов». Как говорится, делайте форк и добавляйте свои даты в таймлайны.

Чтобы строить таймлайны на своем компьютере — нужен Illustrator СС 18 (скрипты писал под него на windows 7) и ruby 2.2. В файле timeline.rb пропишите переменной illustrator_exe путь до файла illustrator.exe в вашей системе. Откройте cmd.exe и в директории проекта запустите команду «ruby timelines.rb 1913-1924.txt». Из «исходников» файла 1913-1924.txt построится таймлайн о первой мировой, революции и гражданской. Код «наколеночный» — you are warned. And you are welcome.

А почему не в Inkscape, или не сразу в SVG, или вообще в TeX? В принципе ничто не мешает потом написать скрипты, которые на основе «исходников» таймланов будут строить схемы в перечисленных форматах. Потом. А причина выбора Illustrator, во-первых, в возможности в перспективе отправить pdf (или ai файл — в скрипте можно включить сохранение в .ai) сразу в издательство без лишних проволочек, во-вторых, в Illustrator есть встроенный стиль OuterGlow (Внешнее свечение) — им удобно оформлять плавно-высветляющим свечением плашки событий на таймлайне, размывая объекты вокруг плашки, в результате уменьшается ощущение скученности, «толкания локтями» элементов, свойственное насыщенным схемам.

Некоторые важные для понимания истории периоды не имеют дат известных с точностью до дня. Поэтому, если даты приблизительные, спорные, то в подписи события добавляем в скобках тире и по соответствующие от него стороны буковки d или m, которые и означают неточную дату. Например, первый день бомбардировки Лондона ракетами Фау-1 известен, а последний — нет, поэтому указываем «(-d)». Если бы и первый день не был известен точно, то написали бы «(d-d)». Если обе даты точные — пояснения не нужны. Если и день и месяц в году не известны точно — пишем, например, «(m-)». Если день месяца не определен, то в «исходном коде» пишем 15-ый день, если аналогичная ситуация с месяцем, то прописываем «07» (июль). Если более-менее точный день или месяц известны, но вы не уверены — указываете известную цифру, но все равно добавляйте пометку. Для описываемых одной датой исторических событий в аналогичных случаях ставим пометку в скобках, но уже без тире, например «(d)». Эти правила не окончательные, будем вместе дорабатывать.

Пример формата строки периода «17.07.1942,02.02.1943, Сталинградская битва, 35, g». Перед номером дня или месяца ставим «лидирующий» ноль. Запятые являются частью формата, поэтому в названии события их не должно быть, иначе скрипт не отработает. Формат будем еще совершенствовать. Если у нас не период, а событие описываемое одной датой, то между первой и второй запятой не должно быть знаков или пробелов, например, «12.04.1961,,Полет Гагарина,50,g». Цифра после третьей запятой означает расстояние от временной шкалы по вертикали в процентах, иначе говоря, от 0 до 100 и чем больше, тем выше. Пока в основном располагаю события по высоте с учетом удобства и наглядности, а не их исторической важности. Буква «g» означает календарную шкалу относительно которой которой должно быть расположено событие, в данном случае это код григорианского календаря, но функция пока еще не реализована.

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

С Новым Годом! =)
Tags: таймлайны
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments