2005年09月の日記。

2005年09月01日

よつばと! (4)

昨日購入したものの、読んでなかったので今朝起きてから読みました。出勤途中など、人目に着くところでは読めない危険さ。

ReadMe!エントリ一覧総アタック中のブックマーク

残念なことにプライベートモードに設定されてしまいました。自分一人では、一定のページしか見ないので他の方のオススメというのは閲覧範囲を広げるという点で非常に助かるものです。同じ事柄でも自分の視点だけでなく、他人の視点からではどうか、なぜそのように見えるのか、という違った視点から考えることも楽しいものです。

ローカルディレクトリブラウザ(仮)

登録コマンドが実行できるように。

ローカルディレクトリブラウザ(仮)からDFが起動するのもなかなか面白いです。まだSIGCHILDを拾っていないのでゾンビ作りまくり。

ローカルディレクトリブラウザ(仮)

ところで、fork()してexec()するというちょー定番の処理なのですが、exec()に失敗したことを知るにはどうしたら良いのでしょう。

exit()で変な値を返す、というのもexec()したプロセスが変な値でexit()するかもしれないし。fork()した先でもWidgetとかWindowなどのX IDは有効なんでしたっけ。私の記憶が確かならば、少なくともXサーバとの接続は無効になるのでDisplay*は再取得しなければならなかったはず。サーバに接続し直したらWindowなんかもアレしそうな気もしますが、ルートウィンドウとかにアクセスできるから問題は無いのかも。実装上たまたまアクセスできるのか、アクセスできる仕様なのか良く解ってません。

2005年09月02日

お試しMac mini中止

昨日、Mac miniのお試しキャンペーンが発表されました。30日間使用して、その後返品可能なのだそうです。それが今日になったらすでに中止されてました。

Mac miniの数が足りないのでしょうか。お試しキャンペーンよりもレンタルとかどうでしょうね。どうせx86版になるのだから、と買い控えている人も多いでしょう。そのような人に対して出費を最小限にしてMacOSを体験してもらうには貸し出してしまうのが良いのではないかと思います。

役所ですとか図書館のような公共の場所の端末として採用してもらう、というのもよさそうなのですがこれはこれで手間がかかります。要は、Apple製品が身近なものだと思わせることが必要ではないかと。

ファッションブランドとしてのMacintoshを維持するのであれば、少数派であり続けなければいけないのですけども。

停電時に給電しないUPS

Unbelievabe Power Supplyということですか。割とフフニヤ系ですが、買った人に取っては笑いごとではないような。

2005年09月03日

散歩

朝から歯医者。

せっかくだからそのままDo-夢まで行ってみようと思い、大通まで移動。徒歩で北1条東10丁目のDo-夢へ。11時ころに到着しましたが、営業開始時間が12時からということでまだ閉まってました。しまった。

仕方が無いので引き返して札幌ファクトリのトイザらすを見物。その後、2FにあるNAMCOのアーケード施設でゴルゴ13をプレイ。なんということでしょう。着弾点が左上にずれてます。話にならないまま終了。

ということでDo-夢に向かおうかと思ったらGUNBARL発見。とりあえずプレイ。着弾はどうも画面の中央寄りになると言う微妙なズレ方。それでも適当にこなしつつ(1ミス)、ラストの花火城。なぜかここで3発連続で外し、動揺。花火が8発しか上がらないと言う素敵な事態に。ここまで全部ハイスコアを出してきたのに、おかげで6位という。リベンジしようかと考えましたが、今度こそDo-夢へ。

噂のSuper Tangentもしっかり販売中。ちょっと欲しい。PEG-TG50で音楽再生をしているとあまりバッテリが持たないので専用プレイヤが欲しいところ。

それからシャープペンシルを買いに大丸藤井セントラルまで。もちろん徒歩。目当ての品がうってなーい。なぜだか解りませんが、今日は人がゴミのようだ。20%OFFキャンペーンとかやっているからでしょうか。それにしても普段はここまで混雑しない店なのに。ロットリングの0.35mmシャープが20%OFFで840円というのはちょっと御買い得かも。

で、見付からないので今度はハンズへ。すると、なんということでしょう。製図用シャープが全然ありません。売れないから撤去?

先日見たような気がした弘栄堂へ。気のせいだった模様。

仕方が無いのでLOFTの文房具コーナに向かいます。なぜか行きすぎて7Fまで上ってしまいましたが4Fまで引き返してチェック。製図用品のコーナはものすごく縮小中。STAEDTLERとぺんてるの製品はありますが私が欲しいのはPILOT製。残念。

次は紀伊国屋。って大通りから移転したら文房具が置いてない!

さすがに疲れたと言うかお腹が空いてきたので撤収。6時間くらい歩き続けてました。

Linux kernel 2.6.13

PCCARD ioctlがobsoleteに。でもこれが無いとcardctl ejectとかができなくなります。新しいバージョンのcardctlユーティリティがあるのかも。

FIVAにはCardBusのNICを着けているのですが、これを指しっぱなしにしてbootするとなぜかeth0としてリンクしてくれなくて、ifup eth0でも無反応。cardctl eject;cardctl insertでやっと認識すると言う不思議。

きっとFIVAがよろしくないのでしょうけども。

ローカルディレクトリブラウザ(仮)

登録コマンドでの$Fとか$Mなどを処理するように。

あとは色々メモリリークなどの修正やキー定義ファイルのマルチバイト対応とか。でも未テスト。

レーザマウス

ヨドバシで3,980円で販売されているシグマAPOのレーザマウス。これが某店では2,480円でした。買おうかどうか。もしかしたらそろそろ後継機種?

できればボタンは5つ欲しいのでなかなか購入に踏み切れないと言う。

2005年09月05日

Linux 2.6.13とP-in

カーネルを入れ換えたらPCカードモデムを認識しなくなりました。こんな感じ。

入れ換える前の2.6.12.3だとこんな感じ。

dump_cisするとタプルが読めないみたいですが、なぜこのような状況になっているのかさっぱり解りません。昨日はLANにつないでいたので気づきませんでした。

Linux 2.6.13とP-inとsysfsutilsとpcmciautils

というわけでsysfsutilsとpcmciautilsをインストール。

状況は変わらず、cat /sys/class/pcmcia_socket/pcmcia_socket0/cisすると

とか。

yenta_socketとi82365

ぐぐるとFIVAのPCカードコントローラはi82365互換ということなので、yenta_socketではなくてi82365にしてみました。が現象変わらず。

そもそもPCカードのLANカードが使えていたのでPCカードコントローラとしては問題は無い?

16ビットカードなのに3.3Vというのがツボにハマっているのでしょうか。

痛みの伴う構造改革

~/.dfx/keysを読んだとき、すぐ使えるように(int argc, char **argv)の系式に変換していました。

~/.dfx/cmdに書いた登録コマンドの処理を書いていたときに $Fとか$Rなんかの処理を書いたわけですがこれらの置換マクロもkeysに書きたい、というか書けるべきだと思ったわけです。しかし、すでに(int argc, char **argv)の系式にになっているのでここからマクロの展開はやりにくい。

