2009/04/20(月)UO のジャーナル保存:根本的に間違ってました

<CR> が 0x0d、<LF> が 0x0a。
なので言ってることもサンプルコードも根本的に間違い。<LF><CR> っていうのが改行コードのつもりで残るので、読めるけど行頭にゴミが入る、もしくは改行されない、というファイルが出来上がる。
他にも sizeof(char) でサイズ決めたり、char で変数宣言してるけど、意図的には単純に 1Byte 単位のデータが欲しいのであって char が欲しいのではない、とか。

で、UO のジャーナルは改行が 0x0d0a000d00 となっているのを 0x0d000a00 に置き換えるのが正解。
0x0d0a00 を 0x0d000a00 に置き換えて、0x0d00 を削除するのが簡単か。
どうなったらこういう改行コードが付くんだろ。

ということを踏まえて書き直して、UTF-8 への変換を書いて遊んでた。コードは長いので略。
ググって出てくる iconv(3) のサンプルもまともなものが少ないという悲しさよ。

2009/04/19(日)続・UOのジャーナル保存

UO をネタにプログラムで遊ぶ日記になってきた。

久しぶりに C を書きたくなったので、ミソな部分+αを書いてみた。
  • シングルバイトな<LF> を取り除いて
    • 諸悪の根源を除去
  • <CR> も邪魔なので取り除いて
  • ついでに <LF> が連続する場合も取り除いちゃう
というプログラム。

後は
  • UTF-16-LE な文字コードを UTF-8 か Shift-JIS に変換
    • マルチプラットフォームで文字コード変換できるライブラリってあるんかな
  • 処理結果をファイルに保存
    • 10行くらいの追加でとりあえず OK
すれば機能は十分。GUI が付けば完璧。やらんけど。

UO のジャーナルファイルは一度のゲームで数百KB 程度になるらしいので、一度に処理するバッファのサイズは 128KB くらいがちょうどいいのかなぁ。

続きを読む

2009/04/17(金)DRM

FreeBSD 7-stable に radeonhd 向けの drm モジュールが導入された。結構前に。
  • drm をガシガシ MFC するぜ!
  • drm って何ですか?
  • Digital Rights Management だよ。
っていう 2ch ばりのやりとりが FreeBSD-stable メーリングリストで繰り広げられていたアレだ。

ports フリーズのタイミングに合わせて kernel を更新してみた。合わせる意味があるかというと、無い。更新後、/dev/dri が生えたことを確認。
我が屋のオンボードな Radeon はまだ調整が必要なため標準では drm はオフ、かつ、カーネル側の drm も 3D アクセラレーションは未対応な状態。で、xorg.conf をほげほげして X を起動すると...、ブラウザのスクロールがカクカクする。ウィンドウを移動した際の再描画が遅い、が、恐らく drm の効果なのだろう、一瞬遅れるもののウィンドウ全面が一気に描画される。当然 GLX な描画は速くならない。
と言う訳で drm は無効に戻しました。
  • Phenom 向け cpufreq はまだ MFC されてこない模様。
  • AMDチップで USB デバイスを挿したまま起動するとそのポートが死ぬ現象は今議論中。
あとはー、hal, dbus VS. X.org あたりをまた試してみるかな。

2009/04/15(水)いまさらながら Windows7

ディスク交換でスペースが空いたので、すごい遅ればせながら Windows7β を試してみた。Ultimate 64bit版。

軽くなったと言われてるけど、比較対象の Vista はノート PC なのでよくわからん.
CPU, メモリの消費が抑えられてもノートの場合はディスクアクセスがボトルネックになるので。
お試しなのでアンチウィルスは無料で使える Avira を入れてみた。
IE を立ち上げたり UO してる分には重いとは特段感じない。もっさり感もない。

Meadow, PuTTY, X 等、日常に必要なものは問題なく動くようだ。ActivePerl も x64 版がリリースされていた。

後はお遊び系が動くかどうかだなー。
音楽関連のドライバは Vista x64 に対応してたのでいける気がする。ソフトは試してないけどハードウェアのおまけに付いてきたやつで古いから微妙。
ゲームは UO が動いてるのでまぁ、いい。IME の変換ウィンドウが変なところに出るのは Vista と変わらずだけど。
DirectX 系のゲームは動かなくても別にいいけど、nVidia が早速 Windows7 向けドライバを出すというフライングをかましていたので下手に低次元なところに手を入れてるようなゲームでなければ動く気がする。
低次元っていうのは低脳じゃなくて下層のレイヤってことね。
HKLM や Program Files の中にユーザーデータを平気で保存してたようなソフトはきっと動かない。マイクロソフトの英断に喝采。

と、Windows7 を試していたら押入れに突っ込んである Vista を使ってもいいような気持ちになる不思議。

2009/04/11(土)メインPC復活

ハードディスク引越し完了。80GB だった容量が 250GB にアップ!ですが、C のパーティションは 40GB のまま。分割済みのパーティションを伸ばすソフトも持ってるけど 191.95GB の未割り当て領域はずっと未割り当てのまま使う気がします。

FreeBSD なファイルサーバに HDD を繋いで、[fman:dd] でコマンドでさくっと。

元のディスクを繋いで、
$ sudo dd if=/dev/da0 of=/win_da0.img bs=1m
新ディスクを繋いで
$ sudo dd of=/dev/da0 if=/win_da0.img bs=1m
新ディスクを元のPCに繋いで終わり。
ついでにTVチューナーと無駄に3台繋がっていたHDDを一つ取り外し。省電力でエコ。

元のディスクは
$ sudo dd of=/dev/da0 if=/dev/null bs=1m
でゼロクリアしてから捨てます。