now even cavemen can use Zope 3 Bogdan Koval © Quintagroup, 2008
Що таке Zope 3? сервер (каркас) веб-аплікацій колекція вільного програмного забезпечення, частини якого можна легко повторно використати проект, що в активній розробці з 2001 року та має велику спільноту
Можливості Zope 3  компонентна архітектура об'єктна база даних (ZODB) XHTML шаблони (ZPT) автоматична генерація форм інтернаціоналізація (i18n, l10n) безпека каталогізація тестування
Недоліки Zope 3 складність швидкого старту із Zope 3 компоненти зв'язуються між собою за допомогою ZCML, що вимагає редагування додаткових конфігураційних файлів ZCML сповільнює процес розробки — кожний новий компонент вимагає своїх директив
Що потребує покращення  в Zope 3 спростити розробку аплікацій як для початківців, так і для досвідчених розробників пришвидшити процес розробки
Шлях покращення домовленості по структурі та вмісту пітонівських пакетів та модулів  відсутність конфігурації через ZCML
Ось тут і з'являється Grok
Хто такий Grok? Grok – дружня печерна людина із Кам'яного Віку. Він має велику булаву, якою полює на мамонтів, а крім того ще й трощить нею все, що йому не подобається (особливо в Zope 3).
Що таке Grok? Каркас веб-аплікацій, побудований на базі Zope 3 та орієнтований на  початківців і досвідчених розробників. Grok робить акцент саме на швидку розробку аплікацій, додаючи нові можливості та зберігаючи все, що є в Zope 3.
«ME GROK SMASH ZCML» ZCML вже не обов'язковий ти використовуєш домовленості запропоновані Grok'ом, а він аналізує твій пітонівський код і конфігурує твої компоненти результат той самий, що й із явним конфігуруванням ZCML'ом
доданий новий інтерфейс адміністрування (grok.admin) всі об'єкти по замовчуванню є доступними шаблони (ZPT) по замовчуванню лежать в директорії «modulename_templates» статичні ресурси лежать в директорії «static»
Cтарт із Grok'ом Лише декілька команд і перша grok аплікація готова: easy_install grokproject grokproject HelloWorld cd HelloWorld bin/zopectl fg
Можна відкривати браузер
Головна сторінка аплікації
app.py import grok class HelloWorld(grok.Application,  grok.Container): pass class Index(grok.View): pass # see app_templates/index.pt
index.pt <html> <head> </head> <body> <h1>Congratulations!</h1> <p>Your Grok application is up and running. Edit <code>HelloWorld/app_templates/index.pt</code> to change this page.</p> </body> </html>
configure.zcml <configure  xmlns=&quot;http://namespaces.zope.org/zope&quot;  xmlns:grok=&quot;http://namespaces.zope.org/grok&quot;> <include package=&quot;grok&quot; /> <includeDependencies package=&quot;.&quot; /> <grok:grok package=&quot;.&quot; /> </configure>
Grok-магія сканування пітонівського коду і виклик Grokker'ів для класів, що наслідуються від grok.* класів Grokker'и регіструють компоненти відповідно до директив, які застосовані до них регістрація аналогічна до ZCML (викликається  context.action(...))
Базові класи Application, Model, Container Adapter, MultiAdapter GlobalUtility, LocalUtility View, Form, Traverser, Skin, Layer, ViewletManager, Viewlet, Permission, Role RESTProtocol, REST, JSONView, XMLRPC та інші...
Директиви context, adapts, implements, provides, name, subscribe, global_utility, local_utility layer, template, templatedir title, require baseclass та інші...
Приклад адаптера import grok from zope import interface class Cave(grok.Model): pass class IHome(interface.Interface): pass class Home(grok.Adapter): grok.context(Cave) grok.implements(IHome) class IFireplace(interface.Interface): pass class Fireplace(grok.Adapter): grok.implements(IFireplace, IHome) grok.provides(IFireplace)
Розширення Grok що робити, коли Grok не вміє регіструвати твій компонент? писати ZCML? ні, cтворити базовий клас і Grokker для цього компонента (і цим зробити Grok ще могутнішим)
Дякую за увагу!

