EC2 Command-Line Tools 自分用まとめ(随時更新)

Amazon のサポートするイメージ一覧

% ec2-describe-images -o amazon


全イメージ一覧

% ec2-describe-images -x all


鍵の作成

% ec2-add-keypair <鍵名> | sed -e "1d" > <鍵ファイル名>


インスタンスの確認

% ec2-describe-instances


インスタンス起動

% ec2-run-instances <イメージID> -k <鍵名>


インスタンス停止

% ec2-terminate-instances <インスタンスID>


ポートの解放状況の確認

% ec2-describe-group


ポートの解放

% ec2-authorize <グループ名> -p <ポート番号>


ポートの解放中止

% ec2-revoke <グループ名> -p <ポート番号>


固定IPアドレスの確認

% ec2-describe-addresses


固定IPアドレスの確保

% ec2-allocate-address


固定IPアドレスの解放

% ec2-release-address 


固定IPアドレスの割当

% ec2-associate-address -i <インスタンスID> 


固定IPアドレスの割当解除

% ec2-disassociate-address 

iモードID の取得

<img src="foo.gif?guid=ON" />

こうしておいて

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{X-DCMGUID}i\"" combined

こうすると、httpd のlog にiモードID を出力できる。


使い方次第で自サイト内の行動履歴をトラッキングできる。


(07/17 追記)
全キャリア対応

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{X-DCMGUID}i\" \"%{X-UP-SUBNO}i\" \"%{X-JPHONE-UID}i\"" mobile

プログラマがコードを書く速度は100倍差が出にくいが、コードを書ける状態にもっていくまでの速度には100倍差が出る

独りの超電波プログラマ: プログラマがコードを書く速度は100倍差が出るのか?
生産性という言葉は「コーディング」だけに掛かるものだろうか。


エンジニアの生産性というのは

  • 問題の解き方を考える(設計)
  • コードに落とす(コーディング)
  • 正常に動作する事を確認する(テスト)

という一連の仕事(プログラミング)について語られるべきだと思う。


で、生産性に大きな影響を与えるのは、設計では無いだろうか。


独りの超電波プログラマ: 100人の囚人パズル
このパズルを10分で解ける人がいる一方で、1日かけても解けない人がいる。


ある処理のアルゴリズムを30分で思いつく人もいれば、3日間悩む人もいる。


問題の解き方さえ分かってしまえば、言語に対する習熟度によほどの差がない限り
コードを書くという行為の生産性の差は10倍にもならないだろう。

例:ServletSNSのサイトを作る

  • Java 憶える(1日)
  • Servletを憶える(1日)
  • 環境を整える(1日)
  • SNSのサイトを作る(60日)


独りの超電波プログラマ: プログラマがコードを書く速度は100倍差が出るのか?

この例で言うと、比較される両者の設計(とテスト)能力には
まったく差がないことが前提となる。


どうでもいいけど、言語や環境について2〜3日の学習で
経験者と同じくらいの習熟度が求められる職場って大変そう。

Restlet からServletContext を触る方法

Servlet からファイルパスの取得でよく使う?ServletContext#getRealPath(String)だが
Restlet でも同様のことをするためにServletContext を触れないか調べてみた。


調べたところ

こういう記事を見つけたので試してみた。


org.restlet.resource.Resource を継承したクラスで

ServletContextAdapter adapter = (ServletContextAdapter) getContext();
ServletContext servletContext = adapter.getServletContext();
String path = servletContext.getRealPath("WEB-INF/foo.xml");

とすればよい。