« 2010March »
Su Mo Tu We Th Fr Sa
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
このBlogについて
このブログはCMScomが公開する、公式ブログです。 Zope/Ploneのことや、Pythonのことなどを掲載しています。 また、個人的な内容も一部含まれております。
最近のエントリ
Zope/Plone開発勉強会(2009年2月)の報告 terada 2010年02月25日
Zope/Plone開発勉強会(合宿バージョン)の報告2 terada 2010年02月15日
Zope/Plone開発勉強会(合宿バージョン)の報告1 terada 2010年02月01日
Ploneの英語のメーリングリスト紹介 terada 2010年01月29日
2010年も既に半月経過 terada 2010年01月17日
PloneでMS-Officeファイルを検索対象にするプロダクト公開 terada 2009年12月18日
Plone研究会&Ploneパーティー2009 terada 2009年12月10日
Plone3の日本語検索とメールバグ terada 2009年12月08日
Pythonスクリプトを使って便利な機能を実装 terada 2009年12月04日
MeCabで日本語読みを出力 on Windows terada 2009年12月03日
Plone3のメールバグ解消プロダクト公開 terada 2009年11月23日
Plone Conference 2009 の報告(4) terada 2009年11月18日
Plone Conference 2009 の報告(3) terada 2009年11月18日
Plone Conference 2009 の報告(2) terada 2009年11月10日
Plone Conference 2009 の報告(1) terada 2009年11月09日
Plone Conference 2009 がはじまりました terada 2009年10月28日
Plone Conference 2009 へ(2) terada 2009年10月23日
Plone Conference 2009 へ terada 2009年10月22日
【終了】Zope/Plone開発勉強会 #4 terada 2009年10月21日
Plone4のデフォルトデザイン terada 2009年10月18日
最近のコメント
Re:PloneでMS-Officeファイルを検索対象にするプロダクト公開 NK 2010年02月15日
Re:Plone3のメールバグ解消プロダクト公開 terada 2009年11月23日
Re:Zope Essentials 7 無事終了 t2y 2009年08月23日
Re:Plone3.0以降のメール送信 akiko 2009年08月10日
Re:Google App Engine と Google Apps はすい 2009年08月04日
Re:PyLuceneの日本のコミュニティが立ち上がった t2y 2009年08月04日
Re:Plone3.0以降のメール送信 siebo 2009年01月20日
Re:Plone3.0以降のメール送信 Shigeo Honda 2009年01月20日
Re:Plone Conference 2008 で知り合った人々(1) 伊藤@b-mark 2008年11月23日
Re:Plone Conference 2008 に参加 terada 2008年10月16日
Re:Plone Conference 2008 に参加 terada 2008年10月16日
Re:Plone Conference 2008 に参加 malik 2008年10月16日
Re:Plone Conference 2008 に参加 Yasu. 2008年10月16日
Re:Twitterどうでしょうか zen 2007年05月26日
Re:Plone2.5からの注意 Anonymous User 2007年04月21日
Re: Windows Vista良い感じ terada 2006年11月15日
Re: Windows Vista良い感じ ナルディ 2006年11月15日
Re:Ploneのケータイ対応 sayg 2005年12月02日
Re:Ploneのケータイ対応 terada 2005年12月02日
Re: SWFファイル Terada 2005年10月25日
 
編集操作

Zope/Plone開発勉強会(2009年2月)の報告

最近は、開発勉強会の報告専用ブログのようになっておりますが、こりずに2月の勉強会の報告を致します。

2月20日(土)にいつも通り、新宿区曙橋で開催しました。前日までの出張の疲れなどで、大幅に遅刻をし申し訳ないと思いつつ、会場入りしました。

今回は、Ploneの仕様的バグへの対処が出来れば良いと思い望みました。

  • Plone3.3 のワークフロー用プルダウンメニューのアドバンスから、日時を変更しても変更が反映されず、保存された旨のメッセージが出るというものです。
    • お客様からの指摘でしり、複雑な部分で修正出きないと思ったのですが、思いのほか簡単に見つかり、修正出きました。
    • その後、テストコードを書き、コアコードにコミットしようとしたのですが、残念なが権限関係の部分でテストが通らず、保留状態にしています。
  • MS-Officeファイルを検索対象にするアドオンプロダクトを公開していますが、それのコピーライト部分に当社の名前があり、それに対してコメントを頂いたので、修正してPYPIに登録し直しました。
