2013年1月7日月曜日

[Play framework][Windows]Playコンソールを使う

このエントリーをはてなブックマークに追加 Clip to Evernote

Playコンソールを使ってみます。
今回も本家のwikiを参照してやってみます。

1.コンソールを起動する

起動は、アプリケーションがあるディレクトリに行って、以下のコマンドを打つだけです。
play

2.ヘルプを見る

以下のコマンドで見れます。
help play


3.開発モードでサーバを起動する

以下、コマンドで起動できます。
run

実際にブラウザで確認してみます。
こんな画面が出ればOKです。
本家曰く、

このモードでは、サーバはホットデプロイ機能が有効になった状態でサーバが起動します。つまり、リクエストがくるたびに、Play がプロジェクト全体をチェックして、必要なソースコードだけを再コンパイルします。サーバの再起動が必要なときは、それも自動的に行います。
コンパイルエラーが発生したときは、その内容をブラウザ上で直接確認することができます。

だそうです。
都度コンパイルしてるのかー
サーバの起動を停止する場合は、Ctl+Dで停止です。

4.コンパイルする

もちろんサーバを起動しなくてもコンパイルは出来るそうです。
コマンドは以下
compile
エラーが出てると、この時に表示されるみたいですね。

あとは、対話でコードをテストしたり、デバックモードにしたりいろいろ出来るみたいです。

ちなみに、playコンソールを立ちあげないで、サーバを起動する場合は、
play run
で出来るそうな。
あとはhelpを見ながらごにょごにょしてみます。

次は、eclipseのプロジェクトインポートの仕方です。


[Play framework][Windows]新規アプリケーションを作成する

このエントリーをはてなブックマークに追加 Clip to Evernote

新規アプリケーションを作成します。
今回も、本家のwikiを参考に進めていきます。

1.新規アプリケーションを作成する

コマンド一発で出来るから素敵。
コマンドはRuby on Rails に似てますね。

作業ディレクトリに生成されるっぽいので、workspace等は自分で作るといいみたいです。
今回は、playディレクトリの中にworkspaceを作成して、その中にアプリケーションを作成します。

まずは、このコマンドを打ちます。
play new myFirstApp
play new [アプリケーション名] でアプリケーションが生成されます。

このコマンドを打つと、

  • アプリケーション名
  • アプリケーションのテンプレート
    • Scalaのテンプレート
    • Javaのテンプレート
    • 空のテンプレート

を聞かれますので、それぞれ入力していきます。
テンプレートは、後で変更出来るわけではないみたいですが、Javaを選んだからといってScalaができなくなるわけではない、という事みたいです。
まあ、気楽に行きましょう(笑)


これで終わり!

アプリケーションが作成されたら、playコマンド打って確認します。
こんな感じになればOKらしい。これがいわゆるplayコンソールというやつですね。

2.アプリケーションの構成

本家のwikiにわかりやすく書いてくれているので、一度は見といた方がいいかと。
Play 2.0 アプリケーションの構造

次はplayコマンドをちょっとだけ

[Play framework][Windows]Play frameworkをインストール

このエントリーをはてなブックマークに追加 Clip to Evernote

※バージョン等は2013/01/07時点でのものです。

まずはインストールから。
本家のwikiが結構わかりやすく書いてくれてますが、いかんせんLinux/Mac系の記述なんで、
Windowsに読み換えていかないといけないです。
が、順番はそんなに変わらないので、その順番でやっていきます。

1.Javaの環境構築

Java JDKは6以上がサポートされているようです。
私の環境は、

java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b05)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)

でした。
Javaのインストールは割愛。


2.バイナリパッケージをダウンロードする

ここから最新のバージョンを選んでダウンロードします。
RC版を除いて、play-2.0.4.zipが最新だったので、それをダウンロードします。
ダウンロードが終わったら、解凍して書き込み可能な場所に配置します。
Windowsの場合だと、ProgramFilesとかは書き込み権限がなかったりするので、
ルートディレクトリ直下か、ユーザディレクトリの下がよいそうです。
今回はCドライブ直下に配置しました。

3.PlayのPathを通す

PlayのPathを通します。
通す先は、インストール先のディレクトリでいいようです。
cドライブ直下にインストール先のディレクトリをおいた場合は、こんな感じ。
C:\play-2.0.4
4.Playコマンドの確認
Playコマンドが使えるか確認します。
コマンドプロンプトを立ちあげて、
play help
と打ってみます。
以下のような表示がされればOK

これでインストールは完了です。
案外簡単だったー。

次はアプリケーションの作成です。

Play! frameworkまとめ

このエントリーをはてなブックマークに追加 Clip to Evernote

この度、Play frameworkを使ってみようと思ったので、まとめを書いていきます。
随時更新予定。

