2005年08月の日記。

2005年08月01日

ATH-CK5

オーディオテクニカのカナル型イヤホン。

今まで使っていたMDR-EX71SLが行方不明になってしまったため、MDR-EX70SLを引っ張りだしてきたのですがどうにも音が気に入りません。昔は気に入っていたのに。

仕方が無いので最近はしばらくKOSSのThe Plugを使っていたのですがこれはサイズが大きい。アメリカン。低音が利きすぎる傾向がありますが、ベースやキックはポップス系の曲ではクロック信号みたいなものなので強くても気になりません。むしろ少し強いくらいで丁度良いです。でもデカイ。

SONYのカナル型はMDR-EX71SLの後はなんだかまともなものが出てないようで、MDR-NX1はMDR-EX51SLと同じユニットにネックストラップを追加したもののようですしMDR-CX1Wも同じくケースを追加したような感じで、音で勝負せずに付属品による付加価値を求めたラインナップに思えます。ネックストラップを売っているのかイヤホンを売っているのか。唯一まともかも、と思えるのはMDR-EX81SLですが、耳かけハンガーだとメガネと干渉するのでダメです。

というわけでオーディオテクニカのATH-CK5を買ってみました。MDR-EX81SLの半額の2,480円。AV Watchの記事によると5月に発売されたもののようです。

さっそく音を聴いてみると、15kHz〜18kHzあたりがしっかり出ているようでいわゆる「空気感」が強く感じられます。オープンエアダイナミックのイヤホンみたい。というか、これは密閉型なんでしょうか。サイトの商品説明には「ダイナミック型」としか書いてませんが。

また、オープン型みたいな音がするのでオープン型のように音が漏れるのではないかと思い確認。普通に使う分には音は漏れないようです。

高音は出ますが、低音が出ない。The Plugの後にこれ、というのが間違いなんでしょうがベースやキックが物足りません。曲のテンポを刻むクロック信号が途絶えているような感じです。高音が出ていると言っても、シャリシャリした雰囲気の耳障りな音です。使い続けることで馴染んでくるかもしれませんが不安です。

イヤピースはMDR-EX71SLでは小型のを付けていたので、とりあえずサイズが近い小型のチップを付けました。そのせいか、遮音性能はかなり弱いです。車の音など、周りの音は割と聞こえてきます。普通に会話できます。そのほうがよい、という人もいるかも知れませんがMDR-EX71SLやThe Plugのような耳栓を期待していたのでがっかり。MDR-EX71SLの小型イヤピースを付けてみましたが、あまり変化はありません。イヤピースは中型の方がよいかもしれません。

2005年08月02日

iPodに最適なMP3を作ろう 第二回

ここから、どうなると「原音を補正することで再現性が高まる」という結論になるのかが判りません。単にiTunesのエンコーダではなくてFraunhofer-IISのエンジンを用いただけのような気がします。

fluxboxのパッチ

先月に書いたパッチがバグってました。メニューで有効な項目にカーソルが当たっていない時に文字キー以外のものを押すとハングアップしてしまいました。

ミスタイプして初めて気づくと言う。元のプログラムの仕組みが判っていないと、書き換えたときにそれが危険な判定方法であることに気づかないのですがこういうのはプログラミング工学的に解決できないものでしょうか。

私的録音録画補償金制度

自分で購入したCDを自分で聴くために複製するのが著作権の侵害になるのですか?

借りてきたもの、放送からのエアチェックなら判るのですが。購入時に支払った金額に複製するための許諾金は含まれていないのでしょうか。もし含まれていないのでしたら、メディアの価格に補償金を含めるのではなくて、CDなど音源の代金に含めて欲しいものです。そうすれば管理団体を経由すること無く、レコード会社から直接著作権者に金銭が行き渡ります。

2005年08月03日

デュアルコア大研究

当然この時期にAMDがデュアルコア製品を出してきた裏には、Intelが積極的にデュアルコアをメインストリームに投入してきたことへの対抗策という面は当然ある。

x86でデュアルコアの計画を打ち出したのはAMDの方が先だったような記憶が。Intelは、x86ではコア数を増やすのではなくて更に周波数を上げて性能を引き上げる計画でした。TejasとかJayhawkとか。

このデュアルコア、当初はIntelはまるっきり考えていなかったようだ。

とあるように、Intelが後追いで発表して製品化しただけの話です。むしろ、AMDがデュアルコアでさらなる性能向上を発表したことへの対抗策としてIntelが慌ててSmithfieldを出してきた、という。

珍しく、記事中で「Intel系のNetburst Architectureはあまり効率が良いとはいえない気がする」とPentium 4の性能を低く評価しています。NetBurst自体はPresscottから変化していないので、今ごろになって言及するのはAMDの訴訟とか公正取引委員会の調査とかの影響や、今まで存在していたIntelからの圧力が消えたためではないかという気がします。

Appleから新型マウス

Arvelのフリーボールマウスをリメイクするとこうなった、みたいな。

Xの上ではどのように見せるのでしょうか。専用ウィジェットとかじゃないと反応しないのかもしれません。

イヤホン聞き比べ

efu's pageにて公開されているWaveGeneとWaveSpectraでATH-CK5の音を聞いてみました。

16kHz辺りから音が強くなり、13kで軽く山を迎え、次は10kHzからまた強くなります。これはかなり強く、8.5kくらいをピークにして一度弱くなりますが6k,5k辺りがかなりうるさくなります。次の山は4kから3k。それ以降は割とフラットです。100Hzからは徐々に弱くなり60Hzあたりからはかなり弱くなります。40Hzから先は、注意しないと鳴っていることに気づきません。

MX-500も試しました。16kくらいから聞こえ始めます。14kから徐々に強くなり、10kあたりが軽く弱くなるという感じでこの辺りは割とフラフラします。8kあたりから音が強くなり、そのまま.8kあたりまではフラット。2kで一度弱くなります。1kからはまた盛り返して強くなり50Hzまでそのまま維持。。ATH-CK5と違って40Hzくらいでもしっかり鳴ってます。ATH-CK5ほど音量の変化はありません。割とフラットと言えます。というか、ATH-CK5がフラフラしすぎ。

MDR-EX70SLも再度引っ張りだしてみました。驚くことにかなりフラット。伊達に長期間使っていたわけではないようです。17kHzから鳴り始め15kHzから40Hzまでほとんど変化なし。MX-500よりもフラットというのは驚きでした。

個人的にはどんどん鳴りつつ高音もしっかり聞こえる「ドンシャリ」気味なのが好みなのでMDR-EX70SLが気に入らなくなってきたのかも。ATH-CK5もMX-500も長期間使えばもっと良くなるかもしれませんが、形はMDR-EX70SLの勝ち。ハウジングからコードが出てくる部分に角度がついているので耳に当たらないのがよいです。ATH-CK5だと垂直に生えてくるので、この部分が耳に当たり痛いです。

日記をgrepしたら、MDR-EX70SLを買ったのは2001年12月とか。PCG-SRX3を買った勢いで買ったようです。

