- 色体系変換 [otsuka]
- 色体系変換 [tohsaki]
- 共有ライブラリの認識 [otsuka]
- 共有ライブラリの認識 [jbking]
- UnboundLocalError [otsuka]
- UnboundLocalError [mopemope]
- 存在しないメソッドの呼び出し [otsuka]
- 存在しないメソッドの呼び出し [mopemope]
- 何語? [otsuka]
- 何語? [inao]
- Django AMFサンプルアプリ [otsuka]
- Django AMFサンプルアプリ [everes]
- Django AMFで検索してみた [otsuka]
- Django AMFで検索してみた [voluntas]
- Pythonで分散バージョン管理 [voluntas]
- The Django Book [otsuka]
- The Django Book [こせき]
2008年09月10日
Python | Djangoのテンプレートシステム
Django | The Django template language | Django Documentation
Djangoのテンプレートシステムが僕にはとても使いにくい。
DjangoでHTMLを出力させることは今まであまりなく、あってもシンプルなものだったので、今日までこのことに気付かなかった。
設計思想は分かるけど、HTMLレベルのデザインもプログラムも両方やる自分にとっては、ifタグで >= などの演算子も指定できなければ、and や or で繋ぐことも出来ないなんて我慢ならない(これを実現するカスタムタグは既に存在するけど)。
ロジックは全部カスタムタグでやれってことなんだろうけど、カスタムタグを作るのもやたらとややこしいコードが必要で、直感的とは言いづらい。JSPのTaglib作る方がシンプル。
しかもタグの出力結果にフィルタを掛けることもできないので、再利用しにくいカスタムタグを作らざるを得ない。尽く柔軟性に欠ける。
何か使い方を間違っているのか?
Pylonsみたいにテンプレートエンジンが選べればいいのだが。他のテンプレートエンジンに詳しいわけではないので、似たり寄ったりなのかも知れないけど。
2008年09月05日
Python | Django 1.0
Django | Weblog | Django 1.0 released!
ようやく1.0 Finalがリリースされました。露木さんによるリリースノートの翻訳も公開されています。
Django AMFも開発はほとんど進んでいませんが、現行のバージョンは1.0 Finalでも稼働します。
早速本日、Django 1.0 Final + Django AMFを使った、あるメーカーのキャンペーンサイトを公開します。
2008年08月09日
Python | trac 0.11.ja1のチケットメール
tracのチケットメールをiso-2022-jpで送る方法を書いたエントリーへのアクセスが以前から多かったのだけど、あの時のパッチに変更を加えた方がいい点があります。
body = unicode(body, 'utf-8').replace(u'\uff5e', u'\u301c')
body = body.encode('iso-2022-jp')
こうなってる箇所は
body = unicode(body, 'utf-8', 'replace').replace(u'\uff5e', u'\u301c')
body = body.encode('iso-2022-jp', 'replace')
こうした方がいいです。こうすると、本文に文字コード変換できない文字が含まれるときでもエラーになりません。
trac 0.11.ja1上で使っているnotification.pyをアップしておきます。
notification.py.zip
ストリッパーズの環境では、/usr/local/lib/python2.5/site-packages/Trac-0.11.ja1-py2.5.egg/trac に置いてます。
2008年08月08日
Python | 色体系変換
TekTekBlog -- PythonでHSV←→RGB変換 HSVとRGBを変換する機能が、なんと驚くべきことにPython標準モジュールに存在する。知らなかった。標準モジュールにそんな機能があるとは、さすがはPython。
2008年05月23日
Python | CronでDjango
"cron jobからDjangoフレームワークを利用する" 再び - nemologimport MyApp.settings as settings from django.core import management management.setup_environ(settings) from MyApp.foo.bar import buz x = buz()
なるほど、なるほど。
2008年05月21日
Python | パイ
半年以上ぶりにDjango(Django AMF)を実戦投入。0.96からは大分時間が経っているので今回はSVN版で。
1.0という区切りをなかなか迎えられないせいか、国内のDjangoコミュニティがおとなしくなってきているような気もする。どちらかというと流れはPylonsなのかな?
勉強会があればまた参加したいが。
jythonの本を買った。まだちょっとしか読んでないけど面白い。
2008年01月03日
Python | Django AMF 0.6 リリース
Django AMF 0.6をリリースしました。
新機能に伴う日本語ドキュメントは半分くらい書いた。英語はまだ全然。
僕としてはドキュメントをちゃんと書いてるつもりなんだけど、外国からの反応はドキュメントがほとんどないだの何だのなかなかシビアです。
まだバグは残ってるし、logging周りも書き直したい。そろそろFlexのRemoteObjectにも対応させたいし、サンプルアプリももうちょっと複雑なものを作りたい。Flash CS3用のコンポーネントもちゃんとまとめてリリースしなければ・・・と、やるべきことが一杯。
また実プロジェクトに投入すれば一気に開発が進むのだけど、当分はなさそう。
2007年12月01日
Python | powered by Django
・HONDA CROSSROAD MESSAGES
・STEP WGN ポスターつくろうコンテスト
一ヶ月ほど前に立て続けにリリースしたHONDAのクロスロードとステップワゴンのスペシャルサイト。両方ともサーバサイドではDjangoを採用しました。
ステップワゴンの方はDjango AMF。お陰でFlashとの連携はスムーズに開発できた。自画自賛。
管理用サイトを作るのに初めてnewformsの機能を使用。Django 0.96だったのでまだいろいろとバグが残っていて、SVN trunkのバージョンと比較しながらソースを修正することもあって、使えるようになるまでに結構時間が掛かった。
因みに、tohsakiがこのエントリーで書いている「更新系のユーティリティシステム」もDjangoを採用しました。
これらの小さな規模のシステムに現状のDjangoを実戦投入してみた感想としては、Webフレームワーク使うんならDjangoよりRailsを使った方がいいんじゃないかな、ということ。
そんな僕だが、今携わっているプロジェクトでRailsを提案するもPHPでやってちょーだい的な流れになってしまい、久々にPHPで開発。あと三週間後にはリリースされているはず。
2007年10月30日
Python | Djangoのイベント処理
django.dispatchを使ってイベントを捕捉する - perezvonの日記
Djangoのソースを追ってたら、
receivers = dispatcher.send(signal=signals.got_request_exception)というイベントを投げているようなコードに出くわした。この行の後に
receivers は参照されてないし、何のためのものなんだ?と思って調べてたら、上の記事に辿り着いた。Djangoにこんなイベント処理の仕組みが備わっていたなんて知らなかった。
Using Django Signals to Ping Sites on An Update
(via Django Dispatcher - UeblogWiki)
こういう使い方ができれば、すこぶる有用だ。
ドキュメントは→ What Are Signals?
2007年10月28日
Python | PILでサムネイル生成
Python Imaging Library HandbookPILで画像のサムネイルを生成するときメモ。
image.thumbnail((100, 100), Image.ANTIALIAS)
image.filter(ImageFilter.DETAIL) # または、image.filter(ImageFilter.SHARPEN)
image.save('/path/to/thumbnail.jpg', 'JPEG', quality=95)
サイズにも因るけど縮小しただけではねむい画像になってしまうので、シャープフィルターを掛ける。が、PILのSHARPENフィルターでは度合いを調整できず、ちょっとシャープが掛かり過ぎてる感じ。フィルターをいくつか比べてみたが、DETAILフィルターが妥協できるレベル。
最後に保存する際に、qualityオプションで大きな値を指定しないとこれまた劣化の原因となる。デフォルトの値は75。ドキュメントによると、95より大きな値は指定すべきではないとのこと。
サムネイル生成に丁度いいフィルターを自作したいところ。PILのカスタムフィルターがどこかに公開されてないかな?
2007年10月17日
Linux, Python | 共有ライブラリの認識
Linux上で、PostgreSQL + psycopg2 + Django on Apache with mod_python な環境で次のようなエラーが起こっていたら、Apacheの実行ユーザがPostgreSQLのライブラリを認識できていないということが原因。
Error loading psycopg2 module: libpq.so.5: cannot open shared object file: No such file or directory/etc/ld.so.conf に /usr/local/pgsql/lib を加えて、ldconfig コマンドを実行してシステムにPostgreSQLのライブラリを認識させればOK。
前もこの問題にはまったのに、記憶力が悪いせいでまたはまってしまったのでメモしておく。
2007年10月12日
Python | Django AMF 数値型の変換
Django AMFでActionScriptのNumber型の数値はPythonのfloat型になる。例えばFlashでRPCメソッドの引数に整数を渡した場合、Python側のint型を必要とするプログラムでは受け取ったfloat型の数値をいちいちint()関数で変換しなくてはならない。AS3でAMF3の場合はint型があるから特に問題はないのだが、int型のないAS2でAMF0の場合の話。
Javaだったら引数の型を指定できint型に変換されるけど、Pythonでは明示的に変換しないといけないから面倒くさい。
個人的には浮動小数点数やそれを含むオブジェクトをサーバに送ることは滅多にないので、ASのNumber型はPythonのint型に変換された方が都合がいいケースが多い。
どうしたものかと考え、次の三つの条件が揃っている場合にASのNumber型をPythonのfloat型として受け取った後、int型に自動変換するようにした。
これもDjango AMF 0.6の新機能。
1. settings.pyに AMF_NUMBER_TO_INT = True という設定がある。
2. AMF0を使っている。
3. 受け取ったfloat型数値が int(float_value) == float_value の条件を満たす。
float型を滅多に使わないのであれば、AMF_NUMBER_TO_INTを有効にしておいて、必要なところでint型の値をfloat型に変換すればいい。
2007年10月11日
Python | Djangoの開発サーバとFlash Player
Django付属の開発サーバを使ってDjango AMFアプリの開発を進めていたが、どうも挙動がおかしい。サーバからレスポンスを返しているにも関わらず、Flash側でそれを受け取れないケースがある。それも特定のRPCメソッドでだけ。
IEやFlash IDEのFlash Playerからだとこの問題が発生して、Firefoxからだと問題はない。IEからでもCharlesを間に挟むとこの問題は発生しなくなる。
Djangoの開発サーバではなく、Apache + mod_pythonで動かすとこの問題はどの環境のFlash Playerからでも問題は起こらない。
今はちゃんと調べる時間がないが、Djangoの開発サーバが返すレスポンスのHTTPヘッダに原因が隠れていそうな気がする。
2007年10月10日
Python | Django AMF 0.6 新機能
Django AMFの実戦投入を控えて、新機能が追加されている。0.6のリリースはまだ先だけど、自分用のメモも兼ねて簡単に内容をまとめておく。
- 任意のAMFヘッダをレスポンスのAMFメッセージに設定可能
@amf_cacheデコレータ_amf_no_return_attrsクラス変数amf.django.flashモジュールamf.django.test.RemotingServiceクラス- Python → AMFの型変換で
decimal.Decimalクラスに対応
3番目の _amf_no_return_attrs クラス変数には、Modelクラスの属性の中でFlashに返したくないもののリストを指定する。属性名の文字列でも、django.db.models.fields モジュールに含まれるクラスのオブジェクトでもいい。ここで指定された属性は、レスポンスのAMFメッセージには含まれない。
今のところAMF0の場合のみ対応。(追記: AMF3の場合も対応)
amf.django.flash モジュールには、Djangoのリクエストオブジェクトを渡せばFlashの FileReference クラスからアップロードされた画像ファイルを PIL Image オブジェクトに変換して返してくれる関数や、XMLデータを ElementTree オブジェクトにして返してくれる関数などが含まれている。
amf.django.test.RemotingService クラスは、内部でDjangoのテスト用クライアントを
使ったAMFクライアント。なので、ネットワークにリクエストは飛ばない。Djangoで実行するユニットテストの中で使う用。
この導入に当たって、これまでの amf.RemotingService クラスは構造を変更し、amf.client.RemotingService に移動。
追加。
- レスポンスのHTTPヘッダにContent-Lengthをセット
- メソッド実行時の例外をキャッチした場合、DEBUG時でなければADMINSにエラーメールを送信
2007年10月05日
Python | Django カスタムSQLとトランザクション
モデル API リファレンス : Django 0.96 オンラインドキュメント和訳PostgreSQL + psycopg2 + Djangoの組み合わせで、カスタムSQLで更新処理を行ってもオートコミットされていなかったので、手動でコミットしようとDBAPIで定義されている connection.commit() を実行してみたが、django.db.connectionにcommitなんて属性はないッスとエラーが出た。カスタムSQLの実行
connection や cursor は標準の Python DB-API を使っています.
カスタムSQLを使っても、トランザクション管理はDjangoで統一して行われるということだね。確かにその方がベターだ。
データベーストランザクションの管理
とりあえずview関数にautocommitデコレータを付けて解決。
一般的なWebアプリの場合はTransactionMiddlewareを入れておけば良さそうだ。
2007年10月04日
Python | Django エラー通知とsettings.py
Django の設定 : Django 0.96 オンラインドキュメント和訳電子メールによるエラー通知
サーバのエラー
DEBUG を False にすると,コードが例外を送出し,その例外が捕捉されず,結果的に 500 エラーになった場合に, Django は ADMINS 設定にリストされている全てのユーザにメールを送信します.これは,管理者が何らかのエラーにすぐに気づけるようにするためです.
Djangoで稼働するサイトを運用環境下において初めてこの機能を知った。これは便利。
settings.pyについてperezvonさんが書いていたけど、僕のやり方は環境変数に「DJANGO_RUN_MODE」を指定して、settings.pyの中で環境別に差分のsettings.pyを読み込む形です。ちょっとRailsを意識したんだけど、無駄に複雑な気もする。このsettings.pyの管理方法はまだ模索中。
RUN_MODE = os.getenv('DJANGO_RUN_MODE', 'local').lower()
if RUN_MODE == 'local':
DEBUG = True
TEMPLATE_DEBUG = DEBUG
else:
DEBUG = False
# (省略) 環境に共通の設定
# 環境別のsettings.pyをインポート
if RUN_MODE == 'development': from config.development.settings import *
elif RUN_MODE == 'production': from config.development.settings import *
else: from config.local.settings import *
大元のsettings.pyの設定値は後からインポートした環境別のsettings.pyで定義された同名変数の値で上書きされないことに注意。
Apache + mod_python環境ではSetEnvで環境変数を設定。
<Location />
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE project.settings
... 省略
SetEnv DJANGO_RUN_MODE development
</Location>
2007年09月18日
Python | UnboundLocalError
octech - スコープ定義何故この最後の例がエラーになってしまうのか理解できない。参考になるのは、p.286の「変数がローカルスコープに属するかどうかはスタティックに決定される」という項目です。
(省略)
また、この参照先の処理はスタティックに処理されるので、以下のコードはエラーになります。
例えば X が 99 じゃなかったら、X=10 にしたい場合はどうすればいいの? 関数の最初に global X を加えればいいんだけど、納得がいかない。
2007年09月04日
Flash, Python | Django与Flash的結合
DjangoFlash - Woodpecker.org.cn Wiki for CPUG
via 常山日記
Django AMFについて中国語で書かれたページ。
2007年08月31日
Flash, Python | Django AMF 0.5.1でやること
- AMF0でUNDEFINED型のサポート。
- amf.RemotingServiceクラスでFaultイベントが返ってきた場合に例外をスローするようにする。
- gettextへの対応。
1番目のはもう実装済み。3番目のgettextモジュールは使ったことがないので、これから調べてみないと。
あー、なるほど。Djangoで国際化機能がサポートされているのか。
追記 2007/9/3
全部対応した。しばらく様子を見てリリース。
2007年08月30日
Flash, Python | Django AMF 0.5リリース
先日告知した機能を実装したDjango AMF 0.5をリリースしました。
AMFのRPCサービスメソッドを実行するだけなら、Flash/Flexよりも簡単にできる手段だと思います。S2Flex2、AMFPHP、WebORB、RubyAMF、そして純正Flash Remoting MXと、サーバ側のプロダクトが何であろうと関係はありません。ちゃちゃっとネットワーク越しにサービスメソッドを実行したい場合に便利かも知れませんよと。
まずは日本語ドキュメントは書きました。
・Django AMF
・amf.RemotingServiceクラス リファレンス
2007年08月21日
Python | BooleanはIntTypeでもある
どうも動作がおかしいと思ったら。知らなかったよ。
>>>from types import * >>> isinstance(True, IntType) True >>> isinstance(False, IntType) True >>> isinstance(1, BooleanType) False >>> isinstance(0, BooleanType) False
Python | Django AMF 0.5の新機能
DjangoのUnicodeブランチで動かないというメールをもらったりもしてるんだけど、SVN版を追っかけたりはしないので放置して、Djangoと直接関連しない機能の開発に取り組んでいます。
Django AMFっていうネーミングがアレなんだけど、amfモジュールはDjangoと切り離しても使えるように設計しています。なので、AMFリクエストのPOSTデータをamfモジュールに通せば、Pythonオブジェクトに変換できます。その逆も然りでPythonオブジェクトをAMFリクエストデータに変換することもできます。
で、今開発している新機能がFlash RemotingコンポーネントのPython版。まだAPIを固めてないけど、以下のようなPythonコードでRPCサービスメソッドを実行できます。Flash/Flexからだと非同期での実行になるけど、これは同期呼び出しになります。
import amf
service = amf.RemotingService('http://127.0.0.1/gateway/', 'addressBookService')
results = service.getCards()
AMFの実装と言うとFlashからデータを受け取ってレスポンスを返すものが中心だったけど、リクエストを送るクライアント実装があってもいいんじゃないかと。
AMFサービスのHTTPUnit的なテストコード作る際にも使えるし、プロキシ的にも使えるんじゃないかなと。
0.5は月末辺りにリリース予定。
2007年08月20日
Python | 存在しないメソッドの呼び出し
特別なメソッド __call() を使用すると、存在しないメソッドの呼び出しを捕捉することができます。
PythonでこのPHPの_call()に該当する特殊メソッドはなかったっけ?
PHPマニュアルの「__call を使ったオーバーロードの例」をPythonで書いてみた。サクッと書いた分にはこんなやり方しか思いつかなかったけど、これだとCallerインスタンスのメソッドが呼ばれたのか属性にアクセスしようとしたのか分からない。他に定石なやり方がありそうな気がする。
class Caller(object):
def __getattribute__(self, name):
def missing_method_call(*args):
print "Method %s called:" % (name,)
print args
return (1, 2, 3)
return missing_method_call
foo = Caller()
a = foo.test(1, "2", 3.4, True)
print a
追記
ちょっと冗長になるけれど、クロージャを使わずにやる方法も。
class MissingMethodCall(object):
def __init__(self, name):
self.name = name
def __call__(self, *args):
print "Method %s called:" % (self.name,)
print args
return (1, 2, 3)
class Caller(object):
def __getattribute__(self, name):
return MissingMethodCall(name)
foo = Caller()
a = foo.test(1, "2", 3.4, True)
print a
2007年06月15日
Python | 何語?
Flex 2: Python, Django a Flash Remoting
いよいよ何語かも分からない言語でDjango AMFが紹介されています。
文章の中でストリッパーズサイトやWEB+DB PRESSへのリンクが張られているので、書いている人は日本語が読めるのかも。
調べた結果、この言語はPolish(ポーランド語)だった。いくつかの自動翻訳を使って、何となく書いてあることは分かったような分からないような。
2007年05月09日
Python | Django AMF 0.4.2
バグ修正版です。
リモートサービスメソッドからの戻り値がDjangoのQuerySet(やそのサブクラス)オブジェクトだった場合、list配列に変換してAMFにシリアライズされます。が、戻り値のオブジェクト(例えばlistやdict)にQuerySetオブジェクトが含まれる場合は、そのQuerySetがlist配列に変換されずAMFにシリアライズするときにエラーが起こっていました。
そんなバグを直しました。
あと、ドキュメントには書いていませんが、Djangoの認証システムと連携する場合に @login_required デコレータが使えるようになっています。
2007年05月07日
Python | Django amf service, once installed is a beauty to behold
Ben Cooper's Weblog | Django AMF service
Django AMFを紹介してくれてます。S2Flex2-componentsも。
Django amf service, once installed is a beauty to behold何かかっこいいことを言ってくれてるようなんだけど、うまく日本語に訳せません。
Django AMFの開発は小休止中だけど、ちょこっと追加したい機能があるのでDjango 1.0 Final Release待ちの間にもう一回アップデートするかも。
あとS2Flex2-componentsはFlex2用なので、Flash CS3用のRemotingコンポーネントをもうすぐリリース予定。
2007年04月04日
Flash, Python | Django AMF 0.4.1
一日でバージョンアップ。認証システムとしてDjangoのユーザ認証機能をそのまま使える関数を追加しました。かなりオシャレな仕上がりになりました。 http://sourceforge.jp/projects/djangoamf/
ActionScript側でDjangoユーザアカウントのユーザ名とパスワードをセットして、パーミッション制限が掛かっているRPCメソッドを呼び出せば、勝手に認証・ログインを行い、そのセッションクッキーをセットしてくれます。ユーザがDjangoのスーパーユーザーならば、存在するすべてのパーミッションに対して有効になります。
自分で認証の処理とか書かなくていいので、この楽チンっぷりはやばいよ。
var service:RemotingService = new RemotingService();
# アクセスユーザのユーザ名とパスワードを設定します。
service.setCredentials("username", "password");
service.do_something();・settings.py# 設定ファイルに次の一行を加える。 AMF_AUTH_FUNC = 'amf.django.authenticate'・sample/view.py
from amf.django import permission_required
# このview関数を実行するのに必要なパーミッションを
# デコレータの引数に指定します。
@permission_required('add_user')
def do_something(request):
return 'This function can be invoked by authenticated user.'ここまでやったら @login_required デコレータもサポートしたいなあ。
2007年04月03日
Flash, Python | Django AMF 0.4
先月末からいくつかリリースが続いてますが、今度はDjango AMFの新バージョン。ようやく認証システムを実装しました。これで実際のお仕事にも使っていただけると思います。
http://sourceforge.jp/projects/djangoamf/
Djangoのユーザ認証システムをDjango AMFでもそのまま使おうかと思ったのだけど、もっと柔軟にできるような仕組みにしました。したつもりです。
まだドキュメントをWikiにまとめてないのだけど、コードにするとこんな感じ。
var service:RemotingService = new RemotingService();
# アクセスユーザのユーザ名とパスワードを設定します。
service.setCredentials("username", "password");
service.do_something();・settings.py# 設定ファイルにアクセスユーザのパーミッションを取得する # 関数を指定します。文字列または関数オブジェクト。 AMF_AUTH_FUNC = 'sample.views._get_user_perms'・sample/view.py
from amf.django import permission_required
# このview関数を実行するのに必要なパーミッションを
# デコレータの引数に指定します。
@permission_required('admin')
def do_something(request):
return 'This function can be invoked by admin user.'
def _get_user_perms(request, username, password):
"""
settings.pyで指定した関数。Django AMFが認証時に実行します。
指定されたusernameとpasswordから、ユーザが所持している
パーミッション(ロール)の文字列を返します。
複数パーミッションを所持している場合はリストかタプルで返します。
"""
if username == 'username' and password == 'password':
return 'admin'
return None認証に失敗するとFlashにはFaultEventが返ります。FaultEvent#typeの値は「AMFAuthenticatinError」、#codeの値は「401」です。
次のバージョンではDjangoの認証システムをそのまま使える便利関数を提供する予定です。
2007年04月02日
Python | デコレータ
KoshigoeBLOG: Pythonのデコレータ構文について
初めて引数を取るデコレータを書こうとして、幾重にも関数をネストしなければならないことに気付いた。これは言語仕様としてはどうなのよ?と言いたくなる程。
Pythonのクラスのインスタンスメソッド第一引数と、このデコレータは嫌いだ。
2007年03月18日
Python | Django AMFサンプルアプリ
WEB+DB PRESS Vol.37でWebORB for PHPを使って実装したFlex Address BookのDjango AMF版をようやくリリースしました。コンパイルしたSWFも含まれているので、DjangoとFlashPlayer 9がインストールされていれば動かせるはずです。
djangoamf-samples.zip
他人様の環境で動くのか不安なところです。なので、もしこのエントリーを読んでサンプルを動かしてみた方がいれば、ご報告いただけると助かりますデス。
2007年03月16日
Python | Django AMF 0.3.3
[flex / django] communications with djangoamf « galactivision
via 常山
Django AMFのバグが報告されていたので、修正したバージョンをリリースしました。
バイトオーダーとかよく分かってないんですが、バージョン0.1を作っているときに試行錯誤で何とか自分のマシンで動いたのでそれで満足してました。僕とは縁がないCPUで引っかかるだけだろうと思っていたら、PowerPCでもダメだったようです。上記ブログで書かれていたコードは、バイトオーダーをマシンに合わせて自動変換するモジュールの関数を使ってスマートに解決してました。ので、即採用、即リリース。
ByteArrayデータをMEDIA_ROOTディレクトリ配下に一発で保存、削除できるユーティリティメソッドも追加してます。
2007年03月01日
Python | tempfile.gettempdir()
DjangoアプリをWindows上のDjango Development ServerとApache+mod_pythonでそれぞれ動作確認しててハマった問題。
Django Development Serverの場合、
import tempfile tempfile.gettempdir()は起動ユーザのTempディレクトリ、つまり"C:\Documents and Settings\username\Local Settings\Temp"を指す。
一方、Apache+mod_pythonの場合、"C:\WINDOWS\Temp"を指す。
Windowsの場合はややこしい。
2007年02月27日
Python | Django AMFで検索してみた
久しぶりに「Django AMF」でググってみたら、気になる結果がいくつか。
最近は海外からの問い合わせメールがちらほら届くようになったので、ちょっとは広まっているのかも知れない。Web+DB PRESSも発売されたので、サンプルをリリースしなければ。
[Plugin] Django AMF - SkiToo.Org Ce manque n'existe plus ! En effet, j'ai pu tomber par hasard sur le site DjangoAMF qui nous propose donc un middleware Django nous permettant d'utiliser le Flash Remoting. Ce plugin semble tout jeune (version 0.3.2) mais néanmoins actif (dernière mise à jour faite le 19 janvier 2007 ) Il semblerait qu'il soit développé par une équipe japonaise, mais fort heureusement une documentation anglaise est présente sur le site.読めない。。。 が、Google翻訳使って大体は分かった。「バージョンは0.3.2とまだ低いけれど、活発に開発されている。日本人が作っているけど、幸いなことに英語ドキュメントが用意されている」みたいな。
WebFaction Forum / More Static serving issues... BTW - if you are interested in harnessing the power of Flash for your Django apps, check out Django-amf written by Tomohiro Otsuka, http://djangoamf.sourceforge.jp/index.php?DjangoAMF_en
スパムとか そうそう、PyJUGブースに「Django AMFに非常に興味がある」という方がみえました。地方の方だそうで、Django勉強会には参加できないとのことでしたが、やはり見る人は見ている!と思いました。
スペイン語もあった。大学の時に第二外国語としてスペイン語を履修したのにさっぱり分からない。
Flash, Django y AMF
2007年02月05日
2007年01月11日
Python | Windows用mod_python
mod_python download - The Apache HTTP Server Project
Windows Apache用のmod_python-3.2がない。。。と思っていたら、Other Binariesのリンクを辿ればあった。MEMO。
http://ftp.kddilabs.jp/infosystems/apache/httpd/modpython/win/
Apache+mod_python環境下で、Django AMFが動かないバグを発見。今までDjango付属のテストサーバだけで確認していたけど、今度からは両方で確認しないと。
2007年01月09日
Python | Django AMF 0.3 リリース
Django AMFの新しいバージョンをリリースしました。今バージョンではAMF3をサポートしました。
PythonによるAMF3のオープンソース実装はおそらく世界初。世界初のバグ報告をお待ちしています。