2005年12月の日記。

2005年12月01日

Firefox 1.5

よほど早くなったらしいのでインストール。

libstdc++.so.5がなくて起動できず。終了。

というのもアレなのでyum install libstdc++。

libstdc++.so.6がインストールされました。そーか、そーくるか。

yum install libstdc++.so.5したところcompat-libstdc++-33-3.2.3-47.fc4というパッケージがインストールされて無事に起動。

ところでこのfirefoxディレクトリはどこに置いておくのがlinux流なんでしょうか。とりあえずoperaに習って/usr/local/lib/firefoxにおいてますけども。

ちなみに、Operaと同様にuimは起動しません。QtアプリがだめでもGtkなら使えるかと期待していましたが残念。rxvtやローカルディレクトリブラウザ(仮)では起動するのでなにがなにやら。

Gun 2006年1月号

床井さんによるSPITFIREのリポート、Toshiさんによるキャリコのリポート。

SPITFIREはCz75のクローン。それを床井さんが解説するのだからぜひ読みたい。

キャリコは100連発というどこまで本気なのか解らないマンガのような拳銃。これが拳銃と呼べるのかどうか。なにしろ100連発。自衛隊の自動けん銃のように、どう見てもサブマシンガンです。本当にありがとうございました。というようなものでは無くセミオートのれっきとした拳銃。普通、拳銃といえば銭形のとっつぁんが持っている1911だと7発、ダイハードでおなじみベレッタ92Fで15発、比較的多いと思うGLOCK 17で17発。軍用M16ですら20発や30発しか装弾できないのですから、まさに桁が違います。

RPM

ものは試し、と思ってローカルディレクトリブラウザのRPM形式パッケージを作ってみました。

なかなかうまくいきませんでしたが、試行錯誤の結果できました。

別のマシンにもっていってrpm -ivhしてみたところ、ちゃんとインストール(といってもただコピーするだけですが)できました。

このとき、私は「面白い」と思いました。

ですが、「面白い」と思うことは問題ではないか、とも考えました。例えばDOSで圧縮ファイルを作ろうと思って LHA A df.lzh dfx.exeなんて実行して圧縮ファイルを作って、lha x df.lzh で展開したとします。これを「面白い」と感じるでしょうか。こんなものは「できて当り前」です。マニュアルを読めばすぐできます。

tarでアーカイブすることは簡単で「できて当り前」になっています。それがRPMになると「できると面白い」になってしまうのはなぜでしょう。試行錯誤を伴う困難があり、それを乗り越えた達成感によって「面白い」と感じたのではないかと考えています。こうした作業を「試行錯誤を伴う知的な面白い作業」ではなくて「できて当り前の作業」にしていかないと使えるものにならないのではないでしょうか。

RPMの使い方に付いてGoogleで検索すると、設定は~/.rpmrcなのか~/.rpmmacrosなのかはっきりしなかったり、作るためのコマンドがrpm -bbでよいのかrpmbuild -bbでよいのかとか、.specファイルの書き方もなんだかよくわからないままです。

もっとも、ソースや実行バイナリは無料で配布して、その使い方や運用などのサポートに課金しようとする商売ですからいたしかたないのかもしれません。

今日のローカルディレクトリブラウザ

Tabが1行に複数あると描画する文字列がTab文字分だけ減っているのを発見。

2005年12月02日

起床

起きたら寝癖が大変なことに。

とりあえず寝癖2.0と名付けます。

2005年12月03日

software suspend2

ハイバネートさせた後にPCカードが使えないのが困り者なのでいろいろと手を入れてみました。

というのも、/etc/hibernate/hibernate.confにEjectCards yesと書いても取り外してくれないのでどうにかするしかないと。

FIVAではyenta_socketを使っているので、yenta_socketのsuspendでカードを取り外してみました。するとセマフォの二重獲得でデッドロック。yenta_socketではなくてpcmciaでやることに。

すると、レジュームした後ではカードを認識してません。いい感じ。これでレジューム前にカードを入れ換えてもpanicしなくなりました。

次にresumeでカードの再認識を行います。レジューム後にpccardctl identするとカードを認識しているようです。しかし、使えません。eth0はリンクしてないし、P-inもダイアルアップできません。というか、元に戻りました。

EcjectCards yesとしたときに「no pcmcia driver in /proc/devices」と出ているので改めてhibernateスクリプトを読んでみたら、この出力はスクリプトが出している訳ではなさそうです。というか、どうみても/usr/local/share/hibernate/scriptlets.d/pcmciaを呼び出しているようにしか見えません。つまりちゃんと処理しているハズ。

というわけでこのpcmciaスクリプトを読んでみると、この中ではcardctlを呼び出していました。んがー。これをpccardctlを呼び出すように書き換えたらpcmciaドライバに手を入れなくてもカードを入れ換えてもpanicしなくなりました。無駄な努力。

結局、カードを入れ換えなくてもpanicしないだけで、resume後に使えないというのは解決していないのですが、これは単にudevが動作する前にカードを認識しているからではないか、という気がしてきました。resumeの処理を遅れさせるにはどうしたらよいのでしょう。もしくはhotplugイベントをキューイングさせるとか。カーネルモードでやるかユーザモードでやるか、というくらいで同じことですか。

2005年12月04日

DF on Wine

動きました。ちょーあっさり。

やっぱりMediaGX 200MHzのFIVAではかなり遅いです。気になっていたテキストビューアは1文字ずつ描画している割にはそれほど遅くありません。スクロールに描画速度が追い付いていないので描画をすっぽかすのが利いている雰囲気。

