Google App Engine
参考:開発者にショックなGoogle App Engineの値上げ App Engine フレームワークの学習コストを差し引いても、価格高騰で Google を見限る開発者が増えそうです。 これが特定企業にインフラを依存するリスクなのでしょう。 Amazon EC2 に移行したとしても、…
開発環境 (SDK) は Linux と MacOSX のみですが、Google Go 言語で AppEngine を構築できるようになりました。 Python や Java の開発者が移行するメリットは少ないようですが、Google が Go を見捨てていなかったということが分かりました。 ダウンロード:…
後方参照を使えば、よりシンプルなプログラムを書くことができるようです。 次のような ReferenceProperty を用いたモデルが定義されているとします。 # # models.py # from google.appengine.ext import db class Site(db.Model): name = db.StringProperty…
アキノチューブ では、10分間隔で各カテゴリを巡回し、新しいエントリがアップロードされていないか確認する CronJob が動作しています。 ここで、更新したカテゴリのインデックス番号を保持するのにグローバル変数を使ってみたのですが・・・ # This is bad…
開発用サーバでは index.yaml で未定義のインデックスが使用されると自動的に定義を追加して対処しますが、本サーバでは未定義のインデックス・クエリが実行されるとエラーになります。 一方、インデックスはプロパティの組み合わせ数が多いほど、本サーバ上…
datetime モジュールの timedelta を有効活用します。 まず、次のようなモデルクラスの定義を仮定します。 # # models.py # from google.appengine.ext import db # データストア定義 class Entry(db.Model): published = db.DateTimeProperty() timedelta([…
私の使っている MacOSX 10.6 はデフォルトで python2.6 を使用するため、GoogleAppEngine の python2.5 準拠のプロジェクトで問題なく動作させるために設定した項目をいくつか書きます。 PyChecker について Google Python スタイルガイド で以下のように記…
ImportError: cannot import name xxxxHandler がなかなか解決できなかったのですが、よく確認すると継承元クラスのモジュールと継承先クラスのモジュールが互いに import し合っていました。 # # module_a.py # import module_b # # module_b.py # import m…
サムネイル画像やキーワード等を追加しました。 RSS 用の HTML テンプレートとして、以下を作成しました。 ここではテンプレート値として article エンティティを利用しています。 <img src="/static/images/thumbnail/{{ article.site.thumbnail }}" alt="thumbnail" align="left" hspace="15"/> <h3>{{ article.site.name }}</h3> <p>更新日:{{ artic…</p>
JSON では、異なるドメインのサーバからデータを取得することができないません。 また、現在の URL かそのサブドメインからしかデータを取得することができません。 従って、同じサーバであっても、/ranking から /json の JSON データを取得することはでき…
以前は Eclipse も使っていたのですが、どうも挙動が気に入らなくてプログラム開発は意地でも Xcode を使うようにしています。 さて、Google App Engine を Xcode で開発する際、基本的なことは変わりませんが、エラーチェックやテストケースの実行スクリプ…
Google App Engine のデータストアを利用していると、次のようなフィルタに関するエラーに直面することがあります。 BadFilterError: BadFilterError: invalid filter: Only one property per query may have inequality filters (=, ).. これはあるクエリオ…
import locale locale.setlocale(locale.LC_ALL, 'ja_JP') このように Google App Engine で locale の設定を試みると、 locale.Error('locale emulation only supports "C" locale') の例外を目にします。Google App Engine では locale による日本時間の取…
認証とか難しいことなしに、データベースが更新された旨などを Twitter に投稿するための方法です。 はじめに、Twitter の開発者ページで Web サイトを登録してください。 今回、使用するのは Consumer key, Consumer secret と My Access Token ページにあ…
Google App Engine で Django を利用していない場合のテストについて。 http://appengine-cookbook.appspot.com/recipe/app-engine-test-runner/ urlfetch の結果を評価するだけのようです。 データストアの入出力をテストしたいのですが、何ともうまく行か…
以下よりダウンロードできます。 ログイン - Google アカウント英語版ですが、ネットのリファレンスページを漁るより高速に調べられます。
テンプレートエンジンで扱う HTML ファイル群は、一つのディレクトリ内にまとめて格納しておきたい。 その場合、webapp.RequestHandler のサブクラスとして BaseRequestHandler が提案されています。 以下では、templates ディレクトリを作成して HTML ファ…
ListProperty クエリの比較演算子は、他の Property クエリとは異なる振る舞いを示します。 クエリでは、リスト プロパティと値を比較してリスト メンバーを照合します。たとえば、list_property = value は値がリスト内に存在するかどうかを調べ、list_prop…
Web サーバのデータをローカル開発サーバで利用したい場合の対処 ここの説明は、基本的に Loader クラスを自前で用意しなくて済む方法です。 まず、remote_api へアクセスできるように app.yaml の handlers に以下を追加しておきます。 # # app.yaml # hand…
Python では Null という便利なクラスが提唱されています。 # # null.py # class Null(object): """ Null objects always and reliably "do nothing." """ # optional optimization: ensure only one instance per subclass # (essentially just to save mem…
【2ch】キーワードあんてな ( ゚д゚ v)の AppEngine ダッシュボードです。 そろそろ古いエントリーとキーワードを削除する準備をしておこう。 ちなみにアップデートは更新頻度から Top/High/Middle/Low の 4 段階に分けて Cron Jobs を設定してあります。 こう…
Google ウェブマスターセントラルから引用すれば、 サイトマップは、検出が難しいサイトのページの情報を Google に提供する手段です。 (中略) サイトマップを作成して送信すると、Google の通常のクロール処理(検索エンジン)では検出できない可能性のあ…
ListProperty や StringListProperty といった list 型のデータストア・モデル値は、SDK Console であれば以下のように編集することが可能です。 しかし、Dashboard では以下のように、直接 値を編集することはできません。 やはり、bulk uploader の利用を…
データストアのモデル値型として DateTimeProperty(日付と時刻プロパティ)があります。当方ホームページ(Test Web Frames)では、トップページの更新情報で DateTimeProperty の値を表示させています。 このモデルクラスは以下のように定義してあります。 c…
まだ初期段階ですが、ホームページのページ構成は以下のようになっています。 トップページ 検索(開発中) 一覧 プレビューページ 各URLへのアクセスに関しては、GAE の app.yaml 設定ファイルで最初の割り当て先を決定します。 ここでは以下のように記述し…