2011年3月27日日曜日

jQueryのAjaxの基本型

jQueryでAjaxを使う場合の基本型。
windowがloadされたら、get_pic()が呼び出される。
Ajaxでjson形式のデータを受け取りたい場合は、dataTypeをjsonにする。
指定されたURLにアクセスした結果をdataに格納する。
dataが空でなければ、dataの0番目をアラートで表示する。
※上記は、dataがリストデータであることが前提。

<script type="text/javascript">
$(function(){
 $(window).load(function(){get_pic();});
});
function get_pic(){
    $.ajax({
        dataType: "json",
        url: "/get_pic",
        success: function(data){
         if(data != '') {
                alert(data[0]);
            }
        }
    });
}
</script>

GAEのcron

http://code.google.com/intl/ja/appengine/docs/python/config/cron.html

cron.yamlに下記のように記載する。

cron:
- description: daily summary job
  url: /tasks/summary
  schedule: every 24 hours
- description: monday morning mailout
  url: /mail/weekly
  schedule: every monday of month 09:00
  timezone: Australia/NSW

scheduleは下記の仕様が使える。

every 5 minutes
every 12 hours
2nd,third mon,wed,thu of march 17:00
every monday of month 09:00
1st monday of sep,oct,nov 17:00

cronで使うURLにユーザがアクセス出来ないようにするには、app.yamlに下記のように、login: admin をハンドラ設定に追加する。

application: hello-cron
version: 1
runtime: python
api_version: 1

handlers:
- url: /report/weekly
  script: reports.py
  login: admin

Python 文字列の最後の空白文字(改行文字)を削除する

http://memo.jj-net.jp/182

rstrip()は行末の空白文字を取除く.空白文字とはstring.whitespaceで定義されているように '\t', '\n', '\r', '\v', '\f' である.本当に改行コードだけを削除する場合は,rstrip()に削除する文字を引数として渡せばよい.

Horie(key_name='hf'+str(no),userid=id,name=name.rstrip(),pic=pic).put();

GAE/PythonでtwitterAPIを使ってホリエモンのフォロワーをデータベースに登録している様
HorieというKindのnameはStringPropertyなので、複数行の登録は不可。
しかし、twitterのnameにはたまに改行文字が含まれている為、rstrip()を使ってそれを削除している。

2011年3月17日木曜日

Mac eclipseでGAE開発する為のPydev(Python2.5)の設定

eclipseをインストールして、Pydevプラグインをインストールすれば、eclipse上でpython開発ができますね。最近のPydevはGAEプロジェクトもついているのでGAEの開発をeclipse上でPythonでできますね。

GAEはPython2.5しかサポートしてませんが、Mac OS X 10.6.1はPython2.6が標準になってるので、eclipse上でpythonのインタープリターをpython2.5に設定しないといけませんね。やり方は下記であります。

eclipseインストールの後に、Pydevをインストールし終わったら、
eclipseのメニューバーから下記のとおり選択していきます。
[Eclipse] > [環境設定] > [Pydev] > [インタープリター - Python]

するとPython インタープリターという画面につきます。


右上の新規ボタンを押します。
次に参照ボタンを押します。
そして、下記ファイルを選択します。

/System/Library/Frameworks/Python.framework/Versions/2.5/bin/python2.5

あとはOKOKしていけばよい。
以上。

2011年3月16日水曜日

Mac ターミナル上のPython コマンド一覧

usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-B : don't write .py[co] files on import; also PYTHONDONTWRITEBYTECODE=x
-c cmd : program passed in as string (terminates option list)
-d : debug output from parser; also PYTHONDEBUG=x
-E : ignore PYTHON* environment variables (such as PYTHONPATH)
-h : print this help message and exit (also --help)
-i : inspect interactively after running script; forces a prompt even
if stdin does not appear to be a terminal; also PYTHONINSPECT=x
-m mod : run library module as a script (terminates option list)
-O : optimize generated bytecode slightly; also PYTHONOPTIMIZE=x
-OO : remove doc-strings in addition to the -O optimizations
-Q arg : division options: -Qold (default), -Qwarn, -Qwarnall, -Qnew
-s : don't add user site directory to sys.path; also PYTHONNOUSERSITE
-S : don't imply 'import site' on initialization
-t : issue warnings about inconsistent tab usage (-tt: issue errors)
-u : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x
see man page for details on internal buffering relating to '-u'
-v : verbose (trace import statements); also PYTHONVERBOSE=x
can be supplied multiple times to increase verbosity
-V : print the Python version number and exit (also --version)
-W arg : warning control; arg is action:message:category:module:lineno
-x : skip first line of source, allowing use of non-Unix forms of #!cmd
-3 : warn about Python 3.x incompatibilities
file : program read from script file
- : program read from stdin (default; interactive mode if a tty)
arg ...: arguments passed to program in sys.argv[1:]

Other environment variables:
PYTHONSTARTUP: file executed on interactive startup (no default)
PYTHONPATH : ':'-separated list of directories prefixed to the
default module search path. The result is sys.path.
PYTHONHOME : alternate directory (or :).
The default module search path uses /pythonX.X.
PYTHONCASEOK : ignore case in 'import' statements (Windows).
PYTHONIOENCODING: Encoding[:errors] used for stdin/stdout/stderr.

2011年3月11日金曜日

GAEのDatastoreのkey_name

すべてのエンティティは識別子を持っています。アプリケーションは、インスタンス コンストラクタに key_name 引数(str 値)を指定して、キーに使用するためにアプリケーション自身の識別子を割り当てることができます。

s = Story(key_name="xzy123")

key_name は Unicode 文字列(str 値が ASCII テキストに変換されたもの)として格納されます。key_name は先頭に数字を持つことができません。また、__*__(2 つのアンダースコアで始まり、終了する)の形式を取ることもできません。ユーザーのアプリケーションは、ユーザーが送信したデータをデータストア エンティティ キー名(メール アドレスなど)として使用するには、既知の文字列を前に付けるなどの方法で、その値を最初にサニタイズして、上記の要件を満たす必要があります。

key_name が指定されていない場合、エンティティが初めてデータストアに格納されるときに数値 ID が割り当てられます。

パス、種類、名前や数値 ID を含んだエンティティの完全なキーは、一意であり、エンティティに固有のものです。完全なキーはエンティティがデータストアに作成されたときに割り当てられ、どの部分も変更することができません。

個別の 2 つのエンティティのキーは、少なくとも一部が異なりさえすれば、類似した部分があっても構いません。たとえば、親が違っていれば、2 つのエンティティが同じ種類と名前を持つことができます。同様に、2 つのエンティティが同じ名前と親を持っていても(または親なしでも)、種類が異なっていれば構いません。

アプリケーションは、エンティティを作成した順番に数字を増やして割り当てる数値 ID に依存しないようにしてください。この方法は一般的ですが、保証はされません。