この手の耳栓式のイヤホンは、ジャストフィッツしないとマトモに音が聞こえないのですがなかなかジャストフィッツさせるのはムツカシイです。イヤーウィスパーを付けるときのように耳たぶを上に持ち上げながら押し込むとか、あるいは下とか後ろとかに引っ張りながら押し込むとか微妙な苦労が必要です。

2005年08月04日

runlevel

いちいちstartxするのが面倒になったので規定のrunlevelを5に設定。

すると/usr/local/binにPATHが通ってなくてrxvtとかfluxboxが起動できなくなってハマり。

/etc/profileでPATHに/usr/local/binを追加するようにしたけど、これが妥当なのかどうか。ふつーにリストアップしていないと言うことは何らかの事情がありそうな。

PATHの追加は/etc/X11/xdm/Xsessionでやるべきかも。

あと2つ、~/.initrcが実行されなくてハマりました。xdm経由だと~/.Xclientsが実行されるようです。なんだかチグハグな。X.orgなのにxdmのデフォルトリソースではXFree86とか表示されるし。

あと、haltできなくなりました。sudo haltならOK。Xではなくてコンソールからログインしてからだとhaltできます。runlevel 3で起動してXを立ち上げた場合にもOK。何が違うのでしょう。

Altキーを押すと現れるメニューバー

またエクスプローラのウィンドウにメニューバーが見えないが、これは自動的に隠されているだけで「ALT」キーを押すと表に現れる。

DFのメニューと同じ挙動のようです。

(APIとしてサポートしているのであれば)新しい作法としてメニューの使用頻度が低いソフトウェアでは、同様のアプローチが取られるようになるのかもしれない。

APIとしてサポートしてなくても頑張ればできます。ただ、このUIはあまりメジャではないようです。判りにくいと言えば判りにくいですし、マウスでメニューにアクセスできないと言うのが致命的。クライアント領域の上端にポインタを近づけると現れる、というような仕組みを作ってマウスを使う人に対する救済策も用意しないと。

2005年08月05日

ひきこもり

「そう、そこまでは洗練されていません。形式的には、あと数十年かかるでしょう。しかし、それが元来の姿だということです。人の身体は外側で周囲と接していますが、人は、頭脳によって外部を認識しています。これはすなわち、頭脳の中に社会や自然というすべての概念が取り込まれていることに等しいのです。そうなれば、結局、その人間の外部は、脳の中にこそ存在するのではありませんか? それが外側なのでは?」

森博嗣「四季 夏」

自宅や自室に閉じこもって外界との接触を拒むことを引きこもるといいます。引きこもる人のことを「引きこもり」と呼びます。

引きこもることで何を得るかと言うと外部からの影響を受けない、安定した環境を得ることができます。干渉されることを拒むわけです。

外部とは何でしょうか。

今は、物理的に部屋に閉じこもっていても携帯電話で会話ができます。通信回線経由でコミュニケートできます。引きこもっても外部からの影響を受けることができてしまう。これでは引きこもっている価値がありません。スイッチをOFFにすれば完全に遮断できます。にもかかわらず外部からの影響を受けるためにONにする。自室に閉じこもってはいるものの、オンラインゲームや2ちゃんねるなどで外界と接触している人達は、物理的、外見上は引きこもりのように見えますが、精神的には積極的に、かつ自発的に外界とのコミュニケートを図っているわけで、極めて自由であると言えます。

通信を物理的な距離という制約から解放するためにたくさんの工夫がなされてきました。大声を出すということから始まり、狼煙、手紙、モールス信号。

電話によって個人で所有する通信回線であっても音声でのコミュニケートはできました。今では無線でリアルタイムの映像も付加してコミュニケートできます。もはや物理的な位置というのはコミュニケートする上では意味を持ちません。

本当の引きこもりであれば、自室に引きこもったとしてもパソコンに向かったりすることはなく、ただ自己と向き合うだけでしょう。部屋に閉じこもってはいるもののパソコンに向かっているようなら、さらにそのパソコンが外部と通信しているようならそれは引きこもりとは言えません。コミュニケートするには物理的な接触が必要である、物理的に近い位置に移動する必要があると思い込んでいる古い考えの人には判らないかも知れませんが、物理的な制約を乗り越えた新しい形、これからのコミュニケートの形なのです。彼らは引きこもりではありません。ニュータイプです。

在宅勤務、遠距離恋愛、通信販売。これらはすべて物理的な距離を超越します。

読書

読書はさらにその上をいきます。

いわゆる「ひきこもり」が物理的な制約を乗り越える、三次元を超越したコミュニケートを行うのに対し、読書は時間をも超越した四次元殺法コミュニケートです。

読書に限らず、音楽、絵画、映画もそうです。作った時間と読まれる、解釈される時間とに差異が発生しますからこのコミュニケートは時間を飛び越えます。

PATH

makeしたプログラムを動かしてみようとファイル名を入力。うっかり"./"を入力し損なったので「ああ、動かない」と思ったのですが気づいたときには既にEnterを押していました。予想外にも動いてしまうプログラム。なんでだ、と思ってecho $PATHすると

/usr/kerberos/bin::/bin:/usr/bin:/usr/X11R6/bin:/usr/ucb:/usr/local/bin:/usr/java/jre1.5.0_03/bin:/home/bee/bin

なんてこった。

どこでこういう間違いが、というかPATHをいじったのは昨日のことですからそのときにやっちゃったのでしょう。とりあえず戻してみましたが解決しません。ますますおかしい。調べてみると/etc/profileの記述が引っかかります。

pathmunge () {
	if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
	   if [ "$2" = "after" ] ; then
	      PATH=$PATH:$1
	   else
	      PATH=$1:$PATH
	   fi
	fi
}

/etc/profile

PATHが空文字列の時にも:を付与してしまうのです。というわけで次のように書き換え。

pathmunge () {
	if [ -z "$PATH" ]; then
	  PATH=$1
	elif ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
	   if [ "$2" = "after" ] ; then
	      PATH=$PATH:$1
	   else
	      PATH=$1:$PATH
	   fi
	fi
}

が、解決しません。もう一度考え直してみると、ここで引っかかるならxdm経由ではなくてコンソールからログインしたときにもハマるはずです。ということはxdm経由で動くほうにしぼりましょう。

次に目を付けたのが/etc/X11/xdm/Xsession。こちらも同様に$PATHが空文字列だったときのことを考慮してません。今度はこちらを書き換えてトライ。

解決しません。なんでだー。

というわけでGoogle頼み。PATH HOWTOによりますと、xdmにはxdmの世界があるようです。たとえるなら空を駆ける一筋の流れ星。というわけで/etc/X11/xdm/xdm-configにDisplayManager*userPathを記述して解決。

なぜか私のxdm-configにはこの行がありませんでした。make Worldするときに何かやり忘れたのでしょうか。

というわけで、ここで/usr/local/binも記述しておけばrxvtが起動しない、とか悩むこともなく普通に使えるようになりました。

2005年08月07日

ATK-CK5

