SSブログ

フィードのフィード [software]

プラグのプラグ: Plagger
ローリングローリング: RssRolling
プラネットプラネット: Planet


TurboGearsでCATWALK(2) [software]

前回から、随分、時間が空いてしまいました。でも、0.9は正式リリースされていません。。そのかわり、プレビューサイトができていました。このサイト、結構リンクが切れてますね。0.9a4で何が変わったのかが書いてあるChangelogのリンクも壊れていました。

インストール


coLinuxの環境は壊れてしまったので、Vmware player + Ubuntuな環境でセットアップ。前回同様、ダウンロードページから、ダウンロード&インストール。
留意点は、

# apt-get install python2.4-dev
# wget http://cheeseshop.python.org/packages/2.4/P/PasteDeploy/PasteDeploy-0.5-py2.4.egg


くらいかな?

DBセットアップ

TurboTunesドキュメントと前回の記事を参考にセットアップ開始。
なぜか、sqliteでのセットアップが、autocommitという属性がないというエラーで落ちるので、PostgreSQLに変更。ここでもちょっとはまって、pgdbモジュールがなぜかUNIX domain socketでは接続にいかないため、postgresql.conf で tcpip_socket = true を設定し、postgres を再起動。
その後、turbotunes用のユーザとデータベースを作成。

# su postgres
$ createuser turbotunes
$ createdb turbotunes


ここで、tq-admin sql create でDBのセットアップ。というところなんですが、これがまたうまくいきません。そこで、tq-admin sql sql でSQL文を出力させ、それを手動で変更。セミコロンを追加したり、順番を変えたりする必要あり。以下、SQL文。

CREATE TABLE artist (
    id SERIAL PRIMARY KEY,
    name VARCHAR(200)
);

CREATE TABLE artist_genre (
artist_id INT NOT NULL,
genre_id INT NOT NULL
);

CREATE TABLE genre (
    id SERIAL PRIMARY KEY,
    name VARCHAR(200)
);

CREATE TABLE album (
    id SERIAL PRIMARY KEY,
    name VARCHAR(200),
    artist_id INT, CONSTRAINT artist_id_exists FOREIGN KEY (artist_id) REFERENCES artist (id)
);

CREATE TABLE song (

    id SERIAL PRIMARY KEY,
    name VARCHAR(200),
    album_id INT, CONSTRAINT album_id_exists FOREIGN KEY (album_id) REFERENCES album (id)
);


これを、init_pgsql という名前で保存しておいて、

# psql -U turbotunes turbotunes
turbotunes=>\i init_pgsql


で手動で実行。。。何のためのヘルパースクリプトなんでしょう。

さあ、実行


まずは、model.py、controllers.py を変更します。model.py は、

Genre.createTable(ifNotExists=True)
Artist.createTable(ifNotExists=True)
Album.createTable(ifNotExists=True)
Song.createTable(ifNotExists=True)


なんかが追加されていますね。

それから、controllers.py へのリンクが間違っています。http://www.turbogears.org/preview/docs/TurboTunes/controllers.py ですね。しかし、このファイルには一部誤りがあります。

from turbogears.catwalk import CatWalk ではなく、
from turbogears.toolbox.catwalk import CatWalk です。

あと、turbotunes用の画像がないので、http://www.turbogears.org/docs/TurboTunes/turbotunes.zip からダウンロードして
このstaticディレクトリをプロジェクトのstaticディレクトリへコピーします。

ここで、http://localhost:8080/ にアクセスすると、xTunesなサイトが表示されます。

関連サイト


OSC2006 [software]


オープンソースカンファレンス2006 Tokyo/Spring(大久保)を見に行きました。LinuxカーネルからOpenOffice、XOOPSやJBOSSなど、様々なOSSのセミナーがありました。JBOSSは社長さんが来日されていたそうですね。また、セミナーだけではなく各種ユーザ会もたくさん出展されていました。KNOPPIXやOpenOffice2.0のCDの配布も。
明日(18日)もたくさんのセミナー(出張カーネル読書会、XOOPS、仮想化、Catalyst、Ruby、vim、Samba等)、展示(MONA、OSASK、赤坂Perlモンガーズ?、なでしこ等)があります。当日いきなりも可能で、しかも無料ですので、参加してみてはどうでしょう。

