トップ 最新 追記

Catra's Diary

2005|01|02|03|05|06|07|10|
2006|05|07|09|10|11|
2007|06|07|08|
2008|01|02|07|09|11|12|
2009|06|
2010|03|07|
2011|01|
2013|05|

2005-06-15 [Wednesday]

_ 特に何もないが

Debian パッケージの mingw32, mingw-binutils, mingw32-runtime を使った cross 開発環境整備にちょっと興味が。 取り合えず mmap(2) 互換関数を呼び出すコンソールアプリはビルドから wine を使った動作確認まで出来た (一部 C++(STL) を使用)。

あとは、zlib の利用部分をなんとかすれば mingw ビルドの git くらいは実装可能だろう。

DLL を利用する開発と、GUI アプリ、インストーラまで網羅できれば、結構快適な開発環境が作れるのではないかな。 boost、WiX、Qt 4.0 と言ったライブラリの整備と、ruby や Gauche、msys のビルドが可能なあたりまで持ってこれれば。


2005-06-18 [Saturday]

_ Practical Common Lisp

<URL:http://www.gigamonkeys.com/book/> に全文あり。

基本的な文法、使いかたの説明の後、実践的な問題に対する実装について説明という構成。 Practical だけ抜き出すと、以下のような構成になる。

  • Practical: A Simple Database
  • Practical: Building a Unit Test Framework
  • Practical: A Portable Pathname Library
  • Practical: A Spam Filter
  • Practical: Parsing Binary Files
  • Practical: An ID3 Parser
  • Practical: Web Programming with AllegroServe
  • Practical: An MP3 Database
  • Practical: A Shoutcast Server
  • Practical: An MP3 Browser
  • Practical: An HTML Generation Library, the Interpreter
  • Practical: An HTML Generation Library, the Compiler

構成だけだと他の言語(Perl や PHP など)での WEB プログラミング解説書と大差ない (RDBMS 接続への言及がない分本書の方が弱い)。 本文にどれだけ Lisp の優位性を書ききれているかが評価の分かれめとなるだろう。

今のところ 3 章までしか読んでないし、実際に試してもいないのでなんとも言えないが (前提とする環境は SLIME。 残念ながら現在公式 Debian パッケージは準備中のまま。 apt-gettable ではないが ここに Debian パッケージがある )。


2005-06-20 [Monday]

_ SCM: mercurial

<URL:http://www.selenic.com/mercurial/>@IT:Linux Kernel Watch 6月版 より。

実体は Python スクリプト。Windows でも動きそうだが、ActivePython を使っている場合は ./setup.py 実行中に Visual C++ 7.1 が必要と言うメッセージが出て中断。 pyMinGW を検討中。

$ time hg init
real    0m0.124s
user    0m0.107s
sys     0m0.017s

$ time hg status
real    0m1.320s
user    0m0.579s
sys     0m0.226s

$ time hg addremove
real    0m0.873s
user    0m0.670s
sys     0m0.198s

$ time hg commit
real    1m5.913s
user    0m28.554s
sys     0m14.562s

# ここで gcc-3.3.2 を上書き。
$ cat ../del1.txt | xargs rm
$ time hg addremove
real    0m44.823s
user    0m8.257s
sys     0m5.088s
$ time hg commit
real    1m8.720s
user    0m28.994s
sys     0m5.432s

# ここで gcc-3.3.4 を上書き。
$ cat ../del2.txt | xargs rm
$ time hg addremove
real    0m43.061s
user    0m7.369s
sys     0m4.731s
$ time hg commit
real    2m9.318s
user    1m28.856s
sys     0m5.561s

# ファイル1個を更新して commit.
$ vi README.SCO
$ time hg commit
real    0m42.179s
user    0m7.510s
sys     0m4.493s
$ vi README.SCO
$ time hg commit README.SCO
real    0m5.400s
user    0m0.730s
sys     0m0.104s

# 使用する領域。
$ du -s .
339995  .
$ du -s .hg
155937  .hg

git と比較しても、 遜色ない速度で処理してくれる。3.3.2、3.3.4 コミット時にかかる時間が git よりも長いのは、 多分差分をとっているから。 かかる時間の多くは HDD 待ちのようで、高速な HDD や RAID-0 などを使うとさらに短時間で処理できそう。

今のところまだ全部が実装されているわけではないが(特に異常系の動作確認がまだのようだ)、 このまま実装が進んで完成度が高まれば結構使えるリビジョン管理システムになるかも。

気になるのは、差分で管理しているはずなのにこの場合は git よりも領域が必要になる所。 しかし Linux カーネル(Bitkeeper 時代も含む)の全履歴では git が 3.5GB なのに対して mercurial で 300MB 程度という話。 git との比較 が ML にあがっていた。


トップ 最新 追記