Що таке Zope3? сервер (каркас) веб-аплікацій колекція вільного програмного забезпечення, частини якого можна легко повторно використати проект, що в активній розробці з 2001 року та має велику спільноту
3.
Можливості Zope 3 компонентна архітектура об'єктна база даних (ZODB) XHTML шаблони (ZPT) автоматична генерація форм інтернаціоналізація (i18n, l10n) безпека каталогізація тестування
4.
Недоліки Zope 3складність швидкого старту із Zope 3 компоненти зв'язуються між собою за допомогою ZCML, що вимагає редагування додаткових конфігураційних файлів ZCML сповільнює процес розробки — кожний новий компонент вимагає своїх директив
5.
Що потребує покращення в Zope 3 спростити розробку аплікацій як для початківців, так і для досвідчених розробників пришвидшити процес розробки
6.
Шлях покращення домовленостіпо структурі та вмісту пітонівських пакетів та модулів відсутність конфігурації через ZCML
Хто такий 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
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>
Grok-магія сканування пітонівськогокоду і виклик Grokker'ів для класів, що наслідуються від grok.* класів Grokker'и регіструють компоненти відповідно до директив, які застосовані до них регістрація аналогічна до ZCML (викликається context.action(...))
Приклад адаптера 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 ще могутнішим)