ヘルプファイルは文字化けしてさっぱり読めませんが、Winhelp.exe相当の物も含まれているのがすごい。もっともこれが無いとWinHelp()APIが使えませんからAPIの互換性をとるには必要なのですが、ここまで作ってあるとは。

2画面にした時、Tabキーでのフォーカスが切り替わらないのですがこれはウィンドウマネージャのせいなのか、Wineのせいなのか。

WineがSetActiveWindow()とかSetForegroundWindow()をXの何に置き換えているのか解らないと。それが解ったら、そのXのリクエストをFluxboxがどのように処理しているのかを調べないと。

それにしても仕組が解らないのですが、LANG=en_USでもテキストビューアでは日本語が表示されてしまいました。ASCIIかiso-8859-1が表示されると思っていたのですが。不思議。

2005年12月05日

/.Jより、Linux: 北海道室蘭市教委、学校システムの一部をLinuxからWindowsへ変更

今朝見たところ、予想通りの展開になっていたのでニヤニヤ。

Binary2.0

このネタが解らないという人がいるのに驚き。

Web2.0のポインツが静的HTMLからリソースの動的生成への変化、さらに生成されたリソースの動的変化といった「動的に変化すること」にあり、それを実現するための技術としていろいろなものが考案されている訳です。この「いろいろなもの」がいっぱいありすぎるのでグルーピングするために「Web2.0」という名前を付けてとらえやすくしただけの話。

CGIなどによるリソースの動的生成では、生成されたリソースが変化する訳では無いのでまだダイナミックさが足りません。

これと同じようなことをプログラムでも実現してみようという話です。LispやMLのようなメタプログラミング言語では割と普通にできますがCのようなメタプログラミングを考慮していない言語ではプログラムはコンパイル時に決定してしまい、実行時には変化しないのでなかなか面白いチャレンジになります。

でもやることは裏でコンパイラ動かしてexec()するだけだったりして。

LLVMなどは、静的に生成されたプログラムを実行時に変更することを目的としていますし、そういった「下方向」でのアプローチは仮想化する上で重要になります。

どうせプレゼン用にハードウェアを作成するなら、VGA信号を直接出力してみるというのはどうでしょうか。でも、これだと全然「動的プログラミング」ではありせんね。

Lispでは、なんでもリストとして表現されるため、コードもデータリストとして扱います。なので、リストを操作することで実行するコードも操作することができます。

これがCやJavaなどの一般的な静的プログラミング言語になると、コードとデータは明確に分離されます。アルゴリズムとデータ構造に分離されると考えても良いかもしれません。分離することで考えやすくなりました。

これがコンパイラ言語以前の原始言語、機械語やアセンブリ言語になるとすべてはバイト列になります。データもコードも区別されません。プログラムはデータを処理するようにコードも処理することが可能になります。

アセンブラによるデータとアルゴリズムが混沌と混ざり合ったプログラミングからデータとコード、アルゴリズムを分離することで高級言語へ移行することに成功しました。ここへきて通常の「データ構造+アルゴリズム」という形式のプログラミングからメタプログラミング、つまり超プログラミング、すなわちプログラムを生成するプログラムへ移行するにあたりまたデータとアルゴリズムを混同させるというある種の先祖返りが要求されています。アルゴリズムをデータとして扱うアルゴリズムの開発と呼んでも良いでしょう。メタプログラミングというこの試みは以前に失敗しています。Lispが主流の言語になれなかったことからも明らかです。

しかし、今再びチャレンジするときがきました。「メタプログラミング」という言葉ではもはや注目を集めることはできません。以前のアプローチが良くなかったのか無駄に難しいように思われています。プログラミングは難しい。ならば超プログラミングは超難しい。そんな誤解があるに違いません。ですから「メタプログラミング」と呼んでは誰もお金を出してくれません。

折しも「Web2.0」という都合のよい、しかも注目を浴びている単語があります。これを利用しない手はありません。

SCSIのホスト番号

となりの部署で、SCSIカードの脱着を繰り返すとSCSIのホスト番号がどんどん増えていくのが困る、という話が。

2.4では増えなかったのですが、あちらはあちらでPCI Hotplugが微妙だったりするし、時代は今2.6なので2.6に。

それならば、と試しにホスト番号が増えないようにするおまじないを書いてみたところ思いのほか好評。某ディストリにねじこもうという話に。

software suspend2とyum update

いつものようにhibernateして起動したら、yumがインストールしたカーネルで起動。シャットダウンしてsoftware suspend2入りのカーネルで起動したら普通に起動せず、レジュームしてきました。いきなりX。

イヤな予感。

再度シャットダウンさせてブートさせたらファイルシステムが飛んでました。

/tmp/.X0-lockの所有者が ? になってたり、/bootの中がほとんど空になっていたり、/etc/fstabにアクセスできなかったり。

2005年12月06日

無賃乗車で開き直る人

乗車時間が16分少々だから、と指定席料金を払わずに指定席に居すわろうとした老人の弁解。

16分だろうとなんだろうと、確実に座るためのプレミア料金なのですからその席を使用するのでしたらその料金を支払わないと。

「いまさら自由席に行くのは面倒くさい。」というのでしたら、面倒くさがらずに料金を支払えば良いのに。しかも「でも、わずか十数分のあいだだから、それくらい見逃してくれてもいいじゃないか」と言った後で、「説教して立上り、デッキに出たら、途端に福岡に到着。」。つまり、十数分もの長い間車掌さんと押し問答をしていたわけです。こちらのほうがよっぽど面倒です。

