(2005-07の一覧)
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2005-07-31 Sun (他の年の同じ日: 2006)

今日の戦利品
2005-07-31-5 / カテゴリ: [diary][ぬいぐるみ] / [permlink]

コリラックマ

後に実家帰省時の妹への土産となる…

おうちサーバ、その他のインストールメモ
2005-07-31-4 / カテゴリ: [linux][debian] / [permlink]

courier-imap (私的imapサーバ)
fetchmail (ISP他のメール取り込み)
apache-ssl (戯術者の日記更新ラッパ)
smbfs (LinkStationのmount)
rcconf (atdとlpdを止めた)
あたりをインストール。
emacs なんかが最初から入ってたのは意外。
反面、modconf が入ってないのは不便だ^^;

HDD 救出作戦
2005-07-31-3 / カテゴリ: [linux][debian] / [permlink]

本体はサーバとして仮稼動させたので、旧ディスクは別マシン(Fedora Core1)につないでサルベージすることに。
 hda: hda1 hda2 hda3
 hdb: hdb1 hdb2 hdb3 hdb4 < hdb5 >
 hdc:end_request: I/O error, dev 16:00 (hdc), sector 0
end_request: I/O error, dev 16:00 (hdc), sector 2
end_request: I/O error, dev 16:00 (hdc), sector 4
end_request: I/O error, dev 16:00 (hdc), sector 6
:
 unable to read partition table
ぜんぜんダメじゃん。

# fdisk -l /dev/hdc
まったく反応なし…T"T

# e2fsck -c -f /dev/hdc1
e2fsck 1.34 (25-Jul-2003)
e2fsck: No such device or address while trying to open /dev/hdc1
Possibly non-existent or swap device?
orz

あ、そーいや、元々DVDドライブがつながってた箇所だから、その辺の残骸かな? ということで、grub の boot オプションを見ると、
hdc=idc-scsi
ってある。
とりあえず、無効にして reboot する。

と、よかった。見えた。
# fdisk -l /dev/hdc
:
:
   Device Boot    Start       End    Blocks   Id  System
/dev/hdc1   *         1      9840  79039768+  83  Linux
/dev/hdc2          9841      9964    996030   82  Linux swap
んで、/etc だけはすでにコピってたので、ほかのめぼしいもの(~ 以下とか)をコピーする。
つか、奇跡的(?)に、「IOエラーが出て読み出せない特定の4ファイル」が全部読めたので、ソッコーで救出しておく。よかったー

bind9 インストール
2005-07-31-2 / カテゴリ: [linux][bind][debian] / [permlink]

メインコンテンツで(略)
# aptitude install bind9
めんどいので、とりあえずゾーンの設定は省略。
/etc/bind/named.conf.options に
forwarders {
  dion の dns サーバのアドレス;
};
allow-query {
  127.0.0.1;
  192.168.1.0/24;
}
allow-transfer {
  127.0.0.1;
  192.168.1.0/24;
};
を追加。
こんだけで、一応のおうちLANから外の名前解決を代行。

dhcpd インストール
2005-07-31-1 / カテゴリ: [linux][debian] / [permlink]

メインコンテンツでメモってなかったので、こちらで。
# aptitude install dhcpd
設定は前のやつを流用。

# /etc/init.d/dhcp start
Starting DHCP server: dhcpd failed to start - check syslog for diagnostics.
エラー・・・
で、syslog 見ると
dhcpd: No subnet declaration for eth0 (192.168.0.11).
dhcpd: Please write a subnet declaration in your dhcpd.conf file for the
dhcpd: network segment to which interface eth0 is attached.
dhcpd: exiting.
だってさ。

dhcp サーバをあげたいのは eth0 じゃなくて eth1 (192.168.1.0/24) の方なんだけど… man dhcpd.conf みても、インタフェース関連の設定わからず。
で、/etc/init.d/dhcp を見ると
# Defaults
INTERFACES="eth0"
なんてのがあるんで、eth1 に変更…したが、エラー変わらず。

しょうがないので、
subnet 192.168.0.0 netmask 255.255.255.0 {
}
を dhcpd.conf に追加。一応起動した…^^;
Referrer (Inside): [2006-07-02-5]
2005-07-29 Fri (他の年の同じ日: 2004)

packageのサブルーチンを呼び出すときの引数
2005-07-29-3 / カテゴリ: [programming][perl] / [permlink]

Pkg::method($arg1, $arg2);
とすれば、sub method での $_[0] は $arg1, $_[1] は $arg2

Pkg->methoc($arg1, $arg2);
とすれば、sub method での $_[0] は "Pkg", $_[1] は $arg1, $_[2] は $arg2 になる。

OOP 形式のコードじゃない場合は、前者で実行するか EXPORT しておくのが無難

半角カタカナのコード
2005-07-29-2 / カテゴリ: [unix] / [permlink]

sjis ... 0xA6 - 0xDF (ヲァィゥェォャュョッ‐アイ…ワン゛゜)
euc ... sjis のコードの前に 0x8E

euc の半角カタカナは、sjisの2倍のサイズってことか。
つか、なんで「ヲ」は最初に来てんだろ??

