Выжимаем максимум из шаблонизатора - Виктор Коцеруба, PyCon RU 2014
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 141 views

 

Statistics

Views

Total Views
141
Views on SlideShare
141
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • ПРИВЕТ
  • ТЫ НЕ УМЕЕШЬ ПИСАТЬ НА ПИТОНЕ правда правда
  • Я ТОЖЕ но стараюсь
  • ХВАЛЮ ЖИНЖУ • простая в использовании • умеет больше • быстрая • без интерпретатора
  • КАК ОНА РАБОТАЕТ • парсит шаблон • генерирует код • компилирует
  • РЕЗУЛЬТАТ - КОД НА ПИТОНЕ
  • РУГАЮ ЖИНЖУ • не знает про html • выводит через yield • лишние name resolution (environment) • context ??
  • ЗАВИДУЮ HAML • понимает html • лаконичный • ruby, javascript
  • А КАК ЖЕ Я? 1. HamlPy = haml → django 2. mint - честный 3. PyHAML = haml → mako
  • НАДО ЧТО-ТО ДЕЛАТЬ! • тормоза - бесят • конвертировать - скучно • синтаксис минта - не нравится
  • ПИШУ САМ
  • ПИШУ САМ • привычный синтаксис • высокая скорость • минимальные усилия
  • ПИШУ САМ • использую ast.parse • генерирую код • оптимизирую
  • ДУМАЮ
  • ОПТИМИЗИРУЮ ast.NodeTransformer
  • ОПТИМИЗИРУЮ close_tag("table") print("</table>")
  • ОПТИМИЗИРУЮ open_tag("table", {"class": "foo"}) print('<table class="foo">')
  • ОПТИМИЗИРУЮ open_tag("td", {"name": name}) print('<td name="', quoteattr(name), '">')
  • ОПТИМИЗИРУЮ print('<tr>') print('<td>') print('<tr><td>')
  • ОПТИМИЗИРУЮ for i in [0, 1, 2]: print(i) print(0, 1, 2)
  • ЧИСТЫЕ ФУНКЦИИ привет, хаскель
  • ОПТИМИЗИРУЮ print(escape("<foo")) print("&lt;foo")
  • ОПТИМИЗИРУЮ for i in range(3): print(i) print(0, 1, 2)
  • ИНЛАЙНИНГ привет, си
  • ОПТИМИЗИРУЮ def foo(i): print(i) foo(1) print(1)
  • ОПТИМИЗИРУЮ • считаю заранее • инлайню функции • разворачиваю циклы • склеиваю строки • list.append / list.extend
  • HAMLY github.com/barbuza/hamly
  • НАСКОЛЬКО БЫСТРО 37 32 7 mako jinja2 hamly msec
  • ДУМАТЬ - ПОЛЕЗНО
  • КАК НАУЧИТЬСЯ? • elixir • lisp (!) • haskell (!!)
  • ВОТ И ВСЕ