なんだか骨折しても「でも、わずか骨の一本だからそれくらい見逃してくれても」とか原稿用紙一枚なくても「わずか一枚だから、それくらい見逃してくれても」とか言われそうです。まあ、指定席料金分節約できて何よりでした。

とりあえず、同じ北海道出身として恥ずかしい限り。北海道出身者がみんなこのようなケチだと思われては心外です。まあ、北海道には新幹線が無いので、新幹線のルールなどをご存じなかったのかもしれません。

ちなみに、小倉から福岡まで新幹線だと16分かかるそうです。つまりこの人は最後の十数分を指定席で過ごしたわけではなく、最初から最後まで指定席で過ごしていたわけです。3時間の工程の内16分というのでしたら分単位で分割してもよいかと思えなくもありませんが、全工程を指定席で過ごしていたのですから指定席料金を支払わないというのは筋が通りません。

Linux 再インストール

どうにもならないので、FIVAのHDDを取り外してデスクトップに接続。Fedora Core 4のインストール。

ブートしたらカーネルが読めませんでした。再インストール続行。

gccインストール

gcc4で-Osを使うといろいろとトラブルが発生するので、gcc-3.4.4をコンパイル。

gcc -vすると3.4.4と返ってくるのですが、なぜかmakeするときに使われるgccはまだ4.0.2のようで、Fluxboxが終了しなかったりemacsのダンプでSEVGしたり。

Linuxのインストールって難しい。

2005年12月07日

OS起動前にウィルススキャナの更新

どうやってやっているのかが気になります。

ウィルスバスターを暗号化ディスクボリュームにインストールしていてもちゃんと更新できるのでしょうか。つまり、NTFS暗号化を乗り越えて更新できるのかどうか。

NTFSに限らず、サードパーティのボリューム暗号化ソフトウェアもありますが、それらが使用されていても正しく書き込めるのでしょうか。

DFの反応が鈍い

以前、スレに報告があった話と似ていますが、Lキーを押したときなどの反応がとても鈍くなりました。マウスポインタもしっかりと砂時計に。

一カ月くらいシャットダウンさせていなかったので再起動してみたところ解決。

2005年12月08日

Xの設定

FIVAには右側にAltやCtrlキーが無いので/etc/X11/xkb/keycodes/jpを編集。

キー本来のキーコード入れ換え後のキーコード
CAPS6637
LCTL3766
MENU117109
RCTL109117
HKTG208113
RALT113208

ついでに、FluxboxでWindowsキーを使用できるようにLWIN(115)をSuper_Lに割り当てておいて、Mod4とします。

FluxboxのマニュアルではWindowsキーはMod4として使用できる、というように書いていますが、Windowsキーを特に意識した作りにはなっていません。単にUSキーマップでWindowsキーをSuperとして定義していて、FluxboxはMod4を見ているだけです。

2005年12月09日

オンラインゲームの苦情「RMTでインフレ」

見出しには「RMTでインフレ」とありますが、RMT、つまりゲーム内通貨の現金取り引きでインフレが発生するわけではありません。現金で取り引きされようとも、ゲーム内通貨が売る人から買う人に移動するだけで、その総量は変化しないためです。

本文中には

「BOT行為をする利用者が多額のゲーム内通貨を得るため、ゲーム内の世界に流通する通貨の量が増え、インフレを引き起こしている」

とあり、RMTが原因であるとは書かれていません。

RMTが良いか悪いか、というのは触れませんが長時間のプレイによってゲーム内通貨を大量に得られるというのは当然です。もし、これが防ぐことができればBOTを作ってもメリットがなくなります。しかし、長時間プレイするメリットが失われますから、人間も長時間プレイする動機も失われます。このあたりは、ゲーム内での消耗品が必要ないというデザインの問題です。ROもリネージュも装備が整ったらそれで一生遊べます。武器が擦り減ったり、服が破れるということはありません。つまりBOTがいてもいなくても、長期間にわたりサービスを継続していればゲーム内の通貨は増え続ける一方ですから必ずインフレします。BOTはそれを速めているだけにすぎません。BOTがいなくても、一日20時間プレイするような人は必ずいますからBOTの有無は関係ありません。

インフレするデザインで作られたシステムのゲームは、インフレすることを前提ににプレイしなければなりません。物価の上昇率についていけるだけのプレイ時間が必要です。そうすることによりサービスの提供会社はユーザをつなぎ止めることができます。

ゲーム内経済がインフレするのはそのようにデザインされているから当然で、避けることはできません。BOTにより想定の範囲外のインフレが発生する、という主張も可能ですが想定の範囲の遥か上をいくようなプレイを続けるプレイヤはどこにでもいますからどちらにしろ想定外です。休日に2時間、3時間プレイする人と、毎日16時間プレイする人がいる環境でバランスをとるというのはプレイ時間がゲーム内の経済に影響をあたえないようにするしかありません。

ゴルフゲームやテーブルゲームのような1セッションで終了するようなスタイルのゲームであれば可能でしょう。

2005年12月10日

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

リンクを作成する処理を追加しようと思ってcopy.cをコピーしました。が、このコピペ・・・ペーストはしてませんが、コードの複製地獄をそろそろ終えるべきではないかと思い、copy.c、delete.c、chmod.c、chown.cを見比べました。diffとったら8割方同じというのが笑えます。

選択されているファイルリストを処理する、ということやディレクトリの中を辿る、という全体の処理は同一で、コピーするか削除するかといった部分が違うだけです。というわけでこの部分を抜き出してどうにかできないものかと。