猫でもわかるWindowsプログラミング
2005-07-29-1 / カテゴリ: [programming][] / [permlink]

買った。会社がヒマなんで、これでしばらく遊んでみよう。
2005-07-26 Tue (他の年の同じ日: 2006 2007)

knoppixでブートし、fsck 実行
2005-07-26-1 / カテゴリ: [linux][knoppix][debian] / [permlink]

本当は、LILO の再インストールをしようと思ったが、結果的にディスクチェック(しかも失敗)しただけなので、タイトル変更 :p

GUIは必要ないので、コンソールモード(って言い方で良いの?)でブート
boot: knoppix 2

というか、ついでなので、ファイルチェックもしとく
# e2fsck -c -f /dev/hda1

というか、
hda: read_intr: status=0x59 { DriveReady SeekComplete DataRequest Error }
hda: read_intr: error=0x40 { UncorrectableError }, LBAsect=30893267, sector=30893204
end_request: I/O error, dev 03:01 (hda), sector 30893204
といったメッセージ(30893204のとこは色々)が大量に出てくる…。ググった感じでは、ディスクが逝ってるっぽいかも(T"T)
/dev/hdb が、/dev/hda とまったく同じ型のディスク乗せてるから、とりあえずそっちにインストールしなおそうかな… (購入時期は違うぞ)

めっちゃ時間かかる…(80GB 5400rpm のディスクで、1時間で約1/4)
数時間の後に、よーやく "Pass 1: Checking inodes, blocks, and sizes" が終了??
んで
Duplicate blocks found... invoking duplicate block passes.
Pass 1B: Rescan for duplicate/bad blocks
Duplicate/bad block(s) in inode 835679: ... ... ...
:
Pass 1C: Scan directories for inodes with dup blocks.
Pass 1D: Reconciling duplicate blocks
(There are 3 inodes containing duplicate/bad blocks.)

File /home/zaki/xxx/xxx/xxx (inode #835679, mod time ......)
  has 7 duplicate block(s), shared with 1 file(s):
        <The bad blocks inode> (inode #1, mod time ......)
Clone duplicate/bad blocks<y>?

でもって
Error reading block 2243191 (Attempt to read block from filesystem resulted in short read). Ignore error<y>?

Force rewrite<y>?
よくわからん。もう、全部 "y" で T"T
とにかく..................., 19回このやりとりがでた。


Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong for group #0 (7265, counted=7170).
Fix<y>?
ここでまた、"y" を....... 7回入力 orz

で、よーやく
/dev/hda1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/hda1: 197732/9895936 files (1.1% non-contiguous), 6628454/19759942 blocks
で終了。(多分)
リターンコードは 1 (echo $?) だった
       fsck の返り値は、以下の状態を表す数の和となる。
            0 - エラーなし
            1 - ファイルシステムのエラーが修正された
            2 - システムをリブートする必要がある
            4 - ファイルシステムのエラーが修正されないまま
                   残っている
            8 - 操作エラー
            16 - 利用法・文法のエラー
            32 - fsck がユーザ要求によってキャンセルされた
            128 - 共有ライブラリのエラー
(man fsck(8) より)
とりあえず、大丈夫かなぁ… と思い、/dev/hda1 を mount し、I/Oエラーの出るファイルの md5sum を取得しようとすると… I/Oエラーでるし orz

やっぱディスク交換だな。
すでに私的imapサーバonlyなマシンだし、週末でいいや…
2005-07-25 Mon (他の年の同じ日: 2006 2007 2011)

パッケージ情報の取得
2005-07-25-3 / カテゴリ: [unix][Solaris][command] / [permlink]

% pkginfo
これで、パッケージ一覧が表示される。
(バージョン情報等を含む)詳しい情報は
% pkginfo -l

特定パッケージについては
% pkginfo | grep -i ssh
application SMCossh        openssh
% pkginfo -l SMCossh
   PKGINST:  SMCossh
      NAME:  openssh
  CATEGORY:  application
      ARCH:  sparc
   VERSION:  3.7.1p2
   BASEDIR:  /usr/local
:
:
こんな感じで。

ブート時にfsckするよう手動設定
2005-07-25-2 / カテゴリ: [linux][debian] / [permlink]

通常、数度のマウントを行うと、自動で fsck が走るように設定されている。
設定は
# tune2fs -l /dev/hda1
:
:
Mount count:              1
Maximum mount count:      27
:
の、Maximum mount count の部分。で Mount count がこの数値になると、fsck がかかる。

この Mount count を手動で変更するには
# tune2fs -C 27 /dev/hda1
これで、Mount count が 27 になり、reboot してやれば fsck が動作する。

別パーティションでブートしたりできず、Knoppix なんかが無い場合にルートパーティションをチェックする場合はこれで…

ブートせず…
2005-07-25-1 / カテゴリ: [linux][debian][diary] / [permlink]

I/Oエラーがちょこちょこ出るようになったので fsck をしようとリブートしたら、ブートせず…。LILO が LI で停止する。んなときに限って Knoppix もなし。会社に置きっぱなしかな。
にしても、ネットに繋がらないと、PC の使いどころがない… ^^;;; ウォークマン充電するくらいかな?
sarge に upgrade したときに、lilo も更新した…ハズなんだけどなぁ。

友達んちで酒飲んでカンフーハッスル見る。
2005-07-23 Sat (他の年の同じ日: 2004 2006)

fetchmail と ssh ポートフォワードの併用(さらにapop)
2005-07-23-2 / カテゴリ: [linux][command][ssh][POP3][メール] / [permlink]

.fetchmailrcに
set postmaster zaki
set no bouncemail
set logfile $HOME/log/fetchmail.log

defaults
  flush
  fetchall
  no mimedecode
  no rewrite
  smtphost localhost

poll pop.example.org
  via localhost port 10110
  proto apop
  username 'username'
  preconnect "ssh -f -L 10110:pop.example.org:110 -i ~/.ssh/.id_rsa_nonpass zaki@pop.example.org sleep 15"
  password 'pop-passwd'

pop.example.org に ssh セッションを張って、ローカルへの 10110 アクセスを pop.example.org の 110 へフォワード。でもって、ローカルの 10110 へ apop で pop3 アクセス。sleep 15 は、retr が完了しきれる時間を考慮すること。

.id_rsa_nonpass はパスフレーズなしの ssh 秘密鍵。管理はしっかり!

ssh ポートフォワード
2005-07-23-1 / カテゴリ: [linux][command][ssh] / [permlink]

いつもTTSSHやputtyのポートフォワードばかり使って、/usr/bin/ssh でポートフォワードしたことなかったなぁ。
ssh -L 10025:remote.example.org:25 user@example.org
これで、ローカルマシンの10025にアクセスすれば、example.org から見た remote.example.org のポート 25 にアクセスできる。

ちなみに、上の ssh プロセス自体は、example.org への通常の ssh アクセスとさほど変わらず。
2005-07-19 Tue (他の年の同じ日: 2004)

fetchmail 実行時に、Received ヘッダを追記しない
2005-07-19-1 / カテゴリ: [linux][command][メール] / [permlink]

通常、fetchmail でメールを取り込むと、
Received: from mail.example.org [192.168.0.1]
        by localhost with POP3 (fetchmail-6.2.5)
        for zaki@localhost (single-drop); Fri, 15 Jul 2005 13:30:04 +0900 (JST)
みたいな Received ヘッダが追記される。

このとき、
set invisible
を .fetchmailrc に設定しておけば、このヘッダが追記されなくなる。
コマンドラインオプションは --invisible かな。

       --invisible オプション (キーワード: set invisible) は fetchmail を見 え
       なくしようとします。通常、fetchmail は他の MTA と同じように振舞います。
       つまり、送信の経路が記述されている Received ヘッダをメッセージ全てに 書
       き 込 み、転送先の MTA に、fetchmail そのものが実行されているマシンから
       メールが来たことを知らせます。 invisible オプションが有効である場合は、
       Received ヘッダは付けられず、fetchmail は転送先の MTA をだまして、メー
       ルがメールサーバのホストから直接届いたと思わせようとします。
man fetchmail より
2005-07-18 Mon (他の年の同じ日: 2007)

靴ゲット
2005-07-18-4 / カテゴリ: [diary] / [permlink]

いつもは横浜だけど、珍しく原宿・渋谷に行ってきた。近頃のハヤリって、先が尖った靴なのかな…。私としては、先は丸い方が好きなんだケド :(
クツ
というか、久々の快晴で、デパートでも地下街でもない屋外をずっとウロウロしてたから、スッゲーー暑かったよ…
で、靴だけの予定だったけど、結局横浜に戻ってフラフラ。更に川崎に戻ってフラフラ。マルイでまたシャツ購入… ^^;;

んで、日が暮れて(?)友達と川崎の居酒屋で飲み食い。店先のポスターの「例外の多い料理店」が妙に気になったので :)
例外処理は? 豆腐
料理は結構おいしかった。店もオシャレで good. 「はちみつチーズ豆腐 バケット添え」がお気に入り。
Referrer (Inside): [2006-11-05-1] [2005-12-10-1]

Basic認証/Digest認証の対応状況
2005-07-18-3 / カテゴリ: [HTTP][携帯] / [permlink]

Vodafone
ボーダフォンライブ!ウェブサービスで利用できるHTTPプロトコルについての技術資料 HTTP編 1.4.0 2005-04-01 より、、、って、無断引用禁止って書いてあるんでかいつまんで…
パケット端末以上は、Basic認証/Digest認証 OK (一部の3G端末を除く…らしい)

i-mode
作ろうiモードコンテンツ/Basic認証
F501i,N501i,D501i ... 同じBASIC認証の領域内でもページを移動するたびにID、パスワードの確認を行う。
その他のiモード端末 ... 同じBASIC認証の領域内であれば一度ID,パスワードの確認をすればiモードを終了するまでは確認なしで移動可能。
いまどきの端末なら対応ということかね。

au はサイトに情報が見つからない…

にしても、各社とも CHTML,HTML,XHTML,HDML の情報は割とちゃんと載ってる(と思う)けど、喋れる HTTP については、あんまり情報ないな…

Basic 認証の実装
2005-07-18-2 / カテゴリ: [HTTP] / [permlink]

メールの認証系を調べたついでに…^^;
HTTP 認証: 基本アクセス認証及びダイジェストアクセス認証(RFC2617 日本語訳)

ユーザ名が zaki, パスワードが passwd だとすると、"zaki:passwd" を base64 エンコードしたものが認証用の…えーと、ダイジェストとは言えないな。認証用の鍵とでもしておくか。
で、サーバに送信するリクエストとして
Authorization: Basic emFraTpwYXNzd2Q=
を送信する。

emFraTpwYXNzd2Q= は
hmiyazaki@MOZZARELLA:~$ printf 'zaki:passwd' | openssl enc -e -base64
emFraTpwYXNzd2Q=
あたりで。
(nkf, 入れてなかった…)

ちなみに、Basic 認証を要求するサーバ・ディレクトリに認証なしでアクセスした際のサーバのレスポンスは
HTTP/1.x 401 Authorization Required
:
:
WWW-Authenticate: Basic realm="InputPassword"
って感じ。
realm は、(Apacheなら).htaccess に設定してある AuthName ディレクティブの文字列。

Digest 認証は、なにやらややこしそうなので、じっくりやるか…
Referrer (Inside): [2005-08-09-2]

右クリックメニューでBATファイルの新規作成
2005-07-18-1 / カテゴリ: [win] / [permlink]

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.bat\ShellNew]
"NullFile"=""
という、なんとか.reg ファイルを作って結合する。
WinXP(pro)では動く。他はわからん…

まぁ、単に「新規MS-DOS バッチ ファイル.bat」という空ファイルを作るだけだから、そんなに大したものではないけど。
2005-07-17 Sun (他の年の同じ日: 2007)

APOP の実装
2005-07-17-5 / カテゴリ: [メール][POP3] / [permlink]

サーバの応答
hmiyazaki@MOZZARELLA:~$ telnet cheddar 110
Trying 192.168.1.1...
Connected to cheddar.
Escape character is '^]'.
+OK Qpopper (version 4.0.5) at cheddar starting.  <23361.1121585637@cheddar>
に対して、<23361.1121585637@cheddar> がチャレンジ。

で、ユーザ名が zaki, パスワードが passwd だとすると、必要なダイジェストは
<23361.1121585637@cheddar>passwd
の MD5 ハッシュ値となる。
この場合は
hmiyazaki@MOZZARELLA:~$ printf '<23361.1121585637@cheddar>passwd' | md5sum
98296f29bfa38c2a22cf886222956b6f *-
みたいな感じで。

んで、サーバへのリクエストは
APOP zaki 98296f29bfa38c2a22cf886222956b6f
で認証する。

Post Office Protocol - Version 3(RFC1939 日本語訳)
APOP命令を実装するPOP3サーバーは、その挨拶にタイムスタンプを含む。タイムスタンプの文法は[RFC822]の'msg-id'に相当し、 POP3サーバーが挨拶を発行する度に異ならなければならない(MUST)。例えば、POP3サーバーのインスタンス毎に別々のUNIXプロセスが使用されるUNIX実装において、タイムスタンプの文法は以下のようなもので良い。

    <process-ID.clock@hostname>

ここで'process-ID'はプロセスのPIDの10進値であり、clockはシステムクロックの10進値、hostnameはPOP3サーバーを実行中のホストに対応するFQDN(fully-qualified domain-name)である。

POP3クライアントはこのタイムスタンプに注目し、APOP命令を発行する。パラメータ'name'は、USER命令の'name'パラメータと同じ意味を持つ。パラメータ'digest'は、タイムスタンプ(鍵括弧を含む)の直後に共有されている秘密を付加した文字列に、MD5アルゴリズム [RFC1321]を適用して計算される。この共有されている秘密は、POP3クライアントとサーバーのみが知っている文字列である。その秘密の情報は、誰でもその名前のユーザーへのなりすましを許してしまう事になる為、認証されない公開を防ぐように十分な注意が必要である。'digest'パラメータ自身は、小文字のASCII文字を使った16進形式で送信される16オクテットの値である。

SMTP-AUTH の実装
2005-07-17-4 / カテゴリ: [メール][SMTP] / [permlink]

メモ程度で実装じゃないけど^^;
CRAM-MD5 認証については、ぺるりめもダイジェスト2 cram-md5認証 (module)Digest-HMAC_MD5参照。

PLAIN 認証は
AUTH PLAIN base64-encoded-username-and-passwd
と、AUTH コマンドの引数に、"PLAIN" と base64 で符号化したユーザ名とパスワードを与える。
符号化の法則は
username\0username\0password
まぁ、こんな感じで。\0 は 0x00 のヌル文字。
% printf 'username\0username\0password' | mmencode

LOGIN 認証はもっと簡単に(<<はリクエスト、>>はレスポンス)
<<AUTH LOGIN
>>334 VXNlcm5hbWU6
<<VXNlcm5hbWU6
>>334 UGFzc3dvcmQ6
<<UGFzc3dvcmQ6
と、POP3 と似たような感じで、ユーザ名とパスワードを単に base64 エンコードしたデータを渡す。
ちなみに、"VXNlcm5hbWU6" は "Username: " を、"UGFzc3dvcmQ6" は "Password: " をエンコードしているだけ。
Referrer (Inside): [2006-02-26-1]

HMAC-MD5 ってナニ?
2005-07-17-3 / カテゴリ: [暗号] / [permlink]

ぺるりめもダイジェスト2 cram-md5認証 (module)Digest-HMAC_MD5であまり良くわからず書いていたが、ちょっと確認。
HMAC メッセージ認証のための鍵付ハッシング(RFC2104 日本語訳) かな。

とりあえず…
以下のように 2 つの異なる固定文字列 ipad と opad を定義する (その 'i' と 'o' は、inner と outer を連想させるように付けてある):

ipad = バイト値 0x36 を 64 回繰り返した文字列
opad = バイト値 0x5C を 64 回繰り返した文字列
は、固定で用意ぽいな。ちなみに 0x36 は "6" で、0x5C は "\" だ。

でもって、
データ `text' に対して HMAC を計算するためには、以下のようにする。

H(K XOR opad, H(K XOR ipad, text))

すなわち、

   1. B バイトの文字列を作るように K の終わりまでゼロを追加する
   2. (例えば、K が 20 バイトの長さで B=64 であるならば、K に 44 個のゼロのバイト値 0x00 が追加される) ステップ (1) で計算された B バイトの文字列と ipad との XOR(ビット毎の排他的論理和)を計算する。
   3. ステップ (2) の結果生じた B バイトの文字列に、データ `text' のストリームを追加する。
   4. ステップ (3) で生成されたストリームに H を適用する。
   5. ステップ (1) で計算された B バイトの文字列と opad との XOR(ビット毎の排他的論理和)を計算する。
   6. ステップ (5) の結果生じた B バイトの文字列に、ステップ (4) の H の結果を追加する。
   7. ステップ (6) で生成されたストリームに H を適用し、その結果を出力する。

自分の言葉で極簡単にまとめると、
1. パスと 0x36 の XOR にデータをくっつけたものの MD5 ハッシュを取得。
2. パスと 0x5C の XOR に↑をくっつけたものの MD5 ハッシュを取得。
3. ↑が結果
ということか。な?

Vodafone のメールがスカイメールにならない条件
2005-07-17-2 / カテゴリ: [SMTP][メール][携帯] / [permlink]

本文文字数が192文字以内以外に、各ヘッダの文字数にも依存するみたい。件名だけはある程度の長さ以上(忘れた)だとスーパーメールになるのは知ってたけど。

http://developers.vodafone.jp/dp/tech_svc/mail/

Vodafone のメールの添付ファイル名の取得方法
2005-07-17-1 / カテゴリ: [SMTP][メール][携帯] / [permlink]

http://developers.vodafone.jp/dp/faq/faq.php#20_11
Q11: パソコンから添付ファイル付きのEメールをボーダフォン携帯電話に送信した場合、ボーダフォン携帯電話側で通知できない添付ファイルがあるのですが?
A11: ボーダフォンの仕様では、「Content-Typeのnameパラメータ」で添付ファイルを判断しています。「Content-Dispositionのnameパラメータ」では添付ファイルを判断していませんので、ご注意下さい。
あ、そうなんだ…。
ところで、Content-Disposition が持つファイル名のパラメタ名は filename だよな^^;
2005-07-14 Thu (他の年の同じ日: 2004 2007)

find で否定条件
2005-07-14-3 / カテゴリ: [unix][linux][command] / [permlink]

! をつける
$ find . ! -name "foobar"
foobar 以外を検索

単純な条件付のファイルリスト取得は grep は使わず find のオプションに指定せよ
2005-07-14-2 / カテゴリ: [unix][Solaris][command] / [permlink]

某所にて、こんなコマンドを見た。
$ find . -mtime +1 -print |grep -v .gz|grep -v "lost+found"

Solaris で試したところ、
$ find . -mtime +1 ! -name "*.gz" ! -name "lost+found" -print
の方が、3倍ほど高速だった。

pts/8:miyazaki@nwmail% time zsh -c 'repeat 100 /usr/bin/find . -mtime +1 -print
| grep -v "\.gz" | grep -v "lost+found"' > /dev/null
zsh -c  > /dev/null  1.11s user 3.15s system 94% cpu 4.522 total

pts/8:miyazaki@nwmail% time zsh -c 'repeat 100 /usr/bin/find . -mtime +1 ! -name
 "*.gz" ! -name "lost+found" -print' > /dev/null
zsh -c  > /dev/null  0.40s user 1.25s system 95% cpu 1.736 total

(ファイル数)
pts/8:miyazaki@nwmail% /usr/bin/find . -mtime +1 -print | grep -v "\.gz" | grep
-v "lost+found" W -l
     34
pts/8:miyazaki@nwmail% /usr/bin/find . -mtime +1 ! -name "*.gz" ! -name "lost+fo
und" -print W -l
     34
pts/8:miyazaki@nwmail% find . W -l
     41

てーか、grep -v .gz | grep -v "lost+found" って、gzip で圧縮したファイルと、lost+found ディレクトリを除きたいんだろうけど、要件を満たしすぎているぞ>担当者
Referrer (Inside): [2006-02-23-2]

find の and/or オプション
2005-07-14-1 / カテゴリ: [unix][Solaris][command] / [permlink]

Solaris の /usr/bin/find は、GNU findutil の -and/-or はない。
かわりに、-a/-o があるので、こっちを使う。
GNU find も、-and/-or の代わりに -a/-o が使える。こっちで覚えた方がいいかも。

ついでに、-and は省略しても同じ条件になる。
って、マニュアルにかいてあるし^^;;;
       expr1 expr2
              And (implied); expr1 が偽の場合は expr2 は評価されない。

       expr1 -a expr2
              expr1 expr2 と同じ。

       expr1 -and expr2
              expr1 expr2 と同じ。

関連: [2005-03-02-1]
2005-07-13 Wed (他の年の同じ日: 2006 2011)

暗号化フォルダのドライバはインストールが失敗する
2005-07-13-2 / カテゴリ: [win] / [permlink]

とあるデバイスのドライバをインストールしたところ
このハードウェアのデバイス ドライバを読み込むことができません。ドライ
バが壊れているか、ドライバがない可能性があります。 (コード 39)
と、何度もなり、どうしてもインストールできない。

ふと気づくと、原因は、ダウンロードしたドライバをXP標準機能のフォルダ暗号化されたフォルダ以下においていたから…

全ワークシートを選択
2005-07-13-1 / カテゴリ: [win][office][excel] / [permlink]

ウインドウ下部の、どれか適当なワークシートを右クリックし、[すべてのシートを選択(S)]を選ぶ。って、基本操作じゃないか…

キーボードonlyなら、Ctrl+Shift+PgDn で選択しながらワークシートを変更できるので、1シート目から Ctrl+Shift+PgDn を押しっぱなしにしておけば、全部選択できる。

[2005-07-12-2]
2005-07-12 Tue (他の年の同じ日: 2011)

印刷時にヘッダ的にセルを常に表示させる
2005-07-12-4 / カテゴリ: [win][office][excel] / [permlink]

10:07:51 zaki: 備忘録
10:08:04 zaki: エクセルで、印刷すると複数ページにまたがってしまうとき
10:08:19 zaki: ヘッダ的に特定セルを常に表示させるばあいは
10:08:32 zaki: [ファイル]-[ページ設定]にて
10:09:06 zaki: [シート]タブの[行(列)のタイトル]で、常に表示させたいセルの範囲を指定する
2003/12/22 のログ(何の?)より…
まだ ChangeLog メモ使ってなかったのね。

しかしこれは、全ワークシート選択→印刷設定では、設定できない…

セルにワークシート名を表示させる
2005-07-12-3 / カテゴリ: [win][office][excel] / [permlink]

http://www.relief.jp/itnote/archives/001079.php
ワークシート名を表示させたいセルに、
「=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))」
と入力し[Enter]キーを押す

