12件中 1-5件目     [ 1 2 3 ]

Google App Engineにはデータをアップロードしたりダウンロードできるbulkloaderがあるが、bulkloaderでファイルのデータ(db.BlobProperty)などをアップロードしようとすると、フィールドのサイズが大きすぎるためエラーがでることがある。

Traceback (most recent call last):
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\bulkloader.py", line 1385, in run
    self.PerformWork()
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\bulkloader.py", line 1497, in PerformWork
    for item in content_gen.Batches():
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\bulkloader.py", line 471, in Batches
    self._ReadRows(key_start, key_end)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\bulkloader.py", line 394, in _ReadRows
    row = self.reader.next()
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\bulkloader.py", line 514, in Records
    limit = e.args[1]
IndexError: tuple index out of range

Pythonには辞書があるため、無名クラスや匿名クラスなどと言われるものが必要になることはあまりないが、引数に簡単なクラスのインスタンスを取る関数などを使う場合に無名クラスがほしいこともある。

Pythonでは以下のように、オブジェクトの型を調べるtypeを使って、無名クラスを作ることができる。

obj = type('',(),{})()

Google App Engine上で動くプログラムを開発する場合は、SDKに含まれる開発用のサーバを使って開発をするが、本番用のサーバ(appspot.com)と異なる点もあるため、開発用サーバかどうかを判定したいことがある。1つフラグを作って手動で切り替える手もあるが、うっかりフラグを戻し忘れたままアップロードしてしまうと、デバッグ用の情報が見られてしまうこともありえる。

そこで、環境変数をチェックすることで自動的に開発サーバかどうかを判定する。


hashlibモジュールでセキュアハッシュ(メッセージダイジェスト)を作成し、digestメソッドを使うとバイナリデータを返される。hexdigestメソッドを使えば[0-9a-f]で表した文字列を取得できるが、[f-zA-Z]の文字が使われていない分、長い文字列となる。

#!-*- coding:utf-8 -*-
import hashlib

md5 = hashlib.new('md5')
md5.update('この文字列のハッシュを取得します。')
print repr(md5.digest())
print md5.hexdigest()
'1,\xb8-\x1b\x83\xc2P(C\xa8h\xa8\x1a\xa0/'
312cb82d1b83c2502843a868a81aa02f

そこでバイナリデータを[a-zA-Z0-9]で表した文字列に変換する関数とその逆変換を行う関数を作ってみた。


先日、「Surgo: BigTableで悩む」という記事を見つけた。Google App EngineでTwitterのようなアプリケーションを作るにはどうすればいいかについて悩んでいるらしい。どうやら「Surgo: BigTableはPUSH型で」によるとPUSH型で作るということで解決(?)はしたようだが、PULL型でgoogle.appengine.ext.db.Queryの機能を使ってソートしたデータを取得するようなことはできないのだろうか?

Google App Engineの練習問題としては面白そうだったので、実際に簡単なサンプルを作って考えてみることにした。

(※実は私はTwitterを使ったことがなく、あまり詳しくは知らないので機能に関して誤解があるかもしれない。)


12件中 1-5件目     [ 1 2 3 ]