それから、翔泳社さんやオライリー・ジャパンさんが10%引き本を持ちこんで出店されていました。Perlプログラミング救命病棟実用 Perlプログラミング 第2版も10%引きで!につられ、思わず買ってしまいました。
あれ?実用Perlプログラミングは発売が24日ですよね? Amazon店にも並んでいないようです。作者は、Simon Cozensさん。内容は、邦題についている「実用」とはちょっと離れていると感じました。元のタイトル(Advanced)の通り、「上級Perlプログラミング」や「一歩進んだPerlプログラミング」がよいのではないでしょうか。YAPC::Asia 2006 Tokyoを見に行く人は必読でしょう。



Advanced Perl Programming

Advanced Perl Programming

  • 作者: Simon Cozens
  • 出版社/メーカー: Oreilly & Associates Inc
  • 発売日: 2005/08/30

TurboGearsでCATWALK(1) [software]

PythonでWebアプリケーション




Pythonの注目のWebフレームワークであるTurboGearsをウォッチしていたところ、新しいチュートリアルページ:TurboTunesが開設されていました。

TurboTunes


http://www.turbogears.org/docs/TurboTunes/index.html

CATWALKのクリップビデオがかっこよかったので、インストールしてみることにしました。

といっても手軽に今使っているWindows環境にインストールしてみたかったので、coLinux + Debianで試してみました。

coLinux + Debian


coLinux + Debianのインストールは、Cooperative Linux(coLinux)のメモに書いてあるとおりに行えば簡単です。

エディターやgcc、glibcなどの開発環境をapt-getで入れていきます。外部へのアクセスにProxyを必要とする場合は、/etc/apt/apt.conf.d/70debconf に

Acquire::http::Proxy "http://proxy.example.com:8080/";
Acquire::ftp::Proxy "http://proxy.example.com:8080/"; 

などと書いておきます。また、モジュールのダウンロードのwgetを使用するなら、/etc/wget-rcに以下を設定します。

 http_proxy = http://proxy.example.com:8080/
ftp_proxy = http://proxy.example.com:8080/
use_proxy = on 

TurboGearsの前準備


TurboGearsはPython2.4を必要とするので、python2.4を入れておきます。

# apt-get install python2.4
# cd /usr/bin
# ln -s python python2.4

また、TurboGearsで使用するデータベース(postgreSQL, MySQL, SQLite等)もapt-getしておきます。

# apt-get install sqlite
# apt-get install python2.4-sqlite

次に、pythonモジュールを簡単にインストールするために、setuptoolsを入れておきましょう。

# wget http://cheeseshop.python.org/packages/source/s/setuptools/setuptools-0.6a6.zip
# unzip setuptools-0.6a6.zip
# cd setuptools-0.6a6
# python setup.py install 

TurboGearsのインストール


さて、それでは、ダウンロードページから、TurboGearsに必要なモジュールを入れていきます。しかし、TurboTunesのチュートリアルを見ると、対象レベルはTurboGears0.9からとなっています。現在(11月16日)は0.83aまでしかりリースされていません。

そこで、Nightly SnapShotで開発中のパッケージをダウンロードします。

# wget http://www.opensource4you.com/turbogears/TurboGears-0.9a0dev_r200-py2.4.egg
# wget http://www.opensource4you.com/turbogears/FormEncode-0.2.3dev_r1236-py2.4.egg
# wget http://www.opensource4you.com/turbogears/Paste-0.4dev_r3677-py2.4.egg
# wget http://www.opensource4you.com/turbogears/kid-0.7.1-py2.4.egg

# wget http://cheeseshop.python.org/packages/2.4/P/PasteDeploy/PasteDeploy-0.3-py2.4.egg
# wget http://cheeseshop.python.org/packages/2.4/P/PasteScript/PasteScript-0.3.1-py2.4.egg

# wget http://www.turbogears.org/download/eggs/cElementTree-1.0.2-20050302.tar.gz
# wget http://www.turbogears.org/download/eggs/RuleDispatch-0.5a0dev_r2097.zip
# wget http://www.turbogears.org/download/eggs/PyProtocols-1.0a0dev_r2082.zip
# wget http://www.turbogears.org/download/eggs/elementtree-1.2.6-py2.4.egg
# wget http://www.turbogears.org/download/eggs/json_py-3.2.1-py2.4.egg
# wget http://www.turbogears.org/download/eggs/SQLObject-0.7.0-py2.4.egg
# wget http://www.turbogears.org/download/eggs/CherryPy-2.1.0_rc2-py2.4.egg

拡張子がtar.gz、zipは、

# tar zxvf <パッケージ名>.tar.gz  または  unzip <パッケージ名>.zip
# cd <パッケージ名)
# python setup.py install
のようにインストールし、拡張子はeggの場合は、
# easy_install <パッケージ名>.egg
でインストールします。

TurboTunesチュートリアル

それでは、チュートリアルに従い、セットアップしていきます。

