2006-10-27

Solarisで無線LAN

で、Linuxで無線LANなんて当たり前すぎるので(ry

http://www.opensolaris.org/os/community/laptop/wireless/なんてのがあるらしい。WN-B11/USBはさすがにダメみたいだけど、

# pcwl – Wireless Driver for Agere 11b and PrismII 11b Chipsets
# ral – Wireless Driver for RaLink RT2500 Chipset

なんてのがありますよ先生さん!

いまさら無線LAN

48ビットWEPしかなかった時代は「あんなもの危なくてつかえねー」と言いつつ、それらが時代遅れとして捨てられるとなると一転して喜んで拾ってくるルンペン気質の私。

さて、IO-DATAのWN-B11/USBと、WN-B11/PCMと、CoregaのWLCB54GLをもらってきた。

OpenBSDのサイトによればWN-B11/USBはAtmel AT76C50xで、Linuxだとhttp://at76c503a.berlios.de/のドライバが使えるらしい。

WN-B11/PCMはcardctl identすると

product info: "IO DATA", "WNB11PCM", "Version 01.02", ""
manfid: 0x028a, 0x0002
function: 6 (network)

と表示されるタイプ。Lucent OrinocoとかPrismIIというファミリらしい。3種類もドライバがあるようだけど、Debian 3.1だとorinocoドライバがattachされていた。

WLCB54GLはメーカサイトに説明あり。Coregaエライ。Ralink 2500というファミリらしく、ドライバもrt2500を使う模様。

2006-10-24

大麻栽培PC

ヒロポンに引き続きマリファナの話題w

大麻栽培PC
Engadgetはコメントが面白いなあ。

違法つながり・温度コントロールつながりで妄想してみたんだけど、どぶろくの発酵キットとか作れそうですなあ。

2006-10-21

ヒロポン

Wikipedia巡りネタ…

「ヒロポン」は商標なのだそうだ。
さっそく特許庁で検索してみると… おお、まだ登録されてますよ?
2005年2月1日に更新登録がされているので、まだまだ商標権を手放したくないらしい。
医薬品としてまだ使われてたりするのかなあ?

これも個人的にはびっくりだったけど、さらに驚きなのは特許庁の商標区分番号の分類中に「覚醒剤」が存在すること。いいのかな… うーむ。

pukiwiki-mode for PukiWiki 1.4.7

会社で入れたPukiWikiをヘビーに使い倒すためMeadowさんにpukiwiki-modeをインストールしたのだが、インデックスが表示されない orz...

四苦八苦した結果、以下のことが分かった:

日付の解析を間違えるので、default.ini.phpの$show_passageは0にしてはいけない。

一覧ページのフォーマットが変わったので、HTMLの正規表現を変える必要がある。

--- pukiwiki-mode.el.ORG 2005-02-22 17:01:47.001000000 +0900
+++ pukiwiki-mode.el 2006-10-20 12:58:44.031250000 +0900
@@ -2701,7 +2701,8 @@
"index として抽出する anchor の正規表現の Pukiwiki 1.3系用。")

(defvar pukiwiki-fetch-index-regexp-1.4-later
- "<li><a[^?]*\\?cmd=read&page=\\([^\"]*\\)\"[^>]*>\\([^<]*\\)</a>[<small>]*\\([^<]*\\)[</small>]*</li>"
+ ;;"<li><a[^?]*\\?cmd=read&page=\\([^\"]*\\)\"[^>]*>\\([^<]*\\)</a>[<small>]*\\([^<]*\\)[</small>]*</li>"
+ "<li><a[^?]*\\?\\([^\"]*\\)\">\\([^<]*\\)</a>[<small>]*\\([^<]*\\)[</small>]*</li>"
"index として抽出する anchor の正規表現の Pukiwiki 1.4以降用。")
これで快適快適。

ある日の会話

某氏「今期は何を見てるんですか」 (アニヲタってのは知ってる)
自分「Death Note面白いっすねー。ジャンプ全然読んでなかったから」
某氏「え、8等身キャラですよ? 大丈夫なんですか?」
自分「どういう意味だっつーのw」
某氏「死神とかじゃなく、妖精さんじゃないとダメなんじゃないですか?」
自分「あー、ビンに入ってるとかねー」

どういう人だと思われているんだろう orz...

2006-10-19

Wikiで仕様書作成

続き。

texiファイルはフィルタで形式を修正して(最近立ち上げた)Wikiに掲示してる。こうした理由はいくつかある。

○新しい手法を導入する際の、心理的な抵抗を減らすため。大部の資料を作成してわけのわからない専門用語で相手を圧倒するのもそれはそれで楽ではあるんだけど、今回はちゃんと布教したかったので、ページ単位にすっきり納め「なければならない」Wikiを採用した。

○文書サーバが分散していて関係者全員がアカウントを持つマシンがなく、だれでもアクセスできる配布手段が必要だった。ウェブならブラウザさえあれば良く、事業所をまたがってもいいし、もしかすると興味をもったお偉方にも読んでもらえるかもしれない。

○完結した資料を作ると、ただケチをつけるためだけにレビューしようと言い出す輩がでてくる。指摘できる俺ってカコイイ、というチンケなメンタリティが透けて見えていやなものだが、Wikiならば「指摘点があればあなた自身が直してこの文書の改良に協力してください」で済んでしまう(相手がよほど偉い人でなければだけど)。

○自分自身もそうなのだけど、レビューアの立場になるとどうしても「何かを指摘しなければいけない」という強迫観念にかられ、どうでもいいようなことを指摘した挙げ句、わけのわからない防御的な記述だけを増やしてしまうという悪いパターンに陥りやすい。しかし、文書作成者とレビューアの立場が同じWikiならば、「レビューアだから何か言わなければ」というしがらみから解放される(もちろん、Wikiだろうと何だろうと他人が読むことをまったく意識しない文章を書く人もいるけど)。

○Wordだと複数人で同時に編集することができない。自動的なマージもできないと思う。

○で、最後の理由。仕様書をいちいち印刷するバカがいるので、強制的に複数ページになるWikiを選んだw はっはっは

2006-10-18

texinfoで仕様書作成

仕事でちょいとしたチュートリアルを作る必要があったのだけど、いきなり本格的な資料を作ってもどうせ読んでもらえないと思ったので、少量ずつメルマガ形式で配布している。

で、元のフォーマットはというと、なんとtexinfo。これを複数HTML形式に変換し、数ページずつ「配信」する。1週間経つと完全なチュートリアルができるという、デアゴスティーニ商法も採用した。
HTMLで文書を配布するというのは多分前例がなくて、Word+Excel文化に毒されている職場にあってはなかなか思いきったことをしたぞとちょっと自己満足。

Project Blackbox

48本SATAディスクが入るマシンを発表した時も思ったけど、最近のSunはおかしい(誉め言葉)。

http://www.sun.com/emrkt/blackbox/

2006-10-15

SolarisとBoehm GC

w3mがよくsegfaultするのでビルドしなおそうとしてみた。
だが、調べてるとw3mだけが悪いというわけでもなく、Boehm GCライブラリとの組み合わせ次第らしい。

w3m-0.5.1と組み合わせてみた場合、gc-6.1, gc-6.2は大丈夫、gc-6.3, gc-6.5, gc-6.8はダメ。gc-6.3はα版がFTPに残ってるくらいなので、なにか大きな変化があったのだろうなあ。

というわけでlibgcをsysvパッケージ化。w3mも順次パッケージ化予定。

交通安全協会

これの続き。

自分が住んでる市の警察署だと運転免許証は即日更新できないのだけど、となりの市の警察署だとOK。なのでそちらで交通安全協会に入会したのだけど、今週になって住んでいる市の協会に登録を移しましたというハガキが来た。
例の個人情報保護法がらみでヤバくね?と思うんだけど、まあ電凸するほどヒマでもないし。でも、blogのネタにはしちゃうw

Spartan 3Eスタータキット うごいた

なかなか動かないのでイヤになっていたのだけど、ようやくSpartan 3Eスタータキットを動かせた。ふー、手ごわかった。
まあ、24ビット分周回路と8ビットカウンタをLEDにつないだだけの、本当に最初の一歩なんだけど。

しかし、FPGAの開発キットってのは規模がでかいよねえ。ディスク上の容量は1GBオーバー、前述の簡単な回路を合成するだけで数十秒。ソフト屋としてはやっぱりソフト作ってたほうが楽かなーというのが実感。

いや、逆にソフト屋がいかにテキトーにもの作ってるかってことの現れかもしれないな。コンパイルしてエラーでたら修正、とりあえず動かしてみて修正、リリースしてからさらに修正… うん、確かに甘いかもw

2006-10-14

改変期

いまさらだけど、ヲタとしては新番組のチェックはしないとなあ。

DEATH NOTE: コミックスは読んだことないけど、キャラも設定も面白い。ちょっと借りてみようかなあ。
Kanon: 噂の京アニ。さすがという感じ。名雪エロい。でも、北川くんがちょっと痛い人になっててかわいそう。
ネギま!?: 噂の新房監督。OPや黒板はいかにも「らしい」演出。ただ、ぱにぽにを連想してしまうんだよなあ。このかが一条さんにキャラ的にかぶってしまうとは思いもよらなかった。
ギャラクシーエンジェる〜ん: OPエロい。GAより全体的に年齢が下がって良い感じ。

2006-10-07

逆正弦定理

猫だっていろいろ考えているんです : 逆正弦定理

RinRin王国経由。逆正弦定理というのは良く分からないんだけど、リンク先のシミュレーションが気になる。


コインの裏、表を出す乱数はC言語のrand()関数を利用した。

と書いてあるからだ。奥村先生の本だったと思うのだけど、rand()関数の乱数としての性能はあまりよろしくないらしい。

まあ、「ツキの法則」はシミュレーションに頼らなくても日常で実感できている(させられている、と言ったほうが正確かもw)から、どんな乱数発生手段を使っても結果は変わらないと思うのだけど。

ところでたまたま前日にJIS Z 9031(乱数発生及びランダム化の手順)なんてのを発見していたのだけど、メルセンヌツイスターアルゴリズムまで載っていてちょっと感心。

P.S. OpenSolarisもglibc(のデフォルトPRNG)も線形合同法だった。

TEXHNOLYZEキターーー

ロボット義手を移植した女性 - Engadget Japanese

うーん、技術/医学の進歩ってすごいねえ。そのうち重いケガをした人だけじゃなく、一般の人もこういう機械のボディを使う攻殻機動隊な時代がくるかもしれないね。

自分としては機械の埋め込みはあまり必要性を感じないけど、頭の中にヘッドフォンを組み込みたいとひそかに思っていたりして。単純作業(仕事含むw)をする時、音楽が流れてないとダメなんだよね。素で電波を受信できる人になってしまうのかもしれないけど。

元記事の
資金の多くを提供しているのはもちろんDARPA。義手や義足を一番欲しがっているのが軍隊であることを思えば不思議はありませんが、どう考えても治療ではない方向の応用も狙っていることは間違いありません

だけど、これもまた映画の世界だなあ… リーサルウェポンだっけ?

2006-10-03

shell-script-mode と outline-miner-mode

バグってるソースをチェックしつつ、コメントをDoxygen形式に変更しつつ思ったこと。

「Emacsのoutline-modeがC/C++の関数に対して使えるとIDEぽくね?」

ちょっと調べてみると、C/C++ではさすがに無理らしい。C-Down, C-Upで諦めますか。
Doxygenの@fnタグをインデントのキーワードにすればできなくはないのだろうけど、そこまでしなくてもいいか。

しかしシェルスクリプトでoutline-modeという、ちょっと見過ごせない技もあるらしい。おもてなしの空間 - shell-script-mode を outline-miner-mode で使う

うは、こりゃ便利だ。さっそく使わせてもらう。デフォルトのキーバインドが少々使いづらいので(C-c @ C-aとかやってられない)、(setq outline-minor-mode-prefix "\C-t")を$HOME/.emacsに追加。

