つれづれ日記 2006年1月

予定

毎日


2006年1月29日 (日曜日)

21:44:34 # Life dpatch-edit-patch. tyuyuさんからコメントをいただいた. dpatch-edit-patchの-bオプションというのがあるのだが, 328391 をずいぶん放置してきたのだが,実は必要なパッチなのではないか,と考えている今日このごろ. 環境変数 DPGO_ORIGTARDIRを設定するのはよいが, それが{svn,cvs,arch}-buildpackageなどと協調できていない点がださいとおもう今日この頃.

2006年1月27日 (金曜日)

09:43:28 # Life DeMuDi/Agnula プロジェクト始動. DeMuDi (Debian Multimedia Distribution)というのが存在していて,. それが活発に活動しているのですが,Debian に成果がまだマージされていないという問題がありました. 私が橋渡しをしようか,と名乗りをあげてみたのはよいのですが,パッケージ管理がsvnでなされていて困りました. そこで ぐたく様のページを参考におそるおそるやってみてます. うーむ. そろそろsvnが普及しすぎてまわりの人にgitとarchのみをおしつける生活に限界がでてきたので まじめに勉強しますか... dpatch-edit-patchの -P オプションを使うとかしていない場合, svn-buildpackageを利用するときに,debian/ディレクトリしか無い場合は, みんなパッケージの編集はどうやっているのだろう. dpatch-edit-patch みんな使っているの?

2006年1月24日 (火曜日)

22:24:50 # Life xawtv debug. dist-upgradeしたら,xawtvをフルスクリーンモードに切替えようとしても,適切な画面モードに切り替わらなくなった.そのため,フルスクリーンモードでもテレビが小さくうつる. カーネルは変わっていないので,Xかxawtvだな. xawtvはNMUはされているが,あまり問題がなさそうにみえる.Xか? x11/xt.cにて,ifdef HAVE_LIBXXF86VMもしくはHAVE_LIBXRANDRで,do_vidmode_modeswitchがかこわれている. が,xxf86vmも,xrandrもあるので問題なさそう. ソースを見ていると,-v オプションをつけるとデバッグメッセージを吐くみたいなのでそれで確認. どうも,フルスクリーンにしても1280x1024のままのようだ. なんだかNETWMというもので設定しているようだ. man xawtvrcを確認すると use-wm-fullscreen = on | offというオプションがあるらしい.このオプションを試しても効いていないきがする、とおもったらファイル名を間違えていた。.xawtvrcではなく.xawtv。

expose count=0
expose: xv reblit
video: shell: size 384x288+17+89
Xvideo: video: win=0x2400059, src=640x480+0+0 dst=384x288+0+0
PropertyNotify _NET_WM_ICON_GEOMETRY
cmd: "fullscreen"
fullscreen on via netwm
vm: current=1280x1024
PropertyNotify _NET_WM_ALLOWED_ACTIONS
PropertyNotify _NET_WM_STATE
PropertyNotify _NET_FRAME_EXTENTS
video: shell: size 1280x1024+0+0
Xvideo: video: win=0x2400059, src=640x480+0+0 dst=1280x960+0+32
expose count=0
expose: xv reblit
	

