21 ноября 2011 в 14:23

Делаем календари в разных системах счисления

image Каждый год, 31 декабря, уважаемый хабраюзер anatoly_rr выкладывает вот такой календарик. В этом году мне понадобился подобный календарь немного более заблаговременно, поэтому пришлось постараться самому. Процесс баловства со скриптом на python увлек меня и получился небольшой генератор календарей на свой вкус и цвет. Мне столько не нужно, поэтому решил поделиться :)
Сразу отмечу, что с Анатолием я связывался и по-поводу использования его скрипта, и по-поводу данной публикации.

Теперь немного подробнее


Генератор умеет несколько систем счисления:
  • Шестнадцатеричная
  • Десятичная
  • Девятеричная (симметричная)
  • Восьмеричная
  • Троичная (симметричная)
  • Двоичная

Дополнительно

  • Можно задать цвета фона, года, дня недели, выходных и прочего. Есть несколько предустановленных вариантов расцветок для совсем ленивых.
  • Форматы вывода SVG, PNG, PDF.
  • Генерируемые года — 2011-2015.
  • Язык русский и английский (перевод заказывал фрилансеру).
  • Можно дать кому-нибудь прямую ссылку на результат.
Так же можно сгенерировать шаблоны для вырезки и склейки куба и додекаэдра. На кубе располагаются сразу 6 календарей на выбранный год во всех имеющихся системах счисления. По одному на каждую сторону. А на додекаэдре по одному месяцу выбранного года на каждой стороне. Честно сказать, кубик мне не очень понравился — мелковато все как-то (зато компактный), а вот додекаэдр порадовал. С учетом того, что он клеится из двух частей — можно эти части сделать разного цвета. На мой взгляд, выходит красиво.

А еще сделал «Календарь Майя». Статья на Ферре о данном генераторе календариков несколько раз напоминает нам о том, что 2012-й год является достаточно значимым в контексте очередного конца света. Заинтересовался данной темой. Цитирую из википедии: «Исходной точкой зрения для рассуждений по поводу «конца света» служит длинный счёт календаря майя, по которому на декабрь 2012 года приходится окончание текущего бактуна». Т.е. всему виной является этот календарь. Слегка углубившись все в ту же википедию, выяснил, что каледарь майя основывался на двацатеричной системе счисления и это неплохо вписывается в концепцию генератора. Конечно же, вместо привычных нам цифр, используются свои символы. Но надо понимать, что в реальности календарь майя был совсем другим и у меня представлен наш обычный календарь, просто в системе счисления майя.

Как это работает


Изначально календари генерил непосредственно скрипт на python. Потом немного переделал и теперь это просто несколько шаблонов, где изменяются нужные цвета перед выводом. С PNG и PDF все чуть-чуть сложнее — генерацией файлов в этом формате занимается inkscape. Сервер вроде как без проблем справляется, не тупит.

Как это не работает


Не работает отображение SVG для предпросмотра результата в IE и старых версиях браузеров.

Использованные материалы


Шестнадцатеричная система
Десятичная система
Девятеричная (симметричная) система
Восьмеричная система
Троичная (симметричная) система
Двоичная система
trinary.ru
Конец света
Цифры майя

Ну и немного фоток моего рукодельничества


Выбор блога для публикации («Сделай Сам») обусловлен именно наличием вот этих вещественных результатов. Магнитики на холодильник, карманные календари, напечатанные на пластике с помощью специального принтера Eltron P310 Card Printer — демонстрировать не буду, а вот бумажными фигурами похвастаюсь:

image

image

image

image


Еще раз ссылка, чтобы не крутить вверх.
Антон @passerby
карма
89,0
рейтинг 0,0
Самое читаемое

Комментарии (32)

  • 0
    Я правильно понимаю, что календарь в восьмеричной система расположен на октаэдре?
    • +1
      На фотографии? Да, в восьмеричной. Только все-таки на додекаэдре
      • 0
        А, понял, спасибо. Как то было бы странно 12 месяцев уместить на 8миграннике.
  • 0
    Хм. Надо каждому сотруднику в конторе выдать календарь в собственной системе счисления. Производственный процесс порадует ;-)
  • +2
    спасибо :)
    • 0
      Не за что, пользуйтесь на здоровье :)
  • 0
    Под Chrome для Mac OS X у меня на svg к сожалению получается другой шрифт. Из под винды ваш календарь круче выглядит.
    • 0
      В SVG шрифт задается и логично, что у вас нет виндовых шрифтов. И картинка, которая генерится в PNG по тем же причинам другой шрифт имеет.
      • 0
        Я догадался. Вы могли бы это каким нибудь font-squirrel'ом унифицировать или позволить пользователю выбрать свой шрифт.
        • 0
          Можно будет и так сделать.
  • +3
    Красота! ;)
    • 0
      Спасибо :)
  • 0
    Благодарю. Подправлю только перенесенные праздники и в печать.
  • +4
    А можно как-нибудь подсвечивание праздников отключить? А лучше всего — сделать возможность отметить свои праздники на календаре. Хотя это наверное проще сделать, редактируя SVG.
  • +1
    Календарь на додекаэдре гениален, спасибо огромное! Вырежу и склею как только доберусь до принтера.
    И да, соглашусь с тем, что крайне полезна была бы возможность задавать свой список праздников.
    • +1
      Ответ сразу на три последних коммента, насчет праздников. Сделаю.
  • –1
    А можно исходный код Вашего генератора. Ваш код основан на чужом GPL коде, поэтому Вы обязаны выложить свой код под той же GPL лицензией.
    • +1
      Там, собственно, выкладывать-то нечего. Как я писал — сейчас никакой скрипт ничего не генерит, просто шаблоны svg. А для шаблонов использовался скрипт anatoly_rr. Вот Ссылка на скрипт.
  • 0
    Мне кажется для календаря идеальной будет 32-ричная система, ну а что, любой день будет записан одной цифрой.
    • 0
      Одна цифра все-равно не получится.
      • 0
        0..9 A..U — 31 знак уже есть
        • 0
          И правда. Видимо я спросоня что-то не так понял :)
  • +2
    А почему в случае с календарем Майя, дальше 21 декабря не пусто?
    • 0
      Потому что я оптимист :)
      • +1
        Сделайте пессимистический вариант, если возможно )
        • +2
          Не могу — жена съест. Она меня и за название «Апокалипсис» в «темах» весьма неодобрительно смотрела :)
          • 0
            Очень жаль.
  • 0
    Хабраэффект настал.
    • +2
      Проверил, работает. А что-то не так было?
  • 0
    В шестнадцатеричной СС дни недели в двоичной или так и надо? По мне так даже лучше
    • 0
      Так в оригинале было. Решил оставить как есть.
  • 0
    А для офисного планктона можете добавить названия месяцев и дней буквами? Очень удачный календарик, но этого не хватает. Спасибо!

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.