38
ПРИВЕТ

Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ПРИВЕТ

Page 2: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ТЫ НЕ УМЕЕШЬ ПИСАТЬ НА ПИТОНЕ

правда правда

Page 3: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

Я ТОЖЕно стараюсь

Page 4: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ХВАЛЮ ЖИНЖУ• простая в использовании

• умеет больше

• быстрая

• без интерпретатора

Page 5: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

КАК ОНА РАБОТАЕТ

• парсит шаблон

• генерирует код

• компилирует

Page 6: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

РЕЗУЛЬТАТ - КОД НА ПИТОНЕ

Page 7: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014
Page 8: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014
Page 9: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

РУГАЮ ЖИНЖУ• не знает про html

• выводит через yield

• лишние name resolution (environment)

• context ??

Page 10: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014
Page 11: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ЗАВИДУЮ HAML

• понимает html

• лаконичный

• ruby, javascript

Page 12: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

А КАК ЖЕ Я?1. HamlPy = haml → django

2. mint - честный

3. PyHAML = haml → mako

Page 13: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

НАДО ЧТО-ТО ДЕЛАТЬ!

• тормоза - бесят

• конвертировать - скучно

• синтаксис минта - не нравится

Page 14: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ПИШУ САМ

Page 15: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ПИШУ САМ• привычный синтаксис

• высокая скорость

• минимальные усилия

Page 16: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ПИШУ САМ• использую ast.parse

• генерирую код

• оптимизирую

Page 17: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014
Page 18: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014
Page 19: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ДУМАЮ

Page 20: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ОПТИМИЗИРУЮ

ast.NodeTransformer

Page 21: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ОПТИМИЗИРУЮ

close_tag("table")

print("</table>")

Page 22: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ОПТИМИЗИРУЮ

open_tag("table", {"class": "foo"})

print('<table class="foo">')

Page 23: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ОПТИМИЗИРУЮopen_tag("td", {"name": name})

print('<td name="',

quoteattr(name),

'">')

Page 24: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ОПТИМИЗИРУЮ

print('<tr>')

print('<td>')

print('<tr><td>')

Page 25: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ОПТИМИЗИРУЮ

for i in [0, 1, 2]:

print(i)

print(0, 1, 2)

Page 26: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ЧИСТЫЕ ФУНКЦИИпривет, хаскель

Page 27: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ОПТИМИЗИРУЮ

print(escape("<foo"))

print("&lt;foo")

Page 28: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ОПТИМИЗИРУЮ

for i in range(3):

print(i)

print(0, 1, 2)

Page 29: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ИНЛАЙНИНГпривет, си

Page 30: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ОПТИМИЗИРУЮdef foo(i):

print(i)

foo(1)

print(1)

Page 31: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ОПТИМИЗИРУЮ• считаю заранее

• инлайню функции

• разворачиваю циклы

• склеиваю строки

• list.append / list.extend

Page 32: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014
Page 33: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014
Page 35: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

НАСКОЛЬКО БЫСТРО

mako jinja2 hamly

3732

7

mse

c

Page 36: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ДУМАТЬ - ПОЛЕЗНО

Page 37: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

КАК НАУЧИТЬСЯ?

• elixir

• lisp (!)

• haskell (!!)

Page 38: Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014

ВОТ И ВСЕ