日本語文字コード

日本語文字コードには、
JIS、シフトJIS、EUC、Unicode、UTF-8といくつかの種類があります。
個々のコードから文字を特定するのが一般的ですが、同じ文字がそれぞれのコードでどのようになっているかを調べるとなると厄介です。

しかし、秀丸というエディターにはこの機能があります。
1)まず、秀丸をダウンロードしてインストールします。
2)秀丸を実行して、コードを調べたい文字にカーソルを合わせます。
3)秀丸の[Other] – [Comand list] – [Other] – [Show character code] – [Other]
hidemaruJPNCode01  
hidemaruJPNCode02

4)カーソルの在った位置の文字の文字コードを各種のコード体系で表示してくれます。
hidemaruJPNCode03

※この機能によってUTF-8が3バイトコードの体系であることを実際に見ることが出来ます。

カテゴリー: IT基礎知識 | コメントする

tableへの最大表示文字列の設定

table要素の

タグの横幅指定はピクセルか%指定なので、表示文字列の大きさによって行数が自動拡張されます。
しかし、制限なく自動拡張されると表の行数が1ページの収まらなくなる(特にタブレットやスマフォでは)ので、表示文字列の数を元に表示をスキップ数又は行に入りきらない文字を切り落とす、などの処理が必要になります。

文字列の長さを判断して表示を制御する例

<!DOCTYPE html>
<html lang="UTF-8">
<head>
	<script type="text/javascript">
	var mojiRetu10 = new String("1234567890");
	var mojiRetu20 = String("12345678901234567890");
	var mojiRetu40 = "1234567890123456789012345678901234567890";
	</script>
</head>
<body>
	<script type="text/javascript">
	alert("mojiRetu10:" + mojiRetu10 + "   文字数:" + mojiRetu10.length + 
			"\nmojiRetu20:" + mojiRetu20 + "   文字数:" + mojiRetu20.length + 
			"\nmojiRetu40:" + mojiRetu40 + "   文字数:" + mojiRetu40.length);

	</script>
<table border="1" cellspacing="0" cellpadding="5"  align="left" bordercolor="#000000" width="200">
<tr>
<td>
	<script type="text/javascript">
	if(mojiRetu10.length <= 34) { document.write(mojiRetu10); }
	</script>
</td>
</tr>
<tr>
<td>
	<script type="text/javascript">
	if(mojiRetu20.length <= 34) { document.write(mojiRetu20); }
	</script>
</td>
</tr>
<tr>
<td>
	<script type="text/javascript">
	if(mojiRetu40.length <= 34) { 
		document.write(mojiRetu40);
	} else {
		document.write("mojiRetu40は" + mojiRetu40.length + "文字の為、2行では表示できません。");
	}
	</script>
</td>
</tr>
</table>
</body>
</html>
カテゴリー: Javascript | コメントする

Javascriptでのenum(列挙型)

列挙型宣言及び列挙型変数は、コードの可読性向上のために多くの言語でenumというキーワードでサポートされています。Javascriptでも機能はサポートされているのですが、enumというキーワードは使わず通常のvarキーワードで宣言するので注意が必要です。構文の若干違います。(TypescriptではC、javaと同じ構文になっています。)

宣言
var 列挙型タグ名 {
   定数1 = 1,
   定数2 = 2,
       |
   定数n = n
};

列挙型変数定義と利用
var 変数;
変数 = 列挙型タグ名.定数i;

if( 変数 == 列挙型タグ名.定数i) {
   処理a;
} else {
   処理b;
}

サンプル

<!DOCTYPE html>
<html lang="UTF-8">
<head>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8">
	<title>enum in JavaScript</title>
	<script type="text/javascript">
	var SEASONS = {
		SPRING : 1,
		SUMMER : 2,
		AUTUMN : 3,
		WINTER : 4
	};
	var season;
	season = SEASONS.SUMMER;
	</script>
</head>
<body>
<script type="text/javascript">
alert("emun in javascript sample\n");
if(season == SEASONS.SUMMER){
	alert("夏ですね");
} else {
	alert("夏ではないですね");	
}
</script>
</body>
</html>
カテゴリー: Javascript | コメントする

IPアドレスとMACアドレス

