トップ «前日 最新 翌日» 追記

おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google してもらう


2002年11月13日(水) きれいな朝焼け

リスが忙しく木を登ったり降りたりとびうつったり。越冬の準備なのでしょう。

熟成カスピ海ヨーグルト

2日寝かせてから食べると、ちょっと普通のヨーグルトっぽい風味がつく。これって腐ってるわけじゃないよねぇ?どきどき。

ブロックを受け取らないFile.openはファイルをcloseしない

昨日のnamazuのインデックスを読むスクリプト どこかひっかかるなぁ、と思っていたら帰りに気付いた。 openがブロックを受け取る場合とメソッドを受け取る場合で挙動が違う のでした。 ちゃんとファイルを閉じるには、

--- read_namazu.rb.orig	Wed Nov 13 09:22:03 2002
+++ read_namazu.rb	Wed Nov 13 09:22:06 2002
@@ -24,8 +24,8 @@
 end
 
 # read the NMZ.* files
-nmz_wi=File.open ('NMZ.wi').read.unpack('N*')
-nmz_i=File.open ('NMZ.i').read.unpack('w*')
+nmz_wi=File.open ('NMZ.wi') do |f| f.read.unpack('N*') end
+nmz_i=File.open ('NMZ.i') do |f| f.read.unpack('w*') end
 
 # get into a shape
 words = Array.new

こんな感じかな?

僕はブロックだけ {} で囲うのは、 classの定義とか〜endで囲うのと対称性がよくないような気がして、 ブロックも do〜endにしてるのですが、どんなものなんだろう? 上のような場合には可読性が落ちるような気もするんだよな。

設定ファイルを再読み込みするiiimf-skk

NEW_FEATURESブランチから13日10:37GMTくらいにcheckoutしたもので、 ごそごそとパッチを当てたりconfigure.inをいじったりして、 ほぼAsumi環境でも無事ビルド&インストールできました。 「再」ボタンをポチっと押せる。 のですが、例えばskk-hirakana-mode-stringが反映されない模様。 これから実装されるのかな?

さて。「再」ボタンをポチポチ押したり、 httxを再起動させたりしてて遊んでいるうちに、 dbskkd-cdbが起動しなくなっちゃいました。なんでー?

iiimf-skk-0.1.21に戻しても変らず。 シゴトで使いたいので今回はマシンを全部再起動させちゃいましたが、 xinetdだけでもよかったかも。 次に同じ症状が出たらちゃんと調べるように→僕。

設定ファイルを再読み込みしたら、新規の端末をたちあげたりした場合には反映されま

…せん。(T_T)

一度Xを抜けるとおっけーなんですが。 Asumiマシンでdb3でgtk+2もないし、 しばらく手元で検証してみてからちゃんとご報告しますです。

それどころか、Xを抜けずに、 AddDictAuxとPaletteAuxをkillallしてからIIim をrestartする とdbskkd-cdbとお話しができなくなっちゃう感じ*1

じつは、 実験室にころがっていたマシンを何台か合わせてオモコンマシンが作れそうなので、 HEADと見比べながらどこが違うのか見ていきたいと思ってます。 しばーしお待ちを。

といいつつmemtestでひっかかちゃったりして…。

*1 telnet localhost 1178するとちゃんと返事が返ってくるのですが…。

がらくた集めは楽しい

ASUS-K7VにAthlon 750MHz。メモリは256MB確保できました。ネットワークカードを挿しても無事ブートする。あとはCD-ROMドライブとハードディスクがあればいいのだ。わくわく。

この歳になって生傷が絶えない

自転車でこけました。おでこにたんこぶと膝にすり傷。人を避けようとしたらフェンスに接触しちゃったよ。

背中のノートPCに何の被害もなかったのがよかったけれど、念のため夜シゴトはせずに寝る。

本日のツッコミ(全5件) [ツッコミを入れる]

> famao [えーと、hirakana-mode-string あたりは設定ファイルを再読み込みしたら、新規の端末をたちあげたりし..]

> famao [通信まわりは ~/.iiimp ファイルが何か関係してるのかなぁ。そういえば、fvwm2 を利用してる時のPalet..]

> ずんだあん [一度は再起動してもお話ができなくなったりもしました。とにかく、今度起きたら.iiimpを消してみよう。 fvwm2の..]