それぞれの関数で違う部分を抜き出そうと思うと1280x1024のディスプレイでは狭くて話にならないので紙に印刷。

とりあえず違いは洗い出したものの、手を付けるのがちょっと恐い。

2005年12月11日

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

バックアップもあることだし、とりあえずどーんと書き換え。

選択されたファイルを[コピー/移動/削除/アクセス権変更/所有者変更]という処理で、この違う部分だけを抜き出して全体は同じ処理にしようというのが目論見。

13,082行から12,500行へ。582行ほど削減されました。全体としてはにして5%ほど。

コードは小さくなりましたが余計なルールが追加されたりして複雑になっただけのような気がします。

C++ならこの違う部分を定義して全体の処理をテンプレートとすることで、コンパイラにコピペさせることができるのですが、サポートしていない言語でやろうとすると人間がコピペするしかありません。どっちにしろコピペになるなら人間がやってもよいのではないかと思えてきました。

実行時書き換えだとスレッドセーフにできませんし。

ビューアのTab表示バグの修正ややPageUp/Downを追加していたので62行増えていました。この増加分を差し引くとコード削減量は644行。

2005年12月12日

7割がAGPに留まっていて、PCI Expressへ移行したユーザは3割

グラフィックカードの買い替え市場は7割がAGPなのだそうです。PCI Expressに移行してしまったのは3割。この3割を多いと見るか少ないと見るか。

私もまだAGPシステムのままなので、手頃なAGP接続の6800カードがでたら買うかもしれません。PCI Expressにするにはちょっと時期が良くない雰囲気。

PCI Expressにして何を使いたいか、というと今のところビデオカードしかないのでAGPで使えるビデオカードがあるならそれで充分という考えもあります。

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

renameInvoke()が400バイトオーバ。共通処理にまとめてしまいたいところ。

これはコピー先がディレクトリ名ではなくてファイル名になるので他の処理と同じようにまとめることができていません。

Cygwin/Xで日本語キーボードを使う方法

XWin.exe -helpすると書いています。

XWin.exeのパラメータで-kbmodelや-xkblayoutを指定することでxorg.confに書くようなキーボードモデル、レイアウトの指定ができます。

お手軽なのは、~/.xserverrcに

XWin -xkbmodel jp106 -xkblayout jp

と書いておくことでしょう。

私は

XWin -multiwindow -clipboard -xkbmodel jp106 -xkblayout jp

として、startxで起動しています。

2005年12月13日

分散キャッシュによるコンテンツ配信技術

コンテンツのキャッシュは基本的に、そのコンテンツを再生したノード(と途中で経由したノード)で行なわれる。つまり、リクエストの多いコンテンツほど、キャッシュされている確率が増えることになり、配信数が増えれば増えるほど、負荷が効率よく分散していく。そのため、動画配信の参加ノードが数千、音楽配信の場合は数万を超えるような場合では、クライアント/サーバーシステムを下回るコストで運用できるようになるという。

Winny?

PDA

CPUにSamsungの「S3C2440」を使っていてクロック周波数は300MHz。最近のXScaleなどに比べると非力ではあるが、あまり無理なことをしなければ十分な速度である。

私がいまこの文章を打ち込んでいるCASSIOPEIA FIVA 101はCyrixのMediaGXを使っていてクロック周波数は200MHz。最近のXScaleなどに比べると非力といわれてしまうS3C2440と比べても非力かもしれません。

103買おうかなあ。あちらなら300MHzですし。

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

あまりコードが減らなかったので残念な思いをしていたのですが、ファイルとディレクトリのコピーを行っているcopy.cを見ると721行から 209行へと減っているのでした。

リンク/シンボリックリンクを作成する処理を追加するためにcopy.cをコピーするつもりだったことを考えると、コードの増加量が以前のままだと700行増えるところが200行で済むという予想に。

複雑さが増しただけかも、と思っていましたがこれならいい修正になるかもだ。

というわけで、8割方変更前と同じ動作になりました。

レッドショルダー

肩だけシャア専用であり通常の三倍。

2005年12月14日

2.0ブーム

Windows 2.0とか思い付きましたが、それがどうした。

とりあえずToHeart 2.0がブームの模様。

2005年12月15日

NVIDIAがULiを買収

チップセットの商売に弾みを付ける計画のようです。

NVIDIAは既にnForceという強力なノースブリッジを持っています。ULiはノースブリッジは不得手のようですがサウスブリッジはHyperTrasport接続のものからPCI Express接続のものまで幅広く扱っています。

NVIDIAのノースブリッジを補完するサウスブリッジを作ることで商売をよりよい方向に持っていけるのではないでしょうか。

これがVIAだとCPUもノースブリッジも持ってて邪魔になるでしょうし。

サーバ本体よりも電気代の方が高くなる

よろしい、ならばサーバを値上げしましょう。

単に、サーバが安くなっただけだと思うのですけどね。

たとえば自家用車が5万円で買えるようになったとしましょう。1年間のガソリン代が5万円を越えました。問題だと思いますか? ガソリンが高すぎる!! とは誰も言わないのではないでしょうか。

なんにしろ、ハードウェアよりもソフトウェアの方が高く付くというか運用面・保守での費用は初期投資よりも高くなりがちです。そして、それは別におかしな話ではありません。

VGN-T90PS BIOSバージョンアップ

R0021G7からR0052G7へ。

2005年12月16日

NVIDIAのnは筆記体の大文字

存じませんでした。