TCP/IPの通信では、IPパケットが宛先IPアドレスで指定された宛先のノードに届くまでいくつものルータを経由します。このイメージはコマンドプロンプトからtracertコマンドに特定のURLをパラメーターとして渡すと、自分の使用しているルーターから目的のサーバーまでどのようなルーターを経由して到達したか表示され、ルーターからルーターへパケットが転送されて 目的のサーバーに届いている事が分かります。(このパケットの通り道のことを経路、ルーター間のパケットの転送を ルーティングと呼びます。)
さて、宛先の指定に使われるIPアドレスは、ハードウェアに依存しない論理的なアドレスであり、ネットワークアドレスとホストアドレスによってノード(ネットワークインターフェイスを備えたコンピュータ)を識別します。
一方MACアドレスは、物理的なネットワークインターフェイスを識別するアドレスです。Ethernetではハブによって複数のコンピュータやルータが接続されていますが、物理的に通信できるのは「隣接ノード」だけです。Ethernetではこの複数の隣接ノードの中から通信する1つのノードを示すためにMACアドレスが使われています。
IP通信において宛先IPアドレスはつねに到着ノードを示し、パケットを中継するルータは、これを見て転送先を決定します。しかし、これだけではIPパケットをネットワークの途中の次のルータに届けることはできません。次のルータへIPパケットを送るためには、IPアドレスに変わる宛先が必要となり、これにMACアドレスを使います。つまり送信ノードにルータのMACアドレスを指定して送信します。
ルータに送信されたIPパケットをルータが受信すると、IPパケットの宛先を見て、宛先が自分でなければ到着ノード側へパケットを転送します。転送を行なう際、IPパケット中の宛先IPアドレスと送信元アドレスはまったく変わらず、新たに隣接ノード間の通信の為に宛先と送信元を示すヘッダ情報が付けられます。

※発信元のルータは隣接ノードのMACアドレスをどのように知るかといえば、MACアドレスを調べたいノードがIPアドレスをデータに設定し、隣接ノードすべてにARP(Address Resolution Protocol)Requestをブロードキャストし、全ノードがデータに設定されているIPアドレスを自身のIPアドレスと比較し、その結果が一致するノードだけが発信元にARP ReplyメッセージとともにMACアドレスを通知するのです。

カテゴリー: JSP_Servlet | コメントする

MACアドレス

MACアドレス
EthernetのMACアドレス(Media Access Control Address)とは、ネットワークインターフェースカード(NIC)の製造時にハードウェアに組み込まれるもので、このためハードウェアアドレスとも、物理アドレスとも呼ばれています。具体的にはパソコン、有線ルーター・無線ルーター、スマフォなどのモバイル端末、ネットワークディスク、増設LANアダプター、ハブには IPアドレスは付かないのですが MACアドレスはあります。
MACアドレスは48ビット長(6バイト)のアドレス情報で、表記には16進数が用いられ、1バイト単位に“-(ダッシュ)”や“:(コロン)”で区切って表わします。MACアドレスの最初の3バイトは「OUI(Organizationally Unique Identifier)」と呼ばれる番号で、IEEEで管理されるベンダーIDです。残り3バイトは各ベンダーにおいて製品ごとに重複しないよう管理されている番号で、初めの1バイトが機種ID、次の 2バイトがシリアルIDです。この構成でMACアドレスは世界中で製品ごとにユニークな番号になっています。
WindowsパソコンのMACアドレスの調べ方は、
1) [コントロールパネル] – [ネットワークとインターネット] – [ネットワークと共有センター] – [アダプタ設定の変更]で調べたいローカルエリア接続をクリックし、[イーサネットの状態]ダイアログから[詳細]をクリックし、ネットワーク接続の詳細ダイアログの中の物理アドレスを参照します。
2) コマンドプロンプトから ipconfig (/all)
3) コマンドプロンプトから getmac (/v)
4) コマンドプロンプトから arp –a 
(ネットワーク内のルーター、パソコンなど他の機器のMACアドレスを調べることができます。)

iphone6(iOS7)のMACアドレスの調べ方は、
ホーム画面の[設定] – [一般] – [情報] で表示される情報をスクロールして [Wi-Fiアドレス]の右側がMACアドレス

カテゴリー: JSP_Servlet | コメントする

フォーカスの移動

複数のinput要素への入力を連続して行う場合、Tabキーでフォーカスを移動することになりますが、elements.focus()を使ってこれを自動的に行う事が出来ます。

ただし、input要素のvalue値を入力(Enterキーを押す)した後のタイミングでフォーカスを動かそうとすると、input要素のindexを使ってキー入力されたinput要素のindex値よりも大きい(:gt(index))、最初の要素(:first)に対しfocusするとコーディングします。

