スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--------(--)
 

Google App Engine [Slim3・velocity]について

2011.3/2


前回まではGAE(Google App Engine)をPythonで使ってみましたが,今回からはJavaを使うことにしました。サーブレット・JSPはほとんど書いたことも読んだこともないので慣れながらになりますね。


色々調べてみると,いきなりですがフレームワークを発見しました。「Slim3」です。GAE用に最適化されてるフレームワークらしいです。ブラウザでの表示はJSPで行っています。Eclipse用のプラグインもありますから導入は簡単だと思います。


Slim3の日本語サイト」が参考になりますね☆


次にテンプレートエンジンで「velocity」というのがありました。これはサーブレットとvmファイル(html)で分けることができます。サーブレット内にhtmlを書かなくて済むのでデザイナー・プログラマーで作業が分けやすいんでしょうね。


しかし「GAEではJSPを使ったほうが軽い」って意見もどっかのページで見たことがある(未検証)ので大きなサイトになってくるとSlim3の方がいいのかなぁ?まぁ使う人によりけりです。


今回は「Velocityでのguestbook」と「Slim3でのguestbook」を作ってみました。guestbookは「ここ」で作ってあるやつですが,参考にしたのは↓の書籍です。




↑の書籍ではSlim3についてはほとんど記述が無いですが,velocityはけっこう詳しく書いてあると思います。velocityメインの本なのでSlim3を使うなら別の書籍がいいと思います。


Slim3はグローバルトランザクションをサポートしているのでSlim3の方がいいんじゃないかな。ちなみにSlim3とvelocityは連携させることもできます。でもSlim3のみに比べると重くなってしまうらしいです。


guestbookのプログラムは後日にしておきます。


ではでは。

スポンサーサイト
2011-03-02(Wed)
 

Google App Engine 日本時間(JST)での表示[python]方法

2011.2/25


「前回」に引き続きGAE(Google App Engine)の話です。Google App Engineで普通に時間を取得すると「UTC=協定世界時」を取得します。つまり9時間ほど時差があるわけです。ということでpythonプログラムに今の時間を表示しようとすると9時間のズレがあって気持ち悪いので「JST=日本標準時」に直して表示します。


時間の表示方法はいくつかあるみたいなので,いろんなページを参考にするといいと思います。自分が参考にさせていただいたのは「ここ」です。とても助かりました☆

(3)にプログラム全体を載せています。
(1)前回に引き続きってことで「C:¥Google_Apps¥guestbook」というアプリがあるとします。guestbookは前回紹介した「ここ」で作ってるやつです。たしか,インストールしたgoogle_appengine¥demosフォルダの中にも入っています。自分はyoutubeをマネして自分で書きました。

(2)「C:¥Google_Apps¥guestbook¥main.py」を編集します。
import wsgiref.handlers
from google.appengine.ext import db
from google.appengine.ext import webapp
from google.appengine.ext.webapp \
    import template
import datetime  #←追記

#####ここから追記
class JST(datetime.tzinfo):
    def utcoffset(self, dt): return datetime.timedelta(hours=9)
    def dst(self, dt): return datetime.timedelta(0)
    def tzname(self, dt): return "JST"
#####ここまで


#####def get(self):の最終行に追記を行います
def get(self):   ##youtube通りに作ったのなら30~40行の間くらいにある
・・・
・・・  ##まぁ省略しときます
・・・
#####ここから追記
#↓でJSTでの時間表示
        d= datetime.datetime.now() + datetime.timedelta(hours=9)
        write = self.response.out.write
        write('%s' % d.strftime("%Y/%m/%d %H:%M:%S") )
####ここまで

(3)最終的なプログラムを載せておきます。「C:¥Google_Apps¥guestbook¥main.py」
#!/usr/bin/env python
#・・・省略
import wsgiref.handlers
from google.appengine.ext import db
from google.appengine.ext import webapp
from google.appengine.ext.webapp \
    import template
import datetime

class Shout(db.Model):
    message = db.StringProperty(
                required=True)
    when = db.DateTimeProperty(
                auto_now_add=True)
    who = db.StringProperty()

#これ必要ないみたいww
class JST(datetime.tzinfo):
    def utcoffset(self, dt): return datetime.timedelta(hours=9)
    def dst(self, dt): return datetime.timedelta(0)
    def tzname(self, dt): return "JST"

