BeOS R5 on VMware Player

以前、こたつプログラミング用にノート PC の Virtual PC 上に BeOS の開発環境を作りましたが、もうこたつはいらなくなったので、デスクトップ PC 上でも同じことを行いました。
でも、Virtual PC 上の BeOS は時計が進むのがめちゃくちゃ速い。というか、実際の1秒の間に3秒くらい進んでいます。
どうも CPU が 750MHz と誤認識されているのが原因のようです。(実際のホスト側 CPU クロックは 2.13 GHz)

ここにある cpu_fix and system_time_patch のパッチを使うことでうまくいきそうですが、Virtual PC 上ではなぜか起動に 1 分くらいかかるようになってしまいました。

そこで、VMware Player ではどうだろうと思って試してみました。
VMware Player のバージョンは 2.0.3 build-80004。BeOS の環境を再び作るのは面倒なので、NHC というツールを使って Virtual PC の HDD イメージを VMware 用のイメージに変換しました。
あと、.vmx ファイルの簡単編集用に VMX Builder も使いました。
その結果、起動もそれほど遅くなく、時計も進まない状態になりました。
ちなみに、ネットワークは BeBits にある vlance ドライバを使えば大丈夫です。
それよりも、サウンドーカードとして es1371 を選んだところ、BeOS で音が鳴ることにびっくりしました。といってもちょっぴり音が割れるんですけど。
うちの家には BeOS で音を鳴らすことができるマシンは 1 台しかなく、普段の開発に使っているマシンでは音が鳴りません。Virtual PC でもサウンドカードを認識できなかったのですが、VMware Player では認識できたことに驚きました。
[PR]
# by hironytic | 2008-05-05 11:14 | 近況

[CoveredCalc for Windows] VC++ 2008 とフォントと言語ファイル

キーカスタマイズの UI を作るのが面倒になって現実逃避中です。
現実逃避のひとつとして CoveredCalc for Windows のコンパイラを Visual C++ 2008 Express Edition にしてみることを検討してみたり。まあ検討しているだけでしばらく現在の Visual Studio 2005 Standard Edition から変わることはないですが。

それはそうと、ダイアログのフォント、現在は日本語なら "MS UI Gothic" 9pt を、英語なら "MS Shell Dlg" 8pt を使っています。XP まではこれでまあよかったんですが、Vista は本当にこれでいいんかいなとちょっと考えたりしてます。日本語版なら "メイリオ" がやっぱりきれいなんじゃないのかなあとか。英語版でも、"MS Shell Dlg" だと "Microsoft Sans Serif" になるみたいですが、Vista では "SeGoe UI" が標準っぽい。

これまでは、どうも "MS Shell Dlg" を使うことで多言語対応できますよ、といったスタンスをマイクロソフトはとっていたように思うんですが、ここを見る限り、Vista では、英語向けなら "SeGoe UI"、日本語向けなら "メイリオ" というように明示的に対応させろと書いてあるように見えます。スタンスが変わったんかいな。(まあ、そもそも "MS Shell Dlg" でも Non-Latin な Windows 9x が対応してなかったので、CoveredCalc では日本語向けリソースでは "MS UI Gothic" を指定したわけで、以前からあんまりすっきりしてなかったのですが)

CoveredCalc の現在の言語ファイルと対応 OS だけで考えると、
Windows 9x 系:日本語="MS UI Gothic"、英語="MS Shell Dlg"(="MS Sans Serif")
Windows 2000/XP:日本語="MS UI Gothic"、英語="MS Shell Dlg 2"(="Tahoma")
Windows Vista:日本語="メイリオ"、英語="SeGoe UI"
あたりが一番きれいなのかもしれません。Windows 2000/XP 日本語は "MS Shell Dlg 2" でもいいかもしれませんが。
でも、利用 OS でフォントを変えるならリソースファイルだけでは対応しづらいんですよね。そうなってくると、言語ファイルをリソースファイルとして保持する必要はなくなってきて、BeOS 版と同じように XML ファイルにしてもいいんじゃないかとか思ってきてます。