<!DOCTYPE html>
<html lang="UTF-8">
<head>
	<meta charset="UTF-8">
	<title>YMFB_placeholder</title>
	<style>
		#wrapper{width: 380px;}
		textarea{width: 370px;}
		dt{background: lightblue; padding:4px; margin-top:8px;}
		dd{margin:2px;}
	</style>
	<script type="text/javascript" src="C:\0 JavaScript\jQuery\jquery-3.1.0.min.js" charset="utf-8"></script>
	<script type="text/javascript">
		// 住所入力 html5
		function onButtonClick() {
			var jyusho = document.getElementById("output");
			jyusho.innerHTML = document.getElementById("add1").value + document.getElementById("add2").value;
		}
		function onButtonClickJQ() {
			var jyushoJQ = document.getElementById("outputJQ");
			jyushoJQ.innerHTML = document.getElementById("add1JQ").value + document.getElementById("add2JQ").value;
		}

	$(function(){
//  var elements = "input[type=text]";
  var elements = "input";
  $(elements).keypress(function(e) {
    var c = e.which;
    if (c == 13) { 
      var index = $(elements).index(this);
      if( (index == 2) || (index == 5) ) { onButtonClick(); }
      else {
      	$(elements + ":gt(" + index + "):first").focus();
      	e.preventDefault();
      }
    } 
  });
});

	</script>
    <script type="text/javascript" src="C:\0 JavaScript\jQuery\jquery.ah-placeholder.js" charset="utf-8">
    $(function()
    {
        $('.jq-placeholder').ahPlaceholder({
            placeholderColor : 'silver',
            placeholderAttr  : 'title',
            likeApple        : false
        });
    });

    
    </script>
</head>
<body>
	<div id="wrapper">
		<h1>住所入力</h1>
		<dl>
			<dt>HTML5なら</dt>
			<dd><input type="text" id="add1" placeholder="都道府県を入力してください。"></dd>
			<dd><input type="text" id="add2" placeholder="番地を入力してください。"></dd>
			<dd><input type="button" id="btn_done" value="確定" onclick="onButtonClick();"></dd>
			<dd><div id="output"></div></dd>
		</dl>
		<dl>
			<dt>jqueryなら</dt>
			<input type="text" id="add1JQ" value="" placeholder="都道府県を入力してください。"><br>
			<input type="text" id="add2JQ" value="" placeholder="番地を入力してください。">
			<dd><input type="button" id="btn_placeholderJQ" value="確定" onclick="onButtonClickJQ();"></dd>
			<dd><div id="outputJQ"></div></dd>
		</dl>

	</div>

</body>
</html>

※なお、e.preventDefault();は、その要素のイベントをキャンセルしている。

カテゴリー: Javascript | コメントする

テキストボックへの入力例表示

テキストボックの中に入力例を表示しておきたい場合があります。
HTML5では、placeholderという属性を使って、簡単にこれを実現することが出来ます。
しかし、それ以前のHTMLにはこの属性はサポートされていないので、JSを使って実現することになります。

<!DOCTYPE html>
<html lang="UTF-8">
<head>
	<meta charset="UTF-8">
	<title>YMFB_placeholder</title>
	<style>
		#wrapper{width: 380px;}
		textarea{width: 370px;}
		dt{background: lightblue; padding:4px; margin-top:8px;}
		dd{margin:2px;}
	</style>
	<script type="text/javascript">
		// 住所入力 html5
		function onButtonClick() {
			var jyusho = document.getElementById("output");
			jyusho.innerHTML = document.getElementById("add1").value + document.getElementById("add2").value;
		}
		function onButtonClickJQ() {
			var jyushoJQ = document.getElementById("outputJQ");
			jyushoJQ.innerHTML = document.getElementById("add1JQ").value + document.getElementById("add2JQ").value;
		}

	</script>
	<script type="text/javascript" src="C:\0 JavaScript\jQuery\jquery-3.1.0.min.js" charset="utf-8"></script>
    <script type="text/javascript" src="C:\0 JavaScript\jQuery\jquery.ah-placeholder.js" charset="utf-8">
    $(function()
    {
        $('.jq-placeholder').ahPlaceholder({
            placeholderColor : 'silver',
            placeholderAttr  : 'title',
            likeApple        : false
        });
    });
    </script>
</head>
<body>
	<div id="wrapper">
		<h1>住所入力</h1>
		<dl>
			<dt>HTML5なら</dt>
			<dd><input type="text" id="add1" placeholder="都道府県を入力してください。"></dd>
			<dd><input type="text" id="add2" placeholder="番地を入力してください。"></dd>
			<dd><input type="button" id="btn_placeholder" value="確定" onclick="onButtonClick();"></dd>
			<dd><div id="output"></div></dd>
		</dl>
		<dl>
			<dt>jqueryなら</dt>
			<input type="text" id="add1JQ" value="" placeholder="都道府県を入力してください。"><br>
			<input type="text" id="add2JQ" value="" placeholder="番地を入力してください。">
			<dd><input type="button" id="btn_placeholderJQ" value="確定" onclick="onButtonClickJQ();"></dd>
			<dd><div id="outputJQ"></div></dd>
			</form>
		</dl>

	</div>