2006-10-02

NetHack用マクロ?

マクロと呼ぶにはおこがましいけど、xtermなどを使う場合に次のリソースファイルをxrdbに食わしてやるとF1キーで登り階段まで移動、F2キーで下り階段まで移動する。いまさらながら_コマンドの存在に気が付いたのでさっそく活用。

*VT100.Translations: #override <Key>F1: string("_<.")\n <Key>: string("_>.")

しかし… なんだかフーンのAAに似ている気がする。

久しぶりにNetHack

2ちゃんのNetHack 地下:32スレで+10武器の作り方が載ってた。

「dartなどが1200本くらい貯まったらまとめて一挙に+7まで強化」…いきなりすごいことをさらっと言われた気が…1200本もダーツ集まるのかなあ。ダーツの罠に延々とかかるのかな?
「120本づつ強化していって、+8になるのが大たい360〜480本くらい。」…dartとは言え+7 dartsを720〜840個壊すのですか…
「次に60本づつ強化(略)+9になるのが経験上120本くらい」… エリートの+8 dartsがさらに1/3〜1/4に…
「ここから5本づつ強化(+10になる確率は1/80らしい)」… 1〜2本程度しか残らないのですねorz

後は+10 dartを祝福して1本ずつpolymorphするのだそうだ。はぁ〜、あまりの難易度にため息が出そうw
ひとまずプリン祭で遊べるレベルにならないと… そういえばプリン祭も初めて知った時は感心したよなあ…

で、これに刺激を受けて久しぶりにNetHackをプレイ。うーん、面白いなあ。ゲヘナまではw
若干キー操作を忘れていたけど、すぐに復活。

なんというか、現実の生活にいっぱいいっぱいな時期に無性にやりたくなるんだよね。現実逃避としてぴったりなのだろうか。

2006-09-25

フルーツバスケット 21巻

運転免許更新の返り道購入。
「そういえばフルバの20巻まだかな〜」と思って書店に寄ってみたら、なんと21巻まで出ていましたとさ。
ストーリーが急転回なんてもんじゃなく進んでて、ちょっとびびった。
22巻で終わってしまうのかなあ… ちょっとさびしい。

苺ましまろは相変わらず新刊なしのようで。

Xilinx ISE

XilinxのISEをちょぼちょぼ触ってはいるんだけど…

4ビットカウンタすらシミュレーション動きやしない… orz

何が悪いんだろう? クイックスタートガイドを絶賛参照中。

欝欝欝

最近会社が忙しい。
特許にカイゼン活動にコストダウン活動に検査活動に仕様書レビューに検討会にチーム活動検討に…

それでもそれなりにはこなしてはいたんだけど、某マネージャ(元上長)から社内試験の小論文の準備をしておくようにと言われ、一挙に欝に。
文章を書くのもデータをまとめるのも嫌いじゃない、いやむしろ好きなほうではあるんだけど、それもちゃんと理解してくれる人がいてこそなんだよね。
QC活動あたりから派生した「科学的手法」と称する疑似科学的なロジックを使わなければならないというシバリがあるので、やりづらいことこの上ない。ただの技術報告書作成だったらどれだけ楽なことか。

あー、めんどくさ orz...

運転免許更新

金曜日に午後半休を取り、警察署で運転免許を更新しにいった。

証紙は交通安全協会で売ってる、という張り紙があったのでいってみたら…

入会しちゃいました、警察OBの天下り機関交通安全協会にw

「書類の記入もこちらでしますよ、地域の交通安全活動に寄付しますよ」とうまいこと言われたんだけど、そんな難しい書類でもなかったし、こりゃ一本取られたなって感じ。優良運転者なので5年ごとしか用はないんだけど、昔住んでた東京都の公安委員会はそんな怪しい勧誘はしなかったぞー > 神奈川県公安委員会様

2006-09-20

安いPC

製造業においてコストダウンを図るには、という永遠の課題をなぜか押し付けられて(という表現も良くないのだろうけど)いる。
当初検討メンバを集めた際には「若い人の柔軟な発想で」とかうまいこと言っておきながら、中間レポートを発表(発表自体は代表の人がやったのだけど)したらまるで他人事のように批判しまくり。ぐぁー、理不尽だw

そもそも金勘定はおたくらお偉いさんの仕事でしょと言ってやりたいが、それはさておき特に気になった点。

こちらが「某PCベンダが価格破壊が出来たのは信頼性の低い部品を使った…」と触れたところ、勉強が足りないととりあわない。これは数年前に某メーカが国産メーカを蹴散らして躍進していた時期、新聞で紹介された話だったんだけどね。一般には、某メーカの安さは優れたサプライチェーンマネジメントの賜物であるという解説がされていて、それは決して嘘ではないんだけど、「その程度のこと」はどこのメーカでもできているわけで。

偉い人にとっては、自分の使っているペコペコに安っぽいキーボードや、memtest86をかけるとエラーを出しまくるメモリや、部品不良の電話をかけると怪しい日本語でいやにすぐ交換を手配してくれるサポート部隊という現実よりも、日経ナントカの記事のほうが信頼に足ると思ってるんだろうなあ。日経ナントカが取材に来るたび、広報部が「あの記事のこの部分は記者の推測であり事実と違います」と社内報で否定しまくっているのを知らないではないだろうに。

余分な話はさておき、「信頼性の低いソケットを使っている」というようなネガティブな話のソースはなかなか見つからないものだなあと実感。だから、たとえブレーンストーミング的な議論の中から出てきたこととはいえ、ある程度フォーマルな場にもっていくには裏付けがなさすぎた。それにそもそも日経ナントカを批判するなら、自分自身も「信頼性の低いソケット」のウラを取るべきだった。

ヒマな老人に翻弄されないように、次回はもちっと賢く振る舞おうか。

4年モノ

会社で4年モノのバグを発見した。
正確に言うと、他機種に移植されたあと、そこで出たトラブルの原因候補として残ってしまった。

少し前に「これは理論的にはアブナイかもしれないな」と気が付いていて、いつか直そうと思っていたのだけど、自担当の機種では何の問題もなかったので、何もしないでいたら、結果的には他の人の手を煩わせることになってしまったと。ショボーン

ま、黙ってパクっていったあいつらもあいつらだけどな ← 見苦しいぞ

まあ仮に発現したとしても爆発したり発火したりといったものではないし、そもそも発現したことすら一度も確認されていないわけだけど ← さらに見苦しい

ただ、当時はなんとも思わなかったけど、今見れば一瞬でアブナイと分かるようになったわけで、まあ1つの性徴成長なのかなと。

今後はすぐに直します。ごめんなさい。

TOEIC受けた#3

TOEICの続き

採点結果返ってきた。650点。ぐはw
ある程度は覚悟していたけど、ここまでスコアが急落するとは思わなかった。予想外に欝だ…
苦手なリスニングはpodcastの英会話番組を聞いてちょっといける気がしていたのだけど、結果は平均点を下回る始末。いやはや。

しかし、やはり点が出てしまうと「次回は頑張ろうか」と思ってしまう自分が悲しい。嗚呼、哀れなり団塊ジュニア世代。

2006-09-12

Java DWARF Reader #2

Java DWARF Readerの続き

チューニングを施したところ、実行時間は約25秒から5秒弱にまで減少。ヤター

分かったこと1: やはり配列とArrayListは速い。Map(HashMap)は遅い。
分かったこと2: byte[]からStringへ高速に変換するには、deprecatedなコンストラクタ(String(byte[] d, int hibyte))を使うしかない。もちろん7ビット文字集合である必要がある。符号化系に対応すると、非実用的なほど遅くなる。

あとメモリ消費量も相当になってしまったけれど、これはどうしょうもないのかなあ。

2006-09-10

Java DWARF Reader

ELF情報を読むクラスは作ったので、DWARFリーダに挑戦。

とりあえず.debug_abbrevと.debug_infoを読むところはできた(階層構造を復元したり、型の名前を復元したりするところはまだ)。
ただ、実行速度が遅いのでちょっとがっかり。14.5MB(デバッグ情報は10MBくらい。でかいなあw)ほどの実行ファイルを解析するのに25秒くらいかかってしまう。

そこでJavaのプロファイラを探してみたのだけど、NetBeansと組み合わせて使えるものが出ていたのね。ついでにバージョンも4.1から5.0に上げておいて、さっそく計測〜
測定手順は思っていたよりは遥かに簡単。ていうか、Javaはデバッグ機能もろくに使ってない(printlnデバッグがメイン)から、妙に感動してしまった。
で、20-80の法則とまではいかないけど顕著なボトルネックがあったのでさっそく改造予定。

Spartan 3Eスタータキット

前に書いたように、Spartan 3Eスタータキットを買ってみた。

注文したのはマルツパーツ館。他の商社っぽいところは支払いや配送方法をいちいち営業に聞かないといけないためパス。値段も同じだった。

で、8日の深夜に発注して10日15:00には郵便屋さんが届けにきてくれた。はやっ! 素晴らしい>マルツパーツ館&郵便局。

ただ、残念ながらヘッドホンをしていたため、チャイム音が聞こえずにお預かりとなってしまった orz
カナル型の遮音性能の高さに改めてびっくり。これをして毎日通勤してるんだから危ないよなあw

2006-09-08

Verilog HDL

これに影響を受けて、ここ数日Verilog HDLのことを調べていた。

参考になったのは次のところ:

ソフト屋にとってはVHDLより扱いやすい気がする。でも、もしかすると上記サイトの説明がうまいだけかもしれないw

XilinxのSpartan3Eのスタータキットでも買って遊んでみたいなあ…

でかっw

CG定点観測さん経由secretlyさん

2006-09-06

携帯音楽プレーヤ

現在携帯音楽プレーヤとしてCreativeのMuvo^2(1.5GB)を使っている。USBでつないだ時に時々I/Oエラーを起こすのが気になっていたけど、いったんデータを転送できてしまえば不満はない(むしろMDやカセットの時代より音質的にはずっと満足)。ただ、たまたまApple製品のキャンペーンが始まってiPodが1000円くらい安く買えるため、ちょっと買い換えを検討しはじめた。

まずAppleのiPod nanoだが、値段が高いことを除けば割といい線を行っていると思う。だが、数GBあれば十分なのでHD型のiPodはパス。東芝のgigabeatは安いがちょっと容量がムダに大きい気がする。Creativeは少し高い気がするし、Muvoユーザとしては同社製品は信頼性がイマイチな印象が拭えない。

で複雑なのがSONYで、メモリ型はAppleより安いのにむしろ逆に割高な気がしてならない。カラー液晶とブランド力の差だろうか。HD型は値段も容量も手頃なのだけど、曲線的なデザインが気に入らない。そしてソフトの評判が極めて悪い。立ち位置としてはAppleに近いはずなのに… 音自体や電池の持ちは良いらしいので、Sonic Stage次第かなあ。

意外なところでPanasonicがSDカード型のを出していて、ちょっと興味を引かれた。本体約8000円で、メモリが1GBで約3000円。もしUSBマスストレージとして使えるならなかなかオトクな気がする。

というわけで、Apple iPod nano, SONY, Panasonicあたりで検討中…

ついでにヘッドフォンも検討中。今SONY MDR-EX51SPを使っているのだけど、ケーブルが裂けてかなり恥ずかしい状態なので。
上をみればきりがないので、audio technicaのATH-CK32かATH-CK5かATH-CK7、あるいはもう一度SONYのMDR-EX51SP(ケーブルが丈夫になったらしい)かMDR-EX71SLあたりかなあ。

2006-09-05

サイエンス チャンネル

CATV世帯なので、ヒマな時はCATV会社が流した番組を見る。いや、もう今はほとんど見てないから「見ていた」とするべきか。

