logo
code:Haemophilus influenzae

ここに書かれていることは無保証です。同じことを行って問題が発生しても、 龍義は責任をとりません。
 2003年9月 
 2003年10月 
 2003年11月 
 2003年12月 
 2004年1月  2004年7月 
 2004年2月  2004年8月 
 2004年3月  2004年9月 
 2004年4月  2004年10月 
 2004年5月  2004年11月 
 2004年6月  2004年12月 
 2005年1月 
 2005年2月 
 2005年3月 
 2005年4月 
 2005年5月 
アイコンの説明

6/1
Electric
4月から少し乗っている車、ワイパーのスイッチで間欠のモードがない。最初は、
そんなに不自由でもないかな、と思っていたのだけど、やっぱり欲しくなった。
ということで、スイッチを増設しようと、調べた。欲しいのは矩形波で、オンが
1秒、オフの5秒のもの。時間は適当で良いから LC 発振とか CR 発振でも良いの
だけど、LC 発振はコイルが面倒臭そうだし、 CR 発振は結構部品数が多くなり
そうな感じがするし、ということで 555 を使おうかと調べてみた。が、どうやら
オンの時間よりオフの時間を長くすることができないらしい。
t(h) : t(l) = Ra+Rb : Rb
らしい。インバータで反転しても良いけど、わざわざそのために IC を追加する
のも面倒だし、オフから始めなきゃいけないから、また面倒な感じだし。もっと
簡単にできる方法ないかなぁ…。

6/2
Network Other
Mac Mini でプログラムのコンパイル。で、 Mac Mini を借りたのだけど、現在は
管理者なしの状態で、中がどうなっているかわからない状態。中を見てみることに
した。

mmini:/ root# uname -a
Darwin mmini 7.8.0 Darwin Kernel Version 7.8.0: Wed Dec 22 14:26:17 PST 2004; 
root:xnu/xnu-517.11.1.obj‾1/RELEASE_PPC  Power Macintosh powerpc

こんな状態。gcc を実行したら、入っているみたいだったので、リモートでアクセス
出来るように sshd 周りを見てみた。

mmini:/ root# which sshd
/usr/sbin/sshd
mmini:/ root# cd /usr/sbin
mmini:/usr/sbin root# ./sshd
Could not load host key: /etc/ssh_host_key
Could not load host key: /etc/ssh_host_rsa_key
Could not load host key: /etc/ssh_host_dsa_key
Disabling protocol version 1. Could not load host key

鍵がないようである。試しに外からアクセスしてみたけど、ダメだった。 sshd の
バージョンを確認。

mmini:/usr/sbin root# ./sshd -v
sshd: illegal option -- v
sshd version OpenSSH_3.6.1p1+CAN-2004-0175
Usage: sshd [options]
Options:
  -f file    Configuration file (default /etc/sshd_config)
  -d         Debugging mode (multiple -d means more debugging)
  -i         Started from inetd
  -D         Do not fork into daemon mode
  -t         Only test configuration file and keys
  -q         Quiet (no logging)
  -p port    Listen on the specified port (default: 22)
  -k seconds Regenerate server key every this many seconds (default: 3600)
  -g seconds Grace period for authentication (default: 600)
  -b bits    Size of server RSA key (default: 768 bits)
  -h file    File from which to read host key (default: /etc/ssh_host_key)
  -u len     Maximum hostname length for utmp recording
  -4         Use IPv4 only
  -6         Use IPv6 only
  -o option  Process the option as if it was read from a configuration file.

OpenSSH_3.6.1p1 に特殊な patch が当たったもののようで、どうやら元から
入っていたもののようである。 LAN 内でのみ使うので、バージョンはこのままで
使うことにした。鍵の作成。