</body>
</html>
カテゴリー: Javascript | コメントする

入れ子になったループを一気に抜ける

breakを使えば、ある条件でループを途中で抜けることができます。しかし、多重ループの場合、breakを指定したループだけを抜けるので、一番内側のループから直接多重ループを抜けるためには、breakの飛び先を事前に指定しておく必要があります。

breakTarget: for(int i=0; ; ) {
   (中略)
  for(int j=1; ; ) {
     (中略)
     if( i * j > 35 ) { break breakTarget; }
     (中略)
  }
}
カテゴリー: JSP_Servlet | コメントする

フォーム情報は文字列(String)データ、数値データとして扱うにはparseInt()

フォーム要素から送られた情報は、requestオブジェクトで取得できますが、取得するのは文字列データです。
String response = request.getParameter(“フォームから送られたname値”);

そこで、文字列を数値データに変換するためにIntegerクラスのparseIntメソッドを使います。
整数 = Integer.parseInt(response);

カテゴリー: JSP_Servlet | コメントする

インターネット接続とLocalhost

local hostはDNS(Domain Name System)で127.0.0.1に割り当てられた名前ですが、127.0.0.1というIPアドレスは何なのでしょうか。またこのlocal hostとインターネット接続はどのような関係なのでしょうか。

IPアドレス
インターネット上のクライアント(端末)は別々のIPアドレスで識別されています。IPアドレスは0から255までの四つの数値を「.」で4つ繋いで作られています(IPv4の場合)。この直接インターネットの上に置かれた端末に対して割り当てるIPアドレスをグローバルIPアドレスと呼んでいます。しかしグローバルIPアドレスはこの構造からわかるように有限です。
一方、IPアドレスの利用はインターネット利用に限らずコンピュータをはじめとする家電製品にまで及び、互いに情報をやりとりするためには使われています。これらにもグローバルIPアドレスを割り振っていたらとっくに限界を超えています。しかし、これらの場合にはグローバルIPアドレスを使用する必要はありません。ある閉じたネットワーク上で使用されているIPアドレスは、他の閉じたネットワーク上で重複して使用されていたとしても,互いのネットワークは接続されていないので全く問題にならないからです。
そこで、直接インターネットには繋がっていない家庭内や会社内などの閉じたネットワーク内の個々の端末に割り当てるローカル(またはプライベート)IPアドレスが規定されています。

インターネット接続
グローバルIPアドレスがないとインターネットには入ることはできません。グローバルIPアドレスは、基本的にプロバイダと契約して割り当てられ、ルーターに設定します。
会社内の端末はルータに設定されたグローバルIPアドレスを通してインターネットにアクセスしているわけですが、このルーターから会社内のネットワークを見ると各端末には192.168.XX.XXなどから始まるローカルIPアドレスが割り当てられています。
ローカルIPアドレスの構成は、192.168.A.Bなどとなっていて、Aの部分はルーターのメーカーによって違いがあり、Bの部分はそれぞれ端末に割当てられた固有の番号です。基本的に 1はルーター自身が持つ番号(ipconfigで表示されるDefault Gatewayのアドレス)なので各パソコンは2以降の数字になります。なお、実際にはローカルIPアドレス使われているアドレスには
1) 10.0.0.0~10.255.255.255
2) 172.16.0.0~172.32.255.255
3) 192.168.0.0~192.168.255.255
三つあり、1)はクラスAといわれ 大規模ネットワーク向け、2)はクラスB 中規模ネットワーク向け、そして3)が一般的なクラスC 小規模ネットワーク向けとなっています。
つまりインターネットとの接続とは、外部のインターネットと内部のネットワークの間のデータのやり取りで、ルーターはグローバルIPアドレスとプライベートIPアドレスを変換して通信しています。

サブネットマスク
ローカルIPアドレスには ネットワーク部とホスト部があります。例えば 192.168.1.11 というIPアドレスがある場合、192.168.1 がネットワーク部、11がホスト部です。社内の同一のネットワーク内では ネットワーク部はすべて同じ 192.168.1 となり、ホスト部である11の部分が 各パソコンや機器に割り当てられます。
このネットワーク部とホスト部の割合を決めるルールを、255.255.255.0などの数字並びを使って示したのがサブネットマスクです。

Local host
一方、各端末は端末自身を指す特殊なアドレスとして127.0.0.1というIPアドレスを持っています。このIPアドレスがDNSによってLocal hostという名前に置き換えられているわけです。従ってブラウザーでLocal hostに対してアクセスすると、自分の中のWebサーバーにアクセスすることになります。

カテゴリー: JSP_Servlet | コメントする