その中でひそかに楽しみにしていた番組が「サイエンス チャンネル」の「THE MAKING」シリーズ。なんでも科学技術振興機構という団体が無料でCATV各社に提供しているらしい。まあCATV会社としては通販番組と同列の穴埋め的な埋め草として使っていたのだろうけど、むしろそれらのほうが視聴の主目的だった視聴者もいたわけだ。

で、最初はCATVで見ていたのだけど、ネット経由でストリーム放送していると知ってからはサイトに直接アクセスしてバックナンバーを楽しんでいた。

ただ、マシンが変わったり忙しくなったりでちょっと間が空いてしまったため、一気に遅れを取り戻すべく特殊な手段でrmファイルをほにゃららしようとして、サイトを久しぶりに訪れてみた。

「ん、"スカイガール"? 航空力学になぜか興味を持つ女子小学生でも出るのか? これは見なければ!」と思い、さっそくクリック。すると驚愕の宣伝文句が目に飛込んできた…
小倉優子が演じる主人公、夢野なぎさは夢野質店の一人娘。彼女の夢は立派なキャビンアテンダント(CA)になる事です。ちょっぴりドジだけど、ひたむきに夢に向かってがんばるなぎさの一生懸命な姿と、彼女を取り巻く人達の模様を明るくコミカルに描きながら、航空産業や私たちの身近で利用されている放射線の応用技術を紹介していくコメディドラマです。

うわー、見たいような、見たくないような…w でもなかなか飛ばしてくれそうな感じなので、SolarisにReal Playerを入れたらまっさきに見てみよう。