呪文だ…すげー

印刷設定を全シートまとめて行う
2005-07-12-2 / カテゴリ: [win][office][excel] / [permlink]

予め、全シートを選択(Ctrl押しながらクリック)して、ファイル(F)->ページ設定(U)で設定する。

って、他に方法ないのかな??
Referrer (Inside): [2005-07-13-1]

wget で digest 認証
2005-07-12-1 / カテゴリ: [linux][command] / [permlink]

[2005-07-11-2]と同じ書式で普通にできるっぽい。wget 側で自動判別するのかな?
昨日できなかった理由がわからないけど、環境依存かもしれない。
wget ... GNU Wget 1.9.1
httpd ... Apache/1.3.3 (Debian GNU/Linux)

モジュール(mod_digest)のバージョンはどうやって見るのかな?
2005-07-11 Mon (他の年の同じ日: 2004 2006)

扇子
2005-07-11-3 / カテゴリ: [diary] / [permlink]

土曜[2005-07-09]に渋谷に行った時、LOFT に扇子コーナーがあった。いろいろ文句が書いてあり、面白かったけど、迷ったので結局買わずじまいだった。
が、今日が異様に厚かったので、仕事帰りに寄ってみた。って、自宅の方向ぜんぜん違うんだけど。

天上天下唯我独尊扇子

