煮詰まったから2.0
Up one level「関連オブジェクト」からPodcastingに至る道
煮詰まったので現実逃避
COREBlog2では,エントリにいろいろなオブジェクトを「紐づける」ことができます。編集画面に「オブジェクトの関連づけ」という項目があって,ここにPlone上のオブジェクトを登録できます。Archetypesの「リファレンス」を利用した機能です(ちなみに,最新版では「最近追加されたオブジェクト」というテーブルが追加されてます)。
ここにオブジェクトを追加すると
- 画像などはエントリ中に表示する
- 表示位置はコントロールできる
- オブジェクトのタイトルはキャプションになる
- その他のオブジェクト(PDFなど)はエントリの下部に表示される(添付ファイルですね)
kupuのようなWYSIWYGなコンテンツエディタを使っても,エントリに画像やファイルを貼り付けるといったことは可能ですが,「紐付け」を管理する方がスマートですし,利点も多いはずです。
WYSIWYGなコンテンツエディタで画像を埋め込む場合,キャプションに使うタイトルなどはHTMLの中に埋め込まれます。画像側のタイトルを変更した場合は,HTMLの方も二重に編集しないとなりません。
一方,エントリとオブジェクトの紐付けだけ管理して,画像などを自動的に表示するようにすれば,オブジェクトの「メタデータ(タイトルとか解説など)」は画像の方に保存され,テンプレートが自動的に参照して表示してくれます。情報の管理が一元化するわけです。また,画像を削除すると自動的に「紐付け」が切れますので,画像のリンク切れもありません。うーん,ハイレベルなCMSだ。あとZODBってすばらしい。
エントリがオブジェクトとの紐付けを「知って」いるわけですから,紐づけられたオブジェクトのURLをRSSのenclosureに書き出すのは至って自然な流れです。エントリにmp3ファイルを紐づければPodcastが可能です。mpeg4ムービーを紐づければVodcast(Videocast)になる。enclosureに記載するのは,PDFでもいいしswfでもいい。将来的にenclosureはもっと多くのメディアタイプで利用されることになると思いますが,こういう抽象的な実装にしておけば,後々「何とかcast」が登場したときに(多分)追加実装の必要なく対応できます。
さて,エントリに紐づけたくなるのは,メディアオブジェクトだけではありません。リンクとかPloneの「イベント」とか,はたまたアンケート用の「Pollオブジェクト」かもしれないし,Google mapsの地図かも知れない。いろんなオブジェクトを紐づけて,さらにエントリの中にスマートに表示された方が楽しいはず。
そこで,ひとつInterfaceを定義して,これをimprementしたオブジェクトについて,テンプレート上で特別な振る舞いを持たせるようなことを考えています。エントリと紐づけるオブジェクト側には,COREBlog2上に表示する際の「見栄え」を定義したmetalがあって,Interfaceのmethodを呼ぶとmetalのパスが帰ってくる,という感じかな。こうすれば,オブジェクトは固有の「見栄え」と同時に,COREBlog2エントリ向けの,というか,他の「ドキュメント質」なオブジェクト内で表示されるための「見栄え」を持つことが出来る。
てなわけで,冬の合宿では,ATCTベースのコンテンツタイプを作る開発スプリントでもしようかな,と思っています。
- Category(s)
- zope
- COREBlog2
- 煮詰まったから2.0
- The URL to Trackback this entry is:
- http://coreblog.org/ats/road-to-podcastiing/tbping
やっと、COREBlog2を使ってみました
Plone 2.1のアルバムビューをカスタマイズ
Plone 2.1のアルバムビューをカスタマイズして,サムネイル画像をクリックするとリロードせずに本体を表示するようにしてみた。どんな風になるかは,下にリンクされてるモーターショーのアルバムビューでどうぞ。IEで試してないけど,多分動くんじゃないかな。ただ単にinnerHTMLをモゲってるだけなのでajaxじゃないな。表示ももうちょっとファンシーにした方がいいと思うけど,ZPTだと面倒くさいのでこのへんで勘弁してくれよ。
具体的な方法は。。。このくらいHTMLのソース見れば分かるでしょ。30分でできるシリーズ。
- Category(s)
- 煮詰まったから2.0
- Plone
- The URL to Trackback this entry is:
- http://coreblog.org/ats/customizing-plone-album-view/tbping
Re:Plone 2.1のアルバムビューをカスタマイズ
Plone難しいです
by初心者
Re:Plone 2.1のアルバムビューをカスタマイズ
Web関連の技術,Python,Zopeの知識があると,かなり便利に使いこなせるんですけどねえ
Ploneはすばらしいですよ:-)
ウチではとても便利に活用させていただいています
研究したり活用した結果を,オープンソースのソフトとして反映しているわけです
アバクロのカタログフゥーー!!
何日か前に送られてきてた。クリスマスシーズン用。やっぱ今年は内側のフワフワがアレなのかあ。
アメリカでは,年齢低すぎると送ってもらえないようです(R指定)。アバクロは子供向けのサイトも十分問題あると思うけどね。
せっかくなので,キャプションでつっこんでみた。このブランドは,カタログ出てくるモデルさんみたいに,ちゃんと鍛えて締まった体に着ないと似合わないのは事実なんだけどね。
まあなんかそんなかんじで。
- Category(s)
- fashion
- 煮詰まったから2.0
- The URL to Trackback this entry is:
- http://coreblog.org/ats/abercrombie-and-fitch-catalogue-2005/tbping
このサイトをHTML lint Gatewayでチェックしてみる
Another HTML-lint gatewayを使って,このサイトをチェックしてみた。
Plone 2.0.xの頃は,素のPloneサイトをチェックするととても得点が低くて,「ヨーロッパの人ってこういうのあまり気にしないのかなあ」と思ったりした。Plone 2.1ではテンプレートやCSSにもリファクタリングが行われたようで,より仕様に近いマークアップを出力するようになっているようです。例えばポートレットの各要素にプレゼンテーションを適用するのにdivが多用されていたりしたのだけど,2.1ではdlを使うようになっていたり。素のPlone 2.1でもそこそこ高い点数が出るはずです。
このエントリを投稿する直前の状態でチェックしたところ,点数は「81点」でした。「Ploneデフォルトのテンプレートをなるべく生かしつつ」,「その上に標準のCOREBlog2をのせて」,という状況。以下寸評。
- XHTML1.0 では XML宣言をすることが強く求められています。
- Ploneのテンプレートがそうなっている。このエラーを解消しようとすると,WindowsのIEなどでページ上の方に「隙間」があいてしまう(確か)。痛し痒し。
- <h5> が 180行目の <h1> に続いていますが好ましくありません。
- これもPlone由来の部分だなあ。あと,PloneのPortalTransformsでreSTをHTMLに変換すると,セクションヘッダが3から始まるので,同じようなエラーが発生する。痛し痒し2.0。
- <div> の class の属性値に空の値を指定することはできません。
- ZPTで動的にclassを割り当てようとしている部分で,「空」の要素を指定するとこう(class=""みたいに)なる。「(ほぼ)すべてのWebブラウザがちゃんと解釈してくれるようなのでいいじゃん」,ということになっているはず。ZPTの仕様上しかたがないところ。痛し痒し3.0
あとは,Wikiパーサ由来と思われるエラーとか(うわ,直さないと),「Permalink何度も使うなや!」的なエラー。もうちょっとがんばると90点くらいまで行けそうだけど。そこそこ凝ったスタイルのサイトでこの点数なら,十分に合格点だと言えるのではないでしょうか:-)。
- Category(s)
- 煮詰まったから2.0
- Plone
- The URL to Trackback this entry is:
- http://coreblog.org/ats/html-lint-de-coreblog2/tbping
オブジェクト構造設計の話
この辺の話に関連して。
http://www.liris.org/blog/662865e5306f-cms-blog-exchange1
http://takanory.net/takalog/429/
RDBMSのテーブルなどだと,正規化とか設計のセオリーがあるのだけど,ZODBがバックエンドなZopeの場合オブジェクトの構造を設計するためのセオリーはあまり見かけない。それだけ難しいってことだと思う。関連する要素が複雑だからね。
とりあえず,私が構造設計の指針にしていることをルール化して書いてみます。
オブジェクトにすべきものとすべきでないもの
Zope/CMF/Ploneのオブジェクトは,RDBMSの列などに比べて粒度が大きいので,オブジェクトにするかしないかについてはよく考える必要がある。余計なものまでオブジェクトにすると,データ領域にかけるオーバーヘッドが大きいし,セキュリティ上のリスクも増す。
独自にViewを持つとか,独自に公開の操作method(setter,getter意外にもたくさん)のセットを持つ場合はオブジェクトとして分離すべき。それ以外であればスキーマとかアトリビュートで表現すべき。粒度でいうとスキーマ >>>> アトリビュートなので,設定用のインターフェースを持たせる必要がなければアトリビュートにすべき。
コンテナにすべきものとすべきでないもの
コンテナというのは,フォルダのように内部に別のオブジェクトを持つことができるオブジェクトのことね。一般的なオブジェクトに対してコンテナはより粒度が大きいし,オブジェクトのトラバースにパフォーマンスを要求する。コンテナにする必要がないものはしないほうがいい。また,大量のオブジェクトを収納する可能性のあるコンテナはBTreeFolder由来であるべき。ただし,粒度は増すからなんでもBTreeFolderを継承しない方がいい。
コンテナにする場合,内部のオブジェクトがかならず「下位」に置かれる点についても留意すべき。下位オブジェクトは上位コンテナのセキュリティ設定の影響をうけるし,一緒に消されちゃう。たとえばBlogのコメントは,エントリと関係なく参照されることもありえるので,下位には置かない方がいい,という考えも成り立つかと思います。
RDBMSでいうところの「第三正規化」をするようなデータ構造をオブジェクトで表現する場合には,たぶんコンテナにしないでリファレンスとかアトリビュートで管理した方がいいと思う。Cとかの構造体なら,ポインタのリストで管理するようなデータ構造。
自分だけが使うものを富豪的に「なんでもコンテナ」とするのはアリ。でも,広く配布するプロダクトの設計がナニだったりすると,ちょっと。。。「第三正規化」が感覚的に分からない人,というのは人口中一定数いるはずなので,そういう人はこういう議論も理解できないのかも知れない。設計は「やるべき立場にある人がやる」のが正解だと思います。
- Category(s)
- zope
- 煮詰まったから2.0
- Plone
- The URL to Trackback this entry is:
- http://coreblog.org/ats/object-structure/tbping
Re:オブジェクト構造設計の話
Python に出会ってではじめて「オブジェクト指向が分かるようになれるかも」という期待が沸いている「オブジェクト指向初心者」です。このエントリも大事そうなことが書いてあるとは思うも、正確な理解はできません。このエントリを理解することをひとつの目標に勉強してみるか。
Re:オブジェクト構造設計の話
>ryouseiさん
他人の書いたコードを読んだり解析したりするのは役に立ちます
自分がやりたいと思っていることにちかいことをしているコードを探し出して
いっぺん解析してみると面白いと思いますよ:-)
Re:オブジェクト構造設計の話
アドバイスありがとうございます。やってみます。
COREBlog2のチュートリアルムービー
戯れに作ってみた(2.5MバイトのQuickTimeムービー)。バージョンは0.2くらい。音も載せたいしね。器用貧乏とかいうと怒るよ言ってないですかそうですか。
ムービー制作はなかなか面白いね。でも結局は素材がものをいうのね(ビデオカメラが欲しくなってきた)。つーか,こういう編集をリニアなメディアでやってた昔の人たちって神だな。
えーと,TurboGearsと,TurboGears。。。
追記
音つけた。バージョン0.4くらい。
- Category(s)
- COREBlog2
- 煮詰まったから2.0
- Plone
- The URL to Trackback this entry is:
- http://coreblog.org/ats/tutorial-movie-for-coreblog2/tbping
Re:COREBlog2のチュートリアルムービー
わーい!
これで、私もCOREBlog2を使いこなせるかもです〜♪
でも、.movだから、東京に戻らないと見られない・・・・(涙)
>リニア
リニアは、ノンリニアより楽ですよ。
でも、数字(タイムコード)管理がちょっと大変ですが(笑)
Re:COREBlog2のチュートリアルムービー
>ぬえさん
#帰省中ですね:-)
> リニアは、ノンリニアより楽ですよ。
ふむふむ,そうなんですね
リニアの編集なんて,高校生くらいの時に8mm(フィルムの方)でCG撮ってたときに切り貼りをしたくらいで
やったことがないんでわからないんですが
ノンリニアみたいに「トライ&エラー」がほぼ不可能っぽいので
そうとうカンというか熟練の技が必要なんだろうな,と思っていました...
News Bitsのリンクが機能しなくなってた
思うところがあって,右のポートレットに見えている「NewsBits」の表示方法を変えてみました。エントリのPermalinkを表示しているときには,エントリの日付をベースにその日以前に投稿されたリンクを表示するようにしてみました。エントリとリンクのあいだに,時系列的なつながりを持たせたわけです。
その影響で,リンクが機能しなくなっていました。さっきやっと気づいて直した。
ここ数日,どうもクリック数が伸びなくておかしいなあ,と思っていたのです。
まあそんな感じで。
ちなみに,原稿はまだできません(シクシクシク)。
- Category(s)
- misc
- 煮詰まったから2.0
- The URL to Trackback this entry is:
- http://coreblog.org/ats/bug-of-newsbits/tbping
COREBlogユーザのS/N比
COREBlogはもともとS/N比の高いBlogツールだと思っていたのだけど,COREBlog2はもっとS/N比が高いような気がしてきた。オーナーそれぞれのモチベーションで,かなり高濃度な情報が配信されてる。情報がほとんどない状態のBlogツールを,人柱同然に使っている人たちのアウトプットってのはすごいもんだと思う。有難いことである。COREBlogユーザを中心にZopeの情報が蓄積されていったように,COREBlog2を中心にPlone(2.1以上の)の情報が蓄積されて行くんだろうなあ。
他にもあると思うけど,とりあえず。おおたにさんのところなんかはすでに有名サイトだとおもうので,あえてリストに挙げません。
- http://nagosui.org:8080/Nagosui/COREBlog2/
- http://www.everes.net/
- http://dev.ariel-networks.com/
- http://akas.blogdns.net/Members/saka/blog/
うかうかしてられませんぜ>深町さん。
COREBlogで書かれるエントリについては,定期的にクローリングしているのでいいんだけど,COREBlog2についてはまだ仕組みを設けていない。こりゃ早々に仕組みを設けて,ちゃんと有益な情報を吸い上げるようにしないとならないな,と危機感を高めた。
今週中くらいにはなんとかなるかな。
ま,そんな感じで。
- Category(s)
- zope
- COREBlog2
- 煮詰まったから2.0
- Plone
- The URL to Trackback this entry is:
- http://coreblog.org/ats/signal-to-noise-ratio-of-coreblog-user/tbping
TurboGearsのCatWalkを使ってみた
TurboGears 0.9から搭載されているCatWalkを使ってみた。CatWalkとは,データベースの定義を動的に読み込んで,CRUDフォームを自動生成してくれるツール。
使い方は簡単で,controllers.pyで
from turbogears.toolbox.catwalk import CatWalk
して,Rootクラスなどに
catwalk=CatWalk(model)
と定義してあげるだけ。TurboGearsのアプリを起動し,http://localhost:8080/catwalk/ などにアクセスすると,CatWalkの画面が現れる。
上のコードで,Rootクラスにcatwalkというアトリビュートを設定しているわけだけど,CherryPyがURLを分解して,catwalkにリクエストを届けてくれているのですな。
画面は左のような感じ。日付編集用にはカレンダーウィジェットが用意されているし,リレーションも編集できる。パスワードがハッシュ化されているのとかも注目ポイントね。TG_User由来のmodelであれば,設定ひとつで勝手にパスワードをハッシュ化してくれて,かつ標準の認証(identity)でも使ってくれる。いやあ,気が利いているよなあ。データ投入用とか,お客に見せない系のフォームはもうこれでOKという感じ。Pythonistaの「能力の余りよう」といったら凄いわ。
Ajaxっぼく作ってあるので,ブラウザ上でURLが切り替わってリフレッシュするような遷移はほとんど無い。「戻るボタンが使えない」とかいうと怒るよ言ってないですかそうですか。
- Category(s)
- python
- 煮詰まったから2.0
- The URL to Trackback this entry is:
- http://coreblog.org/ats/using-turbogears-catwalk/tbping
Re:TurboGearsのCatWalkを使ってみた
tg-admin toolbox
でWebからいろんなことができますが、そこからCatWalkの機能もつかえます。ソースを変更して、catwalkを使えるようにしなくても大丈夫です。
Re:TurboGearsのCatWalkを使ってみた
>lirisさん
どうもです:-)
>tg-admin toolbox
>
>でWebからいろんなことができますが、そこからCatWalkの機能もつかえます
そうですね,TurboGearsのツールボックスは便利で感心します
ツールボックスでない,通常のアプリを立ち上げながらcatwalkの機能を使ってみたかったので,コードを書いてみました。。。
やってみて気づいたのですが,Toolbox上のCatWalkと,Rootなどの下に置いたCatWalkではデザインがちょっと違いますね
引っ張ってくるマスターテンプレートが違うからかな。。。?
Zope 2.10b1
http://www.zope.org/Products/Zope/2.10.0b1/
2.9 -> 2.10という位取り。マーケティング的にも開発的にもZope3ラインは失敗している風であることはもはや明白である。今後はZope2ラインにZope3の機能を取り込んで行く形で普及を計る,ということらしい。ZServerが捨てられる方向にあるのは,ある意味正しいかも。TwistedとWSGIのサポートが実験的(Experimental)に取り入れられています。
参考
オマケ
COREBlog(2じゃない方)は,Zope 2.10で動くんだろうか。ていうか,ZPTがZope3ベースになってるみたいだけど,マルチバイトとかユニコードとか大丈夫?
まあ,オープンソースの世界も成熟してきているので,ちゃんと空気を読んで行動しないとイカンですね。空気が読めない人が仕切ると,会社がつぶれたりコミュニティーが崩壊したりするんだろうなあ(毒)。
- Category(s)
- COREBlog
- zope
- 煮詰まったから2.0
- The URL to Trackback this entry is:
- http://coreblog.org/ats/zope-2-10-b1/tbping

