SlideShare uma empresa Scribd logo
1 de 12
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

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

Mais procurados (7)

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

Destaque

FEL 12 Release Notes
FEL 12 Release NotesFEL 12 Release Notes
FEL 12 Release Noteschitlesh
 
Trabalho Multidisciplinar com Africanidade e Cultura Indígena
Trabalho Multidisciplinar com Africanidade e Cultura Indígena Trabalho Multidisciplinar com Africanidade e Cultura Indígena
Trabalho Multidisciplinar com Africanidade e Cultura Indígena Eduardo Mariño Rial
 
The daunting mission to achieve customer success
The daunting mission to achieve customer successThe daunting mission to achieve customer success
The daunting mission to achieve customer successJacco vanderKooij
 
جاذبه های گردشگری چابهار - Chabahar Tourist attractions
جاذبه های گردشگری  چابهار - Chabahar Tourist attractionsجاذبه های گردشگری  چابهار - Chabahar Tourist attractions
جاذبه های گردشگری چابهار - Chabahar Tourist attractionsjamilahmad nabatzahi
 
Web Content Creation
Web Content CreationWeb Content Creation
Web Content CreationDigimacademy
 
Pegasus Pulp Publishing 2013 Catalogue
Pegasus Pulp Publishing 2013 CataloguePegasus Pulp Publishing 2013 Catalogue
Pegasus Pulp Publishing 2013 CatalogueCora Buhlert
 
150427 harold alderman workshop_en
150427 harold alderman workshop_en150427 harold alderman workshop_en
150427 harold alderman workshop_enSUN_Movement
 
Sean's Resume 2015 (Linkedin update )
Sean's Resume 2015 (Linkedin update )Sean's Resume 2015 (Linkedin update )
Sean's Resume 2015 (Linkedin update )Sean Fitzgerald
 
150509 npo・ngoの組織基盤強化のためのワークショップin岡山 進行スライド
150509 npo・ngoの組織基盤強化のためのワークショップin岡山 進行スライド150509 npo・ngoの組織基盤強化のためのワークショップin岡山 進行スライド
150509 npo・ngoの組織基盤強化のためのワークショップin岡山 進行スライド特定非営利活動法人 岡山NPOセンター
 
Acuerdo comercial entre la unión europea, colombia
Acuerdo comercial entre la unión europea, colombiaAcuerdo comercial entre la unión europea, colombia
Acuerdo comercial entre la unión europea, colombiaNatali Manrique
 
Hemorragia de Tubo digestivo superior
Hemorragia de Tubo digestivo superiorHemorragia de Tubo digestivo superior
Hemorragia de Tubo digestivo superioreddynoy velasquez
 
HISTÒRIA DEL POP-ROCK (50s i 60s)
HISTÒRIA DEL POP-ROCK (50s i 60s)HISTÒRIA DEL POP-ROCK (50s i 60s)
HISTÒRIA DEL POP-ROCK (50s i 60s)musicaarce
 
Global entry strategies global p s of marketing
Global entry strategies global p s of marketingGlobal entry strategies global p s of marketing
Global entry strategies global p s of marketingSourav Karmakar
 
Taller iglekids 1
Taller iglekids 1Taller iglekids 1
Taller iglekids 1adelisj
 

Destaque (19)

Integrating Ecostrategic Thinking @ Racing in Virtues
Integrating Ecostrategic Thinking @ Racing in VirtuesIntegrating Ecostrategic Thinking @ Racing in Virtues
Integrating Ecostrategic Thinking @ Racing in Virtues
 
FEL 12 Release Notes
FEL 12 Release NotesFEL 12 Release Notes
FEL 12 Release Notes
 
Trabalho Multidisciplinar com Africanidade e Cultura Indígena
Trabalho Multidisciplinar com Africanidade e Cultura Indígena Trabalho Multidisciplinar com Africanidade e Cultura Indígena
Trabalho Multidisciplinar com Africanidade e Cultura Indígena
 
Making Rajasthan Green using Weather Modificatin Technologies
Making Rajasthan Green using Weather Modificatin Technologies Making Rajasthan Green using Weather Modificatin Technologies
Making Rajasthan Green using Weather Modificatin Technologies
 
Classon halmet
Classon halmetClasson halmet
Classon halmet
 
ford company
ford companyford company
ford company
 
The daunting mission to achieve customer success
The daunting mission to achieve customer successThe daunting mission to achieve customer success
The daunting mission to achieve customer success
 
جاذبه های گردشگری چابهار - Chabahar Tourist attractions
جاذبه های گردشگری  چابهار - Chabahar Tourist attractionsجاذبه های گردشگری  چابهار - Chabahar Tourist attractions
جاذبه های گردشگری چابهار - Chabahar Tourist attractions
 
Web Content Creation
Web Content CreationWeb Content Creation
Web Content Creation
 
Pegasus Pulp Publishing 2013 Catalogue
Pegasus Pulp Publishing 2013 CataloguePegasus Pulp Publishing 2013 Catalogue
Pegasus Pulp Publishing 2013 Catalogue
 
