Windows2016から、WSFC(Windows Server Failover Clustering)でHAクラスタを組むのに、AD(Active Directory)は必須(前提)ではなくなったらしい。
Windowsのワークグループ構成を使ってクラスタ構成が組めるとのこと。しばらくクラスタ構築を行っていないので分からない分もあるが、WSFCでクラスタ構築する時の手間が少し省けそうな気がする。
rfcを読むと、ホスト名に許容されている文字にアンダースコア(_)は含まれていない。
A "name" (Net, Host, Gateway, or Domain name) is a text string up
to 24 characters drawn from the alphabet (A-Z), digits (0-9), minus
sign (-), and period (.). Note that periods are only allowed when
they serve to delimit components of "domain style names". (See
RFC-921, "Domain Name System Implementation Schedule", for
background). No blank or space characters are permitted as part of a
name. No distinction is made between upper and lower case. The first
character must be an alpha character. The last character must not be
a minus sign or period. ・・・
RFC 952 - DoD Internet host table specification
ITの世界では、名前中の区切り文字としてアンダースコアを入れることがあるが、ホスト名には入れてはいけないので、要注意である。あと、ホスト名の大文字・小文字は区別されない。
JavaのインタフェースとC言語のヘッダファイル(*.h)は、以下の点で共通点があると思う。
まあ、Javaのインタフェースの場合、インタフェースで定義されている全てのメソッドについて、実装クラスでメソッドの実装を記載する必要があったりして、インタフェースとその実装クラスの関係性が、C言語のヘッダファイルと実装ファイルよりも密になっていると思うが、存在意義としては似ているものなのかな、と思った。
引っ越して新居でインターネット接続を行った時のメモ。環境は、回線が NTT東日本のフレッツ光(ハイスピード・マンション・タイプ)で、 プロバイダはOCN。
インターネット接続の方式は、調べた限りでは以下の2つがあるようだ。
1. の方法だと、提供されたONUにはイーサネットのポートが一つしかなく、無線アクセスポイントの機能もなかったので、同時にインターネット接続できるパソコンは1台に限られてしまう。あと、パソコンがスリープ状態になって復帰すると、接続が切れてしまい、その都度インターネット接続設定を行う必要があったため、2. の方法を検討することにした。
2. の方法ではバッファロー社のルータ(有線・無線対応)を購入し、ルータ ----- ONU と接続し、ルータの説明書に従いルータの設定を行った。この時は、スマホからルータにアクセスし設定を行ったが、パソコンからもできるはず。
なお、ルータの設定中、インターネット接続の検証を行う段階で、ルータからプロバイダのID/PWの入力が求められる。最初の機器(スマホ・パソコン)でこれを通過しておけば、その後別の機器でインターネットに接続する際は求められなかった。おそらく、最初の機器からのルータ設定の際、ルータがプロバイダのID/PWを記憶するのか?
あと、最初の機器からのインターネット接続検証で、何回かインターネットに接続できず失敗となったが、繰り返していたらいつの間にか接続できるようになった。少し時間がかかるものなのか?
幾つか疑問点は残ったが、これで家のパソコン・スマホからインターネットに接続できるようになった。
指定したホスト、ポートに udpパケットを送信する perl スクリプト sendUdpData.pl を作成した。テストなどで、パケットキャプチャで取得したデータ(16進ダンプ文字列)を、好きな場所に送りたい場合に使う用途で作成した。
使い方は以下。
送信データ(16進ダンプ文字列)はファイルから与えることもできる。
何も引数を指定しないと、以下を実行する。
「74 65 73 74」は「test」の16進ダンプ文字列である。
sendUdpData.pl
use strict; use warnings; use Socket; use Getopt::Long 'GetOptions'; my $destHost = 'localhost'; my $destPort = 162; my $sendData; my $sendDataFile; GetOptions( 'host=s' => \$destHost, 'port=i' => \$destPort, 'data=s' => \$sendData, 'file=s' => \$sendDataFile ); if (!$sendData) { if ($sendDataFile and (-f $sendDataFile)) { $sendData = getDataFromFile($sendDataFile); } else { $sendData = '74 65 73 74'; # test } } if (length($sendData) == 0) { die("No data to send..."); } $sendData =~ s/\s//g; my $packedSendData = pack("H*", $sendData); socket(my $socket, PF_INET, SOCK_DGRAM, 0) or die "Failed to create socket. $!"; my $addrBin = inet_aton($destHost); my $sockAddr = pack_sockaddr_in($destPort, $addrBin); send($socket, $packedSendData, 0, $sockAddr) or die "Failed to send. $!"; sub getDataFromFile { my $sendDataFile = shift; my $sendData; open(my $fh, $sendDataFile) or die "Failed to open $sendDataFile. $!"; while (my $line = <$fh>) { chomp($line); $sendData .= $line; } return $sendData; }
Javaの各数値型の最大値・最小値で一目で確認できるようにしたかったので、以下のプログラムを作成した。
public class ShowMaxMin { public static void main(String[] args) { System.out.println("Byte Min: " + Byte.MIN_VALUE); System.out.println("Byte Max: " + Byte.MAX_VALUE); System.out.println("Short Min: " + Short.MIN_VALUE); System.out.println("Short Max: " + Short.MAX_VALUE); System.out.println("Integer Min: " + Integer.MIN_VALUE); System.out.println("Integer Max: " + Integer.MAX_VALUE); System.out.println("Long Min: " + Long.MIN_VALUE); System.out.println("Long Max: " + Long.MAX_VALUE); System.out.println("Float Min: " + Float.MIN_VALUE); System.out.println("Float Max: " + Float.MAX_VALUE); System.out.println("Double Min: " + Double.MIN_VALUE); System.out.println("Double Max: " + Double.MAX_VALUE); } }
実行結果は以下の通り。
Byte Min: -128
Byte Max: 127
Short Min: -32768
Short Max: 32767
Integer Min: -2147483648
Integer Max: 2147483647
Long Min: -9223372036854775808
Long Max: 9223372036854775807
Float Min: 1.4E-45
Float Max: 3.4028235E38
Double Min: 4.9E-324
Double Max: 1.7976931348623157E308
あと、JavaにはBigInteger型とBigDecimal型がある。これらについて調べてみたところ、明示的な最大値・最小値は存在せず、どこまでの数値を表現できるかは、その環境のスペックに依存するようだ。この辺りについてはあまり理解できていないので、今後の追加調査項目としておく。