トップ 最新 追記

日々の破片

Subscribe with livedoor Reader
著作一覧

2006-03-01

_ 土に還る

えー青土社がオカルト? それは発見だ! じゃなくて創土社だろう、と思ったらなんか地図しか売ってないじゃん(アマゾン調べ)。

でも創土社がなければ、アーサーマッケンもダンセイニ卿もラヴクラフトもないじゃん、なんて不幸な時代なんだ、と思ったらちゃんと出版社を変えて出てるのか。まったく意味がないが安心した。

アーサー・マッケン作品集成 (1) 白魔(アーサー マッケン/Arthur Machen/平井 呈一)

それにしてもばかばかしく高いな、と思って封印された蔵書蔵の積もった塵埃の彼方より幻の書の1冊を取り出してみれば創土社じゃなくて牧神社だった。価格は1800円だから当時の物価は1/4かと言えばそうではないだろう(ものによりけりだし)。

おもしろいのでアマゾンの書評を引用してみる。

『生活の欠片』は、或る平凡な男のつまらない日常が、何時の間にか或る古文書を通じて神秘主義と混淆して行く様を描いているのだが、平井はこの主人公を「覚醒せざる文明忌避者」と評し、この作品を自分の好みの埒外だと思うなら、その人はマッケン文学の真の愛好者ではない、と大変な入れ込み様である。何れも自然の摂理の奥深くに潜み棲む妖異の影が、怪しい隙間からガバッと現実に襲い来り、その背後に広大な暗黒の領野を望見させる怪作ばかりである。

「混淆」「覚醒」「忌避」「摂理」「埒外」「妖異」……。まあ、気持ちは良くわかる。

でも、今にして思えばなんらかの予兆が見られたと言えなくもない。単語を換えてみよう。

『生活の欠片』は、或る平凡な男のつまらない日常が、何時の間にか或る算譜を通じて合理主義と混淆して行く様を描いているのだが、平井はこの主人公を「覚醒せざる電脳遊戯脳患者」と評し、この作品を自分の好みの埒外だと思うなら、その人はマッケン文学の真の愛好者ではない、と大変な入れ込み様である。何れも電算の摂理の奥深くに潜み棲む算法の影が、怪しい隙間からガバッと現実に襲い来り、その背後に広大な電網の領野を望見させる怪作ばかりである。

サイバーパンクですね。

_ 良い道具の定義

良い道具というのは

触ってて思うのは、「どう作るか」ではなくて「何を作るか」という脳みそを刺激されるということ
(何を触っているのかはリンク先を参照。以下の文章のターゲットにはしていない――僕は触っていないから――ので切り離しておく)。

……(黙考)……

うむ、確かにそうかも……いや、例外もあるか。作るものが決まっている場合だ。

作るものが決まっている場合は創造性は内向きに働かせ(「どう」重要)、作るものが決まっていない場合は創造性は外向きに働かせ(「なに」重要)なければならない。

したがって、いわゆる創造性(作ることそのもの)については、「何を作るか」という方向を刺激する道具が望ましい。しかし、作るものが決まっている場合にはその刺激はへたをうつとノイズになる可能性がある。したがって刺激は「どう」側に働いたほうが良い(かも知れない、とか留保を入れるのはどうもそういう考え方に馴染まないからだな)。

その切り口から、サービス向きとエンタープライズ向きのツールを分けることもできるかも知れない。

これさえあればなんでもできるぞ、おれは無限のパワーを手に入れた、と感じる場合は外向き、これを使えばこういうやり方で済ませられるぞ、おれはパワーを制御する方法を手に入れた、と感じる場合は内向き。ちょっと違う気もするな。

もちろん両立する可能性はあるが、傾向としてはどちらかに寄るのじゃないだろうか。

追記:既にして忘れている。何(=機能)を作るか決まっていたとしても、さらに何(=見せ方、使われ方、感じ方)を作るかを重ねる必要がある。したがって、常に「何を作るか」の刺激が最重要なのだ。

_ やっと写真を見た

バランスが極端に悪い墓石か?


2006-03-02

_ イントレランス

くっだらねぇなぁ。と思いながらネットをうろつく。

イントレランス [DVD](D・W・グリフィス)

1916年の映画ってことは90年前だ。世紀末は自省で世紀開けは自省した分だけ他に猛省を迫るってかってか。いつの時代もイントレランスとグリフィスが描く。100年たっても同じことだね。

グッドモーニング・バビロン [DVD]

まあ、いいや。それでも象を作ることはできる。

とは言え、マスターピースと、最初に感動した人間がそれ故に火を点ける。でも写真だ。もう1つの複製技術が映画を扶ける。

國民の創生 [DVD]

グリフィスのもう1つの代表作。アマゾンの正しいのだが誤解を招く紹介。「南北戦争前後の激動のアメリカ史をモチーフにし、奴隷解放問題を描いたドラマ。」

このフレーズから何を想像できるだろうか?

自分勝手で義務も果たさず自由を叫ぶ卑しい黒人たちの魔の手から薄幸の美少女リリアンギッシュを助け出す正義のクークルッスクラン(KKKだ)の青年の大活躍を描く映画を想像できるだろうか? いや、確かに主人公の青年は高潔な理想に燃えているし勇気もあり国家を愛し恋人のことも愛する立派な青年ではある。ラッパが鳴り響き、馬を駆けるシーンは見てるこっちもエキサイトする。すげぇ映画だ。それ! やれ! 腐った性根の奴隷どもに身のほどを思い知らせてやれ!

個別の事情に立ち入れば、どの側も正しく立派であり正義だ。したがって世紀末の自省の結果、自分では無い側を切り捨てることに思い到り、イントレランスに目覚める。

シュアロジカリー。

でも、おれは象を作るんだな、これが。

_ 文句なくおもしろい

続きを読みたいがブックマークする場所がないから、とりあえずここに。男だったころ。また、いいところで終わってるんだな、これが。(エントリーをまたがった韻)

_ 次期サーバの誘惑

2.5インチは壊れやすいでござるか?

確かに今使ってるのは壊れないでござる。

CPUは2個分でござるぞ。

今のは物理的に2個付いているでござる。

Unix風味でござるぞ。

今使ってるのは元はDebianでござる。筋は良いでござる。

メモリーは素では512MBでござるぞ。2GBにすることができるでござるぞ。

ううむ、今使っているのはメモリーは256MBしか無いのでござる。しかも64MB×4で満杯でござる。でもMacからXで入ればそれなりに快適ではござる。

入らなくてもそのものでござるぞ。しかもそれなりには静かでござる。

それがし、賑やかな未来が好きでござる。

もののふは食わねども高楊枝でござるか?

酸っぱい葡萄と言うが如しでござる。

それにつけても金の欲しさよ。


2006-03-03

_ NTから2000に移行したマシンのバカの壁

2GBの壁。

作戦1:C:\WinntにたまりこんでいるQFのアンインストール情報をひたすら削除。

プログラムの追加と削除にインストール情報を残すのと連動しているからしょうがないのだろうが、もう少し賢く振舞って(追記:フェアに言えば圧縮しているからそれなりに賢く振舞ってはいるんだろうけど)欲しい気はする。

作戦2:Documents and Settingsに無闇にいろいろ溜まり込んでいるわけでこれを追い出す。

Documents and Settings フォルダを移動または削除できない」の「ユーザー固有のフォルダ」を見ながらやってみる。

結果:環境変数を設定できなくなってしまったうえに、tempとtmpがC:\Winnt\Tempになってしまいました。インストール直後ならともかく、歴史があるマシンでやるべきことではなかったようだ。最終的には「フォルダ全体」を見ながらというか見るまでもなくレジストリ上の全パスを書き換えるしか手段はないのかも。(これやってもIEがお気に入りを作ってしまったような気がするが)。

作戦3:スワップファイルを最低の2MBにして、残りを追い出す。

最初からこれやれば良かったわけだが、これ以上の拡張が無理になるところが最終兵器。

_ Firefoxを常用しない/したくない理由

家は名前解決に結構妙に時間がかかる時があるのだが、Firefoxはそうなると完全に凍り付く(他のタブで切り替えることさえできない)。

これはすさまじく致命的に使いにくいのだな。名前解決スレッドを用意しておいて欲しいくらいだ。

でもIEやSafariではそういう問題はない。

ということで、Firefoxは遅い、固まる(永遠にというわけではないのは上に書いた通り)、止まると3拍子揃っているので使う気にはなれない(でも、Windowsマシンではそれなりに使う。調子の良い時は調子は良いわけだし)。

