ひ日誌
2003-12-01 ( ja -> en )
2003-12-02 ( ja -> en )
_ 言葉の壁?質問力?
rubycocoaの英語ML で質問されたのだが、「何か問題を抱えてるらしい」という以上のことがどう もわからない。で、問い直すと英文で事細かに何かを説明したメールが返って きた。貧弱な英文読解力でざっと斜め読みしたが、長い割にどうでもいいよう なことばかり書いてあるような気がして、ますますわからなくなった。
僕はたしかに英語が苦手だ。しかし、上手に書かれているマニュアルとかの類 を読む場合、たいていは多少時間はかかってもなんとか理解することはできる。 その一方、いろんなMLなどを見ていると、日本語で書かれた質問メールなどで、 表現がまずいとか問題分析力がなさすぎるなどで、理解不可能なことも多い。
対象が英文の場合、自分の英文読解力がネックなのか、もとのメールを書いた 人の表現力・分析力がネックなのか、判別しにくいから困る。
今回の場合、 このメール とその続き(まだWEBでは見られない模様)のメールの表現力と分析力もかなり のネックになってるような気がしないでもないのだがどうだろう。
逆に、これと直接関係はないが、僕が書いたRubyCocoaの英文ドキュメントも、 いろいろと混乱を誘発しているのはまちがいない。かなり前のことになるが Slashdotでこんなこと もあった。こんときは「grammar naziとかそんなこと言われても苦手なもんは 苦手なんだからしょーがねーよ」と思ったもんだ。
いずれにせよ。質問するときは、自然言語を問わず、問題のコードを散りばめ るとか手順を箇条書にするとか、回答者のためにできる範囲の配慮はした方が お互いのためになるだろう。
2003-12-05 ( ja -> en )
_ [tempura] 「tempura へ template から Tempura::default_action メソッドへ値を渡すが方法が分からない」
リンク時にリダイレクトを行うためのCGIのURIを定義します。現段階では tempura へ template から Tempura::default_action メソッドへ値を渡す 方法が分からないため、generate_output(data) メソッドを直接編集してい ます。
こちらの日記も参照。
うちの アンテナ を少し前の最新版の五月雨に更新。tempura を使うように なっているので、html template は全く変わっている。後で wiki も更新し ておこう。しかし default_action の渡し方は結局分からず、source を微 妙にいじってしまった。tempura 的にも出来ないとおかしい気がするのだが。
まちがいなく作った本人よりも使い込んでいる。善処しなきゃ。「テンプレー トの_event_属性の引数あたりでactionを指定したい」という解釈であってる のかな?
2003-12-06 ( ja -> en )
_ [RubyCocoa] sourceforge.jpにRubyCocoaプロジェクト
RubyCocoaのページを sourceforge.net でHiki化しようなどと考え..試してみたら、cgiでrubyが使えねーようになっ てる模様。サポートと英語でメールのやりとりとするのも面倒だしなぁ。
それじゃこっちらならどうだろうかってことで、今さらながら sourceforge.jp にユーザ登録。hisaアカウントとれず。さっさと登録しておくべきだった。 で、RubyCocoaプロジェクトを登録。cgiでrubyが使えるかどうかはまだ未確認。
_ [雑記] tDiaryの検索の設定とか
試しがてらこの日誌のtDiaryの検索の設定。namazuはおおげさな気もするが、 他の方法がわからなかったので。HikiもCVSプランチから取って来たやつでRD スタイルが使えるようになった。
_ [雑記] インターネットラジオ - 気になった曲など
よく聞いてる昔の洋楽が流れてるインターネットラジオ。Aretha Franklin の Thinkがかかったので思わずメモ。Blues Brothers*1以 外のバージョンを初めて聞いた。50-60年代音楽はパソコンに付けてる安っぽ いスピーカーとよくマッチしてるような気がする。
それから気になったのが、「Fire」って歌い出しで始まるチープなオルガンが メインでギターなしブラスありの曲。ときどき流れてる。 Nice時代のエマーソン*2 テイストが漂ってるような。つーかナイスか、これ?
それはそうと、どこかで曲名とかがわかるはずなんだが失念。プレーヤー (xmmsというやつ)で曲名だしてくれればいいのになあ。できそうなもんなのに どうやればいいのかわからん。
2003-12-08 ( ja -> en )
_ [tips] sourceforge.jpがssh接続を拒否→解決
slogin しようとしても
Permission denied (publickey,keyboard-interactive).
となり拒否されてしまう。いろいろ調べて、あれこれためしたが繋げない。と 思ったらここで 解決方法を発見。
slogin hoge@shell.sourceforge.jp slogin -l hoge shell.sourceforge.jp
なんだ、アカウント名が違ってただけじゃん、トホホ。だけど、このエラーメッ セージじゃこんな原因とは気づかないよ。hisaアカウントを取り逃したのが敗因。
_ [雑記][tips] sourceforge.jp 好印象
sourceforge.net はとてもわかりにくくて使いにくいという印象ができあがっ ていたが、sourceforge.jp は今のところ思っていたよりも相対的に使いやす い感じで好印象。どちらもドキュメントが探しにくいような気がするが、それ でも日本語で読める分だけ探しやすい。
sf.netは.htaccessでOptionsが書き換え可能だったので、やってみたらsf.jp ではダメ。ドキュメントを読んでみたら.htaccess は使えるがOptionsは使え ない仕様らしい。cgi-binに置いたcgiは動く。rubyによるcgiの動作も確認。
2003-12-09 ( ja -> en )
_ [rubycocoa][osx] 「いじっているうちにruby自体を修正する事態になっちゃいました。」
いじっているうちにruby自体を修正する事態になっちゃいました。
* SDL拡張を使いたい
o ->そのためには Cocoaアプリとして動かす必要がありそうだ
+ ->じゃあ Cocoaアプリとして動作する rubyが欲しい
...
MacPythonを真似して cocoa初期化後にrubyインタプリタを起動する 「rubyw」というコマンドを作ることで実現しました。この方法が正しいともエレガントだとも言うことは出来ませんが、Ruby/SDLがMac OS Xで動作することを実証できた点では価値があると思います。
もう一方の方法である RubyCocoaを使ったアプローチはまだ成功していません。
[Ruby/SDL on Mac OS Xより引用]
なんだろう? RBRuntime.m の RBApplicationMain:
int
RBApplicationMain(const char* rb_main_name, int argc, const char* argv[])
{
int ruby_argc;
const char** ruby_argv;
ruby_argc = prepare_argv(argc, argv, rb_main_name, &ruby_argv);
ruby_init();
ruby_options(ruby_argc, (char**) ruby_argv);
RBRubyCocoaInit();
load_path_unshift(resource_path()); // add a ruby part of oneself to $LOAD_PATH
ruby_run();
return 0;
}
あたりとは違うのかな?あるいは「イベントループ回るあいだスレッド切り替 わらない」問題のことかもしれない。SDL拡張の「拡張」って何だろう、単な るライブラリじゃないSDLのMac OS Sフレームワークがあるのかな?
とまあ、気になるので時間ができたらチェック。
2003-12-10 ( ja -> en )
_ [rubycocoa] The Cookietizer: My First Cocoa App - Ed Heilさんのblogより
RubyCocoaでSafariのCookieを扱うアプリケーションを書いた感想が 書いてあった。意訳*1してみた。
初めてCocoaアプリを作った。RubyCocoaを使っている。RubyCocoaフレームワークをアプリ自身に含めているので、標準的にインストールされたOSXで動かすことができるはずだ(おそらくJaguar以降のOSXが必要)。
なぜ?って。Cocoa(訳注:Objective-Cのことか?)のかわりにRubyで書いたら、簡単に書けるだろうと考えたんだ。自分が欲しかった重要な機能 - ホスト名を前後反転(例えばcom.apple.www,com.apple.www2)してからソートすること - をRuby で書くのは簡単だった(one-linerを書くのとたいして変わらない)。
しかしマイナス面も。FoundationフレームワークのPlist読み書きクラスを、Rubyで使うことがどうしてもできなかった。そして、独自のPlist読み書きコードをRubyでハックすることに多くの時間を費すことになった(もちろんここでの「多くの」は相対的に見てのことだ。RubyでPlist読み書きクラスを書くのはかなり簡単で、Rubyの柔軟性を実感した)。ネイティブのものを動作させる手段もあったのかもしれないが、難しそうだったのでそれはあきらめた。おそらく私の実装したものは、ネイティブクラスを使った場合と比べて、100%UTF8-cleanではないだろう。しかし私にとっては問題なく動く。
ネイティブクラスを使えるメリットもあるし、結果としてObjective-C を学びたくなった。やはりメモリ管理の問題は心配だが、少なくともObjective-Cのオブジェクトを使っている限り、Cの場合とは違う。
[The Cookietizer: My First Cocoa App - Ed Heilさんのblogよりより引用]
*1 間違ってたらごめん
2003-12-18 ( ja -> en )
_ [linux] i2c-2.7.0 と lm_sensors-2.7.0 の無理矢理インストール
作業マシンの ASUS Terminator TU (SIS630) と、ひそかに5000円で購入し環 境整備中の Terminator P4 (SIS650/961) で、温度をモニターするために lm_sensorsを導入しようかと思った。両方ともVineLinux 2.6r3。
ドキュメントによるとlm_sensors-2.8.2 は、i2cの構造が変わったとかでbttv といっしょに使うのが大変そう。そこで lm_sensors-2.7.0 を使うためにその 場しのぎの小細工をあれこれやった、その記録。 「稼動状況をモニタする MB温度からCPU使用率まで」 を参考にした。
i2c-2.7.0 の仮インストール
$ cd i2c-2.7.0/ $ make $ make -n install # どうインストールされるのかチェック $ sudo make install
これで ドライバは /lib/modules/misc/ 以下に、ヘッダーは /usr/local/include/linux以下にインストールされた。さらに小細工。
$ cd /lib/modules/misc $ sudo mkdir -p kernel/drivers/i2c $ sudo mv *.o kernel/drivers/i2c/
lm_sensors-2.7.0 の仮インストール
$ cd lm_sensors-2.7.0/ $ make $ make -n install # どうインストールされるのかチェック
このままインストールすると、i2cとsensorsに入れるものがmiscで混ざってし
まうので、 make -n install の出力を手動で分割実行。
$ # i2c追加ドライバをmiscにインストール $ cd /lib/modules/misc $ sudo mv *.o kernel/drivers/i2c/
さらに
$ # sensorsドライバをmiscにインストール $ cd /lib/modules/misc $ sudo mkdir -p kernel/drivers/sensors $ sudo mv *.o kernel/drivers/sensors/
としてのこりは手を抜いて sudo make install でインストール。
lm_sensorsのコマンド、ライブラリ、設定ファイルなどが
- /etc/sensors.conf
- /usr/local/lib/libsensors.a
- /usr/local/lib/libsensors.so
- /usr/local/lib/libsensors.so.1
- /usr/local/lib/libsensors.so.1.3.0
- /usr/local/bin/sensors
- /usr/local/sbin/dmidecode
- /usr/local/sbin/i2cdetect
- /usr/local/sbin/i2cdump
- /usr/local/sbin/i2cset
- /usr/local/sbin/isadump
- /usr/local/sbin/sensors-detect
- /usr/local/include/linux/*
- /usr/local/man/*
にインストールされた。
kernelパッケージ付属のものと置き換え
kernel-2.4.22-0vl2.8 パッケージ付属のi2cとlm_sensorsを、2.7.0のものと 置きかえた。
$ cd /lib/modules/2.4.22-0vl2.8/kernel/drivers/ $ sudo mv i2c i2c-2.4.22-0vl2.8 $ sudo mv sensors sensors-2.4.22-0vl2.8 $ sudo ln -s /lib/modules/misc/kernel/drivers/i2c $ sudo ln -s /lib/modules/misc/kernel/drivers/sensors
こんなんで大丈夫なのか? depmod -a してみる。案の定
depmod: symlink to directory is not allowed, i2c ignored depmod: symlink to directory is not allowed, sensors ignored
とか
depmod: /lib/modules/2.4.22-0vl2.8/kernel/drivers/i2c-2.4.22-0vl2.8.tgz is not an ELF file depmod: /lib/modules/2.4.22-0vl2.8/kernel/drivers/sensors-2.4.22-0vl2.8.tgz is not an ELF file
などと怒られた。どうやら手を抜きすぎたらしい。素直に修正。
$ cd /lib/modules/2.4.22-0vl2.8/kernel/drivers $ sudo tar zcf HOGEHOGE/i2c-2.4.22-0vl2.8.tgz i2c-2.4.22-0vl2.8/ # もともとのi2cをバックアップ $ sudo tar zcf HOGEHOGE/sensors-2.4.22-0vl2.8.tgz sensors-2.4.22-0vl2.8/ # もともとのsensorsをバックアップ $ sudo rm -f i2c sensors # symlink削除 $ sudo mv /lib/modules/misc/kernel/drivers/i2c i2c-2.7.0 $ sudo mv /lib/modules/misc/kernel/drivers/sensors sensors-2.7.0 $ cd /lib/modules $ sudo rm -rf misc
これでもう大丈夫じゃなかろうか。再度 depmod -a 。今度はうまくいっ
た模様。
sensors-detectを実行
/etc/sysconfig/lm_sensors ができる。
システム起動時に初期化したかったら prog/init/lm_sensors.init を /etc/init.d/lm_sensors として置くといいよとお奨めされた。
あとは、 「稼動状況をモニタする MB温度からCPU使用率まで」 をそのまま模倣。参考ベージのとおりsis5595が誤認識されているので /etc/sysconfig/lm_sensors から削除し、module.conf にオプションを指定。 seonsors.confを修正して動作確認。ちゃんと動いた。マザーボードの温度高い(苦笑)。
eeprom-i2c-0-50 Adapter: bt848 #0 (中略) it87-isa-0290 Adapter: ISA adapter Algorithm: ISA algorithm VCore 1: +0.83 V (min = +1.53 V, max = +1.87 V) ALARM VCore 2: +1.12 V (min = +2.25 V, max = +2.75 V) ALARM +3.3V: +3.06 V (min = +2.96 V, max = +3.60 V) +5V: +1.71 V (min = +4.50 V, max = +5.48 V) ALARM +12V: +2.40 V (min = +11.36 V, max = +13.80 V) ALARM 3.3 Stdby:-18.69 V (min = -15.86 V, max = -13.40 V) ALARM -12V: -8.95 V (min = -12.80 V, max = -11.98 V) ALARM Stdby: +1.95 V (min = +4.50 V, max = +5.48 V) ALARM VBat: +1.37 V fan1: 0 RPM (min = 3000 RPM, div = 2) MB Temp: +60庵 (min = +20庵, max = +60庵) CPU Temp: +41庵 (min = +20庵, max = +60庵)
MBの温度高すぎないか?しかも庵って何だよ、てのはともかく。ファンが1つ しか表示されてない。0 RPM なので ファンレスのCPUファンのセンサーか?修 正してみた。しかしなぜか全部 0 RPM。 さてBIOSでの温度表示をみると
- CPU : 52度
- 電源 : 41度
ASUSProbeでも同じ。lm_sensorだけ違う。入れ替わってる?と思いつつそろそ ろ疲れたので保留。
2003-12-27 ( ja -> en )
_ [linux][ruby][v4l] ruby で video4linux (v4l) を叩いてみたが・・
VIDEO_DEV = "/dev/video"
VIDIOCGCAP = 0x803c7601
cap = [ "", 1, 2, 3, 4, 5, 6, 7 ].pack("a32i7")
p cap.size
File.open(VIDEO_DEV, File::RDONLY) do |fd|
fd.ioctl(VIDIOCGCAP, cap)
end
p cap.size
cap = cap.unpack("A32i7")
p cap
結果:
60 257 ["BT878(GV-BCTV5/PCI)\000s\000\000\000`6\v\327`B\213\326", 235, 3, 1, 768, 480, 48, 32]
なんでサイズが変わるんだろう?
2003-12-30 ( ja -> en )
_ [linux] ELECOM のゲームパッドを導入
突然昔のゲーム - トルネコ、風来のシレンといったrogueライクもの - がや りたくなり、snes9x というスーファミ (SFC)のエミュレータをインストール。ゲームをやり始めると、キーボードが 壊れそうで心配になってきた。そこでゲームパッドを導入してみることにした。
近所のPC量販店で物色。デカすぎるモデルが多い中、コンパクトで値段も安かっ たELECOMのJC-U812WHというパッドを購入。
USBポートに突っ込んだだけでは使えなかった。そこでちょこちょこ調べる。 dmesgあるいはusbmgrのdump_usbdevコマンドを使うとVENDOR IDなどがわかる。 それをもとにmurasakiの設定ファイル murasaki.usbmap に以下を追加:
# JC-U812 [Elecom] joydev 0x0003 0x995 0x14 0x0 0x0 0x0 0x0 0x0 0x00 0x00 0x00 0x00000000
murasakiを再起動して /dev/input/js0 が使えるようになった。vineの joystickというrpmパッケージを入れるとjstestというコマンドを使ってどれ がどのボタンだか確認できる。
usbmgrでも設定してみたがそちらでは動かなかった。つーかmurasakiとusbmgr の両方が動いているのがまちがってるのか?このふたつの関係は謎のまま。
_ kimuraw [コミットできるとこまで確認しました。いきなりまちがったコードいれてしまったりしていますが...]