8kHz、5kHz辺りがやけに強くなる、という現象が収まりつつ。結構いい感じで鳴ってくれるようになりました。低音不足は、全体的にボリュームを上げるか、イコライザで持ち上げるか。ボリュームを上げるとベースもそれなりに聞こえて来るので、鳴らないわけではないのですが物足りなく感じてしまうのはPlugの後だからでしょうか。

そのPlugですが、いつの間にやらSpark Plugという後継機が出ているようです。Plugがさらにスパークするとなるとどんなものやら。

ちなみに、Plugを付けてプレイする大航海時代は砲撃の音が気持良いです。

CellでMac OS X

CNETの見出しでは「PS3でMac OSが動く?」と書いてますが、Mac OSがPS3で動くということは多分ありません。PS3をAppleが販売するというのなら可能性はありますが、それが無い限りAppleがPS3でMac OSを動かすことは無いでしょう。

この報告で述べていることはCellプロセッサがTigerを動作させるだけのポテンシャルを持っているというだけで、Cellが載っているからといってPS3で動かせるというわけではありません。技術的に可能でも、商業的な理由からAppleが動かさないということもあります。

ただ、こうした文言を公開するということはApplieに対して何らかのアプローチがあったのかも知れません。Cellを載せたMacintoshを作らないか? とか。Appleがそれに応じるかどうかは判りませんが、少なくともPS3ではないでしょう。

Linuxであれば、Mercury Computer Systemsのワークステーションですとか、PS3あたりが動かしそうです。

ほかのPC OSも、彼ら(OSベンダー)が載せようと考えるなら、WindowsでもTiger(Mac OS X 10.4)でも載せることはできる。ひょっとしたら、違うOSが出てくるかもしれない。

SCEI 久夛良木社長インタビュー(2)「PS 3のHDDにフル機能Linuxを搭載」

久夛良木社長が6月の時点で語っていたように、OSベンダさえやる気ならなんだって動くよ、Cellとしては対応してるよ、という話で技術的にはほぼクリア。

2005年08月08日

ELECOMからレーザマウス

Logitech、サンワサプライ、シグマ APO、ArvelにつづいてELECOMからもレーザマウスが発売。次はBUFFALOでしょうか。

普通の大きさの割にボタンはどうも3ボタンのようで物足りないです。横スクロールホイールはちゃんと第四ボタンとして使えるのでしたら横スクロールホイールにレーザの組合せの製品が欲しいところ。

Intel、852/855チップセットを製造中止

PCのチップセットは完全に9xx系チップセットに移行する模様。

これで次のtype Tをマイナチェンジで済ませるわけには行かなくなりました。さあ、どうするSONY。

2005年08月09日

NHJが自己破産

CMOSセンサを使用した安価なデジカメを販売することで有名でした。

「鶴亀メール」が名称変更

「鶴亀メール」という名称が商標権の侵害に当たるとして名称を「秀丸メール」と変更したそうです。ブランド名として「秀丸」で統一したほうが判りやすいと思いますからこちらのほうが良いでしょう。

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

とりあえず、表示のソートとDFでいうところの情報ウィンドウもどきを追加。

ただ、ソート方法の選択ダイアログをどのように作れば良いのかが判っていないので名前順固定。GCの属性は初期化されないというのを忘れてDefaultGC()を呼び出した後の描画がおかしい件でまたハマってみたり。

2005年08月10日

LivedoorがLinspireの販売を8月末で打ちきり

長続きしませんでした。

Operaはやっと8.xの販売をしてくれるようになりましたが、開始までが遅かったですしOperaのLinux版の販売についてはいまだにアナウンスもありません。製品の販売にはあまり力を注いでいないのか、注ぐのをやめてサービスの提供に方針転換を図っているのでしょうか。思い出してみれば元々は無料プロバイダだったわけですしサービスが本業とも考えられますから、本業に復帰とも。

製品サポートが短期間で終了してしまう、というのでは長期に渡って使用するような製品を買うのはためらってしまいます。どうせ買うのであれば末永くおつき合いしてくれるところから、というか。無線LANサービスも2年で終了とかいう流れにならないことを祈ります。

IntelがPentium 4/3.73GHzをリコール

特定のロットに同梱されているヒートシンクにヒート不具合があるそうです。batch number 3502A770というのが該当するものとのこと。

Inquirerの記事では3.73MHzとなっているのですが、この周波数ではまるで8080みたいです。

2005年08月11日

Logitecの新型レーザマウス

昨日、ヨドバシカメラに行ってみたのです。しっかりとiTunesのプリペイドカードが売られていたりして。

ELECOMのレーザマウスの現物を見たかったのでそれが目当てで、大きさなどを確認したのですが、LogitechのレーザマウスMX-1000が値下げされていました。いつから値下げされていたのかは知りませんが、そろそろ新製品の時期なのかと思っていたわけです。すると早速新製品が発表になっていました。

とはいっても今使っているMX-310に不満はほとんど無いわけですが。ちょっと左ボタンにガタが出てきたような気がするので分解して直そうか、というくらい。

いわゆる光学式マウスだと、ポインタがワープすることがあるわけですが、レーザになれば解消するのかも、と思うと安いサンワサプライのレーザマウスとかで充分ではないかという気もしますし。

ELECOMのレーザマウスはスペック的に気に入らなかったり大きさが大きかったりでびみょー。

Kinput2

OverTheSpotスタイルにすると変換候補ウィンドウがスクリーンの領域外にはみ出てしまうのが気に入らないのでKinput2に手をいれてみようと。OnConv.cやOffConv.c、OverConv.cに手をいれたらよさそうだ、という雰囲気ですがどうもスクリーンの領域外にならないように座標を調整しているようにも見えます。

とりあえず動かしてみようと思ってmakeしてみましたが、「Warning: かな漢字変換サーバと通信できません」と連れない一言。うーん。

2005年08月12日

Kinput2

起動時に-cs unixを付けて解決。

しかも、ウィンドウマネージャへのリダイレクトを止めてしまう処理がすでにmomonga-linuxというものでパッチが書かれていたりしたのを発見。

とりあえずOver the topでもはみ出なくなりました。ウィンドウマネージャへのリダイレクトを止めればOKということはFluxboxの不具合? 別のウィンドウマネージャでも試すべきかも。

あとはselectionShellにWindowsでいうところのWS_EX_TOPMOSTを付けたいのですがXではどうしたらいいのやら。

2005年08月13日

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

インクリメンタルサーチ追加。

DFのコードをそのまま持っていこうと思っていたのですが、DFのコードはDBCS対応として文字コードをunsinged shortにいれてから比較する処理にしていました。ターゲットがUTF16かShift_JISなのでこれでよいというか。今度はEUCも考えなければならないというのもあってunsigned shortには入らない。そのままでは使えません。比較部分をmblen()とmemcmp()で比較する処理にしてみましたがなぜか動かない。考えるのも面倒なので、捨てて書き直し。170行くらいのが150行に納まったり。DFのインクリメンタルサーチもこっちにしようか。

