どうしてくれるんだ。ピクミン2(nintendo.co.jp)、今月末に発売ですよ。前作のときにGC買うか買わないかでけっこう悩んだ。結局シングルCDだけ買った(笑)。 GCを買わなかったのは当時の部屋で置く場所に困ったからだが、今回は幸か不幸かそれほど困難でもない。やばい。幸かもしれない。 (追記) 2004-04-15 22:44 本体(amazon.co.jp)が¥14,000、ゲーム(amazon.co.jp)が¥4,930かー。税込だろー? 注文するだろこれは。メモリカードが同梱されてないみたいなので¥2,000くらいでそのへんで買うとして…しめて2万か。やっすー! (追記) 2004-04-15 22:53 あー、Amazonで注文しちゃった。一括配送。
Apache HTTP Serverに、mod_ext_filter.soというのがある。まだexperimentalということでパッケージ化のときに収録していないことも多いだろう。ソースからmod_ext_filter.cをもってきて、apxs -c mod_ext_filter.c -o mod_ext_filter.so -sharedでコンパイル、apxs -i mod_ext_filter.soでインストールできる。
この拡張モジュールは何をするかというと、外部プログラムのフィルタを使えるのだ。sedもawkもperlも、なんでもアリだ(いいの?)。httpd.confでいろいろ設定すると何でもかますことができる。今のところはOutputFilterのみ。
これを見て思ったのは、むかしあったよなー、大阪弁フィルタ(yorosiku.net)、ということだ。これを噛ましてみようではないか。
LoadModule ext_filter_module modules/mod_ext_filter.so
<IfModule mod_ext_filter.c>
ExtFilterDefine osaka-text mode=output cmd="/some/path/to/osaka"
</IfModule>
で、.htaccessやブロック等で
<IfModule mod_ext_filter.c>
AddOutputFilter osaka-text .html .htm .php
</IfModule>
などのようにする。ApacheのAddOutputFilterというのはすでにあるフィルタに追加するように見えて上書きしてしまうようで、PHPやCGIやSSIなどをOutputFilterで設定して使っている場合は、AddOutputFilter PHP;osaka-text .phpなどといちいち書かなければならない(Fedora Core 1のはAddType application/x-httpd-php .phpとなっていてSetOutputFilterではない)。
で、VirtualHostを使って大阪弁フィルタをかましてみた(現在はやっておりません)。
くだらん。
experimentalということもあって、けっこうセキュリティ上の問題があるのかもしれないし、検索にosaka側がひっかかって見に来た人が激怒したらどうすんの、とかいろいろあるよね(笑)。
携帯電話でSuica、2005年度後半に JR東日本(itmedia.co.jp)。カードだけではICつけた甲斐がない、という。
JR東日本は4月13日、非接触型ICカード「Suica」の機能を搭載した携帯電話サービス「モバイルSuica」を、2005年度後半に開始すると発表した。
電車、買い物、脱カード型。そして次は何であるべきか。 ここは一発、Suicaで等々力のスタジアムに入れるようになって欲しいところだ。ピッ! でも前売りのほうが安かったりするわけだし、後援会の会員かどうかの情報(やっぱ割引のため)をSuicaごときに入れるのは抵抗がある。シーズンチケットの場合は定期みたくなるのかな。 定期のシステムはいいね。買い物Suicaはジュース定期やパン定期にもなります、みたいな。おれはたぶん、リカルデントガム定期にするけど。 ところで私のはいまだにペンギンSuicaに変身できない。メニューに交換が出てこないってことはすでにペンギンの機能は入ってるってことかな。窓口で聞いてみないといかんのだが、いつも並んでるので。
ブルボンのルマンドに限らず、お菓子というのはどうも果てしない。 マクドナルドを訴えるデブの気持ちがもう少しでわかってしまいそうだ。
Linux/IA32のmallocは一度に2GB弱まで。2GB「弱」というのは、2GBは取れないからだ。2GB制限の理由はずいぶん前にも見たことがあるこのへん(sse.co.jp)を参照のこと。これはファイルサイズの2GB制限と違って時代錯誤的なことではなく、現実に起きて納得の現象だ。そんな制限を承服するかどうかは考え方次第だ。 ではmallocではなくstaticな配列なら2GB以上取れるのか? 同じくらいのサイズまでしか取れないのです。
char mem[1024*1024*1024*2];
int main(int argc, char **argv){}
gcc曰く、「警告: 式の整数がオーバーフローしました」「配列 mem' の大きさが負です」…そうかintだから駄目なのか、と思ってunsignedにキャストすると正しい警告が出る。曰く、「配列 mem’ の大きさが大きすぎます」「`mem’ の領域サイズがわかりません」。
しかしgccが配列のサイズで文句を言うのは気に食わん!
1GBで配列を取ってコンパイルし、アセンブラコードを直して
.comm mem,1073741824,32
.section .note.GNU-stack,"",@progbits
↓
.comm mem,1073741824*2,32
.section .note.GNU-stack,"",@progbits
これでコンパイル、リンクは成功する。で、できたバイナリを実行するとsegmentation fault。デバッガからも起動できない…そんなのはあたりまえだ(笑)。 じゃmmap(2)は? /dev/zeroへのmmap(2)を使えばメモリを確保できる。やはりこれも2GB制限があるのだ。MAP_FAILEDが返ってきて、Cannot allocate memoryと言われる。 スタックの場合は実はアセンブラコードを直すと2GBを越えられる。どっかでオーバーフローしてマイナスになっちゃってるのかもしれないし、たぶん動作はしないだろう。ただ、確保する(したつもり)だけでは落ちない。 …我ながら意味のないことばかりやってるな。
# python -c 'from distutils.sysconfig import *;print get_python_inc()'
# python -c 'from distutils.sysconfig import *;print get_python_lib()'
まあ、そんだけなんだけど、書いとかないと覚えてらんないでしょ。
swigメモ。いつか問題が解決するだろうと信じている。 ライブラリって、swigでPythonからも使えるようにするじゃん。このとき、小さいライブラリだと、「ライブラリの名前=モジュールの名前=唯一の構造体の名前」っていうことも珍しくない。例えば"name"だとすると、C側の関数名もname_func1()にするでしょ。こうしたときに、ややこしいから整理すると、
typedef struct name{
int member;
}name;
name *name_init(int id);
void name_exit(name *arg);
int name_func1(name *arg);
int name_func2(name *arg, int arg2);
がname.hで定義されているとする。これをswigのソースname.iで
// swig -python name.i
// gcc -c name_wrap.c -I/usr/include/python2.2 -I.
// gcc -shared name_wrap.o -lname -L. -o _name.so
%module name
%{
#include "name.h"
%}
%include "name.h"
とするとする。使っている側のココロとしては、
if a=name.init(100):
a.func1()
a.func2(1)
だと思う。しかし実際できあがってみると、
if a=name.name_init(100):
name.name_func1(a)
name.name_func2(a, 1)
という悲しい状況になる。これを回避するための方法は%renameを使う方法である。name.iで
%rename(init) name_init;
%rename(func1) name_func1;
などとしておくと、
if a=name.init(100):
name.func1(a)
name.func2(a, 1)
まではとりあえずあっさりスッキリシャッキリするわけだ。しかしaというオブジェクト、おまえはどういうつもりなのか。C struct以上の機能はないのか。そこで、name.iにこう書き加える(name構造体がPythonのクラスになったものにメンバを追加する)。
宮里藍のプロテスト実技を免除=女子ゴルフ(yahoo.co.jp)。この措置には誰も文句をつけないだろう。
日本女子プロゴルフ協会(LPGA)は12日の理事会で、宮里藍のプロテストについて実技テストを免除することを承認した。宮里は今季ツアー開幕戦のダイキンオーキッドレディースでツアー2勝目を挙げており、過去の戦績から、実技は十分免除に値すると判断した。
まあ、実技テストなんてさせて万が一にも落ちちゃったら、テストのほうが疑われてしまうよな(笑)。無用なギャンブルはせずに権威を守るべき。そういう面からも、当然な判断。
安倍幹事長(s-abe.or.jp)の操作。あの人、何やってんすか。
[FRONTIER @ JAPAN] # su shinzo_abe Password: ******** [FRONTIER @ JAPAN] # cd koizumi_cabinet [FRONTIER @ JAPAN] # cd jimin_honbu ; grep "people_heart_jp.src" (ファイル名は切れている?) [FRONTIER @ JAPAN] # ./configure ; make new_japan ; make install [FRONTIER @ JAPAN] # ln -s /usr/local/bin/new_japan /usr/bin/new_japan [FRONTIER @ JAPAN] # cp ./etc/great.cfg /etc/new_japan.cfg [FRONTIER @ JAPAN] # chkconfig --level 2345 new_japan [FRONTIER @ JAPAN] # top [FRONTIER @ JAPAN] # I (←マウスカーソルかも?)
とりあえずFRONTIERというのがホスト名かな。cdしても変わらないから、JAPANというのはディレクトリ名ではないよな。JAPANというユーザでログインしてたのかもしれない。そこからshinzo_abeにsuする、と。exit codeを表示しないように設定して、people_heart_jp.srcという正規表現にひっかからなかったようだ。ファイル名をぼかしたのはアレだろう、ヤバい機密のファイルだからだろうな。chkconfig使うってことはたぶんLinuxなんじゃないかと思う。 最後から2行目のtopで何を確認して、どのプロセスを殺したか。それが問題だ。でも;とかのところで空白を入れるのは律義だな。私はいつも入れない。 …だからどうしたって。 (追記) 2004-04-12 21:05 いやまあ普通に考えれば逆で、JAPANというホストにFRONTIERというユーザでログインしたんだろうな。FRONTIERS(fujitsu.com)ファンってこと…か?? むしろ、フロンティアレッツ(fujitsu.com)ファンってことかも?? (追記) 2004-04-13 22:49 書き忘れていた。パスワードは便宜上「*」で表示しているが、これは本来なら表示されない。しかしながら着目したいのは、8文字のパスワードを使っているということだ。古くからのUnixユーザなのだろうか(むかしUnixのパスワードは8文字までしか有効でなかったのだ)。
かなり前からそうで、マイナーバグだと思っていたのだが、今のバージョンでも起こるようだ。どこかに報告したほうがよいだろうか? zshで
# cat =(df)
としてみてほしい。zshが戻ってこなくなる。ずっとRunning状態のまま。不思議なのは、cat =(df -T)だとOKだったりすることだ。
私はこの現象を説明できる気がしない。
zshを知らない人のためのメモ。=(cmd)というのはcmdの標準出力をテンポラリファイルに書き込んでファイル名を返します。なので、cat =(cmd)というのはcmdの標準出力をテンポラリファイルに書き込んで、catの引数にテンポラリファイルの名前を与えます。viとかは標準入力を編集できなかったりするし、複数のコマンドを書けるので、2つのコマンドの出力のdiffをとったりするときにものスゴく便利ですよ!!
テンポラリファイルは当然のように勝手に消えます。偉い。
(追記) 2004-04-12 21:21
そうだ思い出した。=(cmd)を一番使うのはnetpbmを使うときだ。
pnmcat -lr =(jpegtopnm hoge1.jpg) =(jpegtopnm hoge2.jpg) =(pngtopnm hoge3.png)とかって。生活の知恵だ。良い子のみんなは覚えておこうね。
(追記) 2004-05-07 14:22
思いついてdfのaliasを解いてcat =(df)をやったらちゃんと戻ってきた。なんなんだろう。=(cmd)の中ではaliasが無限ループしてんのかな。私のdfはなんとなく以下のようにaliasしてある。