FastNetMon

Показаны сообщения с ярлыком Zope. Показать все сообщения
Показаны сообщения с ярлыком Zope. Показать все сообщения

четверг, 2 сентября 2010 г.

Вышел Plone 4

Вот новость: http://plone.org/news/plone-4-released, а вот отличный пошаговый курс по новым фичам http://plone.org/products/plone/features

Из волнующих лично меня изменений в первую очередь стоит отметить, что теперь используется Python 2.6 (ссылка), 3я же версия Plone не работала ни с 2.5 ни с 2.6, что вызывало много проблем при установке Plone. Если же говорить о планах на будущее, то 4.1 версия будет поддерживать Python 2.7 (ссылка).

Также не стоит забывать, на базе чего работает Plone - это платформа приложений Zope. Plone 4 базируется на ее 2.12 версии (ссылка). Также обращаю внимание, что не стоит искать эту версию на офсайте Zope 2, она доступна через egg: http://pypi.python.org/pypi/Zope2/2.12.8

вторник, 16 марта 2010 г.

Работа с Zeo из Python

Для начала ставим Zope/Zeo: http://phpsuxx.blogspot.com/2010/03/zope-2123-debian-5-lenny.html


#!/usr/bin/env python

from ZEO.ClientStorage import ClientStorage
from ZODB import DB
import transaction

class MyRemoteZODB(object):
def __init__(self, server, port):
server_and_port = (server, port)
self.storage = ClientStorage(server_and_port)
self.db = DB(self.storage)
self.connection = self.db.open()
self.dbroot = self.connection.root()

def close(self):
self.connection.close()
self.db.close()
self.storage.close()

# write data

mydb = MyRemoteZODB('localhost', 8100)
dbroot = mydb.dbroot

dbroot = mydb.dbroot
dbroot['a_number'] = 3
dbroot['a_string'] = 'Gift'
dbroot['a_list'] = [1, 2, 3, 5, 7, 12]
dbroot['a_dictionary'] = { 1918: 'Red Sox', 1919: 'Reds' }
dbroot['deeply_nested'] = { 1918: [ ('Red Sox', 4), ('Cubs', 2) ],1919: [ ('Reds', 5), ('White Sox', 3) ], }

transaction.commit()
mydb.close()

# read data

mydb = MyRemoteZODB('localhost', 8100)
dbroot = mydb.dbroot

for key in dbroot.keys():
print key + ':', dbroot[key]

mydb.close()



Как результат будет примерно такое:

a_list: [1, 2, 3, 5, 7, 12]
a_dictionary: {1918: 'Red Sox', 1919: 'Reds'}
a_string: Gift
Application:
a_number: 3
deeply_nested: {1918: [('Red Sox', 4), ('Cubs', 2)], 1919: [('Reds', 5), ('White Sox', 3)]}


Ну что, нравится? :)) О сокращении стоимости разработки при использовании вот такой штуки мне даже страшно думать! Даже если располагать базы только на SSD это будет все равно дико экономически эффективно.

Источник примеров: http://www.ibm.com/developerworks/aix/library/au-zodb/

Сброс пароля Zope

Это довольно легко:

cd /opt/zopeinstance
zpasswd.py inituser


Username: admin
Password:
Verify password:

Please choose a format from:[enter]

SHA - SHA-1 hashed password (default)
CRYPT - UNIX-style crypt password
CLEARTEXT - no protection

Encoding: [enter]
Domain restrictions:[enter]


взято с: https://mail.zope.org/pipermail/zope/2003-June/136938.html

понедельник, 15 марта 2010 г.

Что использовать - Zope 3 или же Zope 2?

http://blogs.nuxeo.com/dev/2005/10/zope2-vs-zope3-faq.html

Частично цитирую:

Should I use Zope 2 or Zope 3?
Short answer:
If you need a product that runs on Zope 2, like for example CPS, Plone or Silva, you should use Zope 2. Otherwise you should use Zope3.


Ну и вкратце для любителей "оно лучше" / "оно хуже" отвечаю - "они разные" (Фактически, это разные ветки без совместимости между друг другом. Разве что названием совпадают), но если нужны все спец фичи - юзайте Zope 3 и не задумывайтесь особо :) Все остальные озвученые продукты сделаны на основе Zope 2 не от того, что Zope 3 плохой, а из-за того, что нет смысла их портировать на "другой" Zope 3.

Хотя с другой стороны, по означенной выше причине (Plone и ко), к 3ей версии скорее всего интерес меньше и как следствие проблемы с документацией и, возможно, со стабильностью работы. Также есть ориентированность тройки не на создание сайтов, а на обычную веб-разработку, что также немного сокращает целевую аудиторию.

Так что лично я для себя решил использовать Zope2.

Будущее наступило! ZODB

Хорошая статья по работе с объектной базой данных ZODB: http://www.komtet.ru/info/zope/vvedenie-v-zodb.-avtor-michel-pelletier а вот мануал по работе с ZODB / Zeo http://www.ibm.com/developerworks/aix/library/au-zodb/

