SlideShare a Scribd company logo
BlueBream
вэб-фреймворк




   http://margincon.ru
    Омск, 26.06.2010
  Ильшад Хабибуллин
Базис
           идеи, ведущие к появлению BlueBream

       Over-engineering                    Расширяемость как
    через предвосхищение
                                          необходимое условие


➔ ООП иерархии                        Есть такие проекты, где это
➔ Код для вставки хуков
                                      необходимо
➔ Лишние абстракции

➔ Написание библиотек                 ➔ Проекты с постоянно
 и фреймворков на ровном              изменяемыми требованиями
 месте                                ➔ Расширяемые продукты




                           КОНФЛИКТ
Вынос over-engineering
                    на сторону
       Over-engineering         Расширяемость как
    через предвосхищение       необходимое условие

➔  ООП иерархии            Есть такие проекты, где это
➔ Код для вставки хуков    необходимо
➔ Лишние абстракции

➔ Написание библиотек
                           ➔ Проекты с постоянно
 и фреймворков на ровном   изменяемыми требованиями
 месте                     ➔ Расширяемые продукты




                                                         Тулкит
Launchpad

     ZTK
                      •

                      • Shooltool

                      • Plone

                      • ERP5

                      • ...




                        Инфраструктура,
                    интеграция инструментов в
                           фреймворк




BlueBream
            ➔ Быстрый старт
            ➔ Конфигурации по умолчанию

            ➔ Интегрирующая документация
Важные идеи BlueBream
●   Интерфейсы                ●   Security Proxy
●   Реестры компонент:        ●   Декларативный язык
    глобальные и локальные        ZCML
●   Компонентная              ●   Развертывание:
    архитектура, основанная       Buildout
    на адаптерах
●   Интерфейсы                                ●   Security Proxy
●   Реестры компонент: глобальные и           ●   Декларативный язык ZCML
    локальные
                                              ●   Развертывание: Buildout
●   Компонентная архитектура, основанная на
    адаптерах

     from zope.interface import Interface, Attribute, implements

     class IFoo(Interface):
          bar = Attribute("Bar attribute")

            def baaz():
                """Doc string"""

     class Foo(object):
          implements(IFoo)

            bar = None

            def baaz(self):
                 pass
●   Интерфейсы
                                                        ●   Security Proxy
●   Реестры компонент: глобальные                       ●   Декларативный язык ZCML
    и локальные
●   Компонентная архитектура, основанная на адаптерах
                                                        ●   Развертывание: Buildout



                                                                                 ЗАПРОC:
    Python объекты становятся компонентами                                       ● interface
    тогда, когда они зарегистрированы в                                          ● name
    реестрах компонент




class Foo:                        class Foo:
   pass                              implements(IFoo)                           Реестр



                                                                             Выбирает компоненты
●   Интерфейсы
                                                ●   Security Proxy
●   Реестры компонент: глобальные и локальные
                                                ●   Декларативный язык ZCML
●   Компонентная архитектура,                   ●   Развертывание: Buildout
    основанная на адаптерах

     class IPerson(Interface):
         name = Attribute("Person Name")

     class Article2Person(object):
         implements(IPerson)
         adapts(IArticle)

           def __init__(self, article):
              self.article = article

           @property
           def name(self):
              return self.article.get_article_name()

     # использование адаптера
     adapter = IPerson(ob)
     name = adapter.name
●   Интерфейсы                                  ●   Security Proxy
●   Реестры компонент: глобальные и локальные
                                                ●   Декларативный язык ZCML
●   Компонентная архитектура, основанная на
    адаптерах                                   ●   Развертывание: Buildout




        Все объекты обернуты в
             Security Proxy
●   Интерфейсы                                  ●   Security Proxy
    Реестры компонент: глобальные и локальные
                                                    Декларативный язык
●
                                                ●
    Компонентная архитектура, основанная на
                                                    ZCML
●

    адаптерах
                                                ●   Развертывание: Buildout




    Декларативные конструкции - на
        декларативном языке.

      Простой XML с одним уровнем
             вложенности.
●   Интерфейсы                                  ●   Security Proxy

●   Реестры компонент: глобальные и локальные   ●   Декларативный язык ZCML


●   Компонентная архитектура, основанная на     ●   Развертывание:
    адаптерах
                                                    Buildout



       $ python bootstrap.py
       $ bin/buildout

       $ bin/paster serve deploy.ini
http://bluebream.ru
http://bluebream.zope.org

 Ильшад Хабибуллин
 http://astoon.zwiki.org

More Related Content

