Grok web application framework
Upcoming SlideShare
Loading in...5
×
 

Grok web application framework

on

  • 2,269 views

 

Statistics

Views

Total Views
2,269
Views on SlideShare
2,229
Embed Views
40

Actions

Likes
0
Downloads
8
Comments
0

2 Embeds 40

http://plug.org.ua 24
http://www.plug.org.ua 16

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

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

Grok web application framework Grok web application framework Presentation Transcript

  • 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 ще могутнішим)
  • Дякую за увагу!