Download - Ильшад Хабибуллин — BlueBream
![Page 2: Ильшад Хабибуллин — BlueBream](https://reader038.vdocument.in/reader038/viewer/2022100602/557ed2bad8b42a706f8b50b6/html5/thumbnails/2.jpg)
Базисидеи, ведущие к появлению BlueBream
Over-engineeringчерез предвосхищение
Расширяемость какнеобходимое условие
➔ ООП иерархии➔ Код для вставки хуков➔ Лишние абстракции➔ Написание библиотеки фреймворков на ровномместе
Есть такие проекты, где этонеобходимо
➔ Проекты с постоянно изменяемыми требованиями➔ Расширяемые продукты
КОНФЛИКТ
![Page 3: Ильшад Хабибуллин — BlueBream](https://reader038.vdocument.in/reader038/viewer/2022100602/557ed2bad8b42a706f8b50b6/html5/thumbnails/3.jpg)
Вынос over-engineeringна сторону
Over-engineeringчерез предвосхищение
Расширяемость какнеобходимое условие
➔ ООП иерархии➔ Код для вставки хуков➔ Лишние абстракции➔ Написание библиотеки фреймворков на ровномместе
Есть такие проекты, где этонеобходимо
➔ Проекты с постоянно изменяемыми требованиями➔ Расширяемые продукты
Тулкит
![Page 4: Ильшад Хабибуллин — BlueBream](https://reader038.vdocument.in/reader038/viewer/2022100602/557ed2bad8b42a706f8b50b6/html5/thumbnails/4.jpg)
ZTK• Launchpad• Shooltool• Plone• ERP5• ...
BlueBream➔ Быстрый старт➔ Конфигурации по умолчанию➔ Интегрирующая документация
Инфраструктура,интеграция инструментов в
фреймворк
![Page 5: Ильшад Хабибуллин — BlueBream](https://reader038.vdocument.in/reader038/viewer/2022100602/557ed2bad8b42a706f8b50b6/html5/thumbnails/5.jpg)
● Интерфейсы● Реестры компонент:
глобальные и локальные
● Компонентная архитектура, основанная на адаптерах
● Security Proxy
● Декларативный язык ZCML
● Развертывание: Buildout
Важные идеи BlueBream
![Page 6: Ильшад Хабибуллин — BlueBream](https://reader038.vdocument.in/reader038/viewer/2022100602/557ed2bad8b42a706f8b50b6/html5/thumbnails/6.jpg)
● Интерфейсы● Реестры компонент: глобальные и
локальные
● Компонентная архитектура, основанная на адаптерах
● 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
![Page 7: Ильшад Хабибуллин — BlueBream](https://reader038.vdocument.in/reader038/viewer/2022100602/557ed2bad8b42a706f8b50b6/html5/thumbnails/7.jpg)
● Интерфейсы
● Реестры компонент: глобальные и локальные
● Компонентная архитектура, основанная на адаптерах
● Security Proxy
● Декларативный язык ZCML
● Развертывание: Buildout
class Foo:implements(IFoo) Реестр
class Foo:pass
Python объекты становятся компонентамитогда, когда они зарегистрированы вреестрах компонент
ЗАПРОC:
● interface● name
Выбирает компоненты
![Page 8: Ильшад Хабибуллин — BlueBream](https://reader038.vdocument.in/reader038/viewer/2022100602/557ed2bad8b42a706f8b50b6/html5/thumbnails/8.jpg)
● 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
![Page 9: Ильшад Хабибуллин — BlueBream](https://reader038.vdocument.in/reader038/viewer/2022100602/557ed2bad8b42a706f8b50b6/html5/thumbnails/9.jpg)
● Security Proxy● Декларативный язык ZCML
● Развертывание: Buildout
● Интерфейсы
● Реестры компонент: глобальные и локальные
● Компонентная архитектура, основанная на адаптерах
Все объекты обернуты в Security Proxy
![Page 10: Ильшад Хабибуллин — BlueBream](https://reader038.vdocument.in/reader038/viewer/2022100602/557ed2bad8b42a706f8b50b6/html5/thumbnails/10.jpg)
● Security Proxy
● Декларативный язык ZCML
● Развертывание: Buildout
● Интерфейсы
● Реестры компонент: глобальные и локальные
● Компонентная архитектура, основанная на адаптерах
Декларативные конструкции - на декларативном языке.
Простой XML с одним уровнем вложенности.
![Page 11: Ильшад Хабибуллин — BlueBream](https://reader038.vdocument.in/reader038/viewer/2022100602/557ed2bad8b42a706f8b50b6/html5/thumbnails/11.jpg)
● Security Proxy
● Декларативный язык ZCML
● Развертывание: Buildout
● Интерфейсы
● Реестры компонент: глобальные и локальные
● Компонентная архитектура, основанная на адаптерах
$ python bootstrap.py$ bin/buildout
$ bin/paster serve deploy.ini
![Page 12: Ильшад Хабибуллин — BlueBream](https://reader038.vdocument.in/reader038/viewer/2022100602/557ed2bad8b42a706f8b50b6/html5/thumbnails/12.jpg)
http://bluebream.ruhttp://bluebream.zope.org
Ильшад Хабибуллинhttp://astoon.zwiki.org