Tags » ‘GAE’

GoogleAppEngineでアプリケーションを削除

4月 11th, 2011 by

GoogleAppEngineは1つのアカウントで10個のアプリケーションを実行できます。複数のアカウントを取得することで、10を超えるアプリケーションを動作させることも可能ですが、不要になったアプリ.... Read more


Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

アプリケーションを削除(失敗)

4月 6th, 2011 by

GAE上のアプリケーションを削除する方法をまとめようとしたのですが、どうしてもエラーになってしまいました。サービスが不安定になっているだけの可能性もあるので、時間をおいて、再度やってみます。 1. A.... Read more


Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Google App Engine SDK 1.4.3リリース文抄訳

4月 2nd, 2011 by

GoogleAppEngine 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.

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

gaecron アカウント上限を300に緩和

3月 26th, 2011 by

gaecronを運用しているのですが、200環境埋まった時点で、一番厳しいリソースで3割弱しか使っていないことが分かったため、上限を200→300に増やしました。 .... Read more


Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

GAE/Pythonでサービス作ろう!

3月 23rd, 2011 by

この10日間ほど、地震のニュースばかり追いかける日々をすごしていないでしょうか?大勢の方が被災され、原発関連の二次災害も発生する中で落ち着きづらいというのも事実なのですが、心配しすぎてもしかたない。そ.... Read more


Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

URLLinkerを改良/YouTubeプレイヤーを自動設置

3月 22nd, 2011 by

URLLinkerをYouTubeに対応させました。YouTubeっぽいURLを見つけると引数を解析して自動的にYouTubeのプレイヤーを埋めこみます。また、生成したHTMLのプレビューを画面の下部.... Read more


Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

URLをアンカーリンクとIMGタグに置換

3月 10th, 2011 by

テキスト内のURLを、アンカーリンクとIMGタグに置換するサービスをリリースしました。

なお、ttpで始まるプロトコルは、httpに自動修正します。

ソースコード

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Memcachedで負荷が3分の1/GAE無料枠で1日200万PV

3月 1st, 2011 by

GAE/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組み込み後のソースコード

※Memcachedを組み込む際には、元のデータの更新にあわせて、Memcachedのキャッシュをクリア(もしくは新しい値を上書き)すること。さもないと古いデータが表示され続けます。

データ読み取り処理(quickGet)
 Memcachedにデータがあるか確認します。あれば使います。なければ、DataStoreから取得しMemcachedに保存します。

データ書き換え処理(18行目)
 DataStoreに保存したデータと同じものをMemcachedに保存します。

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

記事の末尾に「いい」「だめ」ボタンをつけました。

3月 1st, 2011 by

世間ではFacebookなどの「いいね」ボタンがすごく注目されていますが、敢えて、「いい」「だめ」ぼたんを自分で実装してみました。

何ができるの?

個別記事に以下のソースを埋めてると「いい」「だめ」ボタンが表示されます。いいの数のランキングも見れます。
※site=の後ろのxxxxを自分を識別するコードに書き換えてください。英数で適当に・・

1
2
<script>window.onload = function(){ document.getElementById("like_dislike").src="http://like-or-dislike.appspot.com/?site=xxxx&title="+encodeURI(document.title)}</script>
<iframe id="like_dislike" style="border:none;background-color:#fff;width:180px;height:30px"></iframe>

このブログランキングは以下のアドレスで確認できます。
http://like-or-dislike.appspot.com/?site=001

何でつくったの?

