GoogleAppEngineは1つのアカウントで10個のアプリケーションを実行できます。複数のアカウントを取得することで、10を超えるアプリケーションを動作させることも可能ですが、不要になったアプリ.... Read more
Tags » ‘GAE’
アプリケーションを削除(失敗)
4月 6th, 2011 by adminGAE上のアプリケーションを削除する方法をまとめようとしたのですが、どうしてもエラーになってしまいました。サービスが不安定になっているだけの可能性もあるので、時間をおいて、再度やってみます。 1. A.... Read more
Google App Engine SDK 1.4.3リリース文抄訳
4月 2nd, 2011 by adminGoogleAppEngine SDKのバージョン1.4.3が3月30日にリリースされました。マイナーバージョンアップですが、バグフィックスだけでなく、新機能も実装されています。GAEで開発をされている方は特別な事情のない限りアップデートをお勧めします。
リリースノート
青文字が原文です。訳に間違いがありましたら、Wordpressのコメント欄もしくは、Facebookのコメントで指摘頂けると助かります。気になる部分は、土日に検証してみようと思います。
http://code.google.com/p/googleappengine/wiki/SdkReleaseNotesを訳しました。
File APIをサポートしました。FileAPIを使うとblobstore内のファイルを読み書きできます。
Added Files API that allows writing to and reading from files in blobstore.Cronの実行開始時刻と実行終了時刻を指定できるようになりました。
You can now specify cron execution for a time interval between a start and end time.
« More »
gaecron アカウント上限を300に緩和
3月 26th, 2011 by admingaecronを運用しているのですが、200環境埋まった時点で、一番厳しいリソースで3割弱しか使っていないことが分かったため、上限を200→300に増やしました。 .... Read more
GAE/Pythonでサービス作ろう!
3月 23rd, 2011 by adminこの10日間ほど、地震のニュースばかり追いかける日々をすごしていないでしょうか?大勢の方が被災され、原発関連の二次災害も発生する中で落ち着きづらいというのも事実なのですが、心配しすぎてもしかたない。そ.... Read more
URLLinkerを改良/YouTubeプレイヤーを自動設置
3月 22nd, 2011 by adminURLLinkerをYouTubeに対応させました。YouTubeっぽいURLを見つけると引数を解析して自動的にYouTubeのプレイヤーを埋めこみます。また、生成したHTMLのプレビューを画面の下部.... Read more
URLをアンカーリンクとIMGタグに置換
3月 10th, 2011 by adminMemcachedで負荷が3分の1/GAE無料枠で1日200万PV
3月 1st, 2011 by adminGAE/PythonのアプリにMemcached組み込んだら、CPU負荷が3分の1になった。
GAEは宇宙最強のデータセンタで動いてる。なら、負荷なんて気にしなくていい。お金さえあればね。ってことで、お金払いたくないので最適化しました。数行の変更で、性能3倍以上になっちゃいましたよ!!!!
最適化対象
ブログに埋め込むパーツです。シンプルですが、とあるまとめサイトに埋めたところ、1日数万リクエストがありました。Memcachedを使わなくても、1日50万PV程度は大丈夫だったのですが、最適化してみました。
Memcached導入による負荷の変化
赤い線がAPIが使ったCPU時間、青い線が全体のCPU時間です。Memcachedを組み込んだとたん、CPU使用量が3分の1になりました。特に、APIのCPU使用量は劇的に減っています。
無料利用分でどれだけつかえるの?
超過しそうなリソースはCPU時間とOutboundの転送量。それぞれ1リクエスト当たり10msと400byteです。
CPU無料枠
6.5時間/10ms = 234万PV
Outbound転送無料枠
1GB/400byte = 250万PV
これなら、1日200万PVは余裕ですね。
Memcached組み込み後のソースコード
データ読み取り処理(quickGet)
Memcachedにデータがあるか確認します。あれば使います。なければ、DataStoreから取得しMemcachedに保存します。
データ書き換え処理(18行目)
DataStoreに保存したデータと同じものをMemcachedに保存します。
記事の末尾に「いい」「だめ」ボタンをつけました。
3月 1st, 2011 by admin世間ではFacebookなどの「いいね」ボタンがすごく注目されていますが、敢えて、「いい」「だめ」ぼたんを自分で実装してみました。
何ができるの?
個別記事に以下のソースを埋めてると「いい」「だめ」ボタンが表示されます。いいの数のランキングも見れます。
※site=の後ろのxxxxを自分を識別するコードに書き換えてください。英数で適当に・・
1 2 |
このブログランキングは以下のアドレスで確認できます。
http://like-or-dislike.appspot.com/?site=001
何でつくったの?
なんでつくったんだろうね。理由あげるとすると、こんなところかな。
改良予定
OAuthでログインして、自分専用のコードを発行できるようにする予定です。
ソースコード
おやくそくのソースコードです。まだバージョン管理してません。明日、Githubに登録するよていです。
db.Modelに@Propertyを追加
2月 24th, 2011 by adminPySNSの日記の投稿日時表記をUTCからJSTに変更しました。日時計算を複数回実装するのはDRYの原則に反するので、Modelにプロパティーを追加し、そのプロパティーの値を表示するように変更しました.... Read more
GAE/Python デプロイ遅延中
2月 21st, 2011 by admin先ほどからGAE/Python環境、デプロイがし辛い状況になっています。そのうち解消すると思うので、ローカルで出来る開発を進めます。 ::CODECOLORER_BLOCK_6:: .... Read more
GAE/Pの管理画面でDataStoreを操作
2月 19th, 2011 by adminapp.yamlの末尾に以下の2行を追記しておけば、GAEの管理画面でDataStoreのメンテナンス出来ます。 ::CODECOLORER_BLOCK_7:: .... Read more
GAE/P DataStore vs Memcached
2月 18th, 2011 by admin昨日のDataStoreの書き込み性能の測定の続きで、DataStoreの読み込みとMemcachedの読み書きの性能を測定した。
比較内容
以下の5項目の測定を行った。100バイトの読み書き50回を1セットとして、10回測定しグラフを作成した。
- Store/W
DataStoreへの保存 - Store/R
DataStoreから1レコード取得 - Mem/W
Memcachedへの保存 - Mem/R – s
Memcachedからの読込。データが存在する場合。 - Mem/R – m
Memcachedからの読込。データが存在しない場合。
結果グラフ
縦軸は1回当たりの処理時間(単位ms)、横軸は10回分の測定結果。
結果考察
MemcachedのReadが最も高速で、MemcachedのWrite、DataStoreのRead、DataStoreのWriteと順に遅くなった。平均処理時間と、MemcachedのReadを1とした時の実行時間を表にまとめてみた。
– | Store/W | Store/R | Mem/W | Mem/R-s | Mem/R-m |
時間[ms] | 17.94 | 7.1 | 2.29 | 2.12 | 2.07 |
Mem/R比 | 8.68 | 3.43 | 1.11 | 1.02 | 1 |
この結果から、Memcachedの性能は、DataStoreと比べてReadで3倍程度、Writeで8倍程度高速であることが分かる。Memcachedのキャッシュヒット率が50%を超えるようなサービスであれば、Memcached導入によるパフォーマンスアップが期待できそうだ。
測定用プログラム
ブログにDjango1.2.5を組み込みました
2月 13th, 2011 by adminDjangoをpython-blog-systemに組み込みました。もともと、Pythonのソースコード内で、self.response.out.writeを使ってHTMLを出力していたのですが、テンプレートエンジンを利用することで、Pythonで記述したロジック部とHTMLを分離できました。
変更前
変更前のソースコードです。汚いなんてもんじゃありません。MVCが渾然一体となっています。小規模なアプリであればこれでも良いと思いますが、これ以上大きなプロジェクトを開発するのであればMVCきっちり分けたほうがよいでしょう。
GAE/PythonでDjango1.2.5を使う方法
2月 11th, 2011 by admin本日リリースのApp Engine SDK 1.4.2から、新しいバージョンのDjangoを利用できるようになっているので、早速使ってみた。 ソースコード templateをインポートする前に、use.... Read more
GAEのSDK 1.4.2リリース文
2月 11th, 2011 by adminGoogleAppEnigneの新しいバージョンのSDKが公開された。正式版のリリース文はまだ公開されていないようだが、プレリリース版のリリース文があったので簡単に翻訳してみた。使ったことがない機能は.... Read more
Twitterクライアントを改良
2月 9th, 2011 by admin今日は、昨日作成したTwitterクライアントを改良しました。
まず最初におさらいですが、今作成しているTwitterクライアントは、GoogleAppEngine/Python環境で動作しています。OAuthでの認証を実現しており、興味をもたれた方は、自由に使っていただいて問題ありません。また、欲しい機能などがありましたら、意見頂けると中の人が喜びます。コメント大歓迎です!(自動公開にならないかもしれませんが、見つけ次第、公開します)
改良点は以下の通り
- デザインを調整
スタイルシートをつけてみました。 - 空文字列の送信を防止
何も入力していない状態での送信をJavaScriptで防止しました。 - URLのリンク
TL内のURLに自動リンクするようにしました。 - @ユーザIDのリンク
@の後ろに英数字が続く場合は、そのユーザにリンクするようにしました。 - BadValueエラーの処理
同一メッセージを2回連続で発言した際に発生していたBadValueエラーを隠しました。
スクリーンショット
スクリーンショットです。このスクリーンショットに映っているユーザは全員公開モードになっていたので、内容は伏せていません。