たごもりすメモ

コードとかその他の話とか。

python

REPLでありつつ指定のコードをappspotで動作させる flex_remote_api_shell を作った

remote_api_shell は手元で書いたコードをすぐ動作させることができて、しかも本番環境に対してデータをすぐにput()できたりするので大変便利だと思うんだけど、いかんせん遅いのが問題。複雑なデータのメンテナンスをするときに便利なんだけど、対象のエン…

simpleoauth-gae直しながらTwitter APIと戯れる

simpleoauth-gaeを前の記事の時点以降で実用するのにちょっとずつ直してるんだけど、あれこれあったのでメモ程度に書いておく。要約するとTwitter APIに対するapi.twitter.comの挙動ヒドいっす。ゆるふわAPIとか言い得て妙すぎる。 23日前後の状況 前に書い…

GAE用のOAuthライブラリ simpleoauth-gae を作ってる

ある人の発言から時事ネタサービスを作ろうと思いたったわけだが、TwitterとのOAuthまわりでハマりにハマって、結局有りモノに手を入れてしまったのでその話。結論からいくと、使いやすい(と自分では思っている)ライブラリに修正して公開しましたよ、という…

GAETestBaseの公開について

先日のエントリーで公開したGAETestBaseだけど、とりあえずスクリプト置き場をーくらいの気持ちでGoogle Codeに置いたら速攻でKay frameworkにバンドルされてしまってひいい*1、という状況に。ライセンスはGoogle Codeの設定をする必要があって一応決めてた…

AppEngine SDK標準テスト用環境の問題

そういえばしゃべったりTwitterに垂れ流したりするだけでまとめてなかったぞ、ということでまとめてみる。よく考えたら問題点もまとめずにテスト環境の改善が!とか言ってても、何が問題なのかわからない人にはわからないよなあ。反省。 まとめたら @tmatsuo…

テストケースのベースクラス GAETestBase を作った

前に書いた記事からはやくも半月たってしまったが、やっと出してもいいかなという状態になったので公開します。ファイルそのものはこちら。GAETestBaseはPython標準のunittest.TestCase継承クラスとなってます。ユニットテストを書く際に、通常のTestCaseの…

クラスメソッド入れ替えに伴うバグ?

AppEngine用のテスト基盤を作るのにあれこれやってたら、Pythonのバグ?らしきものを見付けたのでメモ。Python2.5でも2.6でも起きる。 あとで本当にバグなのか仕様なのかを調べる。仕様だったらやだなあ……と思ったが、バグでも、これ一朝一夕には直らない気…

GAE/Pythonテスト環境に欲しいもの

いまPython on GAEのテスト環境の貧弱さをなんとかするべく、あれこれやってる。とにかくテスト環境がショボいんだよね。 App Engine/Pythonはローカルのデータストアのstubの出来が良くないので、ローカルとプロダクションで動きが違うことが結構あり、ロー…

run_in_transaction内でトランザクション外データストアアクセスを行う方法

基本的なトランザクションの話をすこし GAE/Pythonではトランザクション処理を行うのに db.run_in_transaction() を使う。典型的な使いかたは以下のような感じで、指定した関数内の処理がまるごとトランザクション内として扱われ、関数から出たところで自動…

ApiCallHandlerは本当にTransactionを処理できないのか?

前に書いたremote_apiのトランザクション処理は実はproduction環境そのものとは違った件の続き。remote_api_shell(およびRemoteStub)経由でTransactionを処理するとどうなるのか? を調査した結果。結論:できませんでした。 ApiCallHandlerにTransactionを…

production環境の実装を調べ……ちゃダメだよ!

前からTransactionの挙動について調べてるが、remote_apiのトランザクション処理は実はproduction環境そのものとは違った件で既に書いたとおり、どうもproduction環境とdev環境では実装がかなり違うっぽい。 その調査はやってる(まだ途中)んだけど、その経過…

remote_apiのトランザクション処理は実はproduction環境そのものとは違った件

前にremote_api_shell.pyの使い方 - tagomorisのメモ置き場を書いたとき、balmysundaycandy-scala betaをリリースしました! - marblejediaryにある「トランザクションが使えない問題がこっちでは起きてない」旨の話をTwitterでもらった。が、このときは「Re…

production環境のDatastoreを使って手元でUnitTestを実行する

前にremote_api_shell.pyを使って対話実行環境でproductionのDatastoreに接続する方法を書いた。 で、もちろん次は自動テストをproductionのDatastoreでやりたいよね? ということで、そのための方法を書いたのでご紹介。Javaとかだとproduction環境内で直接…

remote_api_shell.pyの使い方

手元の端末からGAE production環境のデータストアに接続する GAE/pythonのSDKについているDatastoreモドキ(datastore_file_stub)は実に機能が貧弱で、トランザクションの衝突を手元でシミュレートしたりできない。これは本物のDatastoreの理解には割と困る。…