この2つを作業して、さらにZopeのソースコードに関しての意見交換などをさせてもらいました。


その時にも話をしたのですが、Ploneのユーザ管理画面のロールを管理する部分で、インターフェースが分かりにくい部分があり、それの対処をしてみました。
具体的には、グループ経由でロールが継承されている場合にも、チェックボックスでロールを外せるようになっているが、実際にはそれは適用されないという部分です。
現在テスト中なのですが、皆さんに相談したら、コアコードを直した方が良いとのアドバイスを頂いたので、早めにコミットしようと思います。

Zope/Plone開発勉強会(合宿バージョン)の報告2


遅くなってしまいましたが、開発勉強会の報告2を書きます。

Plone4用に日本語全文検索時の、全角スペース区切りでもアンド検索になるZope2.12の改造について、Zopeの開発レポジトリにに対して、テストが完了し、田原さんに代理コミットして頂きました。

テストに手こずった理由は、最近のZopeから、bin/zopectl test という引数が使えなくなり、専用に、bin/test にてテストを実施するようになり、その為に、「zc.recipe.testrunner」を使用する必要があり、そのセットアップがうまく出来なかったためです。
詳しく言うと、testrunnerとmy.developper の組み合わせで上手くテスト環境が作れなかったということです。

そこで、いつも慣れているPlone4のテスト環境から、ZopeをSVNから取得するように変更し、テストするようにしました。

その方法を下記に記載します。

http://dev.plone.org/plone/browser/buildouts/plone-coredev/branches/4.0/
をまるごと、チェックアウトして、
bootstrap.py を実行し、
その後、下記を修正してから、./bin/buildout を実行

sources.cfg を編集

auto-checkout =
Zope2
を追加 下記を変更
[sources]
#Zope2 = svn svn://svn.zope.org/repos/main/Zope/branches/2.12
Zope2 = svn svn://svn.zope.org/repos/main/Zope/trunk

test.cfg を編集

eggs =
Zope2
を追加

versions.cfg を編集 下記を変更

#extends = http://download.zope.org/Zope2/index/2.12.3/versions.cfg
extends = http://svn.zope.org/*checkout*/Zope/trunk/versions.cfg

コミット結果は下記参照
http://svn.zope.org/?view=rev&rev=108734
http://svn.zope.org/?view=rev&rev=108735

Zope/Plone開発勉強会(合宿バージョン)の報告1 Zope/Plone開発勉強会(合宿バージョン)の報告1
サイズ 3942 - ファイルの種類 text/html

Zope/Plone開発勉強会(合宿バージョン)の報告1

2010年1月29日(金)から1月31日(日)までの間で、Zope/Plone開発勉強会(合宿バージョン)を開催し、参加してきました。この勉強会は昨年春から、月に1回、土曜日日中に都内で開催してきました。1月は志向を変えて、雪山でスキーしたりのんびりしながら、Zope/Ploneに触れようということで行いました。

今回は、菅平高原・峰の原のマウンテンパパというペンションに宿泊しました。(これらの開発外の報告は改めて)

土曜日から5名、日曜日は計8名の参加がありました。内容はここにやりたい事を決めて、みんなに聞いたり意見をもらったりしながら、自由に開発を進めた感じです。

私は、複数の課題を持って行き、皆から多くの意見をもらえました。実際にメインで開発する予定であったものは未完成で持ち越しになってしまいました。


