ハングアップの日々

2012年 9月分

2012/09/28

BitLocker

 会社の PC が Windows 7 に更新されて、BitLocker が導入された。XP の頃に使っていた暗号化ソフトは HDD のアクセス速度が 1/3 ぐらいに低下するひどいものだったが、BitLocker はほとんど速度が変わらないようだ。

memo

2012/09/26

memo

2012/09/25

memo

2012/09/24

memo

2012/09/23

Cygwin, hg, bash_completion

 Cygwin の hg に bash の補完が使えないのが以前から不満に思っていた。Mercurial のリポジトリには、bash 補完用のファイルがあるのでそれを持ってくることにした。
 Mercurial (stable branch): 6e2ab601be3f contrib/bash_completion から raw を選択してファイルをダウンロードし、/etc/bash_completion.d/mercurial という名前を付けて保存。bash を再起動して hg の補完が使えるようになった。

Cygwin, stgit, bash_completion

 Cygwin の stgit も bash の補完が使えないが、こちらも公式サイトからダウンロードしたパッケージに、補完用のファイルが含まれていた。stgit-completion.bash というファイル名だが、Ubuntu に合わせて stg というファイル名に変更して、/etc/bash_completion.d/ に入れておいた。

memo

2012/09/17

mp3infp

 mp3infp が落ちるという報告があった。Win7 だと再現しなかったが、XP だと確かに落ちた。OS によって違うなんて面倒だ。
 mp4v2 2.0.0 が出ていたことに気づいた。これに変更して現象が修正されればよいのだが、API が変更されてしまって簡単に差し替えができないので困っている。

2012/09/14

Vim を多重起動しない

 Windows で Vim を多重起動しない方法を調べてみた。「singleton.vim 作った - 永遠に未完成」が参考になった。自分の使い方だと、$Vim/macros/editexisting.vim で十分そうである。

Cygwin の dlopen()

 Cygwin の dlopen() は、"libhoge.so" というライブラリ名を指定すると、"cyghoge.dll" をロードしてくれるようだ。この動作はどこかに明記されているのだろうか。

2012/09/13

memo

2012/09/11

Cygwin, w3m

 Cygwin の w3m には、なぜかヘルプが表示されないという問題がある。ヘルプを表示するために H をタイプしても、"Can't load file:///$LIB/w3mhelp.cgi?version=w3m%2F0.5.2&lang=ja" とエラーが表示されるだけである。自分でビルドして原因を調べてみることにした。
 Cygwin のインストーラで w3m-0.5.2-2 のソースをダウンロードし、以下のコマンドを実行した。(configure のオプションは、CYGWIN-PATCHES/w3m.README に記載の通り。)

$ cd /usr/src/w3m-0.5.2-2/
$ ./configure --prefix=/usr --libexecdir=/usr/lib --with-ssl --with-termlib=ncurses --enable-image=no
$ make

すると、コンパイルエラーが発生してしまった。どうやら libgc の仕様が一部変わってしまったらしい。(今回使ったバージョンは libgc-devel-7.2d-1) 以下のパッチでコンパイルが通るようになった。

diff -ur w3m-0.5.2-2.org/main.c w3m-0.5.2-2/main.c
--- w3m-0.5.2-2.org/main.c	2007-05-31 10:19:50.000000000 +0900
+++ w3m-0.5.2-2/main.c	2012-09-11 10:58:54.752964400 +0900
@@ -842,7 +842,8 @@
     mySignal(SIGPIPE, SigPipe);
 #endif

-    orig_GC_warn_proc = GC_set_warn_proc(wrap_GC_warn_proc);
+    orig_GC_warn_proc = GC_get_warn_proc();
+    GC_set_warn_proc(wrap_GC_warn_proc);
     err_msg = Strnew();
     if (load_argc == 0) {
 	/* no URL specified */

 実行ファイルのサイズを見ると、Cygwin の公式バイナリに比べて 1MB ほど大きかった。libintl にスタティックリンクしているのが原因だった。ダイナミックリンクに変更する正しい方法が分からなかったので、Makefile を直接書き換えることにした。/usr/lib/libintl.a を /usr/lib/libintl.dll.a に変更したところ、公式バイナリとほぼ同じサイズのバイナリができあがった。
 できたバイナリを実行したところ、何の問題もなくヘルプが表示された。公式バイナリで表示されない原因が分からず、ちょっと気持ち悪い。

 そういえば、w3m は去年、数年ぶりに新バージョン (0.5.3) が出たのだった。コンパイルしたところ、GC_set_warn_proc() でエラーになるのは、0.5.2 と同じだった。上記のパッチを当ててから、以下のコマンドでビルドし直した。

$ ./configure --prefix=/usr/local --with-ssl --with-termlib=ncurses --enable-image=win
$ make

 libintl へはダイナミックリンクするようになっていた。w3mimgdisplay が Cygwin に対応したらしいのだが、残念ながら画像は表示されなかった。

memo

2012/09/10

memo

2012/09/09

memo

2012/09/06

memo

2012/09/03

memo

2012/09/02

Wheel Redirector

 4月に Wheel Redirector 1.7.4 が出ていたことに気づいた。1.7.3 以来 8年ぶりの新バージョンである。Google Chrome への対応だそうだ。履歴を見る限りでは、横スクロールへの対応はしていないようである。以前はソースコードが公開されていたが、今は公開されていないようである。
 「Google Chrome 12 でホイールスクロールできなくなる不具合の解決方法 [ デジタルライフ部 ]」という情報を見つけた。ソースコードと見比べると、CWheelHook::GetWindowAt() の最後で return targetWindow としてたのを return parentWindow に変えたようである。


Copyright (C) 2012 K.Takata