なんでつくったんだろうね。理由あげるとすると、こんなところかな。

  • いいね、だけじゃなくて、だめボタンをつけたかったから。
  • 単に実装してみたかった
  • サイト内のランキングを表示したかった
  • 外部サービスに依存したくなかった
  • 改良予定

    OAuthでログインして、自分専用のコードを発行できるようにする予定です。

    ソースコード

    おやくそくのソースコードです。まだバージョン管理してません。明日、Githubに登録するよていです。

    Share and Enjoy

    • Facebook
    • Twitter
    • Delicious
    • LinkedIn
    • StumbleUpon
    • Add to favorites
    • Email
    • RSS

    db.Modelに@Propertyを追加

    2月 24th, 2011 by

    PySNSの日記の投稿日時表記をUTCからJSTに変更しました。日時計算を複数回実装するのはDRYの原則に反するので、Modelにプロパティーを追加し、そのプロパティーの値を表示するように変更しました.... Read more


    Share and Enjoy

    • Facebook
    • Twitter
    • Delicious
    • LinkedIn
    • StumbleUpon
    • Add to favorites
    • Email
    • RSS

    GAE/Python デプロイ遅延中

    2月 21st, 2011 by

    先ほどからGAE/Python環境、デプロイがし辛い状況になっています。そのうち解消すると思うので、ローカルで出来る開発を進めます。 ::CODECOLORER_BLOCK_6:: .... Read more


    Share and Enjoy

    • Facebook
    • Twitter
    • Delicious
    • LinkedIn
    • StumbleUpon
    • Add to favorites
    • Email
    • RSS

    GAE/Pの管理画面でDataStoreを操作

    2月 19th, 2011 by

    app.yamlの末尾に以下の2行を追記しておけば、GAEの管理画面でDataStoreのメンテナンス出来ます。 ::CODECOLORER_BLOCK_7:: .... Read more


    Share and Enjoy

    • Facebook
    • Twitter
    • Delicious
    • LinkedIn
    • StumbleUpon
    • Add to favorites
    • Email
    • RSS

    GAE/P DataStore vs Memcached

    2月 18th, 2011 by

    昨日の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回分の測定結果。

    datastore_vs_memcached

    datastore_vs_memcached

    結果考察

    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

    csv2table

    この結果から、Memcachedの性能は、DataStoreと比べてReadで3倍程度、Writeで8倍程度高速であることが分かる。Memcachedのキャッシュヒット率が50%を超えるようなサービスであれば、Memcached導入によるパフォーマンスアップが期待できそうだ。

    測定用プログラム

    測定に用いたプログラムを掲載しておく。

    Share and Enjoy

    • Facebook
    • Twitter
    • Delicious
    • LinkedIn
    • StumbleUpon
    • Add to favorites
    • Email
    • RSS

    ブログにDjango1.2.5を組み込みました

    2月 13th, 2011 by

    Djangoをpython-blog-systemに組み込みました。もともと、Pythonのソースコード内で、self.response.out.writeを使ってHTMLを出力していたのですが、テンプレートエンジンを利用することで、Pythonで記述したロジック部とHTMLを分離できました。

    変更前

    変更前のソースコードです。汚いなんてもんじゃありません。MVCが渾然一体となっています。小規模なアプリであればこれでも良いと思いますが、これ以上大きなプロジェクトを開発するのであればMVCきっちり分けたほうがよいでしょう。

    Share and Enjoy

    • Facebook
    • Twitter
    • Delicious
    • LinkedIn
    • StumbleUpon
    • Add to favorites
    • Email
    • RSS

    GAE/PythonでDjango1.2.5を使う方法

    2月 11th, 2011 by

    本日リリースのApp Engine SDK 1.4.2から、新しいバージョンのDjangoを利用できるようになっているので、早速使ってみた。 ソースコード templateをインポートする前に、use.... Read more


    Share and Enjoy

    • Facebook
    • Twitter
    • Delicious
    • LinkedIn
    • StumbleUpon
    • Add to favorites
    • Email
    • RSS

    GAE/Pでテンプレートエンジン使ってみた。

    2月 11th, 2011 by

    GAE/Python標準付属のテンプレートエンジンである.... Read more


    Share and Enjoy

    • Facebook
    • Twitter
    • Delicious
    • LinkedIn
    • StumbleUpon
    • Add to favorites
    • Email
    • RSS

    GAEのSDK 1.4.2リリース文

    2月 11th, 2011 by

    GoogleAppEnigneの新しいバージョンのSDKが公開された。正式版のリリース文はまだ公開されていないようだが、プレリリース版のリリース文があったので簡単に翻訳してみた。使ったことがない機能は.... Read more


    Share and Enjoy

    • Facebook
    • Twitter
    • Delicious
    • LinkedIn
    • StumbleUpon
    • Add to favorites
    • Email
    • RSS

    Twitterクライアントを改良

    2月 9th, 2011 by

    今日は、昨日作成したTwitterクライアントを改良しました。

    まず最初におさらいですが、今作成しているTwitterクライアントは、GoogleAppEngine/Python環境で動作しています。OAuthでの認証を実現しており、興味をもたれた方は、自由に使っていただいて問題ありません。また、欲しい機能などがありましたら、意見頂けると中の人が喜びます。コメント大歓迎です!(自動公開にならないかもしれませんが、見つけ次第、公開します)

    改良点は以下の通り

    • デザインを調整
      スタイルシートをつけてみました。
    • 空文字列の送信を防止
      何も入力していない状態での送信をJavaScriptで防止しました。
    • URLのリンク
      TL内のURLに自動リンクするようにしました。
    • @ユーザIDのリンク
      @の後ろに英数字が続く場合は、そのユーザにリンクするようにしました。
    • BadValueエラーの処理
      同一メッセージを2回連続で発言した際に発生していたBadValueエラーを隠しました。

    スクリーンショット

    スクリーンショットです。このスクリーンショットに映っているユーザは全員公開モードになっていたので、内容は伏せていません。

    Nisetweet

    Nisetweet

    ソースコード

    Share and Enjoy

    • Facebook
    • Twitter
    • Delicious
    • LinkedIn
    • StumbleUpon
    • Add to favorites
    • Email
    • RSS

    GAE/PythonでOAuth

    2月 6th, 2011 by

    GoogleAppEngine / Python環境で、TwitterのOAuthを使ってみた。


    Share and Enjoy

    • Facebook
    • Twitter
    • Delicious
    • LinkedIn
    • StumbleUpon
    • Add to favorites
    • Email
    • RSS

    本日の実装予定

    2月 6th, 2011 by

    OAuth関連の実装を行う予定です。 最近のWebサービスは、OAuthを使って認証するものが増えています。OAuthを使うと、サービス提供者に必要以上のデータを渡さずにログイン認証できます。また、ユ.... Read more


    Share and Enjoy

    • Facebook
    • Twitter
    • Delicious
    • LinkedIn
    • StumbleUpon
    • Add to favorites
    • Email
    • RSS

    Get Adobe Flash player