でもそういう話には他でお目にかかったことはない(バカ往くの人が何か書いてたと思ったけど)。だから何かこっちの使い方が間違っているのかも知れない。とは言えSafariで気持ちが良いからMacではまったく使わなくなったな(Windowsでは使うわけだが)。

本日のツッコミ(全2件) [ツッコミを入れる]

_ 通りすがりです [うちの妻のiBook(G4,1.2Gぐらい)でもFirefoxはよく落ちます。特に追求していないので書けることはこれ..]

_ arton [使える代替があると追求しませんね、確かに。 #Windows版は上で書いた止まることを除けば安定していると思います。..]


2006-03-04

_ カロンカノンでゴー

カロンとカロンカノンは使いやすいのでほとんど全部この組み合わせでやっているのだが、レインボーコースだと後ろからゴリラやロボット、カッパの王様に追突されるだけでコースアウトしてしまうという問題点がある。コースアウトが致命的なコースなのでこれは辛い(運がよければ先頭集団が軽量級だけで構成されるから問題ないのだが)。

そこでクッパ+カロンカノンという組み合わせでやってみたら実に快適。次々に奈落の底へ落としまくりながら進めるのであった。しかし、他のコースではお話にならなかった。

_ こないだ地下鉄で見た本

地下鉄に乗るといろんな人を見ることができる。地下だからと言って季節感がないわけじゃない。受験シーズンになれば一面が菜の花ならぬキットカットで埋め尽くされたり。老子の言葉に表に出ずして戸外を知るというものがある。その顰に倣って自らを地下鉄の賢者と呼ぶことも在り(ばかですね)。

そんな地下鉄でのある日のこと。何やら一心不乱に読みふける男発見。その一心不乱ぶりが目に止まった。よほどおもしろくなければそうはできないだろうというほどの熱中ぶりだ。そこで表紙をのぞきこんでどんな本か調べたら、こんなのだった。

Freakonomics Intl: A Rogue Economist Explores the Hidden Side of Everything(Steven D. Levitt/Stephen J. Dubner)

「A Rogue Economist」にぴぴぴと来たね。とある事情も何もRogueという単語にはゲーム以外にも喚起される情報がある。それを名乗る人はこれまで1人しか知らないけれど名乗りと裏腹に飛び切りに質が高い情報を発信するという経験だ。

というわけで、きっとこの本も良いのだろう。とりあえずカートには入れた。

(サブタイトルを訳すと『快刀乱麻、無頼派経済学者が往く!』という感じかな?)


2006-03-05

_ 完結してしまった

私が男性だった頃〜番外編』。あーおもしろかった。

たぶんに文体の歯切れの良さと観察(そのものとその結果についての)の物言いそのものの歯切れの良い割り切り方(ちょっと違うな)が、内容のおもしろさそのものとシンクロしていて特別に面白く感じたのかも。

_ 国際対応と好き好きデータベース君

たとえば、メッセージはすべてDBに格納してあって、設定された言語にしたがってその言語に対応したデータを取ってくる。たとえばカラムを3個利用するとして、id, lang, textみたいな感じのところに'hello', 'en', 'hello'/'hello', 'ja', 'ハロー'とか。

で、せっかくそういうふうに作ってあるわけなのにstyleシート(もしかしたらHTMLそのもの)をブラックボックスの中に隠し持っていて、しかもFont名を決めうちで書いていたりするわけだ。styleシートをユーザーコード可能にするか、さもなければHTMLをテンプレート化して欲しいものだ。というか、結局、使い物にならないから全部修正することになるわけだし。っていうか、Font名だけの問題じゃないな。charsetを言語設定に合わせて変えていないという問題もあるし、なんというか、まだ何も考えずにUTF-8にするというのであれば良いのだがANSIのまま利用しているし。

かくして日本語はまったく表示されない。

しかもよくみたらテーブル自体の文字コードの設定が……(Create Tableさせるわけではなくファイル化してあってそのまま利用しなければならないようになっている――まあスキーマを見て作り直せばよいのかも知れないがデフォルトで山のように登録されていたり)。

しかも作りこんだツール群というのがExcelシートからDBへ登録するツールだったり。変だなと思いながら日本語メッセージを記述したExcelシートを送ったらそのまま化けたらしい(が、作業する人間には化けているのか正しい日本語なのかの区別はつかないとか)とか。

結局、どこでおかしくなったのかの切り分けさえつかない状態だったり。

ブラックボックスアプローチの最低の面がここにある。ある言語を利用した開発のプロがここにいるのに、ブラックボックスのせいで手も足も出なくて単なるメッセンジャーをやっていたり。

・UTF-8のテキスト(たとえばJavaのプロファイル)にしておけば、最悪それをエディターで修正できるのに、ブラックボックスなどこかのデータベースのどこかのユーザー/パスワードのどこかのテーブルに入っている(らしい)

・HTMLにしておけば、最悪それをエディターで修正できるのに、ブラックボックスな(以下同文)+ジェネレータプログラムという組み合わせ

・スクリプト(せめてXML)にしておけば、最悪それをエディターで修正できるのに、プロセススクリプトそのものをブラックボックスな(以下同文)+実行制御プログラム(これは別に良いわけでプロセスの定義がブラックボックスの中なのが問題)という組み合わせ

・登録作業を単一窓口でやるのではなく、オンサイトで登録可能なようにしておけば良いのに、(お話にならない)

というわけで、なかなかエキサイティングな土日を過ごすことになったり。


2006-03-06

_ 文字通りの影舞

最近、会社のメールボックスにspma(検索よけではなくて単なるタイポだけど、直すのが面倒だからそのまま、とこんな長いものを書くのは面倒ではないという矛盾が要点)ががんがん入ってくるようになった。影舞の影舞からだ。

大体がgmail.comを名乗っている。で、件名が@の左側。

ただ、影舞は本文をエスケープするから単に見苦しいテキストが来るばかりでおそらく引っかかってリンク(になってないし)をクリックする人はいないだろう。

疑問点:影舞にポストするプログラムを作ったと考えた場合、彼らはデバッグをしないのだろうか? デバッグすれば本文がエスケープされることは自明だと思うのだが。(自動的にURLはリンクとして表示するメーラがあるのかも)その場合でも、もっと効果的な読ませ方はありえるんじゃなかろうか。このあたりの詰めの甘さがプログラマーはUI設計がダメと言われる(誰からだ? どっかでそういう物言いを見た覚えがあるけど、気のせいかも)理由だろう。

#というか、そもそもメールに連動しているって知らないのかも。だとしたら、思いもかけない効果というわけだから怪我の功名と言えなくもない。(じゃなくて、副反応そのものなのか。Webで閲覧すればリンクはリンクになってるし。でもタグはエスケープされるからやっぱりゴミっぽく見える−−ってことはやっぱりデバッグしてないのか)

#メンテナンス中になっているから、対策をするのかな? どういう方法が取れるか、どのような方法が効果的か、考えてみたり。

#メールアドレスの有効性を確認するというのをちょっと考えたが難しい点があるかも(BTSならそれも有効だとは思うが)。単純に日本語(と認識可能な文字コード)の出現数を見るってのはどうか? テンポラリには効きそうだがまじめにやらないと結局は一時しのぎに過ぎないか。


2006-03-07

_ ハードウェアではなくソフトウェアで解決すべき問題

最近、朝といえる時間帯に電車に乗ることが多くてうんざりする。

どうして暴動が起きたり引っくり返したり、いっせいに右に寄ったり左に寄ったりして揺らしまくって遊んだりしないんだろうか? おれはやらないけど。

鉄道は飛行機などと異なり定員の考え方が安全という切り口(保安定員と呼ぶらしい)からではなく単なる目安に過ぎないそうだ。どうも安全だかららしい。

そうは言ってもスピード出せばカーブを曲がり切れなかったりするものだが。地下鉄広尾日比谷線の中目黒事故とか(は違ったかな?)。

結局は、車両メーカーの技術者がちょっとばかり頑張り過ぎたのが原因だろう。その結果、底も抜けず扉がいきなり開いたりもせず、運転手がへまをしない限り安全ということになり、結局はそのまま火にあぶればつくねができる(江口寿の漫画でゴジラが朝の電車を火であぶって中身を取り出して食べるってのがあってうけたけど)程度に人間が詰まれて行く。そんなに押すなよ。

そうではなく、ちょっとでも余分な荷重によってすぐに脱線、すぐに扉が壊れて車外に放り出される、底が抜けて轢殺体の山とかだったら、あんなところてん製造機状態にはなるはずがない。なぜなら、危険な乗り物であれば保安定員が守られるわけだし。

エレベータみたいになってれば良いわけだ。余分に乗った瞬間にブザーがブーブー鳴り響く。最後に乗った人はバツが悪そうな顔をして降りる。

そういう具合に、明治33年のころに車両製造技術者が頑張らなかったおかげで人身事故が続発した結果、大正年間には鉄道の人員についても保安定員によって制限することが当然となった。

その頃、日本にもホワイトカラーと呼ばれる労働者が生まれて、みんな丸の内とか新橋とかの会社と呼ばれる入れ物に朝は出かける習慣が根付き始めた。日本橋には百貨店と呼ばれる巨大な商業施設が生まれ定時開店という変わった試みを開始する。

でもまてしかし、定時出勤とか定時開店とかをやろうとしたが、それが無理だということが会社や商業施設の増加に伴ってすぐに判明した。なぜならば、同じ時刻に始めようとすると輸送施設(=鉄道)の定員にひっかかるためだ。

それでも最初はなせばなるの神風精神主義を標榜する企業があり、月曜は9時に出社し当時大流行したラヂオ体操をしようとしたりはしたものの、警官による厳しい取り締まり(定員オーバーでブザーが鳴っているのに降りない場合は、雇用者に遡及する厳しい罰金刑が課せられる)もあって、結局はあきらめることとなった。

なぜか海外ではうまく運用されているらしきタイムカードというものもあまり意味がないことが発覚。決められた時刻に全員が集まるということがそもそも不可能だからだ。

これでは効率が悪く、欧米列強に伍する帝国の建設に支障あり! 度重なる企業からの陳述によってそのとき政府が動いた。

選択肢は、鉄道の保安定員規制の撤廃か、職住隣接可能な住宅の都心への供給か。だが第3の道を我が国は選択したのであった。

それは電信技術と当時まだ実験段階に過ぎなかった映像配信技術の組み合わせにより人間を物理的に会社や商業施設という場へ運ぶのではなく、仮想的な場で会させるという方法である。

電信網の混雑に対する帯域の拡大は、物理的な場を占める鉄道車両による輸送能力の拡大より遥かに容易なことは明らかであった。

今からでも遅くないんだけどなぁ。

週休二日制だって役所と銀行を強制的に移行させて初めて一般化したわけで……と思ったが、既に役所も銀行もオンライン化されてほとんど足を運ぶ必要がないようになったのに、一般化されずに朝の電車が混雑してるのはなぜなんだろう? どうしてそんなに同じ時刻に直接顔を合わせることにこだわるんだろうか? おかしいね、さっちゃん。

鉄道会社も「通勤ラッシュ緩和のために時差通勤にご協力を」なんてなまぬるいこと言わずに、定員をオーバーしたら出発しない権限を運転手と車掌に与えれば良いのである。どうせ代替策はないわけだから、料金収入に影響するわけはない。最初のうちは上尾暴動とかが起きるかも知れないがすぐに慣れてしまって、どこの企業や商業施設も定時に始めるという悪習を捨てることになるだろう。だってどうあがいても来られないものは来られないのだから。

追記:bowezさんのハードウェアでの対策。なるほどと思ったが、新幹線のラッシュというものがあるらしいと思い出したので、ちょっと微妙な気も。みんな脛に痣を付けて出社するとかだといやだな。

本日のツッコミ(全8件) [ツッコミを入れる]

Before...

_ arton [携帯からじゃ編集できなかったorz。 後で直します。]

_ arton [>広瀬正のErosみたく電子技術の発達でWWIIに勝っちゃったりして 最初そう考えたけど、もっと過激に仮想的な会合で..]

_ るいも [そういえば昔、どこかの国の意見広告で「これが動物だったら動物虐待ですが、人間の場合はごく普通の通勤風景です」っていう..]


2006-03-08

_ http.sys

思いついたことがあるのでちょっといじってみる予定。

追記:ちょっとの予定が青木さんのDSLのコピー&ペースト地獄と化している謎。

_ カルロスゴーン

カル・ロスゴーンという表記を今見たが、ロス(損失)をゴーンさせたカルさんみたいなシャレなのか? 一般的な書き方なのか?


2006-03-09

_ 信長

その時、信長は宣教師が「オブリガート」と言うのを耳にした。「それはどういう意味だ?」

フロイスは説明した。感謝の意味だ。

「なるほど。それはお洒落だ。おい、お前ら、これからは礼を言うときは、おりがーとと言え」

以後、日本では「ありがとう」という言葉が使われるようになった。

徳川も6代目家宣の時代になって将軍侍講に抜擢された新井白石(言語学者でもある)はこの言葉に頭を抱えることになる。ポルトガルと国交を断って既に80年、そんな南蛮由来の言葉を礼に使うというのはいささか礼を失するのではなかろうか。そこで「有り難し」という仏教用語から派生したかのように歴史を変えることにした。

とか想像してみたり。

_ dl

dlに64ビット(つまりlong long)が欲しいなと思ったらdl2というのがあるのか。しかも、1.9には取り込まれているのか。となると1.8でdl2を使うか1.9を使うか迷うな……

本日のツッコミ(全4件) [ツッコミを入れる]

Before...

_ matobaa [一瞬信じてしまった。やられた :-) > おりがーと]