色白腹黒と迷ったけど、、、
Referrer (Inside): [2006-08-06-1]

wget で basic 認証
2005-07-11-2 / カテゴリ: [linux][command] / [permlink]

$ wget --http-user=username --http-passwd=password http://www.example.org/
ps で見ると引数からパスがバレルので、共用サーバでの使用は控えるべし。

wget の Changelog 見る限り、digest認証にも対応してそうなんだけど、うまくいかない…
Referrer (Inside): [2005-07-12-1]

/以外のデリミタで置換
2005-07-11-1 / カテゴリ: [unix][linux][正規表現][vi] / [permlink]

:%s#/export/home/#/home/#g
フツーにできますな。

Solaris8 の /bin/vi でもできた。
2005-07-09 Sat (他の年の同じ日: 2004)

渋谷
2005-07-09-1 / カテゴリ: [diary] / [permlink]

に久々にでかけた。
スタバで休憩。
交差点人多すぎ。
スクランブル交差点
Referrer (Inside): [2005-07-11-3]
2005-07-08 Fri (他の年の同じ日: 2004 2007)

digest認証 補足
2005-07-08-3 / カテゴリ: [linux][debian][Apache] / [permlink]

[2005-05-29-2]の補足

debian の Apache だと、標準ではモジュールが生きてないので Digest 認証できない。
以下追加
LoadModule digest_module /usr/lib/apache/1.3/mod_digest.so

