[ 捕捉確認済アンテナ ] 日記観察 *BSD Diary Links わっちりんく(す) はこんだらウォッチ 天野アンテナ HNN日記バード しっぽあんてな しぐなるぽ〜と |
|
芸夢狂人さまといえばマイコン少年憧れの伝説的プログラマーだった、はず。
そのPC-8001用ゲームがPalm用に復刻されている。惜しむらくは操作性が悪くまともに遊べないこと。← …。
Palmで復刻するならワンキーゲームシリーズ(The JumpとかCRAZY STONEとか…)なんかヨイのでは?
Squeak が DoCoMo の Pocket PostPet で動いたそうだ。
なんと Windows GUI がサポートされていないので標準ダイアログなどが使えないとのこと。 そのためイメージファイルはパスを決め打ちにしてあるらしい。
このところ、PostgreSQL でストアドプロシージャってどうするのだろう? という疑問を抱えていた。 そもそもストアドプロシージャって何? ってヒトなんですが。(爆)
電話料金は深夜とそれ以外で異なる。
接続開始時刻と接続時間の羅列から、接続料金を算出するには…。
1. 開始時刻がどちら側か判別 2. 終了時刻が反対側かどうか判別 2-1. 同じ側ならそのまま算出 2-2. 反対側なら2つに分けて算出
このくらいだろうか? で、これを SQL でコーディングするとどうなるのか。というのが全く見当がつかん。
というのが上に関連して来るわけで。 説明書をひきひきじゃないと無理かな。
アップグレードに備えて、使っていないパーティションを /home にでも割り当てようかと /stand/sysinstall から disklabel してみた。(弱い)
FreeBSD Disklabel Editor Disk: wd0 Partition name: wd0s1 Free: 1016001 blocks (496MB) Disk: wd0 Partition name: wd0s2 Free: 0 blocks (0MB) Part Mount Size Newfs Part Mount Size Newfs ---- ----- ---- ----- ---- ----- ---- ----- wd0s2a <none> 50MB * wd0s2b swap 69MB SWAP wd0s2e <none> 20MB * wd0s2f <none> 1806MB *
あれ? 今自分が使っている場所は…?
/usr/home/cake $ mount /dev/wd0s2a on / (ufs, local, writes: sync 517 async 3225) /dev/wd0s2f on /usr (ufs, local, writes: sync 9688 async 43503) /dev/wd0s2e on /var (ufs, local, writes: sync 2192 async 5411) procfs on /proc (procfs, local)
こいつらが disklabel から見えてないけど大丈夫なんだろうか。
MoinMoin との組み合わせで動かない風味?? とかいう話ですが。
どんな症状なんでしょうか?>やないさん
ってここに書くなよヲレ。
ハンドブックを読み直して、なんとなく これ でもいいんだろう、と書いてないのに安心して、disklabel から w を押してしまった。
すると心配していたようなことは起きず、遊んでいた約500MBのディスクスペースを /home に割り当てることができた。
会社のPCに IntelliSync をインストール。これも仕事のためだ。(なのか?)
なになに、EasySync からの乗り換え時は、EasySync の邪悪なシンクロ方式の影響を避けるため、 いったん Palm をハードリセットせよ、か。
うう、BackupBoddy を使っていたためうまくいかず。ハードリセット後の初シンクロで、 Lotus 謹製(ん? IBM かな?) Sync*DB.pdb も一緒に復元されてしまうためだった。
けっきょくバックアップ用ディレクトリの中の上記該当数ファイルを手で消して解決。
がびーん。(3点)
昼間見た時は本家にも hpcmips はなかったのニ。
だから 1.5_BETA をちまちまダウンロードしたのニーッ!
ぷしゅうぅぅぅ。(死亡)
「NetBSD とわたし」にコメントつけたい時にはどこ宛にリンクを張ればいいのかしら。 アンカーがないし、バックナンバーに移動したら張り替える必要があるし。
Mgl2 のバイナリがどこかに置いてあるはず、と思って探して見るが見付からないので、Xhpc で日本語を、 と思ってやってみるとなんと kterm で日本語を出せない。 Couldn't set locale: ... なんていうエラーメッセージが。
NetBSD の X で日本語を使うの初めてだし。
PATH_INFO とか SCRIPT_NAME とか…、他にもいろいろ未設定のものがあるらしく、動かないスクリプトがあるようで。
やないさんにいただいたパッチをもとにコードをいじってみる。これで MoinMoin には対応できるらしい。
うう、PATH_TRANSLATED って、いったいどんな値をいれるべきなんでしょうか?
あと高野さんからもコードについてフィードバック。
勘違い を修正。m(_@_)m
MoinMoin の動作テストはできていないものの、修正版を 公開 。
今回は getopt() を搭載して
-p NUM | ポート番号 |
-v | 冗長なメッセージ |
-I | ディレクトリ一覧を抑止 |
というオプション指定に対応。
注)
助長 → 冗長
でした。
電車の中で mgl2-alpha-019 をビルド。 しかし NetBSD-1.5Beta2 な MC/R430 では mgterm を起動しても表示ができない。 ディスクのアクセス音からして入力はできているから、それ以外の動作は普通にいっている様子。 C-d で戻って来るし。
ちょっと前 port-hpcmips-ja で話題になっていたので参照しつつ、 lib/md_hpcmips.h の 430 の項 を 256 から 1573120 に変更して解決。
短期新連載(うう、タイトル失念)ですが、 一話の中できちんと起伏のついた構成で、今後の展開も非常に期待が持てます。
ヒロインがなんだかどこかで見たような顔や髪型だ、とういうのは別な問題ですが。
っていうかもっとやれ。
日本語が ????? となっていて任意の一定期間悩んだが、
(set-langage-environment "Japanese") (set-display-coding-system 'euc-jp)
とやったら表示されるようになった。
あと、yc.el を設定したら日本語入力もできるようになった。
なんとか人並の環境になってきたぞ。
NetBSD/hpcmips で CAPS と CTRL を入れ換えるにはどうすれバインダー (*1) 。
Google <BSD> で検索してはみたものの、pcvt を使用してカーネルを再構築して云々…、 というものばかりてそれは i386 限定技じゃないノーという感じなのであった。
X 限定なら、.Xmodmapに
keycode 37 = Caps_Lock keycode 66 = Control_L
でいけるような気がするけど。…どうだ。
NetBSD/hpcmips な MobileGearII で、内蔵の PHS アダプタを使って通信できている人は いるのだろうか?
環境変数に関しては、こがさんがメールでわざわざ書籍からの抜粋を送って下さいました。 あとポインタとして、 (http://web.golux.com/coar/cgi/) を教えて下さいました。
無事に MoinMoin が動いてよかったです。:D
Cake的には昔から、「フルセットの tds が動くようになる」というのがひとつの到達点と してあるんですが、それにはやりかけで放ってある SSI のサポートも必要になってくるので…。
いろいろな方から、いろいろな媒体で教えていただきました。:D
コンソールでは
# wsconsctl -w encoding=jp.swapctrlcaps
Xでは
<< ~/.Xmodmap >> remove Lock = Caps_Lock remove Control = Control_L keysym Control_L = Caps_Lock keysym Caps_Lock = Control_L add Lock = Caps_Lock add Control = Control_L
こっちは xmodmap のマニュアルにありました。
うーん、あとはXで jp106 になればなー。
% xkbcomp -xkb :0 -o server.xkb % vi server.xkb % setxkbmap -config server.xkb
とかかなー? XKB システムについて全く分かってないんですが。
Xhpc を終了するときにコンソールが発狂する事故が二度ほど起こった。
xmodmap でキーアサインをいじるようにしてから立て続けなので、 ひょっとしたら関係しているかも知れず。
MGL2 は Emacs20.7 でなにかの拍子に Segmentation fault を起こす。 はっきりと再現できないが、どうも表示できないコードを表示しようとしてコケる、という挙動に見える。
mgterm で Emacs20.7 を動かしていると、メタキーが効かないくさい。 M-x と操作してもミニバッファには -? と表示されるのだ。M-x M-x と二回やると謎な漢字が入力されてしまう。 なんだろうと思って何度かやってみるうちに Segmentation fault 。
Squeak を MGL で動かすテスト。まずは母艦の MGL/X の上で試し。
以下の手順は行き当たりばったりにやってみたらできたというだけなので、 正式にはもっとましなやりかたがあるはず。
Squeak-2.7 の ソース (*1) 、イメージ、チェンジファイルをダウンロードしてくる。
(ftp://ftp.inria.fr/INRIA/Projects/SOR/users/piumarta/squeak/SqueakV2.sources.gz) (ftp://ftp.inria.fr/INRIA/Projects/SOR/users/piumarta/squeak/Squeak-2.7.image.gz) (ftp://ftp.inria.fr/INRIA/Projects/SOR/users/piumarta/squeak/Squeak-2.7.changes.gz)
これらのうちで必須なのは image だけ。動作の確認という意味では他はいらない。
Unix 用の VM のソースコードをダウンロードしてくる。
(ftp://ftp.inria.fr/INRIA/Projects/SOR/users/piumarta/squeak/Squeak-2.7-src.tar.gz)
ディレクトリを掘って (*2) VM のソースを展開する。
$ mkdir squeak-2.7; cd squeak-2.7 $ tar zxvf ../Squeak-2.7-src.tar.gz
mgl2-alpha-019 付属の sqMgl.c をソースツリーに放り込む。
$ cp ../mgl2-alpha-019/contrib/squeak/sqMgl.c src
ビルド用のディレクトリを準備して configure。
$ gmake mkdir $ cd i386-unknown-freebsdelf3.4 $ ../src/configure
Makefile をちこっと修正する。
-INCS= -I. -I$(SRCDIR) -I/usr/X11R6/include +INCS= -I. -I$(SRCDIR) -I/usr/X11R6/include -I/home/cake/src/mgl2-alpha-019/lib -LIBS= -lX11 -lXext -lm -L/usr/X11R6/lib +LIBS= -lX11 -lXext -lm -lmgl2 -L/usr/X11R6/lib -L/usr/local/lib
あとなぜかマクロ ``SQVERSION'' の展開に失敗するっぽいので sqMgl.c にも手を加える。
--- src/sqMgl.c Sat Nov 18 02:39:19 2000 +++ ../mgl2-alpha-019/contrib/squeak/sqMgl.c Tue Sep 5 18:04:57 2000 @@ -852,7 +852,7 @@ printf(" -version print version information, then exit\n"); printf(" -xasync don't serialize display updates\n"); printf("\nNotes:\n"); - printf(" <imageName> defaults to 'Squeak2.7.image'.\n"); + printf(" <imageName> defaults to 'Squeak"SQVERSION".image'.\n"); printf(" Using 'unix:0' for <dpy> may improve local display performance.\n"); printf(" -xshm only works when Squeak is running on the X server host.\n"); exit(1); @@ -912,7 +912,7 @@ if ((ev= getenv("SQUEAK_IMAGE"))) strcpy(shortImageName, ev); else - strcpy(shortImageName, "Squeak2.7.image"); + strcpy(shortImageName, "Squeak"SQVERSION".image"); if ((ev= getenv("SQUEAK_MEMORY"))) initialHeapSize= strtobkm(ev);
一気にビルド。
$ gmake all
すると最後のリンクの段階で sqXWindow.o と sqMgl.o が干渉してコケるので、 sqXWindow.o をリンク対象から外してやる。
$ gmake >foo $ vi foo $ sh foo
foo の内容はこんな感じ。sqXWindow.o や -lX11 、 -L/usr/X11R6/lib などの X11 ゆかりのものを とりあえず削ってみた。
gcc -rdynamic -o squeak \ interp.o sqADPCMPrims.o sqFilePrims.o sqMgl.o sqMiscPrims.o sqOldSoundPrims.o \ sqSoundPrims.o sqUnixAsyncFilePrims.o sqUnixDirectory.o sqUnixExternalPrims.o \ sqUnixJoystickAndTablet.o sqUnixNetwork.o sqUnixSerialAndMIDIPort.o sqUnixSound.o \ sqVirtualMachine.o sqUnixVersion.o \ -lm -lmgl2 -L/usr/local/lib
これでなんとか squeak が出来上がる。テスト起動。
$ ./squeak Squeak-2.7.image
すごいですねー、本当に MGL で動いていますねー。
ZeroDivied なデバッガが起動しているけどこれは画面が狭すぎてエラーしているのかも。 本来は、X 用の VM 上でウィンドウの整理をしたりしてから起動するのがいいとは思う。
しかしこんなやりかたで動くものができたことの方が、ある意味凄いとも思うが。
あと、MGL/X 上で不便なのは、ついボタン2とかボタン3とか押してしまって、 ウィンドウが くるくる回転 してしまうこと。うう、アホっぽい。
いつの間にか、w3m に Local CGI なる機能が実装されていた模様。
しかし、ポケビの主力ブラウザに そんな機能が実装されてしまうと mhttpd の存在意義 (笑)がますます減退していくような。
mhttpd のコードをいろいろ見直し中。
データの持ち回りについて少しはマシな構造を考えたい。 懸案は
というわけで、ブラウザから来た情報などは一式構造体に詰め込んでから、 下位の関数に受け渡すようにしよう。
…作業中。
…。
…。
…。
Cで文字列処理なんてやってられっかー!
というわけで、mhttpd を少し改造しました。ポート番号を指定しないと標準入出力を読み書きしますので、 inetd の手下になることができます。
でも DocumentRoot については次回と言うことで…。(汗;
内部のデータの持ち方は上記の通りいろいろ変わってます。 バグを発見した方はメールなり他の媒体なりで教えて下さい。 (メールが一番早く伝わります。)
コードを複数のファイルに分割してみたり。
こんなに大きなプログラムは生まれて初めて書くもんだから、当然分割作業も初めて。 聞きかじりの知識でやったことなので、おかしいところは是非指摘してもらいたいです。
~/src/mhttpd $ wc -l *.c *.h 304 http.c 245 mhttpd.c 492 output.c 179 sock.c 393 util.c 64 global.h 179 mhttpd.h 1856 total
…、分けただけなのになんで増えますか。
コンソールと同じ画面イメージで使いたいので、 mgterm をいじってみた。 -r というオプション指定でリバースモード(黒地に白文字)になる。
diff -ur mgterm/mgterm.c mgterm_r/mgterm.c --- mgterm/mgterm.c Thu Aug 31 21:06:47 2000 +++ mgterm_r/mgterm.c Thu Nov 23 22:10:26 2000 @@ -113,6 +113,10 @@ char *cmdline; +/* 2000年 11月23日 木曜日 20時40分32秒 JST cake */ +int color_text; +int color_back; + void send_hangup(close) { if (childid) kill(childid,SIGHUP); } @@ -172,7 +176,10 @@ int x,y,xs,ys,outocr; int soft_key = 0; - while ((c = getopt(argc,argv,"iwf:ms:e:o:"))!=EOF) { + color_text = COLOR_BLACK; + color_back = COLOR_WHITE; + + while ((c = getopt(argc,argv,"iwf:ms:e:o:r"))!=EOF) { switch(c) { case 'i': inherit_tty = 0; break; @@ -201,6 +208,10 @@ SCREEN_HEIGHT = 200; } break; + case 'r': /* reverse mode (cake) */ + color_text = COLOR_WHITE; + color_back = COLOR_BLACK; + break; } } @@ -244,7 +255,7 @@ } if (ttyfd < 0) exit(1); - set_color(COLOR_WHITE); + set_color(color_back); clear_screen(); if (font_size == 10) { if (!load_font("k12x10.fnt",12,10)) { @@ -273,6 +284,7 @@ ys = lines*font_height; ts = create_textscreen(NULL,x,y,xs,ys,0); + ts_set_bgcolor(ts, color_back); if (mgl_apli_type == AT_MINIAPLI) { set_color(COLOR_DARKGRAY); draw_rect(2,2,SCREEN_WIDTH-4,SCREEN_HEIGHT-4); diff -ur mgterm/vt.c mgterm_r/vt.c --- mgterm/vt.c Thu Aug 31 21:06:47 2000 +++ mgterm_r/vt.c Thu Nov 23 22:18:50 2000 @@ -180,6 +180,10 @@ int MAXLIN=18; extern int ptyfd; +/* cake */ +extern int color_text; +extern int color_back; + struct screen_data { char attr; /* 0: no char 1: ANK 2:kanji 1st 4: kanji 2nd */ unsigned char ch; @@ -891,7 +895,7 @@ memmove(&screen_data[0][0],&screen_data[l][0] ,(void *)(&screen_data[MAXLIN][0]) - (void *)(&screen_data[l][0])); #endif - set_color((con.attr&ATTR_REVERSE)?COLOR_BLACK:COLOR_WHITE); + set_color((con.attr&ATTR_REVERSE)?color_text:color_back); #if 1 /* scroll region fix */ fill_rect(ts->x,ts->y+(con.ymax+1-l)*font_height,ts->xs,l*font_height); memset(&screen_data[con.ymax+1-l][0],0 @@ -913,7 +917,7 @@ bitblt(NULL,ts->x,ts->y+l*font_height,NULL,ts->x,ts->y,ts->xs,ts->ys - l*font_height,0); memmove(&screen_data[l][0],&screen_data[0][0] ,(void *)(&screen_data[MAXLIN][0]) - (void *)(&screen_data[l][0])); - set_color((con.attr&ATTR_REVERSE)?COLOR_BLACK:COLOR_WHITE); + set_color((con.attr&ATTR_REVERSE)?color_text:color_back); fill_rect(ts->x,ts->y,ts->xs,l*font_height); memset(&screen_data[0][0],0 ,(void *)(&screen_data[l][0]) - (void *)(&screen_data[0][0])); @@ -927,7 +931,7 @@ } void TextClearEol(c) int c; { - set_color((con.attr&ATTR_REVERSE)?COLOR_BLACK:COLOR_WHITE); + set_color((con.attr&ATTR_REVERSE)?color_text:color_back); if (con.x < MAXCOL) fill_rect(ts->x+con.x*font_width,ts->y+con.y*font_height,ts->xs-con.x*font_width,font_height); memset(&screen_data[con.y][con.x],0 @@ -936,7 +940,7 @@ } void TextClearEos(c) int c; { - set_color((con.attr&ATTR_REVERSE)?COLOR_BLACK:COLOR_WHITE); + set_color((con.attr&ATTR_REVERSE)?color_text:color_back); if (con.x < MAXCOL) { fill_rect(ts->x+con.x*font_width,ts->y+con.y*font_height,ts->xs-con.x*font_width,font_height); memset(&screen_data[con.y][con.x],0 @@ -978,7 +982,7 @@ memmove(&screen_data[con.y][con.x+c],&screen_data[con.y][con.x] ,(void *)(&screen_data[con.y][MAXCOL]) - (void *)(&screen_data[con.y][con.x+c])); - set_color((con.attr&ATTR_REVERSE)?COLOR_BLACK:COLOR_WHITE); + set_color((con.attr&ATTR_REVERSE)?color_text:color_back); /* kaga */ fill_rect(x1,ts->y+con.y*font_height,font_width*c,font_height); memset(&screen_data[con.y][con.x],0,c); @@ -1005,7 +1009,7 @@ memmove(&screen_data[top][0],&screen_data[top+line][0] ,(btm-line-top+1)*sizeof(struct screen_data)*MAXCOL); } - set_color((con.attr&ATTR_REVERSE)?COLOR_BLACK:COLOR_WHITE); + set_color((con.attr&ATTR_REVERSE)?color_text:color_back); fill_rect(ts->x,y3,ts->xs,line*font_height); memset(&screen_data[btm+1-line][0],0 ,(line)*sizeof(struct screen_data)*MAXCOL); @@ -1026,7 +1030,7 @@ memmove(&screen_data[top+line][0],&screen_data[top][0] ,(btm-line-top+1)*sizeof(struct screen_data)*MAXCOL); } - set_color((con.attr&ATTR_REVERSE)?COLOR_BLACK:COLOR_WHITE); + set_color((con.attr&ATTR_REVERSE)?color_text:color_back); fill_rect(ts->x,y1,ts->xs,line*font_height); memset(&screen_data[top][0],0 ,(line)*sizeof(struct screen_data)*MAXCOL); @@ -1043,9 +1047,9 @@ if (con.attr & ATTR_ITALIC) attr |= FA_ITALIC; if (con.attr & ATTR_HIGH) attr |= FA_BOLD; set_font(font_size,attr); - set_color((con.attr&ATTR_REVERSE)?COLOR_BLACK:COLOR_WHITE); + set_color((con.attr&ATTR_REVERSE)?color_text:color_back); fill_rect(x,y,xs,ys); - set_color((con.attr&ATTR_REVERSE)?COLOR_WHITE:COLOR_BLACK); + set_color((con.attr&ATTR_REVERSE)?color_back:color_text); draw_font(x,y,(ch1<<8)|ch2,DIR_NORTH); if (con.attr & ATTR_ULINE) { draw_line(x,y+ys-1,x+xs-1,y+ys-1); @@ -1067,9 +1071,9 @@ if (con.attr & ATTR_ITALIC) attr |= FA_ITALIC; if (con.attr & ATTR_HIGH) attr |= FA_BOLD; set_font(font_size,attr); - set_color((con.attr&ATTR_REVERSE)?COLOR_BLACK:COLOR_WHITE); + set_color((con.attr&ATTR_REVERSE)?color_text:color_back); fill_rect(x,y,xs,ys); - set_color((con.attr&ATTR_REVERSE)?COLOR_WHITE:COLOR_BLACK); + set_color((con.attr&ATTR_REVERSE)?color_back:color_text); draw_font(x,y,ch&0x7f, DIR_NORTH); if (con.attr & ATTR_ULINE) { draw_line(x,y+ys-1,x+xs-1,y+ys-1);
~/.emacs から
(set-keyboard-coding-system 'euc-jp)
を外したら ALT が Meta として働くようになった。 上記は Xhpc で Emacs が kinput2 から漢字入力できるようにと設定したものだった。 imcanna を生かしたい場合も必要になってくるような気もするが、とりあえず外しとこう。
サスペンドさせてしばらく経ってから、再びレジュームさせようと電源ボタンを押しても 、復帰しないことがある。
リセットボタンだけが効くが、それを押すと CE が動き出す。
うぐぅ。
Liece で自分が参加していないチャンネル一覧を見るためのコマンドを教えてくらはい。
ese-nikki、もうちょっと目に優しい色使いにしてくれると嬉しいな。濃緑地に薄緑な文字なんだもん。
issei さんからのパッチを取り込んたものをリリース。
ちょっとだけ欲をだして試行錯誤の末 install: ターゲットも追加。 勝手に install-sh なんてつけちゃったけどよかったのかな。:-P
あと、ブランチを切って遊ぶ。リポジトリにいらんタグがたくさんついてしまった。 けどなんとなく cvs の使い方がわかってきたり。
あとはブランチからのマージをマスターせねば。
されるプログラムが、引数を受け取れなくて悩んでいる。むう、tcp_wrappers とか見れ ばいいのか。
要りますかね、ログで。アドレスで十分?
ネチケット
普通の礼儀とかエチケットとかでいいじゃん、とか思う。
Emacs の C-mode で M-; するとあら不思議。
これで打鍵の面倒な /* */ なコメントも簡単に入れられます。
ってこれ基本ですか。
issei さん から立て続けに mhttpd のパッチが送られて来たり。
やはり見る人が見ると目に余るものらしい。甘々なコードをバサバサと斬られている。 勉強になります。m(_@_)m
ああっ 、わがまま言ってすみません。
会社の Win から IE で見たら、ese-nikki はほぼ黒地に緑文字という感じで、そんなに見にくいことなかったです。 おかしいなあ。おかしいのは自分の目か?
自宅から見るぶんには今のが見やすいですが。
ニセがテンパっている。
逃避したいけどできないくらいの激しさで。
うう。コードいじりたいよぅ。
以上、18日分です。
[Top] [PocketBSD] [シュミプロ] [ぽめれちょう掲示板] [きまたま日記] [最新版] [一覧] [戻る]
このページはTsDiarySystemを用いて生成されています。
Cake (SHIMADA Keiki)