mmini:/usr/sbin root# ssh-keygen -t rsa1
Generating public/private rsa1 key pair.
Enter file in which to save the key (/var/root/.ssh/identity): /etc/ssh_host_key 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /etc/ssh_host_key.
Your public key has been saved in /etc/ssh_host_key.pub.
The key fingerprint is:
00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 root@mmini
mmini:/usr/sbin root# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/var/root/.ssh/id_rsa): /etc/ssh_host_rsa_key
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /etc/ssh_host_rsa_key.
Your public key has been saved in /etc/ssh_host_rsa_key.pub.
The key fingerprint is:
00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 root@mmini
mmini:/usr/sbin root# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/var/root/.ssh/id_dsa): /etc/ssh_host_dsa_key
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /etc/ssh_host_dsa_key.
Your public key has been saved in /etc/ssh_host_dsa_key.pub.
The key fingerprint is:
00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 root@mmini

これで実行してみた。

mmini:/usr/sbin root# ./sshd

あっさり動いたみたいで、外部から入れるようになった。これで、コンパイルできる
環境になった。Mac Mini 、もっと動作が鈍いと思っていたのだけど、思っていた
よりも快適に動作する。ちょっと欲しくなってしまった…。

6/3
Other
Windows マシンをしばらくつけっぱなしで動かしていた。流石に動作がもっさりと
してきたので、 uptime を見てみたら 86日ほど稼動しているみたい。Windows で
86日は長いなぁ。で、何が一番メモリを使用しているか見てみたら、 Mozilla の
ようである。見てみると 400MB ほど。他は cygwin とか putty とかを何枚か起動
しているけど、あまりメモリを食っていない様子。とりあえず、 mozilla を終了
させてみた。動作はだいぶすっきり。ここでまた mozilla を起動したら、 mozilla
のメモリ使用量は 18MB ほど。mozilla のメーラを立ち上げても 25MB ぐらい。
mozilla は定期的に終了した方が良いみたい…。

6/4
Network WWW
携帯電話用のページを作らなければならなくて、しょうがなく携帯電話のブラウザ
性能について調べてみた。各キャリアとか、端末世代によってえらい違う。これは
ちょっと手の込んだものを作るのは大変そうだなぁ。IE と NN とかそんな次元を
かなり超えているし。とりあえず、 Docomo から「iモードHTMLシミュレータII」
をダウンロードしてきた。手の込んだものじゃなくて、無難なものを作るしかない
でしょう。時間もないし。

6/5
Other
ホンダのC92(1960年代前半の古いバイク)のセルモーターが回らない。予備のを
引っ張り出して、テスターを当てたら短絡していて使えない。バラすか、と思って
バラし始めて、モーターって基本構造はもう40年以上前に出来ていたのだな、と
実感してしまった。結局、バラしても原因がわからず、わかったところで、部品が
手に入らないだろうから、時間がかかるのだけど。作業を少し手伝ってもらった人に
「旧車はキックじゃないと」って言われたし…。

6/6
Electric
6/1 の話を仕事先の電気に詳しい人に話したら、「1チップマイコンでやれば…」
なんて言われて、家に秋月の PIC ライターあるんでできないことはないのですけど
チップの性能の1%も使わないので、もったいない感じですよね、なんて話しに
なった。で、やっぱり PIC 12C509 あたりでやった方が 555 と頭を使って組むより
楽かもしれない、と思って、 PIC ライターを引っ張り出してきた。が、ACアダプタが
見つからない。なにか、それっぽい 15V ぐらいのはないかと探したら、 17V の
AC アダプタを発見して、を、これを使おう、なんて思ったけど、接続のセンターが
マイナスだったので、即却下になった。15V のアダプタ、どこに行ったかなぁ…。

6/7
Network
ICANN が .xxx ドメインについて交渉開始、なんて記事を見たのだけど、既に
.jobs と .travel は承認されてたのね。でもねぇ、なんだかここまで来ると、
New.net 社みたいなんだよなぁ。それに.xxx はすでにその New.net 社が販売して
いるものだったりもするし。まだまだ .cat .post .mobi .asia .mail .tel なんて
話も出ているようだけど、個人的にはもう増やさないで良いんじゃないかな、
なんて思う。

6/8
Other
Mac mini を起動して、 ssh からログインしてみた。が、なんだこりゃ。私の
ホームディレクトリのファイルが無くて、意味不明のファイルになっている。

