ITエンジニアの技術メモ

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

Windows10環境における「コマンドウィンドウをここで開く」

Windows7環境で良く使っていた、 エクスプローラー ⇒ シフト+右クリック ⇒ コマンドウィンドウをここで開く がWindows10ではなくなっているので、ちょっと不便だなあと思って調べたところ、以下の記事を見つけた。 https://www.softantenna.com/wp/tips/win…

JBossのjbm_* テーブル

JavaアプリケーションのアプリケーションサーバとしてJBossを使用している場合、JBossと連携するDBに jbm_* という名前のテーブルができる場合がある。これが何者なのか調べてみた。 この jbm_* テーブルは、JBoss上のアプリケーションが JMS (Java Messagin…

Javascriptのpromiseパターン

先日、JavaScript の promise パターンで書かれたコードに遭遇した。promise パターンについては、以下のページに詳しく書かれている。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Using_promises https://blogs.msdn.microsoft.com/ie_jp…

完全コンストラクタパターン

オブジェクト指向の勉強をしていて、「完全コンストラクタパターン」というものが出てきた。これは、オブジェクト生成時にコンストラクタに必要な情報を全て渡して、後からそのオブジェクトの状態(フィールド変数)を変更しない設計方式。つまり、オブジェク…

xcopyコマンドが実行できない。

先日、Windowsで xcopyコマンドが実行できない環境に遭遇した。具体的には、xcopy コマンドを実行すると、以下が表示される。 'xcopy' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。 このメッ…

JavaのInetAddressクラスのメソッドで名前解決(逆引き)する時は正引きも行われている。

JavaのInetAddressクラスのgetHostName()やgetCanonicalHostName()で、IPアドレスからホスト名への名前解決(逆引き)を実行すると、裏で正引き(ホスト名⇒IPアドレス)も行われるようだ。詳細は以下の通り。InetAddressクラスのソースを確認すると、getHostName…

J2EEのEntity Manager経由でDBから取得したオブジェクト

J2EEのEntity Manager経由でDBから取得したオブジェクトを、そのオブジェクトがEntity Managerの管理下にある状態の時に変更すると、それがDBに反映されるので注意が必要である。 例えば、 User user = entityManager.find(User.class, id); として取得した …

HP-UXサーバ上のネットワーク・インターフェースの情報を確認する

HP-UXサーバ上で、当該サーバが持つネットワーク・インターフェースの情報を表示するには、 netstat -in を実行する。 他の UNIX OS のように、 ifconfig -a を実行しても、ネットワーク・インターフェースの情報は表示されない (というかエラーになる)。 【…

C言語を習い始めた頃に躓いたところ

最近、久々にC言語で書かれたプログラムのソース解析を行う機会があった。(普段はJava や perl がメイン。) 少し懐かしくなったので、主題の件についてちょっと書こうと思う。 static 修飾子の意味が使う場所によって変わる。 関数内で変数に対して使用すれ…

SNMPのメッセージフォーマット

SNMPのメッセージフォーマットについて、分かりやすく説明しているページを幾つか見つけたので、あとで見返すためにここにメモしておく。 SNMP: Simple? Network Management Protocol SNMPとは | IT用語 | 意味 解説 上の方のページは英文だが、SNMPのメッセ…

コミュニティ ストリング インデックスについて

Cisco の機器に対して SNMP で MIB 情報を取得する際の、「コミュニティ ストリング インデックス」について勉強した。 SNMP コミュニティ ストリング インデックス - Cisco 簡単に纏めると、例えば、機器が vlan 100 を持っているとして、機器から SNMP で …

Javaの名前解決のキャッシュ

Javaの名前解決では、以下のようにキャッシュを使っているので、OS(hosts)やDNSで名前解決を変更しても、すぐに反映されるわけではない。 networkaddress.cache.ttl java.securityで指定して、ネーム・サービスからの名前の検索に成功した場合のキャッシング…

perl で外部コマンドの戻り値を取得する。

perl のsystem関数を使って外部コマンドを実行する時、外部コマンドの戻り値を取得するには、ちょっと注意が必要。Perlの組み込み関数 system の翻訳 - perldoc.jp 返り値は、wait が返すプログラムの exit 状態です。 実際の exit 値を得るには 右に 8 ビッ…

icmpパケットのIDとシーケンス番号

icmpパケットには、ID(Identifier) と シーケンス番号(Sequence Number) が含まれている。これらがどのように使用されるのかイマイチ分かっていなかったので、ちょっと調べてみた。いつも通り、大正義 rfc を見に行く。すると、 https://tools.ietf.org/html…

ドメインモデル貧血症について

オブジェクト指向の勉強をしていたら、「ドメインモデル貧血症」という聞き慣れない用語が出てきたので、ちょっと調べてみた。 これは、どういうクラス(モデル)かというと、フィールド変数とその getter や setter くらいしかメソッドを持たないもので、オブ…

SSL/TLS 署名アルゴリズム

先日、SSL/TLS の署名アルゴリズム(ハッシュアルゴリズム)について話が挙がった時、「あれ?署名アルゴリズムって SSL/TLS通信のどこで使用されるんだっけ・・?」となってしまったので、また忘れないようにここに簡単に纏めておく。 署名アルゴリズムは、SH…

perl でハッシュを使って探索を高速化する。

要素数が大量にある配列に対して線形探索を行うと、とても時間がかかることがある。その場合、各要素をハッシュの key に入れておくと、探索の際にかなり高速化できる。以下のコードでは、配列をgrepする場合、配列をforeachで回す場合、(今回取り上げている…

SNMP Report PDU が使われる場面

先日、SNMP report - ITエンジニアの技術メモ にて、「SNMP Report はあまり見たことがない」と書いたが、最近、SNMP Report が使われる場面を見つけたのでメモしておく。 https://www.ietf.org/rfc/rfc2574.txt に以下の記載がある。 4. Discovery The User…

2038年問題への対応

C言語で作成されたアプリの2038年問題への対応について調べてみた。なお、2038年問題については以下を参照。 2038年問題 - Wikipedia 2038年問題で主に問題として挙げられるのは、時刻データを格納する time_t 型が符号付き 32bit なので、その最大値は (2^3…

シェルスクリプトで標準エラー出力を纏める

シェルスクリプトで標準エラー出力を一つのファイルに纏めたい場合、 exec 2> 出力先ファイル とシェルスクリプト内に記載する。こうすると、これ以降の標準エラー出力が「出力先ファイル」に吐かれる。これをシェルスクリプトの冒頭付近に書いておけば、シ…

プロフィールムービーの作成方法

フリーソフトなどを使い、結婚式で使用するプロフィールムービーをほぼ無料で作成した。その方法について書く。 ちなみに、持っているPCはWindows10。作成したプロフィールムービーは 家庭用のDVDプレーヤーで再生される前提。 パワーポイントで内容を作成。…

Javaのvolatile変数

Javaの「volatile」は、「synchronized の軽量版」という認識しか持っておらず、あまり理解できていない気がしたので、ちょっと調べてみた。マルチスレッド処理において、フィールド変数に volatile を付けると、各スレッドはその変数を参照する際、スレッド…

perlで現在時刻を (秒以下の精度で) 取得する。

perl には、現在時刻を取得する関数として localtime 関数がある。ただし、この関数では秒以下の精度で時刻を取得できない。そうしたい場合は、Time::HiRes モジュールの gettimeofday 関数を取得する。gettimeofday関数を使ったサンプルを以下に示す。 use …

SNMP report

先日、初めて SNMP report に遭遇したので、少し調べた時のメモ。 SNMP report は主に SNMPv3 で使用される。SNMPエージェントが、SNMP マネージャからの SNMP リクエストを受け取り、リクエスト処理中に問題が発生した場合などに、SNMP マネージャに SNMP r…

JBossのHornetqのPagingファイル

JBossは内部のメッセージキューとしてhornetqを持っている。これを使うと、JBoss上のアプリケーションは非同期通信が実現できる。 このhornetqは、基本的にはメモリ上にキューの情報を持つが、メモリが足りなくなってきたら、ディスク (Pagingディレクトリ) …

ライブファイルシステム形式とマスタ形式

WindowsマシンでデータをCDやDVD等のディスクに書き込む場合、その際の形式を「ライブファイルシステム形式(UDF形式)」と「マスタ形式(ISO形式)」から選択する。 ライブファイルシステム形式では、書き込んだデータは後から編集可能である。パソコンからCDや…

pingで「宛先ホストに到達できません。」が出る場合

存在しない IP アドレスに対して ping コマンドを実行すると、「宛先ホストに到達できません。」と出ることがある。これは、ping コマンドが icmp パケットを送信する前段階の arp 要求に対する応答が返ってきていないことを意味している。 また、存在する I…

bonding インターフェースに対するtcpdump

Linuxには、複数の物理インターフェースを論理的に一つと見なす、bondingという技術がある。 この bonding インターフェースに対して tcpdump コマンドでパケットキャプチャを取得する場合、bonding インターフェースを構成する物理インターフェース(ethX)を…

Observerパターン

オブジェクト指向のデザインパターンの一つである、Observerパターンについて簡単にまとめる。 登場するのはObserver(通知を受ける側)とSubject(通知する側)である。このパターンでは、まずSubjectにObserverを登録する。次に、対象のイベントが発生したら、…

gitでコミットする前にステージする理由

git

gitでは、リポジトリにコミットする前に、作業ディレクトリからステージング領域にファイルを上げる(addする)。つまり、以下のようなイメージ。 作業ディレクトリ ---add---> ステージング領域 ---commit---> リポジトリ コミットすると、gitはステージング…