Comments 31
UFO just landed and posted this here
Уже сделал себе додекаэдр
0
В заголовке не хватает интервала в unix time. В шестнадцатеричной форме, разумеется.
То есть 0x7DE(0x52c32240 — 0x54a455bf)
То есть 0x7DE(0x52c32240 — 0x54a455bf)
+3
Ждал этот пост в 12:00. С Новым годом!
+1
Ура! Спасибо! С наступившим 7DE!
Творческих успехов в новом году!
Творческих успехов в новом году!
0
Что у меня не работает :(
PNG и PDF файлы нулевого размера…
PNG и PDF файлы нулевого размера…
0
Странно! Проверил, все должно отлично качаться.
0
Я пытался через генератор календаря сделать свой календарь и скачать.
А эти 16-ричные календарики в топике, да, качаются.
А эти 16-ричные календарики в топике, да, качаются.
0
+3
Скажите, а нищебродам с лазерными принтерами полагается удобочитаемая ч/б версия?
+1
Спасибо, повесил на стену. Будет повод наконец довести 16-ричный счёт до автоматизма :)
+1
Вот версия на tikz: PDF.
Начальный код был очень простым, таким и остался: tikz.tex
Но пришлось влезть в библиотеку pgfcalendar и добавить туда своё представление чисел.
Генерация календаря на следующий год требует лишь перекомпиляции файла в новом году =) или небольшой модификации кода.
Скрытый текст
Начальный код был очень простым, таким и остался: tikz.tex
Но пришлось влезть в библиотеку pgfcalendar и добавить туда своё представление чисел.
Генерация календаря на следующий год требует лишь перекомпиляции файла в новом году =) или небольшой модификации кода.
+3
Ещё интересно было бы число в 36-ричном формате, чтоб одной «цифрой». Я такой формат уже лет 15 употребляю…
0
Прикольно было бы версию в SVG (с JS), которая использует текущий год…
+1
Решил сгенерить себе. Скачал Python33 (при установке прописал путь к python.exe в PATH)
Запускаю его (в cmd просто указываю имя py файла)
ps: хочу сделать версию для белорусов
Запускаю его (в cmd просто указываю имя py файла)
d:\>svg_calendar.py
File "D:\svg_calendar.py", line 187
print c.render()
^
SyntaxError: invalid syntax
ps: хочу сделать версию для белорусов
0
на питоне 2.x работает.
PS: а чем версия для белорусов будет отличатся?
PS: а чем версия для белорусов будет отличатся?
+1
с питоном 2.7 получилось
разные праздники :)
разные праздники :)
+1
вот версия скрипта для белорусов yadi.sk/d/xbx6OpPvFKXZv
или заменить строку 77 на
или заменить строку 77 на
self.holidays = [ (1,1),(1,2),(1,6),(1,7),(3,8),(4,29),(4,30),(5,1),(5,9),(7,3),(7,4),(11,7),(12,25),(12,26)]
0
универсальная версия скрипта (работает с питоном 3.3 и 2.7):
Скрытый текст
__author__ = "Anatoly Rr Burov (me@anatolyrr.ru)"
__version__ = "2014"
__date__ = "2014-12-31"
__license__ = "CC-BY"
from calendar import Calendar # used in render_month
class SvgCalendar:
def __init__(self, year):
self.year = year
font = 'Consolas'
self.style = {
'units': 'mm',
'width': 100,
'height': 70,
'border-color': '#ccc',
'year-color': '#666666',
'year-padding-top': 5,
'year-padding-left': 2,
'year-font-family': font,
'year-font-size': 5,
'month-width': 24,
'month-height': 21,
'day-width': 23.0 / 7.0,
'day-height': 12.0 / 5.0,
'month-margin-right': 0,
'month-margin-bottom': 0,
'month-font-family': font,
'month-font-size': 3,
'month-color': '#FF9525',
'month-padding-top': 3,
'month-offset-top': 5,
'week-padding-top': 6,
'week-font-family': font,
'week-font-size': 1.5,
'day-padding-top': 6,
'day-font-family': font,
'day-font-size': 2.5,
'day-color': '#000000',
'day-holiday-color': '#79B1D4',
'week-color': '#999',
'week-holiday-color': '#79B1D4',
}
self.year_name = "0x" + hex(year)[2:].upper()
self.month_names = [
'01', '02', '03', '04', '05', '06',
'07', '08', '09', '0A', '0B', '0C']
self.weekdays_names = ['001', '010', '011', '100', '101', '110', '111']
# self.days_names = [ "%02x" % (i + 1) for i in range (32)]
self.days_names = ["%02x" % (i + 1) for i in range(32)]
# well, actually holidays depend on the production calendar
self.holidays = []
self.not_holidays = []
if year == 2014: # got dates for 2012
# tuples (month, day)
self.holidays = [(1, 1), (1, 2), (1, 3), (1, 4),
(1, 5), (1, 6), (1, 7), (1, 8),
(2, 23), (3, 8),
(5, 1), (5, 2), (5, 3), (5, 9), (5, 10),
(6, 12), (7, 4), (11, 4), ]
self.holidays.append((4, 4)) # (4, 4) - Webmasters' Day
# last Friday of July is Sysadmin's Day
# Calculated for 2012 manually, have no time before publication to
# implement general case
self.holidays.append((7, 26))
# self.not_holidays = [(3,11), (4, 28), (6, 9), (12, 29)]
# 256th day of year is Programmers' Day
# leap year, I didn't bother with %100 and %400 years, sorry ;) We
# will not need them in the nearest 88 years anyway
if year % 4 == 0:
self.holidays.append((9, 12))
else:
self.holidays.append((9, 13))
def is_holiday(self, month, day, day_of_week):
if day_of_week in [5, 6]:
return (month, day) not in self.not_holidays
return (month, day) in self.holidays
def render_day(self, x, y, month, day, day_of_week):
svg = ''
if self.is_holiday(month, day, day_of_week):
color = self.style['day-holiday-color']
else:
color = self.style['day-color']
svg += ('<text x="%smm" y="%smm" font-family="%s" '
'font-size="%smm" fill="%s" text-anchor="middle">') % (
x + 0.5 * self.style['day-width'], y,
self.style['day-font-family'],
self.style['day-font-size'], color)
svg += '%s' % self.days_names[day - 1]
svg += '</text>'
return svg
def render_week(self, x, y):
svg = ''
svg += '<g>'
for i in range(7):
if i < 5:
color = self.style['week-color']
else:
color = self.style['week-holiday-color']
svg += ('<text x="%smm" y="%smm" font-family="%s" '
'font-size="%smm" text-anchor="middle" fill="%s">') % (
x + (i + 0.5) * self.style['day-width'], y,
self.style['week-font-family'],
self.style['week-font-size'], color)
svg += '%s' % (self.weekdays_names[i])
svg += '</text>'
svg += '</g>'
return svg
def render_month(self, x, y, month_no):
svg = ''
svg += '<g>'
svg += ('<text x="%smm" y="%smm" font-family="%s" '
'font-size="%smm" text-anchor="middle" fill="%s">') % (
x + self.style['month-width'] / 2,
y + self.style['month-padding-top'],
self.style['month-font-family'],
self.style['month-font-size'],
self.style['month-color']
)
svg += '%s' % (self.month_names[month_no - 1])
svg += '</text>'
svg += self.render_week(x, y + self.style['week-padding-top'])
day_of_week = -1 # will start from Monday
week_no = 0
c = Calendar(0)
for day_no in c.itermonthdays(self.year, month_no):
day_of_week = (day_of_week + 1) % 7
if day_of_week == 0:
week_no += 1
if day_no == 0:
continue # month not yet started
xx = x + self.style['day-width'] * (day_of_week)
yy = y + \
self.style['day-padding-top'] + \
week_no * self.style['day-height']
svg += self.render_day(xx, yy, month_no, day_no, day_of_week)
svg += '</g>'
return svg
def render_year(self, x, y):
svg = ''
svg += '<g>'
svg += ('<text x="%smm" y="%smm" font-family="%s" '
'font-size="%smm" text-anchor="middle" fill="%s">') % (
x + self.style['width'] / 2,
y + self.style['year-padding-top'],
self.style['year-font-family'],
self.style['year-font-size'],
self.style['year-color'])
svg += self.year_name
svg += '</text>'
for i in range(12):
xx = i % 4
yy = i // 4
svg += self.render_month(
x + xx * self.style['month-width'] +
xx * self.style['month-margin-right'],
y + self.style['month-offset-top'] +
yy * self.style['month-height'] +
yy * self.style['month-margin-bottom'],
i + 1
)
svg += '</g>'
return svg
def render(self):
svg = ''
svg += ('<?xml version="1.0" standalone="no"?>'
'<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" '
'"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'
'<svg width="%smm" height="%smm" version="1.1" '
'xmlns="http://www.w3.org/2000/svg"><desc>Calendar '
'2014</desc><g><rect x="0.25mm" y="0.25mm" '
'width="%smm" height="%smm" rx="2.5mm" fill="#fff" '
'stroke="%s" storke-width="0.5mm"/></g>') % (
self.style['width'], self.style['height'],
self.style['width'] - 0.75,
self.style['height'] - 0.75,
self.style['border-color'])
svg += self.render_year(self.style['year-padding-left'], 0)
svg += '</svg>'
return svg
import sys
if __name__ == '__main__':
c = SvgCalendar(2014)
# normal, 100x70 mm
if not 'a4' in sys.argv:
print(c.render())
# a4
else:
k = 3
c.style.update({
'units': 'mm',
'border-color': '#fff',
'width': 297,
'height': 210,
'year-padding-top': 6 * k,
'year-padding-left': 2 * k,
'year-font-size': 5 * k,
'month-width': 21 * k,
'month-height': 20 * k,
'day-width': 22.0 * k / 7.0,
'day-height': 10.0 * k / 5.0,
'month-margin-right': 9,
'month-margin-bottom': 1,
'month-font-size': 3 * k,
'month-padding-top': 5 * k,
'month-offset-top': 6 * k,
'week-padding-top': 9 * k,
'week-font-size': 1.5 * k,
'day-padding-top': 10 * k,
'day-font-size': 2 * k,
})
print(c.render())
+2
Этот календарик делал не программист а дизайнер
Мне кажется или надо было начинать с 00 а не с 01
А то так получается по 15 комбинаций
Мне кажется или надо было начинать с 00 а не с 01
А то так получается по 15 комбинаций
-1
Sign up to leave a comment.
Вам календарик 2014