でもって、htdigest コマンドの引数に指定する realm の文字列は、.htaccess に記述する AuthName と一致させること。
Referrer (Inside): [2005-08-09-2]

ascii文字の正規表現
2005-07-08-2 / カテゴリ: [programming][perl][command][正規表現] / [permlink]

m/[ -~]/
0x20(スペース)から0x7e(チルダ)まで。
0x20未満のハードタブ(0x09)や改行(0x0A)は個別に対処せよ。
0x7F(DEL)はいらねーよな。

あぁ、grep でも使える
$ command | grep -v '[ -~]'
asciiを含まない行を出力
$ command | grep '[^ -~]'
ascii以外を含む行を出力

lv(v.4.50, v.4.51)の正規表現検索は、スペースを範囲に含めると overcrossing range と出力されて効かないので、0x21の!から指定する
/[^ !-~]
ascii以外(タブなど除く)を含む行を出力

less(351, 358)は [ -~]で大丈夫なんだけどなぁ。意外にも more も大丈夫だ。

BINDのログをsyslogへ一時的に出力する
2005-07-08-1 / カテゴリ: [linux][debian][bind] / [permlink]

# rndc querylog
停止はもう一度同じコマンドを。(トグルになってる)
2005-07-07 Thu (他の年の同じ日: 2004)