-rwxr--r--  1 toyota    toyota    448917504  8 Jun 12:54 toyota.sparseimage

う〜ん、ファイルシステムがぶっ壊れたかな、とか、実はホームディレクトリは
別にあるんじゃないか、とか色々考えてみたけど、結局良くわからない。仕方なく
X(って呼んで良いのかな…)上でログインしたら、ちゃんとホームディレクトリが
復活しているではないか。どうなっているのか、ちょっと調べてみた。

mmini:‾ toyota$ pwd
/Users/toyota
mmini:‾ toyota$ df -k
Filesystem              1K-blocks    Used    Avail Capacity  Mounted on
/dev/disk0s3             78019632 9443308 68320324    12%    /
devfs                          90      90        0   100%    /dev
fdesc                           1       1        0   100%    /dev
<volfs>                       512     512        0   100%    /.vol
automount -nsl [267]            0       0        0   100%    /Network
automount -fstab [294]          0       0        0   100% /automount/Servers
automount -static [294]         0       0        0   100% /automount/static
/dev/disk1s2             78019592 9703364 68316228    12% /Users/toyota

らしい。web で検索したら、FileVault という機能で、sparseimage ファイルは
暗号化されているそうだ。FileVault は不具合が色々とあるらしいという噂も。
いちいちモニタ繋げてログインするのも面倒なので、そのうちこの機能をやめて
しまおう。とりあえずは、私の開発環境が消えてなくて良かった、と。

6/9
Network
今日のメールサーバのログが異様に大きい。ちょっと見てみた。

Jun  9 23:55:24 kamino postfix/smtpd[19444]: connect from gw2.gennet.ee[194.126
.122.22]
Jun  9 23:55:25 kamino postfix/smtpd[19444]: 18FC574004: client=gw2.gennet.ee[1
94.126.122.22]
Jun  9 23:55:25 kamino postfix/smtpd[19444]: 18FC574004: reject: RCPT from gw2.
gennet.ee[194.126.122.22]: 450 <david@tatsuyoshi.net>: User unknown in lo
cal recipient table; from=<8898@msa.hinet.net> to=<david@tatsuyoshi.net
> proto=ESMTP helo=<mail.gennet.ee>
Jun  9 23:55:27 kamino postfix/smtpd[19444]: disconnect from gw2.gennet.ee[194.1
26.122.22]

こんな感じのアクセスが延々と続いている。ちょっと、勘定してみた。

> grep "connect from gw2.gennet.ee" maillog | cut -c1-6 | uniq -c
   2706 Jun  9

2706回ねぇ。こいつ、何がしたいんだろう。postfix ではじくように postfix の
smtpd_client_restrictions あたりの設定をしてみた。が、明日からちょっと家を
離れるのと、設定に自信がなかったので、結局元に戻した。今からじゃリレーの
テストする時間ないし…。

というわけで、明日から10日間ほど入院することになってしまったので、この
ページの更新はありません。

6/11
WWW Terminator Tu
何故か入院中だけど…。

OpenBSD のマシンで cgi を作ったのだけど、どうも動かない。error log は良く
ありがちな「premature end of script headers」というもの、ブラウザのエラーは、
「500 Internal Server Error」どうせ、改行コードとか、パーミッションとか
だろうと思って、やってみたのだけど、どうもそうではない様子。 httpd.conf と
にらめっこして、ず〜っと考えていたのだけど、ふと、 ps を実行してみると

[toyota@naboo]% ps ax | grep httpd
 2272 ??  Is      0:48.71 httpd: parent [chroot /var/www] (httpd)
10571 ??  I       0:00.02 httpd: child (httpd)
25671 ??  I       0:00.02 httpd: child (httpd)
32739 ??  I       0:00.02 httpd: child (httpd)
 6674 ??  I       0:00.02 httpd: child (httpd)
14929 ??  I       0:00.02 httpd: child (httpd)

あ。chroot だったのか。試しに /bin/sh を /var/www/bin にコピーして、簡単な
cgi を作ってみた。