class MyHandler(webapp.RequestHandler):
    def get(self):
        shouts = db.GqlQuery(
            'SELECT * FROM Shout '
            'ORDER BY when DESC')
        values = {
            'shouts': shouts
        }
        self.response.out.write(
            template.render('main.html',
                            values))
        #↓でJSTでの時間表示
        d= datetime.datetime.now() + datetime.timedelta(hours=9)
        write = self.response.out.write
        write('%s' % d.strftime("%Y/%m/%d %H:%M:%S") )

    def post(self):
        shout = Shout(
            message=self.request.get(
                'message'),
            who=self.request.get(
                'who'))
        shout.put()
        self.redirect('/')

def main():
    app = webapp.WSGIApplication([
        (r'.*',MyHandler)], debug=True)
    wsgiref.handlers.CGIHandler().run(app)

if __name__ == "__main__":
    main()

ではでは。
2011-02-25(Fri)
 

Google App Engine(PaaS)を使ってみた!

2011.2/24


今日はけっこう暖かかったですね。車の中とか相当ムワムワしていました。なんかまた明日から寒くなるらしいのですが,ほぼ部屋なのでどっちでもいいです。


さてさて,最近Google App Engineを使ってみたのでその感想でも書いておきます。Google App EngineはGoogleさんが提供してくださってるPaasです。