で、インクリメンタルサーチダイアログを追加したのはいいのですが、asciiTextWidgetのKeyPressイベントに反応させて検索しているせいで、一つ前のの入力文字列で検索しにいってしまうという罠。

何か程良いコールバックがあるのでしょうか。

あと、cygwinでテストしようとしたらインクリメンタルサーチを追加した辺りから

(gdb) r
Starting program: /home/bee/prj/x/dfx/dfx
Error creating process /home/bee/prj/x/dfx/dfx, (error 193)

とか言われて走らせられないという現象が。結局FIVAでテスト。error 193ってなんでしょう。893でないことを喜ぶべきか。

2005年08月14日

プリン

24時間でプリン300個とかいうのを見ていたらプリンを食べたくなってきたので買ってきました。

いや、300個ではありませんが。

2005年08月15日

プログラマの開発効率

特に根拠も提示せずにプログラマの生産性は人によって100倍になると書いてましたが、その根拠でも。

知識の差

ある問題があるとして、その問題解決の手順というのはいくつもあります。駅まで行く、という単純な問題でも徒歩で、自転車で、車で、泳いで、飛んで、といくつも選択肢があります。車を選択するにしても自分で運転するのか他人に頼むのか、自分の車を使うのか誰かの車を使うのか。このように選択肢は爆発する傾向にあります。

まっとうなプログラマであれば、駅までの距離に応じて適当な移動手段を選択するでしょう。しかし、「徒歩」しか移動手段を知らないプログラマであればフロリダまでも歩くことしか思い付かないのです。単純に知識の差だけで効率が変わってきます。

また、色々な移動手段を知っていたとしてもそれを適切に選択できるかどうかも問題になります。どんなときでも「自家用ジェット最高!」と宣言して、コンビニまでジェットで乗り付けるようだと着陸時に困ります。

作業速度の差

今時のプログラミングというのは、何かをいれたらそれに応じて何かを出すという入力と出力を決めていくということです。ボタンを押したら、それに応じて印刷する、とか。

自動販売機はお金をいれたら商品が出てきます。お金、硬貨だけでも1円硬貨,5円硬貨,10円硬貨,50円硬貨,100円硬貨,500円硬貨と6種類の種類があります。500円硬貨に至っては旧いのと新しいのと二種類ありますから7種類ともいえます。これらの複数の硬貨が投入されたときにどのように数えるか。まっとうなプログラマであれば、硬貨の価値を数値化、モデル化して100円硬貨であれば+100、500円硬貨であれば+500と点数を付けて行くでしょう。ある意味スゴイプログラマは100円硬貨が1つの時は100円、100円硬貨が2つの時は200円、というように組合せのパターンを考えようとするかも知れません。もちろん、こんなことをしていたのでは組合せを考えるだけで日が暮れてしまいます。同時に硬貨は10枚までしか受け付けない、といった制限でも付けば組合せは限定できます。しかし、今度はその組合せと金額が正しいかということを確認しなければなりません。組合せを作るのも大変なら確認するのも大変です。

作業の組み立て方の差

組合せというのは大きな問題です。ゲームのコマンド入力等で「たたかう」「どうぐ」「じゅもん」「にげる」といった4つの選択肢があるとします。一人パーティのゲームであれば組合せは4通りです。2人であれば「たたかう」+「たたかう」、「たたかう」+「じゅもん」といったように組合せが増えて4×4の16通り、4人なら4×4×4×4で256通りになります。こうした爆発する組合せについて、それぞれ正しく動作することを確認して行くことは大変手間がかかります。

まっとうなプログラマであれば、パーティ一人一人の行動を他のパーティとは影響が無いように注意して作ります。こうすることで、4×4×4×4×…といった組合せではなくて4+4+4+4+…といった項目に抑え込んで手間が増えないようにします。もっと良いプログラマであれば、人数に関係なく4通りのコマンドをテストするだけで問題ないように作るでしょう。

確認項目が4つで済むプログラマと16通りで済むプログラマ、256通り確認しなければいけないプログラマ、では作業効率に大きな差ができます。しかもこれはパーティが増えればもっと差が大きくなるのです。100人パーティとか考えたくなります。

できないプログラマというのは問題をどんどん大きく育ててしまうので、結果的に作業効率に差ができてしまいます。

作業量の差

もちろん、最初に選択されても2番目に選択されても最後に選択されても問題なく動作する「たたかう」コマンドや、いつ、誰が選択しても動作する「たたかう」コマンドというのは、256通り確認しなければ行けない「たたかう」コマンドに比べれば作るのが難しいはずです。でも、それができるかどうかが大きな分かれ目になります。

256通りの確認が必要なコマンドを作るのは、確認が4つで済むコマンドよりも簡単でしょう。ですので、この人はどんどんコマンドを作っていきます。こうして「できない人」は「できる人」がコマンド1つを作り上げる間に10個も20個もコマンドを作り上げるのです。ここだけ見ると「できる人」が1つ作る間に20個作るわけですから「できない人」は20倍の作業速度に見えてしまいます。しかし、「できる人」がコマンドを4つ、つまり全部作ったときには「できない人」は100個くらい、まだ半分も出来上がっていないことになります。

問題を小さくして取扱しやすくする、というのはよい戦略です。しかし、物には限度があり細かくしすぎると却って手間がかかるようになります。よいプログラマであればこのバランスを知っています。

評価の差

プログラマの差とは話がずれますが、厄介なのは、できる人とできない人の判断です。先に挙げた例だと、問題を細かく分割したおかげで一つ一つは簡単にこなせるようになっています。端から見ているとどんどん仕事を進めているように見える、「できる人」に見えてしまうのです。さらに質が悪い口が達者な人ですと「コマンドが4つで4人パーティですから組合せは256通りなんですよ」とか言い出して自分の作業量を正当化します。このために「できない人」をできない人と評価することが難しくなります。

「できるプログラマ」「できないプログラマ」だけではなくて「できるように見えて実はできないプログラマ」という人もいるので見極めは大変難しいです。しかし、こうした作業の組み立て方や知識の差の違いで作業効率というのは大きく違ってきます。

どんなに作業スピードが速くても、作業スピードよりも速い速度で問題を大きく育ててしまう人は結果的に能率は劣ることになります。こうした積み重ねが10倍、100倍といった差になります。

2005年08月16日

HTMLの難読化

HTMLを符号化(人間に対する難読化)を行い、クライアント側で復号する、というソフトがあるそうです。デコーダをJavaScriptで作成してHTMLに埋め込んでおくとか。この手のものは3年くらい前にもあったような気がしますがまた復活したのでしょうか。

この手のもので符号化した場合、JavaScriptを実行しない検索エンジンに拾ってもらえないのではないかと言う気がします。

画像のダウンロードを禁止する、とはいってもダウンロードしないと表示もできないわけで厳密には禁止できていないわけです。右クリックからの保存ができなくてもキャッシュフォルダを漁れば画像本体が見付かるのではないでしょうか。キャッシュもさせない?

2005年08月17日

とりあえずメモ。

