md5sum

md5チェックサムの使い方

生成方法
md5sum (target_file) > (md5チェックサムファイル)

検証方法
md5sum –check (md5チェックサムファイル)


OKの場合
(target_files):OK

NGの場合
・・・エラー内容・・・
md5sum: WARNING: 1 of 1 listed file could not be read

ネットワークのいろは

通信方法
・ユニキャスト通信
ホストとホストが1対1で通信すること。
・マルチキャスト通信
特定のネットワーク全体に通信すること。
・ブロードキャスト通信
特定のネットワークに依存せず全ての端末と通信すること。DHCPサーバーを見つけるために問い合わせを行うときにも使われる。

その他
・オクテット
1byte=8bitとは限らないが、1オクテット=8bitである。

Apache2 + PHP + PostgreSQLインストール

Apache2 + PHP + PostgreSQLインストールの際のPHPインストールオプションメモ
./configure –with-pgsql=/usr/lib/pgsql –enable-magic-quotes –enable-sockets –enable-memory-limit –enable-calendar –enable-ftp –enable-mbstring –enable-mbstr-enc-trns –enable-mbregex –with-mime-magic –enable-mbstr-enc-trans –with-freetype –enable-gd-native-ttf –with-xml –with-apxs2=/usr/local/apache2/bin/apxs –with-gd –with-jpeg-dir –with-zlib –with-png –with-curl –with-openssls –with-config-file-path=/etc

make
make install

DMLとDDL

DML(Data Manipulation Language)
SELECT, INSERT, UPDATE, DELETEなどレコードの追加や変更、削除に使われるSQL言語

DDL(Data Definition Language)
CREATE, ALTER, DROPなどテーブルの追加や変更、削除に使われるSQL言語

locale変更について

bashシェルにおける環境変数の変更はexportコマンドを利用する。
たとえば、localeを変更する場合には、
export LANG=”ja_JP.eucJP”
とすればよい。
確認は、
export $LANG
とする。確か、cシェルの場合にはsetコマンドで変えられたはずだが。。。ちょっと調べてみたい。

MD5とSHA-1

・MD5 RFC1321
1992年にRon Rivest氏が開発
メッセージダイジェスト:128bit

・SHA(Secure Hash Algrithm)1 RFC3174
メッセージダイジェスト:160bit

MD5, SHA-1のいずれにおいても衝突(ハッシュ値が同じになる平文が存在すること)が確認されている。

いろんなソート

大学のときに勉強していたけれども、実際のところ上級言語においてはソートを実装することはまれである。でも最適なオーダーのアルゴリズムを身につけるうえでは非常に重要だと思うので復習。
・クイックソート(オーダー 平均:nlogn 最悪:n2)
・マージソート(オーダー 最悪:nlogn)
・ヒープソート/2分木ソート(オーダー nlogn)
・バブルソート(オーダー n2
※底が省略されているものは、eが底である。念のため・・・
その他で以下のものがあるようだ。
・バスケットソート
・基数ソート

あの航空機事故はこうして起きた

あの航空機事故はこうして起きた
一見、ITとは関係のない本のようにも思えるが、技術ならびに運用面においては非常に参考になる一冊。
トラブルが発生した場合、多くの日本人はなぜトラブルが発生したのかではなく、誰がトラブルを起こしたのかということに注目する傾向がある。
人間は必ずエラーを起こすものであり、そのエラーが発生しないようにコンピューターシステムによってエラーを未然に防いだり、エラーが発生したとしても、安全な方向に制御するのが本来のシステム設計の考え方である。
しかしながらエラーが発生したときに犯人探しを行うようではそこに改善を行う余地がないことにこの本は警鐘を鳴らしている。

NTPサーバーの奥深さ

NTPサーバーはインターネットの説明どおりに適当に設定すればうまく動くと思っていたが、複数台での構成で行う場合には、マスターのNTPサーバーだけが外部のNTPサーバーを見に行って、その他のサーバーはマスターのNTPサーバーを見に行くよう設定しようとすると少し考える必要がある。

まずマスターサーバー(192.168.0.2)はGPSの
clock.nc.fukuoka-u.ac.jp
ntp.nc.u-tokyo.ac.jp
を見に行くように設定し、スレーブはマスターを見るようにntp.confで設定する。

マスターサーバーの設定状況
/usr/sbin/ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
+clock.nc.fukuok .GPS. 1 u 127 128 377 21.200 -0.295 1.654
*ntp.nc.u-tokyo. .GPS. 1 u 3 128 377 1.651 0.102 0.348

*がついているものがマスター、+はスレーブとみなしている(stが同じ場合jitterが小さいほうを信頼する?)

スレーブサーバーの設定状況

/usr/sbin/ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*192.168.0.2 130.69.251.23 2 u 8 64 177 0.126 0.207 4.202

これを見れば分かるが、stが1つ大きくなっている。stが大きくなればなるほど、NTPサーバーの中係数が多くなって、信頼性が下がるので、NTPクライアントは信頼しないケースがある。

bonding

ディスクの冗長化ならRAID(ソフトウエア or ハードウエア)、電源の冗長化は二重化電源(ハードウエア対応)だが、ネットワークにおける冗長化はIEEE802.3adで定義されているリンクアグリゲーション(bounding)がある。boundingはkernel 2.4.12以降でサポートされている。

設定は簡単。
/etc/modprobe.conf


alias bond0 bonding
を記述して、
/etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0
BOOTPROTO=static
BROADCAST=192.168.0.15
IPADDR=192.168.0.1
NETMASK=255.255.255.240
NETWORK=192.168.0.0
ONBOOT=yes
TYPE=Ethernet
冗長化したいネットワークディバイスの設定を
BOOTPROTO=static
BROADCAST=192.168.0.15
IPADDR=192.168.0.1
NETMASK=255.255.255.240
NETWORK=192.168.0.0


BOOTPROTO=none
#BROADCAST=192.168.0.15
#IPADDR=192.168.0.1
#NETMASK=255.255.255.240
#NETWORK=192.168.0.0
MASTER=bond0
SLAVE=yes
などにすればよい。