_ arton [信長は勝手な想像だけど、ポルトガル由来という説はあるそうです。で、信長だったらやりそうだな、と思ったと。]

_ はら [テイ・トウワの曲でオブリガードで始まりありがとうで終わるポルトガル語の歌があります。]


2006-03-10

_ まだまだありがとう

ドモアリガトミスターロボット

Greatest Hits(Styx)

などと口ずさむのはともかく(っていうか、出だしの雰囲気はバグルズよりもJDのオリジンみたいだな――しかしいつ聴いてもJDはグレートだ)、そういう年代で音楽を聴いてたせいでテイ・トウワって名前は知ってても意識的に聴いたことはなかったり(でも、電気グルーヴあたりだとポンキッキーズ見てたりして知ってたり好きだったりするわけだけど)。

そこで、こういうのも機会だから聴いてみるかと思ったが

EXPO EXPO(Lisa/Verbal/Taku/m-flo/Towa Tei/Dev Large/Umjanna/Bahamadia/Nipps/Chops/Vincent Galluo)

に入っている『アリガトウ』なんだろうか?

Towa Tei Best(テイ・トウワ/Ikuko Harada/UA/Arto Lindsay/Viv/Bebel Gilberto/Ayumi Tanabe/Joi Cardwell/Maki Nomiya/Chara/Cory Daye)

これに入っている『Obrigado(Dry Bebel Version)』なのは間違いないけどドライビーベルバージョンってなんなんだ?

しかし、いきなりCDを買うって必要がないことはありがたいことだとITMSを見てみると無いということがわかった(FlashってのとRobot――繋がるな――のやつはあったので幾つか聴いてみたり)。

本日のツッコミ(全9件) [ツッコミを入れる]

Before...

_  [Future Listening!、持ってます。Future Recall2にはボーカルなしのObrigado-me..]

_ はら [咳さんは、野宮真貴ねらいで持っているのだと思われます。:-)]

_ arton [結局、Bestを買いました。いやぁ、ラテンの血が心地よく刺激されますなぁ(流れていないけど)。というか、アートリンゼ..]


2006-03-11

_ http.sys途中経過

何を考えたかというと、FastCGI抜きで同じような効果を得られるんじゃないかということ。というか得られるのはわかっているわけだから、Windowsで手軽に動かすにはhttp.sysを利用すれば良い。ではそれをどう呼ぶかということ。

問題点としては、HTTP_REQUEST構造体にPCSTRとPCWSTRが埋め込まれることだ。構造体そのものは、unpackすれば取り出せるけど、外部由来の文字列ポインタからRubyのStringを生成する機能は無い(リファレンスを読む限り)。ましてPCWSTRにおいておや(においておやで正しいかどうか怪しい)。拡張ライブラリ(IntegerをポインタとしてString型を作るようなクラス)を作れば良いのだがなんか急に簡単ポンではなくなってしまった。

次に山ほどhttp.hに定義されている構造体をどう取り込むか。これはるびまの青木さんの記事を元に構造体に埋め込まれた構造体も処理できるようなDSLを作ったからOKと思ったら、パディングを忘れてたり。でもパティングはUSHORTが出るあたりしかないから手でいいやとやってみたらなぜか数が合わない。offsetofしまくるCのプログラムと、オフセットを出力するFieldクラスを作って突合せればよいのだろうが、ちょっと面倒。

それにしても、http.sys(httpapi.lib)はおもしろい。

_ 構造体のパディング

