ハングアップの日々

2009年 3月分

2009/03/24

URL memo

2009/03/23

UPX

 メインのドキュメントやコマンドラインヘルプには記載がないが、UPX 3.0 では --lzma というオプションで LZMA による圧縮が使えるようになっている。試してみたところ、--best オプションで圧縮した場合よりもさらに数%サイズが小さくなる場合が多いようだ。--brute で全組み合わせを試した場合には LZMA も自動的に試されるようだが、--lzma --all-filters の方が試行回数が少なくて良さそうだ。

2009/03/18

URL memo

2009/03/16

WinINet

 数日前に Perl/Tk や Tkx でちょっとしたツールを作ったが、perl をインストールしていない環境でも使えるようにしたいと思い、Win32 API で作り直すことにした。LWP を使った HTTP 用のコードをどうするかが問題だったが、WinINet API を使えば意外と簡単に実装できた。POST する必要があったため、HttpOpenRequest(), HttpSendRequest() などを使った。なお、今回は POST の結果が EUC-JP で返ってくるので、文字コードの変換も必要だったが、MultiByteToWideChar() でコードページに 20932 を指定することで、UTF-16 に変換できた。よく似た 51932 というものもあるようだが、MultiByteToWideChar() では使えなかった。
 POST するデータは URL エンコードする必要があるが、URL エンコードする API が見当たらず自作した。エンコードする必要のある文字とない文字がよく分からず、少し不安である。後になって再度探してみたところ、WinINet API ではなく、Shell Light-weight API の中に、UrlEscape() という API があった。

2009/03/13

Tkx

 Perl/Tk の代わりに Tkx というものを試してみた。ActivePerl 5.8 では、Tk と Tkx の両方とも最初からインストールされているが、ActivePerl 5.10 では Tk は削除されたらしい。5.10 でも使うスクリプトは Tkx を使った方がよいだろうか?
 日本語による情報がほとんどない。チュートリアルを見ながら書いてみた。関数の命名規則が異なるのが非常に面倒。動作はほぼ同じようだが、関数名の置き換えだけではすまない部分もある。

2009/03/12

Perl/Tk

 Perl/Tk でメインウィンドウを表示させずに、ダイアログボックスのみを表示する方法はないか調べてみた。Perl/Tk を使う場合、MainWindow->new でメインウィンドウを生成しなければ事が始まらないが、以前書いたように、メッセージボックスのみを表示する場合は、withdraw でメインウィンドウを隠してしまえばよい。しかし、同じ方法をダイアログボックスに使うと、ダイアログボックスが表示されなくなってしまう。
 色々試したが、結局できなかった。メッセージボックスは、メインウィンドウを隠した状態でも表示されたわけだが、XS 経由で Win32 API の MessageBox() を呼び出して表示しているため、Tk 管理下のウィンドウとは扱いが異なる(?)のが原因のようだ。

PerlScript

 ActivePerl は、Windows Scripting Host に組み込んで PerlScript という形式で使うこともできる。PerlScript の拡張子は .pls で、wscript.exe に関連付けられている。コンソールウィンドウを開きたくないときには PerlScript にしておくと良さそうだと思い、試してみることにしたが、実行するとエラーが発生した。*.pls に日本語が含まれているとまともに動かないらしい。(ActivePerlのPerlScriptで日本語
 スクリプトの本体を .pl に記述し、.pls の中身は次のようにしてみた。

use lib split /;/, $ENV{PATH};
require 'foo.pl';

PATH の通ったディレクトリにスクリプトを置いておけば、スクリプト名だけで起動できるようになったのだが、起動が遅い。以前やっていたように、拡張子を .plw にして wperl.exe に関連付けした方が良さそうだ。

2009/03/08

AviUtl 0.99g4

 AviUtl は、バッチ処理が 0.99g 以降で大幅に変更になったということなので、今まで敬遠していたが、0.99g4 を試してみることにした。0.99f までとは異なり、バッチリストが全プロセスで共有され、複数プロセスで同時にエンコードする場合は、空いたプロセスから順に FIFO から取り出して処理するようになったようだ。
 相変わらずメニューやダイアログボックスにはアクセスキーがなく、非常に不便なので、0.99g4 用のアクセスキー付きリソースを作ってみた。プラグイン SDK に入っている言語リソースが更新されていなかったため、実行ファイルからリソースを抽出して、それを元にアクセスキー付きリソースを作った。

 バッチリストダイアログのリソースを言語リソースプラグインで差し替えてしまうと、複数プロセス間でバッチリストが共有されなくなってしまった。とりあえず、バッチリストダイアログのリソースだけプラグインから削除したところ、元通りリストが共有されるようになった。

2009/03/07

ifepsgs.spi

 ifepsgs.spi の改造版を改良。-dWINKANJI オプションを指定できるようにしてみた。これを指定すると、日本語の表示が改善される場合がある。今まではパッチしか公開していなかったが、今回からバイナリも公開してみることにした。相変わらずライセンスがよく分からないので、暫定公開としておく。

.tar.xz

 tar が .tar.xz という新しい形式をサポートしたようだ。(GNU tar 1.22リリース gzipより圧縮効率が大きく向上した「xz」をサポート) xz は、7-Zip で使われている LZMA アルゴリズムを使った圧縮形式ということで、高い圧縮率が期待できる。Tar32.dll でもサポートしてくれると良いのだが。
 そのうち、本家 7-Zip でも対応されるだろうから、7-Zip と 7-zip32.dll のソースを持ってきて .tar.xz に対応した統合アーカイバ DLL を自分で作ってしまうのも一つの手かもしれない。そのためには、7-zip32.dll が早く 4.65 に対応してほしいものだ。

2009/03/01

spam

 先月の spam メールの集計結果。着信拒否にならなかった spam が少なくとも 779通。そのうち、@nifty の迷惑メールフォルダーでも Spam Mail Killer でも spam として認識できなかったものが 5通(0.6%)。

メール受信状況 2009/02


Copyright (C) 2009 K.Takata