X ツールキット・イントリンシクス・プログラミングマニュアル(XウィンドウシステムシリーズVol.4)ソフトバンク
X アプリケーション・プログラミング(2) Athneaウィジェット編新紀元社
X Toolkit プログラミングプレンティスホール出版
X Toolkit プログラミング OSF/Motif版第二版トッパン
X Window ハンドブックアスキー

jFD2

jFD2 β2をLinuxにインストール。先日動かなかった理由が判明しました。

jFD2 will exitsとりあえず起動するとこんなダイアログが。~/.jfd2があるとうまく行かないようです。とりあえず削除。しかし、削除しても解決しません。

ここで一つ疑問が。「なんで英語?」あの変態イケメンVJのことですからまだ英語版というか海外展開までは考えていないような気がします。それより先にやることがあるハズ。

というわけでLANG=ja_JP.eucJPとしてからjFD2を起動。起動したー!!!!!11。今度はカーソルキーも動きます。ロケール違うとキーも反応しないとは予想外。延々と出ていた

java.lang.NullPointerException
        at com.nullfish.lib.vfs.impl.classpath.manipulation.ClassPathGetInputStreamManipulation.doGetInputStream(Unknown Source)
        at com.nullfish.lib.vfs.manipulation.abst.AbstractGetInputStreamManipulation.doExecute(Unknown Source)

(以下略)

も出なくなりました。

日本人なら日本語ロケールで。

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

jFD2でC:\WINDOWS\SYSTEM32を開くのとローカルディレクトリブラウザ(仮)で/cygdrive/c/windows/system32を開くのとではjFD2の方が速い。

くそー。でも何をどうやったら速くできるのやら。

2005年08月18日

KeymapNotify

XtAddEventHandler(w, KeymapStateMask, False, wndKeymap, NULL);してもKeymapNotifyが来ません。

とりあえずGraphicExposeを拾ってExposeしなおすようにしたのでスクロールが速くなりました。

その他諸々。そろそろコピー処理とかを作りこむ時期かも。恐くてまだ実際のファイル操作機能を付けてませんが。

jFD2

lを押してLogDiskのダイアログに"/"と入力したのですが、/に変わってくれなくて残念な思い。

smb対応ですが、どうも\\server\dir形式はまだダメのよう。smb://server/dirもうまく行きません。一応アクセスしているようで、アカウントがダメと弾かれました。ドメインをまたぐアカウントを使っているので、アカンウトにドメイン名を含む指定をしなければなりません。通常、Windowsの書式ではdomain\userという表記になるので(ExplorerでもDFでもこの書式で通る)jFD2に入力する際にはsmb://domain\user:password@server/dirと書くのだろうと思ったのですがどうも形式が違うとはねられてしまいます。

快・不快

自分の中にある曖昧な認識を体系づけて整理してくれたり、自分の考えを肯定してくれるものを「好む」心理を紹介されています。さらに発展して、逆の心理、つまり自分の考えを否定するものは好まれないのではないか、という推察。

もう、なんというか、「あんたのやり方は良くないよ」といいたくなる場面は良くあるのですが平林さんもおっしゃる通りストレートに言っては好まれない、聴いてもらえないわけです。

さて、相手にとって好ましい話題といえるかどうかはともかく、私個人の感じ方では「自己を肯定してくれる意見」だけではなくて「新たなる知見を与えてくれる意見」も好ましいと感じます。

相手の意見を否定する言い方ではなくて、相手にとって新たな知見となるような言い方ができるようになればお互いに心地よい生活が作れるのではないか、と考えてみたり。

これがとっさにできるようなら全然苦労はしないと言うか、私の場合はすぐに考え込んでしまって言語化するまでに半日かかると言うのが難点。

Xbox 360

299.99ドルだそうです。日本での価格は未定だそうですが、36,000円じゃないかとか想像中。さすがに360円はあり得ないし。

Gameboy Microの発売決定

日本円で12,000円。カラーバリエーションとして「ファミコンバージョン」というのがあるのですが、こちらは画像が公開されていないようです。えんじ色にゴールドのパネルを期待しています。

GB SPでは外付にされてしまったイヤホン端子も内蔵してるし、電車で使うにはかなりよさそう。

2005年08月19日

忘れもの

CLIEを家に忘れました。日付が判りません。

歯磨きセットを忘れました。帰宅時に歯医者によるつもりでしたが、歯を磨きに家まで戻らないと行けません。

YonahがEMT64に対応しない理由

先月はスケジュールの都合と書きましたがもう一点思い当たるところが。消費電力です。

消費電力の件に付いてはIntelも述べているのですが、あまり信じてませんでした。しかし、今のIntelはプラットフォームを重視する戦略になっています。CPU単体の消費電力を問題視するのではなく、プラットフォーム全体での消費電力をみています。

次期チップセットでは消費電力を削減するという話もあり、CPUを64ビット対応させることによる消費電力増加をチップセットでカバーしようという計画なのではないでしょうか。そして、それができるのがYonahでは間に合わない。結局はスケジュールと言えますがEMT64対応の開発期間だけではなくて、チップセット側の開発期間も考慮しているのではないかと思います。

Intelのモデルナンバが桁あふれ

3桁だったのが4桁になるそうです。とはいってもPentium 4/Pentium Dは3xxxを割り振るということで、この中では結局今まで通りの3桁しか使えません。これで0から振り直せるということでしょうか。

厚生年金会館存続運動

採算の取れないものを国の税金で賄おう、というのは判らないでもないのですが、このような施設で採算が取れないということは単に利用率が少ないわけです。こういった施設でできる文化的活動は別の施設でも可能なわけで、その施設が厚生年金会館である必要性はありません。

郵政民営化がどーの、と言ってるくらいですから厚生年金会館だって民営化しないほうがおかしい。むしろユニバーサルサービスを提供しているわけでもないので、こちらを先に民営化するのがスジともいえます。

個人的には、吹奏楽の全道大会会場がこの厚生年金会館でまずはここにくると言うのが中学生時代の夢でした。全国大会会場の普門舘は憧れの舞台でしたが、こちらには行くことができませんでした。厚生年金会館ホールというのは私にとって当時の夢であり、夢の通過点であり、想い出の場所です。無くなるのは寂しいことですが、個人的な想い出のために税金を使えというのも間違ってます。

郵政民営化に賛成なら厚生年金会館も売却でしょう。

Intel vs VIA?

携帯機器用x86プロセサの開発計画が明らかになったそうです。

XScaleではダメという判断でしょうか。直接競合しそうなのはVIAのC3だと思いますが、XScaleを置き換えるのであればC3よりも低性能、低消費電力ということになりそうです。Pentium程度なら大分小さく作れそうですけども。

cygwinのstat()

stat()が遅いという話なのでコメントアウトして動かしてみました。速っ!!

2005年08月21日

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

エラー表示の実験的組み込み。

この状態からEnter
権限が無いのでエラー。下に表示。
この状態で情報ウィンドウ表示。

エラー表示部分は消えてしまいました!情報ウィンドウを表示した時点で他のウィンドウ(フレーム?)を下に移動させているのですが、この時にウィンドウからはみ出るようなら消してしまっているのです。書いたときにはこれで良い、と考えていたのですが…。