BogoMIPS

私のFIVA 101だと400BogoMIPS程度という数値なのですが、これはSL-C700と大差の無い数値。びみょー。

リスト遊び

買ってきました。

安いし薄いし小さいのでお薦め。かも。まだ読んでませんが。

クリスマス直前に出張にいくので、飛行機の中で読むのにちょうどいいサイズ。そして量。

2005年12月17日

yumでインストールされるパッケージのアーキテクチャ指定

Athlon XP機にHDDを接続してインストールしたせいか、yum updateするとi686アーキのパッケージがインストールされてしまいます。

しかしFIVAのCPUはi686命令は実行できないのでSIGILLがでて死にます。

i686と記載されているファイルが無いかと思って/etcの下を見てみましたがよくわかりませんでした。

とりあえず

がそれらしい雰囲気だったのでathlon-redhat-linuxをi386-redhat-linuxというように書き換えてみました。

待て次号。

2005年12月18日

Kitaraでパイプオルガンコンサート

せっかくだから。一名2,000円。演奏者の方が私よりも若かったのがちょっと驚き。しかもオルガンを始めたのが14歳からとか。

技巧的には素晴らしい演奏でした。前半、少し緊張されていたような感じでしたので、もうすこし場馴れするとより素晴らしい演奏になりそう。どうも、1フレーズ1フレーズごとを楽しませる余韻というか、余裕に欠けている雰囲気でした。

しかしパイプ4,976本のオルガンというのは想像を絶するものでした。

7代目オルガニストのマテュー・マニュゼスキさんの演奏CDを買ってきましたがこの人の演奏もすごすぎる。去年なら生で聴けたかと思うと極めて残念。こんなCDが1枚2,000円だなんてすごすぎる。

2005年12月19日

The Yakumo Project

「日本語ドキュメントを英語圏へ」ということで、まずは手近なローカルディレクトリブラウザ(仮)のマニュアルなんかを英語っぽいもので無理やり書いてみました。

本当はDFからやるべきかもしれませんが、あのヘルプファイルはすでに量を考えるだけで訳す気になれないという量。とりあえずコントロールできる大きさの内に手を着けてしまおうという。大きく育った後からでは手を着けられません。

だが日本語でのみ流通している情報を、日本語圏以外の人に伝えるということも、そろそろ本気で考えなければいけないのかも知れない。

しまった、まだローカルディレクトリブラウザは日本語ですら流通していません。

大雪

今週末東京に行くのにこの雪とは。

飛行機が無事に飛ぶのかどうか。

2005年12月20日

インスパイヤとリスペクト

インスパイヤされるのは構わないけれども、リスペクトが足りないのではないか、と思う今日このごろ。

ソースコードを不自由にすることでえる利益

現状は:

危険にさらされているのは稼動中のシステムだけではない。企業のソースコードも同様である。ソースコードはデータの宝庫であり、データベース情報、肝心要のアルゴリズム、システム内部の仕組みなど、さまざまな情報を含んでいる。管理の行き届いている環境では、このソースコードにアクセスできるのを開発者だけとし、ユーザにはバイナリファイルだけを渡して、実行させるのが普通である。

それによって生じる問題点:
よって:

企業は、アプリケーションの詳細を見られる人間を、知る必要のある少数のグループに限らなければならない。エンドユーザにすべてを公開してしまうことは、攻撃に利用できる情報を多数の人間に明かすことを意味する。

結論

このような記事がlinux.comから出てきたということが驚きです。どういう意図があるのでしょうか。

2005年12月21日

震度

以前は、震度というのは体感や被害の状況から算定されていました。家屋が倒壊するほどの揺れならば震度6、みたいな。

ですから、「震度5でも倒壊のおそれ」というのではなくて「あの建物が壊れたら震度6」というように定義を変えてしまうというのはどうだろう、と考えたのですが1991年に計測震度というのが導入されてしまい機械で判定することになってしまったため変更できない模様。

もっとも計測機械の目盛を書き換えればよい、という話も。

こうすると、あれな建物も「震度6まではおっけーな建物」にクラスチェンジしますし、従来の他の建物は「震度6でも壊れない頑健な建物」にクラスチェンジ。みんなハッピー。

名付けて震度インフレ計画。

日本語man

UTF-8で書いてみたもののうまく表示できたりできなかったり。lessで見る分にはちゃんと見えるのですがEUC-jpでもUTF-8でも見えてしまうので何が何やら。

LANG=ja_JP.eucJP環境でmanが化ける、というのは良く聞きますが、LANG=ja_JP.UTF-8で化けるというのはどうしたものか。

そもそもrxvtがUTF-8に対応していないというのもハマるポインツかも。しかしxtermでもrxvtと同じように化けるのでおそらくUTF-8が出力されているのだろうと推測。

それともUTF-8で書くmanには何か別の指定が必要なのでしょうか。

UTF-8

ローカルディレクトリブラウザのビューアでUTF-8が表示できていないことに気付きました。

驚いて確認すると0.2.4まではOK。0.2.5からおかしいようです。なにをやったか、というのを確認してみると文字コード自動推測機能を追加していました。単にUTF-8を別の文字コードだと推測していたためのようです。というか、今の文字コード推測機能はUTF-8を微塵も考慮していないのである意味当然かもしれません。Spaceを叩いて文字コードを切替えたらちゃんと表示されました。

RPM

ローカルディレクトリブラウザのRPMを作ってみました。作り方は以前調べたのでなんとかなりましたが、先日ファイルシステムを破損した時にメモも失ったのでところどころではまったり。

