Akira's Blog

神奈川在住のITエンジニアの雑記です。主にプログラミング(Perl, Java など)やネットワーク技術についての小ネタを、ちょっとずつ書いていきます。

WSFCでHAクラスタを組むのにADは必須ではなくなったようだ。

Windows2016から、WSFC(Windows Server Failover Clustering)でHAクラスタを組むのに、AD(Active Directory)は必須(前提)ではなくなったらしい。 ADドメインはもう不要? ワークグループでクラスター作成が可能に――フェイルオーバークラスターの新機能(その…

ホスト名にアンダースコア (_) は許容されていない。

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 (.). …

JavaのインタフェースとC言語のヘッダファイルの共通点

JavaのインタフェースとC言語のヘッダファイル(*.h)は、以下の点で共通点があると思う。 実装クラスや実装ファイルが外部に公開する、定数、メソッド/関数の情報を記載する。 機能を使う側、つまり取り込む側で インタフェースやヘッダファイルの情報(ファ…

自宅インターネット接続

引っ越して新居でインターネット接続を行った時のメモ。環境は、回線が NTT東日本のフレッツ光(ハイスピード・マンション・タイプ)で、 プロバイダはOCN。 インターネット接続の方式は、調べた限りでは以下の2つがあるようだ。 NTT東日本から提供されたONU(…

udpパケットを送信するスクリプト

指定したホスト、ポートに udpパケットを送信する perl スクリプト sendUdpData.pl を作成した。テストなどで、パケットキャプチャで取得したデータ(16進ダンプ文字列)を、好きな場所に送りたい場合に使う用途で作成した。使い方は以下。 perl sendUdpData.p…

Cisco機器に対するSNMPリクエスト

Cisco機器に対してSNMPリクエストを行うと、機器のCPU使用率が高騰することがあるようだ。 IP簡易ネットワーク管理プロトコル (SNMP) は高いCPU使用率を引き起こす - Cisco CPU使用率が高騰する理由は以下の通り。(上記のページより抜粋) ネットワーク管理ス…

MIB-II 配下の MIB はおおかた実装必須らしい

SNMPエージェントで、interfaces グループや ip グループなど、MIB-II 配下の MIB を実装していないものをたまに見かける。 しかしながら、rfc1213 によると、SNMPエージェントは MIB-II 配下の MIB はおおかた実装必須であるようだ。 https://www.ietf.org/…

Javaの各数値型の最大値・最小値

Javaの各数値型の最大値・最小値で一目で確認できるようにしたかったので、以下のプログラムを作成した。 public class ShowMaxMin { public static void main(String[] args) { System.out.println("Byte Min: " + Byte.MIN_VALUE); System.out.println("By…

SNMP getbulk の nonRepeaters オプション

以前、以下の記事を書いた時に、 akrad.hatenablog.com SNMPのgetbulkで出てくる nonRepeaters が何なのかあまり分かっていなかったので、今回それを調べてみた。ざっくり言うと、nonRepeaters は、getbulkで取得対象とした OID の中で繰り返し取得を行わな…

内部通信をパケットキャプチャする方法

Linuxでは、OS標準の tcpdump コマンドで内部通信のパケットキャプチャを取得することができる。tcpdump コマンドのオプションで「-i lo」を付ければ良い。 ちなみに、tcpdump コマンドで「-w dumpfile.cap」を指定すると、dumpfile.cap に、 wireshark 上で…

JavaでSNMP GetBulk

JavaでSNMP Get Bulk を実行するコードを作ってみた。とりあえずざっと作ってみただけなので、SNMP要求を出すターゲットの情報などはソース中にハードコードしている。 実行すると、localhost上のSNMPエージェントに対して、.1.3.6.1.2.1.1 から数えて20個の…

Active Directoryで出てくる用語 (DN, OU, DC, CN など)

Active Directory の環境構築を行っていると、DN, OU, DC, CN など、何のことかよく分からない用語が出てくる。ここでは、それらについて簡単に纏める。 これらは rfc2253 で定義されている。 https://www.ietf.org/rfc/rfc2253.txt 抜粋すると以下の通り。 …

MessageListenerクラスのonMessageメソッド

JavaのJMS(Java Message Service)の受信側でコールされるMessageListener#onMessage()は、並列して走ることがあるのか調べてみた。 まず、JavaDocを読んでみる。 ・・・the onMessage method is not called with the next message until the session has com…

MIBファイル内の定義における大文字・小文字の使い分け

SNMPで使用されるMIBファイルでは、以下のように大文字・小文字が使い分けられていることが多い。RFCでの定義例はそうなっている。 ・・・ evalEntry OBJECT-TYPE ★オブジェクト定義は先頭が小文字 SYNTAX EvalEntry ★シンタックス定義は先頭が大文字 MAX-AC…

ファイルを開いているプログラムを特定する方法

Windows上で、ファイルを移動したり、ファイル名を変更したい時、何らかのプログラムがそのファイルを掴んでいて、やりたいことができないことがある。通常は、現状で開いているアプリを確認すればどのプログラムが対象のファイルを開いているのか分かるので…

staticな内部クラス

Javaではクラスの中にクラスを定義することができる。これを内部クラスと言う。この内部クラスを定義する際、staticを付けることができる。今日はどういう時に内部クラスにstaticを付けるべきなのか書く。 結論から言ってしまうと、内部クラスにはstaticを付…

ソースコードを解析する時のコツ

仕事柄、大規模なJavaプログラムのソース解析をすることが多い。自分が書いた部分なら少しソースを見れば思い出すが、他人が書いた部分で、かつドキュメントもないとなると、なかなか辛いこともある。そんな時に解析対象の部分のソースを理解するために自分…

tcp/udpポートを確保し続けるスクリプトを少しエンハンスした。

以前、tcp/udpポートを確保し続けるスクリプト holdPort.pl を作成した。 akrad.hatenablog.com これに引数でholdするIPアドレスを指定できる機能を追加した。例えば、「perl holdPort.pl -port 8080 -ip 127.0.0.1」と実行すると、holdPort.pl は 127.0.0.1…

関数の処理結果を関数外に伝える方法

プログラミング一般な話として、主題の件について纏めてみる。関数の処理結果を関数外に伝える方法としては、戻り値で伝える方法、引数で伝える方法、グローバル変数で伝える方法、外部ファイルで伝える方法がある。それぞれについて思うところを書いていく…

Javaにおける処理の失敗の伝え方

Javaのメソッド内の処理の失敗を上位に伝える方法として、以下がある。 例外で伝える 戻り値で伝える C言語出身の自分としては、まず「戻り値で伝える」から入ったが、Javaのような例外処理機構を持った言語では例外を使って使っていった方が良いのではない…

tcp/udpポートを確保し続けるスクリプト

tcp/udpポートを確保し続ける perl スクリプト holdPort.pl を作成した。テスト等でポート・バッティングを起こすために、指定したポートを確保したい時に使うと便利。 使い方は簡単で、例えば「perl holdPort.pl -p 80」で、このスクリプトは停止するまで 8…

16進ダンプ文字列からバイナリ列を作成するスクリプト

以前、ファイルの中身を16進ダンプするperlスクリプトを作成した。 akrad.hatenablog.com上記に対して、今回作成したperlスクリプト makeBinFromHex.pl は、この逆を行うものである。つまり、16進ダンプ文字列からバイナリ文字列を作成する。例えば、入力フ…

Javaの内部の文字コード

Javaの内部の文字コードは UTF-16 である。なので、Javaのプログラムが外部から読み込んだ SJISやUTF-8などの文字列は、JavaのStringオブジェクトになる際に (内部コードである) UTF-16 に変換される。例えば、以下のサンプルプログラムの通り、(外部文字列…

Javaでスレッドを作成する時の注意点

まず、Javaでスレッドを作成する基本的な方法は、以下の2つである。 Threadクラスを継承したクラスのオブジェクトを生成して、そのオブジェクトのstart()メソッドを実行する。 Runnableインタフェースを実装したクラスのオブジェクトを生成し、それを引数と…

AutoMDI/MDI-X

以前ネットワークを構築した時、ネットワーク機器同士をLANケーブルで接続する時はクロスケーブルで、ネットワーク機器と端末機器を接続する時はストレートケーブルで接続していた。 これは、LANポートに以下の2種類があり、 MDI (Medium Dependent Interfac…

Javaのスタックトレースを解析する時のコツ

フレームワークなどを多用した大規模なJavaプログラムにおいて、エラーが起きてログにスタックトレースが出ると、その量が膨大過ぎてどうやって解析すれば良いのか困ることがある。そんな時に自分が心掛けていることを書く。 まず、アプリケーション独自の部…

ファイルの中身を16進ダンプするスクリプトをちょっとエンハンス

以前、ファイルの中身を16進ダンプで出力するperlスクリプト dumpHexStr.pl を紹介した。 akrad.hatenablog.comところが、これではファイル内に改行があった場合にそれが省かれてしまうので、改行も含めて16進ダンプするようにした。 use strict; use warnin…

メソッド間で変数をやり取りする方法

Javaでメソッド間で変数をやり取りする方法について書く。まずは一覧。 引数で渡す メンバ変数に格納して渡す static変数に格納して渡す シングルトンなクラスのオブジェクトに格納して渡す 以下、それぞれの使いどころと注意点について、少し詳しく説明する…

Japan IT Week 春 2018

「Japan IT Week 春 2018」に行ってきた。あまり時間がなかったので、ざっくりとしか回れなかったが、以下に感想を書く。 AIのエリアはかなり盛況だった。理論が難しい分野なので、具体的な例を挙げた分かりやすい説明を心掛けている会社が多かった。社長自…

IoTとM2Mの違い

最近、IoT(Internet of Things) と M2M(Machine to Machine) を良く聞くようになった。この2つの違いがあまり分かっていなかったので、ちょっと調べてみた。 ざっくり言うと、こういうことらしい。 M2M:マシン同士が通信を行い、情報収集やマシンの制御を行…