Xのリソース

リソース周りがどの用になっているのか解らなくて、メッセージ表示などに着手できない状態。

XrmGetResource()でリソースを読むことができる、というのはX-Window Ver.11プログラミング第2版(日刊工業新聞社)に書いてあるのですが、この関数に渡すXrmDatabase*をどう取得したら良いものか。

この本ではリソースファイルを読み込んで生成するやり方が書いてあるのですが、ファイルを読むのではなくてXが持っているデータベースに接続したいわけで。あとはXtの初期化で指定してあるフォールバックリソースも見てほしいので、Xtの関数を使うべき場所なんでしょう。しかし、Xtの資料が無いので何をどうしたら良いのかさっぱり。

ヤフオクにて100円でよさそうな本が出品されていたのですが気がついたときには終了していたりしてがっかり。ちなみに1,000円を超える価格がついていました。応札しておくべきでしたか。でも、まあ、後の祭り。

jFD2

デスクトップからFIVAにソースを引き上げようとしたのですが、この時のmountが面倒で仕方がありません。ふと「もしかしてjFD2ならマウントせずにコピーできる?」とか思ったので起動。

で、Lを押してダイアログに…ってLANG=en_USでも起動してるし。なんなんだろう。まあいいや、smb://bee:password@desktop/share/みたいに入力したらうんともすんとも言わず。

rxvtにはなんだかそれっぽいログが出たのでLinuxだとsmbはうまく動作しないのか、こちらにライブラリが足りないのか。

jFDとマハラジャ

今、jFDと入力しようとしたら仮名入力のままだったために「まは」になってしまいました。それだけならばまだいいが。この「まは」を拾ってJapanist 2003の予測変換は「マハラジャ」を提示。その瞬間にラジニカーントが躍り狂いマサラムービーが展開される脳内。

2005年08月22日

Xboc 360のCPUがOut of order実行をしない理由

ちなみに、PC向けのPentium 4は3内部命令(uOPs)/サイクルでアウトオブオーダ(out-of-order)コア、つまり、最大3命令を命令順序に関係なく、実行できる命令から実行する複雑な構造となっている。MicrosoftもSCEも、いわゆる汎用コンピューティング(整数演算や制御中心)については、PC向けCPUほどの性能はいらないと判断したことになる。

なぜPentium ProがOut of orderを採り入れたか、ということを考えるとゲーム機でOut of orderを採り入れない理由が見えます。

Pentium Proではi386やPentium向けにコンパイルされたバイナリも高速に実行する必要がありました。内部に持つ演算機の数やパイプライン構成が異なるにもかかわらず。そのため、i386向けに並んでいる命令をPentium Pro向けに並び替えて実行する必要がありました。

XboxやPLAYSTATION 3では、過去のバイナリを気にしなくても構いません。新たに書かれるプログラムはコンパイラが命令を並び替えてくれます。ですからOut of orderを採り入れる必要が無いのです。

cygwinのstat()

というか使っているのはlstat()なんですが。

ディレクトリ一覧を取得する際の処理の所用クロックを計測しました。使用機はAthlon XP 2500+。

取得処理全体446,472,039
lstat()424,688,199

取得処理に消費する時間の95%がlstat()に費やされていました。

どうするか、ってstat()を呼ばないとかstat()を書き換えるしか無いわけで。遅いのはcygwinなので、これは放置。

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

とりあえず、コピーと削除を実装。シンボリックリンクをシンボリックリンクとしてコピーしようとしてstat()で取得したサイズでmalloc()してreadlink()。読み取った内容でsymlink()を呼んだわけですが末尾にNUL文字を付与していなかったせいでうまくいかないとか言う現象がでたくらいで割とあっさり。

ディレクトリのコピーとか作成はまだ手を着けていないのと、コピーや削除を行った後に画面の再描画をしていないのでまだまだ実用にはほど遠い感じ。

あとはステータス表示部分について、サイズ変更や情報ウィンドウ表示などがあっても位置を保持するように例外処理を追加。これを特別扱いせずに済ませる方法は無いものでしょうか。

スクロールさせていると、XClearArea()でExposeされて再描画される前にXCopyArea()してしまうようで謎の空白地帯が。XClearArea()で描画を後回しにせずにその都度描画しておくか、Exposeがきていない内にスクロールする羽目になったらXClearArea()で全体に描画させるか。

2005年08月24日

Hyper Threading

後藤さんの記事で、Intelの次期デスクトップCPUやサーバCPUからHyper Threading機能が取り除かれたということが紹介されました。これが話題になっています。

しかしながら、余剰演算器が発生するNetBurstアーキテクチャでなければHyper Threadingは実行できないので当然と言えます。見出しでも「NetBurstの要だったHyper-Threadingが消える」とあるように、NetBurstの性能を確保するための要であって、NetBurstでなければ不要といえます。後藤さんの記事でも

しかし、NorthwoodにHyper-Threadingが搭載されているということは、多くのことを示唆している。まず、1つ推測できるのは、じつはPentium 4アーキテクチャそのものがもともとHyper-Threadingを前提に開発されたという可能性だ。そう考えるとつじつまのあう話はいろいろある。

まず、AMDが指摘するPentium 4のIPC(instruction per cycle:1サイクルで実行できる命令数)の低さがある。Pentium 4のIPCは、Pentium IIIよりかなり低く、性能向上はクロック向上に頼っている。そのため、Pentium 4の実行ユニットの利用効率は非常に低い。Intelによると、実際には35%程度しか稼働していないという。つまり、Pentium 4の実行パイプラインはスカスカな状態だ。

しかし、これがHyper-Threadingを前提として設計されたとすると話は違ってくる。Hyper-Threadingを使うと、2つのスレッドを同時に走らせることが可能になるため、実行ユニットは空いていてくれた方が好都合だ。というか、Hyper-Threadingを使って、初めてPentium 4の実行ユニットはまともな稼働率になると言った方がいい。つまり、IntelがPentium 4開発に当たって、初めから2スレッドでの効率を考えたとするなら、このアーキテクチャがリーズナブルということになる。

後藤弘茂のWeekly海外ニュース(2001年12月14日)

とあるように、元々NetBurstはHyper Threadingを前提として作れらていたフシがあります。稼働率が35%というのは尋常ではありません。というか、NetBusrtだからHyper Threadingというよりは、Hyper Threadingを実現するために演算器が余るようなNetBusrtアーキテクチャを作ったのだと思えます。

またこの時期からIntelもクロックだけで性能を向上させるには限界を感じていたようで、そのことを裏付けるスピーチをしています。このスピーチも後藤さんの記事で紹介されています。クロックスピードだけで性能を語るのは止めよう、ということで投入したHyper Threadingですが、結局NetBurst自体が高クロックを必要とし、Hyper Threadingを有効にすると発熱が増加するなどで有効に機能しませんでした。