А вот измерение скоростных характеристик: http://209.85.135.132/search?q=cache:opzIpUGB4w4J:zope3.ru/stati/testiruem-zodb-na-skorost+zodb&cd=4&hl=ru&ct=clnk&gl=ru

И вот еще - http://www.upfrontsystems.co.za/Members/roche/where-im-calling-from/zodb-benchmarks-revisited

И еще: http://www.upfrontsystems.co.za/Members/roche/where-im-calling-from/zodb-benchmarks/

Также есть очень меткая цитата про ZODB - "ZODB is a low-write high-read database".

воскресенье, 7 марта 2010 г.

Сравнение J2EE / Rails / Zope, Plone от NASA

http://video.google.com/videoplay?docid=6297126166376226181#

Установка Zope 2.12.3 на Debian 5 Lenny из исходников

Официальный сайт Zope2: http://zope2.zope.org/ а вот инструкция по установке http://docs.zope.org/zope2/releases/2.12/INSTALL.html Обращаю внимание, что 2.12 релиз Zope поддерживает как Python 2.5 так и 2.4 http://docs.zope.org/zope2/releases/2.12/WHATSNEW.html так что никаких извращений с установкой в /opt старого Python не требуется.

Ставим easy_install:
apt-get install -y python-setuptools python-virtualenv


Создаем и переходим в виртуальную среду для установки Zope (чтобы не повредить существующую систему, а также не повредить библиотекам самого Zope):
virtualenv /opt/zope212
cd /opt/zope212
source bin/activate


Ставим зависимости:

apt-get install -y gcc python-dev


Запускаем установку:
bin/easy_install zope2


Создаем instance Zope приложения:

bin/mkzopeinstance
Please choose a directory in which you'd like to install
Zope "instance home" files such as database files, configuration
files, etc.

Directory: /opt/zopeinstance
Please choose a username and password for the initial user.
These will be the credentials you use to initially manage
your new Zope instance.

Username: admin
Password:
Verify password:


Переходим в папку инстанса Zope:
cd /opt/zopeinstance/


Создаем юзера для Zope:
useradd zope


Открываем конфиг инстанса:

vi etc/zope.conf


И добавляем в самый низ имя юзера:
effective-user zope


А теперь делаем владельцем всех файлов юзера Zope:

chown zope:zope -R /opt/zopeinstance


Запускаем во отладочном режиме:
bin/zopectl fg
.
daemon process started, pid=1831


Либо запускаем в продакшен-режиме:

bin/zopectl start


Открываем веб-консоль администрирования и логинимся в нее с ранее заданными логином и паролем:
http://xx.xx.xx.xx:8080/manage


Если же Вы хотите поставить Zeo инстанс (распределенная версия хранилища с возможностью конкурентного доступа к ней), то используйте следующий мануал: http://docs.zope.org/zope2/zope2book/ZEO.html

Создаем Zeo инстанс:

bin/mkzeoinstance /opt/zeoinstance


Переходим в соотвествующую папку:

cd /opt/zeoinstance


Пробуем запустить:
bin/zeoctl start


Если в ответ получаем:

