Home > Archives > 2011-01 Archive

2011-01 Archive

フレームワークを調査するときにやること

仕事でSeasarプロジェクトのTeedaというフレームワークでWebアプリケーションを作ることになったので、その調査ということで、色々やったので、そのメモです。
とりあえず以下の事をやれば、一製造メンバーとしては役に立てるかな。

以下の事をやりました。

  1. チュートリアルを動かしてみる
  2. マニュアルを読む
  3. MLを眺める
  4. 課題管理(バグレポート)を眺める
  5. ブログを読む
  6. ソースを読む

以下、詳細。

1. チュートリアルを動かしてみる

大体のフレームワークには、チュートリアルがサイトに載っていたり、サンプルコードをダウンロードできたりするので、それをとりあえず動かしてみる。
Teedaの場合、html-tutorialという素晴らしいサンプルコード群が配布されているので、それをひと通り眺めると、出来ることのイメージが掴めました。

2. マニュアルを読む

もちろん、必須です。
Teedaの場合、S2やS2Daoなんかも絡んでくるので、そこらへんのマニュアルもひと通り目を通す。
分からないところがあってもとりあえず目を通す。そうすると、後で分からないことがあったときに「あそこに書いてあったような・・・」みたいな当たりが付けられるので。
あと、先にチュートリアルやっておくと実際の動きのイメージをつけながらマニュアルを読めるので、先にチュートリアルやったほうがいい。

3. MLを眺める

MLを眺める&登録しておく。
だいたい行き詰まるところは同じなので、求める答えはMLにあったりするのがほとんどだったりする。
隅から隅まで読むのは無理なので、気になるタイトルのやつだけ読んでました。
あとML登録しておくと、コミュニティの活発具合とか雰囲気がわかる気がして楽しい。

4. 課題管理(バグレポート)を眺める

フレームワークの歴史が垣間見れて面白い。
どのバージョンでこういう機能が追加されたんだ、とか分かる。
最新バージョンを使えるようなら問題ないけど、理由あって古いバージョンを使わなくちゃいけないとか言う場合に、この機能は使えないとかを調査したりする。

5. ブログを読む

これは実装してたらだいたいすると思うけど、Teedaだったら検索に引っかかったブログのTeedaカテゴリーは全部読むとか。

6. ソースを読む

これができたら最高なんだけど、、、、まだ技術力不足で無理です。。。

Windowsでどのポートが何のアプリケーションで使用されているか確認する

Eclipse内のWTPでTomcatを起動したら、以下のようなエラーメッセージが出て、起動できませんでした。

ローカル・ホスト の Tomcat v6.0 サーバー で必要なポート 8009 はすでに使用中です。サーバーはすでに別のプロセスで稼働中であるか、システム・プロセスがそのポートを使用中である可能性があります。このサーバーを始動するには、他のプロセスを停止するか、ポート番号を変更する必要があります。

どうもポートがかぶっていそうな感じだったので、ポートが何のアプリケーションで使用されているかを調べてみました。
方法は以下。

ポートのPIDを確認する

以下のコマンドで、ポートのPIDを確認する。

C:\>netstat -nao

アクティブな接続

  プロトコル  ローカル アドレス          外部アドレス        状態           PID
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       996
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:902            0.0.0.0:0              LISTENING       3632
  TCP    0.0.0.0:912            0.0.0.0:0              LISTENING       3632
  TCP    0.0.0.0:990            0.0.0.0:0              LISTENING       760
  TCP    0.0.0.0:1521           0.0.0.0:0              LISTENING       2976
  TCP    0.0.0.0:1862           0.0.0.0:0              LISTENING       2176
  TCP    0.0.0.0:2869           0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:5357           0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:5432           0.0.0.0:0              LISTENING       3400
  TCP    0.0.0.0:8009           0.0.0.0:0              LISTENING       3476
  TCP    0.0.0.0:8308           0.0.0.0:0              LISTENING       3476
  TCP    0.0.0.0:17500          0.0.0.0:0              LISTENING       4068
  TCP    0.0.0.0:49152          0.0.0.0:0              LISTENING       684

これでポート「8009」がPID「3476」で使用されていることがわかる。

PIDから使用されているアプリケーションを特定する

タスクマネージャを開いて、使用アプリケーションを特定する。

  1. 「Ctrl + Alt Delete」でタスクマネージャを開く。
  2. 「プロセス」タブを開く。
  3. デフォルトだとPIDが表示されていないので、「全ユーザーのプロセスを表示する(S)」「表示(V)→列の選択(S)→PID(プロセスID)」にそれぞれにチェックを入れる。

すると、PID「3476」がtomcat6.exeで使用されていることがわかる。
最後に該当の行を右クリックするなどして「プロパティ」などを見れば、使用されているアプリケーションが特定できる。めでたしめでたし。

Teedaでcolspanする

Teedaでcolspanするにはダイナミックプロパティを利用すればできます。

colspan.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:te="http://www.seasar.org/teeda/extension" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Teedaでcolspan</title>
</head>
<body>

<form id="Form">
<table border="1">
	<tr>
		<th>OS名</th>
		<th id="versionColspan" colspan="1">バージョン</th>
	</tr>
	<tr>
		<td><span id="osName">dummy</span></td>
		<div id="versionItems">
		<td><span id="codeName">dummy</span><br /><span id="number">dummy</span></td>
		</div>
	</tr>
</table>
</form>

</body>
</html>

ColspanPage.java

package org.sample.web.fnc;

import java.util.ArrayList;
import java.util.List;

public class ColspanPage {

	public int versionColspan;

	public List<VersionDto> versionItems;
	public String codeName;
	public String number;

	public String osName;

	public Class<?> initialize() {
		return null;
	}

	public Class<?> prerender() {
		osName = "Mac";

		// Macのバージョン
		versionItems = new ArrayList<ColspanPage.VersionDto>();

		VersionDto mac1 = new VersionDto();
		mac1.number = "10.3";
		mac1.codeName = "Panther";
		versionItems.add(mac1);

		VersionDto mac2 = new VersionDto();
		mac2.number = "10.4";
		mac2.codeName = "Tiger";
		versionItems.add(mac2);

		VersionDto mac3 = new VersionDto();
		mac3.number = "10.5";
		mac3.codeName = "Leopard";
		versionItems.add(mac3);

		VersionDto mac4 = new VersionDto();
		mac4.number = "10.6";
		mac4.codeName = "SnowLeopard";
		versionItems.add(mac4);

		return null;
	}

	class VersionDto {
		public String codeName;
		public String number;
	}

	public int getVersionColspanColspan() {
		return versionItems.size();
	}
}

Home > Archives > 2011-01 Archive

Search
Feeds
Meta

Return to page top