PDF
Continuous integration
Grigoriy Ostrovskiy
 
PDF
Опыт внедрения Docker .
phpfriendsclub
 
PPTX
Design by Contract basics
Sergey Teplyakov
 
PPT
Console application with ZF 2.0
Alexey Kachayev
 
PDF
доклад про Llvm
Vadim Evard
 
PDF
Дизайн платформа в Avito - Александр Лобашев (Avito)
AvitoTech
 
PDF
Frontend: Путешествие в мир модульных загрузчиков
CodeFest
 
PDF
Обзор Drupal 8 by Andrei Khalipau, Kostya Halipov and Егор Богатырёв
Minsk PHP User Group
 
Continuous integration
Grigoriy Ostrovskiy
 
Опыт внедрения Docker .
phpfriendsclub
 
Design by Contract basics
Sergey Teplyakov
 
Console application with ZF 2.0
Alexey Kachayev
 
доклад про Llvm
Vadim Evard
 
Дизайн платформа в Avito - Александр Лобашев (Avito)
AvitoTech
 
Frontend: Путешествие в мир модульных загрузчиков
CodeFest
 
Обзор Drupal 8 by Andrei Khalipau, Kostya Halipov and Егор Богатырёв
Minsk PHP User Group
 

What's hot (7)

PDF
Работаем с API по-взрослому - Максим Кислов (Badoo)
AvitoTech
 
PDF
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
AvitoTech
 
PDF
Egor Fedorov "Behavior-driven development in Python"
Fwdays
 
PPTX
Uneta 17.04.15 Aalifirenko - ASP .NET 5 WHATs NEW
UNETA
 
PPTX
UNETA ASP .NET 5 What's new?
Роман Алифиренко
 
PDF
Игорь Кашкута
CodeFest
 
PDF
Google protocol buffers в мобильных проектах
ciklum_ods
 
Работаем с API по-взрослому - Максим Кислов (Badoo)
AvitoTech
 
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
AvitoTech
 
Egor Fedorov "Behavior-driven development in Python"
Fwdays
 
Uneta 17.04.15 Aalifirenko - ASP .NET 5 WHATs NEW
UNETA
 
UNETA ASP .NET 5 What's new?
Роман Алифиренко
 
Игорь Кашкута
CodeFest
 
Google protocol buffers в мобильных проектах
ciklum_ods
 
Ad

Viewers also liked (19)

DOC
Integrating Ecostrategic Thinking @ Racing in Virtues
Center for Ecological Audit,Social Inclusion and Governance
 
PDF
FEL 12 Release Notes
chitlesh
 
PDF
Trabalho Multidisciplinar com Africanidade e Cultura Indígena
Eduardo Mariño Rial
 
PPT
Making Rajasthan Green using Weather Modificatin Technologies
Center for Ecological Audit,Social Inclusion and Governance
 
PPTX
Classon halmet
jabir abbas
 
PDF
ford company
andimawada
 
PDF
The daunting mission to achieve customer success
Jacco vanderKooij
 
PDF
جاذبه های گردشگری چابهار - Chabahar Tourist attractions
jamilahmad nabatzahi
 
PPTX
Web Content Creation
Digimacademy
 
PPT
Pegasus Pulp Publishing 2013 Catalogue
Cora Buhlert
 
PDF
150427 harold alderman workshop_en
SUN_Movement
 
DOCX
Sean's Resume 2015 (Linkedin update )
Sean Fitzgerald
 
PDF
Regulamento Bom pra tudo
diario_catarinense
 
PPTX
150509 npo・ngoの組織基盤強化のためのワークショップin岡山 進行スライド
達也 石原
 
PPTX
Acuerdo comercial entre la unión europea, colombia
Natali Manrique
 
PPTX
Hemorragia de Tubo digestivo superior
eddynoy velasquez
 
PPT
HISTÒRIA DEL POP-ROCK (50s i 60s)
musicaarce
 
PPTX
Global entry strategies global p s of marketing
Sourav Karmakar
 
PPT
Taller iglekids 1
adelisj
 
Integrating Ecostrategic Thinking @ Racing in Virtues
Center for Ecological Audit,Social Inclusion and Governance
 
FEL 12 Release Notes
chitlesh
 
Trabalho Multidisciplinar com Africanidade e Cultura Indígena
Eduardo Mariño Rial
 
Making Rajasthan Green using Weather Modificatin Technologies
Center for Ecological Audit,Social Inclusion and Governance
 
Classon halmet
jabir abbas
 
ford company
andimawada
 
The daunting mission to achieve customer success
Jacco vanderKooij
 
