Linuxで各スレッドが使用しているCPU番号の出力

マルチコアCPUを活かしたコードをデバッグしている際に、動作しているCPU番号を知りたいというケースがあったので、出力させてみた。
/proc/[pid]/statの(39)にプロセスを最後に実行したCPUの番号が格納されているのでそれを取得する。

[gist id=11335550]

procのmanpageにはscanf(3)のフォーマット指定子がついているが、必要な情報以外は*を指定して読み飛ばしているため、%*lluのように長さを指定している部分と合わせて指定すると、
warning: use of assignment suppression and length modifier together in gnu_scanf format
という警告が出る。警告を取り除くには上記コードで指定しているように”ll”を外して%*uと指定する。

enchant.jsで動くゲームを作ってみた

恒例の年末プログラミング。今年はenchant.jsを使ったゲームを書いてみた。

BUBBLE BURST

7年前に作ったゲームの移植。
enchant.jsを使うのは初めてだったのだけれども、簡単に絵が出るのでほとんど時間をかけずに作ることができた。メモリ周りがちょっと不安だけれども。

オリジナル版のソースを紛失したので、パラメータを新たに設定しなおしているのだけれども、結構挙動が違ってる。”大きい泡に対して効果が薄いので小さい泡を狙うべし。”なんかは今回実装してない。”(たまに左右、下から強襲してくる)”コレどうやって実装したんだっけ、、、

WiiU用プラグインがリリースされていたので組み込んでみたけど、うまく動いていない。一応、WiiUで操作する場合は、左スティックで移動、Yでダッシュ、Bで謎の波動。

OnPreferenceChangeListener.onPreferenceChange

Androidプログラミングにおいて、設定画面を作成する方法の一つとしてPreferenceActivityを使う方法がある。
その中で、設定が変わったことを検知するにはOnPreferenceChangeListener.onPreferenceChangeメソッドを定義する。


CheckBoxPreference checkPref = (CheckBoxPreference)
findPreference(getString(R.string.property_enable));
checkPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference p, Object newValue) {
enabled = (Boolean) newValue;
return true;
}
});

onPreferenceChangeの第一引数”Preference p”には変更前のPreferenceが格納されており、このメソッドを”true”で抜けた時に第二引数”Object newValue”で書き換えられる。”false”で抜けた時は、値は変更されない