画像ファイルを再配布不可にする
2005-07-07-2 / カテゴリ: [携帯] / [permlink]

http://minic.press.ne.jp/blogs/web/000056.html
iモード(ドコモ[docomo])は
GIF、JPEGファイルのコメントに「copy="NO"」と記述します。

EZweb(au)は
GIF、JPEG、PNGのコメントに「kddi_copyright=on」と記述します。

Vodafone live!(ボーダフォン[vodafone])は
JPEG、PNGの拡張子をそれぞれjpz・pnzにします。
2005-07-06 Wed (他の年の同じ日: 2004 2007)

BINDの統計情報
2005-07-06-2 / カテゴリ: [linux][debian][bind] / [permlink]

# rndc stats
このコマンドで、/var/cache/bind/named.stats ファイルに
+++ Statistics Dump +++ (1120658402)
success 10741
referral 0
nxrrset 1253
nxdomain 242898
recursion 6834
failure 23
--- Statistics Dump --- (1120658402)
というファイルができる。
それぞれ

success成功した問い合わせの数(参照先以外の応答を返したもの)
referral結果として参照先を返した問い合わせの件数。
nxrrset要求されたタイプのレコードが定義されていないドメイン名に関する問い合わせの件数。
nxdomain存在しないドメインネームを問い合わせた数。
recursionゾーン内のドメイン名に関する再帰的問い合わせの内、ネームサーバが更に問い合わせをしなければいけなかった件数。
failureNXDOMAIN以外で失敗した問い合わせの数。