Paas:ソフトウェアを構築および稼動させるための土台となるプラットフォームを、インターネット経由のサービスとして提供する。(Wikipedia(http://ja.wikipedia.org/wiki/PaaS)から引用)


Google App Engineではpython・javaのプログラムを使うことができます。しかも無料で利用できるので(条件有)学生にとってはかなり助かります。


しかし,Google App Engineで開発するとGoogle App Engineでしか稼動(実行)できないプログラムになります。理由はフレームワークが特殊だからってだけです。ということはGoogle App Engineで開発してそのまま使おうと思ったら,Google App Engi・・・メンドクサイのでここからGAEにします。GAEで課金して使うことになります。たぶんそうやってユーザー増やして儲ける仕組みなんじゃないかな?


では,GAEの利用方法を書いときます。といってもほぼ「ここ」で書いてくださってますので,参考にしてください。あと自分が思うに,pythonはバージョン2.5.xの方がいいと思います。


それとAptana(またはeclipse)でgoogle app engineのプラグインを入れて作ろうと思ったらうまくいかなかった。なんかSSLがなんとかなんとか見たいなエラーが出た。


ではでは自分なりのプログラミングの方法を書いときます。
(1)  Google App Engine Launcher を起動します。

(2)  メニューの「File」→「Create New Application」をクリック

(3)  Application Nameは登録したやつ(2つ目のアプリからは任意で),Parent Directoryは保存所なので任意で結構です。自分は「C:¥Google_Apps」ってフォルダを新規で作って指定しました。Portは1個目のアプリなので8080でいいです。あとあと「http://localhost:8080/」でアクセスするって意味です。

(4)  Createをクリック
「C:¥Google_Apps¥作ったアプリの名前(フォルダ名になっています)」の中に「app.yaml」・「main.py」・「index.yaml」が自動で作られて便利なのです。

(4_5)  メニューの「File」→「Add Existing Application」をクリック。

(4_5) Application Pathに「C:¥Google_Apps¥作ったアプリの名前(フォルダ名になっています)」を「Browse」から指定します。そしたら「Add」をクリック。

(5)  画面にいま作ったアプリ名とpathとportが表示されていると思います。でもこのままだと実行できないのでメニューの「Edit」→「Preferences」をクリック。
[いきなり追記]このままだとアプリ名がnew-project-みたいな感じになってます。なのでエディタ(メモ帳でもいいです。)で「C:¥Google_Apps¥作ったアプリの名前(フォルダ名になっています)¥app.yaml」を開いて[application: アプリ名]に変更してください。

(6)Python Path に 「Select」からpython.exeを指定してください。自分はpythonを「C:¥Python25」というフォルダにインストールしたので「C:¥Python25¥python.exe」を指定しました。

(7)そしたらアプリをクリックして選択状態にして「Run」をクリックします。うまくいっていたらpythonコンソール(真っ暗な画面)が出ます。少し待ったら「Browse」を選択できるようになるので,クリック。

(8)またはブラウザで「http://localhost:8080/」でアクセス。

(9)おそらく「Hello World」って出てきます。そうしたらうまくいっています☆


あとは「ここ」を参考にプログラミングしてみてください。


ではでは。







2011-02-24(Thu)
 

jsonファイルの扱いでハマった件

2011.1/13

JSONファイルをご存知ですか?自分も詳しくはわかりませんが,javascriptで扱いやすくXMLよりも簡単な形式で書くことができます。たとえば

/*sample1.json*/
[
   {  " ID " : 1 ,
       " name " : "Tani"
   },
   {  " ID " : 2 ,
       " name " : "Maki"
   }
]

のように書くことができます。javascript(jqueryを使っています)から読み込むときはたとえば

/*sample1.js*/
$(function(){
  $.get( " URL/sample1.json " , function(json){
     var data = eval (" ("  +  json  +  ") ") ;
     for ( var i = 0; i < data.length; i ++) {
        $( " div#sample1 " ).append("<p>" + data[ i ].id + " : " + data[i].name + "</p>") ;
    }
  });
});

こんな感じかな。そうすると↓のようになります。

<div id="sample1">
   <p>1 : Tani</p>
   <p>2 : Maki</p>
</div>


JSONファイルから読み込んだ内容は変数jsonに格納し,さらに配列として変数dataに格納されます。eval()してjavascriptで扱えるようにしているらしいです。それと添字は0からスタートです。ちなみに連想配列も使えます。


それで自分がハマったところなのですが,ここらで切っておきますね。


続きは「続きを読む」をクリックで。

続きを読む>>

2011-01-12(Wed)
 

symfony1.4(フレームワーク)について

2010.12/19

更新するのを完全に忘れてましたMAxUraです。おとといだったかな?初雪が降りました。そんな日に限って天気予報を見ていなかったので厚着をしていませんでしたorz


いまフレームワークを勉強しております。PHPフレームワークのsymfony(1.4)ってやつです。PHPフレームワークで有名どころはなんでしょうね。CakePHPなら聞いたことあります。他にはEthnaだったかな。他にもおそらく何個かあります。あっZend。


自分が始めたのがsymfonyなんですが,「ここ」が日本語情報サイトになります。symfonyは「Ruby on Rails」の影響を受けて作られていて結構似ているっていろんなサイトに書いてあります。自分はRailsは使ったことが無いのでわかりませんが,Rails使いの方なら慣れやすいものかもしれません。


とりあえず始めてみて感じたことでも書いておきます。

(1)MVC(Model・View・Controller)ってメンドクサイ!
会社で複数の人で開発を行うならMVCに分けたほうが良いんだと思います。それと中規模以上の開発にも必要な気がします。先々で管理しようと思うときにソースをまとめちゃうと訳わかんなくなりますから。でも小さいプログラムを書くだけならMVCから入らないほうがいいですね。それこそ訳わかんなくなります。

(2)symfonyの情報が結構少ない。
まず勉強を始めようと思って本を買おうと思ってamazonで検索かけてみたのですが,かなり少ないですね。最近出ている本は無いようです。2009年発売のペーパーバック(英語)ならありましたけどww

(3) (2)と同じかな。情報を得ようと思ったらネットで調べるしかない(んじゃないかと)。
とはいえ「ここ」なんかで丁寧に説明してくれてますので,根気強く勉強すればなんとかなる。自分はsymfonyの構造というか,ルールをふわ~んと理解するのに2週間くらいかかりましたww

(4)YAMLフォーマット(.yml)は慣れたらすごい便利な気がする。
データベースへの接続・データベースの構築内容とかわかりやすく記述できるところはスゴイです。

(5)フレームワークが初めてならCakePHPの方が本もいっぱいあっていいかも。そういえばGREEはEthnaらしいです。

最後に2週間ほど使ってみて,あんまり嫌いじゃないです。フレームワーク自体が初めてなので難しく感じるのは仕方ないですし,フレームワークの習得には3ヶ月はかかるってどっかのプログラマーさんのサイトに書いてました♪フレームワークって記述を簡単にするものなんですよね。でも慣れるまでは難しくするだけですねww とにもかくにもMVCに慣れることとディレクトリ構造を覚えること,あとYAMLにヘルパー,覚えることがけっこうあるもんです。なんとか年内には自分で書けるほどにはマスターしたいと思います。


ではでは。 


2010-12-19(Sun)
 
MAxUraのプロフィール

MAxUra

名前:MAxUra
年齢:学生です。
趣味:ネットサーフィン
           DVD鑑賞
特徴:さまぁ~ずファンです
          Linux初心者です

Win,Linux,フリーソフト関連のメモを載せる予定です

 現在はWindows7 64bitを使用しています(2010年3月までは自分のPCはvistaなのでフリーソフトは基本vistaで動作済みってことになります)

コメント・相互リンク募集中です。

紹介してほしいソフトなどありましたら気軽にコメントやメールください♪

ブログ内検索フォーム
プログラミング関係
Black Cat Clock
メールフォーム

名前:
メール:
件名:
本文:

おすすめブラウザ
Firefoxをいつも使ってます
Firefox ブラウザ無料ダウンロード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。