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

What's hot

Работаем с 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 NEW
UNETA
 
Игорь Кашкута
Игорь КашкутаИгорь Кашкута
Игорь Кашкута
CodeFest
 
Google protocol buffers в мобильных проектах
Google protocol buffers в мобильных проектахGoogle protocol buffers в мобильных проектах
Google protocol buffers в мобильных проектах
ciklum_ods
 

What's hot (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 в мобильных проектах
 

Viewers also liked

Integrating Ecostrategic Thinking @ Racing in Virtues
Integrating Ecostrategic Thinking @ Racing in VirtuesIntegrating Ecostrategic Thinking @ Racing in Virtues
Integrating Ecostrategic Thinking @ Racing in Virtues
Center for Ecological Audit,Social Inclusion and Governance
 
FEL 12 Release Notes
FEL 12 Release NotesFEL 12 Release Notes
FEL 12 Release Notes
chitlesh
 
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
 
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
Center for Ecological Audit,Social Inclusion and Governance
 
Classon halmet
Classon halmetClasson halmet
Classon halmet
jabir abbas
 
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
Jacco vanderKooij
 
جاذبه های گردشگری چابهار - Chabahar Tourist attractions
جاذبه های گردشگری  چابهار - Chabahar Tourist attractionsجاذبه های گردشگری  چابهار - Chabahar Tourist attractions
جاذبه های گردشگری چابهار - Chabahar Tourist attractionsjamilahmad nabatzahi
 
Web Content Creation
Web Content CreationWeb Content Creation
Web Content Creation
Digimacademy
 
Pegasus Pulp Publishing 2013 Catalogue
Pegasus Pulp Publishing 2013 CataloguePegasus Pulp Publishing 2013 Catalogue
Pegasus Pulp Publishing 2013 Catalogue
Cora Buhlert
 
150427 harold alderman workshop_en
150427 harold alderman workshop_en150427 harold alderman workshop_en
150427 harold alderman workshop_en
SUN_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
 
Regulamento Bom pra tudo
Regulamento Bom pra tudoRegulamento Bom pra tudo
Regulamento Bom pra tudo
diario_catarinense
 
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, colombia
Natali Manrique
 
Hemorragia de Tubo digestivo superior
Hemorragia de Tubo digestivo superiorHemorragia de Tubo digestivo superior
Hemorragia de Tubo digestivo superior
eddynoy 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 marketing
Sourav Karmakar
 
Taller iglekids 1
Taller iglekids 1Taller iglekids 1
Taller iglekids 1
adelisj
 

Viewers also liked (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
 

Similar to Ильшад Хабибуллин — 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 2
Elogic Magento Development
 
Robot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатораRobot Framework: универсальный инструмент автоматизатора
Robot Framework: универсальный инструмент автоматизатора
SQALab
 
2IDE~1.PPT
2IDE~1.PPT2IDE~1.PPT
2IDE~1.PPT
exxdisillusion69
 
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 Runtime
GetDev.NET
 
InterBase на разных устройствах быстрый старт. 2017-03-30
InterBase на разных устройствах быстрый старт. 2017-03-30 InterBase на разных устройствах быстрый старт. 2017-03-30
InterBase на разных устройствах быстрый старт. 2017-03-30
sandy97
 
Workflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеWorkflow: работа над проектом в Яндексе
Workflow: работа над проектом в Яндексе
Denis Chistyakov
 
Dotnet
DotnetDotnet
Dotnet
MonsterXX
 
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 html5
Provectus
 
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
Andrew Sovtsov
 
Проверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийПроверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийMedia Gorod
 
Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.DrupalForumZP2012
 
Управление гибридным ландшафтом с помощью Cisco CloudCenter
Управление гибридным ландшафтом с помощью Cisco CloudCenterУправление гибридным ландшафтом с помощью Cisco CloudCenter
Управление гибридным ландшафтом с помощью Cisco CloudCenter
Cisco Russia
 
Java one presentation
Java one presentationJava one presentation
Java one presentation
Shamim bhuiyan
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
Yandex
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
Yandex
 
внедрении Wpf в сложных системах
внедрении Wpf в сложных системахвнедрении Wpf в сложных системах
внедрении Wpf в сложных системах
WhiteMbIXA
 

Similar to Ильшад Хабибуллин — 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 в сложных системах
 

More from 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 Infected
Yury 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
Лев Валкин — Кое-что про Erlang
Yury Yurevich
 
Иван Иноземцев — Fantom
Иван Иноземцев — FantomИван Иноземцев — Fantom
Иван Иноземцев — Fantom
Yury Yurevich
 
Александр Гладыш — Lua
Александр Гладыш — LuaАлександр Гладыш — Lua
Александр Гладыш — Lua
Yury Yurevich
 
Decorators' recipes
Decorators' recipesDecorators' recipes
Decorators' recipes
Yury Yurevich
 
About Python
About PythonAbout Python
About Python
Yury Yurevich
 
About (unit) testing
About (unit) testingAbout (unit) testing
About (unit) testing
Yury Yurevich
 
SQLAlchemy Seminar
SQLAlchemy SeminarSQLAlchemy Seminar
SQLAlchemy Seminar
Yury 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 migration
Yury Yurevich
 

More from 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