ということ。(DNS&BIND クックブックp115より引用)

で、再度実行すると、前回実行したファイルの末尾に追記され続けるので、前回実行時との差分を実行間隔(括弧内のepochの差分)で割れば、秒間の問い合わせ平均数がわかる。

けど、何行ものログから、末尾2件分のparseはなかなかメンドイので(ラスト1件分だけ取得して、RRDtoolなんかに差分計算させる手もあるけど)、うちでは、実行前にファイル退避・rndc stats 実行・差分計算・結果をRRDtoolに食わせる、という感じ。

crontab (実際は1行)
0 * * * * /bin/mv /var/cache/bind/named.stats /var/cache/bind/named.stats.bak;
          /usr/sbin/rndc stats;
          /root/bin/bindstat/bindstats.plx > /var/cache/bind/named.diff

bindstats.plx
#!/usr/bin/perl

my %logfile = ( new => "/var/cache/bind/named.stats",
                old => "/var/cache/bind/named.stats.bak",
              );
my %logstat;

foreach my $key (keys %logfile) {
  open F, $logfile{$key} or die "cannot open $logfile{$key}: $!\n";
  while (<F>) {
    if (/^([a-z]+)\s(\d+)/) {
      $logstat{$key}->{$1} = $2;
    }
  }
  close F;
}

foreach my $item (sort keys %{$logstat{new}}) {
  print $item, ": ", ($logstat{new}->{$item} - $logstat{old}->{$item}), "\n";
}

これで、前回実行時との差分値が named.diff に出るので
failure: 0
nxdomain: 451
nxrrset: 7
recursion: 94
referral: 0
success: 109
このファイルの値を RRDtool につっこむ。

BIND統計グラフ

うーん、、、なんでこんなに名前解決にミスってんだろ^^;

rdfには最後のカテゴリ名だけ表示
2005-07-06-1 / カテゴリ: [perl][programming][changelog][chalow] / [permlink]