開発したもの

  • Plone3用日本語全文検索プロダクト BigramSplitterの改造
    • 全文検索時に、全角スペースでもアンド検索になるように改造した。
    • monkey patch形式で行っている
    • BigramSplitter 1.0b2をリリース
  • 期限前・期限後のコンテンツが作成者にも、リンクをたどる事が出来ないバグの解消
    • Ploneの仕様的バグだと思われるものです。管理者で使っていると気がつかないのですが、複数人でワークフローを使って、管理するサイトでは、現状ままでは使いにくいと思われます。
    • 他のメンバーにも意見を頂いたのですが、これが良いという答えが見つかりませんでした。
    • まずは、コンテンツタブからはこの期限関係の制限を除外するプロダクトを作りました。
    • 今しばらくテストをしたり、整理をし、公開する予定です。
  • Plone4用に日本語全文検索時の、全角スペース区切りでもアンド検索になるZope2.12の改造
    • BigramSplitterにて実装したものを、Zope2.12最新版に適用させようとしました。
    • Zope単体のインストールをすることが減って、現状の環境に合わせて、SVNから取得するなどを行い、テストをしました。
    • 最終的には、完成間近で、テスト環境の整備に時間がかかり出来ませんでした。
    • 近日中に何とかしたいと思います。
  • Plone アクセシビリティ機能のプロダクトの完成
    • 以前の作りかけを、リファクタリングしながら、コードを書き直していました。
    • リファクタリングは終わったのですが、その先に進めませんでした。
    • こちらも次回持越しです。今しばらくお待ち下さい。

その他

  • Ploneジーニアスバー(何でも相談室)の常時開催
    • といいながら、私が清水川さんにバシバシ質問して、邪魔をしてしまいました。もうしわけありません。
  • buildout環境・mr.developper環境構築のもろもろ
  • Unittestなどテストの粒度についてのお話を聞いた


全体的に、楽しく過ごせ、成果もそれなりに上がったので、満足しています。
また、このような機会を作れるようにしたいと思います。

Ploneの英語のメーリングリスト紹介

現在、Zope/Plone開発勉強会合宿をに来ています。
ここでも仕事などに関連するプロダクトの作成を行っております。

突然ですが、質問を受けたので、Plone開発関係のメーリングリスト(英語)のリストをまとめてみたいと思います。

Ploneの開発ML
https://lists.sourceforge.net/lists/listinfo/plone-developers

Ploneプロダクト関連のML
http://lists.plone.org/mailman/listinfo/product-developers

マーケティングやイベントなど主催などML
http://lists.plone.org/mailman/listinfo/evangelism

国際化対応ML
http://lists.plone.org/mailman/listinfo/plone-asiapacific

Plone-users ML
https://lists.sourceforge.net/lists/listinfo/plone-users

アジア太平洋関連ML
http://lists.plone.org/mailman/listinfo/plone-asiapacific

他にもたくさんのものがありますが、Ploneの開発ということでは、これらは参考になることも多いと思います。

カテゴリ
Zope/Plone

2010年も既に半月経過

早いもので、2010年が明けて半月が経過しました。

遅ればせながら、今年もヨロシクお願いいたします。

年末年始にかけても、Plone4リリース向けてのバグフィックスを行ったり、Plone用のアドオンプロダクトを作り公開したりとしていました。今年もこれらの活動を継続して行きたいと思います。

現在は、3月の年度末に向けて、複数のPloneサイト構築の案件をこなしています。いつもどおりの慌ただしい年度末になりそうです。

カテゴリ
日常

PloneでMS-Officeファイルを検索対象にするプロダクト公開

PDF関連

Plone3からPDFの検索がデフォルトでサポートされました。これはベースOSにxpdfなどを前もってインストールしておくことで可能になります。

CentOSにおいては、popplerというパッケージがあり、それをインストールすれば日本語のPDFも検索対象になります。

ここでいう、検索対象とは、ファイルの中の本文がインデックス化されるかということです。

MS-Office関連

MS-Wordにおいても、wv(wvWare)をインストールしておくことで、拡張子にxが付かない(xml形式でない物)は検索対象になります。

また、MS-Excel, PowerPoint などを検索対象にさせるプロダクトも存在します。しかしこのプロダクトで使っている、ベースのモジュールが、xlhtmlというもので、2004年頃で開発が止まっているようです。私が試したときには、64bit版CentOSでコンパイルすることが出きませんでした。

