忘れたときに備えた記録

トップ 最新 追記
2005|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|11|12|
2009|01|02|03|04|05|06|10|12|
2010|06|07|08|12|
2011|07|09|
2012|09|11|
2013|02|03|09|
2015|10|11|
2016|01|08|11|
2017|02|08|10|
2018|11|

2007-05-05(Saturday)

VMwareのDebianで、時計が速くなる件

VMwareServerのゲストマシンにDebian 4.0をインストールして使っていると、時計が速く進んでしまう。

nptdateを10秒ごとに動かすとかして場当たり的にしのいでいたけど、抜本的な解決方法を求めて検索してみた。

カーネルオプションをいじったり、VMwareの設定ファイルを修正したりしたけど直らないので、カーネルを作る直すことにした。

それで気づいたのだけど、Debianのカーネルソースのinclude/asm-i386/param.hが

#ifdef __KERNEL__
# define HZ             1000            /* Internal kernel timer frequency */
# define USER_HZ        100             /* .. some user interfaces are in "ticks" */
# define CLOCKS_PER_SEC         (USER_HZ)       /* like times() */
#endif

とはなっていない。

以下のように、make menuconfig とかで変えられるようになっている。

#ifdef __KERNEL__
# define HZ             CONFIG_HZ       /* Internal kernel timer frequency */
# define USER_HZ        100             /* .. some user interfaces are in "ticks" */
# define CLOCKS_PER_SEC         (USER_HZ)       /* like times() */
#endif

これって、Debianだけの話なんだろうか、それとも最近のカーネルにパッチが当たってこうなった?

さらに調べたら、Debianのコンパイル済みカーネルパッケージでは、このHZの値が250に設定されていた。ためしに1000にしてコンパイル中。どうなるかなぁ


2007-05-06(Sunday)

MathMLライブラリと各XHTML化キットを更新