0.Play frameworkとは
1.環境構築
1-1.Play frameworkをインストールする[Windows環境]
1-2.新規アプリケーションを作成する
1-3.Playコンソールを使う
1-4.eclipseにプロジェクトとしてインポートする

2013年1月4日金曜日

[AWS]Amazon EC2インスタンスをコピーしてサイトを複製する

このエントリーをはてなブックマークに追加 Clip to Evernote

EC2のインスタンスをコピーして、複製する方法をメモ。
※2013/01/04時点での情報です。

1.インスタンスをコピーする

まずは、AWSのEC2のダッシュボードを開いて、右側のメニューから『AMIs』を選択。

選択したら、上の方にある『Register New AMI』をぽちっとする。
そうすると、以下のような画面が出てくるので、適当に入力。
ManifestPathはs3に置かれる場所を指すのだろうか・・・
入力し終わったら、Registerを押して完了。
これでイメージのコピーは完了です。
コピーが終わったら、AMIに行が追加されます。
statusがavailableになったら完了です。


※Webサーバとか起動してたら、一旦落とした方がいいみたいですが、最近?になってからなのか、サーバを停止しなくても出来るようになったみたいです。
その分、ちょっと時間がかかるかもしれません。


2.インスタンスをコピーしたイメージから作成する

右側のメニューから『Instance』を選択します。
選択したら、上の『Launch Instance』を選択。

そうしたらいつものインスタンス作成画面が出てくるので、クラシックウイザードで作成


先ほど作ったAMIを選択するので、『My AMIs』のタブを開く。
そうすると先程作ったイメージが表示されているので選択して次にすすむ。
設定がいくつか出てきますが、今回はそのままでスルーします。


次もそのまま。


その次もそのまま。

次は、サーバに入るための暗号鍵を作ります。
nameとvalueはわかりやすいように適当に入れます。
別のインスタンスで作ってたら、その暗号鍵を割り当てることも可能です。
今回は、コピーしたサーバなので、コピー元と同じキーにします。
次にセキュリティグループを設定します。
今回は同じグループに所属させます(本番とstg環境は別とかにした方がホントはいいんだろうなぁ)
最後に確認画面。これでOK-って押します。

インスタンスができました。
なんか言ってますが、今回は無視(笑)

あとは、他のインスタンスと同様にEIP割り当てたり、ドメイン割り当てたりはお好きな感じで。

2012年12月10日月曜日

[tomcat]起動時にUnsupportedEncodingException cp932と言われたら

このエントリーをはてなブックマークに追加 Clip to Evernote
tomcatの起動時に、
UnsupportedEncodingException cp932って出てきたので、
ググって調べてみた。

どうやら、windowsのインストーラー版だと
XMLの文字コードがShift-JISだったり、
XML宣言のencodingがutf-8じゃなかったりするので
その辺を直してやると起動デキました。

無事解決。

参考URL
Tomcat,UnsupportedEncodingExceptionとかで起動しない
http://d.hatena.ne.jp/gnarl/20080805/1217900224

egacreate UnsupportedEncodingException: cp932
http://egacreate.blogspot.jp/2009/03/unsupportedencodingexception-cp932.html

2012年12月4日火曜日

[セキュリティ]一部のリクエストヘッダを書き換えるとブラウザエラーになる

このエントリーをはてなブックマークに追加 Clip to Evernote
脆弱性の調査をしている時に、リクエストヘッダのHOSTヘッダは書き換えられるのか?という話になり、その時に調べた内容のまとめを書いてきます。

■調査内容

JavaScriptでリクエストヘッダの書き換えは可能なのか?

■対象

Android標準ブラウザ
iPhone iOS5 Safari
PC Chrome
PC Safari

■結果

一部のリクエストヘッダの書き換えは、ブラウザ側でエラーとなる。

■調査詳細

まず、JavaScriptを書いてみた。
リクエスト内容を書き換えたり、任意の内容を送るのは、XMLHTTPRequestを使用する。

参考URL
JavaScript初級者から中級者になろう 十三章第一回 XMLHTTPRequest
ヘッダーを書き換えるには

書いてみたテストページ↓
※IEはめんどいので割愛・・・(ActiveXを呼ばないとダメらしい)

さて、実行してみると、ブラウザ側でこんなエラーが。(キャプチャはSafari)
『Refused to set unsafe header "Host"』はChromeでも同じスクリプトエラー。
ぐぐってみると、
Chrome拡張でHTTPヘッダを改変
http://lostlinksearch.net/blog/2012/03/chrome%E6%8B%A1%E5%BC%B5%E3%81%A7http%E3%83%98%E3%83%83%E3%83%80%E3%82%92%E6%94%B9%E5%A4%89/
であるように、一部のヘッダはヘッダを指定出来ないそうな。
まあ、セキュリティ上、そうだよなーと納得したところで、調査終了ー(ということにしたw)