さらに、xml形式で保存する、OpenXMLといわれる形式を持つ、MS-Word, Excel, PowerPointやOpenOfficeファイルなどを検索させるために、Products.OpenXmlというPloneのアドオンプロダクトが存在します。


今回、MS-Office関連ファイルの検索をどうしてもしたいという要求と、Plone関連の海外のコミュニティからの情報収集で、これらの検索に注目している人が多く存在しするということがわかり、きちんと使えるものを実装しようという動きになりました。

c2.transform.msoffice を公開

様々なアプローチを検討した中、Javaのモジュールで有る、Apache POIを使うのが一番いいであろうということになりました。このApache POIは、Apacheライセンスの元で公開されておリ、多くの実績があることもわかり、且つ、うちも取り組んでいるLucen検索エンジンをベースにした、Solrでも使われていることがわかりました。

また、インストールの手順を多くすると、複雑になり、環境によって動かないなどのトラブルも多く発生すると考えました。そのため、POIを同梱(jarファイルにまとめた)して、Ploneのプロダクトとして配布することとしました。

公開サイト: PyPI http://pypi.python.org/pypi/c2.transform.msoffice

Plone.org: http://plone.org/products/c2.transform.msoffice

インストール方法

[buildout]
eggs =
c2.transform.msoffice
zcml =
c2.transform.msoffice
$ ./bin/buildout

なお、動作には、JRE(Java)の実行環境が必要になります。


みなさんテストに協力いただきフィードバックをいただけると助かります。

(Windowds環境にはまだ対応していません)


Ploneは、イントラネットを構築するうえで、有効なCMSツールになってきているのだと思います。


追記(2009年12月21日): Plone3.x では日本語の検索が標準でサポートされていません。日本語でファイル検索をするには、Products.BigramSplitter を一緒に入れる必要があります。

さらに、インデックスを作る際の無駄な動きを防止するために、collective.indexing を一緒に使うことをおすすめします。

Plone研究会&Ploneパーティー2009


昨日(2009年12月9日)に、Plone研究会&Ploneパーティー2009というイベントを、Plone User's Group Japanの主催で行いました。

今回、私はメインスピーカーとして、Plone4のプレビューを行いました。

Plone4は現在アルファー2がリリースされており、年明け早々には正式リリースされるのではないかと感じています。そのリリースを前に、何が変わったのかということと、実際にアルファ版を見ていただく会となりました。


パーティー全体は、約20名の参加者とともに、お酒を飲みながらプレゼンを聞いていただいたり、食事を食べたり、Ploneなど技術的なお話をしたりしました。

久しぶりにお会いしたメンバーもおり、大いに話が盛り上がりました。


最後に、発表資料をこのブログに添付します。Ploneのバージョン遷移(2005年から)とPlone4の機能をピックアップしています。

Plone4 Preview at Plone party 2009 Plone4 Preview at Plone party 2009
サイズ 1.5 MB - ファイルの種類 application/pdf
カテゴリ
Zope/Plone

Plone3の日本語検索とメールバグ

先週末の12月5日(土)に、第6回Zope/Plone開発勉強会が行われました。

今回はサポートをメインにすると宣言しておきながら、いつも通りマイペースで開発をしてしまいました。(反省)

今回は、Plone3でもPlone4と同様に日本語検索ができるようにするプロダクトをPyPIにアップロードするということ目標にしました。

検索については、1年以上前から手がけている、BigramSplitterをバージョンアップさせました。

http://pypi.python.org/pypi/Products.BigramSplitter

現状ベータバージョンなのですが、理由はアンインストールがうまく機能していないためです。これについては、引き続き調査を行っていきたいと思います。


勉強会中に次の課題として思いついた、これらパッチを簡単にセットアップできる「まとめ」パッケージを作ろうとしたのですが、こちらは時間切れでした。次回に回します。


前回作成し、公開した、c2.patch.plone3mail ですが、Plone3開発本で有名なMartin Aspeli氏からメールがきました。

なぜ本体コードを修正せずにパッチで作っているのか?ということでした。

理由としては、Plone3.0, 3.1, 3.2などの既にリリースされているPloneでも問題なくメールが出せる仕組みを作りたいからということと、Ploneカンファレンスの時にAlec氏にPlone3の方の話をしたら、そんなにいい顔をされなかったからです。

