2011年10月13日

GAE 纏めサイト

チョットしたサービスを起こす感じになりそうなんで、GAEを改めて調査したらいい感じに纏めてたサイトがあったんでメモメモ。

オレの和訳にオマエが泣いた - Google App Engine

和訳が変なテンション&情報がチト古いが、大分いい感じで纏められてる。
GAEを導入する際にまず読んでおくといいかも。

あ、そいえば"Go"言語が試験的にGAEで利用できるみたい。。。だが、C言語苦手だから自分はスルーw
ラベル:GAE Python
posted by 1.618 at 11:00| Comment(0) | python | このブログの読者になる | 更新情報をチェックする

2011年03月22日

pythonのMakoテンプレートでhtmlエスケープを外す。

…ドキュメントちゃんと読んでない俺みたいな奴は、多分知らないとハマる。w

Makoテンプレートエンジンはディフォルトでエスケープがかかるようになっている。
なので、

breakline = "<br>"

などとして、テンプレートに渡す。


${breakline}

で表示させようとすると、

<br>

となってしまう。
これを改行のタグとして認識させるためにはエスケープさせずに表示させる必要がある。
でそのやり方。

${breakline|n}

とするとエスケープされずにそのまま

<br>

と出力される。
ラベル:Python MAKO
posted by 1.618 at 17:46| Comment(0) | python | このブログの読者になる | 更新情報をチェックする

2011年02月24日

Djangoで複数のQuerySetをマージする方法。(ORサーチの仕方)

gaeを使って「OR」サーチをするのは不可能
検索条件を個々に発行して、結果をリスト化し、マージするのがせいぜい。
ソートがある場合はその後にしなければならず、GAEはクソの骨頂w

ただし、djangoとitertoolというパッケージを使用すれば結果をマージした後に半自動的にソートも出来るようになる。

例えば、
page_list = Page.objects.filter(...)
article_list = Page.objects.filter(...)
post_list = Page.objects.filter(...)
という三つのquerysetを作成したとする。

この二つのquerysetをマージしたい場合は、
from itertools import chain
result_list = list(chain(page_list, article_list, post_list))

更に、ソートしたい場合は、
result_list = sorted(
chain(page_list, article_list, post_list),
key=lambda instance: instance.date_created)

python2.4以降の場合は
from operator import attrgetter
result_list = sorted(
chain(page_list, article_list, post_list),
key=attrgetter('date_created'))

としてマージと同時にソートも出来てしまう!!

…らしいw
他にする仕事があって確認出来てない(汗
でも、特にインストールするもの追加するソースも無く、ノーマルの状態で出来るので大丈夫だと思われる。

ソース

以上!
ラベル:Python Django queryset GAE
posted by 1.618 at 19:31| Comment(0) | python | このブログの読者になる | 更新情報をチェックする

2011年02月18日

ImproperlyConfigured: App with label front could not be found

ImproperlyConfigured: App with label front could not be found

djangoでユニットテストをしようとすると、上記のようなエラーがでる。
ググってみると空のmodels.py入れたら直る的な事が書いてあったので入れてみたのだが、それでも直らない。

で、あーでもないこーでもないいいながらテンパりながらやっててようやく解決したorz

setting.pyのINSTALLED_APPSにパッケージ名(この場合だとfront)を付け加えるだけ。

…こんだけで3時間潰したよorz
ラベル:Python GAE Django
posted by 1.618 at 17:15| Comment(0) | python | このブログの読者になる | 更新情報をチェックする

2011年02月09日

GAEでサイト取り消しの可能性がある危険なパラメータ。default_expiration

GoogleAppEngineにはapp.yamlでいろんな設定ができるのだが、その中で危険なモノを発見。。。orz

default_expiration

appspot.comじゃなくて、独自のドメインでGAEを使用する場合凶器になる。
appspot.comをまんま使うんであれば特に問題ない。

設定の仕方はdefault_expiration: "1d"とかする。
"h(時)","m(分)", "s(秒)"と設定も出来る。

ただし、この設定、独自ドメインを使用してると、期限が切れるまでapp.yamlを更新しても適応されない…(現在ver. 1.4.1)

どうもドメインと静的ファイルの紐付けをまんまキャッシュするっぽい。
実際、default_expiration: "1d"と設定して反映した場合、"1m", "1s"に変更したapp.yamlを上げても静的ページは全く更新されなかった。
ただし、appspot.comは問題無く更新されていた。

しかもこの問題、等のグーグルに問い合わせてみたら『サポートできません。すみません』。

…をい!(爆怒

なので、"365d"とかやってメンテ画面を静的ファイルとしてアップしてしまうと、365日メンテ画面が表示されてしまうという悲惨な状態になってしまう。
こうなってしまうと待つかドメインを変えるか、appspot.comをまんま使うしか手が無い。

rm -r /とタメをはれるほど危険なパラメータ。

以上。
ラベル:Google App Engine
posted by 1.618 at 11:06| Comment(0) | python | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。