[toyota@naboo]% cat test.cgi
#!/bin/sh
echo "Content-type: text/html"
echo
echo "test"

これで表示されるようになった。しかしだ、 perl 環境のコピーとか、 sendmail
のコピーとか、凄い面倒臭そう…。恐るべし OpenBSD かな。

6/12
WWW Terminator Tu
昨日の続き。 sendmail 環境を chroot 環境にコピーした。コピーしたのは、

/usr/sbin/sendmail
/usr/libexec/sendmail/sendmail
/etc/mail/sendmail.cf
/var/spool/mqueue

これを /var/www 以下にコピーして、 sendmail を実行する cgi を起動してみた。

collect: Cannot write ./dfj5BA4D5D027990 (bfcommit, uid=67, gid=67): Permission denied
queueup: cannot create queue temp file ./tfj5BA4D5D027990, uid=67: Permission denied

だそうだ。 /var/spool/mqueue のパーミッションを見てみた。

[toyota@naboo]% ls -lad mqueue
drwxrwxr-x  2 root  daemon  512 Jun 12 18:59 mqueue

ユーザとパーミッションを変えてみた。

[toyota@naboo]% ls -lad mqueue
drwxrwx---  2 smmsp smmsp   512 Jun 12 18:59 mqueue

で、結果はこうなった。

can not chdir(/var/spool/mqueue/): Permission denied Check point 31

悪化している。仕方がないので、以下のユーザとパーミッションに変更。

drwxrwx---  2 www   daemon  512 Jun 12 18:59 mqueue

これで、エラーは出なくなった。が、 queue に溜まったままになっているようで
ある。先は長い、か。

6/13
WWW Terminator Tu
昨日の続き。 chroot で sendmail の queue が溜まってしまっているので、
なんとかしようと。

[toyota@naboo]% su
# chroot /var/www
# sendmail -q -v

Running /var/spool/mqueue/j5B9qsaL022261 (sequence 1 of 3)
tatsuyoshi.net: Name server timeout
tt@tatsuyoshi.net... Transient parse error -- message queued for future delivery

らしい。どうやら思ったよりも単純そうである。

# exit
# cp /etc/resolv.conf /var/www/etc/resolv.conf
# chroot /var/www
# sendmail -q -v

Running /var/spool/mqueue/j5B9qsaL022261 (sequence 1 of 3)
tt@tatsuyoshi.net... Connecting to kamino.tatsuyoshi.net. via esmtp...
220 kamino.tatsuyoshi.net ESMTP Postfix (Linux/SH)
>>> EHLO naboo.tatsuyoshi.net
250-kamino.tatsuyoshi.net
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-XVERP
250 8BITMIME
>>> MAIL From:<root@naboo.tatsuyoshi.net> SIZE=1176
250 Ok
>>> RCPT To:<tt@tatsuyoshi.net>
>>> DATA
250 Ok
354 End data with <CR><LF>.<CR><LF>
>>> .
250 Ok: queued as E51B274004
tt@tatsuyoshi.net... Sent (Ok: queued as E51B274004)

こんな感じで綺麗に流れていった。次は、 cgi での送信コマンドの変更が必要
なので、変更することにした。
現在、 /usr/bin/sendmail -t でメール送信を行っているのだが、 queue に入って
出てこないようなので、 queue に溜めずに直接送信するようオプションを変更する。
色々と見て、デバッグ用の -t -v で送信すると、即時送信される。しかし、ごちゃ
ごちゃと様子が出てきてしまう。-v オプションじゃなくて、ごちゃごちゃ表示され
ないで即時送信するコマンドはないものなのかなぁ…。調べたけど、良くわからない。

6/14
other Terminator P4-533
今使っているエディタ、改行コードが 0x0a のファイルを編集すると 0x0a と 0x0d と
入り混じった感じに仕上げてしまう。 html ファイルだったら問題がないのだけど、
cgi ファイルだと、気持ち悪い。そこで、 cygwin の sed で変換しようと考えてみた。
が、どうも結果がおかしいのである。何をやっても 0x0d をカットしてしまう。
まずは、試しに cat でやってみた。