どちらにしても、当面はキーカスタマイズの作業が待っているのですが。
ってことで現実逃避でした。
[PR]
# by hironytic | 2008-03-23 16:51 | 開発状況

こたつプログラミング

2 週間ほど前に我が家にもこたつが導入されました。
10年ちょい前に一人暮らしを始めて以来、それから結婚した後もずーっとこたつのない生活だったんですが、久しぶりにこたつの良さを実感しました。

ただ、こたつが置かれた部屋は 2 階。普段、パソコンのある部屋は 1 階なので、パソコンに向かうとこたつの恩恵を受けられません。
というわけで、最近は少し古いけどそれなりに快適に動作するノート PC を使ってこたつでプログラミングしています。
1024x768 のスクリーンがちょっと狭い...

このノート PC では BeOS は動作しないので Virtual PC で BeOS R5 も動くようにしました。
Virtual PC ってホスト側 OS の CPU がゲストにも関係あるんですね。
最初、デスクトップの Intel PC で BeOS R5 のゲストイメージを作ったんですが、ノート PC に持って行ったら動かなくて悩みました。
結局、ノート PC の CPU が Athlon XP-M で、BeOS R5 がそのままでは対応してなかったのが原因でした。Athlon パッチをあてたら動くようになりました。

作業はあんまりはかどってませんが、暖かいのでまあいいか、って感じ。
[PR]
# by hironytic | 2008-02-16 00:56 | 近況

[CoveredCalc] ショートカットキー

Haiku-Development ML の方でショートカットキーの議論がされてる
CoveredCalc のキーカスタマイズはショートカットキーとはちょっと違うけど、将来 Haiku のショートカットキーの実装方法が変わったら、CoveredCalc BeOS 版のキーカスタマイズの考え方も変わるかもしれない。
[PR]
# by hironytic | 2008-02-04 21:33 | 構想

[CoveredCalc] キーコードからキー名称取得 2

BeOS 版のキー名称取得方法として
キーマッピングでマップされた文字をとったりすると小文字ばっかりとれてしまいそうだし、
とか書いちゃいましたが、小文字がとれたら大文字にすればいいだけでこれに関しては問題ありません。
ファンクションキーとかテンキーが取れないのが問題。

なので、ファンクションキー、テンキーなどはソフトに添付した XML ファイルに定義を書いておいて、それから漏れたものはキーマップから取得(ついでに大文字化)、それでもとれなかったら "keycode-xx" というのが良さそうです。

ということで、再びまとめなおすと、

1. ソフトに添付した XML ファイルに定義があればそのキー名称を使う。
2. (Windowsの場合) GetKeyNameText() API を使ってキー名称を取得。
2. (BeOS/ZETAの場合)キーマップからモディファイアなしの文字を取得して大文字化。
3. それでもダメなら "keycode-xx"。
[PR]
# by hironytic | 2008-02-04 20:23 | 構想

[CoveredCalc] キーコードからキー名称取得

ここんとこほとんど開発がすすんでいませんが、とりあえずキーコードからのキー名称取得の調査段階にいます。
Windows 版の場合は次のようにしてやればいいかなーと考えています。
DWORD virtKey; // ここに仮想キーコードが入っている
TCHAR buf[128];
UINT scanCode = MapVirtualKey(virtKey, MAPVK_VK_TO_VSC);
if (0 != scanCode)
{
    if (0 != GetKeyNameText(scanCode << 16, buf, sizeof(buf)))
    {
        // キー名が取得できた。buf が文字列。
        return;
    }
}

// それでもとれなければキーコードをそのまま表示することにする
// virtKey を "keycode-2f" みたいに
sprintf(buf, "keycode-%02x", virtKey);


