http://coreblog.org/ats/turbogears10b1
XXで実績があるぞ!と、うたっているわりには、API がちょこちょこ変わっていたのが気になってましたが、そのあたりも最近では fix したとのこと。
これがなによりの朗報かも?
以下、同僚に教えてもらったりした設定例。
Trac はなかなか便利なんですが、複数のプロジェクトを扱う場合は、すこし工夫が必要。
$ trac-admin /var/trac/hoge1 initenv 'Hoge1 Project' sqlite:db/trac.db /var/lib/svn /usr/share/trac/templates
$ trac-admin /var/trac/hoge2 initenv 'Hoge2 Project' sqlite:db/trac.db /var/lib/svn /usr/share/trac/templates
と、2つのプロジェクトを登録していた場合、
httpd.conf を
<Location "/projects/hoge1">
SetEnv TRAC_ENV "/var/trac/hoge1"
</Location>
<Location "/projects/hoge2">
SetEnv TRAC_ENV "/var/trac/hoge2"
</Location>
とか書き連ねて、各ディレクトリに、trac.cgi をコピーといった荒技を繰り出したくなるんですが(え?ならない?)、そんなことをしなくても
ScriptAlias /trac /usr/share/trac/cgi-bin/trac.cgi
<Location /trac>
SetEnv TRAC_ENV_PARENT_DIR /var/trac
</Location>
だけで OK。上の例だと
http://www.example.co.jp/trac
にアクセスすると、そのサイトで管理されているプロジェクト一覧が表示されるので、あとはそのリンクをたどればOK。もちろん
http://www.example.co.jp/trac/hoge1/
http://www.example.co.jp/trac/hoge2/
でもアクセス可能。
あとSubversion についてですが、ディレクトリを切ることでプロジェクトを分け、運用する場合の話。上記の例だと異なるプロジェクトのはずなのに、タイムラインを見ると、すべての更新情報が表示されるので、見通しが悪くなります(/var/lib/svnの部分)
ファイルシステム上に、そんなディレクトリねぇよ! とか思わず
/var/lib/svn/hoge1
とか指定しておくと、リポジトリツリーの hoge1 以下の変更のみが表示されるので、見通しがよくなります(cf. http://wota.jp/ac/?date=20060301#c01)
あとで直す場合は
/var/trac/hoge1/conf/trac.ini
[trac]
repository_dir = /var/lib/svn/hoge1
を修正すればOK。
ちなみに Trac の機能に不満をもったら
http://trac-hacks.org/
へアクセス。きっと欲しい機能をサポートしたプラグインがあるはず。
さきに Python の勉強だろ? って話しもありますが、Python の Django と TurboGears をインストールして遊んで見ました。
TurboGears の CatWalk に代表される Toolbox も確かに Ajax バリバリでいいんですが、その部分に関しては、若干カスタマイズに欠ける気がしました(普通にカスタマイズできるのかもしれないけど、要確認だなぁ)
個人的には、Django の方がよいかも?(昨日の会場では TurboGearsの方がいい!と手を挙げまくってた私ですが(^^;))
理由は以下から。
- CRUD の出来がよさげ
- 表示部分のカスタマイズが容易
- 管理画面は設定書き換えるだけで日本語化
- チュートリアルが最新バージョンに追随していて、進めやすかった。
いや、TurboGears 同様にカスタマイズとかできるのかもしれないけど、実際に触ってみての 1st impression は Django に軍配かなぁ?(そんなエラらそうに言える立場でもないんですが)
とりあえず Django でアプリを書くぞ! というのを自分のエサにして、Python の勉強に励むとしよう(^^;
前日飲みすぎてヘロヘロでしたが、出かけて来ました。
プログラムは
1. kizasi.jp : 今日,ブログで話題になったことって?
2. やり直しのための Python プログラミング
3. Skype 〜 活用と連携
4. 最新Webアプリケーションフレームワーク比較
5. IronPython のご紹介
でした。
発表資料は
http://www.python.jp/Zope/workshop/200604/index_2_html
からダウンロードできます。2006/04/08 現在では、すべての資料が掲載されていないようですが、後日掲載されると宣言されていたプログラムもありますので、そのうち載るでしょう :-)
以下、感想など。
1. kizasi.jp : 今日,ブログで話題になったことって?
kizasi.jp は、いわゆる一般の人達が書いているブログを解析することで、いま、なにがブログで語られているか、といったことを目に見えるようにしたサービスです( Blogwatcher と似たサービスといっていいかも。え、ちがう?(^^;))
たとえば JPNIC を検索すると、ここ最近だと
IPv 枯渇 提言 アドレス remarks 公開 向けた 氏名 a. b. ISP JPNICハンドル アドレス枯渇 MAINT-JPNIC mnt-by JNIC changed information AP 報告書 数年 10年
といったキーワードとともに語られることが多いなんてこともわかります。
システム構成としては、一部 C++ で書かれているところもあるそうですが、その多くが Python で書かれているそうです(クローラなども含め、計1万2000行程度のプログラムだそうです)
「なんで Python なん?」
という理由については
- 習得の簡単さ
- 標準ライブラリの充実
- コードが(書こうと思えば)きれいに書ける
- 実験的なコードが簡単に書ける
- はじめは技術スタッフのリーダーの好み?
が挙げられていました。「習得の簡単さ」については
http://musicmarq.jp/
を見てもらえればよいかもしれません。このサイトのプログラムは、入社したばかり(といっても2005年度ですよね?)の新人君が Python を勉強して、ほぼ1人で書いたそうです。良い経験させてもらってるねぇ:-)
2. やり直しのための Python プログラミング
基本的に時間がなく、駆け足。初心者も一応対象ではありますが、さすがに Python チュートリアルとかにも目を通したことがない! って人は、ついていくのが辛かったかもしれません。
内容としては、Python の基礎に加え
- スライス覚えるといいよ
- get,setdefault,pop を使うと便利(Python 2.4以降でしたっけ?)
こいつを使うと、辞書の操作をするときに、default の値がセットできたりします。
- 内包表記について
- Generator について
- 日本語についての問題点の回避
とかが話されていました。とくに内包表記、Generator、またそれらの違いってのが興味深い話しだろうと思います。資料が掲載されたら、読み返したい……
3. Skype 〜 活用と連携
Skype って単なる VoIP ソフトじゃないのね。といった感じでした(^^;
Skype の紹介と、SkypeAPI で出来ること。またそれを Python から操作するには? といったことが紹介されていました。
ちょっと時間をとって、Skype API でじっくり遊んで見たいなぁ……
ちなみにSkype を使って遠隔会議とかやることもあるんですが、会社の中で、マイクつきイヤフォンで話している姿は、はたから見ると独りで話している危ない人に見えるらしい(同僚に、「いきなり話し出すからびびった」とか以前言われた)
他の人に誤解されていないか心配だ (^_^;
#Skype用の外付けの電話を使って話した方が自然かもしれない。でもあれって Linux で使えるんだっけ?
4. 最新Webアプリケーションフレームワーク比較
- Django
- TurboGears
- web.py
の3つのアプリケーションフレームワークの比較をパネル形式で話されていました。Django とTurboGears は、RoR に似た感じですね。詳細は、発表資料を見て頂くとして、個人的に気になった点を抜き出したものが以下。
- Django
-- 速い!
2500万 PV/day の実績あり
-- アンチ黒魔術
-- 日本語ドキュメントが充実(すべて日本語訳が!)
- TurboGears
-- 既存ライブラリを統合したもの
Mochikit, Kid, CherryPy, SQLObject
-- 徹底したドキュメント化(ドキュメントにない機能は存在していないと思って良い)
-- テストコード沢山
-- クールなCRUDフォーム自動生成ツールがある
-- Ajax 対応
-- オーサリングツールとテンプレートツールの相性がよい
- web.py
-- シンプル!
こんな感じ?日本語ドキュメントの充実と、パフォーマンスの良さから、Django にも惹かれるんですが、TurboGears について話しをされていた柴田さんが、実験的にほぼフル機能を搭載したSNSを書いたところ、「コード量は 500行ぐらいでした」とか、さらっと言われているのを聞くと、ちょっと衝撃を受けました。いま LDAP管理ツールを Perl で書いてるんですが、どう押し込んでも 1000 行は越えそうな感じなんですが……
あと、CatWalk とかも便利そうだし、ちょっと TurboGears で遊んでみたいなぁ(あわよくば、なんかのプロジェクトで使ってみたい)
5. IronPython のご紹介
CPython より速いぞ! ってな感じの IronPython ですが、.NET の機能とか、Visual Studio とも連係できるんだよ、という話しをされてました。
Python2.4互換とするべく、IronPython の開発はすすんでいるそうです。ちなみに IronPython は、商用利用もOKなライセンスです。いくつか制限事項はあるようですが。
GNU readline 向けではあるんですが、rlcompleter を使うと、tab による補完が可能らしい。
$ python
>>> import rlcompleter >>> import readline >>> readline.parse_and_bind("tab: complete")
とすると、
>>> str='text'
>>> str.tab
str.__add__ str.__lt__ str.encode str.replace str.__class__ str.__mod__ str.endswith str.rfind str.__contains__ str.__mul__ str.expandtabs str.rindex str.__delattr__ str.__ne__ str.find str.rjust str.__doc__ str.__new__ str.index str.rstrip str.__eq__ str.__reduce__ str.isalnum str.split str.__ge__ str.__reduce_ex__ str.isalpha str.splitlines str.__getattribute__ str.__repr__ str.isdigit str.startswith str.__getitem__ str.__rmod__ str.islower str.strip str.__getnewargs__ str.__rmul__ str.isspace str.swapcase str.__getslice__ str.__setattr__ str.istitle str.title str.__gt__ str.__str__ str.isupper str.translate str.__hash__ str.capitalize str.join str.upper str.__init__ str.center str.ljust str.zfill str.__le__ str.count str.lower str.__len__ str.decode str.lstrip
おお! これは便利 :-)
via http://www.python.jp/doc/nightly/lib/module-rlcompleter.html
via http://www.python.jp/Zope/PyLog/1046404380/1046602589/index_html
昨日はちょこっと、mailman のバグ(といっていいんだと思うんだけど)を追いかけてました。幸いなことに、ちょうど入門書の類に目を通していたので、ソースコードはある程度読めました。その点では良かったんですが、いまいち理解してないのに、修正までするのはなかなか骨でした。
で、一番ネックだったのが、使われているライブラリの機能や引数がよくわからん! ということでした。たとえば unicode() なんかは、どこにドキュメントがあるのか、なにを引数と取るのかがよくわからない。ああ! perldoc があれば……なんて思ってたんですが、実はとっくの昔からあるんですね(^^;
# pydoc unicode
これを知ってれば…… orz
普通に 初めての Python にも書いてあるし……やっぱり早く読破しなきゃ。この pydoc の面白いところは、ウェブサーバにもなるところ!
$ pydoc -p 8011
これで http://localhost:8011/ にアクセスすると……思った以上にいいかも。
#残念ながら IPv6 には未対応っぽい ;-p
いや〜〜 pydoc は、個人的には一つの break through ですなぁ。
こうなると CPAN は?とか思っちゃうんだけど、それが distutils であり、
http://www.vex.net/parnassus/
http://www.python.org/community/sigs/current/catalog-sig/
http://www.faqts.com/knowledge_base/index.phtml/fid/199/
ってことになるのかな?
http://www.python.jp/Zope/
も読もうっと。pydoc 知っただけで、なんか楽しくなってきちゃった :-)
Python チュートリアル
http://www.python.jp/doc/nightly/tut/
via http://sakito.s2.xrea.com/detail/
ドキュメントのダウンロードは
http://sakito.s2.xrea.com/python/pydoc/2.3/
から可能です :-)
初めての Pythonはリファレンスとして使って、Python チュートリアルを読んで勉強の方がよさげ?
Python Web Framework Statistics
http://www.jrandolph.com/blog/?p=24
via http://d.hatena.ne.jp/mopemope/20060212/p4
http://blogs.nuxeo.com/sections/blogs/fermigier/2006_01_13_python-megaframeworks
via http://mojix.org/2006/01/16/143714
RoR ちっくなフレームワーク? としては
- Subway (開発無期限停止中)
- TurboGears
- Django
あたりがメジャーらしい。その他の軽量なフレームワークは web.py ってのがあるみたい(Perl でいうところのCGI::Framework とか CGI::Application ぐらいの位置付けかな?)
TurboGears については
PythonからRuby on Railsへの回答か - Webフレームワーク 「TurboGears」 登場
http://mojix.org/2005/09/18/143711
が詳しい。個人的には、ここで紹介されている TurboGears : 20 Minute Wiki screencast に出て来るエディタが気になる。なんか勝手に () とか補完されたりして便利そう…… emacs の python-mode でもここまではやってくれないし。