SlideShare una empresa de Scribd logo
1 de 23
now even cavemen can use Zope 3 Bogdan Koval © Quintagroup, 2008
Що таке Zope 3? ,[object Object],[object Object],[object Object]
Можливості Zope 3  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Недоліки Zope 3 ,[object Object],[object Object],[object Object]
Що потребує покращення  в Zope 3 ,[object Object],[object Object]
Шлях покращення ,[object Object],[object Object]
Ось тут і з'являється Grok
Хто такий Grok? Grok – дружня печерна людина із Кам'яного Віку. Він має велику булаву, якою полює на мамонтів, а крім того ще й трощить нею все, що йому не подобається (особливо в Zope 3).
Що таке Grok? ,[object Object]
«ME GROK SMASH ZCML» ,[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object]
Cтарт із Grok'ом ,[object Object],[object Object],[object Object],[object Object],[object Object]
Можна відкривати браузер
Головна сторінка аплікації
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-магія ,[object Object],[object Object],[object Object]
Базові класи ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Директиви ,[object Object],[object Object],[object Object],[object Object],[object Object]
Приклад адаптера 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 ,[object Object],[object Object],[object Object]
Дякую за увагу!

Más contenido relacionado

Similar a Grok web application framework

Порівняння Drupal та Typo3
Порівняння Drupal та Typo3Порівняння Drupal та Typo3
Порівняння Drupal та Typo3
Drupal Camp Kyiv
 
порівняння Drupal та Typo3
порівняння Drupal та Typo3порівняння Drupal та Typo3
порівняння Drupal та Typo3
Inna Tuyeva
 
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
OdessaJS Conf
 
Mka python jr-urok_01_ua_1563258764
Mka python jr-urok_01_ua_1563258764Mka python jr-urok_01_ua_1563258764
Mka python jr-urok_01_ua_1563258764
PavloTsiura
 

Similar a Grok web application framework (20)

Golang
GolangGolang
Golang
 
"Rethinking Continuous Delivery", Andrii Nasinnyk
"Rethinking Continuous Delivery",  Andrii Nasinnyk"Rethinking Continuous Delivery",  Andrii Nasinnyk
"Rethinking Continuous Delivery", Andrii Nasinnyk
 
iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)
 
Html5
Html5Html5
Html5
 
Flex 4 чи Html 5
Flex 4 чи Html 5Flex 4 чи Html 5
Flex 4 чи Html 5
 
DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)
DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)
DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)
 
Caliburn Micro Overview
Caliburn Micro OverviewCaliburn Micro Overview
Caliburn Micro Overview
 
Drupal Optimization
Drupal OptimizationDrupal Optimization
Drupal Optimization
 
Порівняння Drupal та Typo3
Порівняння Drupal та Typo3Порівняння Drupal та Typo3
Порівняння Drupal та Typo3
 
порівняння Drupal та Typo3
порівняння Drupal та Typo3порівняння Drupal та Typo3
порівняння Drupal та Typo3
 
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
 
Mka python jr-urok_01_ua_1563258764
Mka python jr-urok_01_ua_1563258764Mka python jr-urok_01_ua_1563258764
Mka python jr-urok_01_ua_1563258764
 
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ..."Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
 
"Key considerations in implementing a distributed message-sending system usin...
"Key considerations in implementing a distributed message-sending system usin..."Key considerations in implementing a distributed message-sending system usin...
"Key considerations in implementing a distributed message-sending system usin...
 
Global logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.jsGlobal logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.js
 
Павло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. HowtoПавло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. Howto
 
ASP.Net MVC
ASP.Net MVCASP.Net MVC
ASP.Net MVC
 
Angular. presentation
Angular. presentationAngular. presentation
Angular. presentation
 
Корнілов Андрій
Корнілов АндрійКорнілов Андрій
Корнілов Андрій
 
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
 

Más de Quintagroup

Plone 4. Що нового?
Plone 4. Що нового?Plone 4. Що нового?
Plone 4. Що нового?
Quintagroup
 
Plone в урядових проектах
Plone в урядових проектахPlone в урядових проектах
Plone в урядових проектах
Quintagroup
 

Más de Quintagroup (20)

Georgian OCDS API
Georgian OCDS APIGeorgian OCDS API
Georgian OCDS API
 
Open procurement - Auction module
Open procurement - Auction moduleOpen procurement - Auction module
Open procurement - Auction module
 
OpenProcurement toolkit
OpenProcurement toolkitOpenProcurement toolkit
OpenProcurement toolkit
 
Open procurement italian
Open procurement italian Open procurement italian
Open procurement italian
 
Plone SEO: Пошукова оптимізація Плон сайтів
Plone SEO: Пошукова оптимізація Плон сайтівPlone SEO: Пошукова оптимізація Плон сайтів
Plone SEO: Пошукова оптимізація Плон сайтів
 
Plone 4. Що нового?
Plone 4. Що нового?Plone 4. Що нового?
Plone 4. Що нового?
 
Calendar for Plone
Calendar for Plone Calendar for Plone
Calendar for Plone
 
Packages, Releases, QGSkel
Packages, Releases, QGSkelPackages, Releases, QGSkel
Packages, Releases, QGSkel
 
Integrator Series: Large files
Integrator Series: Large filesIntegrator Series: Large files
Integrator Series: Large files
 
Python Objects
Python ObjectsPython Objects
Python Objects
 
Python Evolution
Python EvolutionPython Evolution
Python Evolution
 
Screen Player
Screen PlayerScreen Player
Screen Player
 
GNU Screen
GNU ScreenGNU Screen
GNU Screen
 
New in Plone 3.3. What to expect from Plone 4
New in Plone 3.3. What to expect from Plone 4New in Plone 3.3. What to expect from Plone 4
New in Plone 3.3. What to expect from Plone 4
 
Overview of Plone-based websites for mobile devices.
Overview of Plone-based websites for mobile devices.Overview of Plone-based websites for mobile devices.
Overview of Plone-based websites for mobile devices.
 
Ecommerce Solutions for Plone
Ecommerce Solutions for PloneEcommerce Solutions for Plone
Ecommerce Solutions for Plone
 
Templating In Buildout
Templating In BuildoutTemplating In Buildout
Templating In Buildout
 
Releasing and deploying python tools
Releasing and deploying python toolsReleasing and deploying python tools
Releasing and deploying python tools
 
Zope 3 at Google App Engine
Zope 3 at Google App EngineZope 3 at Google App Engine
Zope 3 at Google App Engine
 
Plone в урядових проектах
Plone в урядових проектахPlone в урядових проектах
Plone в урядових проектах
 

Grok web application framework

  • 1. now even cavemen can use Zope 3 Bogdan Koval © Quintagroup, 2008
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7. Ось тут і з'являється Grok
  • 8. Хто такий Grok? Grok – дружня печерна людина із Кам'яного Віку. Він має велику булаву, якою полює на мамонтів, а крім того ще й трощить нею все, що йому не подобається (особливо в Zope 3).
  • 9.
  • 10.
  • 11.
  • 12.
  • 15. app.py import grok class 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.
  • 19.
  • 20.
  • 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.