[toyota@cygwin]% cat test0.html > test1.html
[toyota@cygwin]% ls -la test?.html
-rwxr-xr-x  1 Administrator  なし  1355 Jun 14 18:51 test0.html
-rw-r--r--  1 Administrator  なし  1355 Jun 14 18:51 test1.html

もちろん、同じサイズになる。これを適当な sed で変換してみる。

[toyota@cygwin]%  sed -e 's/hogehogehoge//' test0.html > test1.html
[toyota@cygwin]%  ll
ls -la test?.html
-rwxr-xr-x  1 Administrator  なし  1355 Jun 14 18:51 test0.html
-rw-r--r--  1 Administrator  なし  1318 Jun 14 18:52 test1.html

test0.html には hogehogehoge なんて文字は存在しないだけど、全ての 0x0d が
消されて出力されてしまう。試しに Linux でもやってみたけど、 Linux 環境では
そんなことはない。不思議な動作である。

6/15
other Terminator P4-533
cygwin の rename 動作について。ディレクトリを越えるときの動きがよくわから
ないので、調べてみた。まずは、「コマンドプロンプト」の rename の動作。

C:¥tmp>echo test > hoge
C:¥tmp>rename hoge test/hoge
コマンドの構文が誤っています。

だそうで、駄目である。で、 cygwin に rename というコマンドが付属していた
ので、やってみた。

> which rename
/bin/rename

> touch hoge
> rename hoge test/hoge

エラーは返ってこないけど、移動していない。かなり不親切である。次は、 perl の
rename 関数を使ってみる。

> cat rentest.pl
#!/usr/bin/perl
rename("hoge", "test/hoge");
> ./rentest.pl

移動はできた。次は C で作ってみた。

> cat rentest.c
#include <stdio.h>
int main(){
rename("hoge", "test/hoge");
}
> gcc -o rentest rentest.c
> ./rentest

こいつも移動はできた。あとは、cygwin の mv 関数ぐらいだろうけど、これは
検証しなくても、動くのはわかっている。
まとめると、ファイルを別のディレクトリに移動する動作について、以下になる。

