技術メモ

神奈川在住のITエンジニアの備忘録。おもにプログラミングやネットワーク技術について、学んだことを自分の中で整理するためにゆるゆると書いています。ちゃんと検証できていない部分もあるのでご参考程度となりますが、誰かのお役に立てれば幸いです。

2018-05-01から1ヶ月間の記事一覧

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 である。 http://www.atmarkit.co.jp/ait/articles/0706/21/news129_2.html なので、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変数に格納して渡す シングルトンなクラスのオブジェクトに格納して渡す 以下、それぞれの使いどころと注意点について、少し詳しく説明する…

IoTとM2Mの違い

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

VBSの実行方法

VBS

VBSのスクリプトを実行するには WSH (Windows Script Host) を呼び出す必要がある。それには、wscript 経由で呼び出す方法と cscript 経由で呼び出す方法がある。 この2つの使い分けは、ウィンドウを出すなど対話向けの処理なら wscript 経由で、バッチ処理…

VBSから外部コマンドを呼び出す

VBS

VBS内から外部コマンドを呼び出す方法としては、Runメソッドを使う方法とExecメソッドを使う方法がある。それぞれの説明は以下の通り。 Run メソッド Exec メソッド どちらを使うべきかについては、以下のページが分かりやすい。 https://blogs.technet.micr…

MIB取得の終了について

例えばnet-snmpのsnmpwalkコマンドなど、SNMP GetNextRequestを繰り返してMIBを次々取得するアプリケーションは、どのようにしてエージェント側のMIBの終了を知ることができるのか、についてちょっと調べてみた。 これについては rfc に以下の記載がある。 W…

指定したディレクトリ配下のファイル内のタブをスペースに変換するスクリプト

指定したディレクトリ配下のファイル内のタブをスペースに変換するperlスクリプト replaceTabToSpace.pl を作成した。使い方は簡単で「perl replaceTabToSpace.pl "ディレクトリのパス"」で実行できる。例えば、ソースコード内にタブとスペースが混在してい…

VLANにIPを割り振る意味

昨日に引き続き、VLANに関するメモ。 VLANはL2の技術である。VLANを作成することによって、スイッチでブロードキャストドメインを分割することができる。 一方、VLANにはIPアドレスを割り振ることができる。(正確には、L3スイッチの持つ VLANインタフェース…

L3スイッチのVLANインタフェース

L3スイッチのVLANインタフェースについて簡単に説明する。 L3スイッチは、「L2スイッチ+内部ルータ」で構成される。この内部ルータは、L2スイッチが区切ったVLAN間のルーティングを可能にする。 VLAN間通信で内部ルータを経由する際、内部ルータの持つVLAN…

SSL/TLSの暗号スイート

SSL/TLSの設定を行っていると、 TLS_RSA_WITH_DES_CBC_SHA など、暗号スイートを示す文字列に出くわすことがある。 これは、SSL/TLSの暗号技術の組み合わせを表しているのだが、何を意味するのか分かりにくいので、ちょっと調べてみた。 上の暗号スイートを…

L2スイッチにIPアドレスを振る理由

L2スイッチは、L2層の情報(MACアドレス)を見て、フレームを適切な宛先に転送するネットワーク機器である。なので、フレーム転送の際にL3層の情報(IPアドレス)を見ることはなく、L2スイッチ自身にIPアドレスを振る必要はない。 つまり、サーバやルータのよう…

hostsファイルとDNSサーバとの優先順位

ホスト名からIPアドレスへの名前解決を行う際にOSが参照する情報として、hostsファイルとDNSサーバがある。どちらが優先されるのか、つまり、OSが提供するコマンドや API を使って名前解決した時にどちらの情報を優先的に見るようになっているのか、ちょっと…