とにかく書く

日々の雑感や知り得たことを、とにかく書いています

Google Test でC言語のプログラムをテストする

Google TestC言語のプログラムをテストするようにできたのでメモ書き。

C言語でプログラムを書いていて、CUnit でテストコードを書いていたのだけれど、CU_ASSERT_EQUAL などで failure になっても「どんな値で failure になったのか」が分からなかった。Google Test なら

  • failure 時に、どういう結果のためにfailure かがわかる
  • テストの追加が簡単にできる
  • テスト結果が見やすい

ためにやってみた。

続きを読む

TABLE の行(tr)の入れ替え

JavaScript で table の行(tr)を入れ替えようと次のように書いたら Node not found っていうエラーが出た。

function swap(a, b) {
	var table = document.getElementById('table_name');
	var clone = table.rows[a].cloneNode(true);
	table.replaceChild(table.rows[b], table.rows[a]);
	table.replaceChild(clone, table.rows[b]);
}

これは rows が table のプロパティに過ぎず、Node ではないから(だと思ってる。)replaceChild は、子ノードを要求する。次のようにしたら問題なくなった。

続きを読む

Migemo 導入

Migemo はローマ字のまま日本語をインクリメンタル検索するためのツール。10年ほど前に emacs に導入しようとしてできず、以来そのままだったので Arch Linux での導入に挑戦してみた。

続きを読む

ArchLinux

FreeBSDからArchLinuxに変えました。Unix系OSを使い始めた当初は、FreeBSDが上手くインストールできなくてVineLinuxを使い出しました。もう12年くらい前の話。それ以来Linuxを使ってきていて、昨年はじめてDebianFirefoxが古いことに嫌気が差してFreeBSDをインストールしたん。でもディレクトリ構成がちょっと違うとかで慣れない感じは続いてた。実用上とくに問題が起きたわけではないけれど、ゲームとかどうしてもFreeBSDでは限界があって。あと、最近調べものをすると良くArchLinuxの解説ページが見つかって、気になっていたのもある。

使ってみているけど、Flashを始めとするいくつかのプログラムの動作速度はArchLinuxのほうが早い。(もちろんタダの主観で他人にはクソほどの情報量もない。)これがネイティブプログラムの力なのかはわからないけれど快適。そのうちアップデートした途端にOSが起動しなくなったりして泣きを見るまでは、バックアップを取りつつ使っていく。

Pingus に既存のステージ(levels)を追加する方法

Pingus は、レミングス というパズルゲームにインスパイアされて作られたゲーム。入り口から次々に出て勝手に歩き出すペンギンを操作してゴールまで導く。

Pingus にはステージのエディタがついていて、自分でステージを作成することもできる。ports からインストールした段階で、チュートリアル用の22ステージの他に、すでに作成されたステージが Levels から選択できる。

だけど /usr/local/share/pingus/levelsets を見ると、もっと沢山のステージが作成中であることがわかる。これらもゲーム内の Levels に表示させるには、/usr/local/share/pingus/levelsets/にある levelset ファイルを開いて (developer-only #t) と書いてある行の最初にセミコロンを入れれば良い。
これらのファイルは書き込み属性がないので、 sudo chmod +w *.levelset とすることを忘れずに。

それにしても pingus の設定ファイルが scheme で書かれているのは知らなかった。興味深い。