> きた [ブロックもろとも一行に書いちゃう場合は{}を使います.それ以外はdo/endですね.]

> ただただし [おれはブロックの値を使うときだけ{}だな。]


2003年11月13日(木) Battery Low Notification from APM BIOS (12% unknown)

家で仕事をしたノートPCを仕事場にもってきてPC側に電源を刺すところで力つきる。しばらく仕事をしてると電池なくなるぞー、と。よく見るとコンセントを刺してないという。

[tDiary] tDiary 1.5.6リリース

パチパチ〜。1.5.5から1.5.6の間に、かずひこさん発案のプラグイン選択プラグインが大きな役割を担うことになったのがおもしろかったです。disp_referrer.rbとweather.rbの国際化はイマイチ。言語リソースにロジックを持ち込んじゃってるのは、プラグインの更新の時に全ての言語リソースに手を入れなくちゃいけなくなるのがよくないですよね。gettext的に全ての文字列がパパっと変更できるようにしたいな。

さて。この日誌は未だに9月中旬のバージョンで、それは個人的な改造と開発版のマージが一筋縄ではいかないからなのです。これを機会に個人的な改造を捨てるのが賢い選択だろうな〜。と思って個人的な改造をざっと眺めてみたのですが…。

プラグインの変更/追加でなんとかなるものは、

本体やskelの改造が必要なものは、

  • 日記のソースを見せる: index.rbに手を入れ、skelにファイルを追加。
  • 出張帰りtDiary: index.rbとtdiary.rbを改造。これをプラグインで実現するには、月またぎの時にプラグインが日記インスタンスを変更する必要がある。
  • 編集後には「追加」画面に飛ぶ: tdiary.rbを改造。
  • 最新表示のツッコミを囲む枠を[]から「」にする: skel/diary.rhtmlを改造。いつのまにかtDiary本来の姿に戻ってるし。
  • 最新表示のツッコミを省略する長さを変更: skel/diary.rhtml。

うーむ。どうすべ。これまでみたいに(1)ローカルなレポジトリを作っておいてブランジへのマージをくりかえすか→必要以上にconflictしてくれる、(2)自分パッチを作っておいてcvs updateの度に当てるか→cvs update後のパッチの作りなおしを忘れそう。

(2)をやるスクリプトを書いとくのが現実的かのう…。そういうわけでさきっちょ追随はもう少し後に。(またか)

だまされないように気をつけなくちゃ

サーバ管理者日誌より、1ケタ誤り「1万9800円」、泣く泣くPC販売 丸紅(毎日新聞)。値段の間違いしかとりあげられてないけど、ついでに発覚したサーバサイド VBScript 漏洩&データベースの設定漏洩&セキュリティポリシーを逸脱した運用(個人情報の漏洩)っていう、もっと大きな問題があったんじゃなかったっけ?

小さい方の問題だけ直したことにして大きい方の問題から目をそらさせるのは、割とよく使われる手法なんだろう。気をつけなくちゃ。

バグは、ばけもの

すげい♪どなたかの日記経由/.-j。about:mozillaもなかなかでした。


2004年11月13日(土) 寝不足週末

夜中にずんこによく起こされました

家からジョギング

朝から体調が悪かったのだけれど、ずんこを妻に任せて1時間走ってきた。体調が良くなった。わはは。

RSS大誤解

RSSが更新通知エージェントに情報を提供するってぇのは、とってもマイナーな使いかたらしいよ。勘違いしてた。すんません。

[tDiary] RSSに含めることのできる著作権表示について

そういうわけで、まだまだRSSについて勉強中なのです。

Technology at Harvard LawのRSS 2.0 Specificationによれば、channelにはcopyright要素を含めることができるようだ。試してみよう。

本日のツッコミ(全3件) [ツッコミを入れる]

> タロウ [そうそう、走ると体調良くなるよねえ。無理は禁物ですが。]

> zunda [走ったあと、さっぱりしたーと思っていたのだけど、翌日になったら鼻水がでるようになりました。無理ちゃったかー?]

> zunda [そしてmakerss.rb改造関連でツッコミの後にエラーが。ごめん>タロウ]


2005年11月13日(日) 作文いろいろ直し中

[memo] Accuracy vs. Precision, and Error vs. Uncertainty

どーしても覚えられない。accuracyは真の値とどれだけ一致しているか、precisionは測定の再現性、だそうだ。

