Thunderbirdでメールが消えてしまったときの対処
Thunderbirdは,定期的に最適化していないとカタログが壊れてメールボックスから消えてしまうことがあります.また,Thunderbirdは,最適化するまでは,メールは何も削除せず,削除フラグがついているだけですので,スクリプトを書いてそのフラグを変更してあげるだけで修正できます.
# -*- coding: utf-8 -*-
from __future__ import with_statement
writer = open('Inbox_new.txt','a')
with open("Inbox") as f:
for i, x in enumerate(f):
x = x.replace('X-Mozilla-Status: 0009', 'X-Mozilla-Status: 0011')
writer.write(x)
if (i % 10000) == 0:
print i
writer.close()
print 'end'
Plone4のpoファイルのコンパイルオプション
Plone 4のUnified Installerには、下記の記述がbuildoutファイルにないので、poファイルがコンパイルされない。そのため、自分で作ったプロダクト等の翻訳が適用されないで焦るときがある。そんなときは、下記の記述の確認をし、無ければ、buildout.cfgなどに追加してあげるとよい。
[instance]
environment-vars =
zope_i18n_compile_mo_files = true
以上、忘れずにメモしておく。
Ploneのサイト管理でスキンカスタマイズ「Theme Editor」
Plone 4 の experimental に skineditor.cfg が追加されました。
1.Ploneのサイト管理でスキンのカスタマイズを可能にする 「plone.app.skineditor」
plone.app.skineditor は、ZMIにアクセスせず、Ploneのサイト管理からportal_skin, portal_view_customizationsの中のテンプレートやリソースをカスタマイズできるという優れものです。
旧来の、ZMIによるカスタマイズでは、portal_skin, portal_view_customizationsそれぞれの場所に行き、該当するファイルを探し出してカスタマイズする必要があり、手間が多く、ZMIは、Ploneの管理インターフェイスとは少し異なるので、抵抗がある人もいたと思います。
2.インストール
早速、 ./bin/buildout -c skineditor.cfg -n を実行します。
サイト設定に行き、Theme Editor 0.1devをインストール(有効に)します。
図1:有効にした状態 Theme Editorと表示される。
3.Theme Editorを使ってみる。
Theme Editorをクリックして、どのようなものか見てみます。
図2:Theme Editor画面
Skin Resource Editorというタイトルが表示され、スキンのリソースが一覧で表示されます。タイトルの下にある、検索ボックスで、テンプレートやリソース、Pythonスクリプト、JavaScriptを検索でき、隣のキーワードタグでフィルタリングすることができます。
4.試しにFooterを変更してみる。
では、試しにFooterを変更してみたいと思います。キーワードタグの中から、Viewletsをクリックします。Footerは、plone.footerという名前なのでそれを選択します。
図3:plone.footerを選択したところ
クリックすると、該当するテンプレートやインターフェイスを記したボックスが表示されます。まさにこのテンプレートを編集したいので、クリックします。
図4:テンプレートの内容が表示された。
ポップアップして、テンプレートの中身が表示されました。
CustomizeボタンをクリックしてCustomします。
図5:ビューのカスタマイズをしているところ
編集が終わったら、最後に、Save Changesをクリックして保存します。現段階では、ウィンドウが自動でクローズしないみたいなので、自分で「×」ボタンを押してクローズします。
図3の画面に戻ってみると、カスタムしたものが先ほどの項目の上に表示されています。そして、有効になっているので、赤色の*で記されています。
図6:カスタムができ、項目が増えた。Customしたものは「In the database」となっている。
以上でカスタマイズが終了しました。
図7:Before
図8:After
5.おわりに
PloneのSkinカスタマイズは、ZMIにアクセスしないといけないのが、欠点でした。これと同時にインストールされる、Products.Glowormを使えば、ZMIに行かずにPloneの統一されたUIで作業ができるので、とても重宝しそうです。
ubuntu 9.10 64bit でのeclipse
Ubuntu 9.10の64bitバージョンにEclipseをインストールしようとしたんだけど、追加のプラグインがインストールできない問題があった。
ボタンが押せないというトラブルらしい。
export GDK_NATIVE_WINDOWS=1
を記述したシェルスクリプトを用意してあげるといいみたい。
Processing でのXML処理
Processing でWeb Serviceを使いXML処理をする際、今までは、proXMLを使っていたけど、これは、encodingをみて読み込んでくれない。そのため、Windows環境でencodingがUTF-8のXMLを読み込むと文字化けをおこしてしまう。
そう、今までは、日本語を扱うようなものを読み込んでいなかったので問題に気づかなかった。 そこで、SAX(http://www.saxproject.org/)を使うことにした。これは、XMLのencodingをみて読み込んでくれるため、問題なく日本語の処理ができる。
SAXは、DOMと違い、イベントで処理をする。最初は、なれなかったが、今回の目的にはSAXの方が向いていた。
Pythonにも、xml.saxがあるようなので今度使ってみよう。
Ploneのフォームで2重投稿を禁止するJSの回避方法
Ploneは、フォームで2重投稿を極力避けるために、jQueryを使ってアラートを出すようにしています。
これは、目的によっては、邪魔な存在なので、表示させない方法。
submitボタンのクラスに allowMultiSubmit を割り当てる。
以上で回避できます。
Windows版のPlone
Windows版のPlone 4は、portal_css, portal_javascriptsをデバッグモードにしておくと、非常に遅い!!!
スキンプロダクトの作成や、ビュー周りの検証をするときは、Linuxか、MacにインストールしたPlone 4を使うとよい。
フォルダが作成出来ないと嘆いていたら。
Flashからフォルダを作成出来るようにしていたのですが、どうもうまく動かない。
プロセスもpermissionにも間違い無いはずなのに、なぜ動かないのだろう。
いろいろと調べていたら・・・
テスト環境にフォルダを作成する為のメソッド名と同名のPythonスクリプトが存在した・・・。
・・・・・・・・・・・・。
さあ、次に進むぞ。
反省
Flash部分にどのぐらいのコストをかけ、Ploneの部分にどのぐらいのコストをかけるかというのをはっきりとしておくべきだった。
反省・・・。
疲れた
タイトル通り。以上。
Ploneのテキストフィールドのデフォルト文字
テキストフィールド欄にデフォルト文字を表示させたいとき、一般的には、jquery.fieldtab.jsを使う。
Ploneでは、このようなものが、簡単に最初から使えるようになっている。
方法は、input タグ内のTitle属性に表示させたい文字列を入力し、class属性に「inputLabel」を割り当てるだけで、実現できる。
Flashアップローダに苦戦。
予想以上にPloneとの連携に手こずった。Plone用のFlashファイルアップローダを作成していたのだが、Flash Player 9をターゲットとした場合、大変だった。 次は、外にお願いしたい気分。PloneでFlashUploaderのプロダクトがあまり出てこないのも納得した。Plone的に、このセキュリティで大丈夫なの?と言うところがあったりする。
ちょっと愚痴っぽくなったが、勉強になったので良かったことにしよう。
テスト
テストする。
PloneへのFlashを使ったファイルアップロード
FlashのFileReferenceListで、まとめてファイルを取得することができる。このFileReferenceListは、browseメソッドを実行することでファイルダイアログ選択することができる。選択後、FileReferenceオブジェクトのArrayを持つので、このFileReferenceオブジェクトのuploadメソッドを使うことでファイルアップロードが出来る。
いろんなサンプルでは、取得したFileReferenceのArrayに対して、For each文を使いFileRefence.upload()を行いアップロードをしている。
ただ、この方法では、一気にPloneに対してアップロードを行うため、ほぼ、Confrict errorを起こす。
回避方法として、サンプルのようなFor eachを使わず、一つづつ確実にアップロードを行う。FileRefenceのFile upload completeイベントで、次のFileReferenceのuploadを行うようにする。
conflict errorを起こしてもZopeは再試行してくれるのだが、FileReference.upload()の仕様上、起こされると面倒な処理を記述する必要があるので、なくすように心がけた。
Flash Player 10以上で作っていいのなら、こんな面倒なことをしなくてもよさそうだけど・・・。
アドオンプロダクトでプロダクト名が2重に表示される
Products.hogeとしたプロダクトのconfigure.zcmlに、<five:registerPackage package="." initialize=".initialize" />の記述があると、サイト設定のアドオンプロダクト項目でプロダクト名が2重に表示されてしまう。
この現象は、collective にあるプロダクトを参考にプロダクト開発を行い、configure.zcmlに記述してしまうとおきる。(自分がそう)
回避策として、<five:registerPackage package="." initialize=".initialize" />を削除する。 また、initialize関数でファクトリ・permissionの設定をしている場合は、zcmlベースの方法へ変更する。