[2005-06-14-2]でカテゴリ名を RSS フィードに表示するようにしたけど、カテゴリの数が多いと(こんな使い方余りいない??)、Firefox のライブブックマークでの非表示部分が多くなってしまう。
ので、記述しているカテゴリ名のうち、最後の1個だけを表示するように修正

前回の状態からは
--- chalow.20050706     2005-06-29 19:40:01.000000000 +0900
+++ chalow      2005-07-06 17:55:49.000000000 +0900
@@ -1102,7 +1102,7 @@

            push @items, {
                permlink => $permlink,
-               itemheader => html2xmlstr("[".join("][", @{$all_entries{$ymd}{$i}{cat}})."]".$all_entries{$ymd}{$i}{h}),
+               itemheader => html2xmlstr("[" . $all_entries{$ymd}{$i}{cat}[$#{$all_entries{$ymd}{$i}{cat}}] . "]" . $all_entries{$ymd}{$i}{h}),
                itemauthor => $all_entries{$ymd}{$i}{a},
                itemcontent => $cont,
                itemcontentencoded => $coen,
てな感じで。

スゲー見にくいけど、要は
$array[$#array]
で、配列最後の要素をとってるだけ。
先頭がよければ、0 で良い(未確認)
Referrer (Inside): [2006-07-30-1]

UVERworld new Single
2005-07-05-3 / カテゴリ: [diary] / [permlink]

買っちゃいました。4月からの BLEACH 新オープニングテーマ。
アニメ…というか、テレビ全然見ない人だったのに、友達がそろえてる単行本にハマって、放送を見逃さないために壊れたビデオデッキを捨て DIGA を購入し(バカ)、毎週欠かさず(ちょっと嘘)録画してまふ。
というか、CD 買ったのっていつ振りだろう…。いや、MaxiSingle(で合ってる??)買ったのは初めてかも…

scp/sftp で日本語eucファイルのやりとり
2005-07-05-2 / カテゴリ: [win][ssh][アプリ] / [permlink]

WinSCP(日本語サイト)FileZillaでは、日本語ファイル名の文字コードまでは面倒みていない。ので、Win上のファイルをそのままアップロードしても、サーバ上ではSJISなファイル名になってしまう。Winのみが接続するファイルサーバとして使う分には構わないが(samba併用なら、cp932で設定)、Linuxローカルでファイル参照する際には分が悪い。sambaのみなら[2005-07-04]の設定でなんとかなるけど、ssh(scp/sftp)でのファイルのやりとりが絡むと対処できなくなる。
で、探してみると、FileZillaには、サーバとのファイルのやりとり時に、ファイル名の文字コードを SJIS <-> EUC 変換してくれるナイスなパッチ発見。

http://www.unixuser.org/~haruyama/software/filezilla_patch.html

これで、万事解決〜。
FileZilla(2.2.14b)をフツーにインストールした後、"2.2.14bにパッチを当てた実行ファイル FileZilla.exe" を上書き保存すれば良し。
ただし、サーバ上にある、元々 SJIS なファイル名は化けてしまうので、WinSCP とうまく使い分けるのが良いかも。

IMAP over SSL
2005-07-05-1 / カテゴリ: [meadow][imap][wanderlust] / [permlink]

パッケージでインストールした Wanderlust は、巷で必要とされている utils/ssl.el が入っていない。ので、本家から wl-2.12.0.tar.gz を落とし、utils/ssl.el を Meadow/site-lisp/wl/ 以下へコピーし、Meadow から
M-x byte-compile-file
でバイトコンパイル。すると ssl.elc ができるので、すかさず[2005-01-11-3]の設定でGo!

だめだった。
Cannot open: elmo-network-initialize-session

調べてみると、http://d.chronowing.org/200304b.html#13 かな。証明書関係みたいだ。確かに繋ごうとしている imap サーバは LAN 内にあるテストサーバで、いわゆるオレオレ証明書つかってるからなぁ。
Referrer (Inside): [2006-01-22-1]
2005-07-04 Mon (他の年の同じ日: 2004 2011)

smbmount の日本語設定
2005-07-04-2 / カテゴリ: [linux][debian][samba] / [permlink]

# smbmount //address/dir /mnt -o codepage=cp932,iocharset=euc-jp
codepage に、サーバが発するファイル名の文字コード種
iocharset に、マウント時に変換したい変換後の文字コード種

Version 3.0.14a-Debian

samba3.0の日本語設定
2005-07-04-1 / カテゴリ: [linux][debian][samba] / [permlink]

smb.conf
dos charset = CP932
unix charset = CP932
ファイルシステムが認識しているファイル名の文字コード(unix charset)が SJIS で、sambaクライアント(Windowsマシンとか)に認識させたいのも(dos charset)が SJIS の場合。うちは、debian上で既にシフトJISとしてマウントしてるんで、これで。
要は、unix charset が in で、dos charset が out.

Linux上で、euc-jp としてマウントしているのであれば、unix charset は eucJP-ms に設定すれば良いらしい。
http://www.miraclelinux.com/technet/samba30/migration.html
Referrer (Inside): [2005-07-05-2]
2005-07
前の月 / 次の月 / 最新

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2013-05-02 16:12