Django 1.0 がリリースされました。リリース情報も、さっそく翻訳されています。
http://djangoproject.jp/weblog/2008/09/04/django_1_0_released/
PythonのUnicodeEncodeErrorを知る
http://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html
そうそう、Django1.0 から、チュートリアルの通りにすると、Admin Site の影響が、自作アプリに影響してしまいます。そんな時の対処方法はここ
Django1.0移行ガイド
http://d.hatena.ne.jp/nullpobug/20080815/1218767660
こんな感じで、admin.py として、別にしないと、Admin site は動くものの、自分で作ったアプリがすでにレジストされて云々と言われて、動かなくなります。
テスト用のオレオレSMTPサーバー
http://d.hatena.ne.jp/watanabe_t/20080808/1218175319
これは面白いね。
import asyncore, smtpd
smtpd.DebuggingServer(('localhost', 25), None)
asyncore.loop()
と、3行で、送信テスト用の SMTPサーバ(メールは受けるけど、中継・送信はしない)が構築可能。
ただし、この例だと 25ポートを使うので、root権限がないとダメ。もし root 権限がないままに進めると
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.5/smtpd.py", line 280, in __init__
self.bind(localaddr)
File "/usr/lib/python2.5/asyncore.py", line 303, in bind
return self.socket.bind(addr)
File "<string>", line 1, in bind
socket.error: (13, 'Permission denied')
って怒られちゃう。まぁ当然なんだけど。
CG系でガリガリ使われていたので、結構鍛えられていると思ったんですが、いろいろとあるようです。
http://blog.ohgaki.net/python
Googleがクラウドコンピューティングの言語としてPythonを採用したのでセキュリティ研究家が脆弱性を調査し、今年はPythonの脆弱性が多く報告されるはず、とこのブログで予想しています。
面白い予想ですね :-)
今年も Workshop が開催されたので、行ってみた :-)
Python Workshop the Edge 2007(2007年6月30日開催)
http://www.python.jp/Zope/workshop/200706
今回は、セミナーとハンズオンセミナーが平行で走っていたので、すべてに参加することはできませんでした。別の理由で 10時からのセミナーも出てませんが(いや、休日の朝は眠いですよね〜 ;-p))
Tシャツが貰えたのが地味に嬉しい :-)
■ Python Webフレームワーク総ざらえ2007 (セミナー)
Python には、多数の Webフレームワークがあるけど、特に Django, TurboGears, web.py, Pylons について。
- Django
すべて自前のコンポーネント。パフォーマンスが高い。人気も高い。
最近リリースされた 0.96では、
- newforms
- URLconf強化
- テストフレームワーク
- 管理画面でのユーザ管理の強化
などが行なわれているらしい。Unicodeブランチも切られている。もちろん、Unicodeブランチじゃなくても日本語は使えるんだけど、文字列の扱いに一貫性を持たせるなど、サポートを強化するらしい。0.97で?
- TurboGears
Django が自前コンポーネントなら、TurboGears は、組合せによるメガフレームワーク。
- CherryPy
- Kid
- SQLObject
- MochiKit
などが、内包されている。最近では、Kidから Tracでも採用(予定?)の Genshi への入れ替え、SQLObjectからSQLAlchemy への入れ替えなどが進んでいるらしい。
- web.py
0.21 がリリース。ただし、とうとう複数ファイル化に ;-)
- WSGI(PEP333), Paste, Pylons
- WSGI
WSGI は Python 製の Webフレームワークにおける取り決めみたいなものらしい。大抵の人は「ダヴゥリューエスジー」と読むみたい。「うえすぎ」と読む人もいるらしい。
- Paste
低レベルの WSGIフレームワーク
- Pylons
Pasteに基づいた Webフレームワーク
去年に比べて、Pylons が出て来たことが変化? トレースバックが強力な点が人気の秘密らしい。
質疑応答では、人にすすめるフレームワークと、自分で使うフレームワークについて質問が。人に進めるなら Django, 自分で使うなら、web.py とのこと。
発表資料
http://www.python.jp/Zope/workshop/200706/web-framework.pdf
発表者の Blogサイト
http://playrecord.org/pbomc/
■ Tracの活用(セミナー)
会社でも大活躍な Trac について :-)
Trac を活用するには、コミットルールなどや、チケット運用を決めておいた方がいいよとのこと。そういえば、このあたりは、明文化してないなぁ。その内、整理しておいた方がよいかも。
あと、0.11 での新機能について紹介がありました。
- フレキシブルワークフロー
- WebAdmin
WebAdmin はプラグインとして、すでに会社で使ってますが、ウェブ上から、コンポーネント名やチケット属性を追加・削除・変更できるので、大変便利。
trac-0.11 については、インタアクト株式会社さんの方で、すでに日本語化が進められているそうです。感謝 :-)
発表資料
http://www.python.jp/Zope/workshop/200706/UsingTrac.pdf
■ Twisted(ハンズオンセミナー)
思わず Twitter と勘違いしそうですが、イベント駆動型プログラミングモデルだそうです。コールバックを書いて、それを登録することで、プログラムを動かして行きます。
時間が限られていましたが、なかなか面白かったです。
Twitter で
- 友達の更新情報を取得
- 自分のデータを更新できるように
といった宿題付きでした :-)
■ Django(ハンズオンセミナー)
有名な Django についてです。特に、view と URL conf との連携を中心に話しが進みました。だいたいのチュートリアルがモデルを中心に進むので、これは効果的なセミナーだったと思います。
発表資料
http://www.python.jp/Zope/workshop/200706/django_handson.pdf
■ Pythonコード添削道場(セミナー)
大変おもしろかったです。聞き入ってしまっていたので、メモを取り忘れてしまいましたが、断片的にキーワードを書くと
- Pythonic, PEP8-ism
- import this 読む
- パッチも PEP8 に従ってないと、相手にされないよ
- モジュール名の慣習は Windowsでの制限が由来
- assert分は最適化で消える。debug文ではどんどん使うべき
- 空気読め
こんな感じ。
■ TurboGears(ハンズオンセミナー)
TurboGears は昔 1度触ったっきりだったので、復習も兼ねて。
一応 TurboGears をセットアップしておいたんだけど、
$ start-tgbbs.py
でエラーが......結局 python2.4, python2.5 on Debian/sid ではうまく行かず、python2.3 でインストールし直しました。で、そんなこんなしている間に、セミナーは進み……まぁあとでゆっくり発表資料を読もう (^^;
発表資料
http://www.python.jp/Zope/workshop/200706/turbogears.pdf
■ ライトニングトーク
途中から参加。こっちもあまりメモれず。
- Pythonの禅を実践するフレームワーク Pylons
TurboGears が Pylons上で動くらいし……
- IronPythonで作った Firebirdの管理ツール
起動が遅いらしいけど、起動後はそこそこのスピードで動作。
- xxxの回し者(http://d.hatena.ne.jp/yach/20070701)
普段は Ruby でコードを書くことが多いらしい。Ruby Kaigi で「あなたのツールを愛さなければならない」とDave Thomasが話していたのを聞いて「やっぱり私は Python を愛しているのだ」と目覚めたというお話<ちょっと違う
Stay happy!
■ 懇親会
- オライリーの「Python クックブック」のTシャツゲット! :-)
■ その他
お? Blogでの感想へのリンク集を作っているサイトを発見。
Python Workshop the Edge 2007総括
http://coreblog.org/ats/python-workshop-the-edge-2007-report
プログラム初心者向けではないと割り切っちゃってるので、楽に読めてとっても Goood :-)
初めての Pythonはあまりに網羅的で、リファレンス的に読むにはよいんですが、他の言語で、プログラミング経験がある人が読み切るのは、なかなか辛かったりしますからね。ちなみにこの本は、わからない言葉があってもガシガシ読み進めるのが吉。タプルとか、なんの説明もなしに出て来ても(P101 「タプルのリストが生成されます」とか)気にしない。後ろの方で説明が出て来ます。
ただ、誤植、サンプルコードのミスが多過ぎる気が……まぁ初版本ではこんなもんですかね。この点がおしいなぁ……
正誤表は
http://www.trirhino.com/books/ppyerrata
で公開されていますが、これ以外にも
P.215 サンプルコード 13-4-2-2
print b ミ c
は
print b - c
の誤り
P.218 サンプルコード 13-4-5-1
>>> len(c)
10
は、
>>> len(c)
5
の誤り
P.219 サンプルコード 13-4-6-1
return self.end ミ self.start + 1
は、
return self.end - self.start + 1
の誤り。
P.248 サンプルコード 16-1-4-2
>>> with open(test.txt','r') as f:
は
>>> with open('test.txt','r') as f:
の誤り
P.249 サンプルコード 16-1-5-1
>>> f.tell() # 現在位置は 6バイト目
4L
は
>>> f.tell() # 現在位置は 4バイト目
4L
の誤り
などがあります。もっとあった気もするけど、メモし始めたのが、途中からだったので忘れた。連絡しようと思ったんですが、誤植の連絡先とかが書いてないようなので、とりあえず放置で(^_^;
あとサンプルとして気になったのは、
P.80 サンプルコード 6-4-8-4
>>> `200`
200
repr関数は `` でも代用できるよ、という説明なんだから、小数を含むサンプルコードにして欲しかった(小数を含まない場合でも動作的には大丈夫なんだよ、ということを示したかったのかもしれないけど……まぁ私の気にしすぎかも)
P.156 サンプルコード 10-1-3-1
の
>>> (a is c) == (id(a) == id(c))
True
という箇所。flase == false なので True なんですが、aと c は値は同じだけど、オブジェクトとしては別物ですよ、ということを示すサンプルなだけに紛らわしい……その直前には、a と b はオブジェクトして同一です!というのを示すのに
>>> (a is b) == (id(a) == id(b))
True
としてるから、なおのこと(^_^;
いや、むしろ「ん?この流れだと falseって表示させたいんじゃ?」と思ってサンプルを実行してみたので、実は著者の狙い通りなのかも……
P. 169 サンプルコード 11-4-4-3
>>> def arvf ( *args ):
... print args
...
>>> arvf(1,2,3)
(1, 2, 3)
>>> arvf (*[1,2,3,])
(1, 2, 3)
……シーケンスの前に "*" を付けることで、なにが変わったのかがわからなくて切ない。・゚・(ノД`)・゚・。
ここは本気でわかんないので、あとで初めての Pythonで確認しよっと。
と、まぁいろいろ書きましたが良い本だと思います。とりあえずガシガシプログラム書きながら覚えたいんで、細かい仕様はあとでいいんだよ!という方にはお薦めの 1冊です :-)
Python界隈で有名なフレームワークの Djangoの本の beta版。
http://www.djangobook.com/
via 忘れた……
自由にコメントまでつけられる。むしろそっちのシステムが気になったり(^^;