どうしてIntelが、こうした方向転換をするのか。それは、今後のCPUでは熱が最大の問題になるからだ。「我々は、もはや消費電力を顧みずにCPUの速度と複雑度を上げることはできない。消費電力との戦争はどんどん激しくなる」とRattner氏は指摘する。

後藤弘茂のWeekly海外ニュース(2001年10月24日)

複数スレッドを同時に処理するために演算器を追加し、空き時間をつくり出すために長くなったパイプラインをフォローするためにクロックを高速化したために、ダイは大きく消費電力も増加。プロセスルールを微細化しても消費電力が改善しなかったために熱密度がさらに高まりました。最大の問題とされていた発熱、消費電力については高クロックで性能を稼ぐNetBurstアーキテクチャでは解決できなかったのです。

こうしてIntelはNetBurstアーキテクチャを捨てざるを得ない状態になりました。Hyper Threadingを実現するために作ったようなアーキテクチャですから、これが使えなければHyper Threadingも当然使えません。Banias系アーキテクチャでは別スレッドの実行に割り当てる程の余剰演算器もレジスタファイルもありません。Hyper Threadingを実現するために余剰演算器を載せるくらいなら際所からコアをまるごと載せてしまった方が安心です。

個人的にはSunMicrosystemsのNiagaraに対抗するようなPentiumクラスのCPUで32way CPUを作って欲しいものです。Pentiumが330万トランジスタ、MMX Pentiumでも450万トランジスタ。それに対してハイエンドのItanium 2だと5億9200万トランジスタ。MMX Pentium130個分です。ちなみにPentium Mが1億4000万トランジスタでMMX Pentium 31個分。32個には届きませんが、Pentium 4 XEなら1億7800万と余裕で32個分クリア。

2005年08月25日

私的録音補償金制度

ダイレクトにデータを受けて端末の中でのみ再生する場合は、JASRACが定める複製・蓄積行為の許諾範囲に収まります。

著作権法の解釈は裁判所なりが行うものであって、なぜJASRACが定める行為が関係してくるのか判りません。JASRACがOKといっても違法なものは違法ですし、逆にJASRACがダメといっても合法なものは合法なはずです。

ただし、現状を考えると、いずれ私的録音補償金制度によるMDの徴収はゼロに近づいてしまいます。CD-Rについても、長期的には次世代DVDなどより大容量なメディアに置き換わっていくでしょう。そうなると、補償金制度は空洞化してしまう。著作権法第30条第1項は、限られた条件下で私的複製を認めていますが、第2項において、著作権の国際条約との整合性を諮る観点から著作権者の経済的利益を不当に害しないため補償金の支払いを義務づけています。

収入が事実上0になっても構わないのでは? しかし、MDの収入が無いから別のプレイヤから、という発想は解らなくはありません。仮に、誰も複製しない世界を想像しましょう。CDを買って、そのCDを再生するだけの世界。誰も複製しないのですからJASRACが管理しなければならない「私的複製」もありません。MDからの補償金徴収も0です。何が問題ですか?

収入が事実上ゼロというのはまったく問題にならないのです。

私的複製があり、それにより権利者の権利が侵害されている。それが問題であり三十条第二項の補償金につながるのです。個人的にはこの項目には反対なのですが、関係ないので触れません。

さて、現実には私的複製はあります。これをどう解決するか。泉川理事がおっしゃるように著作権者の経済的利益を不当に害しないのであればよいのです。

個人で購入したCDを、再生器機の対応系式に変換する。たとえばCD-Audio系式のデータをMP3系式に。ATRAC3系式のデータをMP3系式に。これは著作権者の経済的利益を害しているでしょうか。害していないのであれば、データの変換については補償金を徴収するべきではありません。

では、レンタル店から借りてきたCDのデータを複製。これはどうでしょうか。これは害していると言えます。ここからは徴収すべきです。

購入したCDを複製の上売却。私は、これも害していると考えます。

こういう、「著作権者の経済的利益を不当に害している」と言えるところから徴収するべきです。レンタル店から貸し出した枚数に応じて、中古CD店から販売した数に応じて徴収するべきです。

なんでもかんでもまとめてかすめとろう、などとするから反感を買うのです。

JASRACはレコード製作会社に複製の許諾を出しますが、この許諾の範囲は市販用の複製物の製作・頒布に限定されており、購入者が個人的にデジタル複製する場合は30条2項の適用を受け、補償金を別途支払うことになります。

JASRACとレコード製作会社との間に何らかの契約があるのは解ります。しかし、レコード製作会社と購入者との間の契約においてはJASRACは無関係ではないでしょうか。購入者が個人的に複製することについては、レコード製作会社、もしくは販売会社と購入者との間の契約によるはずです。JASRACがダメと言ってもレコード販売会社などの著作権者が許可していれば問題ないように思えます。もっとも、現時点では著作権管理を一元管理することになっているので、著作権者の意向を無視してJASRACの主張が通ることになっていますが。

そこで、当時のテープレコーダーによる家庭内録音は比較的小規模であり、著作権者の経済的不利益も少ないとの判断から著作権法30条で「個人的に又は家庭内その他これに準ずる限られた範囲内において」などの制約下で私的録音が可能になったのです。

当時、といっても良く解りませんが、SP盤やLP盤のレコードをそのまま再生すると痛む、ということでカセットテープに複製して再生することが主流でした。それが「比較的小規模」であり「著作権者の経済的不利益も少ない」というのでしたら、CDを買ってきてそれをHDDに複製して再生するということも同様に「比較的小規模」であり「著作権者の経済的不利益も少ない」はずです。何が問題なのでしょう。

その後、録音録画技術はめざましい発展を遂げまして、デジタル化の時代になりました。アナログであれば使用を重ねるにつれ劣化しますが、デジタルは劣化しません。オリジナルと同様のコピーが家庭内でできる。大量にコピーされた場合は、著作物の有力な利用形態になり著作権者が経済的な不利益を被ることになります。

劣化するかしないかが争点なのであれば、CD AudioからMP3に変換した時点で劣化しています。デジタルでも。オリジナルと同様のコピーができることが問題なのでしたら、ロスレス圧縮が可能なiTunesのみが対象となるべきでしょうか。そういう問題ではないでしょう。また、この時点では「著作権者に経済的な不利益」を与えてはいません。デジタルによるコピーかどうか、というのは関係が無いようです。

大量にコピーされた場合は、著作物の有力な利用形態になり著作権者が経済的な不利益を被るというのが問題です。しかし、本当に問題でしょうか。大量にコピーしただけでは、何も問題が無いのです。仮に私が「Clear Sky」を大量に、100枚程度、複製したとしましょう。これによって著作権者が経済的な不利益を被ることはあるでしょうか。複製したものと原本を私が保有している限り、なんら不利益にはならないと思います。不利益になるのは、複製物を頒布したり複製物を手元に老いたまま原本を手放すなど、「原本・複製物」の一部でも手放した時です。これは頒布権などの侵害なので複製とはまた別の話です。

現状の制度に合わせて、というよりも現状に合わせた制度を定めたほうが良いと思います。

私的録音補償金制度