そして@homepageのディレクトリに転送してみたところ、Real Playerのプラグインが起動するという楽しい事態に。どうしてくれよう。

2005年12月22日

出発

「リスト遊び」をキーボードの上に忘れてきてしまいました。後の祭り。

離陸

ポケモンジェット乗ろうとした便がポケモンジェット。

名古屋空港が滑走路凍結のため運航見合わせとかどうとか。羽田は問題ないらしいのでとりあえずOK。

秋葉原

お仕事が終わったのでとりあえず来てみました。

きんも〜☆

というかLinux用に一台欲しいのですが、どうしたものか。ソフマップ中古とかどこにあるのかよくわからないというかなんだか時代が違う。

以前は「秋葉原よ! 私は帰ってきた!!」とか思ったわけですが、あの頃の秋葉原はもう、いない。

Linux cafe

Linux cafeに寄ったら@FreeDの電波がぜんぜん届いてなくて残念な想い。

2005年12月23日

とんかつ丸五

私の好みではありませんでした。頂いたのはロースカツ定食。

札幌なら800円くらいでこのクラスのとんかつが頂けるような気が。

メイドカフェ

Cafe Mai:lishとCos-Cha、@home cafeを覗いてみましたがいずれも行列ができる人気でしたので見送り。

あとでじゃんがらの前のいつもの行列を見て、じゃんがらで並んで全部入りを食べたことがある私はMai:lishの行列くらい並んでみても良かったのでは無いかと考えてみたり。

秋葉原

地図を見ながら歩いていたら、いつの間にか南北方向と東西方向の軸が入れ替わってしまい混乱。

下手に地図に頼るのも、こういかがなものか、と思いましたが記憶がまったく当てにならないのでどうもこうも。

忘年会

ひっそりとしめやかに。

まあ、私が使おうとしているのは生XlibではなくてX Toolkit経由ですけれども。「X周りはロストテクノロジ」と言われたのは5回目。

ぷらっとホームが閉店する件に付いて、上下をメイドカフェに挟まれたためにそちらに客を奪われたのではないかという説が。私はこれに反論し、「オセロ効果によりぷらっとホームもメイドカフェになる」説を提唱。

うっかりするとメイド服を着た本多会長を想像してしまうので注意。

2005年12月24日

Emacs on Cygwin

CygwinのsshでFIVAにログインして、FIVAのEmacsをCygwinに飛ばしてるとたまにBadWindowとか表示されて強制終了されます。

Cygwinのrootless multi windowモードに改善が見られるということなのでX11を6.8.99-4にしてみました。どうなることやら。

なんだかいろいろとアップデートされてfindが起動時にgetlineが見付からないといって起動しなくなりました。

BadWindow

解決しませんでした。終了。

2005年12月25日

ローカルディレクトリブラウザに日付表示

日付表示ローカルディレクトリブラウザでファイルの更新日付を表示してみたり。サイズに付いては以前から#define DRAW_SIZEとかやると描画する処理が有効になっていましたが、まだ更新日付の表示までは手が回っていなかったので。

しかし、こうして表示してみるとごちゃごちゃした雰囲気が。

落ちるEmacs

Cygwin/X経由で使ってるEmacsが強制終了する件は、w3m-emacs.elを立ち上げている時だけのような気がします。w3m-emacsを立ち上げていない時にはなんともないような。

2005年12月26日

smb.conf

smb.confってどこにありましたっけ。あと、CAP符号化というのはどういうものか資料はないものでしょうか。ASCIIの範囲にあるような文字も「:xx」形式に符号化してよいのかどうか、とか。符号化表現と復号後の表現の対応が1:1ならよいのですが1:nだったりすると面倒です。

2005年12月27日

ユーザはユーザを知る

mixithe Minnu's filer2の作者、だいすけさんからメッセージを頂きました。その中でファイラとはどういうものかというのを語ってしまったのですが、mixiという閉じた部分においておくのもどうかと考えたので、少々書き直してこちらに。

という話もありますが。

http://slashdot.jp/comments.pl?sid=277003&cid=802241に「デスクトップパソコンの重要要素」としてメーラなどと並んでファイラが挙げられています。

今の使い方だとパソコンを使うということはHDDにファイルを貯め込むということですから、貯め込んだファイルを簡単にコピーしたり消したりできる環境というのは、デスクトップ環境を使いやすくする上で重要なところだと考えています。

しかし、本来やりたいことはファイルを消したりすることではなくて、文章を作成したりプログラムを作成するといった事柄であり、ファイラで行うファイルの操作というのは間接作業に過ぎません。あくまでもオーバヘッドです。最初から正しい位置にファイルを作成していればファイルをコピーする必要もないし、直接ファイルサーバに保存できれば後からサーバにコピーする必要もありません。余計なファイルを作らなければ後で消すこともありません。つまり、本当は無駄な作業なのです。しかし、現在は航空機の中からファイルサーバにアクセスすることは不可能です。なので、一時的に手元のHDDにファイルを作り後からコピーする、というような手間が必要です。プログラムも、最初から傑作が書けるわけでは無く、試行錯誤を伴う作業です。結果として不要なファイルがいくつもできたりします。そのため、無駄な間接作業が発生することは避けられません。効率良くパソコンを使うためには、この無駄な間接作業を減らしたり、簡単に手早くできるようにしなければなりません。