ちなみにこのシリーズを見ようと思ったのはあくまで科学的興味によるものであって、女子小学生がでてくるかと期待したからでは(以下略

Java Workstation W1100z

サン・マイクロシステムズ - Sun Java Workstation W1100z

ああ、そういえば今使ってるマシンは"Java Workstation"だったっけ。すっかり忘れていたw

なんだか最近Firefoxを使っているとswapが激しい。CPU自体は比較的idleが多いので、メモリが足りなくてI/Oで時間を食っているらしい。
メモリの価格を調べてみたが、ノーブランドで7286円ほどらしい(PC3200 ECC Registered 512MB)。実際には2枚単位で増設なので、さらにその倍。高いなあ… orz

2006-09-04

OpenSPARC T1 Version 1.3 Released

OpenSPARC T1 Version 1.3 Released
In version 1.3 exectuables are added for Solaris 10/X64 and Linux/X86 and a new addition is Open Boot PROM (OBP) source code.


ということで、OBPのソースまでついてくるのだそう。ほほう、と思ってさっそくダウンロード。

だが、Verilogはわからんなあ… トラ技のCPLDの付録でちょっとVHDLはかじったのだけど。
学生時代に8ビットCPUをVerilogで設計・実装したのだけど、もう10年も前になるので全然覚えてない。ははは。

ところでNiagaraとNiigataって似てるよね。

2006-08-30

法事につき帰郷

親族の葬儀のため、午前のみ会社に行き、その後あわただしく帰郷。疲れたなあ...
親族ばかりの式ではあるけど、知らない顔ばかりで将来自分が喪主になった場合にどうしたものかと今から不安だ。まあ、両親ともに健在であり、いまのところ取り越し苦労で済んでいるのがありがたいところなんだけど。

ところで、自分が幼かった頃は公民館や自宅を使う場合が多かった気がするが、いつの頃からか宿泊施設付きの会場を借りて通夜や告別式をやるようになった。これはこれで非常に便利で、時代は変わるなあと思うんだけど、一方で仏式がデフォルトってのは容易に変わらず、ちょっと不思議。

自分は無宗教式がいいなあ。そして墓石にはNetHack風にR.I.P.を刻んでほしいw ああでも貯金額まで書かれてしまうのは嫌かな... はは

仏教

そういえば、タイでは男子は一生に一度は僧侶になるほどの仏教国(たしか国教が仏教)だけど、タイから来ていた留学生が日本の仏教にいろいろ驚いていたっけ(僧侶が結婚することや、簡単に肉食してしまうこと等)。
(留学生といえば、日本からはるばるメッカを律義に拝礼するイスラム教徒の留学生も印象深かった。習慣とはいえ)

たしか高校のときにインドから日本に至る仏教の伝播の話があったはずだけど、見事に覚えてないねえ... いや、思い出したところで、葬式に来る僧侶にそのネタを振っても困るだろうけどw

2006-08-28

lifehack

最近、lifehack系のネタを良く見かける気がする。といっても、次のサイト(どちらも同じ人)や本屋の品揃えだけでしか判断できないのだけど。まあ、新人君に教えてあげるのにちょうどいいかな。

ITmedia Biz.ID:シゴトハック研究所
シゴタノ!!

CNET Japan Blog - 佐々木俊尚 ジャーナリストの視点

CNET Japan Blog - 佐々木俊尚 ジャーナリストの視点:「これを読めばすべてわかるっていうブログはないんか?」

おじさんはポータルがお好き、という結論はちょっと判断できないんだけど、次の分析は言われてみると実にもっともだ:
新聞という紙のメディアが好きな中高年は、わざわざ紙のメディアをパソコン画面で見たいとは思わないし、30代前半以下のネットの世代にとっては、新聞の記事なんていうのは新聞社のサイトでマイクロコンテンツ化されたものを読めばいいわけであって、わざわざ紙のイメージのものを読むメリットはまったく感じていない。
Wordで200MB近い開発資料を12人の開発メンバに紙で配布させようとしていた年上の同僚(40代半ばかな?)を思い出して妙に納得。メモメモ。

個人的には、活字や紙媒体というものへの愛着は年上世代に負けているつもりはない。若い時に読んで感動した本はいまでも大事に取ってあるし、電子書籍で買い直すつもりもない(たとえBookOffで買うことはあっても)。けれども、特に仕事で使う資料を紙に出すとなると強い抵抗感がある。我ながらこの差はなんだろうね?

ところで、新聞の内容を低価格で提供するサービスがあるというのは初めて知ったのだけど、これはなかなか魅力的じゃないだろうか。うるさい拡張団も来ないし、重い新聞紙の束を捨てに行かなくてもいいのは素晴らしい…ってそっちかよw
とはいえ、読む時間ない、紙面がイデオロギーで片寄っていることが多い、当用外漢字を使ってない、科学技術関係の記事が正確ではないことが多い、であることを除けば、ちょっと購読してみようかという気になるサービスだ。

2006-08-27

ウィルコムファン W-ZERO3: 第1回 アプリケーションの開発環境を構築する

ウィルコムファン W-ZERO3: 第1回 アプリケーションの開発環境を構築する
willcom-fanでアプリケーションの開発環境の構築方法の連載が始まった。すばらしい。

HotfixIntegrationInst

HotfixIntegrationInst - PukiWiki

Windowsのホットフィックス適用済みインストールCD作成の情報。
非対話型インストーラが作成できると分かっていても、あちこちぐぐらないと手順が分からない。情報がまとまってて便利そうなのでメモ。

2006-08-26

送別会

O君の送別会。家の事情で埼玉の事業所に移動するとのこと。
DSをプレゼントされてたけど、実は実物がまだ入手できてなくて、ひとまず空箱のみ贈呈w

TOEIC受けた #2

Fansubもいいんだけど(いいのか?w)、よくかんがえたら「もえたん」もいいかも。
今読み返してみると、特に初代のは無理な文が多い気がするんだけど、モチベーションを維持するには悪くない。
ただ、もえたん3まで手を出すかはちょっと…

あとは英訳コミックですか。CCさくらとフルーツバスケットくらいしか知らなかったのだけど、Amazonを覗いてみるとOne Pieceやらドラゴンボールやらいろいろあるようで。苺ましまろがStrawberry Marshmallowだというのも初めて知ったよ。だが、$9.99/\1100はちと高いぞお orz...

2006-08-23

TOEIC受けた

TOEIC受けた。
といってもIPテストというやつで、certificationがもらえるやつではない。
周囲の傾向をみると若い人のほうがスコアが高い傾向があるので、やはり使わないとどんどん英語力が落ちていくものらしい。入社時(1999年)に受けさせられた時が660点、1年後に上司にだまされて受験した時が730点。それから6年経っているので、どれくらいスコアが落ちているかちょっと見ものかなと。

前回のスコアはソフト屋としては悪くない程度だとは思うんだけど、最後に英語教育を受けたのが大学1年の一般教養(1993年)なので、考えてみるとUNIX関係の調べものだけで得た英語力なのかなと。仕事では使わないし、英語を使う地域に行ったこともないし、英会話教室に行くとか洋楽を聞くとかもない。なんだか誇りにしたい気もするけど、微妙に間違っている気もするw

まあ、これを商売にするほどには高いスコアではないし、そもそも仕様書英語でしかなく、リスニングが激しくニガテという自覚もある。きっと語彙も片寄ってるんだろうなあ。serial experiments lainのムックや"Catcher in the rye"もずっと歯が立たないまま放置してあるし。

ヌルヲタとしてはFansubで生きた英語を勉強してみましょうかね? うはww

ハードウェアオーバレイの質問 (bt848x)

パキスタンに在住とおぼしき方から、ハードウェアオーバレイの質問をもらった。
オーバレイを使っているとスクリーンキャプチャできないが、なんとかこれを回避することはできないだろうかという内容。

自分なんぞが答えて良いものだろうかとは思いつつ、通常のRGBプレーンとは別の場所だからうまく読み込めないだけで、ビデオサブシステムを良く研究すればできるかもよという旨のお返事をしたためた。

まあ微妙に専門外(SourceForgeでメールアドレスを見たらしいのだけど、あれはビデオキャプチャであってスクリーンキャプチャのプログラムではない)だけど、まあいいよねw 実際、ビデオビューアはビデオカードのハードウェアアクセラレーションを生で使ってるし。

2006-08-22

Java ELF Reader

JavaからELF32フォーマットのファイルを読むクラスを作成中。
仕事でルネサスのSH-Cコンパイラを使っていて、これが実行ファイルをELF+DWARFで出力する。もしこの情報が読めれば、ログビューアから変数の読み書きが可能になる。

で、ELFは意外と簡単な感触。ELFヘッダ・プログラムヘッダ・セクションヘッダの3種類のヘッダと、シンボルテーブルの構造を理解すればいいだけ。

それに対し、DWARFはいろいろ難しそう。タグづけされたデータを階層状に復元する必要があるらしいのだけど、どういうデータで表現すれば良いのやら…

SMART on Solaris/x86 #6

前回の続き。

コマンドを詰めた部分をクリアしないようにしてもう一回チャレンジ。するとカーネルパニックw

PIOを使うとなぜかバッファの実体が割り当てれず、そこでzero page dereferenceになるらしい。メモリを要求してそこにレジスタのリード結果を格納し、パニックを回避するのは簡単だけど、それじゃユーザ空間にデータを渡せない。ap_v_addrを設定する場所を洗い出さないと…

2006-08-21

はやてフィギュア

ワンダーフェスティバル2006夏・一般ディーラー編その2 フィギュア注意報/ウェブリブログ

RinRin王国経由、フィギュア注意報さん。
なんとはやてのフィギュアを出品したディーラーさんがいたらしい。ううう、これは欲しい、欲しいぞぉ…

2006-08-20

会社の夏祭り

勤務している会社には夏祭りというものがある。敷地を解放して、芸人のステージと屋台と花火をお客さんに楽しんでもらおうというもの。そこそこ規模は大きく、自分が小学生だった時の町内祭くらいの人は来ている。もっとも会社関係者の家族サービスの面もなきにしもあらずw。金曜日はこれに駆り出された。

雑事は新人君があらかたやってくれたので、どちらかというと単純労働力を提供した程度。裏方でバルーンアートの作成と、屋台の出し物のフランクフルトの焼き係を担当。高温の油に手を突っ込んだりもしたが、めちゃめちゃお客さんに来てもらったので久しぶりに充実した夏祭りになった。

ただ、忙しすぎてトリの花火がほとんど見られなかった orz... あれのために組合費を払っているようなものなのにwww

SMART on Solaris/x86 #5

前回のさらに続き。

定義されていない関数はstrategyドライバに含まれていることがわかり、OpenSolarisのもので置き換え。

すると、おお、きましたよ! ioctlが拡張されてますよ!?

んが、すぐに問題発覚。生コマンドをATAコントローラに投げてはいるんだけど、すべてコマンドがアボート終了になってしまう。調べると、COMMANDレジスタに常に0が入ってしまう模様。でさらに調べると、cmdkioctl()中でstruct rwcmdのstatusフィールドを0クリアしていることが判明。だからCOMMANDが0なんだね orz...

2006-08-17

SMART on Solaris/x86 #4

さらにこれの続き。

ataドライバとdadkドライバ(どちらも改造版)だけじゃだめで、cmdkドライバ(無改造だがOpenSolaris)もさらに交換。

Aug 17 22:50:42 etta genunix: /kernel/drv/cmdk: undefined symbol 'cmlb_alloc_handle'
Aug 17 22:50:42 etta genunix: /kernel/drv/cmdk: undefined symbol 'qsort_create'
Aug 17 22:50:42 etta genunix: /kernel/drv/cmdk: undefined symbol 'qfifo_create'
Aug 17 22:50:42 etta genunix: /kernel/drv/cmdk: undefined symbol 'cmlb_partinfo'
Aug 17 22:50:42 etta genunix: /kernel/drv/cmdk: undefined symbol 'dsngl_create'
Aug 17 22:50:42 etta genunix: /kernel/drv/cmdk: undefined symbol 'dmult_create'
Aug 17 22:50:42 etta genunix: /kernel/drv/cmdk: undefined symbol 'cmlb_detach'
Aug 17 22:50:42 etta genunix: /kernel/drv/cmdk: undefined symbol 'cmlb_attach'
Aug 17 22:50:42 etta genunix: /kernel/drv/cmdk: undefined symbol 'cmlb_invalidate'
Aug 17 22:50:42 etta genunix: /kernel/drv/cmdk: undefined symbol 'cmlb_get_devid_block'
Aug 17 22:50:42 etta genunix: /kernel/drv/cmdk: undefined symbol 'cmlb_ioctl'
Aug 17 22:50:42 etta genunix: /kernel/drv/cmdk: undefined symbol 'cmlb_free_handle'
Aug 17 22:50:42 etta genunix: /kernel/drv/cmdk: undefined symbol 'cmlb_validate'
Aug 17 22:50:42 etta genunix: WARNING: mod_load: cannot load module 'cmdk'
Aug 17 22:50:42 etta genunix: WARNING: cmdk: unable to resolve dependency, module 'misc/cmlb' not found

うはwww cmlbドライバは無印Solarisにはないので、単純に追加。そのうちディスクサブシステムをまるまる入れ替えることになるんじゃないだろうか。

Aug 17 23:07:16 etta genunix: /kernel/drv/cmdk: undefined symbol 'qsort_create'
Aug 17 23:07:16 etta genunix: /kernel/drv/cmdk: undefined symbol 'qfifo_create'
Aug 17 23:07:16 etta genunix: /kernel/drv/cmdk: undefined symbol 'dsngl_create'
Aug 17 23:07:16 etta genunix: /kernel/drv/cmdk: undefined symbol 'dmult_create'
Aug 17 23:07:16 etta genunix: [ID 472681 kern.notice] WARNING: mod_load: cannot load module 'cmdk'

先生、そろそろカンベンしてください… orz

SMART on Solaris/x86 #3

前の話題の続き。

non-data, PIO-read, PIO-writeの3種類のプロトコルを使い分けなければならない時点で、何かの関数を単独で置き換えるだけではダメだという結論になった。
いろいろ考えてみたが、DIOCTL_RWCMDという直接入出力(セクタ番号指定でR/Wできるioctl)機能を拡張してやるのがいいかなと。非常に都合が良いことに、このioctlを発行する際にCOMMANDレジスタやFEATURESレジスタに格納する値を滑り込ませることができる。

んで、OpenSolarisから持ってきたata_cmd.h, ata_disk.[ch], dadk.c, dadkio.hあたりを書き換えて、改造版ドライバを作成してみた。初めてOpenSolarisのモジュールをコンパイルしてみたので、いろいろ苦労したのだけどそれは省略。

さて、Solaris10(1/06)のataドライバとdadkドライバを改造版に差し換え、ネットブート… devfsadmしてデバイスファイルを再作成してみると… あ、あれ、/dev/rdskの下が空っぽだww
なんでも、PCIコンフィギュレーション空間にアクセスする関数の実体がないのだそうで、さっそくOpenSolarisとSolarisの違いを見せ付けられたかたち。

で、アダプタ関数を追加してリブート… おお、こんどはデバイスファイルは作ってくれた。んが、

Aug 13 15:52:13 etta genunix: IDE device at targ 0, lun 0 lastlun 0x0
Aug 13 15:52:13 etta genunix: model ST315320A
Aug 13 15:52:13 etta genunix: ATA/ATAPI-4 supported, majver 0x1e minver 0x0
Aug 13 15:52:13 etta genunix: ata_set_feature: (0x66,0x0) failed
Aug 13 15:52:16 etta pci: PCI-device: ide@0, ata0
Aug 13 15:52:16 etta genunix: ata0 is /pci@0,0/pci-ide@11,1/ide@0
Aug 13 15:52:16 etta genunix: UltraDMA mode 2 selected
Aug 13 15:52:16 etta cmdk: WARNING: cmdk_create_obj: ERROR creating target disk dadk
とエラーになってしまう。当然、正常にI/Oを行なうこともできない。うーん、困った困った。

2006-08-12

smartmontoolsのC++化

smartmontoolsのプロジェクトでソースのC++化をすることになった。
そもそもの発端は忘れてしまったwけど、Windowsかなんかでメリットがあるとかなんとか。
Factory Methodパターンを使って各種OS各種RAIDコントローラにもスマートに対応できるようにもなるよね、というのもあるらしい。
個人的には出力フォーマッタを取り替えられるようにすると面白いと思う。XMLを吐けばそれを使ってくれるアプリありそうだし。

というわけでSolaris用の変更点をコミット。キャスト周りとコンパイラのオプションの変更のみ。

リリカルはやて

昔の日記にも書いたけど、なのは第3期をやるらしい。
しかもはやてメイン。素晴らしい、としか言いようがない!

まあ、何年後の世界になるのかが気になるところではあるけど、少なくともはやては6年後世界でもあんまり外見変わってなかったから、バリバリ魔法を使うところが見られて、騎士達との日常も描かれてればきっと満足かなと。

正直、なのはさんは魔法的にも精神的にも強くなりすぎてしまって、話として面白いかはちょっと不安な点がある。フェイトはフェイトで新しい家族を得て幸せそうなところは是非見てみたいんだけど、そうなるとクロノを兄や…じゃなかった、お兄ちゃんと呼ぶシーンは避けられないわけなので、相当複雑な気分w

後は… 残された謎というと、ロストロギアそのものの成り立ちやユーノ君の生い立ちあたりか。はやて+ユーノがロストロギアの謎を追っていると、それを悪用しようとする勢力とぶつかることになってなのはとフェイトが応援に逝く… というストーリーなどいかがでしょうね。ギャグに振ってしまうとギャラクシーエンジェルかよって感じだけどw

2006-08-10

SMART on Solaris/x86 #2

前のエントリの続き。

なんとかなりそう、と思ったけど甘かった。I/Oを叩いただけで操作が完了するのはnon-dataプロトコルだけ。で、SMARTにはさらにPIO readとPIO writeのプロトコルを使うものがある。何も考えずにI/Oを叩いてしまうと割り込みが発生し、ステートマシンがおかしくなる可能性がある(良く調べると、ata_disk_ioctl()からはnon-dataプロトコルしか発生しないのね… orz)。

じゃあ割り込みを一時的に無効にすればいいのかとも思ったけど、ATAコントローラの割り込み有効設定はマスターとスレーブで共通で、どちらもデバイスが接続されている場合はえらいことになってしまう。うーむ、どうしたらいいものか。

こうなったら、通常の読み書きと同等(ただし常にPIOプロトコルを使い、レジスタ設定もユーザ指定値を使う)の処理を行なうルーチンを設けなければならないようだ。

さて、通常の読み書きと言ってもなかなか難しい。cmdkデバイスはパーティションテーブルを考慮するので、ディスクそのものよりは一段抽象的なレイヤにあるからこれをいじるのはちょっとおかしい。
となると、対象となるのはdadkデバイスだろう。dadkデバイスは、devfsツリーでは出現しない(pci-ide→ide→cmdkなので)が、なぜかディスクを表現することが可能な不思議なデバイスである。
特に、dadk_ioctl(DIOCTL_RWCMD)や、cmdkread()からcmdkstrategy()経由で呼び出されるdadk_strategy()があやしい。例えば、struct uioやstruct bufをでっちあげて、それに対してあたかもcmdkstrategy()が呼んだかのごとくdadk_strategy()を呼び出してやればいいのかなと。

ただ、dadk_strategy()はGHDという良く分からない仕組みに深く関わっているし、dadk_ioctl(DIOCTL_RWCMD)→dadk_dk_buf_setup()→dadk_dk_strategy()→dadk_dk()と呼び出していくうちにやはりGHDにぶつかってしまう。うーむうーむ。

2006-08-08

SMART on Solaris/x86

/var/crash日記: OpenSolarisのバグデータベースとSMARTの続き。

ata_common.cとata_disk.cをつらつら眺めてみて、こんなシナリオはどうだろうというのを考え付いた。

  1. ユーザから渡されたcmdとargはdadk_ioctl()内でもそのまま保持されてる。もしcmdに入っているコマンドがdadk_ioctl()に理解できず、かつデバイスがリムーバブルメディアでないとすると、cmdとargを引数としてata_disk_ioctl()が呼ばれる。
  2. ata_disk_ioctl()ではPIOデータ転送パケットpioを確保してやり、ata_queue_cmd(ata_pio_in, pio, ata_ctlp, ata_drvp, gtgtp)を呼び出してやる。
  3. するとata_ctlp->ap_v_dataにpioのアドレスが入ってからata_pio_in(ata_ctlp, ata_drvp, ata_pktp)が呼ばれる。
  4. ata_pio_in()ではata_id_commin()似のPIOデータ転送を行なう(ata_id_common()だとCOMMANDレジスタ以外のレジスタが設定できないし、ata_command()はnon-data用の関数なのでデータ転送を行なう前にSTATUSレジスタを読んでしまう)。ata_pio_in()にはata_ctlpが渡せるので、そこからpio、すなわちSMARTデータ用のバッファのアドレスを得ることができる。作業が終わったら、ATA_FSM_RC_FINIを返してFSMに状態遷移を起こさせる。
完璧? 話のつじつまはあいそう。ただ、ata_command()もata_id_common()もata_disk_*_pio_in()すらも使わないのはちょっとカコワルイ。
それに仮にこのやり方がうまく逝ったとしても、ataドライバはかなり変更が大きいところなので、Solaris/x86のものをOpenSolarisベースのものに置き換えて大丈夫かはかなりギャンブルだと思う。外部インターフェースがそうそう変化しないことを祈るか、でなければobjmgrを使いこなすかか。
あと、OpenSolarisのコンパイル方法を調べておかないと…

2006-08-06

SolarisでのUDFと日本語ファイル名

ユニバーサルディスクフォーマット - Wikipedia

Solarisでは日本語のファイル名をサポートするファイルシステムはufsとnfsしかなく、pcfsとhsfsでは存在すら無視されてしまう。ファイルのバックアップをCD/DVD-R(W)に保存する場合は看過できない問題だ。

そこでUnicodeでファイル名を保存するUDFに目をつけた。

# mkfile 300m foo
# lofiadm -a `pwd`/foo
# /usr/lib/fs/udfs/mkfs /dev/rlofi/1
# mount -F udfs /dev/lofi/1 /mnt
# touch /mnt/日本語のファイル名
touch: /mnt/日本語のファイル名 を作成できません。

くそっ、妙にエラーメッセージが腹立たしいww

追記: これ、EUC-JPでのエンコーディングでファイルを作成しようとしていたからだった。UTF-8なエンコーディングを使うとファイル作成もOK。素晴らしい。

ただ、localeもgnome-terminalもEUC-JPで生活してるからなあ… 後は思い切りだけの話かなあ…

Amazonでメイド服(続)

Amazonでメイド服を扱っていることは先日記したとおりだけど、「入荷予定」のものも多かった。しばらく経ったので在庫はどんなものかなあ… と覗いてみたら。

ほとんど在庫切れかよ… orz
いや、最初から入荷してないのかもしれないけど、ロングテールの見本みたいなAmazonでそれはないだろう。ということは、やはりヲタが大挙して買い占めてしまったとしか考えられない。夏のお祭りも近いしねw

2006-08-05

OpenSolarisのバグデータベースとSMART

Bug ID: 4665068 SMART support in IDE driver

記載内容が「SMART support required in IDE driver」ってのもすごいよなあ…

で、なんでこのバグ(?)を見つけたかというと、Solaris/x86+ATAでsmartmontoolsを動かしたいという人がMLで参加表明をして頂いたため、現状でできない理由を説明するためにいろいろ検索していたら出てきた。つーか、2002年から放置プレイかよ orz...

Solaris/x86+ATAでSMART情報を利用できない理由は簡単で、単にカーネルがサポートしていないから。いや、Solaris/SPARCやその他のOSでSMARTが明示的にサポートされているわけでもないんだけど、任意のコマンドをディスクに送る機構が備わっていればそれが代わりになる。

で、そういった任意コマンド送信機能を追加するにはどうすればいいかというと、おそらくataドライバに手を入れるしか手段がない。けどまあこれは理論上可能であるというだけで、自分は実行できる知識がないんだ… と前述の人には伝えておいた。英語が通じてればだけどw

ちなみになんでサポートしてないと言い切れるかというと、DTraceで実行フローをおいかけてみてそれを処理している部分がないことをOpenSolaris(公開)とSolaris8 Source Foundation(非公開)で確認しているから。DTraceを使ってカーネル内の関数呼出しをおいかける方法は以下の通り。

まず、トレース対象となる関数を決める。ここではcmdk(Solaris/x86のATAディスクドライバ)のioctl(9e)関数である、cmdkioctl()とする。
次はこのようなDスクリプトを書く

int traceme;
fbt::cmdkioctl:entry { traceme = 1; }
fbt::cmdkioctl:return { traceme = 0; }
fbt::: /traceme/ { trace("\n"); }

スレッドをまたがっても追い掛けられるようにtraceme変数はグローバル変数にした。ただ、若干ノイズが入る懸念はある。
例えばこれをfoo.dという名前で保存したとすると、rootになってdtrace -Fs foo.dとする。さらに別コンソールから、cmdkデバイス(/dev/rdsk/cXdXpX)をopenし、それに対してioctlを発行するプログラムを実行する。実行例はこんな感じ(空行は除いてある)

# dtrace -Fs foo.d
dtrace: script '/xxx/foo.d' matched 48212 probes
dtrace: buffer size lowered to 2m
CPU FUNCTION
0 -> cmdkioctl
0 -> dadk_ioctl
0 -> ata_disk_ioctl
0 <- ata_disk_ioctl
0 <- dadk_ioctl

で、後は呼ばれた関数をOpenSolaris.orgのソースブラウザで追っ掛ければ良い。

NHKにようこそ

NHKにようこそ

N・H・Kにようこそ!

2006-08-04

manコマンドでいらないセクションを検索しないようにする(Solaris)

/usr/sfwの下にいろいろいれてみたり、Sun Studioを入れたりすると、いろいろ余分なマニュアルページが入ってしまう。すると、例えばman openするとTcl/Tkのopenがひっかかったり、man forkするとFORTRANのforkがひっかかったりするようになり、うっとおしいことこのうえない。

マニュアルページが置かれるディレクトリにman.cfというファイルをつくり、MANSECTS=検索対象のセクション名と書いてやればmanコマンドが探すセクションを制限できるらしい。

例えば/opt/SUNWspro/man/man.cfに
MANSECTS=1,3,3c++,3cc4,3m,3p,3pi,3x,4
/usr/sfw/man/man.cfに
MANSECTS=1,1m,3,4,5,7,8と書いておけば良い。
それぞれのディレクトリが含むセクションのうち、3f(FORTRANの関数)とn(Tcl/Tkのコマンド)を除外している。

これが終わったらwindexも更新しておいたほうがいいかも。これはcatman -wでおk

ITmedia エンタープライズ:最新技術で効率化!今どきバックアップ入門

ITmedia エンタープライズ:最新技術で効率化!今どきバックアップ入門中の特集。

DDS/DATテープストレージ、その知られざるベストセラーの秘密
LTOテクノロジー、メカ部分の秘密

スーパー ゼビビス

スーパー ゼビビス

超感動した。
名前の似た名作ゲームがあるけど、きっと関係ないはず。

自分戦略研究室目的別インデックス 心身の健康 − @自分戦略研究所

自分戦略研究室目的別インデックス 心身の健康 − @自分戦略研究所

特にIT系の商売をする人にとってのヘルスケアの話題。
メンタルヘルス中心だが、たまにコンビニとうまくつきあう方法が載っていて参考になる。

キャリア開発シート

自分の勤めている会社には「キャリア開発シート」というものがある。これに勤務地や職種の希望を書いて上司と面談し、人事に反映するものなのだが、毎年何を書くか迷う。

というのも、「5〜10年後のキャリア目標」「〜3年後のキャリア目標」をまず考え、それを実現するためどんな能力を開発するかを書く必要があるので、相当面倒くさい。5〜10年後なんて鬼が笑うどころの話ではなく、大した出世欲もない平凡な人間にとっては100年後の未来と大差ない遠い先の話だ。

で、「能力の開発」のほうもやっかいだ。「能力」というものはすべてコード化されており、例えば「営業力」とか「検査技術」みたいな感じで一覧表になっている。たぶん数百くらいのコードがあるはずだが、探すには多すぎ、自分の能力を表現するには粗すぎ、なんとも中途半端である。
おまけに記述が異常に不足しており、例えば「OS技術」「デバイスドライバ」とだけ書いてあるような始末だ。PC用のOS(Windows)なのか、ワークステーション用のOS(UNIX)なのか、組み込み機器用のOS(ITRONとか)さえ記載されていない。専門能力を評価できない人事部担当者が、各々の職種の人事委員会に丸投げしているのが目に浮かぶようだ。

で、この能力コードに対し、自分がどれくらいのレベルにあるかを自己申告する。基本的には申告したレベルが人事に登録される。まあ、「おれはこれこれの能力がある」と自己主張する人に対して平等な機会を与えるシステムではあるけど、昇進は基本的に部門長推薦が必要なので何の意味もない。それにいつも思うのだが、部下に業務を与え、それを正当に評価できるから上司たりうるわけであって、こんな自己申告システムに頼るのはいかがなものかと。

そのレベル付けも昇進が近づいて来ると「上げておけ」という非公式な指示があったりして、まことに信頼性に欠ける(上げすぎてしまうとその次の年は何を上げようかで悩むことになる)。また、そもそもレベル付け自体が曖昧で、例えて言うとリニアスケールなのか対数スケールかはいかようにでも解釈できる。いや、もともと能力レベルをスカラ値で表そうというのが無理な話なのであって、揺れを許容できるのは悪くないことなのかもしれないけど。

で、なんでこんな文句をつらつら書いているかというと、夏休みが始まる前の日にこれを書こうと思ってたのだけど、難しすぎて家に持って帰って書かないといけないから。

…半分は自分のせいかな。あっはっは。

2006-08-02

InfoNESの続き

初代ファミコンが大流行していたころ、スーパーマリオブラザーズのステージ9なんてのがスクープされて大騒ぎだったことがあった。懐かしいなあ…

InfoNESで試してみましたともさ。あの頃は試す機会(機械?)がなかったけど、今は仮想マシンのメモリをちょいちょいっと書き換えてやるだけ。仕組みも今の知識で考えてみれば明らかで、コンティニュー用のラウンドを入れる変数が残っていたってだけだった。当時は「ノイズ」という説明がされていたけど、それはちょっと嘘っぽい感じ。まあ未初期化変数のことを小学生に説明することを考えるとしょうがないのかもしれないけど。

で… 正直感動した。ステージデータはほぼ正常ステージのものなんだけど、音楽・PCG・通常/水中・敵出現の各パターンがいろいろおかしい。クリアすると8-4クリア扱いになってしまったり、土管から地上に戻れなかったり、城の面が迷路になってなかったり。ただ、バリエーションはあまり多くなさそうだ。

小学生の時からずっと試してみたかったことをついに実現できて感無量(笑)なのだが、この歳になるまでその「やりたかったこと」を覚えていたというのはちょっと複雑な気分だ。大きくなったら何になりたい?という定番の問いに、「子どものころ出来なかったことをやれる大人になりたい」というメタな回答をしてしまう小学生はやはりイヤだ。やりたいことは若い時にやっておくべきだと強く思った次第。

2006-07-30

xkeropi

xkeropi (WinX68k for X)

xkeropiというX68000のエミュレータのビルドに挑戦した(on Solaris10/x86)。

makedependがC++に対応していなかったり、nasmが-iオプションを受け付けてくれないようだったりはしたけど、とりあえずコンパイルは終了。
さっそくHuman68kを起動… うーん、"Can't init screen"で終了してしまう。エラーチェックをはずして強引に起動させると、コマンドプロンプトを出すところまではいってるのだけど、表示がおかしい。
良くドキュメントを読むと15/16bppのvisualをサポートしてないとダメらしい。しかし実際にはgtk_widget_get_visual()でGdkVisualを1つしか取得せず、それでしか判断をしていないようだ。そこでgdk_visual_get_best_with_both()で置き換えてみたが、同じ結果。あれれ?
そこでxdpyinfoでvisualのリストを見てみると… 24bppしかないじゃん orz... Xサーバの拡張機能使ってカラーデプス変えられるかなと思ったけど無理。xorg.confをいじって16bppでXサーバを起動させようとしたけど、なぜか無視される。どうすりゃいいんだ…
んじゃ、描画部分を24/32bppに置き換えてやろうかとも思ったけど… これはこれで歯が立たず。うーん、泣きそう。

mdbとエミュレータのチート

Solaris/x86でInfoNESを動かしてみる… ヌルゲーマなので必然的にチートに手を出さざるを得ない、というかチートを使うがためのエミュレータ。だが、巷で出回っているコードはInfoNESでは使えない。そこでmdb。

例えば"0123-1-cd-ほにゃらら"というコードだったら、
% mdb -p `pgrep InfoNES`
> RAM+0x123/v0xcd
> ::cont
こんな感じ。イヤーンw

条件分岐や演算が必要なものはdumpしてから書き直せばいいけど、ちょっと面倒。そうでなくても毎回InfoNESの実行を止めるのはやっかいなので、メモリイメージファイルと同名の.soファイルがあったら動的にロードし、チートコードを実行するように微修正。

2006-07-29

バルーンアート

お祭りでバルーンアートをやることになった…
夏休みの間練習しないと後輩君に怒られる…w

バルーンアートでぐぐってみると、イベントに出張するタイプの業者もいるみたい。確かに子どもが喜びそうだ。我々もそれを狙っているわけだから、客寄せとしては悪くないのかも。

それっぽく見せるにはくびれをどこにつくるかがカギになるのかな? まあ結局のところただのゴムなので、うかうかしてるとどんどんくびれがずれてきてしまう。それなりに難しい。

失敗知識データベース

「失敗知識データベース」は知識の宝庫!?

存在は/.jで知っていたのだけど、なんとなく読む機会がなかった失敗知識データベース。紹介記事を読むとやっぱりおもしろそう。

あーでもやっぱどうなんだろうなあ… いや、データベースそのものが面白いとしても、自分が「楽しめるか」というところが微妙。図面のラベルを「ちょっと」間違えただけなのに、部長と役員の前でレビューさせられた人が最近身近にいたので orz...

2006-07-26

ブリーフケース

ブリーフケースをWSH、あるいはバッチファイルから作成する方法はないものだろうか? 一応作成するだけなら以下の方法で可能らしい:

  • foo.{85BBD920-42A0-1069-A2E4-08002B30309D}というディレクトリを作る。アイコンは変わるが、エクスプローラから見るとクラスIDがバレバレ。

  • 以下の内容のdesktop.iniをディレクトリに入れる。
    [.ShellClassInfo]
    CLSID={85BBD920-42A0-1069-A2E4-08002B30309D}
    ConfirmFileOp=0

    アイコンも変わり、クラスIDもばれないが、内部にある「ブリーフケースデータベース」ファイルをどういじったらいいのかわからない。

  • foo.{86747AC0-42A0-1069-A2E6-08002B30309D}というディレクトリを作る。クラスIDがばれることはないが、アイコンは変わらず。でも偽装にいいかもしれない。


「どこと同期を取るか」までスクリプトで設定したいのだけど…

技術文書

会社で目にする技術系文書なのだが、漢字の「おくり」や、そもそもどこまで漢字表記にするかという細かいところでひっかかる点が多い。もちろん「てにをは」を間違えた豪快な悪文も見かけないではないが、内容的にはそう難しい文章を扱うわけでもないのでむしろ少数だ(ただし特許関係の書類は除く。あれはそもそも日本語とは認めたくないwww)。

例えば身の回りでは「条件xxが成立する時、StackOverFlowが発生する事が有る。この為、呼出す時は注意する事」などという文章がまかり通っている。お前はいつの時代の人間ですかと小一時間(ry

これは個人的には「条件xxが成立するとき、スタックオーバフローが発生することがある。このため、呼び出すときは注意しなければならない」でないとしっくりこない(「とき」は「際」に置き換えるべきだが、ここは例文ということでご勘弁を)。
  • 条件を表わす「とき」は形式的な名詞であり、時間を表わす「時」とは別の表記を用いるべき。
  • 中途半端にアルファベットを混ぜるな。そもそも"overflow"で一語だぜ。それから単語の間にはスペースを入れろ。中学生でも知ってる。
  • 最初の「こと」は漢字のままでもいいかな… ただし、"事項"というほどの強い意味はないのでひらがなで十分だ。
  • 「有る」も間違いではないが古い。"存在すること"に強い意味がなければ、普通はひらがなを使う。
  • 「為」もわざわざ漢字にしない。明治期の作家かっつーの。漢字にする副詞というとたぶん「多分」くらいw
  • 「注意する事」ってそもそも仕様書に書く文体ではない。小学校の校則じゃあるまいし。
要するに漢字が多すぎるのだ。IMEで候補に漢字があったら必ず使ってやろうというくらいの心意気だ。文字の並びというビジュアルな情報も、文章を読んだ時の印象に影響を与えることを知らないのだろうか。

これはただの予想なんだけど、やたらムダに漢字を使いたがるバカ方たちって「漢字を使えると偉い」と思ってるのかなと。自分の身の周りを見てみると、虚栄心の強い、こけおどしの好きな人たちがこういう書き方を好むようだ。電子メールに平気で「御参集の程宜しく御願い致します」と書いてみたり、カタカナ言葉をわざわざアルファベットで書いてみたり、そのアルファベットは筆記体で書いてみたり。

はあ、よく考えるとそういう人が周りに多いな orz...

まあ自分だけは平易で肩の力の抜けたスタイルを維持したいものです、でもりんごタンハァハァというサイトではわざわざ気にすることもないよね…
という長い前振りだったけど、文章を書く際に参考になりそうなサイトがあったのでメモ:

国語審議会資料(文化庁), Sunの翻訳ガイド, ↑の紹介, JF 文書文体ガイド

2006-07-25

TableCellRenderer

JTableに対するTableCellRendererオブジェクトは、各列に対して1つ作成すれば良い。
その1つのオブジェクトを各行の描画に利用し、それを繰り返すことでJTable全体を描画するとのこと。

なんてこった、2000行近いJTableを使っていたので2000個の余分なJTextAreaを生成していたよ。そりゃ遅いわけだ… orz
で、書き直してみたら目が覚めるほど速くなった。うひょー

IBMのサイトSwingのJTableコンポーネントでセルを描くが詳しい。

ゼロの使い魔第3話

いまさらながらゼロの使い魔第3話を見てみた。
釘宮理恵さん演じるツンデレ… 別にテンプレじゃないから繰り返す必要もないか… 魔法使いさんはなんか2話以降もサービスいいですね。
まだストーリーは動き出していないので様子見だけど、ルイズ様の下僕テラウラヤマシス
はっ、私は何を口走ってしまったのか!?

おとぎ銃士赤ずきん第2話

いまさらながらおとぎ銃士赤ずきん第2話を見てみた。
釘宮理恵さん演じるツンデレ風味の幼なじみ小学生がかわいすぎる(*´∀`*)ポワワ
妙にヲタネタがちりばめられているけど、大きいお友だちが見ればわかる程度で、小さいお友だちには無害。
子どもにも安心して見せることができ、かつヲタも満足させるこのさじ加減は絶妙。素晴らしい。

貧乏姉妹物語第1話

いまさらながら貧乏姉妹物語第1話見てみた。
金田朋子さん演ずる小学生あすに激ハマり。かわいいなあ(*´∀`*)ポワワ
かといって今時のあくどい萌え路線というわけでもなく、「賢者の贈り物」系のほろっとくる良いお話。
あすがぶわっと泣き出す表情なんか最高っす。
ああ、あしながおじさんとして二人を応援してあげたい。

極魔界村

極魔界村Flashのアーサーは黒田アーサー氏が演じていた

なにこのおもしろニュースwww
Flashも面白かったけど、こんなオチは予想だにしてなかった。
カプコン超GJ、担当者偉すぎ

2006-07-22

ATA over Ethernet for Solaris

Coraid :: The Linux Storage People

さとうタンのきになるもの経由。iSCSIのATA版みたいなものと考えればいいのかな。ただしiSCSIがTCP/IPのパケットの中にSCSIコマンドを入れるのに対し、Ethernetフレームの中にATAコマンドを入れるものらしい。暗号化もない? いろいろ割り切ってるなあ。

カーネルモードドライバはdkio ioctlを受け付け、かつSTREAMSインターフェースを提供するようだ。これから推測すると、カーネルからはATAディスクに見え、ユーザ空間プログラムがEthernetフレームをioctlでカーネル空間に渡す方法なのかなと。

2006-07-19

貧乏姉妹物語

貧乏姉妹物語

ツインテールの悟りを開くさんで大絶賛されていたので見てみようかなと。

NTTドコモ、Windows Mobile搭載3Gスマートフォン「hTc Z」

NTTドコモ、Windows Mobile搭載3Gスマートフォン「hTc Z」

日本でもようやくスマートフォンの機運が高まってる、と考えていいのかな? W-ZERO3も意外と法人向けに売れているらしいし、リーマンがケータイの小さい画面と格闘している図もイマイチ「サマ」にならないしね。

W-ZERO3をいじってる自分は…ははは orz

ただ最近はオカ板の洒落怖スレの過去ログを読むことが多いので、顔はにやけてないはず。

2006-07-18

電卓さらに続き

Windowsと浮動小数点演算の誤差を調べてみる。

JDS(GNOME): [1][tan/atan][*][4][-][PI][=]で"0"表示、このまま[1/x]を押すと"11136696004.299135332"

Windows: [1][tan/atan][*][4][-][PI][=]で"-1.393267707463821448075635979701e-37"表示、このまま[1/x]を押すと"-7.1773715463506261657687196560427e+36"

…CPU/FPUは同じはずなんだけどねえ。πの定義が違うのかな?

JDS=3.141592653, Windows=3.1415926535897932384626433832795

違うらしい… これでいいのかJDS(GNOME)… orz

ちなみにWM5(RPN Calculator on W-ZERO3)では[1][atan][4][*][pi][-]で"0"を表示、[1/x]で"INV Error: Division by zero"。なかなかすばらしい。

電卓続き

Windowsの電卓ソフトは有理数を正確に扱えるらしい。
つまり1/3*3を計算させるとぴったり1になるとのこと。おお、知らなかったよ。実際に試してみても、確かに浮動小数点化したことによる誤差がでないようだ。すげー。

JDS(GNOME)で同じことを試すとどうなるか。1/3*3を計算させてみると"1"の表示。でもこれは単にまるめられているだけだろう。この状態で[-][1][=]を押してやると、"-0"の表示になる。さらに[1/x]を押してやると、"-1.004336278e+59"の表示に。まあ普通に作ればこうなるよね。

ところで、学生時代はSHARPのPC-U6000というポケコンを使ってたので、関数電卓は社会人になってから買った。
シチズンのSRP280Qだけど、とくにこだわりもなく、傷モノが1000円くらいで売ってたので買ってみただけである。
入力は数式を入力するタイプ(ってHP以外は当たり前か)で、演算子の優先度を考慮する([=]キーを押すまで計算されない)。グラフ機能なし、統計機能あり、ビット演算なし、財務機能なし。カーソルキーを多用するところが利点であり、欠点。だれか他に持ってる人いるのかなあ…

Tom Boldt's RPN Calculator

W-ZERO3用のよさげな電卓ソフトはないものかと思っていろいろ調査。Hello worldと電卓はプログラミング入門の二大テーマだが(ちょっと嘘)、10/16進数の四則・論理演算がきっちりできるものはあまり多くない。しかもWM5用のフリーのものとなると… また、RPN電卓にもちょっと興味があるので、これをサポートしてればなお良し。

というわけで週間Windows CE通信経由でHP16Cエミュレータを探してみたがデッドリンク。

で、HP電卓が一種のステータスwになっているらしいのでEmu48というエミュレータを探し出してインストール。…すごい高機能ですなあ。方程式を解く機能があるらしいので、多項式を入れたら余裕で解く。まあそれは簡単すぎかなと思って、ためしに入れてみたsin(x)+cos(x)=0をあっさり解いてしまってちょっと興奮。作った人、いい仕事してますなあ。

んがこのEmu48、動作がかなり重い。キー入力がすぐに確認できないようでは実用にならないので、残念ながらパス。とはいえかなり勉強になりそうなので、時間があったらマニュアルでも読んでみますか。

次にHP11Cというプログラマ向け電卓のシミュレータをゲット。
何のシフト動作もなしにA〜Fを入力でき、ビット演算はもちろん、シフト演算、はてはローテート演算までやってのけるところは確かに計算機屋が喜びそうなところだ。操作もきわめて軽快。ただ、残念ながら10進実数演算がかなり弱い。[f][FLOAT]で有効桁(表示桁かも)を設定してやらないと、妙に桁数が少なく表示されてしまう。とどめにフリーソフトではない。よってパス。

というわけで、Tom Boldt's RPN Calculatorを試しているところ。

しかし、普通の用途では100円ショップの電卓で済ましているけど、実はかなり濃い世界だったのね… いろいろ勉強になりました。

ゼロの使い魔

ゼロの使い魔 OHP

釘宮さんのツンデレキャラがまた見れますよ…
1話を飛ばし見してみたけど、なんかサービス良いなあ。

2006-07-17

N・H・Kにようこそ!

N・H・Kにようこそ!

第1話だけ見てみた… ああ、なんだこのもやもや感は… 言いたいことはいろいろあるが、天に唾する所業なのでやめておこう。親近感と近親憎悪の入り交じったこの妙な気持ち、どうにかならないか orz...
とりあえず岬ちゃん萌えと無難な感想を。サクラクロニクルのサクラの人がCVだったかな?

ところでマンガ版の作者が本気で大「槻」ケンヂだと思ってた。監修的な立場でシナリオ書いたのかと。しかもあのEDを作りそして歌っているわけで、すごいマルチな才能だよなあ…と思った純真な心を返して頂きたい。

OHP、「NHK」という表記じゃなくて「N・H・K」とご丁寧に中黒を入れた挙げ句、「N・H・Kとは、日本ひ○こ○り協会のことだよ」とよく分からない伏せ字付きの解説がついている。うーん、妙に面白いw おまけにこんなことを発見された方もいるようで。

2006-07-16

先読みの正規表現

Bayesian推定のプログラムを作っている途中で気が付いたこと。

ファイルをトラバースする際に、探索を打ち切るパス名を正規表現で表現したい。具体的には「パス要素がちょうど3で、第3要素が"image"ではない」パス名だけマッチさせたい。

で、最初は[^/]+/[^/]+/[^i][^m][^a][^g][^e].*かな?と思って試したんだけど、良く考えるとa/b/xxxがマッチしない(探索を打ち切れない)ので、これは間違い。

次に「幅ゼロの否定先読み」という難しい機能が使えるかなと思って[^/]+/[^/]+/(?!image)を指定したけど、何もマッチしない。

おかしいなあと思ってPerlの正規表現(Javaの正規表現はPerlの影響が大きいようだ)を調べてみると… うわ、よくある間違いだった… orz

上記の例だと、「imageが後続しない、第3要素が空の、3つのパス要素を持つパス」の意味になって、"aaa/bbb/"などにしかマッチしない。

正解は[^/]+/[^/]+/(?!image).+だった。しかし、Perl/Javaの正規表現は難しいなあ…

Bayesian推定を使ったファイル分類プログラム

CG定点観測などのサイトを巡る身としては、落してきた画像ファイルの分類は結構めんどうな作業だ。そこで、URL文字列に基づくBayesian推定を利用するファイル分類プログラムwを作り始めたり。

幸い、いままで「/a/flower/カテゴリ/image/取得元URL」というルールで画像ファイルを格納してきた。例えばダウソ元がhttp://www.haruhi.tv/img/sos_logo.gifならば、/a/flower/s/suzumiya_haruhi_no_yuuutu/image/www.haruhi.tv/img/sos_logo.gifに格納するといった具合。

だから、分類プログラムは/a/flower以下を走査し、カテゴリと分類キーワードを抜き出して出現確率を学習してやればよい。分類キーワードはURLから抜き出すものとし、上記の例ならば「www.haruhi.tv」「www.haruhi.tv/img」「sos_logo」が分類キーワードになる。

…で、試作品ができた。実行はこんな感じ
% java Bic learn
% java Bic prob nagato
P(An[s/suzumiya_haruhi_no_yuuutu])=577/23472 P(Bm[nagato])=43/92485 P(Bm|An)=41/2210 P(An|Bm)=0.9808896341240785

% java Bic prob sakura
P(An[c/card_captor_sakura])=465/23472 P(Bm[sakura])=42/92485 P(Bm|An)=35/2338 P(An|Bm)=0.6530529632379997
P(An[d/dc_da_capo])=177/23472 P(Bm[sakura])=42/92485 P(Bm|An)=1/684 P(An|Bm)=0.024276667975038708
P(An[n/nanika])=54/23472 P(Bm[sakura])=42/92485 P(Bm|An)=3/187 P(An|Bm)=0.08127281866455452
P(An[@Circle/neko_ni_terumin])=361/23472 P(Bm[sakura])=42/92485 P(Bm|An)=1/1467 P(An|Bm)=0.02308601651808125
P(An[m/mahojin_guruguru])=1304/23472 P(Bm[sakura])=42/92485 P(Bm|An)=2/5330 P(An|Bm)=0.04590418614808859

sakuraというキーワードから木之本桜だけではなく、芳乃さくら・任意さくらも自動的に候補としてくれるあたりが面白い。サクラ大戦の画像はほとんどないので、当然これはひっかからない。

んが、
% java Bic prob nanoha.com
P(An[l/lyrical_nanoha])=3229/23472 P(Bm[nanoha.com])=19/92485 P(Bm|An)=19/12567 P(An|Bm)=1.0124128163161337


100%越えてるよ!?www

2006-07-13

議論のしかた

議論のしかた
RinRin王国経由。とっても参考になりそうなのでメモ。

こちらのサイトでは特に言及されてなかったけど、詭弁のガイドラインに触れたページって多い気がする。
あれの元ネタってあるのかなあ。Morphy Oneの擁護派・批判派についてそれぞれ適用したものがあるので、その時代からあるものなのか。

さてこのサイト、他にもソフトウェア開発関係で良さげな文章があってハァハァ
新人君に教えてあげよう。ただ、参考になるサイトを「読んどけよ〜」と言って放置しておくだけなのに、何かを教えたつもりになってるのは良くないかもしれないw

Amazonでメイド服

Firefoxの普及イベントのレポート記事に入ってたアフィリエイト経由。
Amazonでメイド服の扱いが妙に充実していることを発見www
こんなに種類があったのか!とびっくり。
それぞれのスタイルの違いについてどなたか解説してくれませんかね?

2006-07-10

もしも、綾波・長門・ルリルリが3兄弟だったら

もしも、綾波・長門・ルリルリが3兄弟だったら

無口系キャラって、人工的な出生を経ている設定が多いのかな?

Yahoo!ニュース - 時事通信 - 男前豆腐店を書類送検=大豆殻を不法焼却−京都府警

Yahoo!ニュース - 時事通信 - 男前豆腐店を書類送検=大豆殻を不法焼却−京都府警

今さらではあるが、「男前豆腐」の小サイズ版が発売になったので買ってみた。
醤油をかけないで食べたほうが良かったんだっけ?と思って公式サイトを見たら、なぜか謝られた。
はて?…と思ったら、大豆殻の不法焼却で書類送検されていたのね。

大豆殻はおからのことなのかな? 炒り豆についてるような薄皮っぽいやつかな?

豆腐自体は大変おいしゅうございました。
甘みがあって、しっかりした味がある。
冷や奴にするならいつもこれくらいうまいものを食いたいものだ… でも高いんだよなあ orz

それはそうと、あのサイト見ると玄人志向のサイト連想するんだよねw

2006-07-09

JDS付属のディスク使用量レポートソフト

あまりじっくり調べたこともなかったJDSのメニュー。
アプリケーション→システム ツール→ディスクアナライザというのが
ちょっと気になったので起動してみる。

duを高性能にしたようなディスク容量の使用状況を調べるツールが起動した。
xduなんてのもあったけど、見栄えが良くなってる。
調べてみるとJavaで動作しているらしい。

でも、なんで「ディスクアナライザ」って訳なんだろう。
表面検査やSMARTのデータを読み出すツールだと思うじゃないか。

2006-07-06

たとえミサイルが飛んでこようが暑いものは暑い

会社でエアコンが壊れてぐったり…

たまたま何かで知ったのだけど、事務所に空調を設置することは
事業者の努力事項らしい。

あ、あったあった。事務所衛生基準規則っていうんだ。

第五条 3 事業者は、空気調和設備を設けている場合は、室の気温が十七度以上二十八度以下及び相対湿度が四十パーセント以上七十パーセント以下になるように努めなければならない。

他にもトイレの数とか部屋の広さについて規定があって、
個人的にはへぇーと思うことしきり。

2006-07-04

W-ZERO3 [es]

W-ZERO3 [es]発表。
かるい、うすい、ほそい、ぺったんこw

これはケータイユーザに歩み寄ったかたちなのかな?
QRコード読めるのは良いなあ。
あと落しづらくなってるかもしれない。
値段も安くなってるし。

2006-07-03

日清食品 : ニュースリリース : ご案内

日清食品 : ニュースリリース : ご案内


1.「カップヌードル 夏の辛口 スパイシーチリ」
(1) め ん
しなやかでコシとつるみのあるめんです。


「つるみ」ってなんだろうw

地図データ

W-ZERO3 Monitorがらみで公共の地図データを探していたのだけど…
なんだかずいぶん種類があるのにびっくり。

総務省統計局の統計GISプラザ(http://gisplaza.stat.go.jp/GISPlaza/)
国勢調査の結果を表示するために町丁・字等境界データもダウンロードさせてくれる。

国土交通省国土計画局の街区レベル位置参照情報ダウンロードサービス(http://nlftp.mlit.go.jp/isj/index.html)
街区単位の位置座標(代表点の緯度・経度、平面直角座標)がわかる。
使用条件的には一番融通が利いて使いやすい。

同じく国土交通省国土計画局の国土数値情報(http://nlftp.mlit.go.jp/ksj/index.html)
交通だけでも道路・鉄道などの基本的な情報だけでなく空港・航路も載ってるらしく、
さらには土地の利用用途・地価(笑)・公共施設などのデータも入っている。
これも使用条件的には使いやすい。

最後に国土地理院の数値地図(空間データ基盤)(http://sdf.gsi.go.jp/)
1/2500と1/25000のデータが入っていて、相当細かい(3m幅くらいの道路くらいまでは載ってる)街区データや、行政区分(番地表示)が入っている。
詳細さでは一番なんだけど、法律の関係か使用条件はかなり厳しい。

とこんな感じっぽい。
…まあ、用途ごとに調査項目が違うから、こんな別れてるんでしょうね(と信じたい)。
国土計画局と国土地理院でそれぞれ航空写真の閲覧サービスがあるらしいし…

2006-07-02

W-ZERO3: QRコードのデコード

さて、MIDPアプリががしがし書ける状況にはなったけど、本題のQRコードはどうしようか。

QRコードを解読するための画像をMIDPアプリに食わせるには、
多分2通りの方法があると思う。
1つめは直接Javaからカメラの画像を取得してしまう方法。
もう1つがJavaからファイルシステムに格納された画像ファイルを入力する方法。

第1の方法は、Mobile Media APIを使えば良いらしい。
だがMIDP的にはオプションなので、本当に使えるかはわからない。
そこで公式ページに乗っているサンプルコードをコンパイルして試してみたが… ダメっぽい… orz

カメラからの入力を受け付けるデバイスはvideo.snapshot.encodingsというプロパティを持つらしいのだけど、そんなものはない。(関係ないが、J2MEではPropertiesを列挙できないのでちょっと困った)

そこで第2の画像ファイルを読む方法を試してみた。
こちらはPDA Optional Packages for the J2METM Platformというもので、ネイティブ実行環境のファイルやPIMデータへのアクセスを提供する。

んが… これどう使ったらいいんだろう?
ん・ぱか工房さんのサンプルを試してみたけど、JBlendは黙ってすぐに終了してしまう。
らるるのメモ帳さんを参考にしてfile://localhost/に置き換えてもダメ…

というわけでお手上げ〜
画像ファイルのURLを入力して読ませることはできると思うんだけど、
画像ファイルをどううpするのとか、そのURLは手打ちかよ!とかいろいろ難がある。

Solaris/x86におけるMIDPアプリの開発環境 その3

Solaris/x86におけるMIDPアプリの開発環境の続き。

さて、どうにかJ2ME+CLDC+MIDPのコンパイル/エミュレーション環境がそろったので、
いよいよアプリケーションを作ってみる。

SunのMIDPのドキュメントについているHelloMIDlet.javaをsrc/に置き、
カレントディレクトリに以下のMakefileを置いてやる。
JAR = HelloMIDlet

MIDP_DIR = ../../j2me/midp2.0fcs/build/solaris
WTK_DIR = ../../j2me/WTK2.2

MIDP_CLASSES = $(MIDP_DIR)/classes
OPT_CLASSES = $(WTK_DIR)/lib/jsr75.jar

PREVERIFY = $(MIDP_DIR)/bin/preverify
EMULATOR = $(MIDP_DIR)/bin/midp
BOOT_CP = $(MIDP_CLASSES)
REF_CP = $(MIDP_CLASSES):$(OPT_CLASSES)
RUN_CP = classes:$(MIDP_CLASSES):$(OPT_CLASSES)
JAVAC = javac -bootclasspath $(BOOT_CP) -classpath $(REF_CP) -source 1.4

all: tmpclasses
$(JAVAC) -d tmpclasses `find src -name \*.java`
rm -rf classes; mkdir classes
$(PREVERIFY) -cldc -classpath $(RUN_CP) -d classes tmpclasses

jar:
@echo 'Manifest-Version: 1.0' > $(JAR).mf
@echo 'MIDlet-Name: $(JAR)' >> $(JAR).mf
@echo 'MIDlet-Version: 0.0.1' >> $(JAR).mf
@echo 'MIDlet-Vendor: unknown vendor' >> $(JAR).mf
@echo 'MicroEdition-Profile: MIDP-2.0' >> $(JAR).mf
@echo 'MicroEdition-Configuration: CLDC-1.0' >> $(JAR).mf
jar -cmf $(JAR).mf $(JAR).jar -C classes .

cp $(JAR).mf $(JAR).jad
@echo 'MIDlet-Jar-URL: http://localhost/$(JAR).jar' >> $(JAR).jad
@echo 'MIDlet-Jar-Size: '`ls -l $(JAR).jar | awk '{print $$5}'` >> $(JAR).jad
@echo 'MIDlet-1: $(JAR),, $(JAR)' >> $(JAR).jad

run:
$(EMULATOR) -classpath $(RUN_CP) -descriptor $(JAR).jad

tmpclasses:
mkdir tmpclasses

clean:
rm -rf classes tmpclasses $(JAR).mf $(JAR).jar $(JAR).jad

これでmake all jarしてやれば、jarファイルとjadファイルができる。
エミュレータを起動するにはmake run

MIDP_DIRWTK_DIRはそれぞれMIDPのリファレンス実装を展開したところと
Wireless Toolkitをインストールしたところを指定する。
WTK_DIROTP_CLASSESはMMAPIなどのオプションAPIを使うときだけ指定する。

2006-07-01

Java ME - Micro App Development Made Easy

Java ME - Micro App Development Made Easy

Solaris/x86におけるMIDPアプリの開発環境の続き。
J2ME Wireless Toolkitに含まれるエミュレータとpreverifyがプラットフォーム依存なため、
結局Solarisでは動かない(SPARCもx86)と判断した。
ある意味Sun純正の開発環境なんだけど… orz

そこでさらに調べると、素のMIDP開発キットがあって
Solaris(SPARC), Linux(x86), Windowsで動作するらしい。
前述のJ2ME Wireless Toolkitはこの開発キットが前身で、
これを簡易IDE風にまとめたものらしい。

ならばこれをSolaris/x86用にビルドしてやろうか… というのが以下のメモ。

  1. J2ME CLDC 1.0.4 RIJ2ME MIDP 2.0FCSを入手。
    どちらもSolaris/SPARC版を選ぶ。
  2. 伸長
    % unzip archive/j2me_cldc-1_0_4-src-winunix.zip
    % unzip archive/midp-2_0-src-solaris-sparc.zip
  3. パッチあて
    % ln -s j2me_cldc kvm
    % (cd j2me_cldc; gpatch -p0 -b -z .ORG < ../patch/j2me_cldc-1.0.4ri.patch)
    % touch midp2.0fcs/build/solaris/dummy_ssl.c
    % (cd midp2.0fcs; gpatch -p0 -b -z .ORG < ../patch/midp2.0fcs.patch)
  4. ビルド
    % cd midp2.0fcs/build/solaris
    % gmake
  5. サンプルを実行
    % bin/midp -classpath classes -descriptor games.jad


まあ、下のパッチを見ると分かるようにSSL関連の関数をダミーで置き換えていて、
相当あやしいシロモノである。

j2me_cldc-1.0.4ri.patch
--- ./api/Makefile.ORG Thu Nov 14 08:07:07 2002
+++ ./api/Makefile Sat Jul 1 17:46:51 2006
@@ -20,7 +20,7 @@
DEBUGFLAG=":none"
endif

-JAVAC = javac
+JAVAC = javac -source 1.4 -encoding ISO-8859-1
PREVERIFY = ../tools/preverifier/build/$(PLATFORM)/preverify
JAR = jar

--- ./tools/jcc/Makefile.ORG Thu Nov 14 08:07:09 2002
+++ ./tools/jcc/Makefile Sat Jul 1 17:43:27 2006
@@ -15,7 +15,7 @@
include $(TOP)/build/Makefile.inc

JAVA = java
-JAVAC = javac
+JAVAC = javac -source 1.4 -encoding ISO-8859-1
JAR = jar

JAVAFILES = $(shell find src -name "*.java"|grep -v SCCS)
--- ./tools/kdp/Makefile.ORG Thu Nov 14 08:07:10 2002
+++ ./tools/kdp/Makefile Sat Jul 1 17:43:27 2006
@@ -14,7 +14,7 @@
all: tools

JAVA = java
-JAVAC = javac
+JAVAC = javac -source 1.4 -encoding ISO-8859-1
JAR = jar
JAVAFILES = $(shell find src -name "*.java"|grep -v SCCS)

midp2.0fcs.patch
--- ./build/share/makefiles/Defs.gmk.ORG Fri Nov  8 06:02:05 2002
+++ ./build/share/makefiles/Defs.gmk Sat Jul 1 17:36:03 2006
@@ -156,7 +156,7 @@
#
JAR = $(BOOTDIR)/bin/jar$(EXE)
JAVA = $(BOOTDIR)/bin/java$(EXE)
-JAVAC = $(BOOTDIR)/bin/javac$(EXE)
+JAVAC = $(BOOTDIR)/bin/javac$(EXE) -source 1.3 -encoding ISO-8859-1
JAVADOC = $(BOOTDIR)/bin/javadoc$(EXE)

# MIDP tools
@@ -304,7 +304,9 @@
PLATFORM_OBJ_FILES += $(patsubst %.rc,$(OBJ_DIR)/%.res,$(filter %.rc, $(PLATFORM_SRC_FILES)))

SSL_OBJ_DIR = ssl_obj$(g)$(ARCH_DIR)
-SSL_SRC_FILES = nativecrypto.c MD5.c SHA.c bnlib.c MD2.c messagedigest.c
+#SSL_SRC_FILES = nativecrypto.c MD5.c SHA.c bnlib.c MD2.c messagedigest.c
+#SSL_OBJ_FILES = $(patsubst %.c,$(SSL_OBJ_DIR)/%.o,$(SSL_SRC_FILES))
+SSL_SRC_FILES = dummy_ssl.c
SSL_OBJ_FILES = $(patsubst %.c,$(SSL_OBJ_DIR)/%.o,$(SSL_SRC_FILES))

# generate OBJ_FILES list; we need to sort the files due to a linker
--- ./build/solaris/makefiles/Defs-pre.gmk.ORG Fri Nov 8 06:02:07 2002
+++ ./build/solaris/makefiles/Defs-pre.gmk Sat Jul 1 14:34:19 2006
@@ -76,6 +76,7 @@
endif
ifeq ($(ARCH), i386)
_BOOTDIR = /usr/local/java/jdk1.3/x86
+_BOOTDIR = /usr/java
endif

# Uncomment the following definition if you want to build both Solaris/x86
--- ./build/solaris/dummy_ssl.c.ORG Sat Jul 1 17:36:48 2006
+++ ./build/solaris/dummy_ssl.c Sat Jul 1 17:36:48 2006
@@ -1,0 +1,8 @@
+void Java_com_sun_midp_ssl_Alg2_modExp(void) {}
+void Java_com_sun_midp_ssl_Alg3_nativetx(void) {}
+void Java_com_sun_midp_ssl_MD5_nativeUpdate(void) {}
+void Java_com_sun_midp_ssl_MD5_nativeFinal(void) {}
+void Java_com_sun_midp_ssl_MD2_nativeUpdate(void) {}
+void Java_com_sun_midp_ssl_MD2_nativeFinal(void) {}
+void Java_com_sun_midp_ssl_SHA_nativeUpdate(void) {}
+void Java_com_sun_midp_ssl_SHA_nativeFinal(void) {}

ソフト開発について - W-ZERO3 Wiki

ソフト開発について - W-ZERO3 Wiki

MIDPアプリのSolaris/x86用開発環境を探してみるが… 微妙に敷居が高いなあ。

W-ZERO3 Wikiを見るとまず、
* J2SE Development Kit 5.0 Update 6 with NetBeans 4.1 Bundle
* NetBeans Mobility Pack 4.1
が挙げられているのだけど、すでにNetBeans 5に移行しているため
4.1のファイルはダウンロードできなくなってる。
5は5で問題があって、英語版しかMobility Packが用意されていないようだ。

* Java 2 SDK, Standard Edition, v 1.4.2_10 (J2SE)
* J2ME Wireless Toolkit 2.2
マシンにはJ2SE SDK 5.0が入っているのだけど、
これにLinux(x86)用のJ2ME Wireless Toolkit 2.2を入れてktoolbarという
ツールが動くところまでは確認した。

ただし、WTK2.2/wtklib/SunOSというシンボリックリンクがWTK2.2/wtklib/Linuxを
指すようにしないといけない。
また、WTK2.2/bin/*.soやWTK2.2/bin/{preverity*,zayit}はLinuxのバイナリ/ライブラリなので、
これを使うところでこけることになりそう。

SourceForge.jp: Project Info - QR Code

SourceForge.jp: Project Info - QR Code

W-ZERO3でQRコードを解読させてみたくて、デコードライブラリを検索してたらこんなプロジェクトが。
さっそくダウンロードしてみたが… おいおい、ドキュメントの類がひとつもないじゃないか。不親切だなあ。
まあいいやコンパイルしてみるか、と気を取り直してantコマンドを… build.xmlもないのね。

Eclipseで作った形跡があるんだけど、Sun儲としては今さら入れるのも微妙だよなあ…
で、しょうがないのでMakefile作りますた(←オールドタイプ)。

JAVAC = javac -encoding shift-jis

compile: classes
$(JAVAC) -d classes -sourcepath src `find src -name \*.java`

jar:
jar cvf qrcode.jar -C classes .

classes:
mkdir classes

clean:
rm -rf classes

これでjarファイルはおk。

お次はサンプルプログラムのqrcodeExample.zipを伸長して…
って、できあいのjarファイル入ってたね… orz
まあ気を取り直してこんな感じのMakefileを書いてみる。


all:
$(MAKE) jar JAR=QRCodeDecoderSampleCUI
$(MAKE) jar JAR=QRCodeDecoderSampleGUI

jar:
echo 'Manifest-Version: 1.0' > $(JAR).mf
echo 'Main-Class: jp.sourceforge.qrcode.example.$(JAR)' >> $(JAR).mf
mkdir $(JAR)
(cd $(JAR); jar xf ../qrcode.jar; cp -rp ../classes/* .)
jar cfm $(JAR).jar $(JAR).mf -C $(JAR) .
rm -r $(JAR).mf $(JAR)

clean:
rm -rf *.mf
rm -rf QRCodeDecoderSample*

実行するのはこんな感じ。

% java -jar QRCodeDecoderSampleGUI.jar

おお、とりあえずなんとか動かせた。