hns - 日記自動生成システム - Version 2.19.6
[天気:雨]
#1
source code coverage test
昨日は休んで寝てました。どうも調子がよくありません。
それはともかく、今日はソースコードの実行カバー率を調べる方法を
みていました。gccの場合、標準でgcovという解析ツールがついていました。
しかしこれは単独で動作するものではなく、gccに
"-fprofile-arcs -ftest-coverage"という2つのオプションをあたえた
バイナリの実行が必要です。autotool化したソースなら、通常
% CFLAGS="-fprofile-arcs -ftest-coverage" ./configure
というようにすれば使えるはずです。
バイナリを実行させると、.bb, .bbg, .daという拡張子の付いたファイルが
生成されます。これらはオブジェクトファイルと対応付けられており、
gcov test.cなどとすればtest.cに対する実行カバー率が表示されます。
% gcov string_1.c
100.00% of 123 lines executed in file string_1.c
Creating string_1.c.gcov.
上記はtest suiteであるテストの例ですが、testなので100%が出て当然といえば
当然です。実際にはライブラリ化した別のソースがあるので、それを
みないと意味がありません。
今回試したコードの場合src以下にライブラリを置いているのですが、
それを確認するには例えば以下のようにします。
$ cd ../src
$ % gcov -o .libs nmz_string.c
77.08% of 192 lines executed in file nmz_string.c
Creating nmz_string.c.gcov.
.libs以下に共有ライブラリの実体と.daファイルが生成されるので、
そこを参照するようにしないといけません。
ともかく、これでソースコードのカバー率を調べられるようになりました。
きっと他の言語でも同様のものはあるでしょう。
[天気:晴]
#1
meet with Warren Togami
先日はFedora Projectの創始者であるWarren Togami氏にあいました。
主に日本語入力ソフトウェアに関連する人達とのミーティングという感じで、
いろいろな議論がなされていたようです。
いかんせん私は6時ごろから参加したので、既にかなりの議論がなされた
状態でした。ホワイトボードを用いていたので、ざっとその内容をみた
感じではフォントの問題、日本語入力の複雑さなどについて議論があった
ようです。
Warren氏自信はわずかながら日本語ができるそうで、ちょっとした会話の
中に日本語が出てくることがありました。今後もメールベースで議論を続けて
いくことになりそうです。
[天気:晴]
#1
msys-1.0.dll and cmigemo
Meadowに付属のcmigemoはcygwinでbuildされていて、あえてcygwinを
避けている会社の環境では動かなかったのですが、MSYSを入れたら
動くようになりました。
ちょっと調べてみると、MSYSが提供するdllはもともとcygwinのdllに
由来しているそうです。それで必要な関数群がそろってしまって
動くようになったと思われます。
はたしていいことなのか悪いことなのか。
[天気:晴]
#1
prototyping with LL
あいかわらず不調にあえいでいる状況ですが、そんな中
Namazuのインデクサ、より正確にはpl/nmzidx.plをCで書き直そうという
構想をずいぶん前からやっています。
しかしながらその進みは牛歩のごとくちっとも進みません。
一度、より高級な言語でプロトタイプを書いたほうがよいような気が
してきました。何度も初期コードを書き捨てしているので、
それなら別言語で書いてもいいかな、という感じです。
[天気:雨]
#1
mathematician and engineer
仕事に関連して、とあるアルゴリズムをいろいろと考えていたのですが、
とりあえず計算量を減らせそうな手法を思い付くことができました。
しかしながらいかにも数学的な問題にみえるので、きっと確立された
手法があるに違いないと調べていたら、やっぱりありました。
やはり数学者は偉いと思った次第です。計算機を使うと、ある程度
現実的な速度で動作すればそれで済むことも多いので、そこまで突き詰める
ことがあまりないのですが、真理を探求する姿勢の数学者には
かないません。
[天気:晴]
#1
portable I/O library
libnmzの再実装が進まない理由のひとつに、I/Oまわりの問題があります。
できれば抽象化して、ローカルファイルシステム以外も扱えるように
したいという野望があるのですが、その設計をしては捨て、しては
捨てという状態です。
そもそも自分で作るなどという話もあるのですが、どうもよさそうな
ものが見当たりません。glibにないかな、と思ったのですが
GIOはイベントループと組み合わせるためのもののようなので、
これはちょっと目的にあいません。
QtでいえばQFileみたいなものがあるとわりとよさそうなのですが、
独立性が高くていいライブラリはありませんかね。
一番近いのはこれなんですが、やはりGNOMEに依存するのは
ちょっとどうかなという感じです。
@
need to read:
とにかくコードをみてみました。まさにやりたいことが実現されています。
対象がseekできない場合にはそのエミュレーションまで行う
徹底ぶり。こういうのはやはり下手に素人が手を出して劣化したものを
作ってもしょうがないということを痛感しました。
[天気:晴]
#1
file 4.15 license
NetBSD hackerであるところのChristos Zoulasさんが主にメンテナンスしている
現在のfile(1)コマンドなんですが、昔は4-clauses BSD Licenseだった気がしたのに
今みると2-clausesになっています。うれしい発見です。
以前は古いfileのコードを使ってたような気がしたのですが(記憶おぼろげ)、
今はまるまる書き直されたファイルもあるようです。
すでにperl bindingもありました。これでわざわざ自分で作らなくても
よくなりました。
#2
gzip --rsyncable
gzipにはrsyncにやさしい圧縮をする--rsyncableというオプションがあります。
何度かdebian-develメーリングリストで、debの圧縮をこれにしようという
議論がでるので、その存在を覚えていました。
仕事で、定期的に一部の変更がある大きなファイルを細い回線経由で
コピーする羽目になったので、例にこれを使ってみました。当然ながら
元データとの差がどれくらいあるかにもよるのですが、大半はせいぜい
1.1倍程度、調子がいいと2倍くらいの速度でsyncできるようです。
debian-develで採用されない理由がわかった気がします。それでもまあ
今はしないよりマシなのでこれを使っています。
@
sometimes effective:
と思ったら、圧縮前でも差分がちいさいであろうファイルを処理させて
みたらかなり効果的面でした。128kbps回線で、下手をするとMB/secぐらいの
表示がでてきたりします。最初に試したのは差分が大きすぎた
のかもしれません。
#3
rewrite RSS URL
この日記の古いRSS(index.rss)をみにきたらrss.cgiに差し替えるように
しました。以下のような感じで設定しています。
RewriteEngine on
RewriteBase /~knok/diary/
RewriteRule ^index.rss rss.cgi
以上、7 日分です。
タイトル一覧