メーカ側としてJEITAの方の意見。私としてはこちらのほうが筋が通っているように感じられます。

LOOX T

ファンレスとは素晴らしいです。

開発者ストーリを見た感じでは「type Tのメインボード」+「libretto 100Uのバックライト」という印象を持ちましたが。

Celeron Mモデルではtype Tの外装のような加工も施されているようです。

2005年08月26日

Intel VIIV

今年の1月末に、一部で話題になったこの記事。実際に話題になったのはロイター経由CNET.COMの記事なのですがすでに掲載期限切れのようなのでInquirerの記事にリンク。

記事の内容としては、IntelがVIIVという商標を登録した、ということとVIIVとは何だろう、というものです。ローマ数字でVI/IVということで6と4。64ビットテクノロジをイメージする商標ではないか、とか。ローマ数字で64を表現するLXIV(50+10+4)なので違うんじゃないか、などと憶測を呼んでいました。

それが昨日のIDFで発表されたわけですが、出てきたものは64ビットだとか技術的なものをアピールしたものではなくて、使いやすさをアピールしたブランド。このブランドはPCなどの最終製品に付けられるようで、Intelよりも搭載されるOSやソフトウェアの質に左右されそうです。どこまでIntelが関与していくのか解りませんが、VIIVロゴがついたPCだと製品構成がほぼ同一と言うことになりそうでメーカ側がどのように差別化を図るのか、Intelがそれをどのように支援するのか。

2005年08月27日

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

ディレクトリのコピーと移動、削除を実装。ただし、処理の途中でエラーが発生したときのハンドリングがイマイチ。

エラー表示に、どのファイルで失敗したのかというのを表示できていません。途中経過が内部データになってて、それに対するアクセサが無いというか、Cなので読めば読めるのですがそれはどうか、とちょっと踏み切れないところ。

ラーメン

夏風邪なのか、体調が優れません。

風邪にはラーメン、とちゃぷに師がおっしゃっていたのでラーメンを食べにいくことにしました。近所に350円でラーメンを食べさせてくれる店があるというので行ってみたのですが、残念ながらシャッタが降りていて入れませんでした。

仕方がないので30分ほど歩いて天山に。

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

キー定義ファイルの実装に着手。とりあえずマルチバイト文字を考慮せずに書き始めましたが、これは楽です。このままにしてしまいたい。

2005年08月28日

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

キー定義ファイルの実装。でも読み込む場所か間違ってる。ちゃんとホームディレクトリを探さないと。

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

キー定義ファイルとか読み込んでみた版

色定義はリソースから読み込んでみました。XtGetApplicationResources()の使い方が解らなくてかなり悩んだり。Xt-FAQを読んで少し理解。

後はメッセージ類もリソースにしないと。

KeySymからキーストロークを取得することができればよいのですが、これができないためにキー定義ファイルには「*」とか「!」のようなシフト状態を伴うキーが書けなくて、+:とか+1のように書かなくてはなりません。Win32でいうVkKeyScan()みたいなものは無いのでしょうか。

Ctrl+F1だとかCtrl+Hのようなシフト状態付きのキー定義も判定したかったので内部でシフト状態も保持するようにしてみたわけですが、おかげで*をShift + : と指定しないといけないという。Xならではの冴えたやり方があるのかも知れません。

2005年08月29日

公衆無線LAN

Livedoorが月額525円でのサービスを発表しましたが、それに対抗するかのようにソフトバンクが月額304円でサービス提供を発表

Livedoor Wirelessと異なり一定エリアでの面展開ではないようですが価格にはインパクトがあります。

そのLivedoor Wirelessは総選挙が影響しているとのことで正式サービスは11月に延期。アクセスポイントの接続が予定より手間取っているとのこと。

総選挙

街頭演説と言うか、外でマイクパフォーマンスが繰り広げられています。しかし、これが何を言っているのか全く解りません。

大音量で流しているので、近くで聴くとあまりの音量で聴きたくなくなります。というか耳を塞ぎたくなります。

では遠ければ良いのか、というとそういうものでもありません。遠くからですと建物の壁に反射するのかエコーが混じり聞き取るのが困難になります。

建物が無く反射波が発生しない環境であれば大音量で遠くまで伝達させようと言うのは有効かも知れませんが、町中では近くても遠くても聞こえないただの騒音でしかありません。

2005年08月30日

Asianux

asianuxのデスクトップWindowsそっくり。流石にWindowsロゴはありませんが、左下には「スタート」ボタンが。

ブート中の画面を見た感じではRed Hatそっくりです。Red HatなのかRed Flagなのか、みたいな。

VAIO type T

モデルチェンジ。先日i855チップセットが販売終了になったのでtype Tをどうするのだろうと思っていたのですがi915に載せかえてモデルチェンジ。液晶も libretto U100、LOOX に続いてLED バックライト採用。

USBが1ポートしかないように見えるのが気になります。製品情報にはUSB×2とあるのですが。ああ、左側手前のモデムポートのカバーに隠れているのですか。なるほど。

2005年08月31日

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

いろいろ手を入れてみた版

初期のキー定義はFD風にしてますが、未実装の機能が山盛り。そこはソレ。bin/にコンパイル済みのバイナリも入れてますが、実行にはlibXaw.so.8.0などの共有ライブラリが必要です。最近のX11に更新していれば大抵動くとは思いますが、インストール直後のasianuxではlibXawは7までしかなくてダメでした。そういう時にはsrc/の下でxmkmf; makeすると動くバイナリができると思います。

見様見まねでmanファイルも書いてみたり。

Opera祭

昨日じゃないですか。

一晩置く

さて、昨日書いたkeycfg.c。これがまた、コードが汚いように見えて気に入らなくて、さらに動かないものだから気に入らなくて、後で捨ててやると思っていたわけです。それでも、まあ、なんとか動くようになったところで「なんだよこのparams++って。まあ、今日はこの辺で勘弁してやろう」と眠りに就きました。

起きてから見直してみると、まあ、昨日思っていたよりはひどくないんじゃないの? というか「このparam++は必要だったねえ、名前が良くないけども」とか考え直してみたり。なんというか、自分を許してもいいかなと思えてきました。

構文解釈を行おうところは状態遷移を伴っているのですが、ここが長い長い。C++ならメンバ関数からメンバ変数を操作できるわけで小さな関数に分けて見通しを良くできるわけですが、Cだと明示的にポインタで渡してやらないと行けないという手間がかかります。手間というか、面倒なのでついつい長くなってしまうと言う。

ところで、この「自分を許す」という感覚は大事なのではないかと思いました。動かないコード、汚いコードを見て許せなかったのは自分です。追い詰めているのも追い詰められているのも自分です。自分で自分を責めているのです。責められている自分を解放するには、自分が許すしかありません。

これではいけない、と自分に厳しくあたるのも構いませんが、そこから抜け出すのも自分です。自分が許さないと誰も許してくれません。

胸のつかえが取れて、次の機能に取り掛かれます。

よつばと! (4)

やっと近所の書店に入荷。


トップを狙う

Copyrigiht © 105 びい