というわけで、あーでもないこーでもないと悩んだ挙げ句に、こんなもんでもいいか、と考え直したkeycfg.cをばっさり捨てて書き直し。

一時的に「cd /usr/src/linux」みたいなパラメータを持つ内部命令を指定できなくなりますが、char **への変換を止めて文字列のまま保持していないとマクロ展開ルーチンを流用できません。

キー入力判定

パラメータを持たない内部命令単独のキー定義は、テーブルを見て番号に変換してしまいたい。カーソルを移動させるたびにいちいちテーブルを検索していると思うと気分が良くありません。

クリッピング

Exposeからの描画はクリップしてるけど、他のタイミングでGC取ったときにはDefaultGC()してそのまま使っているのでクリップされずはみ出る程描画してしまい大変なことに。

はみ出る程、というかはみ出るわけですが。

2005年09月06日

Linux 2.6.13とPCMCIA

Linux Kernel 2.6 PCMCIAによるとmodule-init-toolsの3.2-pre4以降が必要とのことですが、私の環境は3.1でした。これが敗因?

Google抹殺指令

MicrosoftがGoogleを敵対視する度合が伝わってきます。

アダルトサイトの閲覧を妨害しコーランを表示するプログラム(http://www.itmedia.co.jp/enterprise/articles/0509/06/news045.html)

「ShutDown」「Restart」ボタンを押してもログオフするそうです。AdjustTokenPrivileges()とか特権周りの処理で手を抜いているのではないでしょうか。Windows 9x系だとちゃんとシャットダウンするかもしれません。

ローカルディレクトリブラウザ(仮)

SuSE 9.3にコンパイル済みバイナリをいれてみたところ、普通に動きました。こちらにはXaw.so.8がある模様。調子にのってデバッグオプション外してmakeしたらカーソル移動しただけでSIGSEGV。-O2だと動いて-Osだとアウト。何かやっちゃったっぽい。

ローカルディレクトリブラウザ(仮)

っていうか、やってました。とりあえず修正。

しかし、ファイルリストの表示処理と登録コマンドの表示処理など、似たような記述があちこちに。どうにかしたいと思いつつもいい手が思い付きません。キャプション表示と項目表示を切り出して関数ポインタ経由で呼び出すようにすると、外側の処理はほとんど共通にできますが、その関数ポインタをどこに保持するのか、というのが悩みどころ。C++みたいにばんばんクラス継承して行けば良いのですがCだと構造体ベースのhas a系記述しかできない(?)ので継承したデータにアクセスしようとするとthis->base->base->memberみたいな書き方になってしまうのがイヤ。

templateを手で展開した、とでも思えば良いのか。

とりあえず書くだけ書いてから折り畳むのは後から考えることにします。

Linux 2.6.13とPCMCIA

TDKのPCカードモデム(14.4kbps)とかcoregaのPCCL-11(無線LAN)なども試してみましたがアウト。CISが読めません。

もしかしてCardBusカードだけが使用可能なのかも。CardBusなSCSIカードがあったはずですが、どこにしまったものやら。

2005年09月07日

Linuxで無線LAN

せっかく出てきたことだし、今丁度使っていなかったのでPCCL-11をFIVAで使おうとoronoco_csをメイク…しようと思ったのですがmake menuconfigでどれを選択したらいいのか解らなかったりして。

KconfigをマルチグレップしたところCONFIG_HERMES系がそれだということが判明。

無事にorinoco_csができたところで適当に認識させるとeth0に。eth0は今まで100Base-TXで使っていたのですが、重複してもOK?

設定についてはFedoraだと「インターネット接続オプション」とかいうので設定できるらしいのですが、GNOMEデスクトップ環境をインストールしていないのでどこから何を起動していいのかさっぱり解らないとかいう。P-inを設定したときに使用したredhat-config-networkを起動してWirelessを選択すると、ダイレクトに製品型番を選べという雰囲気ですがPCCL-11はないしorinocoとかHERMESっぽいものもないし、なにをどうしたらいいのかさっぱり。

/etc/sysconfig/network-scripts/ifcfg-eth1とか書いたりするとredhat-config-networkにeth1が出てきました。らっきー。

でもIPアドレス取ってくれないので使えません。んがー。

Linux 2.6.13とPCMCIA

CONFIG_HIGHMEM=yで解決したもよう。なぜHIGHMEMが必要なのかは解りませんが。カードサービスがdmesgにunable map highmemというようなメッセージを出力していたのでHIGHMEMに目を着けたのでした。

とりあえずpcmciaサービスを止めてみたわけですが、modprobe yenta_socketでソケットドライバさえロードしておけばカードの挿抜を認識して/sbin/hotplugを動かしてくれます。

しかしpccardctl ejectでPCカードの電源が切れてくれないなど微妙に中途半端。現時点では昔ながらのcardctlの方ができが良いように思えます。

2005年09月08日

iPod nano

2GB/4GBのメモリを搭載した小型プレイヤ。サイズが小さくなりましたが、コネクタは従来のiPodと同じものを使っているそうで周辺機器への接続には問題が無いそうです。

画面も出てますが、スクリーンロック機能の金庫風画面が洒落てます。画面上に金庫のダイアルを模したものが表示されていますが、これをiPodのホイールで回すという。

価格は2GBで21,800円、4GBで27,800円。nanoと言う割にはsuffleよりは大きい。薄いけど。

そして例のごとく、インプレスによる分解記事。メモリはサムスンの16Gbitチップを2つ載せているようです。

一つ新たに解ったことがあります。ジーンズのやけに細いポケット。あれはコイン入れだったのですね。使い道が解りませんでした。実際にコインが入るか試そうかと思いましたが今日はジーンズではないので断念。入れるのは良くても取り出すのはかなり難しいような気がするのですが。

SONYも新型Walkman

とやかく言いませんが、iPod nanoが27,800円で4GBなのにWalkmanブランドになると27,000円では1GBしか買えないと言うのでは誰が買うのでしょう。

2005年09月09日

int DeleteSubDirectories(const char *path)

ディレクトリ削除用の関数を作っててそれでさくっとディレクトリを削除していたわけですが、この関数は消せた、消せなかったという程度の情報しか返しません。そのため、どのファイルが削除できなかったのか、というのがさっぱり解らないと言う事態に。考えが浅かった。

一部が違うコード

a();
b();
c();
d();
f();
g();
a();
b();
c();
e();
f();
g();

こういうコードをまとめる、都合の良い定石ってないものでしょうか。

以前は

a();
b();
c();
if(条件){
  d();
}else{
  e();
}
f();
g();

などと書いたのですが、そろそろこれを卒業したい。関数ポインタを駆使するとある程度解決できるのですが、差異が大きくなってくるとかなり厳しい。

そもそも、その関数ポインタをどこに保持するかというのも難点。C++なら一部の個となる処理を埋め込んで展開してしまうようなtemplateを使うのが手っ取り早い気もするのですが。

ACCESSがPalmSourceを買収

ACCESSというのは、NetFrontというWebブラウザを作っているところです。このブラウザはDoCoMoの携帯電話などに搭載されています。最近ではPSPにも搭載されました。組み込み機器向けの第一ブラウザといえます。

このACCESSがPalmSourceを買収。どのような意図があるのかよく解りません。ParmOS用のNetFrontも作ってますがNetFront用のPalmOSというものでも作らせるつもりでしょうか。

ITmediaにはインタビュー記事(http://www.itmedia.co.jp/enterprise/mobile/articles/0509/09/news115.html)も出てます。これによると

が欲しいと読めます。しかし、デベロッパコミュニティというものは企業の下請け集団ではありません。

携帯機器向けのリッチアプリケーションについて、

Palmのコミュニティに放り込めば、アプリも簡単に作ってもらえる。

環境を用意したら作ってもらえるだろう、という読みはある程度正しいのですが、作るのも人間です。作りたくなるような動機付けが大切です。「放り込めば」というのはどうにも違和感があるというか、気分がよくありません。

利用者からすると、アプリケーションが使えればOSというのは実はなんでも良いのです。Wordが動けばMacOSだろうがWindowsだろうがLinuxだろうがこだわらない人が大部分です。というか解らない人もいるかもしれません。利用者からするとNetFrontが動くなら、そのOSがiTRONなのかPalmOSなのかPSPなのかは気になりません。そもそも、携帯機器を購入した時点でOSは選択できないのでこだわりたくてもこだわれません。アプリケーション企業がOS企業を買収することのメリットがイマイチ見えてきません。

2005年09月10日

真剣だと知恵が出る。中途半端だと愚痴が出る。いい加減だと言い訳ばかり

何かで見たのですが、誰の言葉だったのか解りません。

Linux 2.6.13とPCMCIA

HIGHMEMを有効にしたら使えた、というのは勘違いだったのか、どうも使えない状態に。

yenta_socketではなくてi82365にしてみたところ起動時にエラーが出てしまう始末。

Intel ISA PCIC probe: not found.
Device 'i82365.0' does not have a release() function, it is broken and must be fixed.
Badness in device_release at drivers/base/core.c:83
 [<c01c82f7>] kobject_cleanup+0x67/0x70
 [<c01c8300>] kobject_release+0x0/0x10
 [<c01c8ba9>] kref_put+0x29/0x80
 [<c01c8326>] kobject_put+0x16/0x20
 [<c01c8300>] kobject_release+0x0/0x10
 [<c038bf44>] init_i82365+0x164/0x180
 [<c03787ab>] do_initcalls+0x2b/0xb0
 [<c01002c0>] init+0x0/0xf0
 [<c01002e7>] init+0x27/0xf0
 [<c0100e45>] kernel_thread_helper+0x5/0x10

PCMCIA Socketはyentaでよいとして、カードサービスの代替をどうにかしないといけません。その割にCardBusのLANカードが普通に動くのが納得行かないと言うか。

2005年09月11日

投票

とりあえず。

買物

投票の帰り、Dreamcast用のSegaGTを購入。504円。

全然うまく走れなくて燃え。無限のDRIVERS LICENSEのアレ、1分8秒で1位になれるようなのですが、1分9秒から縮まりません。大抵1分10秒。

開票

解散当時は「このタイミングで解散したら自民党が負ける」「民主党大躍進間違いなし」という主張を自民党造反組、民主党が行っていたようですが結果として自民党が大多数の議席を取る見通し。というか自民党 vs 元自民党という形になってしまい民主党その他の立場なし。

結局のところ、ポリシのある自民党と、ポリシがあって自民党から離脱した元自民党が勝ち、ポリシが見えないその他には全然票が入らないと言う結果。好みはあるでしょうが、何らかの主張があるところに票が集まったようです。

驚いたのが、大地に票がそれなりに集まったところ。なぜ入れるのかさっぱり解りません。

2005年09月12日

ドイツ戦車

ところで、先日AppleがIntelのCPUをMacintoshに採用すると発表したわけですが、そのときに後継となるMacOSのコード名も発表しました。レオパルド。

というわけで、落ちが読めたと思いますが、

1973年Gepard自走対空砲MacOS X 10.0
1944年Puma装甲車(Sd.Kfz.234/2)MacOS X 10.1
1978年Jaguar自走砲(RJPz.3)MacOS X 10.2
1942年V号戦車 PantherMacOS X 10.3
1942年VI号戦車 Tiger(Sd.Kfz181)MacOS X 10.4
1965年Leopardx86版 MacOS(10.5?)

特に戦車の時系列には沿っていないようです。

Leopardを超える戦車となると、次にくるのはMaus(マウス)でしょうか。あまりの強さに未完成ですから縁起は良くありません。狐(偵察装甲車/2001年)とかオセロット(自走対空車両/2000年)とかですとちょっと弱そう。

VK16.02のLeopardは戦時中の未完成車輛だったような。

YAFOO! 墜つ

レイザーラモンHGがYahoo! Japan本社に乱入

Yahoo!に接続できないとは想定の範囲外でした。ちなみに、私は彼が動いているところを見たことが無いと言うかテレビは毎日見てますがあまり電源を入れていないと言うか「フォー!!」と言えば変態仮面。

2005年09月13日

岡田代表と責任

民主党代表の岡田さんが代表を辞任するとか。辞任の理由が「責任を取って」。訳が解りません。

64議席を失った責任を果たすのであれば、失った議席を回復させることが責任でしょう。辞任しても意味がありません。逃げてるだけです。

たとえば、学生が学校で備品を壊すなどして学校に損害を与えたとしましょう。その場合、責任を果たすということは、損害を回復することです。自主的に退学して学生と言う身分からはなれれば損害が回復されると言うものではありません。単に退学という罰を受けるに過ぎず、責任を果たしているとは言えません。

学生時代、学校の壁を破壊した人がいました。その人は責任を持って修復しました。雪を詰め込んで。おかげで失笑…というか爆笑を買いましたが別に退学になったり自主退学になったりということはありませんでした。いや、雪を詰め込んだから責任を果たしたというわけでも無いのですが。壁は別途修復されたようです。

責任は持つものであって、取るものではありません。行動に付随するものであって、行動していない人に押しつけることができるものでもありません。大敗の責任を取ると言うのなら腹を切って死ぬべきである。地獄の火の中に投げ込むものである。というのではなく、大敗の原因を調べ、次は負けないような体制を作るのが責任と言うものです。

責任を放り出して、議席減フォー!!代表辞任おっけー!!とかいって(言ってません)逃げ出すような人を誰が選ぶものですか。

Linux 2.6.13とPCMCIA

kudzuを動かしたらモデムカードを認識。ダイアルアップが可能に。

PCMCIA周りやHIGHMEM、カードサービスというのはちょー見当違いだったようです。

無線LANカードもkudzuで認識させてやればiwconfigが無線LANだと認識するようになるのかも。kudzuが裏で何をやっているのかがミステリ。

2005年09月14日

Linux 2.6.13とPCMCIA

/etc/hotplug/pcmcia_socket.rcを/etc/init.d/pcmciaにコピー。元からある/etc/init.d/pcmciaは適当に退避。

これで16ビットカードでも刺すだけで認識。

lilo

lilo.confを書き換えたにもかかわらず、lilo -vし忘れて途方に暮れたり。

panic調査

別部署でLinuxのドライバを書いたところpanicしてしまい、原因が解らないということなので解析のお手伝い。

幸いKDBはインストール済みだったのでそれで止めてみたところNMI Watchdogが利いてしまいリブート。

lilo.confでnmi_watchdog=0と書いてみたものの効果なし。理由はさっき書いたようにlilo -v忘れによるもの。すっぽーんと忘れてました。

ターゲットはモジュールなので事前にブレークポイントを設定できません。というわけで怪しい箇所に__asm("int $3");を埋めます。これでmodprobe。当然、デバッガ例外で止まります。

止まってしまえばこちらのもの、KDB出動作を継続…できません。Catastrophic error(綴りには自信がありません)とかなんとか。何が何でもリブートしたがるようです。

仕方が無いので、panicしたという時のログを見て、その前後の命令からソースコードの該当箇所を割り出すことにします。いつものようにobjdump。

ファイル形式が認識できません

えー、いまお前がコンパイルしただろーとかツッコミたくなりますが、できないものはできません。一体このファイルはなんなのか。$ file hoge.o

hoge.o: AMD64-x86(みたいなー)

ふむー、x86-64ですか。objdumpの対応形式は?

objdump: サポートされているターゲット: elf32-i386 a.out-i386-linux efi-app-ia32 elf32-little elf32-big srec symbolsrec tekhex binary ihex trad-core

objdump: supported architectures: i386 i386:x86-64 i8086 i386:x86-64:intel i386:intel

x86-64はサポートしてます。x86-64はディスアセンブルできて、AMD64はできないとは! こんなところでもIntelの陰謀!?

さすがにバイナリをそのまま読み下すことはできないので挫折。

この時点で万歳したくなりました。しかしまあ、一度引き受けたからには、原因を突き止めないと。それが責任というものでしょう。

まずは手元のレジスタダンプと/proc/ksymsを突き合わせ。scsiから何かブロックI/Oリクエストを生成してその処理中で止まっているようです。RIP(なぜR?)レジスタ自体はll_rw_blockの中を示しています。しかし、この関数に問題があるならもっとバンバンpanicするはずなので直接的には影響が無いはず。ドライバが出したI/Oリクエストが悪いのかもしれません。

しかしドライバが際後にSCSIドライバに出しているリクエストはTEST UNIT READYで、しかもこれは正常に完了しているようです。ll_rw_blockを逆アセンブルして該当する命令が何をやっているか確認したいところですがobjdumpが逆アセンブルしてくれないので断念。

KDBでその後の処理を継続させると、panicせずにWatchdogが起動。リブートを余儀なくされます。なかなかpanicまで持ち込めません。KDBの操作でもたもたしてしまうせいか、panicするところまで到達する前に時間切れになってしまうようです。

というわけでlilo -vを思い出したりして無事にWatchdogを無効に。ごにょごにょしているとWatchdogのアレ、Oopsメッセージが出なくなりました。何かストールしているようです。いつまでたってもpanicしない、現象が出ないで焦りが出てきます。もうダメかと。なんとか現象を発生させるために設定を戻したりしていろいろ試していしたが、panicしません。そもそも私はpanicしたところを見ていません。出てきたOopsは全てCPUストールを検出したWatchdogのものです。そもそもpanicしているのかどうかを疑う時期です。

ユニプロセサ(1CPU)だとストール、4プロセサだと別プロセサがストールしたCPUのストールを検出してKDBをアクティブにするという状態。というわけで4プロセサ状態で何度かストールさせてRIPレジスタを見ていると5回中4回は同じ位置でストールしています。どうやらio_request_lockの獲得待ちのようです。ロックの解放待ちで停止していると言うのならll_rw_blockで停止すると言うのも不思議ではありません。io_request_lockの獲得待ちで止まっていたのでしょう。

この仮説が正しいか、反証できないかを確認。複数CPUで動作させるとCPUのうち1つは今回作成したドライバのコード内でストールするようです。そのドライバのコールスタックを確認するとそれなりに怪しい。予想通りio_request_lockを取りにいっています。

担当の方にはio_request_lockの取り方を見直すように伝えて終了。修正までは私の責任ではない、と言うか修正結果までは責任を持てない、責任を持って直せるとは約束できないのでそこまではしませんでした。

Dreamcast

SegaGTを購入し、さあ遊ぶぞと思っていたらDreamcastが不調。ディスクを読みません。

2005年09月15日

他作PC

自作PC、といっても私が作ったわけではないので他作PCですが、とにかくその手作りPCが激しく不調。

Windowsだとそれなりに動いていたものがLinuxだと全然動かないと言うかHDDすらなかなか読めない状態。

建てつけが悪いのか、ということでぐいぐい押し込んでみたりディスクの接続コネクタを替えてみたところ、やっと安定してブートできるように。これだから手作りPCは。

PSPのボタン

キュアホワイトモデルは改善されているようです。記事でも触れていますが、そうなるとキュアブラックではどうなのかが気になります。

2005年09月17日

Fluxbox 0.9.14

title barがスクロールする、ウィンドウ移動時にスクリーンの端にスナップさせることができる、などの更新。

フォントの描画にxftを使うようになったとのこと。アンチエイリアスの設定は完全に取り払われ、フォントごとに個別に指定するようになっているようです。

スタイル指定のフォントについて、haloもしくはshadowという特殊効果が追加されています。これにともない、フォント定義におけるhalo、shadow指定は削除されています。

キー定義において、キーコードで指定できるようになりました。

良く考えたらFIVA 101ではCPUが非力なため、xftを使わないように設定してmakeしていたりして。もちろんアンチエイリアスもOFF。

2005年09月18日

Walkman

やけに親しみが持てるデザインというか外観だなあと思っていたのですが理由が判明しました。

似て非なるもの点滴のボトルの下にある、あれと良く似ているような気がします。中に液体が入っているようなイメージとか。フタが操作するときにひねるダイアル(竜頭みたいなやつ)と重なってみたり。薬液が通るチューブは音が流れるイヤホンのケーブルですね。

これに親しみが持てると言うのはどういうことか。

sudo

Makefileにrm -rf /とか書いてからsudo makeとかしたらどうなるのでしょうか。

2005年09月19日

FIVAとLinux

三浦さんからメールが届きました。FIVAで機種判定がうまく行かない件についてパッチが欲しいとのこと。元のコードは三浦さんが書いたものなのですから解説をつけて返信。

どなたか、MediaGXmとCS5520のデータシートがありましたらコピーを頂けないものでしょうかねえ。

そういえば先日書いた「真剣だと知恵が出る、中途半端だと愚痴が出る、いい加減だといいわけばかり」というのが三浦さんのblogでもネタになっていたり。新橋の居酒屋には行ったことがありませんから有名な言葉なんでしょうね。

Fluxboxのメニュー

メニューをマウスで操作しようとするとイマイチな感じ。サブメニューがある項目からサブメニューを選択しようとする時、別のメニュー項目を通過するとサブメニューが閉じてしまうと言う。

一定期間はサブメニューを閉じないようにしようと思ったのですが、既にオープンディレイ/クローズディレイというタイマが設定されていてこんがらがりそう。もう少し良く読んでから着手。

2005年09月20日

多数コアとキャッシュ

CPUコアが増えるとその分メモリの更新が増えるはずです。その際にキャッシュの同一性を保証するにはどうしたらよいか、という話。

複数の書き込みが発生するから他のコアの書き込み結果を別のキャッシュメモリに反映させる必要があるわけです。だったら、同一メモリ空間には他のCPUコアからの書き込みが発生させなければ良いだろう。そのためにはCPUをパーティションとして分割してパーティションの中だけのアクセスに限定してしまおうというのが発想の元のようです。その実現のために仮想化技術を使って、多数のコアを持つCPUから仮想CPUを作ろうという。たとえば32コアのCPUを分割して、2コアのCPUを16個に見せかけ、この分割単位のCPUコアの間だけでキャッシュの同一性を保証するならコストがかかりません。

しかし、これに意味があるのでしょうか。結局アプリケーションやOSからは分割されてしまった2コアや4コア程度のCPUしか使えなくなります。アプリケーションをマルチスレッド対応にしようという流れとは反対方向に進んでしまいそうです。

その救済としてか、HyperVisorでは仮想CPUコアのパーティションにCPUを動的割り当てすることも見当されているようですが、最大でいくつまで並行処理ができるのか、ということと現在いくつの並行処理ができるのか、ということを常に把握しながら動作するようなアプリケーションを書くのは、不必要に複雑になります。仮想マシン上で動作させるOSのライセンス体系も複雑になりそうです。普段は2CPUしか使わないのに、最大16CPU使うかも知れないからといって16CPU用のOSを購入しなければならない、ということになると購入者からは不満が出そうです。

マルチスレッディング

SMTを実装したCPUやマルチスレッドを意識したGPUなどでは、よくキャッシュミスを契機に走行スレッドを切り替えるということがなされます。これがどの程度有効なのか最近疑問に感じています。

というのも、スレッド#0がキャッシュミスした場合、すでにキャッシュは埋まっているわけです。それでもあふれてデータが見付からない。だからキャッシュミスを引き起こすわけです。よくあるLRUアルゴリズムなどでは、最古に使われたデータが破棄されて、そこに新たなデータを読み込みます。破棄されるのはおそらくスレッド#0が使用していたデータではなくて別のスレッド、スレッド#1のデータではないでしょうか。

すると、スレッド#0がスリープさせられてスレッド#1がアクティブになってもアクティブになってもデータが破棄されているわけですからキャッシュミスを起こす可能性が高くなります。そうこうしている内にスレッド#1もキャッシュを踏み外します。すると最古にアクセスされたデータ、スレッド#0のデータを破棄してそこにスレッド#1用のデータをロードしようとします。

そうしてまたスレッド#0に切り替わるわけですが…もしかして釣合が取れる?

ということを考えているのですがどうやったら実測できるかが謎。疑似CPUと疑似キャッシュというかCPUとキャッシュをモデル化してシミュレートさせることはできますが、そのモデルが正しいとは限りません。

キャッシュが独立しているのか共用なのか、というのもモデルを複雑にするような気がします。独立している場合にはキャッシュの同一性を保つためのオーバヘッドが必要になりますが、この所用時間がどの程度なのか解りません。

Opera 8.5

ついに無料に。

ブラウザは儲からないのでしょうか。

IceWM 1.2.23

makeに失敗するのですが、ダウンロードするものを間違えたのでしょうか。

リンクが通らないのですが、

を参照しているからのようです。どうも--enable-liteをつけてconfigureすると、このあたりの関数が定義されないようです。

2005年09月21日

「文化審議会著作権分科会法制問題小委員会 審議の経過」に対する意見募集

先日書いて送付したのですが、内容はなかなか面白かったです。元々は私的複製とその補償金制度についてだけ書くつもりだったのですが、他にも特許申請/判定手続き上での資料の複製ですとか図書館利用における著作権の侵害/保護など興味深いものがありました。

しののめ(なぜか変換できない)フォント vs emacs

14pxフォントが使いたい、と思って氏の飲めウェイ東雲フォントをインストール。

ちょっときれいすぎると言うか、もうすこし丸みのあるほうが好みなのでサイズは小さいけどM+に戻す…戻りません。

asciiセットはM+に戻ったのですが、JISX0208がどうしてもM+になりません。サイズは12pxのようですが、字体は東雲フォントか、-alias-gothic-*なフォントのようです。

私はXのリソースでフォントを指定しているのですが(.emcasでやると起動後にウィンドウがトランスフォームするのが気に入らない)、

Emacs.font:fontset-12

Emacs.Fontset-0:-mplus-gothic-medium-r-normal--12-*-*-*-*-*-fontset-12,\
ascii:-mplus-gothic-medium-r-normal--12-*-iso8859-1,\
japanese-jisx0208.1983:-mplus-gothic-medium-r-normal--12-*-jisx0208.1983-0,\
japanese-jisx0201.1976:-mplus-gothic-medium-r-normal--12-*-jisx0201.1976-0

とファウンドリとファミリを指定しているにもかかわらず無視されているような雰囲気。もしかするとファミリは適用されているのかも知れません。

ちなみに、色々試している時に判明したのですが、ascii:のコロンの後ろに空白を書くとemacsはフォントをロードできなくなって起動しなくなります。japanese-jisx0208.1983:のコロンの後ろには空白があってもOKのようです。不思議。

どうにも解決しないので、xorg.confのFontPathの順序を替えて東雲をM+の後ろに持って行くことで解決しました。ファミリとサイズ、文字集合だけ見て、ファウンドリは見ていない?

Googleで検索すると、Emacs.FontsetListを指定しないと行けない、というような話があったのですが、その指定内容はリソース名のFontset-Nを列挙して0, 1, 2とするものだったり仮想フォント名のfontset-Nを列挙して12,14,16だったりとEmacsのバージョンにも寄るのかも知れませんがまちまちで余計に解らなくなりました。指定してなくても動くし。

/でディレクトリ移動

インクリメンタルサーチ中、「/」を入力したらカーソル位置のディレクトリに切り替える、という処理を追加。割と便利。

インクリメンタルサーチダイアログの中で「etc/sys/pcmcia/」とか入力して行くだけでどんどんたどれるのが楽しい。

それにしてもWindows 98でDFを動かしていたときに比べるとX11は反応が遅い気がします。

2005年09月22日

ファイラで起業

あたりがありますね。企業が作っている、となるとファイルマネジャーワンのハミングヘッズ株式会社などもあります。

IceWM

ローカルディレクトリブラウザ(仮)でXtPopup()でダイアログをポップアップしたとき、Fluxboxだとダイアログの座標が左上(0, 0)になったりして親ウィンドウとの関連をあまり考えてくれていないようなのでどうにかしないと、と思っていたのですがIceWMだとかなりいい位置に表示してくれます。

しかし、psで見る限り、使用メモリがFluxboxの倍くらいなので96MBしか積んでいないFIVAだとちょっともったいない。悩ましい所です。

Operaのダイアログなどは割といい位置に出てくるのでFluxboxでもダイアログをいい位置に出すようにはできると思うのですが、どのようにしたらよいのか。

MediaGXのフレームバッファ

kmt449さんから教えて頂いたGeodeGXmのデータシートを眺めていると、フレームバッファ操作用の機能がCPU内(?)にあるようです。CPU内と言っていいのか微妙ですが。CS5530用フレームバッファドライバに手をいれたら5520でも使えるのか。それとも今使っているvesafbのbitbltなどを置き換える方が楽なのか。

そもそもX11のcyrix_drv.oがシグナル4で止まる、というのを解決したほうが良いのか。

2005年09月23日

ローカルディレクトリブラウザ(仮)

以前からやろうと思っていたドットファイルの表示/非表示の切り替えを実装。

これを利用して表示のマスクもできるはずですが、UIを作るのが面倒。

既に開いているemacsにファイルを開かせるにはどうしたら良いのでしょうか。もっとも、これはディレクトリブラウザが留意することでもないような気もしますが。

2005年09月24日

FlexScan T766

ナナオの補修用CRTが不足しているそうです。当該機種はT966/T965/T766/T765。

私が使っているのはT766なのでビンゴ。買うときにはT966にしようかと思ったのですが、置けるかどうかが不安になってT766にしたとかいう。後からラックを変えたので問題なく置けるのですが、あのときに奮発してT966にしてくべきだったかなあ。

ちなみに、液晶ディスプレイではないのは1280×960というナイスな解像度が使える液晶ディスプレイが手頃な価格で見当たらないから。1024×768なら安く買えるんですけどねえ。

GetTextExtentExPoint()

Win32でいうGetTextExtentExPoint()というのはX11にはないのでしょうか。何文字まで詰め込めるか、というのを手軽に知りたいのですが。1文字ずつ増やして行ってはみ出るまでループするしかないのかもしれません。

データホテルがRingServerプロジェクトから脱退

今ごろ気づきましたが、LivedoorのデータセンターサービスであるデータホテルがRingServerプロジェクトへの参加を取り止めていたようです。

2005年09月25日

のまタコ商品化のための公開質問状

既存のコンテンツにインスパイヤを受けて新たなオリジナリティを加えて商品化する、ということを商売の基本としているavexに質問状を送付したとのことです。

これはちょっと、いかがなものかと。というのも、「おーけー、そっちの『のまタコ』は認めてやるよ。だからこっちの『のまネコ』も認めてくれ」という流れになりそうなのですが、それが望んだ結果なのかどうか。

crazygame

The year is 2501. Your planet has just been overrun by an evil alien force known only as "The Dots". You managed to escape the fate of your planet by hopping into your shuttle and blasting off, but The Dots are right on your tail! Mindless at first glance, The Dots are able to work together to destroy you, using many different tactics and maneuvers! How long can you last before they destroy you too?

2005年09月26日

redhat-config-network

redhat-config-networkなんでTypeがEthernet?

2005年09月27日

Framebuffer

driver/video/geode/*あたりを眺めてました。GX1のデータシートと見比べている分には、CS5520もスキャン対象にするだけで動きそうなのですが、そもそもこのデータシートがMediaGXm + CS5520にも適用できるのかどうか。

ソース自体は処理をストレートに書いてあるだけで大変解りやすいです。あとはCS5520との差分と、バックアップ取ってFIVAをふっ飛ばす覚悟。

顧客への通知義務

アメリカ、CardSystem Solutions社からクレジットカード情報が漏洩した事件について、VISAとMasterCardには顧客への通知義務はないとする判決。

カルフォルニア州法では、個人情報の紛失や流出が発生した場合には顧客に通知する義務があります。この義務を誰が果たすのか。一般的な契約者は、VISAやMasterCardといったカード会社が決算処理をどの会社に委託しているか、などということは知らないのではないでしょうか。それはカード会社と委託会社との契約であり、カードの契約者には関係の無い話です。情報漏洩を起こしたのはCardSystem Solutions社ですが、同社の顧客はVISAやMasterCardであり、クレジットカード契約者ではありません。ですからCardSystem Solutions社にはクレジットカード契約者に通知する義務は無いでしょう。

では、VISAやMasterCardはどうか。直接情報を漏洩したわけではないにせよ、漏洩したのはVISAやMasterCardと契約している顧客の情報です。カルフォルニア州法に則り、顧客情報の流出を通知する義務が発生するのではないでしょうか。

といったことを考えながら記事を読んでいたら

VisaとMasterCardは、顧客に通知を行う責任は、クレジットカードを発行し、被害にさらされた顧客と直接的な関係を持つ銀行にあるとしている。

カード会社と契約するのではなくて、銀行と契約するのですか。

しかし銀行って口座解説者がどのカード会社と契約しているかって把握しているものなのでしょうか。引き落とし依頼などと突き合わせれば良いのでしょうが。あとは銀行がどのようにして情報流出を知るのか、ということですがこれはカード会社が銀行に通知するひつようがあるでしょう。引き落とし依頼といった形で銀行とカード会社が契約しているのですから、カード会社からすると、銀行も顧客に該当するという考え方もできます。顧客の口座を調べて通知するよりは顧客に直接通知下法が早そうな気もします。

次世代DVD

IntelとMicrosoftがHD DVD規格の支持を表明したそうです。対するBlue-rayはSONYをはじめ、松下、HP、DELLなどが支持。

IntelとMicrosoftは、両社がHD DVD陣営に肩入れすれば、それで両陣営の膠着状態を打開できると考えている。

余計に膠着しそうな気がします。Blue-rayに肩入れしたならばあっというまにBlue-rayになりそうですが。

なぜHD DVDなのか、という点についてこのように説明しています。しかし、第一のコピーの問題については物理層フォーマットの話ではありません。物理規格に盛り込まれているというのは重要かも知れませんが必要ではありません。Blue-rayがどのように規定しているか解りませんが「必ずコピーできる」必要は特に感じません。選択できるほうがコンテンツ販売業者に取ってはメリットがありそうです。コンテンツ販売業者にメリットが無ければ、コンテンツが出てきません。コピーできないコンテンツを一般消費者が購入するかどうかは別の話です。

次に、現行DVDとの互換性。私はあのPDドライブを持っています。DVDに移行してもメディアに互換性があるから大丈夫というPDです。現状はどうでしょうか。DVDかCDしかありません。おそらくDVDからHD DVDに移行するとDVDは使われなくなるでしょう。カセットテープもLDも消えて行きました。同様にDVDも消えます。

際後。記憶容量ですが二層Blue-rayの50GBと二層HD DVDの30GB。50GBのほうが大きいです。

Blu-ray側の言う50Gバイトディスクは、いまのところ全く登場する気配がない。現時点では、HD DVDのほうが容量で勝っている。そして、ハイブリッドディスクについても、Blu-ray側にはそのための仕様があるだけで、実際の実装例はどこにも見あたらない

しかしながら、HD DVDには50GBを超える容量については「仕様すらない」のが現状です。公開され定められた仕様を無視して独自拡張、独自仕様を作り続けてきたMicrosoftならではの発言と言う印象を持ちました。

容量

HD DVDの30GBというのは個人的には容量が少なすぎます。なぜなら:

PC主記憶記録装置容量比率
PC-6601SR64KB3.5FD(1DD)320KB5
X680002MB5.25FD(2HD)1.2MB0.6
PC-8801MC192KB5.25FD(2HD)1.2MB6.6
PC-9821Ap4.6MBMO230MB50
Pentium 100MHz機64MBPD640MB10
PCG-SRX3384MBCD-R640MB1.6
Athlon XP機1024MBDVD4.7GB4.7
VGN-T90PS512MBDVD4.7GB9.4

このように主記憶の容量はどんどん増えています。なぜなら、取り扱うデータの質、量が増加してきたからです。主記憶で取り扱った作業結果を保存するには、最低でも主記憶と同じ容量の記憶装置が必要です。X68000では逆点現象が起きるという面白い状態になりました。逆にPC98と230MBのMOの組合せではかなり余裕がありました。

Windowsが普及して普通のPCで画像や音声も取扱うのが容易になるとそれらがデータとして含まれるようになりました。また、仮想記憶によって主記憶の容量不足をカバーできることもあり取扱うデータの容量が増えました。

にもかかわらず、64KBの主記憶でフロッピーに書いていた時と、1MBの主記憶でDVDに書き込むのとでは比率が変わりません。今後、64ビットOSが普及するとさらにメモリを載せることができます。そうなるとこの比率はますます下がることになります。

MSXやPC-8801の時代は、PCというのは趣味であっておもちゃ、無くてもどうということはないのものでした。今では違います。仕事で使う書類ははWordやExcelのファイル、写真はjpgファイル。仕事で用いるのですからそれらをちゃんと保管しなくてはなりません。自分で書いたものだけが記録、保存できれば良かったFDの時代ではなく、他人からもらったデータも保存しなければならないのですから必要な容量は2倍、3倍ではありません。以前は主記憶の5倍で良かったものですが、今では10倍は欲しいところです。

こうしたことを考えると、30GBという容量では先が不安です。パソコンの主記憶が64KBから64MBになったように、データは10年で1,000倍になります。今は個人向けバックアップ装置として10GBもあればよいかもしれません。しかし、5年後には300GB、10年後には10TBになります。今までと同じ増加傾向ではなくてある程度は飽和するとは思いますし、CDがいつまでも同じ容量であることを考えるとそこまで考えなくても良い、またはPCの記憶装置としては別のデバイスを用いるほうが良いかも知れませんが、iPodが4GBというメモリを積んでしまうわけですから数年後にはPCは32GBくらいは積んでもおかしくありません。その時に、作業結果を保存するには30GBでは心許ないと感じます。これが50GB記録できるBlue-rayなら5年後でもなんとかなりそうです。今記録できる30GBよりも5年後に記録できる50GBに期待したい。

2005年09月28日

vs 日能研

A君は不要?

任天堂ドリーム11月号

おまけCDが大評判とのことなので購入。

XIM

ローカルディレクトリブラウザ(仮)で日本語入力をテストしてみよう、と思ってフォールバックリソースでinternational: Trueと指定。すると"Warning: Input Method Open Failed"と連れない一言。

何がよろしくないのか、とかなり悩んだのですが結局解りませんでした。しかし、Fluxboxのルートメニューから起動したらあっさり日本語入力が可能に。これは! と思ってLANG=ja_JP.eucJPしてから起動したら警告も出ずに日本語入力ができるようになりました。FluxboxはLANG=ja_JP.eucJPで起動してあるのですが、bashはLANG=en_USなのでこのような違いが。

なんにしろ、en_US環境ではinternationalリソースは変えない方がよさそうです。X Toolkitにおんぶにだっこなので、app-default/以下にリソースを置いておけばロケール別に使い分けてくれるハズなのでおおむねOK。

ローカルディレクトリブラウザ(仮)

ついでに、登録コマンドのマクロ機能についてテスト。$R$Fというように連続して書いたときに誤動作していました。

マクロの展開後、ポインタはちょうどいい位置に設定しているのに、ループする際にNectChar()を呼び出してしまってポインタを1文字進めてしまうという。

とりあえずマクロの展開後にはそのcontinueすることにして暫定対処。というか対処後のコードが気に入らないので、少し考えたい。

2005年09月29日

gnuserv

既に開いているemacsでファイルを開きたい、と訊いたところZnZさんからC-x C-fを教えて頂きました。いや、そうではなくて。

ローカルディレクトリブラウザ(仮)からファイルを開くためにemacs $Fなどを実行するとemacsがどんどん増えてしまう。これを何とかしたい、という。xyzzyでいうところのxyzcli.exeが欲しい、という要求。

gnuservというものがある、ということなので早速ダウンロードすることに。RingServerにはgnuserv.READMEというファイルだけがあり、このファイルには別途匿名ftpサーバに置いてある、といったことが書いてあります。さっそくアクセス。すると530。匿名アクセスは受け付けていない模様。んがー。

gnuservでぐぐると今度はwww.hpl.hp.com/personal/ange/gnuserv/がヒット。どうやら職場を変えたのでしょう。無事にgnuserv-2.1alpha.tar.gzを取得。

展開してmake。-lXauが見付からないと言われてしまいます。他にもconfig.hをインクルードできないとかいろいろ。Makefileを見たら

INCLUDES = -Iyour_emacs_src_dir/src -I.
X11_INCLUDE=  -I/usr/X11/include
X11_LIBRARY=  -L/usr/X11/lib

という感じ。INCLUDESの指定を書き換えます。そして、私はX11を/usr/X11R6にいれてあるのでこちらも修正。

すると、config.hからいろいろ変なものを読むのか、コンパイルエラーに。emacs 21.4のconfig.hでは使えないのかも知れません。というわけでconfig.h.protoをconfig.hにコピーしてmake。

今度は通りました。

しかし、サーバプロセスを立ち上げようとしても、ホスト名fivaが見付からないといってすぐに終了してしまいます。

というわけで、gnuserv.hの

#define INTERNET_DOMAIN_SOCKETS
/* #define UNIX_DOMAIN_SOCKETS  */

の部分を書き換えてUNIXソケットを使うように変更。

無事に動くようになりました。しかし、2.1alphaって古くない?と言われてしまったのですが新しいのはどれか、というのがさっぱり判りません。これがフリーソフトウェアの本当の姿…。

ところで、ps -efするとgnuclientだらけになっているのですが、これってこういうものなのでしょうか。

ローカルディレクトリブラウザ(仮)

空ディレクトリを参照している状態で登録コマンドを実行すると描画のゴミが残る、という問題を発見。

バッファに対して非アクティブ通知を発行すると、カーソル位置を書き直すわけですがそれが残ってしまった模様。通知してから再描画というのも楽なのですが、CPUクロックとXへのリクエストが無駄なのでバッファの表示状態を非表示に設定して、非アクティブ通知のハンドラで表示状態をチェックするように修正。

ローカルディレクトリブラウザ(仮)のキー入力判定

コマンド判定処理に、KeySymだけではなくて変換後の文字も渡してしまって、文字についてはシフト状態を参照せずにテーブルを検索するというのはどうだろう、と言うのを思い付きました。

そうなると、これはKeySymで判定するのか文字として判定するのかという区別が必要なので~/.dfx/keysの書式を少し拡張しなければ。

あと、+Enterを追加定義するだけでemacsを起動したいので、内蔵コマンドテーブルを置き換えるというものではなくて、内蔵キーテーブルを上書きするか追加するという形でもファイルを読むようにしたい。

gnuserv

もしかしてわざわざダウンロードしてmakeしなくてもemacsclientが入ってる?

GPL3

GPL3では、修正ソフトウェアの配布についてソースコードの公開を義務づけるだけではなく、修正ソフトウェアの実行についてもソースコードの公開を義務づける考えとのこと。

ちょっとこれには反対者が多いのではないか、というか元々GPL2でも反対者はいるのであまり変わらないという気もしますが、さすがはRMS。言うことが過激です。

GPLで提供されるライブラリを使ってゲームを作ったとしましょう。それをゲームセンタに設置した場合、ライブラリのライセンスがGPL2であればゲームのソースコードは公開しなくても構いません(ゲームセンタがゲームを買い取っている場合は、ゲームセンタにはソースコードを請求する権利があります)。しかし、ライブラリがGPL3であったなら、ゲームのソースコードもプレイヤに公開しなくてはなりません。

社内システムにGPLのプログラムを用いたとします。その際に、少々改変を施して自社特許や企業秘密を組み込んだとしましょう。利用したGPLのプログラムのライセンスがGPL2であれば特に問題はありません。しかし、GPL3だったばあいには大変です。組み込んだ自社特許、企業秘密を含むソースを公開しなくてはなりません。そのソースは社内システムを利用するだろうアルバイト、派遣社員などに公開されることとなり、その再配布を妨げることができません。企業秘密といえども、GPLに基づいて公開されてしまってはもはや秘密とは言えず公開された情報となってしまいます。

そのようなリスクのあるライセンス契約を締結しようと考えるでしょうか。GPL3で公開されているソフトウェアは企業秘密や特許にかかわる部分では使用しない、という対応が企業としての対応となり兼ねません。せっかくGPL3を策定し、ライセンス条件としてGPL3を採用したプログラムが出てきても、ライセンスに同意できなければプログラムは利用されません。プログラムはあるけど使えない、という状態になってしまうのではないでしょうか。

改変したものを配布したときだけではなくて、利用させるだけでもソースコードを配布させようという意図は解りますがそれに従う人はどのくらいいるのでしょうか。

モノの名前

あまりに複雑なものは言葉でしか表現できない(もちろん乏しいながら)、と思ったりもする。

言葉でしか表現できない、というよりも名前で伝達しています。複雑なものの複雑すぎる部分、時には大事な部分も、そぎ落して残ったものに対して名前を付けるわけです。「赤」という波長の光には色々な波長があるわけですが、乱暴なことにそういった部分は全部無視して「赤」と呼んでしまう。これが名前の持つ力です。

名前に含まれなかった、そぎ落されてしまった「部分」について語ろうとしても、その部分には名前が付けられていませんから言葉では説明できません。

「言葉」と言うのは、それを使う関係者で共通の認識が持てる必要があります。

そぎ落されてしまったた部分と言うのは、共通の言葉では表現できる範囲の外にあります。ですから言葉では表現できないのです。

「相手が見たことがない知らないものを、(相手に)言葉で説明することは不可能だ」

というのも当然の話で、相手が見たことが無いのですから共通の認識を持つことはできません。共通の認識が無ければ言葉は通じません。

これではあまりにも不便です。ですから、いろいろなものから特に重要と思える性質に付いては名前を付け、それを共通の認識としました。名前が付けられてる、共通の認識が持てる範囲の中であれば、言語による伝達はスムーズです。

あまりに複雑なもの、というよりは言語のために単純化されてしまった概念、名詞について別の言葉で言い表そうと言うことが困難なのだと思います。

2005年09月30日

逆転裁判

JustSystemと松下電器産業とで争われていたヘルプアイコン事件ですが、知的財産高等裁判所で判決が下され、JustSytem側の勝訴となりました。判決も、発明には新規性が無いとするもので私には妥当なものだと思えるものです。

またこの判決は「大合議制」による初の判決。

メモリスティックマイクロ

メモリスティックDUOと比較して1/4の大きさ。

ローカルディレトクリブラウザ(仮)

枠線を追加枠線追加。

スクロール時に枠線までスクロールするとか、再描画時に枠線がちらついてしまうという副作用が発生。描画領域を決定するためにGetClientRect()という関数を追加。

当初は再描画用の関数ポインタをそれぞれバッファに持つことにして、buffer->invalidate()みたいなことをやろうかと思ったのですが、それだとvTableを書き換える必要が出てきます。const vtable *で保持することができない上、同じクラス間でvTable *を共有することができなくなります。それではvTableをポインタではなくてコピーで保持しよう、と考えて書き直し始めたのですが、途中で継承を実装できなくなることに気づいて計画破棄。サイズが異なるテーブルを保持、参照しているので、コピーを持つようではサイズが不定なので都合が悪いのです。

では独自のメンバ関数のように(*invalid)()を持つようにしようか、とも考えましたが初期化の手間がかかるのが面倒です。関数ポインタを持つくらいならそもそもクライアント領域のサイズを保持するのもサイズ的には変わりません。

それでは占有面積と描画面積の2通りのサイズを持つことにしようか、と考えたのですが、そうなるとバッファ1つにつき4バイトから8バイトずつ増加して行くわけです。計算で算出できるならそれで済ませる方がサイズ的には嬉しいかも知れません。計算量的には増加しますが大した増加ではないでしょう。というわけで、描画面積を計算するGetClientRect()を書いてそれで済ませることにしました。

しかし、カーソル位置の描画などでも頻繁に呼ぶことになったので、メモリ使って2通りの面積を保持した方が良いような気もします。


トップを狙う

Copyrigiht © 2005 びい