AWS Elastic Beanstalkとちょっと試してみた
http://aws.typepad.com/aws_japan/2011/01/introducing-amazon-beanstalk.html
WARをアップロードして動かすことができるというので、Servletが1つだけのWebアプリを動かしてみた。ヘルスチェックでちょっとハマったので、覚え書き。
Servletのコードはこんな感じ。
public class TestServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.getWriter().println("Hello, world!!"); response.getWriter().println("ServerInfo: " + getServletInfo()); ServletContext sc = getServletContext(); response.getWriter().println("API version: " + sc.getMajorVersion() + "." + sc.getMinorVersion()); response.getWriter().println("Servlet name: " + getServletConfig().getServletName()); } }
このServletを含んだwarファイルを作成して、AWS Management Consoleからアップロードして動かしてみる。しばらく待ったあと、なんだかうまく動いてないようだ。ログを見ると「Environment health has been set to RED」と表示されている。
色々確認してみたが、どうやらヘルスチェックで失敗しているらしい。
Basic Health Reporting - AWS Elastic Beanstalk
デフォルトでは、アプリケーションルート(http://<任意>.elasticbeanstalk.com/)へのHTTP HEADに反応しないと、アプリケーションが動いていないと判断されるらしい。
web.xmlのservlet-mappingが下記のようになっていたので、アプリケーションルートへのHEADに反応できなかったのが原因らしい。
<servlet-mapping> <servlet-name>TestServlet</servlet-name> <url-pattern>/TestServlet</url-pattern> </servlet-mapping>
対策としては、下記のいずれか。
- ヘルスチェックのURLを変える
- Edit Configuration -> Load Balancer -> EC2 Instance Health Check -> Application Health Check URL を /TestServlet に変える
- アプリケーションルートへのHTTP HEADに反応するようにアプリケーションを直す
1つめの対策を取ったら、無事Environment healthがGREENに変わった。
http://<任意>.elasticbeanstalk.com/TestServlet でブラウザを開いて、動いていることを確認できた。
JRuby on RailsでSQLite3を使うための覚え書き
JRubyで Ruby on Rails を使うこと自体はそんなに難しくない。でも、Mac OS Xに付いてるSQLite3をデータベースに使う設定が色々面倒で、Web上の情報も少なかったので、覚え書き。
動作環境
- Mac OS X 10.6.5
- JRuby 1.5.5 (ruby 1.8.7相当)
- Ruby on Rails 3.0.3
SQLite3を使う手順
1. JRubyをインストール
ここを参考にインストール。
http://kenai.com/projects/jruby/pages/GettingStarted
2. Railsと必要なモジュールをインストール
下記のコマンドを実行。
sudo jruby -S gem install rails activerecord-jdbcsqlite3-adapter
SQLite3を使うのに activerecord-jdbcsqlite3-adapter が必要。関連モジュールは gem が自動でインストールしてくれる。
3. Rails を動かす
3.1 アプリケーション作成
ここの簡易ブログアプリを途中まで作ってみる。
Getting Started with Rails — Ruby on Rails Guides
jruby -S rails new blog cd blog
3.2 設定ファイル変更
SQLite3を使うために、設定ファイルを変更。
下記を参考に、試行錯誤した。
http://jruby-extras.rubyforge.org/activerecord-jdbc-adapter/
Gemfile の変更
gem 'sqlite3-ruby', :require => 'sqlite3'
上記の記述を、下記に変更。
if defined?(JRUBY_VERSION) gem 'activerecord-jdbcsqlite3-adapter' else gem 'sqlite3-ruby', :require => 'sqlite3' end
config/database.yml の変更
development: adapter: sqlite3
アダプターの指定を、下記に変更。
development: adapter: jdbcsqlite3
3.3 Scaffold
あとは、普通にRailsで開発。
jruby -S rails generate scaffold Post name:string title:string content:text jruby -S rake db:migrate
Twitterのクジラの絵を変えるGreasemonkeyスクリプトを作ってみた
Twitter のクジラを萌えにしてみた - smellman's Broken Diary
これを見て思いついた。あまり見たくないover capacityのクジラの絵も、自分の好きな絵に変えられたら、ちょっと楽しくなるかも。
というわけで、あのクジラの絵を変えられるようになるGreasemonkeyスクリプトを作ってみた。これを使うと、こんな感じになる。
Echofon for Macで、はてなブックマークするのが便利なブックマークレット
ブックマークレットサービス・Hatena::Let を作りました - 2nd life
ブックマークレットをかんたんに作成・公開できるサービスが出来たそうなので、私がよく使っている自作ブックマークレットを公開してみることにした。
説明が長くて枠内に収まってない・・・。仕方ないので、ここで使い方を説明しておきます。
このブックマークレットを使うと、今開いているページのURLとタイトルを使って、「B!
このHatena::Letというサービス、デバッグもやりやすいので、ブックマークレットを作るのに便利そうです。
JSR 299:Contexts and Dependency Injection for Java EEの機能を簡単に調べてみた
Jungle Java - JSR 299 の参照実装 Weld が GAE で動作
この記事を見て、Contexts and Dependency Injection for Java EE(以下、CDIと略)がどんなものか気になった。
JSRということは、Javaの標準のDI仕様になるということで、Java EE 6に入る事も決まっている。
http://journal.mycom.co.jp/news/2009/12/08/010/index.html
というわけで、以下のURLを参考に、その機能を簡単に調べてみた。
CDI(旧名WebBeans)入門 その6 - しんさんの出張所 はてなブログ編
Weld - JSR-299 Reference Implementation
CDIの機能一覧
DIを知っている人前提機能一覧。機能名は、Weldのドキュメントへのリンクになってます。
- Injection
- DIの基本機能。@Injectionアノテーションで、コンストラクタやフィールドへのインジェクションが可能。
- Qualifier
- インジェクションする実装を、複数の実装からアノテーションで指定。
- Alternatives
- インジェクションする実装を、クライアントコードの変更なしに変更。テスト時のモック設定などに使える。
- Scope
- インジェクションするインスタンスのスコープを指定。組み込みのスコープとして、@RequestScoped, @SessionScoped, @ApplicationScoped, @ConversationScopedが用意されている。
- Producer methods
- DIコンテナがインスタンス生成できないクラスをインジェクションできるようにする。
- Interceptors
- AOPの機能。メソッド呼び出しの前後や、インスタンスのライフサイクルに割り込み処理を入れられる。
- Decorators
- あるJavaインターフェイスのメソッド呼び出し前後に割り込み処理を入れられる。Ineterceptor(AOP)の使い勝手を良くする。
- Events
- Obeserver/Consumerパターンによるイベント処理を実装しやすくする。
- Stereotypes
- ScopeやInterceptorなどのアノテーション設定を1つのアノテーション設定にまとめる。
- Java EE component environment resources
- Java EEのコンポーネントのインジェクション。@Resource, @EJB, @PersistenceContext, @PersistenceUnit, @WebServiceRefが用意されている。
モデリングの目的
UMTP認定試験の勉強その2。
UMLなどの記法を用いて、システムを描写する作業をモデリングと呼ぶ。モデリングは、その目的から以下の4種類に分類できる。
- 要求モデリング
- ユーザがシステムに要求する内容を理解するためのモデリング。システム化の対象範囲を明確にする。
- 分析モデリング
- システムが何をするかを明確にするためのモデリング。システム化の対象範囲の構造を明確にする。
- 設計モデリング
- システムをどのように実現するかを明確にするためのモデリング。システムの実現方法を明確にする。
- 実装モデリング
- 実際に動作するシステムの構成要素を明確にするためのモデリング。ハードウェア構成、ソフトウェア部品の構成、プログラムコードの構成を明確にする。
問題を解く事に置き換えると、こんな感じだろうか。
UMTP認定試験を受けることになった
会社の指示で、UMTP認定試験を受ける事になった。UMTPのL3認定を取得しろとのこと。個人的にはこういう資格にあまり興味はないのだが、資格を取るために勉強する事に意味はあるだろうし、受験料は会社が出してくれるので、受験することにした。
まずはUMTP認定試験はどんな試験なのか、ということで、公式サイトで確認してみた。
UMTP認定試験について - UMTP 特定非営利活動法人UMLモデリング推進協議会
L1からL4までのレベルがあって、大雑把にはこんな所らしい。括弧内は私の理解。
レベル | モデリングスキル |
---|---|
L4 | 実践に基づいてモデリングを指導できる(実務経験が豊富) |
L3 | 実務でモデリングが実践できる(良い設計ができる) |
L2 | UMLモデルの読み書きが普通にできる(読み書きできる) |
L1 | 簡単なUMLモデルの意味が分かる(知ってる) |
上位のレベルの認定を受けるには、下位のレベルを合格してないといけない。私はL3認定を目指しているので、L1、L2、L3と順番に3回合格しないといけない。
まずはL1認定を目指すのだが、ややこしいことに、L1には科目T1と科目T2があり、L1認定にはT2の合格が必要。なぜT1があるのかよく分からないが、とりあえず無視して、L1の科目T2の試験概要とサンプル問題を確認。
http://www.umtp-japan.org/modules/examination3/index.php?id=3&tmid1=4
http://www.umtp-japan.org/modules/examination3/index.php?id=13&tmid1=11
モデリングスキルレベル | UMLなどを使ってモデリングを行う最低限の知識を持っている。 |
合格条件 | 30問選択式で24問以上正解 |
試験時間 | 80分 |
出題範囲(関連するUML知識) | UML2.0ベース:ユースケース図、クラス図、シーケンス図、コミュニケーション図、ステートマシン図、アクティビティ図、コンポーネント図、複数の図 |
L1は、単純にUMLの知識を問うだけの試験みたいです。UMLは本で読んで勉強したことがあるし、多少我流が入っているけど業務でも使った事があるので、忘れているような細かい知識を勉強し直せば、合格は難しくなさそうな感じだ。
とりあえず、この本で勉強する。
- 作者: テクノロジックアート
- 出版社/メーカー: 翔泳社
- 発売日: 2008/08/05
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 22回
- この商品を含むブログ (5件) を見る