Grok web application framework

  • 1.
    now even cavemencan use Zope 3 Bogdan Koval © Quintagroup, 2008
  • 2.
    Що таке Zope3? сервер (каркас) веб-аплікацій колекція вільного програмного забезпечення, частини якого можна легко повторно використати проект, що в активній розробці з 2001 року та має велику спільноту
  • 3.
    Можливості Zope 3 компонентна архітектура об'єктна база даних (ZODB) XHTML шаблони (ZPT) автоматична генерація форм інтернаціоналізація (i18n, l10n) безпека каталогізація тестування
  • 4.
    Недоліки Zope 3складність швидкого старту із Zope 3 компоненти зв'язуються між собою за допомогою ZCML, що вимагає редагування додаткових конфігураційних файлів ZCML сповільнює процес розробки — кожний новий компонент вимагає своїх директив
  • 5.
    Що потребує покращення в Zope 3 спростити розробку аплікацій як для початківців, так і для досвідчених розробників пришвидшити процес розробки
  • 6.
    Шлях покращення домовленостіпо структурі та вмісту пітонівських пакетів та модулів відсутність конфігурації через ZCML
  • 7.
    Ось тут із'являється Grok
  • 8.
    Хто такий Grok?Grok – дружня печерна людина із Кам'яного Віку. Він має велику булаву, якою полює на мамонтів, а крім того ще й трощить нею все, що йому не подобається (особливо в Zope 3).
  • 9.
    Що таке Grok?Каркас веб-аплікацій, побудований на базі Zope 3 та орієнтований на початківців і досвідчених розробників. Grok робить акцент саме на швидку розробку аплікацій, додаючи нові можливості та зберігаючи все, що є в Zope 3.
  • 10.
    «ME GROK SMASHZCML» ZCML вже не обов'язковий ти використовуєш домовленості запропоновані Grok'ом, а він аналізує твій пітонівський код і конфігурує твої компоненти результат той самий, що й із явним конфігуруванням ZCML'ом
  • 11.
    доданий новий інтерфейсадміністрування (grok.admin) всі об'єкти по замовчуванню є доступними шаблони (ZPT) по замовчуванню лежать в директорії «modulename_templates» статичні ресурси лежать в директорії «static»
  • 12.
    Cтарт із Grok'омЛише декілька команд і перша grok аплікація готова: easy_install grokproject grokproject HelloWorld cd HelloWorld bin/zopectl fg
  • 13.
  • 14.
  • 15.
    app.py import grokclass HelloWorld(grok.Application, grok.Container): pass class Index(grok.View): pass # see app_templates/index.pt
  • 16.
    index.pt <html> <head></head> <body> <h1>Congratulations!</h1> <p>Your Grok application is up and running. Edit <code>HelloWorld/app_templates/index.pt</code> to change this page.</p> </body> </html>
  • 17.
    configure.zcml <configure xmlns=&quot;http://namespaces.zope.org/zope&quot; xmlns:grok=&quot;http://namespaces.zope.org/grok&quot;> <include package=&quot;grok&quot; /> <includeDependencies package=&quot;.&quot; /> <grok:grok package=&quot;.&quot; /> </configure>
  • 18.
    Grok-магія сканування пітонівськогокоду і виклик Grokker'ів для класів, що наслідуються від grok.* класів Grokker'и регіструють компоненти відповідно до директив, які застосовані до них регістрація аналогічна до ZCML (викликається context.action(...))
  • 19.
    Базові класи Application,Model, Container Adapter, MultiAdapter GlobalUtility, LocalUtility View, Form, Traverser, Skin, Layer, ViewletManager, Viewlet, Permission, Role RESTProtocol, REST, JSONView, XMLRPC та інші...
  • 20.
    Директиви context, adapts,implements, provides, name, subscribe, global_utility, local_utility layer, template, templatedir title, require baseclass та інші...
  • 21.
    Приклад адаптера importgrok from zope import interface class Cave(grok.Model): pass class IHome(interface.Interface): pass class Home(grok.Adapter): grok.context(Cave) grok.implements(IHome) class IFireplace(interface.Interface): pass class Fireplace(grok.Adapter): grok.implements(IFireplace, IHome) grok.provides(IFireplace)
  • 22.
    Розширення Grok щоробити, коли Grok не вміє регіструвати твій компонент? писати ZCML? ні, cтворити базовий клас і Grokker для цього компонента (і цим зробити Grok ще могутнішим)
  • 23.