جاذبه های گردشگری چابهار - Chabahar Tourist attractions
jamilahmad nabatzahi
 
Web Content Creation
Digimacademy
 
Pegasus Pulp Publishing 2013 Catalogue
Cora Buhlert
 
150427 harold alderman workshop_en
SUN_Movement
 
Sean's Resume 2015 (Linkedin update )
Sean Fitzgerald
 
Regulamento Bom pra tudo
diario_catarinense
 
150509 npo・ngoの組織基盤強化のためのワークショップin岡山 進行スライド
達也 石原
 
Acuerdo comercial entre la unión europea, colombia
Natali Manrique
 
Hemorragia de Tubo digestivo superior
eddynoy velasquez
 
HISTÒRIA DEL POP-ROCK (50s i 60s)
musicaarce
 
Global entry strategies global p s of marketing
Sourav Karmakar
 
Taller iglekids 1
adelisj
 
Ad

Similar to Ильшад Хабибуллин — BlueBream (20)

PDF
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
Provectus
 
PPTX
Миграция кода с Magento 1 на Magento 2
Elogic Magento Development
 
PDF
Robot Framework: универсальный инструмент автоматизатора
SQALab
 
PPT
2IDE~1.PPT
exxdisillusion69
 
PDF
KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)
SIPLABS Communications
 
PDF
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Yandex
 
PPTX
Dynamic Language Runtime
GetDev.NET
 
PDF
InterBase на разных устройствах быстрый старт. 2017-03-30
sandy97
 
PDF
Workflow: работа над проектом в Яндексе
Denis Chistyakov
 
PPT
Dotnet
MonsterXX
 
PDF
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest
 
PDF
Desktop app based on node js and html5
Provectus
 
PDF
Interbase xe7 - универсальная субд для windows linux mac ios android
Andrew Sovtsov
 
PPT
Проверено и работает. Инструменты Oracle для разработки веб приложений
Media Gorod
 
PPTX
Создаем Drupal дистрибутив: от идеи до сопровождения.
DrupalForumZP2012
 
PDF
Управление гибридным ландшафтом с помощью Cisco CloudCenter
Cisco Russia
 
PPT
Java one presentation
Shamim bhuiyan
 
PDF
Юрий Василевский "Автоматизация в XCode"
Yandex
 
PDF
Юрий Василевский «Автоматизация в XCode»
Yandex
 
RTF
внедрении Wpf в сложных системах
WhiteMbIXA
 
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
Provectus
 
Миграция кода с Magento 1 на Magento 2
Elogic Magento Development
 
Robot Framework: универсальный инструмент автоматизатора
SQALab
 
2IDE~1.PPT
exxdisillusion69
 
KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)
SIPLABS Communications
 
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Yandex
 
Dynamic Language Runtime
GetDev.NET
 
InterBase на разных устройствах быстрый старт. 2017-03-30
sandy97
 
Workflow: работа над проектом в Яндексе
Denis Chistyakov
 
Dotnet
MonsterXX
 
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest
 
Desktop app based on node js and html5
Provectus
 
Interbase xe7 - универсальная субд для windows linux mac ios android
Andrew Sovtsov
 
Проверено и работает. Инструменты Oracle для разработки веб приложений
Media Gorod
 
Создаем Drupal дистрибутив: от идеи до сопровождения.
DrupalForumZP2012
 
Управление гибридным ландшафтом с помощью Cisco CloudCenter
Cisco Russia
 
Java one presentation
Shamim bhuiyan
 
Юрий Василевский "Автоматизация в XCode"
Yandex
 
Юрий Василевский «Автоматизация в XCode»
Yandex
 
внедрении Wpf в сложных системах
WhiteMbIXA
 

More from Yury Yurevich (12)

PDF
ekb.py: KISS REST API
Yury Yurevich
 
PDF
ekb.py: Mini Zen of Python
Yury Yurevich
 
PDF
PyCon UA 2011: Test Infected
Yury Yurevich
 
PDF
Александр Гладыш — Visual editor for business logic in Lua and JS
Yury Yurevich
 
PDF
Лев Валкин — Кое-что про Erlang
Yury Yurevich
 
PDF
Иван Иноземцев — Fantom
Yury Yurevich
 
PDF
Александр Гладыш — Lua
Yury Yurevich
 
PDF
Decorators' recipes
Yury Yurevich
 
ODP
About Python
Yury Yurevich
 
PDF
About (unit) testing
Yury Yurevich
 
PDF
SQLAlchemy Seminar
Yury Yurevich
 
