クライアントプロセスが使うポート

サーバプロセスはポートを指定してListenしますが、クライアントプロセスはOSから動的に割り当てられます。Windows的には一時ポートとか動的ポートといいますが、ネットワーク屋さん的にはエフェメラルポートといいます。

ネットワーク屋さん的なポート割付

1〜1024 1025〜49151 49151〜65535
ウェルノウンポート*1 レジスタードポート*2 エフェメラルポート*3

Windowsのデフォルトのポート割付

1〜1024 1025〜5000 5001〜
予約 エフェメラルポート なし

Solaris

1〜1024 1025〜32767 32768〜65535
予約 なし エフェメラルポート

こう見ると、Solarisの方がまともな感じ。
安定性があるには理由があるってな。
若しくはWindowsアプリ開発者は空気を読んで5001以降を使うとか。

まぁそんな感じ。

*1:一般的なサーバプロセスが予約しているので、サーバプロセスを作るときは使ってはいけない。OSもクライアントプロセスに割り当ててはいけない。

*2:予約はされていないが、この範囲内で登録されているので、サーバプロセスを作るときはココを指定する。OSは割り当てないで欲しい。

*3:OSが動的に割り当てるときはココにしてくれ。

WEBアプリでファンクションキーを使う

<script type="text/javascript">
<!--
function estop(e) {
	// Mozilla(Firefox, NN) and Opera 
	if (e != null) {
		// イベントの上位伝播を防止 
		e.preventDefault(); 
		e.stopPropagation(); 
	// Internet Explorer 
	} else {
		// イベントの上位伝播を防止 
		event.returnValue = false; 
		event.cancelBubble = true; 
		event.keyCode = 0;
	}
	return true;
}

document.onkeydown = function(e) {
	var shift, ctrl; 

	// Mozilla(Firefox, NN) and Opera 
	if (e != null) {
		keycode = e.which;
		tagname = e.target.tagName.toUpperCase();
		ctrl    = typeof e.modifiers == 'undefined' ? e.ctrlKey : e.modifiers & Event.CONTROL_MASK; 
		shift   = typeof e.modifiers == 'undefined' ? e.shiftKey : e.modifiers & Event.SHIFT_MASK; 

	// Internet Explorer 
	} else { 
		keycode = event.keyCode; 
		tagname = window.event.srcElement.tagName.toUpperCase();
		ctrl    = event.ctrlKey; 
		shift   = event.shiftKey; 
	} 

	switch(keycode){
	case 27 :
		if ( tagname == "TEXTAREA" ) {
			alert('Escキーをキャンセルしました');
			estop(e);
		}
		break;
	case 112 : //F1
		location.href = "http://yahoo.co.jp/";
		estop(e);
		break;
	case 113 : //F2
		location.href = "http://www.google.co.jp/webhp?complete=1&hl=ja";
		estop(e);
		break;
	case 116 : //F5
		location.href = "http://www.excite.co.jp/";
		estop(e);
		break;
	case 121 : //F12
		location.href = "http://www.excite.co.jp/";
		estop(e);
		break;
	default :
		//デバック用
		//alert(keycode + 'が押されました');
		return true;
	}
	return false;
}

//-->
</script>

久しぶりの星空

昨日は久しぶりに晴れましたね。
最近の夜はずっと薄曇といった感じでした。
思った以上に良く取れたので一枚。

撮影データ
撮影地
大きな地図で見る左側にある公園
カメラ Canon EOS Kiss Digital N
シャッター速度 4.5秒
レンズ 標準レンズ(EFS 18-55mm)
焦点距離 18mm
絞り F/3.5
感度 ISO1600
合成枚数 7枚
合成方法 加算平均 + なんちゃってフラット補正

月給は微妙に下げたほうが良い

毎月の給与にかかる社会保険料(健康保険料+厚生年金保険料)は料額表を元に算出しますが、そこには幅があります。また、賞与はこの料額表を使いません。定率の乗じた額になります。なので、同じ年収を前提とすると、以下のように年間の手取りで2.7万円の差が生まれます。

健康保険料 厚生年金保険料 個人負担合計
給料 250000 10660 19494.8
賞与 500000 20500 37490
合計 3500000 148420 271427.6 419847.6
健康保険料 厚生年金保険料 個人負担合計
給料 249999 9840 17995.2
賞与 500012 20500.492 37490.89976
合計 3500000 138580.492 253433.2998 392013.7918

そこで、やはり気になるのは、もう一階級上の上限にしたらどうなるか?

健康保険料 厚生年金保険料 個人負担合計
給料 269000 10660 19494.8
賞与 272000 11152 20394.56
合計 3500000 139072 254332.16 393404.16

かわりませんね。これは、料額表の標準月額25万円付近では2万円の幅があるためで、幅が変わらない以上は節約できる額も変わらないということです。標準月額が大きければ幅も大きくなり、標準月額が小さければ幅も小さくなります。

正確には…
健康保険料の個人負担率=4.1%
厚生年金保険料の個人負担率=7.498%

年間の差額=(健康保険料の個人負担率+厚生年金保険料の個人負担率)×標準月額の幅×12ヶ月
(0.041+0.07498)×20000×12=27835.2円
までが節約可能な限界です。