また、自分が使い慣れたWindows風UIをUNIXなどの他の環境に移植するというのも痛し痒しで、UNIX系を使っている人にはUNIX風の使い勝手が必要だと思います。UNIX系OSでできることがWindowsの流儀と合わないからといって隠してしまってはUNIXを使っている人には使いにくい物になります。今、UNIXに慣れている人が使いやすい物とはどういうものか、ということを知るには自分も「UNIXに慣れている人」にならないといけません。使ってみないと解らないというか、自分がまずUNIX風の使い方を習得し、その上でどのようになれば使いやすいか、どんなところが面倒、煩雑であるか、誤りが発生しやすいかということを自分で確認するのが早いのではないかと考えます。もちろん、想像やアンケート、リサーチなどで補うことは可能です。しかし、それだけでは不足です。アンケートでは本質的な要求が得られるとは限らないからです。例えば、「ファイルのコピーが遅すぎるから速くしてほしい」という要望があったとします。しかし、瞬時にコピーというのは実際には極めて困難です。このようなユーザの本当の要望は、大抵の場合「待つのが嫌だ」というものです。待たせないための解決策であれば、コピー中でも、ユーザの操作はそのまま受け付けるという手があります。ユーザにアンケートをとっても、回答として挙げられる要望「コピーを速くしてほしい」と、本当の要望「待つのは嫌だ、作業を継続したい」というのは似て非なるものです。

このような、ユーザの本当の要求というのは自分自身がユーザとならないと実感できないものだと思っています。また、要求の裏にある「本当の要求」を知るにも自分自身がユーザである必要があるでしょう。ユーザはユーザを知るのです。その上で、まずは自分が「使いやすい」と思えるところまで持っていかないと、他の方に「これは使いやすい」と自信を持って言えません。

最適化を考慮する

分岐は悪
分岐予測が外れるとペナルティは大きいです。そもそも分岐しなければペナルティは発生しません。
分岐予測を予測する
Intel CPUの場合、静的分岐予測の後方分岐は成立、前方分岐は不成立と仮定されます。
callとretを対応させる
戻り先を自分でpushしてjmpするとリターンアドレススタックに戻り先が載らないため、ret命令の戻り先が予測できません。
リターンアドレススタックは16段
関数の呼び出しが16段以上ネストする場合にはインライン展開して16段に抑えることを検討します。
間接コールは悪
ジャンプ先を分岐予測テーブルに載せられません。載ってても当てにできません。
キャッシュを汚さない
特に自己修正コードはトレースキャッシュ(L1命令キャッシュ)を乱します。
アドレスは早めに計算する
キャッシュに無いときにプリフェッチできます。プリフェッチはCPUが勝手にやります。
パーシャルレジスタは悪
al/ahなどを多用するとシャドウレジスタを消費しやすいうえ、内部では合成するためのシフト演算が発生します。
4つ以上のuOPに分解される命令は悪
Pentium Mのデコーダは1サイクルで4uOPまで生成できます。またPentium 4のトレースキャッシュからは1サイクルに3つしかuOPを取り出せません。
書き込みの後、すぐに読まない
アラインメントが合っていて、同じアドレスからストアしたサイズ以下のロードであればOK。条件に合わない場合はストアが完了するまで、つまりパイプライン分ロードが遅延します。
内側のループの依存関係を排除する
例えばn回目のループでストアした内容をn+1回目のループでロードすると、n+1回目のループはストアが完了するまで待たされます。
inc/decは悪
inc/dec命令はフラグレジスタの一部だけを変更するので、直前までのフラグレジスタの値が確定するまで待たされます。add/subならフラグレジスタを全ビットを更新するので待たされません。
整数乗算と浮動小数点演算
Pentium 4ではmul/imulをFPUで実行します。そのため、同時に浮動小数点演算命令を実行しようとすると競合します。レイテンシも大きいので後続の命令と依存関係にあるならadd/lea命令で実現できないか考えます。
浮動小数点レジスタスタック(387)交換命令は避ける
発行する際に制限があります。
ボトルネックはメモリ
プリフェッチが機能するように予測されやすい、CPUに解りやすいコードを書くようにします。
コードは小さく
キャッシュに載るかどうかは大変重要。ループはトレースキャッシュ、L1命令キャッシュに収めたい。
キャッシュラインは64バイト
構造体のサイズを64バイト単位にしておくとよいです。Pentium 4/Pentium Mどちらも64バイト。
関数をインライン展開する
パラメータの受渡しに伴うオーバヘッドを除去できるかもしれません。前後の命令と組み合わせてコンパイラが最適化するチャンスが生まれれます。インライン展開された関数内部の分岐予測の精度があがります。また分岐予測に失敗してもインライン展開されているほうがペナルティが少なく済みます。ただし、インライン展開した結果トレースキャッシュからはみでる場合は展開しません。
分岐予測の中の人を気遣う
頻繁に分岐があると分岐予測が間に合わないかもしれません。
分岐を含むループは展開しない
分岐が多く存在する場合、分岐予測テーブルからはみでるおそれがあります。
繰り返し回数が16回以内になるまでループを展開する
Pentium 4なら、16回以内の繰り返しは予測できます。ただし、分岐予測テーブルやトレースキャッシュからはみでるようなら避けましょう。
0との比較はtestを使う
and命令だとレジスタへの書き込みが発生してしまいます。
0クリアにはxor/sub/pxor
オペランドに同じレジスタを使用する場合元の値に依存せずに0クリアされることをCPUは知っています。そのため先行している命令がオペランドとなっているレジスタにアクセスしていても結果が確定する前に実行できます。つまり、待たされません。

2005年12月28日

キャッチーな見出し