そうとはいえ、今後、Plone3.3.3のリリースもされる予定ですし、そちらを治しておいた方が良いと思い、昨日3.3の最新コードにコミットしました。

カテゴリ
Zope/Plone

Pythonスクリプトを使って便利な機能を実装

田原悠西さんからZope/Ploneのアドベントカレンダーのバトンがやってきました。

ネタをいろいろと考えてみましたが、普段便利に良く使ってるが、書くことが少ないだろうと思う、ZMIから簡単に実行できるScript(Python)ネタをいくつか書こうと思います。

Script(Python)は、制限が厳しく、指定されたものしかインポートできないなどありますが、ある程度の操作ならここでできます。

下記のスクリプトを記述し、上部の「test」ボタンをクリックすると実行されます。引数を設定した場合は、引数入力画面が表示されます。
なお、結果がない場合は、画面が遷移しません。

いずれのScript(Python)もZMIからportal_skins/custom/ 以下に設置しています。



コンテンツの数を数える(すべての)

catalog = context.portal_catalog
items = catalog()
print len(items)
return printed

コンテンツの数を数える(画像のみ)

catalog = context.portal_catalog
items = catalog(portal_type='Image')
print len(items)
return printed

ページの本文内に、ある文言(引数で指定)が入っている物URLを列挙

Parameter List : s

catalog = context.portal_catalog
items = catalog(portal_type='Document')
for item in items:
obj = item.getObject()
text = obj.getText()
if s in text:
print item.getURL()
# print obj.absolute_url() でもOK
return printed

ワークフロー遷移(非公開のコンテンツを公開する)

catalog = context.portal_catalog
wftool = context.portal_workflow
items = catalog()
for item in items:
obj = item.getObject()
review_state = wftool.getInfoFor(obj, 'review_state', '')
if review_state == 'private':
wftool.doActionFor(obj, 'publish')
print 'ID: ', item.getId, ' is Published'
return printed

オブジェクトのリインデックス(newsパスの以下)

catalog = context.portal_catalog
items = catalog(path='/Plone/news')
for item in items:
obj = item.getObject()
obj.reindexObject()
print item.getId
return printed

登録ユーザの列挙

mtool = context.portal_membership
members = mtool.listMembers()
print 'Toltal : ', len(members)
for member in members:
print member.id, member.getProperty('fullname'), member.getProperty('email')
return printed

インストール可能な物と既にされているアドオンプロダクトの列挙

qi = context.portal_quickinstaller
for p in qi.listInstallableProducts():
print 'install able: ', p['id']
for p in qi.listInstalledProducts():
print 'installed: ',p['id']
return printed



次のバトンは、安田さんにお願いしようと思います。

カテゴリ
Zope/Plone

MeCabで日本語読みを出力 on Windows

NVDAという、オープンソースのスクリーンリーダ(視覚障害者などの為のツール)があります。それの日本語で使用するためのお手伝いを少しだけしています。

先日のミーティングで、読み上げ側担当の方から、MeCabを使って、読みを出力することできないかな?って相談をもらいました。少し時間がたってしまいましたが、ここで公開しておきます。


#coding: cp932

from ctypes import cdll, c_char_p

LIBPATH = "C:\\Program Files\\MeCab\\bin\\libmecab.dll"
ARGV = "mecab " + "-Oyomi"

def main(text):
if isinstance(text, unicode):
text = text.encode('utf-8')
lib = cdll.LoadLibrary(LIBPATH)
tagger = lib.mecab_new2(ARGV)
s = lib.mecab_sparse_tostr(tagger, text)
ret = c_char_p(s).value
lib.mecab_destroy(tagger)
return ret

if __name__ == '__main__':
import sys
argv = ' '.join(sys.argv[1:]).decode('cp932')
# argv = u"ドラえもんの歌を聞く"
print main(argv).decode('utf-8')

ポイントは、MeCabの辞書を、UTF-8でインストールしておく必要があります。



MeCabのスクリプト実行結果

カテゴリ
開発情報