Вот новость: 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
Showing posts with label Zope. Show all posts
Showing posts with label Zope. Show all posts
Thursday, 2 September 2010
Tuesday, 16 March 2010
Работа с Zeo из Python
Для начала ставим Zope/Zeo: http://phpsuxx.blogspot.com/2010/03/zope-2123-debian-5-lenny.html
Как результат будет примерно такое:
Ну что, нравится? :)) О сокращении стоимости разработки при использовании вот такой штуки мне даже страшно думать! Даже если располагать базы только на SSD это будет все равно дико экономически эффективно.
Источник примеров: http://www.ibm.com/developerworks/aix/library/au-zodb/
#!/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/
Monday, 15 March 2010
Сброс пароля Zope
Это довольно легко:
взято с: https://mail.zope.org/pipermail/zope/2003-June/136938.html
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
Что использовать - Zope 3 или же Zope 2?
http://blogs.nuxeo.com/dev/2005/10/zope2-vs-zope3-faq.html
Частично цитирую:
Ну и вкратце для любителей "оно лучше" / "оно хуже" отвечаю - "они разные" (Фактически, это разные ветки без совместимости между друг другом. Разве что названием совпадают), но если нужны все спец фичи - юзайте Zope 3 и не задумывайтесь особо :) Все остальные озвученые продукты сделаны на основе Zope 2 не от того, что Zope 3 плохой, а из-за того, что нет смысла их портировать на "другой" Zope 3.
Хотя с другой стороны, по означенной выше причине (Plone и ко), к 3ей версии скорее всего интерес меньше и как следствие проблемы с документацией и, возможно, со стабильностью работы. Также есть ориентированность тройки не на создание сайтов, а на обычную веб-разработку, что также немного сокращает целевую аудиторию.
Так что лично я для себя решил использовать Zope2.
Частично цитирую:
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".
А вот измерение скоростных характеристик: 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".
Sunday, 7 March 2010
Saturday, 6 March 2010
Установка 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:
Создаем и переходим в виртуальную среду для установки Zope (чтобы не повредить существующую систему, а также не повредить библиотекам самого Zope):
Ставим зависимости:
Запускаем установку:
Создаем instance Zope приложения:
Переходим в папку инстанса Zope:
Создаем юзера для Zope:
Открываем конфиг инстанса:
И добавляем в самый низ имя юзера:
А теперь делаем владельцем всех файлов юзера Zope:
Запускаем во отладочном режиме:
Либо запускаем в продакшен-режиме:
Открываем веб-консоль администрирования и логинимся в нее с ранее заданными логином и паролем:
Если же Вы хотите поставить Zeo инстанс (распределенная версия хранилища с возможностью конкурентного доступа к ней), то используйте следующий мануал: http://docs.zope.org/zope2/zope2book/ZEO.html
Создаем Zeo инстанс:
Переходим в соотвествующую папку:
Пробуем запустить:
Если в ответ получаем:
То надо скорректировать путь:
И корректируем строку zdrun следующим образом:
И после этого повторяем попытку запустить Zeo. В итоге он должен заработать примерно так:
Теперь проверим, какое хранилище использует наш Zope инстанс, это файловое хранилище:
Теперь необходимо Zope инстанс переключить на Zeo:
Находим и комментируем диезами (#) там блок:
Чуть ниже находим аналогичный закомментированый блок zodb_db main со вложенным блоком zeoclient и раскомментируем его.
Перезапускаем инстанс:
Убаеждаемся, что законнектились на Zeo инстанс:
Ну и все, теперь у нас есть сторадж Zeo инстанс с поддержкой множественных Zope инстансов :) Также, как вариант, мы можем подключаться к Zeo из своих пользовательских многопоточных приложений.
Выходим из virtualenv:
Ставим 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
Установка Zope на Debian 5 Lenny из репозитория
Кто не в курсе, что это и зачем, прошу: http://zope2.zope.org/. В двух словах - это крайне навороченная платформа для приложений (я сознательно не применяю слова "фреймворк", чтобы случайно не сровнять его величество Zope с кучей говнофреймворков на PHP sic!).
Итак, ставим:
Пробуем запустить:
Все верно, нужно создать инстанс, то есть основу нашего Zend приложения:
Запускаем наше приложение:
В ответ должно выдаться что-то вот такое:
Открываем веб-консоль администрирования и логинимся в нее с ранее заданными логином и паролем:
Обращаю внимание, что Zope приложения стандартно не использую БД в привычном их понимании (MySQL, PostgreSQL), а имеют свою собственную БД на файлах:
Также заметил еще фичу - Zope 2.10 почему-то для себя ставит Python 2.4 и работает именно на нем, хотя в системе есть 2.5й:
К слову, мне в конце-концов надоело бороться с непонятной сборкой Zope/Plone в Debian и я решил все поставить из исходников, вот прошу: http://phpsuxx.blogspot.com/2010/03/zope-2123-debian-5-lenny.html
Источник: http://www.howtoforge.com/debian_plone
Итак, ставим:
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
Subscribe to:
Posts
(
Atom
)