ヘルパースクリプトの実行

まずは、ヘルパースクリプトを使用して、プロジェクトを作成します。
# tg-admin quickstart
Enter project name: turbotunes
Enter package name [turbotunes]:
creating directory turbotunes
generating turbotunes/dev.cfg
generating turbotunes/prod.cfg
generating turbotunes/turbotunes-start.py
generating turbotunes/setup.py
creating directory turbotunes/turbotunes
generating turbotunes/turbotunes/__init__.py
generating turbotunes/turbotunes/controllers.py
generating turbotunes/turbotunes/model.py
creating directory turbotunes/turbotunes/sqlobject-history
creating directory turbotunes/turbotunes/static/css
creating directory turbotunes/turbotunes/static/images
creating directory turbotunes/turbotunes/static/javascript
creating directory turbotunes/turbotunes/templates
generating turbotunes/turbotunes/templates/__init__.py
generating turbotunes/turbotunes/templates/master.kid
generating turbotunes/turbotunes/templates/welcome.kid
creating directory turbotunes/turbotunes.egg-info
generating turbotunes/turbotunes.egg-info/sqlobject.txt
running egg_info
writing requirements to ./turbotunes.egg-info/requires.txt
writing ./turbotunes.egg-info/PKG-INFO
writing top-level names to ./turbotunes.egg-info/top_level.txt

データベースの設定

# cd turbotunes
# vi dev.cfg
[global]

# DATABASE
sqlobject.dburi="sqlite:///root/python/turbotunes/turbotunes.db"

モデルの設定

# vi turbotunes/model.py
"""ジャンル"""
class Genre(SQLObject):
    name = StringCol(length=200)
    artists = RelatedJoin('Artist')

"""アーティスト"""
class Artist(SQLObject):
    name = StringCol(length=200)
    genres = RelatedJoin('Genre')
    albums = MultipleJoin('Album')

"""アルバム"""
class Album(SQLObject):
    name = StringCol(length=200)
    artist = ForeignKey('Artist')
    songs = MultipleJoin('Song')

データベースの作成

# tg-admin sql create
Using database URI sqlite:///root/python/turbotunes/turbotunes.db

コントローラの作成

# vi turbotunes/controllers.py
import turbogears
from turbogears import controllers
from turbogears.catwalk import CatWalk
import model

class Root(controllers.Root):
    catwalk = CatWalk(model)

    @turbogears.expose()
    def index(self):
        return dict()

自前のHTTPサーバの起動

# python turbotunes-start.py
2005/11/16 19:39:02 CONFIG INFO Server parameters:
2005/11/16 19:39:02 CONFIG INFO   server.environment: development
2005/11/16 19:39:02 CONFIG INFO   server.logToScreen: True
2005/11/16 19:39:02 CONFIG INFO   server.logFile:
2005/11/16 19:39:02 CONFIG INFO   server.protocolVersion: HTTP/1.0
2005/11/16 19:39:02 CONFIG INFO   server.socketHost:
2005/11/16 19:39:02 CONFIG INFO   server.socketPort: 8080
2005/11/16 19:39:02 CONFIG INFO   server.socketFile:
2005/11/16 19:39:02 CONFIG INFO   server.reverseDNS: False
2005/11/16 19:39:02 CONFIG INFO   server.socketQueueSize: 5
2005/11/16 19:39:02 CONFIG INFO   server.threadPool: 0
2005/11/16 19:39:02 HTTP INFO Serving HTTP on http://localhost:8080/

ブラウザでアクセス

No access for 192.168.0.1

By default only localhost (127.0.0.1) has access to CatWalk.

You can provide access to your client by passing your host address to CatWalk as a parameter. Ex:

                                from turbogears.catwalk import CatWalk
                                catwalk = CatWalk(model,allowedHosts=['127.0.0.1','192.168.0.1'])
アクセスエラーが出るので、コントローラーのCatWalkオブジェクトの生成時にallowedHostsを指定し、HTTPサーバを起動します。 もう一度アクセスしなおすと、TurbeTunesのTOPページが表示されます。 以下は、Artistの項目のStructureを表示したものです。 その後、データの追加でエラーが発生しました。とりあえず、今日のところは、ここまでにして、0.9のリリース判が出たら、また試したいと思います。
初めてのPython 第2版

初めてのPython 第2版

  • 作者: マーク ルッツ, デイビッド アスカー
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2004/11
  • メディア: 単行本
---
PerlユーザのためのPython移行ガイド

PerlユーザのためのPython移行ガイド

  • 作者: マーティン・C. ブラウン
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2002/10
  • メディア: 単行本

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。