now even cavemen can use Zope 3 Bogdan Koval © Quintagroup, 2008
Що таке Zope 3? <ul><li>сервер (каркас) веб-аплікацій </li></ul><ul><li>колекція вільного програмного забезпечення, частин...
Можливості Zope 3  <ul><li>компонентна архітектура </li></ul><ul><li>об'єктна база даних (ZODB) </li></ul><ul><li>XHTML ша...
Недоліки Zope 3 <ul><li>складність швидкого старту із Zope 3 </li></ul><ul><li>компоненти зв'язуються між собою за допомог...
Що потребує покращення  в Zope 3 <ul><li>спростити розробку аплікацій як для початківців, так і для досвідчених розробникі...
Шлях покращення <ul><li>домовленості по структурі та вмісту пітонівських пакетів та модулів  </li></ul><ul><li>відсутність...
Ось тут і з'являється Grok
Хто такий Grok? Grok – дружня печерна людина із Кам'яного Віку. Він має велику булаву, якою полює на мамонтів, а крім того...
Що таке Grok? <ul><ul><li>Каркас веб-аплікацій, побудований на базі Zope 3 та орієнтований на  початківців і досвідчених р...
«ME GROK SMASH ZCML» <ul><li>ZCML вже не обов'язковий </li></ul><ul><li>ти використовуєш домовленості запропоновані Grok'о...
<ul><li>доданий новий інтерфейс адміністрування (grok.admin) </li></ul><ul><li>всі об'єкти по замовчуванню є доступними </...
Cтарт із Grok'ом <ul><ul><li>Лише декілька команд і перша grok аплікація готова: </li></ul></ul><ul><ul><li>easy_install g...
Можна відкривати браузер
Головна сторінка аплікації
app.py import grok class HelloWorld(grok.Application,  grok.Container): pass class Index(grok.View): pass # see app_templa...
index.pt <html> <head> </head> <body> <h1>Congratulations!</h1> <p>Your Grok application is up and running. Edit <code>Hel...
configure.zcml <configure  xmlns=&quot;http://namespaces.zope.org/zope&quot;  xmlns:grok=&quot;http://namespaces.zope.org/...
Grok-магія <ul><li>сканування пітонівського коду і виклик Grokker'ів для класів, що наслідуються від grok.* класів </li></...
Базові класи <ul><li>Application, Model, Container </li></ul><ul><li>Adapter, MultiAdapter </li></ul><ul><li>GlobalUtility...
Директиви <ul><li>context, adapts, implements, provides, name, subscribe, global_utility, local_utility </li></ul><ul><li>...
Приклад адаптера import grok from zope import interface class Cave(grok.Model): pass class IHome(interface.Interface): pas...
Розширення Grok <ul><li>що робити, коли Grok не вміє регіструвати твій компонент? </li></ul><ul><li>писати ZCML? </li></ul...
Дякую за увагу!
Upcoming SlideShare
Loading in...5
×

Grok web application framework