コマンドプロンプトのrenameコマンドできない
cygwinのrenameコマンドできない
cygwinのmvコマンドもちろんできる
perlのrename関数できる
C言語のrename関数できる
それにしても、面倒臭い結果だ。 未だ入院中。かなり飽きてきた…。 6/18 Network やっと退院。家に帰ると、スパムメールが数百通。Mozilla の junk status で 8割ぐらいはゴミ扱いしてくれたけど、もう少し精度があがって欲しい気もする。 これからまともなメールを読んで、1週間の出来事の収集と、ログのチェックと。 21時消灯の世界は、すでに考えられないものとなってしまう。 6/19 Other 郵便番号から住所を拾う cgi の作成。郵便のページから CSV ファイルをダウン ロードしてきた。 http://www.post.japanpost.jp/zipcode/dl/kogaki.html の中の全国一括、というもの。 [toyota@naboo]% wget http://www.post.japanpost.jp/zipcode/dl/kogaki/lzh/ken_all.lzh [toyota@naboo]% lha x ken_all.lzh 解凍してできた KEN_ALL.CSV を加工する。読みは必要ないので、必要な部分だけ 切り出した。 [toyota@naboo]% cut -d, -f3,7-9 KEN_ALL.CSV > pcode.csv これで、中身は以下のような感じ。 "0600000","北海道","札幌市中央区","以下に掲載がない場合" "0640941","北海道","札幌市中央区","旭ケ丘" "0600041","北海道","札幌市中央区","大通東" "0600042","北海道","札幌市中央区","大通西(1〜19丁目)" "0640820","北海道","札幌市中央区","大通西(20〜28丁目)" 一括置換で、ダブルクォーテーションを削除。 0600000,北海道,札幌市中央区,以下に掲載がない場合 0640941,北海道,札幌市中央区,旭ケ丘 0600041,北海道,札幌市中央区,大通東 0600042,北海道,札幌市中央区,大通西(1〜19丁目) 0640820,北海道,札幌市中央区,大通西(20〜28丁目) 「以下に掲載がない場合」という文字と、()で囲まれた文字を削除。が、以下の ような部分が見つかる。同じ郵便番号だけど、長いので複数行に分かれている ようである。 /(.+)$/ だと、改行コードが含まれないので、 /([.,¥n]+)$/ で変換。 0660075,北海道,千歳市,北信濃 0660005,北海道,千歳市,協和(88−2、271−10、343−2、404−1、427− 0660005,北海道,千歳市,3、431−12、443−6、608−2、641−8、814、842− 0660005,北海道,千歳市,5、1137−3、1392、1657、1752番地) 0691182,北海道,千歳市,協和(その他) 次は、「〜の場合」を削除。 3060400,茨城県,猿島郡境町, 3060433,茨城県,猿島郡境町,境町の次に番地がくる場合 3060422,茨城県,猿島郡境町,一ノ谷 /,[^¥,]+場合/¥,/ な感じで削除した。で、ファイルサイズを見てみた。 -rwxr-xr-x 1 toyota toyota 11991584 May 27 17:17 KEN_ALL.CSV -rw-r--r-- 1 toyota toyota 5035831 Jun 19 13:37 pcode.csv -rw-r--r-- 1 toyota toyota 3923964 Jun 19 13:40 pcode2.csv 元が12M近くのファイル、加工して4Mぐらいまでになった。次は、重複している 郵便番号があるかチェックしてみた。 [toyota@naboo]% cut -d, -f1 pcode2.csv | sort | uniq -d 0040000 0110951 0120823 0120824 0160167 0191834 0287302 ... だいぶあるようである。行数を勘定してみた。 [toyota@naboo]% cut -d, -f1 pcode2.csv | sort | uniq -d | wc -l 1217 そんなあるの、という感じ。手動じゃ無理。中身をちょっと見てみた。 0040000,北海道,札幌市厚別区, 0040000,北海道,札幌市清田区, なんか、面倒なことになっている。重複数のチェックをしてみた。 [toyota@naboo]% cut -d, -f1 pcode2.csv | sort | uniq -d -c | sort -n | tail -5 26 9390351 28 9693101 36 9892351 42 0294205 44 7793405 44も重なっているのがあるとはね…。中身を見てみた。 [toyota@naboo]% grep 7793405 pcode2.csv 7793405,徳島県,吉野川市,山川町赤刎 7793405,徳島県,吉野川市,山川町伊端穂 7793405,徳島県,吉野川市,山川町井上 7793405,徳島県,吉野川市,山川町井傍 7793405,徳島県,吉野川市,山川町牛ノ子尾 7793405,徳島県,吉野川市,山川町大藤谷 7793405,徳島県,吉野川市,山川町大峰 7793405,徳島県,吉野川市,山川町大室 7793405,徳島県,吉野川市,山川町奥原 7793405,徳島県,吉野川市,山川町柿木谷 7793405,徳島県,吉野川市,山川町楮本 7793405,徳島県,吉野川市,山川町片岸 7793405,徳島県,吉野川市,山川町川田八幡 7793405,徳島県,吉野川市,山川町木戸口 7793405,徳島県,吉野川市,山川町黒岩 7793405,徳島県,吉野川市,山川町桑ノ峰 7793405,徳島県,吉野川市,山川町高頭 7793405,徳島県,吉野川市,山川町御饌免 7793405,徳島県,吉野川市,山川町御旅館 7793405,徳島県,吉野川市,山川町権現谷 7793405,徳島県,吉野川市,山川町坂口 7793405,徳島県,吉野川市,山川町貞田 7793405,徳島県,吉野川市,山川町小路 7793405,徳島県,吉野川市,山川町瀬津 7793405,徳島県,吉野川市,山川町田ノ浦 7793405,徳島県,吉野川市,山川町塚穴 7793405,徳島県,吉野川市,山川町土仏西向 7793405,徳島県,吉野川市,山川町天神佐古 7793405,徳島県,吉野川市,山川町天王原 7793405,徳島県,吉野川市,山川町土橋 7793405,徳島県,吉野川市,山川町土橋ノ上 7793405,徳島県,吉野川市,山川町中ノ郷 7793405,徳島県,吉野川市,山川町鍋倉 7793405,徳島県,吉野川市,山川町野宮谷 7793405,徳島県,吉野川市,山川町八ケ久保 7793405,徳島県,吉野川市,山川町榛木原 7793405,徳島県,吉野川市,山川町一ツ石 7793405,徳島県,吉野川市,山川町平山 7793405,徳島県,吉野川市,山川町日鷲谷 7793405,徳島県,吉野川市,山川町宮谷 7793405,徳島県,吉野川市,山川町村雲 7793405,徳島県,吉野川市,山川町茂草 7793405,徳島県,吉野川市,山川町矢落 7793405,徳島県,吉野川市,山川町木綿麻山 この場合、「7793405,徳島県,吉野川市,山川町」を切り出すように、 perl で スクリプトを書くことにした。あまり自信がないので、中身は非公開で。この スクリプトを通した結果。 -rwxr-xr-x 1 toyota toyota 11991584 May 27 17:17 KEN_ALL.CSV -rw-r--r-- 1 toyota toyota 5035831 Jun 19 13:37 pcode.csv -rw-r--r-- 1 toyota toyota 3923964 Jun 19 13:40 pcode2.csv -rw-r--r-- 1 toyota toyota 3814698 Jun 19 14:16 pcode3.csv なんとかこんなサイズ。で、行数、というか郵便番号数も出してみた。 [toyota@naboo]% wc -l pcode3.csv 117748 pcode3.csv 117748 個あるみたい。こいつを毎回検索するのも結構負荷になるなぁ、って気が したので、頭の番号で別けた10個のファイルでやってみる予定。 6/20 Other vim で改行を表示させようと :set list としたのは良いのだが、非表示に戻すやり方がわからない。 vim を再起動すれば 済むのだけど、せっかく開いているのに、面倒臭い。調べてみた。 :set nolist だそうで。なんというか、 syntax on/off とか set tabstop=4 とか、設定の仕方が 結構統一感がないので、迷ってしまうよなぁ。 6/21 Terminator Tu OpenBSD のマシンに VIM + kaoriya さんの日本語 patch を当てて、インストール したのだけど、何故か起動時にエラーが出る。 [toyota@naboo]% vim test Error detected while processing /home/toyota/.vimrc: line 108: E197: Cannot set language to "ja_JP.eucJP" Hit ENTER or type command to continue .vimrc の該当部分は以下のような感じ。 if !(has('win32') || has('mac')) && has('multi_lang') if !exists('$LANG') || $LANG.'X' ==# 'X' if !exists('$LC_CTYPE') || $LC_CTYPE.'X' ==# 'X' language ctype ja_JP.eucJP endif if !exists('$LC_MESSAGES') || $LC_MESSAGES.'X' ==# 'X' language messages ja_JP.eucJP endif endif endif ソースを少し眺めたら、 setlocale でエラーが出ているようである。とりあえず、 以下を実行して起動してみた。 [toyota@naboo]% setenv LANG ja_JP.eucJP エラー表示はなくなったが、日本語の扱いは変わらない。README_j.txt を見たら、 iconv が必要らしい。で、検索してみたら、インストールされてなかった…。 そっから始めなきゃいけないらしい。 6/22 Terminator Tu というわけで OpenBSD のマシンに iconv のインストール。 [toyota@naboo]% wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.1.tar.gz [toyota@naboo]% tar xvfz libiconv-1.9.1.tar.gz [toyota@naboo]% cd libiconv-1.9.1/ [toyota@naboo]% ./configure [toyota@naboo]% make [toyota@naboo]% su [root@naboo]# make install これで、 vim を使ってみたけど、状況は変わらず。 vim を作り直さないと駄目な ようである。で、作り直して、うまくいきました。 6/23 Other tcsh で作ったプログラムのテストをしていたのだけど、コマンドプロンプトでの 入力文字に制限があるいたいである。 [toyota@kamino]% /bin/echo `perl -e 'print "A"x10000'` Word too long. といった感じ。csh でも同じで、4096 文字の壁があるようなのである。しかし、 これを bash でやると、問題なく実行できる。csh 系は標準エラー出力のトラップも できないし、 bash 系をメインに使うようにしようかな…。 6/24 Other fgets を strncpy と同じ感覚で使っていたら、何かおかしい。どうやら、1文字 足りないようなのである。man を引いてみた。 The fgets() function reads at most one less than the number of characters specified by size from the given stream and stores them in the string str. Reading stops when a newline character is found, at end-of-file, or on error. The newline, if any, is retained. In any case, a `¥0' charac- ter is appended to end the string. だそうで。日本語だと。 fgets() は size よりも1文字以上少ない文字を stream から読み込み、 s で 示されるバッファに書き込む。読み込みは EOF または改行文字を読み込んだ後 終 わ る。 改行文字は読まれるとバッファに書き込まれる。 '¥0' 文字がバッ ファの中の最後の文字の後に1文字書き込まれる。 つまり、3番目の引数よりも少ない文字数になるということ。strncpy は。 strncpy() copies not more than len characters into dst, appending `¥0' characters if src is less than len characters long, and not terminating dst if the length of src is greater than or equal to len. なので、NULL 終端は保証されない。なんだか、関数によって、ちょっと意識が 変わるのは、面倒だ。 6/25 Other 万博に行ったりした。なんだか、液晶(じゃないのもあったけど)テレビを使って、 延々と何かの紹介をしているところ、結構あったのだけど、あんなものは不要じゃ ないかな、と思った。インターネットを使えば見られる情報を流されてもね、と。 逆に、実用的なものとか、実演とか、そんなものの方がずっと新鮮だった。人気の 日本の企業のところは4時間待ちとかありえない時間待たなきゃ入れないし、万博 そのものの価値は薄れているんじゃないかな、と思う。 6/26 Terminator Tu cgi を作ってたりする。久しぶりに Perl で作っているので、忘れてしまったことを 思い出しながら作っている。それにしても、文字列処理は楽で便利である。それと、 人様のモジュールなんかのコーディングを見ていると、なんだか難しい書き方して いるものが多く、色々と勉強になる。Perl ももう少し極めたいなぁ…。 6/27 Other impress に LANTANK の記事が出てた。なんだか、少し欲しくなったけど、熱が どれだけあるのか、というのと、騒音がどのぐらいか、気になるなぁ。ちょっと 奮発して、買ってしまおうかなぁ…。 6/28 Terminator Tu Perl で cgi を作っていた。で、何気なく読み込みファイルを JIS で書いて いたのだけど、書いているうちにだんだん面倒になってきたので、 EUC の置き 替えることにした。何が面倒って、マッチングの前に EUC の変換をしてから 使わなきゃいけないこと。何気なく split(/¥,/,"がぎぐげご,10"); なことも、JIS だとトンでもないことになったりして。やっぱり、日本語周りって ややこしい。 6/29 Terminator Tu Perl で chmod をやろうと、 chmod 755,$file; とやっていたのだけど、一向にパーミッションが変わる様子がない。何が悪いの だろうと、色々やってみたけど、良くわからない。困って調べてみたら、 chmod 0755,$file; と書かなきゃ駄目らしい。こんなことに15分もかけてしまった…。 6/30 Other どうやら Linux kernel 2.6 から /proc/stat の形式が変わったようである。 値も unsigned long long int とかになっているし。今までだと、unsigned int なので、 1/100秒単位ということから、UINT_MAX / 60 / 60 /60 と計算して 497日で数値が一巡することになる。ま、そんなに長く動かす予定はないので、 問題はでないのだろうけど。

21st projects Tatsuyoshi Networks Prompt Works
by Tatsuyoshi
since 2003