ITエンジニアの技術メモ

神奈川在住のITエンジニアの備忘録です。主にプログラミング(Perl, Java など)やネットワーク技術について、自分の中で整理するためにゆるゆると書いています。誰かのご参考になれば幸いです。

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 要求に対する応答が返ってきていないことを意味している。なお…

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

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

Observerパターン

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

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

git

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

perlで文字列から1文字ずつ取得

perl で文字列から1文字ずつ取得して配列に格納するには、以下のように split 関数を使うのが楽。splitString.pl use strict; use warnings; use Encode; my $inputStr = shift; my $decodedInputStr = decode('Shift_JIS', $inputStr); # SJISの文字列から…

内部文字コードを意識する時

各プログラミング言語には、内部文字列の文字コード(以下、内部文字コードと呼ぶ)がある。 外部から読み込んだデータをそのままで扱う場合は内部文字コードを意識することはないが、読み取ったデータを文字列として扱ってゴニョニョする場合は、一旦、内部文…

tasklistコマンドで表示されるメモリ量

Windows上で tasklistコマンドを実行すると、例えば以下のように、プロセスのメモリ量が表示される。 chrome.exe 11060 Console 1 ★22,748 K 一方で、タスクマネージャーでは、 メモリ量に関係する項目として以下を表示することができる。 ワーキング セット…

定期的にメモリ量を取得する。

引数で指定されたPIDを持つプロセスのメモリ量を定期的に出力するbatファイルを作成した。getMem.bat @echo off set pid=%1 :loop set /p=%date% %time% <nul, tasklist /fo csv /fi "pid eq %pid%" /nh timeout 60 > nul goto :loop メモリ量を取得したいプロセスのPIDを引数にして、例えば、 getMem.bat 9928 と実行す</nul,>…

改行しないechoコマンドもどき

Windowsで改行しないechoを行うための方法について書く。 Windowsで、例えば現在時刻を表示するために、 echo %date% %time% と実行すると、時刻の後に改行が表示されるので、時刻とそれに続く内容を一行で表示したい時に困る。 これを解決するには、set /p …

yumコマンドとrpmコマンド

Linux上にパッケージをインストールするには、yumコマンドを使用する方法とrpmコマンドを使用する方法がある。yumコマンドはrpmコマンドの上位コマンドになっており、内部でrpmコマンドを呼んでいる。 また、yumコマンドは、目的のパッケージをインストール…

リバースプロキシ

普通のプロキシとリバースプロキシとの違いについて簡単にまとめる。 一般的に普通のプロキシは、社内からインターネットに出るところに置いて、社員のインターネットへのアクセスを管理したり、アクセス速度向上のためインターネットから取得したコンテンツ…

Linuxへの公開鍵のimport

Linux上にrpmパッケージをインストールする際、そのrpmパッケージに電子署名が付与されている場合は、(署名に使われた秘密鍵に対応する) 公開鍵をLinux上にインストールしておくことが必要となる。 その際の方法として、rpm --import コマンドを使用するのと…

SNMPのOIDのルール

rfc2578 によると、SNMPのOIDには以下の規定がある。 サブID(※)は正数 サブIDの個数は128個まで サブIDの最大値は 2^32-1 (4294967295) 少なくても2個のサブIDを持つ 最初のサブIDは 0 or 1 or 2 (※)サブIDとは、OIDを構成する各数値のこと。 3.5. OBJECT ID…

OIDのBER形式でのエンコード

以前、以下の記事のコードを書いた時、SNMPのOIDの BER(Basic Encoding Rule)形式でのエンコード処理について勉強した。 akrad.hatenablog.com 今回は、その時に勉強した内容を書く。 SNMPのOIDのエンコードで面倒なのは、OIDの数値が128以上の場合である。…

16進のSNMP OIDを通常の文字列の形式に変換する

主題の処理を行うperlスクリプト convertOidHexToStr.pl を作成した。使い方は、例えば、「perl convertOidHexToStr.pl 2b06010401CE0F」 や 「perl convertOidHexToStr.pl "2b 06 01 04 01 CE 0F"」 のように指定すると、結果として、人に優しい形式でOID文…

IEの互換表示設定とx-ua-compatibleはどちらが強いのか?

IEの互換表示設定では、IEがwebページの表示方式をどのバージョンのIEのもので行うか設定することができる。ちなみに、現在webページをどのバージョンのIEの表示形式で表示しているのかは、IEの開発者モード(F12)から確認できる。 x-ua-compatibleは、webサ…

ダイレクトブロードキャスト

今日、ダイレクトブロードキャストなるものを初めて知った。ブロードキャストというと、同一ネットワーク内に一斉送信されるものという認識であったが、このダイレクトブロードキャストは異なるネットワーク内に対して一斉送信されるものである。 あまり使用…

サマータイムで影響を受けるシステム

最近、東京五輪に関連して話題に挙がっているサマータイムの導入。「システムが影響を受ける!」という声が多方面から挙がっているが、システムが影響を受けるケースについて、ネット上の情報をもとに簡単に纏めてみた。 WindowsやLinux等のOSは、内部時間を…

SNMP trap (coldStart) 送信スクリプト

以前作成した以下の perl スクリプトをエンハンスした。 akrad.hatenablog.com具体的には、SNMPv1 のcoldStartトラップも SNMPv2cのcoldStartトラップも送信できるようにし、トラップ送信先やSNMPv1トラップの agent-addrフィールドも指定できるようにした。…

AOSSを使って、プリンタと無線LANルータを接続

自宅で、無線LANルータ(buffalo)経由で PCとプリンタを接続するために、プリンタと無線LANルータを無線で接続することになった。簡単に、構成は以下。 無線LANルータ | +---------(ここは接続済)--------- PC | + ------(接続したのはここ)------ プリンタ P…

SNMPのパケットダンプを解析する時のコツ

先ほど、 SNMP v2c trap (coldStart) 送信スクリプト - Akira's Blog の記事を書くために SNMPトラップのパケットダンプを解析した。この際に SEQUENCE型を示す 0x30 に着目すると、各データの区切り位置が分かって解析しやすかった。 パケットダンプ内に 0x…