問題は,netwm fullscreenをサポートしていないのにmetacityがやりますとこたえているか, xawtvがnetwm fullscreenをサポートしていないのに使える,と判断してしまっているか(x11/wmhooks.c:wm_detect), xawtvのnetwm fullscreenの呼び方(x11/wmhooks.c)が間違っているか,あたりのような気がする.

    if (NULL == wm_stay_on_top &&
        0 == wm_check_capability(dpy,root,_NET_SUPPORTED,
	  _NET_WM_STATE_FULLSCREEN)) {
	

デバッグ出力を見ると, wm cap: _NET_WM_STATE_FULLSCREEN がきていることがわかる. どうもmetacityの問題のようだ. metacityのChangeLogを眺めると,そのサポートは2002年くらいに追加されたものらしい.(src/window.c, src/display.c). src/window.cをよんでいると,規格についての主義主張がコメントにちりばめられている. フルスクリーンを指定しているのにウィンドウをリサイズできない場合には画面サイズのほうを変更してほしいのだが,そういうロジックは無いような気がする.

下記パッチを適用してみたが,画面モードはきりかわらず.gnome panelが残るという状況に. これはxawtvの把握している画面モードの情報がおかしいとみた.

--- tmp/xawtv-3.94/x11/xt.c	2004-06-14 19:43:37.000000000 +0900
+++ xawtv-3.94/x11/xt.c	2006-01-25 08:49:13.000000000 +0900
@@ -970,7 +970,7 @@
     int    wpx,wpy,mask;
     unsigned int vp_width, vp_height;
 
-    if (use_wm_fullscreen && wm_fullscreen) {
+    if (0 && use_wm_fullscreen && wm_fullscreen) {
 	/* full service for us, next to nothing to do */
 	fs = !fs;
 	if (debug)

	

一日おいてみなおした結果,結局 fs_width, fs_height が定義されていないことが問題だったようで, Xの提供しているビデオモードの一覧を 0x0に対して検索していた. fs_width, fs_heightを提供してあげればうまく動いた. /etc/X11/xawtvrcにfullscreenのときの解像度をあげればよいのだ. しかし,これだけだと画面に対して仮想画面がでかく,TVを表示していない部分がまず画面にでかくなってしまい, マウスでスクロールしないと到達できないというちょっとださい状況になる. これはuse_wm_fullscreenをではない場合にはマウスを移動したりして細かく処理をしているようだ.

[global]
freqtab = japan-bcast
fullscreen = 640 x 480

(以下略)
	

2006年1月22日 (日曜日)

13:38:25 # Life 東京エリアDebian勉強会報告. 1月の第12回Debian勉強会を実施しました. 今回は岩松さんがdebian-policyについて今後どうやって解説していきたいかということを説明しました. 今回の参加人数は8人でした.

今回の会計

(+
;;資料コピー8人分
	  -3186
;;DWNクイズ景品代
	  -150
;;会場代
	  -1500
;;勉強会費
	  +3500
)
-1336 の赤字.
	

2006年1月19日 (木曜日)

08:44:13 # Life Agnulaのスポンサー撤退. agnulaをいままで金銭的にスポンサーしていたFirenze Tecnologia が撤退したそうで,今までの贅沢な開発体制は維持できない事になったそうです.

08:59:37 # Life debian-devel-announce投稿権限剥奪. Andrew Suffieldがdebian-devel-announceに, レズビアンについての発表文(写真付き)を投票したことに対応して,Debian Project は Andrew Suffieldからdebian-devel-announceへの投稿権を剥奪しました.

2006年1月18日 (水曜日)

00:03:16 # Life GPL v3 ドラフト. GPL v3のドラフトが出ていますね. rationaleも読んで,意図をうまく表現できているか,確認しましょう. コメントを書く場所などがあり, wikiもあるようです.

2006年1月17日 (火曜日)

23:04:58 # Life ylugカーネル読書会,2006年の新年会に参加してきました. 私はiBook G4, powerpc MPC7447Aで oprofileを実装してみた話しをしてきました. 資料は PDF形式のプレゼンテーションファイルをおいておきます. 新年会らしくライトな話題で軽いのりで攻めてみました. PPCについてもカーネルについてもわからない部分,自信がない部分が多々ありますので, 勘違いしているところなどありましたら,ぜひメーリングリストなどで突っこみをお願いします.

2006年1月14日 (土曜日)

22:13:45 # Life カーネルってどこのメモリに存在しているのだろう. そんなことを調べてみました. PAGE_OFFSETというのがおそらくカーネルの仮想アドレス の場所のはず. それをvirt_to_physで変換してあげれば確認できるだろう. とおもい,realkshをつかってテスト. powerpcでは仮想アドレスが0xc0000000, 実アドレスが0と出ました.本当か?

REAL ksh: #include <asm/io.h>
REAL ksh: printk("%x\n", PAGE_OFFSET);
  Building modules, stage 2.
KMSG: <4>c0000000

REAL ksh: printk("%lx\n", virt_to_phys((void*)PAGE_OFFSET));
  Building modules, stage 2.
KMSG: <4>0
	

x86_64では次のような結果がでました.これってあっているのか?

REAL ksh: printk("%lx\n", PAGE_OFFSET);
  Building modules, stage 2.
KMSG: <4>ffff810000000000

REAL ksh: printk("%lx\n", virt_to_phys((void*)PAGE_OFFSET));
  Building modules, stage 2.
KMSG: <4>0
REAL ksh:   
	

23:58:21 # Life dpkgメンテナがサバティカル. Scott James Remnantがサバティカルをとるということで引退宣言をしました. dpkgのメンテナンスがチームで運営されることになるようですが,今後どうなるでしょうか.

2006年1月12日 (木曜日)

09:27:05 # Life experimental が distsに. Debian の experimental distribution は, unstable/testing/stable とは別にunstableにいれるほどまでの完成度のないものをいれるための場所です. experimentalは他のunstable/testing/mainとは違い,一部のパッケージだけが存在しています. unstableに追加してインストールできるパッケージ集です. いままでは,FTPサーバのproject/以下のパスにあったのですが,昨日くらいから dists 以下に移動したようです. これでexperimentalがディストリビューションとして格上げした,というわけではないとは思いますが, 一貫性のあるパス名になるのは歓迎したいです. ftp.debian.orgには,experimental-is-in-dists-now というディレクトリがあります.

2006年1月9日 (月曜日)

10:49:42 # Life apt-key ziyi 2006を追加する. Debian のアーカイブは公開鍵暗号でアーカイブを認証するということを次期リリース対象の etch 向けに実運用している. ziyi key というのは,Debianアーカイブを署名している暗号鍵. この鍵が一年に一回失効するようになっているため,一年に一回更新する作業が必要になる. ちょっと確認したら分かるのだが,2006年のキーは2005年のキーで署名されている. 2005年の鍵のexpireの期限は2006年1月中になっているため,2006年1月中に2006年の鍵の有効性を確認すればよいという考えのようだ. 昨年のキーの信頼性が失われるような現象がおきたという話しは聞いていないので, そのキーを信頼してパッケージをインストールしていたのと同じように昨年のキーを信頼して,2006年のキーも信頼すればよい. Krafftのblogや 武藤さんのblogでも記述がある. 2006年のziyi key にはそれ以外にも署名があり,ftp-master関連の人達が署名している. しかし,あろうことか,署名している方々は Debconf 2005 に来ていたけど, keysigning partyには参加していなかった人達ばかりではないだろうか.

2006年1月8日 (日曜日)

22:45:22 # Life mallocしたものはdeleteしちゃいけないよ. バグレポートで,valgrindでメモリリークが検出された,という報告があった. 342156. しかし,それをよくみると,mallocしたメモリ領域をdelete[]で開放していたことにより検出されているようだった. ところで,これでもちゃんと動くのだが,現状でこれはどうやって実装されているのだろうか. 確認してみる. void* のデストラクタというのがきちんと定義されており(libstdc++ の _ZdlPv), その中身を見ると void* をfreeするようなコードになっていた. Cで書くとif(a) { free(a);}か. とりあえずはこのままで期待したように動作してくれるので, コンパイル時にg++が警告は出すけど特に 動作には問題が無いことがわかった. 今後もこれ以外のまともなデフォルトの動作というのはありえるのだろうか. なんとなく今後もうごきつづけるような気がしている. この関連の話題は頻繁にでてくるものであるらしく, new/deleteとmalloc/freeをまぜることは罪であるだとか バケツでウラン症候群だとか,えらいいわれようですね. たしかにバグの温床にはなりそうなので細かいコンパイラの挙動などまで正確に追跡する暇がない限りはmallocとdeleteをまぜて使わないほうがよさそうです.

(gdb) disassemble _ZdlPv
Dump of assembler code for function _ZdlPv:
0x00002aaaaac7bbc0 <_ZdlPv+0>:  test   %rdi,%rdi
0x00002aaaaac7bbc3 <_ZdlPv+3>:  je     0x2aaaaac7bbd0 <_ZdlPv+16>
0x00002aaaaac7bbc5 <_ZdlPv+5>:  jmpq   0x2aaaaac11138 <free@plt>
0x00002aaaaac7bbca <_ZdlPv+10>: data16
0x00002aaaaac7bbcb <_ZdlPv+11>: data16
0x00002aaaaac7bbcc <_ZdlPv+12>: nop
	

ソースはどうやらこれっぽいですね: gcc-4.0/libstdc++-v3/libsupc++/del_op.cc.

2006年1月7日 (土曜日)

14:12:29 # Life 新年初アップロード. whizzytex, binfmtc, cowdancer, pbuilder の新しいバージョンをアップロードしました. pbuilder-testsuiteを最近利用するようになったのですが,testsuiteが通らなかったので結構時間がかかりました.今年もよろしくお願いします.

18:24:36 # Life docdiffとemacsとsvnををより便利に使うには. 以前,svndocdiffというのを仕込んでみました. 現在利用しているdocdiffには現在位置を 指定して飛べるようなパッチを適用しています.パッチには利用例のelispをつけておきました. この追加をdocdiffを仕込むことによって,文書内に Ctrl-Aをうめこんでおいてあげればそこにウェブブラウザの機能で飛べるようになり,巨大な ファイルの編集中にも差分の中での現在編集中の場所が特定しやすくなります. ここまで来たらwhizzydocdiff-modeというのを作ってもよいのですが, 手もとのマシンでは一回docdiffするのに数秒処理が必要なため,incremental diff などを仕込まないと実用的ではないかと思います.

2006年1月5日 (木曜日)

21:50:27 # Life 技術委員会 Debian Technical Committee のメンバーが増えました. Steve Langasek, Anthony Towns, Andreas Barthがそれぞれ Debian Technical Committeeの新規メンバーとして追加されました. いままではTechnical Committeeとしての機能を果たしていなかった面が多かったですが, 今回追加されたメンバーはリリースマネージャとして実質的にTechnical Committeeの 機能を代行してきた人達です. 彼らが Technical Committee になることで,名実一致した形になったという感じでしょうか. Technical CommitteeはDebian憲章に記述のあるグループで, 技術的な項目について紛争が発生し,当事者間では解決が難しい場合に, 解決することを目的としたグループです. 今までは権力は存在することになっていたが,行動が伴っていなかったため, 批判はされることは少なかったのですが,今後,権限と行動が伴い始めると 衝突も産まれるかも知れません.今後がどうなるか.気になるところです.

2006年1月2日 (月曜日)

22:58:06 # Life docbook v5のドキュメント. tyuyuさんの日記から. DocBook v4からv5に移行するのに必要な変更について説明してある文章が日本語に訳してあります. 定義がDTDではなく,Relax NGになっているのが重要な変更点でしょうか.DocBook XMLの当初の内容は SGMLからの変換を簡便にするために便宜をはらっているような感じでしたが, 今回は大幅に変更しているようです. emacsのpsgmlモードは,DTDをサポートしているのですが,RNGはサポートしていません. はてさて,nXMLモードに乗り換えろ,ということになるのでしょうか.

2006年1月1日 (日曜日)

00:13:13 # Life 真のksh. カーネルハッカーのためのシェルとはなんだろうか,というのを思索して,こんなものではないのか,と思い付いたので,作成しました. あけましておめでとうございます.今年もよろしくお願いします. 昨年もいろいろな方におせわになりました.今年もさらにいろいろとあるとは想いますが,宜しくお願いします. で,そのシェルですが,binfmtcを踏襲して,適当実装ではありますが, 入力した行をCのコードとして,モジュールを作成してinsmod/rmmodを実行します. カーネル空間じゃないとできないんだけど,一行でよいんだけど...といいう場合に重宝するかも. ソースコードはここにあります.binfmtcでスクリプトとして実行する用法を想定しています. 実行結果例を提示します...

$ sudo ./realksh.c
REAL ksh: printk ("hello\n");
  Building modules, stage 2.
KMSG: <4>hello

REAL ksh: printk ("%x\n", mfmsr());
  Building modules, stage 2.
KMSG: <4>9032

REAL ksh: printk ("%x\n", mfspr(SPRN_MMCR0));
  Building modules, stage 2.
KMSG: <4>0

REAL ksh:
	

13:20:40 # Life ppcg4のためのoprofileサポート. 冬休みを利用して,ibook G4 にoprofileのサポートを追加しようとハックしていたのですが, 実はAndy Fleming がすでにパッチを投げてました. 気づいていなかったよ... まぁ,oprofile の挙動がよくわかったので,それはそれでよかったことにしておきますか. 今まだマージされていないところを見ると,おそらくメインストリームのカーネルにマージされるのはしばらくかかりそうなので, すくなくともローカルで動くようになっているということはよいことですかね. 自分で作ってみたパッチをおいておきます,まだTODOは,ありますが,7447AのCYCLESカウンタに限れば,動きます. kernel 2.6.14 に対してのパッチ. oprofile 0.9.1 に対してのパッチ.

20:04:27 # Life xpdfでしおりがばける件について. xpdfでしおりがばけて表示されているのだが,ながいあいだ放置していて何もしていないのもなんなので, それについて調べてみた. どうやら,PDFファイルからよみこむところまではしているのだが, 内部で一旦latin-1に変換していて,そこでlatin-1外の文字列を削除している. OutlineItem::OutlineItemにて実際の処理をしていて, 文字コードがlatin-1である,ということは XPDFViewer::setupOutlineにて指定している. まずここを直してEUC-JPなどに変換するようにしてあげれば,内部的には文字情報は失われない. だが,XPDFViewer::setupOutlineItems にてXmCreateLabelGadgetに対して何を渡したら漢字で表示してくれるのかがわからん. Motifに降参. 気をまぎらわすために他の実装を確認すると,gpdfはしおりだけは正常に表示できて, 本文の日本語が表示できず,kpdfも同様だった. まだこれからいろいろと修正が必要っぽい,ということで.


Junichi Uekawa

$Id: 200601.html.ja,v 1.38 2006/02/19 05:50:48 dancer Exp $