プリミティブについては、その型のサイズで割り切れる位置に配置。たとえばlong longなら0,8,16……、charなら0,1,2……(というかunsigned charがそうなのは知っていたが)。構造体や共用体はそのメンバ中の最大の型にあわせる(たとえばメンバの最大がshortなら0mod2)。かつ全体のサイズもその最大のメンバの0mod位置。


2006-03-12

_ cstruct

cstructというのを作った。一応RAAにも登録。

もちろん、青木さんの添削の真似。

具体的には、http.sysとのインターフェイスに利用するために、山ほどあるstructを手間をかけずに(EmacsのC-x(で定義できる程度)Rubyで使うため。問題はバッファの後ろに文字列をガンガン付けてくることでこれをunpackで取り込むために拡張ライブラリも付けた――他の利用方法があるか良くわからないので取り込むだけでfreeする手段は現時点では無し。)

ANSIの定義にはあたっていないのでMSDNが正しければという前提付きで、ANSI 3.5.2.1 の構造体のパディングと境界合せの仕様には合わせているつもり。

具体的にはこんな感じ。

  HTTP_REQUEST = Struct.define {
    # Request flags (see HTTP_REQUEST_FLAG_* definitions below).
    ULONG :Flags;
    # An opaque request identifier. These values are used by the driver
    # to correlate outgoing responses with incoming requests.
    HTTP_CONNECTION_ID :ConnectionId;
    HTTP_REQUEST_ID    :RequestId;
    # The context associated with the URL prefix.
    HTTP_URL_CONTEXT :UrlContext;
    # The HTTP version number.
    embed HTTP_VERSION, :Version;  #埋め込まれた別の構造体
    # The request verb.
    UINT :Verb;
...(こんなのが山ほどある)
    buf = "?0" * (HTTP_REQUEST.size * 4)
    recved = "?0?0?0?0"
    v = HttpReceiveHttpRequest.call(@handle, 0, 0, 0, buf, HTTP_REQUEST.size * 4,
                                    recved, nil)
    u = HTTP_REQUEST.read(StringIO.new(buf))
    if u.pRawUrl == '/test/hh/1'
      ...
    end

_ Hrsta

なんとなく買ってしまった

L'Eclat Du Ciel Etait Insoutenable(Hrsta)

だが、予想よりもひどいオルターネイティブっぷりにちょっと頭を抱える(後悔先に立たず)。

基本はアコースティック+アンニュイ女ボーカルなんだが、メタルマシーンかと耳を疑うようなノイズとか、なんと呼んだっけ? インダストリアルミュージックかな?

題名がまたわかりにくい。L'eclat Du Cielは直訳すれば天空の破片だが、眩しい蒼穹かも知れないし、どんとなった花火かも知れず。あるいはサーチライト(空襲/空爆の夜か?)かも知れず、スタンダードにはこの繋がりは出ていないので想像するしかない。

ライナーを見るとカナダ出自のようだ、このバンドか女性は。コンタクト先はすべてHotmailというのも何らかの印象を作っているし。

ジャケットはうだうだ系のヌーベルバーグ(トリュフォーのごく初期とかユスターシュとか)っぽいが、曲はそういう感じではない(でもアンニュイ系だからそうでもなくもないかも)。どいういうコンテキストのバンドなんだろうか、ちょっと不思議に思ったり。

でも、聴いているうちになんとなく好感を持ってきたり。


2006-03-13

_ 独裁者のあるべき姿

なんか最近ポルトガルが気になってしょうがないのは、少子化先進国だったりするからか、それともユーラシア大陸の東の端っこが西の端っこに興味を惹かれるというような地理的な感慨なのか、それはともかく、ポルトガル最後から2番目の独裁者のアントニオ・セラザールについてのウィキペディアの項目がおもしろ過ぎる。

たとえば「私生活」。わずかこれだけ。

私生活は謎に包まれていた。孤独を好み、素性の知れぬ2人の少女と暮らし、フランスの女性ジャーナリストが愛人だったという噂もある。

奥様、「素性の知れぬ2人の美少女と暮らし」ですよ。しかもそれが単なる「噂」。

その最期もまた、ドラマティク。昏睡状態の重態に陥ったものの2年後に覚醒。そして

そのころには政権がカエターノの手に移っていたため、彼の側近や身の周りの人間たちは、彼にショックを与えないため、その仕事場を病態に陥る以前と同じ状態に保全し、のみならず当時のポルトガルの動乱のことなどは一切記載されない偽の新聞を読ませ、サラザールが権力を喪失した落胆に見舞われないよう配慮した。甲斐あってサラザールはポルトガルの混乱を知らないまま、幸福に世を去ったという。

まったくもって

グッバイ、レーニン! [DVD]

しかもこの人、出自は経済学教授でデフレ政策でのしあがったんだったりして。

#ウィキペディアのポルトガルの項目は2人の大映画作家が抜けているのが気になる。オリヴェイラとペドロ・コスタだ。

ヴァンダの部屋 [DVD]

(ちゃんとDVD化されているのか)何しろ落ちてしまったので3/5(1/100とか書いているがいくらなんでも白髪三千丈)くらいしか見てないので購入予定。生活する廃墟、ノイズ、天井から降りかかる塵埃、壁の裂け目からの光、咳。顔。おお、ちゃんと映画を覚えているじゃないか。

_ パーソナルコンピュータを予見する

Bob Kahn: TCP/IPの父いわく、「IPアドレスを32ビットにしたのは……」

ううむ、おもしろい。

どう計算しても、256という数字は、はるか彼方にあるように見える。ところが私たちがすっかり見落としていたものがあった。パーソナルコンピュータの出現というものを全然予想していなかったんです。

クラスAのことだな(というかクラスが既に死語になってるんだっけかな、とか)とか思いながら、それは確かに1人1人がコンピュータを持つなんて考えないよなぁ、とか想像してみたり。で、その後Altoに言及して、すぐわかったと言っているのがクラスB以降というかクラス分けという概念の導入のことなのかな、と想像してみたり。オクテット単位のクラス分けからビット単位のサブネットマスクによる分割になったのっていつ頃だったっけ? とか気になって調べてみたり。

いずれにしろ、このボブカーンのインタビューは作った人間が現在の視点から見直して語るという点、語っている人間が過去の作業の評価に冷静(自分が手がけたものの短所を認めなかったり触れなかったりする人はいるわけだが、そうではない。IPv6への移行の困難をお任せモードで語っているところが逆にまた良い)という点でも価値が高く示唆に富んでいる。システムを作る人は、こういう知見をできるだけ多く知っておくべきだろう。

それと同時に、僕は福盛さんのフィルター(日本語化と抜粋個所)を通して読んでいる(視聴ではなく)のだが、これができる(=福盛さんが訳して抜粋してくれている、かつ読んでいる僕がその抜粋と訳に信頼を置くことが可能)というのは非常にありがたいことである、と感謝。


2006-03-14

_ Web2.0とDRY

さて、Web2.0(の時代)で問われるのは、いかにではなく何をだとする。

ってことは、いよいよもってソリューションの時代だということだな。

ハードウェアは出来合いのものを買ってくる。

OSも出来合いのものを買ってくる。買うのがいやならオープンソースがある。

ミドルウェアも出来合いのものを買ってくる。買うのがいやならオープンソースがある。

』アプリケーションも出来合いのものを買ってくる(の微妙な時期)。買うのがいやならオープンソースがある(わけでもないが、組み合わせ可能なオープンなサービスが無いわけでもない)。

ただ、サービスを統合したものをアプリケーションと呼ぶか、ソリューションと呼ぶかの違いだ。アプリケーションという言葉は比較的その意味だと低レベル(プログラムが見える)なので、それをソリューションと呼ぶ。

子供ころ読んだ理科マンガにこんなのがあった。

博士:フラスコにぬるま湯を入れる。さらに氷を入れる。「温度計で水温を計ってみるのじゃ」

子供:「はーい」

博士:「氷を取り出して底と中程、水面近くのそれぞれを計るのじゃぞ」

子供:「はーい」

博士:「どういう結果となったかな?」

子供:「底が1番冷たくて、次が中程、水面近くが1番あったたかいです」

博士:「では質問じゃ。池はどこから凍るかな?」

子供:「底からです。だって底が1番冷たいもん」

博士:「正解じゃ、と言いたいところがそれは大間違いじゃ。もしそうなら、魚も困るじゃろ」

子供:底から段々凍っていくために最後に魚が氷の上でピチピチはねているところを想像する。「うーん、でも……」

博士:「では、氷を戻して塩を入れてかき混ぜながら温度の変化を見てみるのじゃ」

の、子供が想像した凍る池を想像したり。

でも凍りつくこともない。DRYだ。

_ Microsoft .NET入門

Microsoft .NET入門―これだけ知っておけばなんとかなる.NETの基礎知識(新丈 径/arton)

新丈径さんとの共著の『 Microsoft.NET入門―これだけ知っておけばなんとかなる.NETの基礎知識 』です。.NET関係のコンセプトやテクノロジー(とカタカナで書きたくなるものを)をとにかく手っ取り早く俯瞰するための道案内という本です。

次の本の改訂2版になります。

Microsoft.NET入門―これだけ知っておけばなんとかなる.NETの基礎知識 (.NETプログラミングシリーズ)(アスキー書籍編集部)

Visual Studioをファーストクラスとして扱うように変えたり、.NET 2.0で追加されたテクノロジーを追加しています。逆に落としたのは、Javaとの比較(初版のアマゾン書評ではそれが評価されていたりしていますが、いまさら必要ないでしょう)、COMとの比較(コンポーネントAPIのC++とC#の比較。これ渾身の力作でここぞとばかりにCOMのメモリーアロケーション3原則について書いていたりするのですが)です。

なお、テクノロジーの道案内なので、残念ですが「初心者」向きではありません(「」が付いた初心者ですので誤解ないよう)。ITコンサルタントやMSDNから探す時間の余裕がない忙しい人に向いています。でも、MSILについては新丈さんの渾身の解説だったりするので深追い好きな人の知的好奇心も満たせるかも知れません。

_ DRY

いまさらOrthogonality and the DRY Principle(直行性とDRY原則)を読んで、いまさらながらに厳しい姿勢にちょっとびびる(固い言い方をすると膝を正す)。

それはそれとして直行性についてのヘリコプターのエピソード:

ヘリコプターは4つの主制御装置を持つ。フットペダル、……

なんでい、くだらないたとえ話だな。別に車にしときゃいいのに、なぜヘリコプターなんだ?

と思ったら、ちゃんと落ちがあった。

本日のツッコミ(全2件) [ツッコミを入れる]

_ きむら [NET入門買いました。読む時間がなくて積読状態ですが、消化できるよう努力します。]

_ arton [どうもありがとうございます。後ろのほうの各項目は独立しているので、ちょっと空いたときに目を通していただければ良いので..]


2006-03-15

_ Locomotive

単なるコンソール(ASRのruby consoleみたいなやつ)が欲しいと思う。

でもそこでrailsすると多分、組み込めなくなるからConventionってことなのかな? 規制緩和時代の1歩先を行く。

_ 政府の人間の言葉

その言葉は間違いなく重いわけなので、すべてのプロバイダーについてはポートを塞ぐとかパケットシグネチャから遮断するとかしたりするような、中国化が行われたりするんじゃないかね? で、例のアレで、ひとごとだと思って(むしろ帯域が空くので歓迎したりして)いるとなしくずしにあれよあれよと、で来年あたり、Googleさんが日本政府の意向を聞き入れた件で公聴会とか(でも、日本政府と米国政府の関係からいけばそれはないか――ということはむしろ悪いということだったり)。

_ ぐはぁぁぁぁぁ

coLinux
$cat /proc/version
$Linux version 2.6.10-co-0.6.2 (Karrde@callisto.yi.org) (gcc version 3.3.5 (Debian 1:3.3.5-8)) #5 Sat Feb 5 10:19:16 IST 2005
でapt-get install kaffeを実行したら
いろいろ: relocation error: /lib/libpthread.so.0: symbol _errno, version GLIBC_2.0 not defined in file link time reference
になるようになったよ。で、以後apt-getも途中で止まる、lsも止まる、これは1からやり直しなのか!? これは、しかし…… 追記:とりえあず直った
本日のツッコミ(全2件) [ツッコミを入れる]

_ Kazzz [使用しているユーザだけで帯域の8〜9割を食い潰す、と既にキャリアやプロバイダからは嫌われているんで、これがきっかけで..]

_ arton [なんかここ1ヶ月くらいの報道を見ていると変なふいんき(いや雰囲気だってのは知ってるけど)だからそろそろ来るかなぁとい..]


2006-03-16

_ Amazon

$0.15 per GB-Month of storage used.

$0.20 per GB of data transferred.

安いんだか高いんだかわからないなぁ。というか、なぜAmazonがこんなサービスを行うんだ? 負荷テストなんだろうか。

_ 直った

coLinuxがいかれた件はとりあえず直った(ように今のところ動いている)。

cd /lib
sudo mv libpthread.so.0 libpthread.so.0-
とやった(rmしても良かったのかも)ら動くようになった。

追記:rubyはpthreadを使ってなかったので、-e "Dir.open('.').each do |x| puts x if x.index('libc');end"とかls代わりに使えて助かった。っていうか、lsがなぜpthreadを使うんだろうか(と疑問に思ってもlsのソースを読まない腰の重さが最近顕著になってきていて反省したりもするわけである)。

本日のツッコミ(全2件) [ツッコミを入れる]

_ turky [O'reillyのSafariみたいなことを考えているのではないでしょうか。]

_ arton [なるほど。別のビジネスの前段階としてというのはありそうですね。 たとえば転送量で課金するのを固くやるために、まず実験..]


2006-03-17

_ 文字数

RubyのStringには文字数を求めるメソッドってないんだっけ?

と、調べる予定。

追記:なんだかんだと他のことをやっているうちに調べないのに天の声が聞こえた。でも

c:\home\arton>ruby -rjcode -Ks -e 'puts "日本語".size'
6

っていうのは試したんだけど……(つまりはjcodeを調べるということで)

(1分後)調べた。というか、リファレンス見なくてもjcodeならソースを見れば良いのか。

c:\home\arton>ruby -rjcode -Ks -e 'puts "日本語".jsize'
3

jを前置すると。(jlengthもある)

(2分後)というか、jlength(jsize)って何がなんでも手抜きが過ぎるような。300K(富豪ではない)程度のテキストとかには気楽に使えないな……

(30秒後)いや、gsubと正規表現という既存の実装の組み合わせでコンパクトに解決しているこのコードこそDRYというものかも。

_ 東邦亜鉛

名前は今知ったが、子供のころ3回くらい通りかかって猛烈なインパクトを受けた。そういう名前だったのか。

東邦亜鉛

確かに、とても奇妙でとても魅力的。奥多摩のもいいな。

本日のツッコミ(全3件) [ツッコミを入れる]

_ kdmsnr [私はレシピブックに載っていた方法をつかってます。 ruby -Ks -e 'puts "日本語".split(//)..]

_ arton [おお、どうも。実は天の声……なんて書かずにgreenteaさんもそれは教えてくれたんだけど、なんかしっくり来なくて(..]

_ babie [ruby -Ks -e 'puts "日本語".scan(/./).size' も。]


2006-03-18

_ 多いは少なく少ないは多い

Rubyで文字列の文字数(バイト数ではなく)を求める方法のまとめ。良い悪いは僕の好み。

  1. jcodeを利用 (greenteaさん)
    ruby -rjcode -Ks -e 'puts "日本語".jsize'
    • 良い点:文字列のメソッド
    • 悪い点:正規表現生成、文字列生成とか重そう
  2. split (kdmsnrさんというかレシピブック)
    ruby -Ks -e 'puts "日本語".split(//).size'
    • 良い点:シンプル
    • 悪い点:Arrayの生成、正規表現の生成とか重そう
  3. scan (babieさん)
    ruby -Ks -e 'puts "日本語".scan(/./).size'
    • 良い点:-
    • 悪い点:Arrayの生成、正規表現の生成とか重そうだし、splitよりも.が多い(もっともsplitよりscanのほうが1文字少ないから文字数は同じ)

という具合で、共通点をくくりだすと、正規表現の生成はあきらめるしかない(というよりも、シンプルなコードで-Ks, -Ke, -Ku全部を扱えるようにすることを考えると他に手段はないような)。

あとは、もう1つのオブジェクト生成が抑制できれば良さそうだ。

で、まずは

ruby -Ks -e 'i = 0; "日本語".scan(/./) { i += 1 };puts i'

ブロックは作ってるけど必要なメモリー量は最小かも。でもコード量は多い。ということはいちいちこんなものは(2案、3案と違って)書けない。

であれば

class String
  def char_count
    cnt = 0
    self.scan(/./) { cnt += 1 }
    cnt
  end
end

追記:/./m にしないと改行を1文字としてカウントしない(それはそうだ)。

なcharstring.rbをrequireさせるようにするのが良さそう。

ちなみに、レシピブックにはこういった「〜するにはどうするの?」が多数収録されているのでRubyを使うなら手元に置いておきたい本です。

Rubyレシピブック 268の技(青木 峰郎/後藤 裕蔵/高橋 征義/まつもと ゆきひろ)

追記:rubycoさんのeach_char。(デフォルト表示のツッコミはリンクにならないので)。

#一瞬、Rubystは文字指向ではなくバイト指向というフレーズを思いついたが、簡単にできるから無いだけだな。

追記:実際に数100Kのテキストで試すとイテレータ版はとても遅い

_ Enumerable#injectの拡張

上の続き。 成瀬さんからのトラックバック。Array#injectを使うのは、この場合は「Arrayの生成」が必要なのでリジェクトだけど、String#each_byteを使う例はまさに望み通り(正規表現さえ不要)のやつです。ここの各メソッドを$KCODEの値で呼び出すようにすれば良いわけだし。

で、上のを書いたときも思ったし、成瀬さんのString#each_byteを使う実装を見ても思ったのだけど、injectのデザインパターン(アキュムレータに初期値を与え、要素単位にブロックを適用しその戻り値をアキュムレータに与え、最後にそのアキュムレータの値を返す)をeach以外に適用できないかなと。

で、injectの第1引数に繰り返しメソッドを指定するようにしてみたり。

追記:Enumulatorを使えば良い

#!/usr/local/bin/ruby -Ks
module Enumerable
  alias :original_inject :inject
  def inject(*a, &p)
    if a.size != 2
      original_inject(*a, &p)
    else
      ac = a[1]
      self.send(a[0]) {|x|
        ac = p.call(ac, x)
      }
      ac
    end
  end
end
 
class String
  def char_count
    case $KCODE[0]
    when ?S
      trail = false
      inject(:each_byte, 0) { |n, c|
        if trail
          trail = false
        else
          if c > 0x80 && (c-32)>>6 != 2
            trail = true
          end
          n += 1
        end
        next n
      }
    when ?U
      inject(:each_byte, 0) { |n, c|
        if c>>6 != 2
          n += 1
        end
        next n
      }
    end
  end
end
 
p '日本語'.char_count

末尾がアキュムレータの評価にならない場合があるので最初nextの代わりにreturnとか書いてはまりにはまった。

追記:元々は最初のString#scanをそのまま(Arrayを生成せずにinjectデザインパターンを適用。引数のArrayは作ってるじゃんと思うかも知れないけど、でっかなテキストを与えた場合のArray生成が嫌だというのが理由なので、絶対にオブジェクトを作らないということではない)使いたかったのに、違うことをしている。

でもこれは格好が悪いなぁ(scanの引数をばらけさせてるところ)

module Enumerable
  def accum(*a)
    ac = 0
    nm = a.shift
    self.send(nm, *a) {|x|
        ac += 1
    }
    ac
  end
end
p '日本語'.accum(:scan, /./)
本日のツッコミ(全5件) [ツッコミを入れる]

Before...

_ arton [>Enumerator あ、そんなものが。 jcode#jsizeは数100K程度だと確かに速かったです。 というか..]

_ arton [違うな。scan版は改行を数えていないのか。だから/./mじゃないとだめですね。]

_ はら [ruby -Ks -e 'puts "日本語".gsub(/./, '@').size' というのもあります。]


2006-03-19

_ キーボード

買い物に失敗したという話。

PowerBookは冬の間はともかく、僕には許容しがたいほどキーボードの周囲が熱くなるので、外付けキーボードを使っている(持ち運ぶ時はジェルを使っているけど)。

それがロジクールのワイアレスキーボード。

元々はBlade 1500に付属しているロジクールのキーボードが結構使いやすいので、買ったのだった。

が、スペースキーの形状のせいか、微妙にひっかかりがあるのが気になってしょうがなかった。

というわけで、やたら評判が良い東プレのキーボードを買ってしまった。

が、おかしい。スペースキーの両側のキーで日本語/英語切り替えができないし、AltがEmacsでMetaキーとして使えない。キータッチは確かにふにゃふにゃなんだけど使いやすいことはわかったし、キーにひっかかりがないのも気に入った。でも、キーアサインがだめだ。もちろんキーボードドライバとか無いし。

で、悲しくなりながらもロジクールに戻したのだが、なんでこっちはOKなんだ? で、気になって調べたらロジクールが特殊だということがわかった。

実際には僕が買ったワイアレスキーボードにはMac用のソフトウェアはまったく付属していないのだが(ロジクールのサイトでもMacについては何も出てこない)、別に入れたロジクールのマウスのソフトウェアが同じロジクールのキーボードを認識してキーアサインを調整していたのだった。というかこれまで気付かなかったのだが、確かにキーボードの絵も出ている。最初にマウスのソフトを入れてシステム設定でいじったあとはさわりもしなかったので気付いていなかったということだ。

というわけで、REALFORCEをどう使うか(ミネビアのキーボードと交換するのが良さそうなのだが、切り替え器がPS2なのでそのまま交換はできない)したくもない思案中だったり。

_ ロットンとJava

ジョニーロットンがジョンライドンになった理由ってマルコムマクラーレンとの裁判が決着するまではマルコム命名のロットンを利用できなかったからだったように覚えているけど、まあ違っても大した話ではない。

Java2がJavaに次から戻るのって、マイクロソフトと和解したからかな、と思ったというだけのことだけど。


2006-03-20

_ aptitude

aptの時代は終わったと教わったので、早速coLinuxで使ってみようと思ったら入ってなかった。

apt-get install aptitude

を、取れた。

aptitude install kaffe

ううむ、何やら死ぬほどいっぱい取ってきている。コンソールを見ているとkdeやらvimやら、なぜそれを取ってくるのだというようなものまで。今見たらgnomeまで取ってきている。これはcoLinuxなのだが……

というわけで、スタンドアローンなら確かに手間要らずで良さそうだが、coLinuxだとaptのほうが必要最小限な取り込みの分、良いかも知れないかも、とか思った。

などと書いている間にもgnupgだのlibmailだのtetexだの、ディスクが足りるのかすごく不安になってしまったり。

追記:emacs-21、galeon、w3m、freewnn、gimp、perl、ttf-kochi……留まることを知らぬ怒涛のインストール大会と化している。


2006-03-21

_ おもしろい

RubyFS

1:55とか100行とかFUSEは後で見る。

_ rubyの-iオプション+-p

今まで\n改行のテキストファイルfooをノートパッドで扱えるように\r\nにするには
1. ren foo foo.bak
   type foo.bak > foo
とか
2. File.open("#{ARGV[0]}.new, 'w') do |f|
     File.open(ARGV[0], 'r').each_line do |line|
       f.puts line
     end
   end
   # 名前を入れ替える(Tempfile使う場合もあるけど)
みたくやってたのだが、単に
ruby -i.bak -p -e '$_' foo
で良いのか。これは楽だ。

_ 文字コード変換

ってことは、とにかくShift_JISにするには
ruby -i.bak -p -rkconv -e '$_=$_.tosjis' foo

で良いってことか(ちょっと自信がないのは、Kconvが$_(行数分しか情報が無い)を常に正しく判定できるのかわからないからなのだが)。

やっぱりまずいことがあるみたいだ。次のほうが良いらしい(MIMEをデコードする)。(追記:MIMEデコード以外にも実際にまずい例を成瀬さんに教わったので修正)

ruby -i.bak -p -rnkf -e '$_=NKF.nkf("-Esxm0",$_)' foo
(EUC-jpからShift_JISの例)

ところで今、ext/nkf/nkf-utf8/nkf.cを見たけど、デフォルトでMIMEデコードはFALSEになっていみだいだけど、何か見間違えてる? (mime_decode_fに気を取られてたけどmime_fが影響するからデコードされるのか)

本日のツッコミ(全5件) [ツッコミを入れる]

Before...

_ 成瀬 [mime_decode_fは > =?ISO-2022-JP?B?GyRCJCIkJCQmGyhC?= > ..]

_ arton [なるほど。納得しました。変えるのはどうなのかなぁ? 元々そのほうが良かったはずなのでデフォルト実行になっていると思う..]

_ 成瀬 [mimeデコードのデフォルト実行は1.7.0で入りました。ご指摘の通り、おそらく当時にUNIXを利用していて別の文字..]


2006-03-22

_ PATHの位置

HKCU\Environment\PATH

HKLM\System\CurrentControlSet\Control\Session Manager\Environment\PATH


2006-03-23

_ HAT

Open SolarisのHATの話がおもしろかったので後で書く。

_ 100$PC

ビルゲイツが単にLinux搭載に脊髄反射しただけで何もコンセプトがわかってないってことはわかるが、ITメディア(japan.linux.comから移動したのかな?)のロビンミラーが意義を考えたというのが、何やらわからない。

もしかしたら、僕が勘違いしているだけなのかな?

もしそれが1日中100$PCにしがみついていられるだけの代物だったら、きっと売り飛ばされてしまうと思う。

どう想像しても、まずそれは学校での利用を考えられているのだと思うのだが。

最貧国の学校というのは、そもそも学校というものはないか、さもなければ黒板とチョークしか無いというのが僕の認識なのだが。

そこに100$PCがあれば、教科書を提供することができるじゃないか。紙と異なり印刷コストも配布コストも不要だ(薪の代わりに燃やされることもないだろう)。教師が黒板に書ける程度の短文ではなく、長い文章(物語、論説、技術解説、法律、その他なんでも。多分、性教育もすごく重要なんじゃないかと思う)を読むことができる。共有ストレージが用意できれば、自分が書いた(打ち込んだになるところがちょっと微妙な気がする点で、みんなが英語を読み書きすることになるんだろうか?)ものをとっておくことだってできる。

そして、短期的な雇用増をねらうのではなく、教育水準の底上げによる貧困脱出というシナリオなのではないか? だからこその最貧困層なのだと思うのだが。

しかし、ロビンミラーが書いているものを読むと、全然違うもののようだ。

_ アシカのラムダちゃん

(追記:おお、潜在的顧客。えーと、発売は4月の終わり頃のようです。というか出てたらあさましリンクを貼るわけだし)


2006-03-24

_

かすかに咲きかけたようすに誘われて散歩。

山の上に虎を見たり思わぬ発見がいろいろと。

_ HAT

調べないと書けないので、とりあえずキーワードをメモ。

Hardware Address Translation

カーネル比較

DTraceを使ってみよう

Solarisのソースを読むなら、まずはHATの下から読め

―増月孝信氏

_ Bindows

最初貧乏人のWindowsでBindowsというシャレなのかと思ったが、いやーすげぇ(Bindows)。ここまでやれるものなのか。

(ただし、僕の常用しているP-III 1GHzじゃさすがにとろくて使いたくない――その意味でもPoorman's……は的外れだったようだ)


2006-03-25

_ なんでもFS

FSとして見られるというのはおもしろいなぁ。

今度はDwarf2FS

ゆくゆくは ptrace のインターフェースとか備えて DebuggerFS になるのです。」とのこと。

なんでもRDB(というかQueryというか)vsなんでもFSという2項対立を作って、どっちが楽しいか? とかどっちに惹かれるか? ってやるのは、かってのGUIvsCUIとかIDEvsEmacs(or vim)とかに似てるなとか。


2006-03-26

_ ライオンと魔女

小学生の頃に読んだだけなので、こんな話だったかな? と思う点もいくつか(と言っても映画化すれば多少の変更は当然かも知れないが)。空襲のための疎開というのはまったく理解してなかったみたいだし。

なんか妙に教授が馴れ馴れしいのに違和感があったり。でもそんなもんかな。

最初にクローゼットにルーシーが入るところは良い感じ。フォーンは雪が降ってるのにあれで寒くないのか? とか。

2つの陣営がぶつかるところは相当、好き。

あのスケールは、多分、赤と黒のなんちゃらの天と地ととか(これはこれで見事なものだったが)、人生は弦の如くとかよりも美しい(猿の惑星の新しいやつとかどうだったか印象が無い)。というか敵が迫ってくるシーンで初めて慄然としたり。確かに先頭を切って駆けていくというのは、これ全身胆なりということなのだな。

アスランがキリスト過ぎるのは大人になって見たからか、それとも映画だからか。でも、予言の意味を知った上での行動なのだからちょっといんちきかなとか。

なんか見ている最中、妙にキングコングを思い出してしまったり。ちょっと手抜きをしている気もしないでもない。が、1段低くなったところにうじゃうじゃ敵がいてそれが一斉に攻撃してくるところは、やはり美しかったので良しとする。

でも、最後の戻るきっかけの部分は違和感がおおありなのだが、原作もああだったかな? (多分、成長しないのではないか?)

ところで、アスランが最後去っていくと、フォーンが「彼は自由人だから」とスナフキンみたいなことを言うが、あの後きっと、どっかの森をかきわけると動物園の檻の中で、仲間のライオンに「やっと魔女を倒したよ」とか教えると「ばーか、また夢見てたのか」とか「いつまでたってもガキなんだから」とか散々バカにされるというようなシーンを想像したり。まあ他力本願な世界ではある。

_ S2-JSF

ぐぐぐぐぐぐうううの音も出ませんが何か?

1.0.8から最新の1.0.14に変えたらいきなりClassNotFoundですよ。

org.seasar.jsf.selector.RadioSelectorが見つからないとか。

しょうがないのでGoogle(s2-jsf RadioSelector)だ。(追記:uei.co.jpってのはひどいな。本物を食ってしまっているくせに表示ができないじゃないか。最初Googleのキャッシュを見ていたせいで気づかなかった)

たとえばリリースノートの代わりとしてひがさんのはてななりS2Wikiなり、MLなりで引っかかるとは思うわけだし。

引っかかるけど、RadioSelectorを追加したからばっちりね、みたいなのしか出てこない。

しょうがないのでソースの突合せ。で、InputRadioSelectorが見つかったので、こんどはs2-jsf InputRadioSelectorで検索してみる。置き換えたよ告知とか引っかかるかなと思ったのだが……無いな。

これが、1.0.8と1.1.0というのなら話はわからなくもない。でも同じメジャー・マイナーのパッチ番号違いでクラス名を変えるのか?

クラス名を変えるにしても、一度リリースしたら少なくても同一メジャー/マイナーリリース中は削除したらいかんだろうと思う。

・存続クラス(InputRadioSelector.java)
public class InputRadioSelector ... {
    ...
}
に対して
・削除候補クラス(RadioSelector.java)
/**
 * @deprecated replace it 
 *    with {@link org.seasar.jsf.selector.InputRadioSelector}.
 *    after release of s2jsf-1.1.0 this class will be no longer exists.
 */
public class RadioSelector extends InputRadioSelector {
}

と、しておくべきではないか?

いや、そうではなく、jsf.diconもリリースが変わったら置き換えなきゃいかんのだ、という言い方もありえるかな? でもそれは違うだろう。なぜなら利用しない(新たに追加される)クラスは登録されている必要はないのだからだ。っていうかパッチレベルのリリースというのはそういうものだという決まりがあるわけではないから、Seasarのリリース管理ではパッチレベルでもがんがん名前を変えるというのであれば、それで終わりなのだが。しかしパッチレベルリリースの都度jarとは別にdiconも置き換える必要があるのなら、diconもjarに入れておけば良いように思える(つまり、置き換える必要があるべきとは思わない)。

追記:というか、S2JSFはともかく、S2DAOのほうは追加とは言えdiconを反映させなきゃナルポ。ドキュメントのdao.diconの修正希望(気のせいじゃないと思うけどFieldAnnotationReaderFactoryをcomponent要素群の先頭に追加する必要があるんじゃなかろうか)。
本日のツッコミ(全1件) [ツッコミを入れる]

_ babie [原作もああです。成長します。]


2006-03-27

_ Vistaの延期はおれを直撃

ああ、MSDNは1月で期限切れなのだった。

_ Office2007

お前もか……

_ お代官様

わかりましただ。年貢は毎年ですだ。


2006-03-28

_ Rubyでデッドロック

スクリプトがいきなりデッドロックだと言い出したのでびっくりして(スクリプトではなく)eval.cを眺めたら、なるほど確かにスクリプトのバグだった。

うんと短縮するとこんな感じ。

#!/usr/local/bin/ruby -Ks
require 'thread'
 
q = Queue.new
Thread.new do
  q.deq
end.join

実行すると次のようになる。

test>ruby dl.rb
deadlock 0xf63c8: sleep:-  - /usr/local/lib/ruby/1.8/thread.rb:281
deadlock 0x10d678: sleep:J(0xf63c8) (main) - dl.rb:5
dl.rb:5:in `join': Thread(0x10d678): deadlock (fatal)
	from dl.rb:5

追記:考えてみたら、これはスクリプトのバグを示しているのに、ソースを見なければメッセージの意味がわからんという困ったやつだな。というわけで読み方の説明。(追記の追記:スクリプトのバグじゃない可能性があるかも知れないのでwait_forの内容をまじめに出してるのかも)

deadlockという行はすべてのスレッドの状態を示す。

deadlock 0xf63c8: sleep: -  - /usr/local/……
            A       B    C  D      E
  • A: スレッドの参照
  • B: スレッドの状態
  • C: スレッドの待ち状態理由
    • F(x): ファイルディスクリプタxで待ち
    • S: IOセレクション
    • T(x): タイムアウト待ち(xミリ秒)
    • J(x): スレッドxに対してjoin
    • P: プロセスウェイト
    • -: それ以外
  • D: メインスレッドかそれ以外か
  • E: ソースファイル:行番号

メインスレッドはワーカスレッドの終了を待つ。ワーカスレッドはエンキューを待つ。したがってどのスレッドも動けない。

デッドロックというのはたすき掛けの競合状態をさすと思いこんでいたので、最初、原因がわからなかった(もちろん本当のスクリプトは遙かに複雑な仕組みだ)。

RubyがOSネイティブスレッドを利用するようになっても、こういう細やかな制御はできるのだろうか? すべての割り込みやシグナルやOSネイティブなキューによる実行状態への遷移を見誤ると無意味にデッドロックと判定されて困ることになるし、かといって永遠に待たれるのはバグを見つけるチャンスが相当減ることになる。

ちょっと考えてみたが、OSネイティブスレッドを利用した場合は、いずれにしろ、すさまじく限定された範囲でしかデッドロックは検出できないだろう(dlを利用して直接OSの機能とか呼ばれたらお手上げだ)。

プログラミング言語によるバグ検出というのは、せいぜい静的型チェックとか文法エラーに毛が生えた程度のものを想像していたのだが、現在のRubyの実行時のバグ検出能力は遙かにレベルが高いな、と思ったのだった(言語ではなくスレッドライブラリがうまくできているのだ、という言い方も出来るのでちょっと違うかな?)。

_ すげーよマイクロソフト

知らぬはおればかりなりなのだとは思うけど、良くまあ、このドメインを取得できたものだな。

Windows Live Beta

追記:いかん。つい遊んでしまったが、相当うまくできている(マシンとネットワークが非力だからかいまいちに感じるところもある)。

#Proxy.js

本日のツッコミ(全6件) [ツッコミを入れる]

Before...

_ arton [上のdlのやつだけど違った。現在のRubyでネイティブな待ち状態になるAPIを呼べば、全部が止まる(特定スレッドが止..]

_ KM [テクマスクリプト、もとい。素朴に考えると待ちに入る時に原因のほうを辿るような実装なら自分がいるようならアウト、とかで..]

_ arton [ネイティブな待ちはRubyには見えない(し、見える必要もない)という感じですかね。 たとえば、ネイティブAPIでSl..]


2006-03-29

_ 電源飛んだ

どうも反応がないと思ったら電源が落ちてたし入らない。とりあえず買い置きと交換。

HDDからは異音がするしちょっと危ないかも。

_ というか

無茶苦茶おかしいぞ……

追記:disp_referrer2.cacheが壊れていたようだ(チェックせずに捨ててしまった……が、ちょうどそのころ落ちたんだろうということで)。

_ Katmai(で合ってるか?)

電源ユニットを交換するために久々に蓋を開けたら、カトマイ(開き直ってカタカナ)コアのP!!!が出てきたが、妙な石(というかカセットというか)だな、としげしげと眺めてみたり。今となっては古色蒼然たるたたずまいの中にも凛としたものを感じる春の宵であった。


2006-03-30

_ 言語DRY

let a = 3

と書く人は

a = 3

a = 3;

a := 3

とか書く必要はない?

RailsってYAMLを例外として全部Rubyで(一部、特別な場合にSQLも書くが)書けるというのもDRYのうちのように思う。

……

ちょっと違うな。

おれは日本語を話す書く読む。

せっしゃは日本の言葉を読み書きそろばんざんす、はいざんす。

あたいが話したり書いたり読んだりするのが日本語よ、文句ある?

僕は話す。日本語を。そして書く。そして読む。おお大空よ、今日も青いぞおなかが減った。この想いをどこへ捨て去ろうか。

とか、おなじことをどうでも書ける。同じ言語で。

というのに近いのかな?

詩というのはDSLだ。

ポポポポポポポポ、ポエ、ポエ、ポエ。む。

_ この感覚

読み進められないのは、まさに手を動かしながら読み進めたいという気持ちにさせられたのに、手を動かせる環境にいられる時間をどうにもとれない

−−\ay diary

こういう感覚って良く味わうなぁ。すごく実感がある、とても歯がゆく、それでいて実際に手を動かしているところを想像するとなんか幸せになるような、そんな複雑な感じだ。

(とここにリンクを貼りまくる予定地。幸福王子本とか、無能本とか、治水工事本とか)

_ winhttpsys.rbという予定

ぜんぜん、それやる時間がとれないというか、時間がとれる場合にはその環境がなく、その環境があれば時間がとれない。

こないだのcstructは、winhttpsys.rbのためのヘルパーで、ではwinhttpsys.rbとは何かといえば、XP SP2や2003 Serverのhttp.sysとダイレクトにインターフェイスするRubyスクリプト用ブリッジなのだ。

ようは、http.sysを持つWindowsではFastCGIの代わりにhttp.sysを利用してWebアプリケーションが動くという予定の代物。当然、キャッシュもhttpsysのカーネルキャッシュに一致させてしまう。もちろん、rails用だ。

結果的にはRailsを一番高速に実行できる環境をWindowsにしてしまおうというものだ。

とは言え、スレッドの問題があるから、2つ、3つとプロセスを増やす場合は、工夫が必要となる。し、URLを変えなければならないという(当たり前だが)http.sysの決まりがあるから、クッキーとかなんかいろいろ面倒もありそうだ。というわけで、1アプリケーション=1プロセス固定になる。(または、工夫を簡単にできるような仕組みを作るとか。urlにセッションIDの如くプロセス識別子を入れてやればよい)ので、必ずしも最速環境になるわけじゃない。でもカーネルキャッシュは効くだろうな。(代表URL方式を使って、あとは交互にプロセスを示す識別子をURLに挟み込んで交互にふるというような方法くらいしか思いつかないのだが、というか、そこまでも行ってないわけだ)

こないだ一瞬空白の日があったのだが、fastcgiのインターフェイス調べるのが面倒になってそのまま放置されてしまったのであった。

#あと1ヶ月はやれそうもないから、ネタだけ放出。今作れば、WindowsでRailsの決定打だよ。

#Cで拡張ライブラリとして実装すれば簡単(fastcgiのインターフェイスを調べる必要はあるわけだが)なのだが、なぜかRubyで書きたくてcstructとか作ってたので肝心の実装に進めなかったということだったり。


2006-03-31

_ なんだこりゃ?

彼女専属のSEになる本―彼と彼女のためのパソコン再入門(高安 正明)

なんか、悲しくなってくるようなというかなんというか……

23:50あたりに発見

さらにネット株なども紹介

1月までの恋だったようだな。

_ aunit

aunitというHTAベースのWebアプリケーションの自動テストツール(mumrikさん作)。おお、これは楽だ。

もっとも、最初にExplorerにMSHTAを教えてやる必要がある(XP SP2ではHTAの実行は初期状態では禁止になったのか? なので一応無制限解除はしなかったり)のと、ノートン先生が大騒ぎするのが(テストスクリプトの読み込みにFileSystemObjectを利用しているのが原因)いやんではあるが。

#なぜかカテゴリー表示をすると携帯サイズになってよみにくい(MSNがFirefoxに意地悪してるのか?)。

追記:ノートン先生だけど、FileSystemObjectをnewしているのがHTAそのものじゃなくて、拡張子js(UnitTest.js)なファイルだからだとは思います。ちなみに、現在はいくらやってもノートン先生怒らない。予想としては、MSHTAがキャッシュしたUnitTest.jsを読み込む(=拡張子がjsではない=ノートン監視対象外)からかな、とか。それにしても、最近いじってなかったけどやっぱりHTAはおもしろいなぁ。

_ Rjbで問い合わせ

One-ClickはMSVCRT.dllとリンクしているのだが、それに対してVC.NET 2003でRjbを作って(MSVCR71.DLLとリンクされて)インストールしたらSEGVという(調査結果になった)わけだが、やっかいだな。

rbconfig.rbにどのMSVCRTとリンクしたのかを保存しておけば良いのかな?

#だめか。MSVCRT.LIBにMSVCR71.DLLという名前が埋め込まれている。

本日のツッコミ(全2件) [ツッコミを入れる]

_ なかだ [msvcr71-ruby18.dllという形でDLL名自体が変わりますから、CONFIG["RUBY_SO_NAME..]

_ arton [なるほど。それを訊けば良さそうですね。]


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|

ジェズイットを見習え