Django

昨晩偶然知ったPythonのMVC Frameworkであるdjangoに挑戦.一年ぶりのMVC Framework.今日のところはチュートリアルを試しただけだが,かなり完成度が高い感じがする.

Symfonyの時は悪戦苦闘したのだが,今回はひじょうにすんなり.(1年前のものと比較するのはフェアではないが...)
続きを読む>>
コンピュータ > ソフトウェア > MVC Framework : - : trackbacks (0)

python threading with XUL

昨日の続き.XULでアプリケーションを作る際,ネットワークを利用するならば非同期実行が必要になると考えた.XUL PlanetではXPCOMインターフェースとしてnsIThread, nsIRunnable, nsIXMLHttpRequest等が見つかるが,1.8のGecko-SDKにはそれらが入ってない.ショック.

とりあえずPythonのスレッド機能(threading)を試してみたところ,スレッド処理にsleep(0)を入れることでXULとも共存できることが確認できた.しかし,worker-threadからメインスレッドに処理完了を伝える手段が無い.

もうちょっと考えてみよう.
コンピュータ > ソフトウェア > Python : - : -

TkのFrameはウィンドウじゃなかった

Tkの"Frame"の意味を誤解していた.Frameはウィンドウじゃなくて,他のGUIで言うところのPanelみたいな物だった.つまりウィンドウ上にあって他のウィジェットを乗せる(見えない)トレーみたいなもの.
続きを読む>>
コンピュータ > ソフトウェア > Python : - : -

なんか調子よくコーディング

今日は昼過ぎから夜までPythonのコードを書いてた.GUIで作ろうと思ったけど挫折しそうだったのでとりあえずコンソールでインタラクティブなアプリ,と作り始めた物の結構思ったより量が増えちゃって動作確認とかちょこちょこやりながら7時間で380行くらい.
続きを読む>>
Personal : - : trackbacks (0)

[MEMO] MoinMoinのMOIN_DEBUGの罠

MoinMoin の起動スクリプト moin.py の先頭付近に
# Debug mode - show detailed error reports
## import os
## os.environ['MOIN_DEBUG'] = '1'
とあるのを見ると,プラグイン作成の時はこれをコメントアウトしたくなるかもしれない.

しかし,それは罠だった.ここはコメントアウトしてはいけない.
続きを読む>>
コンピュータ > ソフトウェア > Python : - : trackbacks (0)

[MEMO] Pythonの可変引数

ソース
class t1(object):
  def __init__(self, a="test", b="test2", x="test3",):
    print "[t1] a=%s, b=%s, x=%s" % (a,b,x)

class t2(t1):
  def __init__(self,*arg,**kw):
    print "[t2]", arg, kw
    super(t2,self).__init__(*arg, **kw)

u = t2("value1", x="value2")
続きを読む>>
コンピュータ > ソフトウェア > Python : - : trackbacks (0)

[MEMO] djangoのreverseとdecorator

Djangoのreverseではまる.ログインを強制するために @login_requiredを使っている場合はURLを名前付きで定義しないと urlresolvers.reverse が使えない.
続きを読む>>
コンピュータ > ソフトウェア > Python : - : trackbacks (0)

Djangoエラーチェッカー

  1. djangoでプログラムを書く
  2. manage runserverで試しに動かしてみる
  3. のっけからエラーで動かない
  4. 出力されたエラーログを見る
  5. 一回例外がトラップされているのか,どこでエラーになったのかさっぱり分からない.Traceがあてにならない上,urlsの読み込み失敗の原因がviewsにあったり,syntax errorの原因が正規表現だったりする.
  6. サーバを止めて,manage shellでシェルを起動.手動importするとsyntax errorが出る
  7. 直す

という非効率なことはやっていられないと作ったのが以下のスクリプト.たったこれだけだが,ケアレスミスによる手戻りを解消できる

続きを読む>>
コンピュータ > ソフトウェア > Python : - : trackbacks (0)

Juice Podcast Receiver

最近使っていなかったPodCastでのニュースダウンロードを再開した.少し時間ができたので,長い間更新されていなかった,Juice podcast receiver の改造にチャレンジ.元のソースを理解するのに数日かかったが,実際の手直しはいずれも数行程度でできた.

改造したものは以下の場所で公開中.
Juice Podcast Receiver - Enhanced version download

主な追加機能は以下の通り.
1. Feed当たりのダウンロード数の制限
2. download listからexplorerへのDrag & Dropによるコピー
(しかし,Skypeのウィンドウにはdropできなかった...)

1.はBBCニュースダウンロード用,2.はMP3 playerへの簡単コピー用の機能

これに加えて以下2点も改善された
3. リポジトリで直っていた多国語対応が取り込まれ,ヘブライ語,ドイツ語のFeedをダウンロードできるようになった.
4. Python 2.6 + 最新wxwidgetsでビルドし直したのでWindows Vista以降でも動く.(Windows 7で動作確認済み)
続きを読む>>
コンピュータ > ソフトウェア > ソフト紹介 : - : trackbacks (0)

Google App Engine使ってみた

8月初旬にGAEの上で動くアプリを作ってみようと思い立ち,自分のPCで試行錯誤を重ねていたものを本番環境へ展開した.開発環境にあったデータをそのまま移行したので表示部分は一応動いている感じだ.

ただ,気になる点がいくつかある.
1. インデックス
開発環境ではインデックスの明示的な指定は不要で,dev_appserverが親切にもindex.yamlを自動的に更新してくれる.しかし,本番環境ではインデックスのないQueryはNeedIndexError エラーになる.

2. 処理時間
アクセスログに応答時間とCPU時間が記録されるのだが,1アクセスで最悪時3秒弱かかっている.また,応答時間が190ms程度なのにCPU時間は680msになっているものもある.インスタンスの新規起動,データアクセスがCPUを食うようだ.memcachedの利用を最初から視野に入れた方がよさそう.

3. DataStoreアクセスエラー処理
本番環境ではDataStoreのアクセスタイムアウトという開発環境で起こらない現象が出るらしい.今のコードにはDataStoreアクセスに失敗した場合のエラー処理が入っていない.単純にやり直せば済む話であればcronやtask queueもリトライしてくれるので問題ないが,単純なやり直しでは済まない部分が問題となる.

まだ,動くか確認できてないので,URLは秘密.
コンピュータ > ソフトウェア > Python : - : trackbacks (0)

04
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
--
>>
<<
--
Latest Entries
Categories
Recent Trackback
Archives
Profile
Other
RECOMMEND