150427 harold alderman workshop_en
150427 harold alderman workshop_en150427 harold alderman workshop_en
150427 harold alderman workshop_en
 
Sean's Resume 2015 (Linkedin update )
Sean's Resume 2015 (Linkedin update )Sean's Resume 2015 (Linkedin update )
Sean's Resume 2015 (Linkedin update )
 
Regulamento Bom pra tudo
Regulamento Bom pra tudoRegulamento Bom pra tudo
Regulamento Bom pra tudo
 
150509 npo・ngoの組織基盤強化のためのワークショップin岡山 進行スライド
150509 npo・ngoの組織基盤強化のためのワークショップin岡山 進行スライド150509 npo・ngoの組織基盤強化のためのワークショップin岡山 進行スライド
150509 npo・ngoの組織基盤強化のためのワークショップin岡山 進行スライド
 
Acuerdo comercial entre la unión europea, colombia
Acuerdo comercial entre la unión europea, colombiaAcuerdo comercial entre la unión europea, colombia
Acuerdo comercial entre la unión europea, colombia
 
Hemorragia de Tubo digestivo superior
Hemorragia de Tubo digestivo superiorHemorragia de Tubo digestivo superior
Hemorragia de Tubo digestivo superior
 
HISTÒRIA DEL POP-ROCK (50s i 60s)
HISTÒRIA DEL POP-ROCK (50s i 60s)HISTÒRIA DEL POP-ROCK (50s i 60s)
HISTÒRIA DEL POP-ROCK (50s i 60s)
 
Global entry strategies global p s of marketing
Global entry strategies global p s of marketingGlobal entry strategies global p s of marketing
Global entry strategies global p s of marketing
 
Taller iglekids 1
Taller iglekids 1Taller iglekids 1
Taller iglekids 1
 

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

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

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

"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs..."How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
 
Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2Миграция кода с Magento 1 на Magento 2
Миграция кода с Magento 1 на Magento 2
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатора
 
2IDE~1.PPT
2IDE~1.PPT2IDE~1.PPT
2IDE~1.PPT
 
KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)
KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)
KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)
 
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеДенис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в Яндексе
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language Runtime
 
InterBase на разных устройствах быстрый старт. 2017-03-30
InterBase на разных устройствах быстрый старт. 2017-03-30 InterBase на разных устройствах быстрый старт. 2017-03-30
InterBase на разных устройствах быстрый старт. 2017-03-30
 
Workflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеWorkflow: работа над проектом в Яндексе
Workflow: работа над проектом в Яндексе
 
Dotnet
DotnetDotnet
Dotnet
 
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
Interbase xe7 - универсальная субд для windows linux mac ios android
Interbase xe7 - универсальная субд для windows linux mac ios androidInterbase xe7 - универсальная субд для windows linux mac ios android
Interbase xe7 - универсальная субд для windows linux mac ios android
 
Проверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийПроверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложений
 
Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.
 
Управление гибридным ландшафтом с помощью Cisco CloudCenter
Управление гибридным ландшафтом с помощью Cisco CloudCenterУправление гибридным ландшафтом с помощью Cisco CloudCenter
Управление гибридным ландшафтом с помощью Cisco CloudCenter
 
Java one presentation
Java one presentationJava one presentation
Java one presentation
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
внедрении Wpf в сложных системах
внедрении Wpf в сложных системахвнедрении Wpf в сложных системах
внедрении Wpf в сложных системах
 

Mais de Yury Yurevich

ekb.py: KISS REST API
ekb.py: KISS REST APIekb.py: KISS REST API
ekb.py: KISS REST APIYury Yurevich
 
ekb.py: Mini Zen of Python
ekb.py: Mini Zen of Pythonekb.py: Mini Zen of Python
ekb.py: Mini Zen of PythonYury Yurevich
 
PyCon UA 2011: Test Infected
PyCon UA 2011: Test InfectedPyCon UA 2011: Test Infected
PyCon UA 2011: Test InfectedYury Yurevich
 
Александр Гладыш — Visual editor for business logic in Lua and JS
Александр Гладыш — Visual editor for business logic in Lua and JSАлександр Гладыш — Visual editor for business logic in Lua and JS
Александр Гладыш — Visual editor for business logic in Lua and JSYury Yurevich
 
Лев Валкин — Кое-что про Erlang
Лев Валкин — Кое-что про ErlangЛев Валкин — Кое-что про Erlang
Лев Валкин — Кое-что про ErlangYury Yurevich
 
Иван Иноземцев — Fantom
Иван Иноземцев — FantomИван Иноземцев — Fantom
Иван Иноземцев — FantomYury Yurevich
 
Александр Гладыш — Lua
Александр Гладыш — LuaАлександр Гладыш — Lua
Александр Гладыш — LuaYury Yurevich
 
About (unit) testing
About (unit) testingAbout (unit) testing
About (unit) testingYury Yurevich
 
Almost Success Story: Unix to Linux migration
Almost Success Story: Unix to Linux migrationAlmost Success Story: Unix to Linux migration
Almost Success Story: Unix to Linux migrationYury Yurevich
 

Mais de Yury Yurevich (12)

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

Ильшад Хабибуллин — 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