Error: /opt/zope212/lib/python2.5/site-packages/ZODB3-3.10.0a1-py2.5-linux-x86_64.egg/zdaemon/zdrun.py is not an existing path
(line 41 in file:///opt/zeoinstance/etc/zeo.conf)
For help, use /opt/zope212/lib/python2.5/site-packages/ZODB3-3.10.0a1-py2.5-linux-x86_64.egg/ZEO/zeoctl.py -h


То надо скорректировать путь:
vi etc/zeo.conf


И корректируем строку zdrun следующим образом:

zdrun /opt/zope212/lib/python2.5/site-packages/zdaemon-2.0.4-py2.5.egg/zdaemon/zdrun.py


И после этого повторяем попытку запустить Zeo. В итоге он должен заработать примерно так:

lsof | grep zeo
python 15416 root cwd DIR 0,202 4096 28034842 /opt/zeoinstance
python 15416 root 3w REG 0,202 656 28034853 /opt/zeoinstance/log/zeo.log
python 15416 root 4u unix 0xffff81011d31a080 425909697 /opt/zeoinstance/etc/zeo.zdsock.15415
python 15418 root cwd DIR 0,202 4096 28034842 /opt/zeoinstance
python 15418 root 3w REG 0,202 656 28034853 /opt/zeoinstance/log/zeo.log
python 15418 root 4u REG 0,202 7 28034859 /opt/zeoinstance/var/Data.fs.lock
python 15418 root 5u REG 0,202 0 28034860 /opt/zeoinstance/var/Data.fs.tmp
python 15418 root 6u REG 0,202 4 28034861 /opt/zeoinstance/var/Data.fs
lsof 15455 root cwd DIR 0,202 4096 28034842 /opt/zeoinstance
grep 15456 root cwd DIR 0,202 4096 28034842 /opt/zeoinstance
lsof 15457 root cwd DIR 0,202 4096 28034842 /opt/zeoinstance
bash 19864 root cwd DIR 0,202 4096 28034842 /opt/zeoinstance


Теперь проверим, какое хранилище использует наш Zope инстанс, это файловое хранилище:

lsof | grep zope -i | grep Data.fs
runzope 21553 zope 7u REG 0,202 7 28034847 /opt/zopeinstance/var/Data.fs.lock
runzope 21553 zope 10u REG 0,202 0 28034848 /opt/zopeinstance/var/Data.fs.tmp
runzope 21553 zope 11u REG 0,202 1040426 28034849 /opt/zopeinstance/var/Data.fs
runzope 21553 zope 12r REG 0,202 1040426 28034849 /opt/zopeinstance/var/Data.fs


Теперь необходимо Zope инстанс переключить на Zeo:

cd /opt/zopeinstance/
vi etc/zope.conf


Находим и комментируем диезами (#) там блок:

<zodb_db main>
# Main FileStorage database
</zodb_db>


Чуть ниже находим аналогичный закомментированый блок zodb_db main со вложенным блоком zeoclient и раскомментируем его.

Перезапускаем инстанс:
bin/zopectl restart


Убаеждаемся, что законнектились на Zeo инстанс:

bin/zopectl logtail
------
2010-03-16T02:13:06 INFO ZEO.zrpc.Connection(C) (localhost:8100) received handshake 'Z310'
------
2010-03-16T02:13:06 INFO ZEO.ClientStorage zeostorage Server authentication protocol None
------
2010-03-16T02:13:06 INFO ZEO.ClientStorage zeostorage Connected to storage: ('localhost.localdomain', 8100)
------
2010-03-16T02:13:06 INFO ZEO.ClientStorage zeostorage No verification necessary -- empty cache
------
2010-03-16T02:13:17 INFO Zope Ready to handle requests


Ну и все, теперь у нас есть сторадж Zeo инстанс с поддержкой множественных Zope инстансов :) Также, как вариант, мы можем подключаться к Zeo из своих пользовательских многопоточных приложений.

Выходим из virtualenv:
deactivate

О том, для кого написан Zope :)

You should try the Zope 2 application server or other Zope-based solutions if you are tired of

* PHP security issues
* the vendor lock-in effect of Microsoft solutions
* the complexity of J2EE solutions


(c) http://zope2.zope.org/


I've been working on a new application made with Zope 2.12, ZTK and Five; once again i become impressed by how powerful Zope is. After a short experience making projects with Django and Pylons, and even if Zope was conceived before the Agile-era, i still believe Zope's approach is a good way to develop web applications. However, i'm not saying there's no place for improvements, in fact this post aspires to become a 'what if...' one.


(c) http://feeds.plone.org/~r/ploneblogs/~3/DuOcKi7LOoo/what-about-a-developer-kit-for-plone-or-zope-2.12

суббота, 6 марта 2010 г.

Установка Zope на Debian 5 Lenny из репозитория

Кто не в курсе, что это и зачем, прошу: http://zope2.zope.org/. В двух словах - это крайне навороченная платформа для приложений (я сознательно не применяю слова "фреймворк", чтобы случайно не сровнять его величество Zope с кучей говнофреймворков на PHP sic!).

Итак, ставим:
apt-get install -y zope2.10


Пробуем запустить:
/etc/init.d/zope2.10 start
Zope2.10: no instances found..


Все верно, нужно создать инстанс, то есть основу нашего Zend приложения:

/usr/lib/zope2.10/bin/mkzopeinstance.py
Please choose a directory in which you'd like to install
Zope "instance home" files such as database files, configuration
files, etc.

Directory: /opt/zinstance
Please choose a username and password for the initial user.
These will be the credentials you use to initially manage
your new Zope instance.

Username: admin
Password:
Verify password:


Запускаем наше приложение:

cd /opt/zinstance
/opt/zinstance/bin/zopectl start


В ответ должно выдаться что-то вот такое:
. daemon process started, pid=1549


Открываем веб-консоль администрирования и логинимся в нее с ранее заданными логином и паролем:
http://xx.xx.xx.xx:9673/manage


Обращаю внимание, что Zope приложения стандартно не использую БД в привычном их понимании (MySQL, PostgreSQL), а имеют свою собственную БД на файлах:
ls -la /opt/zinstance/var/Data.fs
-rw-r--r-- 1 zope zope 1271376 Mar 6 21:08 /opt/zinstance/var/Data.fs


Также заметил еще фичу - Zope 2.10 почему-то для себя ставит Python 2.4 и работает именно на нем, хотя в системе есть 2.5й:

apt-cache depends zope2.10
zope2.10
Depends: python2.4
....


К слову, мне в конце-концов надоело бороться с непонятной сборкой Zope/Plone в Debian и я решил все поставить из исходников, вот прошу: http://phpsuxx.blogspot.com/2010/03/zope-2123-debian-5-lenny.html

Источник: http://www.howtoforge.com/debian_plone