BeOS 版の方は問題で、たぶん、キーコードからキー名称を取得するような API はないですね。
キーマッピングでマップされた文字をとったりすると小文字ばっかりとれてしまいそうだし、ファンクションキーとかテンキーとかは思ったようにとれないし。
ということで BeOS 版の方はキーコードとキー名称の対応表みたいなのを XML ファイルで持っておこうかなとか思ってます。これなら楽ちん。

Windows 版の方も同じ XML ファイルを持っておいてもいいですね。特に定義は追加しないで。デフォルトの表記じゃ区別できないキーボードとかそういうのを使ってる人がカスタマイズする最後の手段を残しておくという意味しかありませんが。

ということでまとめると

1. ソフトに添付した XML ファイルに定義があればそのキー名称を使う。
2. (Windowsの場合のみ) GetKeyNameText() API を使ってキー名称を取得。
3. それでもダメなら "keycode-xx"。
[PR]
# by hironytic | 2008-01-29 23:30 | 構想

[PonpokoDiff] ベータ版公開 (version 0.1.0)

ベータ版といえる出来には仕上がっていませんが、とりあえず試してみるくらいのことはできると思うので version 0.1.0 として公開しました。
CoveredCalc と同じように Google Code Project Hosting を利用してソースも公開してあります。

プロジェクトサイト:
http://ponpokodiff.googlecode.com/

シンプルすぎる最低限の機能しか持っていません。試してみても、「え?これだけ?」と思うかも。
というか、エラーメッセージが全然出ません。エラーにならないわけじゃなくて単にメッセージを出す部分をまだ実装していないからです^^;
[PR]
# by hironytic | 2008-01-12 18:44 | 開発状況

[PonpokoDiff] GUI な diff アプリケーション

あけましておめでとうございます。
本年もよろしくお願いします。

a0011820_0142929.gif

というわけで、CoveredCalc の開発とは別に、BeOS 上の GUI な diff アプリケーションとして「PonpokoDiff」を開発中です。
去年末から diff アルゴリズムを調べたりしていましたが、その成果といえるでしょうか。本当はもともとこのアプリを作りたいがためにアルゴリズムを調べていたわけですが。

とはいうものの、まだメニューなんかは全然動いていなくてなんとか差分抽出の表示ができる程度です。
もう少し実装してメニューが動くレベルになれば、こちらも MIT ライセンスのオープンソースで公開するつもりです。

CoveredCalc を作っていて、差分をとりたいときに自分好みの GUI なアプリケーションを見つけられなかったので、いっそ作ってしまえと思ったのが始まりです。そういう背景なので、目的を満たしてしまえば、それ以上の拡張にはなかなか手を出さないかもです。
フォント設定とか、日本語コード自動判別とか、差分のマージ支援とか、差分表示部分をレプリカント化して他アプリに貼り付けてスクリプティングにより部品として動作させられるようにするとか、いろいろネタはあるのですが‥‥。
[PR]
# by hironytic | 2008-01-05 00:16 | 開発状況

差分抽出

ここのところ diff というかテキストファイルの差分抽出に興味があって、Myers らの論文を見たりしてました。
An O(ND) Difference Algorithm and its Variations
An O(NP) Sequence Comparison Algorithm

詳しくはこちら...
[PR]
# by hironytic | 2007-12-13 15:57 | 近況

[CoveredCalc] 次バージョン

1.9.0 をリリースしたばかりですが、次の 1.10.0 の予定も公開してみたり。
1.10.0 のリリースまでこのタスク表をきちんと更新していけたなら、その次のバージョン以降もこのフォーマットのタスク表を使うつもりです。

それはそうと、プロジェクトページダウンロードのところ、1.8.1 の Featured ラベルを何度消してもしばらくすると元に戻ってしまいます。
おかげでトップページに 1.8.1 がしょっちゅう顔を出してしまいます。‥‥なんかトラブルが発生しているんでしょうか!?>Google Code Project Hosting
[PR]
# by hironytic | 2007-11-26 15:33 | 開発状況