1,451

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,451
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Grok web application framework"

  1. 1. now even cavemen can use Zope 3 Bogdan Koval © Quintagroup, 2008
  2. 2. Що таке Zope 3? <ul><li>сервер (каркас) веб-аплікацій </li></ul><ul><li>колекція вільного програмного забезпечення, частини якого можна легко повторно використати </li></ul><ul><li>проект, що в активній розробці з 2001 року та має велику спільноту </li></ul>
  3. 3. Можливості Zope 3 <ul><li>компонентна архітектура </li></ul><ul><li>об'єктна база даних (ZODB) </li></ul><ul><li>XHTML шаблони (ZPT) </li></ul><ul><li>автоматична генерація форм </li></ul><ul><li>інтернаціоналізація (i18n, l10n) </li></ul><ul><li>безпека </li></ul><ul><li>каталогізація </li></ul><ul><li>тестування </li></ul>
  4. 4. Недоліки Zope 3 <ul><li>складність швидкого старту із Zope 3 </li></ul><ul><li>компоненти зв'язуються між собою за допомогою ZCML, що вимагає редагування додаткових конфігураційних файлів </li></ul><ul><li>ZCML сповільнює процес розробки — кожний новий компонент вимагає своїх директив </li></ul>
  5. 5. Що потребує покращення в Zope 3 <ul><li>спростити розробку аплікацій як для початківців, так і для досвідчених розробників </li></ul><ul><li>пришвидшити процес розробки </li></ul>
  6. 6. Шлях покращення <ul><li>домовленості по структурі та вмісту пітонівських пакетів та модулів </li></ul><ul><li>відсутність конфігурації через ZCML </li></ul>
  7. 7. Ось тут і з'являється Grok
  8. 8. Хто такий Grok? Grok – дружня печерна людина із Кам'яного Віку. Він має велику булаву, якою полює на мамонтів, а крім того ще й трощить нею все, що йому не подобається (особливо в Zope 3).
  9. 9. Що таке Grok? <ul><ul><li>Каркас веб-аплікацій, побудований на базі Zope 3 та орієнтований на початківців і досвідчених розробників. Grok робить акцент саме на швидку розробку аплікацій, додаючи нові можливості та зберігаючи все, що є в Zope 3. </li></ul></ul>
  10. 10. «ME GROK SMASH ZCML» <ul><li>ZCML вже не обов'язковий </li></ul><ul><li>ти використовуєш домовленості запропоновані Grok'ом, а він аналізує твій пітонівський код і конфігурує твої компоненти </li></ul><ul><li>результат той самий, що й із явним конфігуруванням ZCML'ом </li></ul>
  11. 11. <ul><li>доданий новий інтерфейс адміністрування (grok.admin) </li></ul><ul><li>всі об'єкти по замовчуванню є доступними </li></ul><ul><li>шаблони (ZPT) по замовчуванню лежать в директорії «modulename_templates» </li></ul><ul><li>статичні ресурси лежать в директорії «static» </li></ul>
  12. 12. Cтарт із Grok'ом <ul><ul><li>Лише декілька команд і перша grok аплікація готова: </li></ul></ul><ul><ul><li>easy_install grokproject </li></ul></ul><ul><ul><li>grokproject HelloWorld </li></ul></ul><ul><ul><li>cd HelloWorld </li></ul></ul><ul><ul><li>bin/zopectl fg </li></ul></ul>
  13. 13. Можна відкривати браузер
  14. 14. Головна сторінка аплікації
  15. 15. app.py import grok class HelloWorld(grok.Application, grok.Container): pass class Index(grok.View): pass # see app_templates/index.pt
  16. 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. 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. 18. Grok-магія <ul><li>сканування пітонівського коду і виклик Grokker'ів для класів, що наслідуються від grok.* класів </li></ul><ul><li>Grokker'и регіструють компоненти відповідно до директив, які застосовані до них </li></ul><ul><li>регістрація аналогічна до ZCML (викликається context.action(...)) </li></ul>
  19. 19. Базові класи <ul><li>Application, Model, Container </li></ul><ul><li>Adapter, MultiAdapter </li></ul><ul><li>GlobalUtility, LocalUtility </li></ul><ul><li>View, Form, Traverser, Skin, Layer, ViewletManager, Viewlet, Permission, Role </li></ul><ul><li>RESTProtocol, REST, JSONView, XMLRPC </li></ul><ul><li>та інші... </li></ul>
  20. 20. Директиви <ul><li>context, adapts, implements, provides, name, subscribe, global_utility, local_utility </li></ul><ul><li>layer, template, templatedir </li></ul><ul><li>title, require </li></ul><ul><li>baseclass </li></ul><ul><li>та інші... </li></ul>
  21. 21. Приклад адаптера 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)
  22. 22. Розширення Grok <ul><li>що робити, коли Grok не вміє регіструвати твій компонент? </li></ul><ul><li>писати ZCML? </li></ul><ul><li>ні, cтворити базовий клас і Grokker для цього компонента (і цим зробити Grok ще могутнішим) </li></ul>
  23. 23. Дякую за увагу!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×