PDF
Almost Success Story: Unix to Linux migration
Yury Yurevich
 
ekb.py: KISS REST API
Yury Yurevich
 
ekb.py: Mini Zen of Python
Yury Yurevich
 
PyCon UA 2011: Test Infected
Yury Yurevich
 
Александр Гладыш — Visual editor for business logic in Lua and JS
Yury Yurevich
 
Лев Валкин — Кое-что про Erlang
Yury Yurevich
 
Иван Иноземцев — Fantom
Yury Yurevich
 
Александр Гладыш — Lua
Yury Yurevich
 
Decorators' recipes
Yury Yurevich
 
About Python
Yury Yurevich
 
About (unit) testing
Yury Yurevich
 
SQLAlchemy Seminar
Yury Yurevich
 
Almost Success Story: Unix to Linux migration
Yury Yurevich
 

Ильшад Хабибуллин — BlueBream

  • 1. BlueBream вэб-фреймворк http://margincon.ru Омск, 26.06.2010 Ильшад Хабибуллин
  • 2. Базис идеи, ведущие к появлению BlueBream Over-engineering Расширяемость как через предвосхищение необходимое условие ➔ ООП иерархии Есть такие проекты, где это ➔ Код для вставки хуков необходимо ➔ Лишние абстракции ➔ Написание библиотек ➔ Проекты с постоянно и фреймворков на ровном изменяемыми требованиями месте ➔ Расширяемые продукты КОНФЛИКТ
  • 3. Вынос over-engineering на сторону Over-engineering Расширяемость как через предвосхищение необходимое условие ➔ ООП иерархии Есть такие проекты, где это ➔ Код для вставки хуков необходимо ➔ Лишние абстракции ➔ Написание библиотек ➔ Проекты с постоянно и фреймворков на ровном изменяемыми требованиями месте ➔ Расширяемые продукты Тулкит
  • 4. Launchpad ZTK • • Shooltool • Plone • ERP5 • ... Инфраструктура, интеграция инструментов в фреймворк BlueBream ➔ Быстрый старт ➔ Конфигурации по умолчанию ➔ Интегрирующая документация
  • 5. Важные идеи BlueBream ● Интерфейсы ● Security Proxy ● Реестры компонент: ● Декларативный язык глобальные и локальные ZCML ● Компонентная ● Развертывание: архитектура, основанная Buildout на адаптерах
  • 6. Интерфейсы ● Security Proxy ● Реестры компонент: глобальные и ● Декларативный язык ZCML локальные ● Развертывание: Buildout ● Компонентная архитектура, основанная на адаптерах from zope.interface import Interface, Attribute, implements class IFoo(Interface): bar = Attribute("Bar attribute") def baaz(): """Doc string""" class Foo(object): implements(IFoo) bar = None def baaz(self): pass
  • 7. Интерфейсы ● Security Proxy ● Реестры компонент: глобальные ● Декларативный язык ZCML и локальные ● Компонентная архитектура, основанная на адаптерах ● Развертывание: Buildout ЗАПРОC: Python объекты становятся компонентами ● interface тогда, когда они зарегистрированы в ● name реестрах компонент class Foo: class Foo: pass implements(IFoo) Реестр Выбирает компоненты
  • 8. Интерфейсы ● Security Proxy ● Реестры компонент: глобальные и локальные ● Декларативный язык ZCML ● Компонентная архитектура, ● Развертывание: Buildout основанная на адаптерах class IPerson(Interface): name = Attribute("Person Name") class Article2Person(object): implements(IPerson) adapts(IArticle) def __init__(self, article): self.article = article @property def name(self): return self.article.get_article_name() # использование адаптера adapter = IPerson(ob) name = adapter.name
  • 9. Интерфейсы ● Security Proxy ● Реестры компонент: глобальные и локальные ● Декларативный язык ZCML ● Компонентная архитектура, основанная на адаптерах ● Развертывание: Buildout Все объекты обернуты в Security Proxy
  • 10. Интерфейсы ● Security Proxy Реестры компонент: глобальные и локальные Декларативный язык ● ● Компонентная архитектура, основанная на ZCML ● адаптерах ● Развертывание: Buildout Декларативные конструкции - на декларативном языке. Простой XML с одним уровнем вложенности.
  • 11. Интерфейсы ● Security Proxy ● Реестры компонент: глобальные и локальные ● Декларативный язык ZCML ● Компонентная архитектура, основанная на ● Развертывание: адаптерах Buildout $ python bootstrap.py $ bin/buildout $ bin/paster serve deploy.ini