| 2002/10 | ||||||
|---|---|---|---|---|---|---|
| Sun | Mon | Tue | Wed | Thu | Fri | Sat |
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 | 31 | ||
_ この一カ月の spam メールの数を数えてみたら 129 通もあった。 日本語 7 通,中国語 6 通, 韓国語 1 通,残りは英語かな。
_ フィルタを使って自動的に捨てるようにしているけど, BASE64 なメールはキーワードがマッチしないからうまくいかない感じ。
_ JDK 1.1.8 のドキュメントをながめていたら間違いに気づいた。 エラーになるのは java.util.Random#nextInt(int) で, java.util.Random#nextInt() はちゃんと動いた。
_ J2SE 1.3.1 のコンパイラをそのまま使ったせいで, JDK 1.1.8 に存在しないメソッドをコンパイルできてしまったらしい。 bootclasspath に JDK 1.1.8 のクラスファイルを指定したらちゃんとコンパイルエラーになった。
_ uconv の UCS から CP932 への変換結果が Win32API と異なるという指摘をうけたので, --enable-compat-win32api オプション追加。
_ CP932 で二重符号化されている文字を Win32API と同じ結果になるように変換する。 --disable-compat-win32api の場合はこれまで通り Samba 日本語版互換の変換表になる。
_ Win32 プラットフォームで --enable-win32api している場合はまったく影響はないのでアップデート不要。
_ DC 君望,水月エンド。
_ 実家の新築祝いをやるというので帰省。
_ --enable-compat-win32api したときに U+3231 が Win32API 互換になっていなかった。 以下のように修正。
--- u2s.h~ Thu Oct 3 21:49:27 2002
+++ u2s.h Fri Oct 4 22:28:20 2002
@@ -12883,7 +12883,11 @@
0x0000, /* U+322e */
0x0000, /* U+322f */
0x0000, /* U+3230 */
+#ifdef COMPAT_WIN32API
+ 0x878a, /* U+3231 */
+#else
0xfa58, /* U+3231 */
+#endif
0x878b, /* U+3232 */
0x0000, /* U+3233 */
0x0000, /* U+3234 */_ 戻ってきた。
_ Windows2000 でデフラグしようとするとブルースクリーンで悩む。 falstaff.sys で落ちているらしい。 USB Mass Storage Driver かな。
_ とりあえず USB MO ドライブを外せば大丈夫みたいだな。
_ DC 君望,愛美エンド。 ラストだけ変わってるな。
_ あれれ,テレビが映らないな。 VHF も UHF も BS もまったく受信できないみたいだ。 テレビもビデオも BS チューナも駄目か。 部屋にきているアンテナ端子から電波がきてないみたいだな。 共同アンテナのブースタか混合器が壊れたのかなぁ。
_ と思ったら直ってた。
_ Mac OS X 10.2 がソフトウェアベースステーション対応らしいので, G4 Cube 用に AirMac カードを買って試してみた。
_ ルータモードだけで,ブリッジモードはないのか。 今一つ使えないなぁ。
_ OTP 計算機がなくて OPIE を使っているマシンに telnet できなくて困ったので, Ruby で簡易 OTP 計算機を作ってみた。
_ DC 君望,あゆバッドエンド,まゆエンド,まゆバッドエンド。 CG の取り逃しが 2 枚あるけど,一通り終ったかな。 結局文緒エンドはなしか。
_ いつの間にか 6to4 マシンが外につながらなくなっていて悩む。 6to4 リレールータの IP アドレスが変わっていたようだ。
_ しかも Windows Update をかけたときに wininet.dll が更新されていた。 wininet.dll を IPv6 用に戻したらつながった。 やっぱり Windows2000 で IPv6 は面倒だな。
_ ようやく市川市指定のプラスチックゴミ袋を発見。 プラスチックゴミの分別ができるようになった。
_ 久しぶりに FizzillaMach をビルドしてみた。
_ あれ,起動しようとすると落ちるなあ。 ああ,RealOne Player のプラグインのせいか。 /Library/Internet Plug-Ins のプラグインをエイリアスから シンボリックシンクに変更したら動いた。
_ いつの間にかファイルのダウンロードがちゃんと動くようになっているな。 あとは Flash のプラグインが動くようになればそれなりに使えるようになるんだけど。
_ Chimera は相変わらずフォントがうまく設定できないな。
_ やっと Red Hat Linux 8.0 のダウンロードが終った。 やはり ISDN で CD イメージ 3 枚分はきつかったな。
_ さっそく会社のマシンにインストールしてみた。 なるほど,よくできてるな。 日本語化はもうひといきという感じだけど。
_ 自宅にもインストールしてみようと思ったら CD-RW が読めない CD-ROM ドライブだった。がっくり。 CD-R に焼き直しか。
_ アップルからの荷物, 何かと思ったら .Mac のクーポンで買物したときにおまけで貰える CD-R だった。
_ ちょっと荒いけど,一応完成かな。
_ やっと標準化提案承認か。 多国語ドメインなんて使うかどうかは別にして, 技術的にはかなり興味深い。
_ あれれ,Punycode のプレフィックスはまだ決まっていないのか。 実際に使えるようになるまではまだ時間がかかりそうだなぁ。
_ PCMCIA SCSI CD-ROM ドライブからインストールしようとしたが, PCMCIA ブートディスクが CD-ROM ドライブをうまく認識しなくて失敗。 Red Hat 6.2 ではうまくいったんだけどなぁ。 ネットワークインストールしかないかな。
_ 今度はネットワークインストール。 まず,Red Hat 6.2J の上に Red Hat 8.0 をアップグレードインストールしてみることにした。
_ lilo の書き換えに失敗して再起動しなくなったが, 手で書き換えてなんとか動いた。 sendmail,wu-ftpd がアップグレード失敗で古いものと新しいものが混在。 egcs が gcc に置き換わらずもとのまま。 それ以外にもいくつか古いパッケージが残っているみたいだ。
_ 結局クリーンインストールし直すことにした。 とくに問題なく完了。
_ なんかファイルアクセスがちょっと遅くなった気がする。 ext3 ファイルシステムのせいなのかな? IPv6 サポートは Red Hat 6.2 よりかなりまともになっているみたいだ。 PCMCIA まわりはちょっと不安定な感じ。
_ 部屋に蚊が侵入,数ヶ所刺された。 なんでこんな季節に蚊がいるんだ。
_ Photoshop の作る JPEG ファイルはサイズの割に画質が低いので, コメントなどの情報を削ってちょっとだけファイルサイズを小さくするコマンドを作ってみた。 たいして効果がないみたいだけど。
#! /usr/local/bin/ruby
## markers
FF = 0xff
RST0 = 0xd0
RST7 = 0xd7
SOI = 0xd8
EOI = 0xd9
APP1 = 0xe1
APP15 = 0xef
TEM = 0x01
def stripAppMarkers(fin, fout)
while c = fin.getc
if c != FF
fout.putc(c)
next
end
marker = fin.getc
if marker == 0 or marker == FF
fout.putc(FF)
fout.putc(marker)
next
end
case marker
when APP1..APP15
length = fin.read(2).unpack("n")[0]
app = fin.read(length - 2)
printf("strip %d bytes\n", length + 2)
next
when SOI, EOI, RST0..RST7, TEM
fout.putc(FF)
fout.putc(marker)
next
else
length = fin.read(2).unpack("n")[0]
segment = fin.read(length - 2)
fout.putc(FF)
fout.putc(marker)
fout.write([length].pack("n") + segment)
end
end
end
open(ARGV[0], "rb") do |fin|
open(ARGV[1], "wb") do |fout|
stripAppMarkers(fin, fout)
end
end_ G4 Cube のハードディスクが異音を発し始めた。 買ってからまだ 18ヵ月くらいだけど, 24 時間稼働だし,ファンレスで放熱も悪いし,そろそろ寿命かもしれないな。
_ しばらくしたらなぜか静かになった。 でも 60GB のディスクが壊れると被害が大きいなぁ。 バックアップ用に外付ハードディスクでも買ったほうがいいかな。
_ 画像サイズ変更の時のミスでスクリーン用なのに解像度が 600dpi とかになっているファイルがあるので, JPEG と PNG の解像度情報を書き換えるコマンドを作ってみた。
#! /usr/local/bin/ruby
require 'parsearg'
## JPEG markers
FF = 0xff
APP0 = 0xe0
UNITS = ['pixels', 'pixels/inch', 'pixels/cm']
def jpeg_changeDensity(fin, fout, unit, xdensity, ydensity)
while c = fin.getc
if c != FF
if fout
fout.putc(c)
end
next
end
marker = fin.getc
if marker == 0 or marker == FF
if fout
fout.putc(FF)
fout.putc(marker)
end
next
end
case marker
when APP0
length = fin.read(2).unpack("n")[0]
app0 = fin.read(length - 2)
identifier, version, u, xd, yd, xt, yt, rest = app0.unpack("a4xa2cnncca*")
printf("%dx%d %s\n", xd, yd, UNITS[u])
if fout
app0 = [identifier, version, unit, xdensity, ydensity,
xt, yt, rest].pack("a4xa2cnncca*")
fout.putc(FF)
fout.putc(marker)
fout.write([length].pack("n") + app0)
fout.write(fin.read)
printf("->%dx%d %s\n", xdensity, ydensity, UNITS[unit])
return
end
next
when SOI, EOI, RST0..RST7, TEM
if fout
fout.putc(FF)
fout.putc(marker)
end
next
else
length = fin.read(2).unpack("n")[0]
segment = fin.read(length - 2)
if fout
fout.putc(FF)
fout.putc(marker)
fout.write([length].pack("n") + segment)
end
end
end
end
PNG_SIGNATURE = "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a"
CRC_TABLE = []
def png_changeDensity(fin, fout, xdensity, ydensity)
sig = fin.read(8)
if sig != PNG_SIGNATURE
puts "not PNG file!"
return
end
if fout
fout.write(sig)
end
while chunk = fin.read(8)
len, ctype = chunk.unpack("Na4")
cbody = fin.read(len)
crc = fin.read(4)
case ctype
when "pHYs"
xppu, yppu, u = cbody.unpack("NNc")
if u == 0
printf("aspect ratio = %f\n", 1.0*xppu/yppu)
else
printf("%dx%d pixel/inch\n",
(xppu*0.0254).round,
(yppu*0.0254).round)
end
if fout
xppu = (xdensity / 0.0254).round
yppu = (ydensity / 0.0254).round
cbody = [xppu, yppu, 1].pack("NNc")
crc = crc(ctype + cbody)
printf("->%dx%d pixel/inch\n", xdensity, ydensity)
end
end
if fout
fout.write(chunk)
fout.write(cbody)
fout.write(crc)
end
end
end
def mk_crc_tab
for n in 0..255
c = n
for k in 0..7
if c & 1 == 1
c = 0xedb88320 ^ (c >> 1)
else
c >>= 1
end
end
CRC_TABLE[n] = c
end
end
def update_crc(crc, buf)
if CRC_TABLE.length == 0
mk_crc_tab
end
c = crc
for n in 0...buf.length
c = CRC_TABLE[(c ^ buf[n]) & 0xff] ^ (c >> 8)
end
c
end
def crc(buf)
[update_crc(0xffffffff, buf) ^ 0xffffffff].pack("N")
end
unit = 1
xd = 72
yd = 72
$USAGE = %q(puts "Usage: #$0 [-i ppi] in [out]")
parseArgs(0, nil, nil, "i:")
if $OPT_i
xd = yd = $OPT_i.to_i
end
open(ARGV[0], "rb") do |fin|
fout = ARGV[1] ? open(ARGV[1], "wb") : nil
if ARGV[0] =~ /\.png/i
png_changeDensity(fin, fout, xd, yd)
else
jpeg_changeDensity(fin, fout, unit, xd, yd)
end
fout.close if fout
end