姉歯、みずほ証券の誤発注、JR福知山、原因はみな同じ?という見出しが気になったので思わず読んでしまいました。ナイスな見出しと言えます。

内容は、「構造」が問題とするコラムですが、「聖域無き構造改革」の「構造」と「耐震構造」の「構造」を同列に扱うという乱暴なものです。

例えば、耐震強度偽装事件は、建築確認作業の民間企業への開放という、構造的な欠陥がなければ起きていなかった。偽装行為を行えない構造になっていれば、姉歯氏を「守る」ことができ、結果として、マンション購入者という被害者も出さずに済んだ。したがって、この構造をつくってしまった政府の責任は重いということになる。

などと書いて政府が悪いということにしたいようですが、そんなことはありません。仮に構造確認を民間会社ではなくて役所が行ったとしても同様のことは起きたでしょう。「建築士の書いた設計書が間違っていると思わなかった」というような回答をするような人が確認するのですから。入れ物が民間会社でも役所でも中の人が同じ姿勢である限り、同じ結果になります。

国産の牛肉を買うか、中国産の牛肉を買うか、アメリカ産の牛肉を買うか選択できるように、誰が作るマンションを買うか選択する自由があります。安物買いの銭失いという言葉もありますが、「安い、これなら買える」と思って契約したマンションがただの安物、それも違法な粗悪品だった、というだけの話です。「安い、これなら買える」と思ったバッグが偽物ブランドだったようなものでしょう。一戸建ての建築現場を見にくる買い主さんはよく見ますが、集合住宅だとほとんど見受けられません。この意識の差はどこからくるのでしょうか。集合住宅で手抜き工事をするとリスクが大きいため施行者側も手を抜きにくいだろう、という勝手な仮定があるのではないでしょうか。もちろん、勝手な仮定は容易に覆されます。

ただし、最後の1段落は同感です。私も同じように考えています。システムの仕組を考えるよりも、ユーザがどのように使うのか、なんのために使うのか、という視点から設計し、検討することは大変重要です。

それ以外の段落については、単に「構造」の二文字を使ってみたかっただけなのではないかという気がしてなりません。しかし、キャッチーな見出しを付けることでページビューを稼げたわけですから、勝利といえるでしょう。

ソート

時間順ソートが変だと思ったらmtimeではなくてatimeでソートしてました。はっはっは。

Das Keyboard

安いです。静電容量式というとHappy Hack KeyboardかRealForceがメジャですがどちらも高価です。

こちらは101キーボードで静電容量式スイッチと、RealForce 101とほぼ同じ仕様でありながら、価格は80ドル。RealForce 101の16,000円と比較するとほぼ半額です。中途半端なキーボードを2つ3つ買うくらいならこれ一台を買ったほうがお徳でしょう。

私は日本語キーボードじゃないとイヤなのでRealForce 89Uを愛用中。もっともこの日記を書いているのはFIVA 101のキーボードだったりしますが。

休日だとsshでFIVAにログインして書くのでRealForceを使うのですが、Emacsが突然落ちることがあるのが謎。

2005年12月29日

せめてUNIXらしく

先日、「自分も『UNIXに慣れている人』にならないといけません。」と書いたのですが、私自身がFIVAで日記を書くようになったのがここ半年くらいという勢いでして、Firefoxをダウンロードしてもどこにインストールしたらよいのかわからない状態。

こういう「文化」というか、そういうのはどこで身に着けられるのでしょう。

X11R7

Cygwin/Xのパッケージだと不安定なので自分でmakeしてみようと思ったのですが、どれをダウンロードしたらいいのか、という時点でわからなくなって断念。ちまちま.bz2をひとつずつダウンロードとかはしたくありませんし。wgetで一括とかやると.bz2と.gz、.Zとダウンロードしてしまいそうですし。

ftpのLISTコマンドで一覧でも取ってこようかと思ったら、R7ではCygwinをサポートしていないという話なのでR6.9に変更。こちらならLinuxでmakeしたことがあるからなんとかなるかも。あれ、hosts.cfどこ?

X11R7 #2

mesaのリンクでDRI関係のシンボルが解決できないらしく終了。

OpenGLを使わないようにしておけばよいのかも。

2005年12月30日

anthy-dic-tool

動詞ってどうやって登録したらよいのでしょう。語幹と活用形の指定の方法とか。そもそもできるかどうかすらわかりません。

gccのアンインストール

make uninstallしてもダメだし、一体どうしたらっ!!

CPUクロック表示プログラム

CPUクロックを表示してWindows XPの電源管理スキーマを変更できるプログラムを作っていたのですが、FIVAスレで話題にしたこともあってとりあえずのページをでっちあげました。

アイコン作らないと・・・。

2005年12月31日

買い出し

歯ブラシを買い替えようということでツルハへ。

せっかくだから、電動歯ブラシにしてみました。選んだのはオムロンの音波式電動歯ブラシHT-B421。ブラウンの電動歯ブラシと悩んだのですが、オムロンだと追加の歯ブラシが¥210なのに対し、ブラウンだと¥1,200というのがほぼ決め手に。乾電池駆動のブラウンと充電式のオムロンというのも利便性に関わってきそうです。使いたいときに使えないというのはストレスになりますから。

あとは爪切りとか。

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

ファイル名比較関数で*の処理に不具合。「a*:b」と指定したときに、bでマッチしなかったとき、ワイルドカード検索中のフラグが立ちっぱなしだったためまたa*の検索に戻っていました。そのため無限ループに。


トップを狙う

Copyrigiht © 2006 びい