2009年2月22日日曜日

PNGの再圧縮

GDI+で作成したPNGファイルをGIMPで開いて保存し直したところ結構ファイルサイズが大きくなってびっくり。そういえば色形式も色々ありましたっけ。
調べたところ、OptiPNGとか他にもいろいろ再圧縮ツールがあるそうで。
手元のWebページの画像7,433ファイルをこのツールにかけたところ82MB→65MBと削減できました。

2009年2月21日土曜日

Debian 5.0 lenny

Debian 5.0 (lenny)がリリースされたのでアップグレードしました。
思兼 GNU/Linuxからアップグレードを繰り返してそろそろ10年でしょうか。

find /etc/ -type f | xargs ls -ltdr | head
で/etc内にある一番古いファイルが2000/01/29でした。

アップグレードの中でproftpdがはまることがわかっています。FTPにはそもそもファイル名に関する規定がありません。今までproftpdは8bit cleanでしたが、Debian 5.0にパッケージされているproftpd 1.3.1は8bit cleanではなくなり、日本語ファイル名を通すことが困難になりました。
こんなときでもDebianは古いパッケージをholdしておけば共存できます。つまりproftpdとそれに依存するパッケージはDebian 4.0のままで、それ以外はDebian 5.0に移行しました。

それでもまだはまることがあるんですね。
iptablesがバージョンアップして以前のiptables.confが使えませんでした。おかげでfirewall設定が消えて外部から攻撃を受ける羽目に…。
udev絡みでしょうか、mdのデバイスファイル名が/dev/md/1から/dev/md1に変わってしまいました。おかげでmount失敗に泣きました。
dhcpサーバが設定に厳しくなりました。ノートパソコンに対して無線LAN経由でも有線LANでも同じIPアドレスを割り当てていましたが、まとめて1つの設定にできなくなり、2つに分ける必要がありました。
rexecプロトコルが勝手にtcpd経由にされ、接続できなくなりました。tcpd嫌いっ

Apache、samba辺りは設定もややこしく毎回見直すべきなのは、それなりに。

まぁそれでもいい感じにアップグレードできたと思います。
ちなみにGCC周りが4.1から4.3にアップグレードされていますが、なぜか4.1のパッケージも残ったままなので手動で消す必要があります。

2009年2月6日金曜日

ADODB.SreamのSaveToFile()メソッド

ADODB.SreamオブジェクトにSaveToFile()メソッドがあります。書き込みのオプションとしてSaveOptionsEnumを設定します。これによると…

adSaveCreateNotExist1既定値です。FileNameパラメータで指定したファイルがない場合は新しいファイルが作成されます。
adSaveCreateOverWrite2FileNameパラメータで指定したファイルがある場合は、現在開かれているStreamオブジェクトのデータでファイルが上書きされます。
一見普通のEnumです。
でもよく読むと…
これらの値はAND演算子で結合することができます。
ちょっと待て。新規作成もしくは上書きをするにはAND結合? 1と2をAND結合すると0ですよね? ね?
こういうとき普通はOR結合して3になりませんか? いえ、値が重複していない以上、識別は可能ですが。
で、試してみる……0→引数エラー、1→OK、2→OK、3→引数エラー。
あれっ? ANDもORも受け付けないんですが。

仕方がないのでSRきりました。最終回答は出ていないもののドキュメントミスで次のようになるらしいとのこと。
adSaveCreateNotExist1既定値です。新規作成します。ただし上書きはしません。
adSaveCreateOverWrite2新規作成もしくは上書きします。