Как изучать Zope - Как стать разработчиком Zope. Создан: Itamar Shtull-Trauring. Последнее обновление 2000/10/18. Перевод: Константин Суржин. Редактор: Олег Бройтман. Последнее обновление 2001/04/06. Рассказывает, как стать разработчиком Zope - полный путеводитель (руководство). Вы может найти хорошие HTML и PDF версии на домашней страничке Learning Zope. Содержание 0. Содержание 1. Введение. 1.1. Соглашения. 1.2. Генеральные советы. 2. Предварительные замечания. 2.1. Питон. 2.2. HTTP, CGI, Cookies. 3. Zope Newbie (новичок). 3.1. ZCatalog. 4. Zope Юниор. 4.1. Zope APIs. 4.2. Создание компонентов Zope. 4.3. Расширенные Классы и Заимствование.(ExtensionClass and Acquisition). 4.4. ZODB, Хранение и Транзакции. 4.5. Создание специальных DTML тегов 4.6. Отладка. 5. Мастер Zope. 5.1. Разработка ядра Zope. 5.2. Настройка хранилища ZODB. 5.3. Zope Enterprise Objects. 5.4. Кэширование. 5.5. Дискуссионные группы. 5.6. ZPatterns. 5.7. Членство и источники пользователей. 5.8. Средства создания порталов. 5.9. Расписание - периодические операции. 5.10. XML. 5.11. XML-RPL, SOAP and ZPublisher. Client. 5.12. Управление сессией. 5.13. Электронная коммерция. 5.14. Методы Perl. 5.15. Виртуальный хостинг и другая URL всячина. 5.16. Другие полезные средства. A. Получение помощи. A..1 Коммерческая поддержка. A..2 Почтовые рассылки. A..3 IRC. A..4 Отчеты об ошибках. Введение. Zope - это среда разработки web-приложений, созданная фирмой Digital Creations (DC). Этот документ не собирается рассказывать Вам, почему Вам использовать Zope. Вместо этого он намеревается показать ресурсы, которые позволят Вам узнать, как использовать Zope. Для знакомства с тем, как работает Zope, посетите http://www.zope.org/WhatIsZope. В этом документе я описываю различные уровни знаний, используя термины, которые я позаимствовал из Advogato - http://www.advogato.org - Ученик, Подмастерье, Новичок, Юнга, Юниор, Учитель, Магистр, Мастер. По мере продвижения в ваших знаниях Вы будете продвигаться в вашей категории, пока, наконец, не станете Магистром, и не станете отвечать на вопросы Newbies'. Если я ссылаюсь на файл, пока я не заявляю иначе, я ссылаюсь на поддиректорию $ZOPEHOME/lib/python/. Например, если Zope инсталлирован в /home/zope, то файл OFS/Image.py может быть найден в /home/zope/lib/pyton/OFS/Image.py. Я предполагаю, что Zope инсталлирован на вашей локальной машине и может быть доступен по адресу http://localhost:8080. 1.2. Общие советы. 1.2.1. Исходники - ваши друзья. Исходные коды Zope имеют множество вложенной документации и примеры - используйте их. 1.2.2 На сайте http://www.zope.org имеется сотни "Howtos" (технических рекомендаций), советов, конечных продуктов и документация. 1.2.3 Вы можете найти множество информации на сайте проекта документации Zope http://zdp.zope.org. 2. Предварительные замечания. Перед тем, как Вы начнете использовать Zope, Вам необходимо усвоить несколько вещей, которые помогут Вам понять, как он работает. 2.1 Питон. Питон - язык программирования, на котором написан Zope. Знание Питона необходимо, если Вы намереваетесь разрабатывать серьезные приложения Zope, это также поможет Вам понять язык DTML и другие базовые части Zope. Zope в настоящее время использует версию 1.5.2, но в будущем он будет обновлен для того чтобы использовать версии 2.x. Главным ресурсом Питона является сайт http://www.python.org. Раздел документации http://www.python.org/doc/ содержит большинство или даже всю информацию, которая Вам понадобиться для изучения Питона. Начните с обучающей страницы http://www.python.org/doc/current/tut/tut.html и, двигаясь от этого отправного пункта, постепенно продвигайтесь дальше. Имеется некоторое количество книг написанных о Питоне - здесь полный список этих книг: http://www.python.org/psa/bookstore/. Мне особенно нравится "Основной справочник Питона": http://bn.bfast.com/booklink/click?sourceid=10922&ISBN=0735709017, который, как и сказано в заголовке, основной справочник по Питону. Имеются также вводные беседы по Питону: http://shell.rmi.net/~lutz/talk.html. 2.2 HTTP, CGI, Cookies. Документация о том, как работает web, может быть найдено по адресу: http://www.stud.ifi.uio.no/~lmariusg/download/artikler/HTTP_tut.html. Главный способ взаимодействия с Zope состоит в общении через HTTP протокол, он также получает свои аргументы через CGI протокол. Некоторые знание обоих протоколов могут быть крайне необходимы для отладки определенных проблем. Вы можете найти некоторые базовые сведения на сайте W3: http://www.w3c.org. Смотрите документы RFC 2616, 2617 и 1867. Вы можете найти хорошие версии этих документов в формате HTTP по адресу http://community.roxen.com/developers/idocs/, а HTTP 1.1 RFC (2616) на странице http://www.w3.org/Protocols/rfc2616/rfc2616.html. Вы можете узнать про "куки" по адресу http://home.netscape.com/newsref/std/cookie_spec.html и в RFC 2109 и 2965. Главный справочник по протоколу CGI находится по адресу http://Web.Golux.Com/coar/cgi/. 3. Новички. Отлично, Вы установили последнюю версию сервера Zope http://www.zope.org/Products/Zope. Ну и что? Единственным наиболее полным и многообещающим источником информации по Zope является книга по Zope от O'Relly авторы Amos Latteier and Michel Pelletier. Эта книга еще не опубликована, но Вы можете прочитать существующие части по адресу: http://www.zope.org/Members/michel/ZB/. Несмотря на то, что она полностью не закончена, существующий текст содержит основное количество полезной информации, и она становится день ото дня все лучше и лучше. Как я полагаю, все ресурсы в разделе новичков имеют эквивалент в книжке Zope, так что мой вам совет - прочтите сначала ее. Другим великолепным источником является помощь в оперативном режиме Zope. Вы может получить к ней доступ, нажав кнопку Help на любом из управляющих экранов, или по адресу http://localhost:8080/HelpSys. Она включает помощь на управляющие экраны, справочник API для разработчиков DTML; новые версии Zope (2.2.3 и новее) как правило, содержат справочник DTML. Другие полезные ресурсы для новичков: Справочник по DTML http://www.zope.org/Documentation/Guides/DTML-HTML/DTML.html. ZSQL Methods: http://www.zope.org/Documentation/Guides/ZSQL-HTML/ZSQL.html. ZClasses: http://www.zope.org/Documentation/Guides/ZDG-HTML/ZDG.6.html. Множество документации может быть найдено по адресу http://www.zope.org/Documentation включая How-to и разнообразные советы. 4. Юниор. Наконец Вы преодолели основы Zope, и настало время двигаться дальше, узнать больше о том, как работает Zope изнутри. 4.1. Для того чтобы работать с внутренностями Zope, Вам надо знать его API. В дополнение к опубликованным в документам, Вы можете найти больше информации по API Zope используя: чтение исходников Zope; посетив Interfaces Wiki. Эта информация не всегда точна и нова, но все еще очень полезна. http://www.zope.org/Members/michel/Projects/Interfaces/FrontPage. 4.2. Создание компонентов Zope. Расширять Zope путем добавления компонентов - стандартный способ для создания развитых приложений Zope. По этой теме имеется два главных справочника: Учебник по созданию компонентов Zope: http://old.zope.org/Members/hathawsh/PythonProductTutorial/TutorialPoll. Руководство разработчика компонентов: http://www.zope.org/Members/mcdonc/PDG. 4.3 ExtensionClass and Acquisition. ExtensionClass - это пакет Питона, который позволяет разработчикам создавать на Си классы для Питона, от которых в Питоне можно наследоваться. ExtensionClass используется для поддержки механизмов Acquisition и Persistence в Zope. Последние исходные тексты ExtensionClass and Acquistion приходят вместе с дистрибутивом Zope. Документация на ExtensionClass - http://www.digicool.com/releases/ExtensionClass/. Документация на Acquistion - http://www.digicool.com/releases/ExtensionClass/Acquisition.html. (Примечание редактора. Таких адресов уже нет и найти эту документацию не удается. У меня сохранились старые копии, если кому надо.) Что есть Acquistion - http://www.zope.org/Members/Amos/WhatIsAcquisition. Алгебра Acquistion http://www.zope.org/Members/jim/Info/IPC8/AcquisitionAlgebra/siframes.htm. 4.4.ZODB. ZODB - это встроенная в Zope объектная база данных. Объекты, которые сохранены в этой базе, могут наследоваться из хранимых классов (Persistent). ZODB - транзактная база (поддерживает транзакции). Введение AMK's в ZODB: http://starship.python.net/~amk/zodb/zodb-zeo.html. (Примечание редактора. Такого адреса нет. Новый адрес http://www.amk.ca/zodb/) Документ на ZODB от Джима Фултона (Jim Fulton): http://www.python.org/workshops/2000-01/proceedings/papers/fulton/zodb3.html. Как работать с ZODB или как создать ZODB: http://www.zope.org/Members/michel/HowTos/ZODB-How-To. UML модель ZODB: http://www.zope.org/Documentation/Developer/Models/ZODB. Как работать с транзакциями: http://www.zope.org/Members/mcdonc/HowTos/transaction. 4.5. Создание специальных DTML тегов. DTML позволяет Вам создавать ваши собственные специальные теги. Например, посмотрите на продукты Mailhost, тэг в каталоге Products/MailHost/SendMailTag.py в каталоге, куда Вы установили Zope, а также продукт MIMETools (Products/MIMETools). Имеется также документ, объясняющий как создать: http://www.zope.org/Members/z113/1. 4.6. Отладка. Отладчик - ваш друг: http://www.zope.org/Members/michel/HowTos/TheDebuggerIsYourFriend. Некоторое количество отладочных методик - http://www.zope.org/Members/klm/debuggingzope. Отслеживание повисания при помощи лог файлов (debug log) - http://www.zope.org/Members/mcdonc/HowTos/DEBUG-LOG. Отладка с помощью мониторинга - http://www.zope.org/Documentation/Misc/DEBUGGING.txt. Заметки об отладке из списков рассылки - http://www.zope.org/Members/teyc/howtoDebugZope2. 5. Мастер. Получив знания, необходимые для Юниора и Подмастерья, Вы теперь мастер. Это не значит, что Вам больше нечему учиться - в действительности как раз напротив. Вот простой список тем, которые Вы можете посмотреть для углубления знаний. 5.1 Разработка ядра Zope. Очень важно быть в курсе последних разработок Zope. Вы можете получить последнюю разработанную версию Zope из CVS, чтобы попробовать новые самые передовые свойства (с новыми ошибками, конечно). http://www.zope.org/Resources/CVS_info. Вы можете просмотреть репозитарий CVS по адресу http://cvs.zope.org/. Больше информации может быть найдено по адресу http://www.zope.org/Resources/CVS. Планы разработчиков Zope и информация о последних дополнениях ядра Zope можно найти по адресу: http://dev.zope.org/. 5.2. Настройка хранилища ZODB. Обычно ZODB располагается в хранилище файлового типа, в файле под названием Data.fs. Однако Вы можете сохранять ее в любом другом типе хранилища. Хранилище Oracle - хранение ZODB в Oracle: http://www.zope.org/Products/OracleStorage. Хранилище Berkeley DB: http://www.zope.org/Members/tsarna/BerkeleyStorage. Сжатое хранилище: http://www.zope.org/Members/tsarna/CompressedStorage. Директорное хранилище: http://www.ppetru.net/software/index.html. Zope на CD (хранение с доступом только на чтение): http://www.zope.org/Members/jens/docs/zope_on_cdrom. Для дополнительных примеров посмотрите в директорию ZODB - где Вы установили ZOPE. 5.3 Zope Enterprise Objects. ZEO - расширение ZODB, которое превращает ZODB в распределенную объектную базу данных. Это позволяет обслуживать одну и ту же базу данных с различных машин, тестировать разработанный код на той же самой базе данных в то время когда Вы покинули сайт; имеются и другие направления использования. Узнать больше можно здесь: http://www.zope.org/Products/ZEO. 5.4. Кэширование. Имеется два вида кэширования - внутреннее кэширование Zope и HTTP кэширование. Для информации о HTTP кэшировании посетите сайт http://www.mnot.net/cache_docs/. Вы можете посмотреть, как Zope воплощает в жизнь эти заголовки в файле OFS/Image.py, в классе File. Следующая версия Zope(2.3?) будет содержать Менеджер кэша, который позволит внутреннее кэширование: http://dev.zope.org/Wikis/DevSite/Projects/CacheManager/. 5.5. Дискуссионные группы. Некоторое количество разнообразных продуктов дополняют Zope дискуссионными возможностями. Главные из них - это squishdot http://www.squishdot.org/ и ZUBB http://www.zope.org/Members/BwanaZulia/ZUBB. 5.6 ZPatterns. ZPatterns - это основа развитой разработки для Zope, включающая модель событий (событийную модель), общее предоставление данных и множество действительно сложных, свежих вещей, которые Вы сразу полюбите, как только поймете, как использовать их; освоение этого может занять продолжительное время. http://www.zope.org/Members/pje/ZPatterns содержит некоторую документацию. (Примечание редактора. Новый адрес http://dev.zope.org/Members/pje/Wikis/ZPatterns/) 5.7. Членство и источники для пользователей. По умолчанию Zope позволяет Вам сохранять в ZODB и проводить аутентификацию, используя HTTP Basic Authentication. Если Вы хотите сохранять информацию о ваших пользователях в базе данных SQL, получать ее с сервера LDAP, или проводить аутентификацию, используя cookie, Вам нужны альтернативные папки Zope. Большинство из расширенных альтернатив предоставляет LoginManager http://www.zope.org/Members/tsarna/LoginManager, который позволяет Вам надстраивать различные методы аутентификации и источники информации о пользователях. Получение информации о пользователях из SQL/LDAP/Windows/passwd очень легко, Вам просто надо написать корректный метод: http://www.zope.org/Members/jok/SQL_based_LoginManager - это пример того, как надо использовать SQL. Вы можете найти другие, менее общие методы для этого на http://www.zope.org/Products/user_management. Продукт, предоставляющий управление членством на сайте, созданном с помощью Zope - http://www.zope.org/Members/Bill/Products/Membership - дает поддержку членства. Позволяет пользователем устанавливать соединение, менять пароль, устанавливать свои настройки, и т.д. 5.2. Рабочие инструменты портала. PTK имеет все, что Вы ожидаете от портала. Он позволяет Вам разрабатывать ваш собственный портал. Лучшим примером является, конечно, http://www.zope.org/, который запущен на древнейшей версии PTK. Вы можете узнать больше на странице http://www.zope.org/Products/PTK. (Примечание редактора. Новый адрес http://cmf.zope.org/) 5.3. Расписание. Регулярные события могут быть получены двумя путями: Внешним: используя cron - http://www.zope.org/Members/lalo/cron,