[memo] オープン・ソース・ライセンシング、第1回:目的

IBM dWより、著作権について、ソフトウェアのライセンスについてのわかりやすい解説。ただ、ここに書いてあるのはアメリカ合衆国での著作権のあり方だろう。注意が必要かもしれない。

人体に対する静磁場の影響

今日半日、妻が持ってきた磁石の腕輪を腕に付けてみた。軽く見て、これって効果はないだろうけど腕時計と一緒に付けといたらまずいんじゃないか、とか思っていたら自分の体に影響が!

腕輪を付けている方の手がほかほかとしてきて、ああ効いてるかも、と思っていたらあれよあれよという間に頭痛が。うーん…。家に帰って訊いてみると、やっぱり磁場が強すぎると頭痛がすることがあるらしい。

それにしても、タカをくくっていた磁石健康グッズにこんなに影響を受けるとははずかしい…。

磁場中の血管を流れる血液の正負のイオンが逆向きに力を受けたら、血管が血流と磁場に垂直な方向に力を受けたり、血液の中に電場ができたりするんだろうか?それとも神経を流れる電流が影響を受ける?神経を流れる電流は微少なものだろうし、どちらかというと血流に対する磁場の影響があるんだろう、という気がする。そのうちちゃんと考えてみたい。いつ〜?

本日のツッコミ(全1件) [ツッコミを入れる]

> こ〜りん [精度と確度ですか.確かにごっちゃになりやすいですな.]


2006年11月13日(月) 久しぶりに土砂降り。すぐ止んだけど。

[memo] 携帯電話のユーザーインターフェースは東芝のものがいいらしい

今使わされている(機械が壊れると鳴る)電話はNokiaのもので、現在時刻を見るのにスクリーンセーバーを待つか三階層くらいメニューを辿らないといけない、という代物。電話をかけている人によって呼び出し音を変える(電話帳に登録していない番号からは間違い電話しかかかってこないので鳴らないようにしたい)機能は、半年つかっていてもまだみつけられない。

以前日本で使っていたプリペイド携帯電話はなかなか使いやすくて、携帯電話のソフトも捨てたもんじゃないな、と思っていたのだけれど、一般的にはそうではなくて携帯電話屋さんの興味はまだまだハードウェアに向いているんだなあ、と次第でした。

で、「松浦晋也のL/D」を読むと、「次の端末は、Jフォンショップで0円で入手した東芝の『KOTO』だった。これは、手に良くなじむデザインと、使いやすいユーザーインタフェースが秀逸な傑作だった。」とのこと。なるほど。プリペイド携帯電話は東芝製のものだったのでした。

自分で機種を選べる機会があったら東芝の端末にしたいな。

[memo] w3mからvimを起動して編集するときだけRDを編集しやすいようにする

BitChannelはタブ文字を8スペースに変換する。手元ではタブ文字は2スペースとして表示しているので気づかずにハードタブのまま保存するとRDが見づらくなる。また、そのままメールにコピーして送る場合が多いので横幅も適当に制限したい。

w3mから起動した時に特徴的なファイル名の場合には上記が設定されるように、~/.vimrcに下記を追加した。

if has("autocmd")
augroup rd
  au!
  au BufReadPre,FileReadPre w3mtmp* set expandtab
  au BufReadPre,FileReadPre w3mtmp* set textwidth=65
augroup END
endif

DVD欲増加中

昨日、Wal★Martで「Hitchhiker's Guide to the Galaxy」のDVDが安売りされているのを見つけた。半年待った甲斐があったよ。買って帰って早速観る。おもしろいのだが何度も観ないと英語がわからないなーと思ってると、ずんこが帰ってきた。ずんこもいろいろな場面で「なんでー?」と訊くのだけど、ねぇ、なんでだろうねぇ。

次に欲しいDVDは、先週の水曜日と今度の水曜日にPBSで放送する「Warplane」戦闘機の歴史のはなし。ライト兄弟の発見したエルロンがフランスでどう発展していったか、とか、複葉機が捨たれていったのは、ドイツで厚い翼の抵抗がそれほど大きくないことがわかったからだ、とか、かなり興味深い。繰り返して観たらもーっと面白いと思う。

しかし、このDVDは$24.99から安くはならないよねぇ。

[run] 76+行き止まり+最短周回逆走+CSO 1分04秒 8.5分/マイル