なんとバージョン付けして更新するのは実に半年振りです(汗

MathMLライブラリはRuby on Railsで使いやすいようにmath_ml.rbと改名し、文字列クラスを拡張するmath_ml/string.rbや数式を含む文書の変換に使うMathML::Util::SimpleLaTeX(math_ml/util.rb)をパッケージに入れました。

SimpleLaTeXの詳しい解説はまだ作っていませんが、このへんの資料が参考になると思います。

XHTML化キットの方では、

  • XHTML化プラグイン(x-hiki.rbとx-tdiary.rb)をMathMLプラグインに統合したり、
  • MathWikiスタイルがeqnarray環境に対応したり、
  • 文中で直接\alphaと書いても\alphaと表示できるようにしたり、

などの変更を加えています。

注意

tDiary用のXHTML化に関して一点注意があります。最新版をインストールした後は必ず以下のキャッシュファイルを削除してください。

  • data/cache/200704.parser などの、月別キャッシュ
  • (makerss.rbプラグインを使っている場合) data/cache/makerss.cache

これらのキャッシュを削除しておかないと、日記の更新時に例外が発生してしまいます。


2007-05-08(Tuesday)

usrの由来

Linuxとかのディレクトリ名に使われている usr という単語、userの略ではないというのは以前何かで見て知っていたけど、具体的に何の略だったかは覚えていなくて、最近急にそれが気になった。

こんなときのGoogle先生。

  1. usrの由来 - Google 検索
  2. スラッシュドット・ジャパン | "Re:"の悲劇…./Jよ、おまえもか
  3. 404 Not Found

というわけで、

User Services and Routinesの略

だそうな。ああすっきり。

Tags: メモ

2007-05-09(Wednesday)

Javaの文字化け on Debian 4.0

ブラウザの中でJavaアプレットを動かすと、日本語の部分が文字化けしてしまう。

なんとかならんもんかなと検索してみると、次のような情報を見付けた。

  1. 宇宙人日記(2004-12-25)
  2. Heretic Programmer(2004-12-19)

それで早速手元の /usr/lib/jvm/java-1.5.0-sun-1.5.0.10/jre/lib/fontconfig.properties を見てみると、日本語フォントは既にsazanamiになっている。

なんと単にsazanamiフォントが入っていなかっただけだった。aptitudeでインストールしたら、無事文字化け無しになりました。

Tags: メモ

2007-05-10(Thursday)

VMwareでDebianの時計が遅くなる件

  • CONFIG_HZを変えてカーネルを作る直したり、
  • 起動オプションを色々といじったり、
  • .vmxファイルを書き換えたり

とまあ、散々っぱら色々と試したけど、どうしてもゲストOSの時計が早くなったり遅くなったりする現象が直らなかった。

それが今日、ふと思いついてホストマシンのBIOS設定でCool&QuietをDisableにしてみたら(ホストマシンはCPUがAMDのAthlon64x2 4800+)、解決してしまった。こんなところに原因があったとはなあ。

ちなみに、BIOSをEnableにしたまま、ホストOSのWindowsXPの電源設定で「常にオン」(これで一応Cool&Quietの動作周波数変動機能が働かなくなる(らしい))にしても、ゲストOSの時計がおかしくなる現象はそのまま。ホストマシンのBIOSからDisableにしないと駄目と分かった。

Tags: メモ

2007-05-11(Friday)

VMwareのゲストOSの時計

今朝見たら、3時間も遅れていた。あれぇ〜?

Tags: メモ

2007-05-21(Monday)

Apacheのwarning回避

手元の開発用マシンでapacheを再起動する度に次のような警告メッセージが出ていたのがずっと気になっていた。

hiraku@hirakuro:/etc/apache2/sites-enabled$ sudo /etc/init.d/apache2 restart
Forcing reload of web server (apache2)...apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

何度か、調べても直せないことを繰り返していたのだけど、今日ついに解決できたのでメモ。

参考にしたのは、封島雑記: [VineLinux]メモ

/etc/hosts で、

127.0.0.1       localhost localhost.localdomain hirakuro hirakuro.localdomain

となっているのを

127.0.0.1       hirakuro.localdomain localhost localhost.localdomain hirakuro

と直すだけ。

ApacheでWebサーバの名前として使っているホスト名を最初に持ってくれば良いわけ。これで警告が出なくなった。

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

_ asesino [おかげで解決しました。 Debian GNU/Linux 4.0 (etch) にバージョンアップしてから、 同じ問..]


2007-05-23(Wednesday)

分散バージョン管理

svkを使ってファイルを管理していたら、あるファイルで、元のSubversionのリポジトリでは実行フラグがついているのにsvkでチェックアウトしたファイルからは実行フラグが外れているという現象に遭遇した。

たまたま何日か前にMercurial で手軽な共有レポジトリをつくろう - www.textfile.orgMercurialというものを見かけていたので、少し調べてみた。

情報をある程度集めることができたのは

の2つだ。

Tags: SCM

Mercurial。

略称は'hg'

参考にしたページは

など。

コンパイルが簡単だという話で、実際に試してみたら本当に簡単にコンパイルできた。svkとはえらい違いだ(svkのコンパイルが大変すぎるのか)。

1つのプロジェクトに対して1つのリポジトリを作る。Subversionでいう作業コピーとリポジトリがhgでは同一に扱う。また、Subversionのようにサブディレクトリだけをチェックアウトとかcloneしたりはできない。

ブランチを作るときにはリポジトリ自体の複製を作る。このとき、リポジトリの作業用ファイルは独立したものになるけど、履歴情報などのファイルはハードリンクを使って複製元のものとある程度共有することでディスクの消費量を押さえている。これは次のようにして確認できた。

まず、適当なリポジトリのクローンを作る。

~/tmp$ hg clone http://selenic.com/repo/hg-stable
destination directory: hg-stable
requesting all changes
adding changesets
adding manifests
adding file changes
added 4073 changesets with 7791 changes to 581 files
506 files updated, 0 files merged, 0 files removed, 0 files unresolved
~/tmp$ du -sh *
9.5M    hg-stable

全部で9.5M。これの、ローカルのコピー(クローン)を作る。

~/tmp$ hg clone hg-stable my-hg
506 files updated, 0 files merged, 0 files removed, 0 files unresolved
hiraku@unidon:~/tmp$ du -sh *
9.5M    hg-stable
3.3M    my-hg

クローン先のファイル量はクローン元のものより少ない。

hiraku@unidon:~/tmp$ du -shl *
9.5M    hg-stable
9.5M    my-hg

duにlオプションをつけると、ハードリンクも別々に計算する。今度は同じ量で表示されている。

hiraku@unidon:~/tmp$ rm -rf hg-stable/
hiraku@unidon:~/tmp$ du -sh *
9.5M    my-hg

クローン元を消すと、当然クローン先だけが残って、ファイル量は9.5Mに。

一方、リポジトリの中でファイルのコピーや移動を行うと、その分だけディスクの消費量が増えるようだ。

だからたとえば、大量のファイルが入っているサブディレクトリを途中で名前変更したりすると、そのディレクトリに入っていたファイルの量だけリポジトリが消費するディスクの量が増大してしまう。 Subversionでは単に「コピー/移動を行った」という情報だけの保存になるのでこの点はちょっと残念。 ただし、コピー元、移動元の情報はきちんと残っているようだ。

Webでリポジトリを公開するためのCGIが付属していて、Mercurialのリポジトリのようなページを手元で簡単に公開することができる。特に、gzで固めたものやRSSによる更新情報を自動的に作ってくれるのは素敵。

svkの

svk push -l

に相当する機能がないようで、いろいろ調べた結果、ここに乗っているやり方を使えば、手動ではあるけど、複数のコミットを1回のリビジョンにまとめる事ができるようだ。

Tags: SCM

git

Linus B. TorvaldsがLinuxのカーネルソースを管理するために作ったSCM。

参考にしたのは、

など。

なんと、ファイルの移動とかはあるけど、コピーがない。まぁ、確かにあまり使わないけど。

つまり、

git mv hoge.c fuga.c

は出来ても、

git cp hoge.c fuga.c

は出来ない。

ファイル移動の際は、Subversionと同様に「移動した」という情報だけを保存するようだ。この点はhgに勝ってる。

Webでリポジトリを公開する用のCGIもついている。Debianでは、gitwebという別パッケージになっていた。

このgitwebは、Debianでは

  • /etc/gitweb.conf : 設定ファイル
  • /usr/lib/cgi-bin/gitweb.cgi : CGI本体

に分かれている。gitweb.cgiを自分のホームディレクトリのpublic_htmlの下にでも置けば、自分用の公開ページが作れる。実際の手順としては、

リポジトリをまとめるためのディレクトリを作る

$ mkdir ~/gits

各リポジトリの.gitファイルへのリンクを、この中に適当な名前で張る。

$ ln -s ~/work/hoge/.git ~/gits/hoge.git

次にgitweb.cgiの

our $GITWEB_CONFIG = $ENV{'GITWEB_CONFIG'} || "/etc/gitweb.conf";

our $GITWEB_CONFIG = "/home/myname/gitweb.conf";

とか直して、自分専用のgitweb.confの置き場所を指定する。

最後に gitweb.conf の

$projectroot = "/var/cache/git";

$projectroot = "/home/myname/gits";

とする。これでリポジトリを公開できる。

svk push -l

に相当する機能は、

git pull --squash

で出来る。svkの方はlump(塊)でgitはsquash(押しつぶす)。この単語を知らなくて、最初はマニュアルに載っているのを見逃してしまった。

Tags: SCM

pushできるgitのリポジトリの公開

さっき試してみたら、gitwebではブラウザでの閲覧だけが出来て、gitでのcloneが出来なかった。

$ git-clone http://git/repos/test/
Cannot get remote repository information.
Perhaps git-update-server-info needs to be run there?

いろいろ試してみたら、リポジトリの.gitディレクトリにhttpでアクセスできればcogitoを使ってcloneは出来るとわかった。

cg-clone http://git/repos/test/.git

ただし、これだけではcloneしたものに変更を加えてもpushすることは出来ない。

Unable to lock remote branch refs/heads/master

というエラーが出る。

これを解決するには、まずApacheの設定で、gitのリポジトリを入れてあるディレクトリの設定に

DAV on

を追加する。詳しくは

で解説されている。

ただ、Debian4.0ではこれだけではだめで、以下の手順が必要になる。

$ sudo a2enmod dav_fs
$ sudo chown -R www-data.www-data /var/lock/apache2/

2つ目のコマンドはWebDAVに使うファイルの置き場所の所有権を変更している。 このディレクトリは、Apacheが動作するwww-dataユーザの権限で書き込めないといけないのに、Debianでは所有者がrootになっている。

だから、chownしておかないと、cg-push したときに

Unable to lock remote branch refs/heads/master

と怒られる。

Tags: SCM