Categories

  • Android開発
    android marketで目指せ億万長者(ウソ)
  • cocos2d
    pythonでも使えるゲームフレームワーク
  • Google
    ここには未来を開くためのAPIがたくさん用意されている。
  • GoogleAppEngine
    どこまでもスケールアウトするクラウドサービス。使いこなすのが大変
  • Hack
    様々な電子機器を本来の用途とは別の用途に使ってみる。
  • iPhone開発
    app storeで目指せ億万長者(ウソ)
  • python
    LightWeightLanguageで一番難しいがLispにも通じるところがある面白い言語。
  • TIPS
    覚えておくともしかしたら役に立つかもしれないチョットしたこと。
  • うまくいきません
    やってみたけど、うまくいかなかった失敗記事
  • ネット世界
  • 夢見るソフトウェア
    こんなのいいな、できたらいいな、いつかつくろう
  • 開発環境
    開発するまえに環境を整えた記録、次に同じことをするためめの忘備録
無料ブログはココログ
My Photo

January 11, 2013

Heroku は Hero + Haiku なのはどうでもいいが、Google App Engineにサヨナラするかも

Heroku というrubyのホスティングサービスがあったのだが、気が付いたらいろいろな言語に対応していたらしい。

pythonにも対応していたので、早速Hello World を表示させてみた。
サインアップすると、SDKをダウンロードするように誘導される。そのあとはターミナルをひらいて以下の4行を実行したらデプロイされた。
>heloku login
>git clone git://github.com/heroku/python-sample.git
> cd python-sample/
> heroku create
> git push heroku master
あとは、DASH BOARDで実行中のサイトが増えているので確認すればOK
pythonのプログラムは app.pyで中身はこんなの
import os
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
    return 'Hello World!'
if __name__ == '__main__':
    # Bind to PORT if defined, otherwise default to 5000.
    port = int(os.environ.get('PORT', 5000))
    app.run(host='0.0.0.0', port=port)
Flaskという軽量フレームワークを使っている。
rubyは嫌いではないが、pythonが面白いだけで悪気はない。ちなみHerokuでは非公式ながらPHPも走るらしい。
無料で使えるのはほんの僅かではあるけど、数分でサイトが立ち上がるのはイカス!!
ちなみに、以下のパワポがとても参考になりました。書いた人ありがとうございます。

July 18, 2010

GoogleAppEngineで日本語を使う

プログラムの中に日本語を書く
pythonではおなじみのアレ

#!-*- coding:utf-8 -*-"

を、先頭に書く。保存するときにutf-8で保存するのを忘れずに。
いまさら、その他の文字コードで書く必要はないと思われる。

テンプレートを日本語で書く

utf8のhtmlページのヘッダーを書く

<?xml version="1.0" encodeing="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta http-equiv="Content-Language" content="ja" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta name="Description" content="test" />
<meta name="Keywords" content="test" />
<title>test page</title>
</head>

フォームで日本語を受け付ける
 特に意識することは何もない。

データーベースに日本語を入れる
 調査中

チュートリアルを思い出すためのメモ2

前のエントリーより基本の部分
先にこちらを書いておけばよかった。

結果のhtmlを直接出力する

self.response.out.write()
1回にまとめる必要もないし、ヒアテキストも使える。
普通はテンプレートを使うので、プロトタイプとデバッグ以外では使うことはないだろう。

フォームの結果を受け取る
getのとき 文頭で
def get(self):
postのとき 文頭で
def post(self):
受け取るのは
self.request.get('param')
ここはpostでもgetになるので注意

July 17, 2010

チュートリアルを思い出すためのメモ

どんなシステムでも、チュートリアルをやってそのままプログラムを作らないと、何をやったかすっかり忘れてしまう。でも、なかなかまとまった時間が取れないので、1からやり直し。

複数のページを作る
あれこれテストをするときに、いちいちプロジェクトから作るのは大変なので、ハンドラーを追加でいろいろテストしてみる。

    application = webapp.WSGIApplication(
                                         [('/', MainHandler),
                                          ('/test1', Test1Handler),
                                          ('/test2', Test2Handler)],
                                          ('/test3', Test3Handler)],
                                          ('/test4', Test4Handler)],
                                         debug=True)

Django テンプレートを使う


from google.appengine.ext.webapp import template を追加

    template_values = {
      'param1': '1st param',
      'param2': '2nd param',
      'param3': '3rd param',
      }
    path = os.path.join(os.path.dirname(__file__), 'template.html')
    self.response.out.write(template.render(path, template_values))

Djangoテンプレート本体の文法
ifとかforの文法が書けるブロックタグと、代入するだけの変数がある。
変数は "{{" と "}}" で囲む。
ブロックタグは "{%" と "%}" で囲む.
endタグで囲むのでインデントする必要はないが、pythonの習慣に従う。
よく使いそうなブロックタグ

{% for params in value %}
{% if value.flag %}
{% else %}
{% endif %}
{% endfor %}

Djangoテンプレートでfor文を使うときのパラメーター

params = {['a':'a param1','b':'bparam1'],
                 ['a':'a param2','b':'bparam2']}

June 16, 2010

サーバープログラムのはじめの一歩はproxy

GoogleAppEngieはurlfetchを使うとwebページを取得できる。試しにUGTOPの確認くんをアクセスしたところ、よく分からないアドレスだった。これはproxyを作るしか。
 とおもったら、proxyを作っちゃった人がすでにいるみたい。 proxy appspot.com で、検索すると先に挑戦した人がいくつか。
 アプリケーションをdisableにしとかないと、悪用されちゃうよ。

ああ、そうそう、デプロイを途中で中断したり、エラーが出た場合はrollbackを手動で行わないとダメらしい。ハマった。

egashira > Google App Engine > エラーの解決方法