いつものコースのだらだらとした下り坂を走っていると自転車が楽そうに流していった。逆に走れば練習になるのになあ、と思ったが、僕もやん。そういうわけで、交差点に着いてから逆走してみた。うむ。練習になる。

距離は、いつもの6.30マイルに周回分1.26マイルを足して7.56マイル。

走りながら頭の中で大塚愛の「さくらんぼ」が止まらなくてこまった。「もーいっかい!」って、ねぇ。

(追記)1分04秒のはずはない→タイトル。1時間04分だろう。1マイルあたりの時間8.0分は1時間04秒で計算したようなので、訂正。

るびまを編集しながら、wwwブラウザもviとかemacsとかExcelとかみたいに画面を上下に分割できたらいいのにな、と思った。もうどこかにありそうだよね(でも探さない…)。

本日のツッコミ(全5件) [ツッコミを入れる]

> 勇魚 [>H2G2 手っ取り早いのは、日本語原作を手に入れることかな?字幕付きで見ていても「それは原作読んでないとわからない..]

> zunda [なるほど。早く日本への出張ないかなあ (あったらあったで忙しくなるんだけどさ。) とりあえずは繰り返し観て楽しみます..]

> zunda [おぉ!6冊もあるんですね http://ja.wikipedia.org/wiki/%E9%8A%80%E6%B2%..]

> 勇魚 [そうそう、以前に途中まで出て、ずーっと途絶えていたんですが、映画化に合わせて全部日本語訳が出たんですよ。 ちなみに、..]

> zunda [検索結果に復刊ドットコムが見えたと思ったらそういうわけだったんですね。 今度水族館に行ったらあの歌がヘビーローテー..]


2007年11月13日(火) 豪快に寝坊

起きた時にはずんこは学校に行っていた

[memo] Linux で sh スクリプトを書くときは Debian がいいのか? (あーありがち)

ポータビリティの高いシェルスクリプトを書きたい時には、Linuxでbashにsymbolic linkされている/bin/shを使ってはいけないんだよなーと思っていた。Debianでは/bin/dashが、*BSDの/bin/ashに対応するシェルで、それを使うとポータビリティの高いシェルスクリプトが書けるのだそうだ。

Momongaではどうなってるかな?と思うと、ashというパッケージがあって、/bin/ashが提供されている。rpm -qiによるとashはBourne shellのクローンで、Bourne shellのいくかの機能(コマンドライン履歴など)は実装されてないのだそうだ。

man bashを見ると、例えばブレースの展開はshとbashで異なるのだそう。試してみよう。

$ touch file1
$ touch file2
$ /bin/bash -c 'echo file{1,2}'
file1 file2
$ /bin/sh -c 'echo file{1,2}'
file1 file2
$ /bin/bash +B -c 'echo file{1,2}'
file{1,2}
$ /bin/ash -c 'echo file{1,2}'
file{1,2}

最初の2つはbashの動作、最後の2つはshの動作なのだそうな。

bashが/bin/shとして起動された時は+Bオプションを 仮定してくれたらいいような気もするけど、Momongaではashを入れて /bin/ashでデバグするというのも手なんだろうな。 いっそのこと/bin/shを/bin/ashへのシンボリックリンクにしたりして。 (そうしたら起動しなくなったりして。)

たmblr.より。

Windows勝手にリブート問題

13日17:00HSTから17:30HSTごろの間に勝手にリブートしあがりました。UTC(マシンの時計)でいうと、14日03:00から03:30ごろ。Windows updateの設定かなあ。

Windows updateの設定をかえる

ありました。Control Panel-Security CenterからManage security settings for: Automatic Updates。Automatically download recommended updats for my computer and install them: Every day/3:00AM。これを変えればいいんだね。

時間を選ぶのは危険(夜勤の時にやられてもこまる)ので、Download updates for me, but let me choose when to install themにしてみよう。わはは。Security Centerが黄色になりました。

部屋の前に置いておいたハロウィンの余りもののお菓子がついに売り切れた。もっとかかるかと思ったけど案外あっけないものだね。

いろいろ壊れた

今日は金曜日かいなー。

STOP: 0x000000F4 (0x00000003,0x82275A30,0x82275BA4,0x805FA160)

No bootable device.

あう。

火災報知器も鳴ったよ。


2008年11月13日(木) 今日も怒られつつ

[Momonga][git] gitで管理しながらOmoiKondaraにtaskjugglerを作ってもらえるようにする

ビルドするユーザーでのgitの設定

$ git config --global user.name zunda
$ git config --global user.email 'zunda at freeshell.org'

作業用レポジトリ(って言うのかな?)の作成

$ mkdir zunda-momonga-pkgs
$ cd zunda-momonga-pkgs
$ git init

taskjugglerのインポート

$ mkdir taskjuggler
$ git add taskjuggler
$ cd taskjuggler
$ tar zxvf ~/local/packages/taskjuggler-2.4.1.tar.bz2 */taskjuggler.spec
$ mv */taskjuggler.spec .
$ rmdir taskjuggler-*
$ git add taskjuggler.spec
$ git commit

OmoiKondaraの準備。 OmoiKondara-HOWTOを読みながら。

# yum install -y ruby-rpm ruby19-rpm
$ svn co http://svn.momonga-linux.org/svn/pkgs/trunk/tools
$ make -C tools
$ cp tools/example.OmoiKondara zunda-momonga-pkgs/.OmoiKondara
$ vi -c ':set enc=utf8' zunda-momonga-pkgs/.OmoiKondara

rpmrcはMomongaのものを使う。 このファイルだけsvnに管理して欲しいところだけど。

$ cd zunda-momonga-pkgs
$ wget http://svn.momonga-linux.org/svn/pkgs/trunk/pkgs/rpmrc
$ git add rpmrc
$ git commit rpmrc

gitには.OmoiKondaraは管理してほしくない。

$ cd zunda-momonga-pkgs
$ cat .OmoiKondara > .gitignore
$ echo .OmoiKondara > .gitignore
$ git add .gitignore
$ git commit

ビルドしてみる。OmoiKondaraに怒られながら。 LANGを設定しておかないとbroken US-ASCII stringと言われて.OmoiKondaraを読めない。

$ LANG=en_US.UTF-8 ../tools/OmoiKondara -v taskjuggler
$ cd taskjuggler
$ sha256sum taskjuggler/SOURCES/taskjuggler-2.4.1.tar.bz2 > sources
$ cd ..
$ git add taskjuggler/sources
$ vi taskjuggler/taskjuggler.spec

gitに管理してほしくないファイルも追加する。

$ cat .gitignore 
.OmoiKondara
.specdb
BUILD/
SOURCES/
*/rpmrc
*/rpmmacros
*/OmoiKondara.log*

消しちゃったファイルをgitに復活してもらうのは下記?→下記

$ git show HEAD:taskjuggler/taskjuggler.spec > taskjuggler/taskjuggler.spec

というわけでOmoiKondara.logにうまくいかなかったよー、 っていうログを残してもらえるところまでは行きました。

ビルドできるようになったらgithubにpushしよう。いつ。

[Momonga] 私家版Momongaパッケージ

というわけでやっとこさTaskjugglerが作れるようになったのでgithubにspecファイルを置きました。他にパッケージを足してもOmoiKondaraで作れるようにディレクトリ構成を工夫してみました。将来にわたって使いそうならMomonga本家に移します。

Taskjugglerは、Gantt図を作る必要があるのですがMicrosoft Projectでは機能不足(期間限定のリソースの最適化ができない)ので試してみています。が、しかーし。使い方がまだわかりません。まずは例をパッケージに含めよう。

[git] 消しちゃったファイルを復活させるのはgit checkout ファイル

kouさんありがとうございました。 git checkoutで期待通りの動作をしてくれました。

$ git status rpmrc | grep -v \#
no changes added to commit (use "git add" and/or "git commit -a")
$ rm -f rpmrc
$ ls rpmrc
ls: cannot access rpmrc: No such file or directory
$ git status rpmrc | grep -v \#

で消えて、

$ git checkout rpmrc
$ ls rpmrc
rpmrc
$ git status rpmrc | grep -v \#
no changes added to commit (use "git add" and/or "git commit -a")

で復活しました。

[run] 南回りで隣りの大学を回って坂を2回登る

前の靴、皮膚リミット。時間は時計を忘れたので無し。

ジョギング用の白いTシャツを持ってくるのを忘れたので、目立たない色のTシャツで走った。轢かれるのが怖いので左側通行で進めて、暗くなってから車の通りの少ない場所を走れるコース。

本日のツッコミ(全3件) [ツッコミを入れる]

> kou [git checkout FILEじゃないですかねぇ。]

> znz [$ cat .OmoiKondara > .gitignore は $ echo .OmoiKondara > .g..]

> zunda [kouさん、znzさん、ありがとうございます。 .gitignoreの件、だいたい作業しながらcopy&paste..]


2009年11月13日(金) ひどい雨だ

[memo] Sunbirdのtrunkを作る (進んだよ編)

前回undefined referenceが出て止まっていた sunbirdづくりの続編です。

まずは見つけられないというシンボルがどこかで定義されていないか探してみました。

$ find . -name '*.cpp' | xargs grep -H ^nsDiskCache::Hash
./mozilla/netwerk/cache/src/nsDiskCacheDevice.cpp:nsDiskCache::Hash(const char * key, PLDHashNumber initval)
$ find . -name 'nsDiskCacheDevice*'
./mozilla/netwerk/cache/src/nsDiskCacheDevice.h
./mozilla/netwerk/cache/src/nsDiskCacheDeviceSQL.h
./mozilla/netwerk/cache/src/nsDiskCacheDevice.cpp
./mozilla/netwerk/cache/src/nsDiskCacheDeviceSQL.cpp
./obj-i686-pc-linux-gnu/mozilla/netwerk/cache/src/nsDiskCacheDeviceSQL.o
./obj-i686-pc-linux-gnu/mozilla/netwerk/cache/src/.deps/nsDiskCacheDeviceSQL.pp

あるよ。 というわけで、nsDiskCacheDeviceSQL.oのリンクに必要なnsDiskCacheDevice.cppがコンパイルされていないようでした。

Makefileはどうなってるかな? obj-i686-pc-linux-gnu/mozilla/netwerk/cache/src/Makefile には下記がありました。 NECKO_DISK_CACHEって何だろう?

ifdef NECKO_DISK_CACHE
CPPSRCS += \
        nsDiskCacheBinding.cpp \
        nsDiskCacheBlockFile.cpp \
        nsDiskCacheDevice.cpp \
        nsDiskCacheEntry.cpp \
        nsDiskCacheMap.cpp \
        nsDiskCacheStreams.cpp \
        nsDeleteDir.cpp \
        $(NULL)
endif

参照元はnsDiskCacheDeviceSQL.cppなので、 nsDiskCacheDeviceSQL.cppを使うときはnsDiskCacheDevice.cppも 必要ってことになりますね。

Makefileの元を編集してみよう。 えーと。hg*1は ブランチで作業したほうがいいのかしら。 とりあえずはいいか。cloneしてあるんだし。

あ、でも、 作業前にpullしておくといいのかも

$ hg pull
http://hg.mozilla.org/comm-central/ から取り込み中
変更点を探索中
チェンジセットを追加中
マニフェストを追加中
ファイルの変更を追加中
9 のチェンジセット(23 の変更を 19 ファイルに適用)を追加
(作業領域の更新は 'hg update')
$ hg diff

何が更新されたのかは見られなかったけど。

$ hg update
19 個のファイルが更新, 0 個のファイルがマージ, 1 個のファイルが削除, 0 個のファイルが衝突未解決

一度 make -f client.mk して、同じところでエラーになるのを確認してから、 mozilla/netwerk/cache/src/Makefile.in を編集しました。

$ hg diff
$ hg diff mozilla/netwerk/cache/src/Makefile.in
中止: パス 'mozilla/netwerk/cache/src/Makefile.in' はリポジトリ 'mozilla' 内にあります

むずかしい。とにかく編集しました。

$ hg diff 
diff --git a/netwerk/cache/src/Makefile.in b/netwerk/cache/src/Makefile.in
--- a/netwerk/cache/src/Makefile.in
+++ b/netwerk/cache/src/Makefile.in
@@ -76,16 +76,21 @@ CPPSRCS += \
 endif
 
 ifdef MOZ_STORAGE
 CPPSRCS += \
 	nsDiskCacheDeviceSQL.cpp \
 	$(NULL)
 
 DEFINES += -DNECKO_OFFLINE_CACHE
+ifndef NECKO_DISK_CACHE
+CPPSRCS += \
+	nsDiskCacheDevice.cpp \
+	$(NULL)
+endif
 endif
 
 LOCAL_INCLUDES=-I$(srcdir)/../../base/src
 
 include $(topsrcdir)/config/config.mk
 
 
 include $(topsrcdir)/config/rules.mk

またmake -f client.mkすると、まだソースファイルが足りないようです。

c++  -fno-rtti -fno-exceptions -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wcast-align -Wno-invalid-offsetof -Wno-long-long -pedantic -fno-strict-aliasing -fshort-wchar -pthread -pipe  -DNDEBUG -DTRIMMED -Os -freorder-blocks -fno-reorder-functions  -fPIC -shared -Wl,-z,defs -Wl,-h,libnecko.so -o libnecko.so  nsNetModule.o     -lpthread   -Wl,-rpath-link,/home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu/mozilla/dist/bin -Wl,-rpath-link,/usr/local/lib  -Wl,--whole-archive ../base/src/libneckobase_s.a ../dns/src/libneckodns_s.a ../socket/base/libneckosocket_s.a ../streamconv/src/libnkconv_s.a ../streamconv/converters/libnkcnvts_s.a ../mime/src/libnkmime_s.a ../cache/src/libnkcache_s.a ../protocol/about/src/libnkabout_s.a  ../protocol/data/src/libnkdata_s.a  ../protocol/file/src/libnkfile_s.a  ../protocol/ftp/src/libnkftp_s.a  ../protocol/http/src/libnkhttp_s.a  ../protocol/res/src/libnkres_s.a  ../protocol/viewsource/src/libnkviewsource_s.a  ../wifi/src/libneckowifi_s.a  -Wl,--no-whole-archive -L../../dist/bin -L../../dist/lib  /home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu/mozilla/dist/lib/libunicharutil_s.a -L/home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu/mozilla/dist/bin -lxpcom -lxpcom_core  -L/home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu/mozilla/dist/bin -L/home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu/mozilla/dist/lib -lplds4 -lplc4 -lnspr4 -lpthread -ldl -L../../modules/zlib/src -lmozz  -Wl,--version-script -Wl,/home/zunda/local/src/comm-central/mozilla/build/unix/gnu-ld-scripts/components-version-script -Wl,-Bsymbolic -ldl -lm    
../cache/src/libnkcache_s.a(nsDiskCacheDevice.o): In function `nsDiskCacheDevice::EvictDiskCacheEntries(unsigned int)':
nsDiskCacheDevice.cpp:(.text+0x306): undefined reference to `nsDiskCacheMap::EvictRecords(nsDiskCacheRecordVisitor*)'
../cache/src/libnkcache_s.a(nsDiskCacheDevice.o): In function `nsDiskCacheDevice::OpenDiskCache()':
nsDiskCacheDevice.cpp:(.text+0x38c): undefined reference to `nsDiskCacheMap::Open(nsILocalFile*)'
  <後略>

undefined referenceになってるメソッドが定義されてるcppファイルをどんどんMakefile.inに追加していくと、最終的には下記のようになりました。

diff --git a/netwerk/cache/src/Makefile.in b/netwerk/cache/src/Makefile.in
--- a/netwerk/cache/src/Makefile.in
+++ b/netwerk/cache/src/Makefile.in
@@ -76,16 +76,27 @@ CPPSRCS += \
 endif
 
 ifdef MOZ_STORAGE
 CPPSRCS += \
 	nsDiskCacheDeviceSQL.cpp \
 	$(NULL)
 
 DEFINES += -DNECKO_OFFLINE_CACHE
+ifndef NECKO_DISK_CACHE
+CPPSRCS += \
+	nsDiskCacheBinding.cpp \
+	nsDiskCacheBlockFile.cpp \
+	nsDiskCacheDevice.cpp \
+	nsDiskCacheEntry.cpp \
+	nsDiskCacheMap.cpp \
+	nsDeleteDir.cpp \
+	nsDiskCacheStreams.cpp \
+	$(NULL)
+endif
 endif
 
 LOCAL_INCLUDES=-I$(srcdir)/../../base/src
 
 include $(topsrcdir)/config/config.mk
 
 
 include $(topsrcdir)/config/rules.mk

ビルドはまだまだ進行中。これどこかにご報告した方がいいのかな、 と思ってmozilla以下でhg pullしていないのに気づいたのでした。

*1 「水銀」のつづりが覚えらえない

[run] CSO+76+行き止まり+周回コース+坂の下+職場の前の道1往復延長コース

久しぶりなのでどうかと思ったが、筋力も心肺機能も悪くないようだ。しかーし。体じゅうがかゆーい。

くそー。

そしてスタート時に心拍計のスタートボタンを押し忘れました。だいたい後半半分くらいの測定で、脈拍平均155、最大175BPM、ペース平均5分06秒/km。

もし3時間半を切ろうとすると5分/kmより速く走らなきゃいけないんだね。すごいや。

[memo] Sunbirdのtrunkを作る (できたみたいだよ編)

ジョギングから帰ってくるとバイナリができたみたいだった。

パッチを報告していいものか、pullからやりなおしておく。

$ cd mozilla
$ hg pull
http://hg.mozilla.org/mozilla-central/ から取り込み中
変更点を探索中
チェンジセットを追加中
マニフェストを追加中
ファイルの変更を追加中
56 のチェンジセット(561 の変更を 545 ファイルに適用)を追加
(作業領域の更新は 'hg update')
$ hg update
545 個のファイルが更新, 0 個のファイルがマージ, 0 個のファイルが削除, 0 個のファイルが衝突未解決
$ hg diff
  <上記と同じ>
$ cd ..

あー。Gettinc comm-central Source Code Using Mercurialを見ると、updateするのもpython client.py checkoutで良かったようです。

$ make -f client.mk
  <省略>
$ make -f client.mk install
Adding client.mk options from /home/zunda/local/src/comm-central/.mozconfig:
    MOZ_OBJDIR=$(TOPSRCDIR)/obj-$(CONFIG_GUESS)
    MOZ_MAKE_FLAGS=-j4
    MOZ_CO_PROJECT=calendar
make -j4 -C /home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu install
make[1]: ディレクトリ `/home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu' に入ります
make[1]: `install' に対して行うべき事はありません.
make[1]: ディレクトリ `/home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu' から出ます
$ make -f client.mk install
Adding client.mk options from /home/zunda/local/src/comm-central/.mozconfig:
    MOZ_OBJDIR=$(TOPSRCDIR)/obj-$(CONFIG_GUESS)
    MOZ_MAKE_FLAGS=-j4
    MOZ_CO_PROJECT=calendar
make -j4 -C /home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu install
make[1]: ディレクトリ `/home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu' に入ります
make[1]: `install' に対して行うべき事はありません.
make[1]: ディレクトリ `/home/zunda/local/src/comm-central/obj-i686-pc-linux-gnu' から出ます

ん?suしても同じで何も起きない。

$ ./obj-i686-pc-linux-gnu/calendar/sunbird/app/sunbird-bin 
./obj-i686-pc-linux-gnu/calendar/sunbird/app/sunbird-bin: error while loading shared libraries: libxpcom_core.so: cannot open shared object file: No such file or directory
$ find obj-i686-pc-linux-gnu -name libxpcom_core.so
obj-i686-pc-linux-gnu/mozilla/dist/bin/libxpcom_core.so
obj-i686-pc-linux-gnu/mozilla/dist/lib/libxpcom_core.so
obj-i686-pc-linux-gnu/mozilla/xpcom/build/libxpcom_core.so
$ LD_LIBRARY_PATH=./obj-i686-pc-linux-gnu/mozilla/dist/lib ./obj-i686-pc-linux-gnu/calendar/sunbird/app/sunbird-bin
Couldn't read application.ini

うーん。

$ cd ./obj-i686-pc-linux-gnu/mozilla/dist/bin/
$ ./sunbird

おぉ!起動した。

そうそう、mozillaディレクトリの状態は

$ cd mozilla
$ LANG=C hg parents
changeset:   34849:63bd5af8386b
tag:         tip
user:        Mark Finkle <mfinkle at mozilla.com>
date:        Fri Nov 13 23:23:00 2009 -0500
summary:     Bug 507817: BorderImage should not call ExtractCurrentFrame each time it draws [r=dbaron r=joedrew]

$ LANG=C hg status
M netwerk/cache/src/Makefile.in

(追記) Bugzllaに登録してみました。Submitした瞬間に10人だかの方にメールが飛んだみたい。 ご迷惑になりませんように。


作り手とその取り巻きだけが楽しんでる間は本物じゃない。その中身が理解できない人々の生活を変えてこそ本物だ


zunda <zunda at freeshell.org>