flat7th

* 日々のメモ2007

created 2011-05-08 modified 2011-05-08 

0110

リンク備考
GNU Common CPP FrameworkC++のクラスライブラリ。現在はBayonneというソフトが主に利用
Georg's Brave GNU WorldCommon C++についての解説がある
The Hoard Scalable Memory AllocatorMS系開発誌のお墨付きメモリ管理ライブラリ

0117

家にある VisualC++ 2003 では 可変引数マクロが使えない。
2005 だと使えるらしい。

ここ数年 Linux と gcc ばかりだったのでショック。

MS の VS Expressエディションのページ

0123

ログ関数備考
RegisterEventSource
RegisterEventSource
DeregisterEventSource

タイマ関数備考
CreateTimerQueue
CreateTimerQueueTimer
DeleteTimerQueueTimer
DeleteTimerQueueEx

I/O関数備考
ReadFileEx
WriteFileEx

WinSock API備考
select
WSAAsyncSelect
WSAEvenSelect

.Net API備考
Poll
Select

WindowsではUnixのselectに直接マップされるのはWinsockのselect系しかないみたいで、ファイルI/Oを同列に扱えるのはなさげ。

Windowsでファイルとソケットをまとめた概念で、かつシングルスレッドで読めるところから読む、書けるところから書く、というと、ReadFileExとかWriteFileExとか。
でもこれはselectとはちょっと別の概念(Unixでも非同期I/Oっていうとselectとは違う概念なのよね)。


WSAAsyncSelectは、ウィンドウアプリケーションのイベントループに対してメッセージを投げる形式。マウスやキーボードイベントとソケットイベントを同列で書ける。ウィンドウ不要の場合不適。

WSAEventSelectは、ウィンドウがないアプリでも使えそう。これは、単一のソケットに対し1つのイベントオブジェクトを結びつけるもの。で、読み書きなどのどれが可能になったかは、WSAEnumNetworkEventsを呼ぶとビットで分かるようになってる。


あー、ファイルI/Oと標準入出力は、また別っぽい。
CreateFileとかGetStdHandleとか


0220

http://x.cygwin.com/docs/ug/using-remote-session.html
http://x.cygwin.com/docs/faq/cygwin-x-faq.html#xdmcp

0305

以前、LinuxというかUnix系で、selectを共通ライブラリで行って各プログラムにやらせない、という方針で成功しているライブラリを見た。ファイルも標準入出力もソケットも、全部共通化して扱えて、使いやすいうえに、シングルスレッドポリシーで貫かれたライブラリであり動作がとても速かった。

Windowsならどうやればうまくいくのか、と最近考えている。

ためしにselectを調べると、WindowsではselectはWinSockの一部として実装されており、標準入出力やファイルを共通に扱えない。
それにWinSockのselectはファイルデスクリプタをゼロ個渡すような使い方はエラーとなってしまうし、rfdとwfdだけでなくefdも使わないと取得できない情報があるし、帰ってきたFDの数がゼロなのにタイムアウトじゃないことがある。端的に行ってUnix系との互換性が非常に悪く、意図したように使えない。

Windows界では非同期I/Oという用語がよく出てくるが、これはバッファの使い方(ライブラリインタフェース)がselect方式とは大きく異なる。
どうも、MSDNライブラリでは非同期I/Oと、同期的だが非ブロッキングなI/O(Unix系でselectでできること)とが混同されていて、それが無用な混乱を招いている気がする。

Windows界の「非同期I/O」は、Unix系での「シグナル駆動I/O」に近いのかも。

Unix系がTCP/IPレイヤやカーネルレイヤでやっていることまで含めれば、同じようなことはできる気がしてきたけど、selectだけじゃなくてopenとかread,writeに相当する処理もラッパを用意しないとだめポ。
また、使うAPIはselectよりWaitForXXXObjects、.netならWaitHandleクラスのほうが適切っぽい。

それならいっそ、selectじゃなくてepollのインタフェースを参考にはできまいか。

調べているときこれに当たったのでちょっとメモ。
リンク備考
userver projectuはマイクロ(μ)の意味らしい

0306

http://www.kegel.com/c10k.html

たくさんのクライアントを高効率でさばくサーバプロセスの設計問題を
C10K(1万クライアント)問題というらしい。

まだ悩み中

アレ(Z)のイベント処理に一番近いものを作るにはWaitForMultipleObjectsを使えばよさげ。

WinSockLinux pollLinux epollやること
WSAEventSelectstruct pollfdの作成、設定epoll_ctl1個のソケットと、そのソケットについて待っているイベントをあらわす1個のデータを作る
WaitForMultipleObjectspollepoll_wait上記データの集合に対しタイムアウト付きで待つ
の対応があるとみた。

しかしWaitForMultipleObjectsは1スレッドにつき64個しか待てない。しかもファイルやコンソールとの統一性はなさげ。

Windowsでファイル、ソケット、コンソールをまとめて並列に動作することができるのは重複I/Oのみなのか...

悩み中だが、ちょっとひらめいた。
Windowsの重複I/Oに対応するのは、アレ(Z)でいうとCLIのやり取りだと思う。

  • 長い処理を続行するためにはコールバック関数を設定して抜ける
  • んだけど、終了時の処理も同じコールバック関数を使う
  • コールバックされたら、まず終了で呼ばれたのか続行で呼ばれたのか判定
  • 続行なら、やりたい仕事を続ける

Unixをこっちにあわせれば統一ライブラリができそうな気がス。

http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Windows+A4CE+IO


http://www.datanerds.net/~mike/libevent.html


0309

DCEのRPCは無料でドキュメント公開されてないのかと思ってたが、
ぐぐったら出てきたのでメモ。

リンク備考
CAE Specification/DCE 1.1: Remote Procedure CallDocument Number: C706
Transfer Syntax NDR

0326

利用側のスレッドモデルを規定できないクラスライブラリを書くという難しい作業に手を染めてしまった。

リンク備考
IBM:スレッド・セーフの特性についてクラスライブラリ提供者がスレッドセーフをドキュメントにどう記述するかのガイド

Javadocではスレッドセーフに対する標準的な記述法(Javadocのタグ)が存在しないみたい。
ぐぐったら、Doclet を拡張して、メンバごとにスレッドセーフかどうかをtrue/false/不明 で表示できるようにしたひとがいた。

.Netでは、クラスごとに このクラスはスレッドセーフです とか、staticメンバはスレッドセーフだけど非staticメンバはスレッドセーフとは限りません、とか文章で書いてある。

.Netのやりかたは適切だと思う。メンバごとに確認するのでは煩雑だ。
かといってライブラリ全体で決めることは一般的に難しい。
あと、ほとんどのクラスは単一のスレッドからのみアクセスされるだろうという楽観的な予想も入ってると思うけど、それで適切だと思う。

なお.NetのSocketクラスは「スレッドセーフです」とのこと。

ふう

利用側のスレッドモデルを決定できる念力をゲット
...できたと思う...
これで仕事が楽になるはず

2009/2/16 IBMのページへのリンクがリンク切れしてたので修正。

0328

0403

リンク備考
ソケットの重複した I/O と、ブロック モードおよび非ブロック モード文書番号 181611

ブロッキング・非ブロッキングとオーバーラップI/Oは別の概念だよと
明記してあるページ。

あと面白かったのが
SO_RCVBUF および SO_SNDBUF オプションを使用して
TCP スタックの送受信バッファを 0 に設定すると、
基本的に、I/O 呼び出しで指定されたバッファを使用して
直接 I/O を実行するように TCP スタックに指示することに
なります。
だって。知らなかったよ。

0412

アレ(Z)のイベント処理を、Windowsでどう書くか、また同一概念でUnixでもWindowsでも書けるようにライブラリを設計するにはどうするか、という話のつづき。

メインループをライブラリが持つという概念はいいとして、Windowsの重複I/Oで代用するには(バッファポインタと長さを先に渡す必要から)、Unix側をWindowsにあわせる(I/O関数を先に発行して結果をコールバックしてもらう)必要がある、と思っていた。
この方式だと、I/O関数の数だけイベント登録のクチを用意してやる必要があって大変(add_readとadd_writeだけじゃなくて、add_read, add_accept, add_write, add_connect, ... を作る必要がある )。

実際それでもう作ってしまったわけだが...


glibの最新を見たら、Unix方式(selectを先に発行してI/O関数で待たされなことを確認してからI/O関数を呼ぶ)にWindowsをあわせるやりかたで実装されているっぽい(それが実現可能であるっぽいということ)。

どうやらopenしたらライブラリが別スレッドを作って、ブロッキングでreadを発行するとか。それで、そのバッファはライブラリが管理するバッファで、ユーザには直接読み書きさせず、関数を経由させる、と。

やっぱりあれだ。薄々思ってたとおり、Unixでいうioレイヤ(int fdを管理して、オープンしてるやつの配列をもってたりするらしいあのへん)がWindowsにはないから、そこをライブラリが作ってやるってことだと思われ。

だけどそうすると1プロセス64スレッド問題にぶつからないのかな?

ていうかもしかして、重複I/Oって実は内部で別スレ起動してる?いやいや、DirectX風の考え方(ハード実装者とソフト実装者の間を取り持つ)でやってくれてると信じたい...

ともあれ重複I/Oにインタフェースをあわせる方式でUnix側でも組めたし、Windows側では重複I/Oを使って別スレを使ってないからか64を超えるイベントを同時に処理できてるし、まぁこれはこれでよかろう。


うーん、でもアレだ。忘れてた。

少なくとも.Netでは、重複I/Oのコールバックは別スレッドでした。
だからそこの部分(発火済みイベントリストにつなぎかえるところ)だけ自前でスレッド排他したことでした。

どうやら検索で飛んできたかたがひとりおられたみたいですが...
WaitForMultipleObjects ではなく、WaitForSingleObject (相当の.Net処理)でいけますた。「発火済みイベントリストに追加したよ」とメインスレッドに通知すると。

あと、少なくとも私の開発環境では、.Net の Select() は、誰も読み書きOKになってないのにブロック解除してくれやがる(Select()が帰ってきてしまう)というとんでもない動作をしていて、無駄にCPU使用率が100%になっていました。

重複I/Oを使い、Select() をやめたら解消しました。

0413

gprofのような実行時間プロファイラの.Net版が絶対あるはずだ、と思ったらやっぱりあった。

リンク備考
NProf

MS社謹製の「プロファイラ」も見つかったが、こちらはガベージコレクションが主な関心らしい。

リンク備考
CLR プロファイラの使用方法

0419

gprof のようなプロファイリングツール、 HP-UX 用のメモ

  • gprof
  • caliper
  • prospect

gprofのgってGNUのGかと思ってたら「gprofはカリフォルニア大学バークレイ校で開発されました」だそうで。Call GraphのGなんだね。

リンク備考
性能監視ツールHP のまとめページ。HP Caliper、HP GlancePlus(OpenView)、iostat、sar、top、vmstat などの記述あり。
HP Caliper performance analyzerHP Integrity サーバ用。Linux版もあるらしい
Prospect performance toolHP 9000 サーバ用。

0420

用語「トランザクション」って

ハード屋さんの用法は 「要求送信で1トランザクション、応答送信で1トランザクション」だし、とあるソフト屋の用法は「要求~応答で1トランザクション」(ハード屋の言うトランザクションを複数含む)だし、リレーショナルDBでの用法は「コミットまたはロールバックで区切られる一連の操作」(ソフト屋の言うトランザクションを複数含む)だし、

言葉の意味が文脈によって違う...と思っていたのだが、違うな。
辞書の記述どおりで解釈すればよかったんだ。つまり「意味のある一連の処理」。

だから、ハード屋さんは「転送」に着目していて、ソフト屋は「リモート処理」に着目していて、DB屋さんは完全性を保った状態変化に着目している、と考えると、全部同じ言葉を使ってるけど間違ってないじゃん、となる。

母国語でなじみのない言葉をすべて専門用語であると勘違いしてしまうクセがそもそものハテナの始まりであったと。
もともとあいまいな意味しか表さない言葉であって、本質的に「それって具体的には何?」と、文脈に応じて確認しないといけないわけね。

0423

ガベージコレクションについてメモ

項目メモ
参照カウント型循環参照問題を解決できない
マーク&スイープ型
ジェネレーション型

D言語はGC型言語だそうで...

私は勉強不足なのか、GCに懐疑的。

確かに、メモリ管理コードを書きたくないとか、使い捨てプログラムばかりを書いているプログラマにとってはいいかもしれない。

でもプロが書くべきプログラムはそんな使い捨ての領域じゃなくて、最低速度保障が求められたり、連続運転の安定性が求められる領域じゃないの?

誰でも一定以上の技術で釘が打てるツールは、確かに有用だと思う。
だけど、そのツールでどういうビジネスをやるか。
単価の安い大工をたくさん集めて、共通のコミュニケーション言語もあやふやな状況で、粗悪品を大量生産する方向に向かいはしないか。

私はGCやメモリ管理について勉強不足なのだろうか?


うーむ。とりあえず
GC.SuppressFinalize(this)をいつ呼ぶべきで、いつ呼んではいけないのかが、いまだに腑に落ちていないし、「マネージドリソース」を一言で言い切る説明をいまだに見つけられないし...とにかく簡単ではないということはわかった。

.Net 言語の開放処理の本質を理解するには、言語を超えて .Net を理解しないと難しいらしい。
デストラクタ、ファイナライザ、Disposeメソッド、Closeメソッドなど複数のメソッドがある意味、またデストラクタやファイナライザの意味が C#、VB、マネージドC++等、各言語で異なる理由、GC が必要とされる背景がどのようなものなのかなど。
ハードルはそれなりに高い。
例の「自分ならどう実装するかを自分自身で考えないと真には理解できない」問題に帰着している。

言語設計者の甘言通りのプログラミング環境(明示的に開放する言語を使うより速くて安全なプログラムを誰でも作れる)にはならないと思う。

「.Netの中の人」がどう動いているかを理解するという点を損益分岐点として(そのような点を越えることができる有能な設計者のみが)より速くて安全なプログラムを作れるようになるのだと思う。

またそのような有能な設計者なら、「そんなコストをかけるだけの将来が.NetとMSにあるのか?」「そのようなライブラリを自分で書く(書かせる)ほうがよほど身になる(部下・下請けが育つ)のでは?」という疑問を持つだろう。

パターン

上とはぜんぜん違う話。

パターンについて、各論文のおいしいところを拾ってまとめているMS社員の文書があったのでメモ。
リンク備考
パターンを使用してソフトウェア ソリューションを定義する

0425

memo/20051221のところに書いていた、多重継承の話を整理していてふと思ったこと。

多重継承が要るか要らないかの議論の最初で、「多重継承は必要だ派」が

いろんな物事を「オブジェクト」の概念で整理しようとしたとき、整理する軸が1本だけっていうのは、数学を例にとってみても貧弱でしょ、だから、多重継承はきっと必要だよ、ジタジタ

と言っていたのではないかと。

それに対して現実に対する直感の高いひとたちが「多重継承をなくすべきだ派」となって、「現実的に言語を実装するのにこんなに大変だし、実際それって何のメリットがあるのさ」と言ったと。

整理してみたら継承には
  • 実体継承(差分プログラミング)
  • インタフェース継承(利用側が使えるインタフェースを保障する)
  • データ継承(データの多様性を継承で表現する)

があって、よくよく考えたら、多重継承が、ソフトウェア工学的な観点で「有効に」機能するのはインタフェース継承だけだったと。

差分プログラミングについてはほとんどウィンドウシステムだけに有効な単なる語彙のひとつであったし、データ継承については今ではテンプレートを使ったり、継承ツリーを工夫したりすれば多重継承を解消できる。


継承って実際にはあんまし使えないジャンと言われた時期があったり、よーしパパ、パターンという考え方をプラスしてこんなに継承が役に立つ例を挙げちゃうぞとかいうひとがでてきたり、別軸としてテンプレートの概念が出てきたり、そんでそういう机上の細かい議論よりうんと現実の問題世界に近い「マルチパラダイム」で喝破するひとがでたりしたと。

穴に向かって独り言でした。


はて

でもアレか。「差分プログラミングは使えない」と烙印を押すのはちょっと性急なのかな?

私が「ソフトウェア工学で」というときの前提には
  • プロジェクトが(無手勝流では破綻してしまい納品できなくなるくらい)大規模である
があるのだけど、はて。

もともとオブジェクトの継承の概念が出てきた背景は、「数学では概念の積み上げがこんなに有効に働いてるじゃん、ソフトも概念を積み上げてどんどん高いレベルで語るようにしないと問題が爆発するよ。だからソフトも概念の積み上げで書こうよ」ということだと思う。

なんでうまくいかないのかね。

もしかして、数学では概念の積み上げをすると複数ステップが1ステップになるけど、ソフトウェアではそうならないからかな。
(「ムーアの法則」というのがあるけど、実際にはムーアの法則に頼ってばかりでソフトの動作速度が遅いプロジェクトは破綻するので、本来の目的を満たしてないことになる)

うーむ。

概念の積み上げがうまくいく例

通信では「概念の積み上げをすると複数ステップが1ステップになる」ことがあるかもしれない。

黒田先生の情報理論の講義で、情報量とは何か、という話があった。

たとえば、自動車の教習で、赤い旗を揚げたら「右によけろ」白い旗を揚げたら「左によけろ」という「事前約束」を伝えると、「右によけろ=自分の両手でステアリングホイールを次々に持ち替えながら、ステアリングホイールを右に回転させ、自動車の進行方向を右向きに変えろ」という情報を1ビットで伝えることができる。(講義としては、でもそのことを指して「右によけろ」の情報量は1ビットである、といえるか、とかそういう話だった気ガス)

あるいは、ある社長がいて、部下に目配せをしてあごをちょっと動かすだけで部下が社長の意図を汲んでササッと動くとする。
この情報量は何ビットか?

ソフトウェア工学にこれを活かすとすれば、どうなるか。

ある電文があり、プロトコル上「赤旗」「白旗」を1ビットであらわすとする。3台のコンピュータが直列に接続されていて、真ん中の一台が中継機だとすると、「事前約束」を決めることによって、中継機のCPU使用率はものすごく低減される。

ただし、(有限の予算があらかじめ決まっているとして)2台構成と比較して中継機を置くデメリットを注意深く検討する必要があるし、結局、システム全体での命令ステップ数は小さくならない。
うーん。だめか。

信号待ちで自動車のドアを開けて吸殻を捨てるアフォみたいに、「道路に吸殻を捨てると自分の車内という環境はクリーンになるけど、メタレベルの大きい環境(街全体)としては非クリーンになる」みたいな感じだな。

0426

勝手に直リン備考
Rules of Play - Games as the Play of Meaning(意味のあるプレイとしてのゲーム)

先生頑張ってますね。

全く脈絡はないのだけど、「遊びを科学する」というフレーズを思い出した。「科学する」って、サ変の使い方をわざと間違えて面白がってるのだと思うけど、はるか昔、某社の広告コピーにも使われてたような気がス。
あ、あれは空想を科学するだっけ?

学生のころは人生って何とか途方もないことを考えてネガティブスパイラルにはまっていたが、最近では(経済的な自立がきっかけか?)ネガ方向にはあまり行かなくなった。「人生って実は結構楽しいじゃん」

でもQOLとか、仕事と趣味の関係とか、楽しいって何とか、定期的にスパイラルにはまるのはずっと変わらないわけで。

目下、シビ子1500を安全に思い切り運転してみたい欲求が増幅中。
プレイドライブ誌を読んでみたり。そうすると時間配分やらコストやら現実的なことが気になりだし、結局「楽しいって何?」「遊ぶって何?」に行き着く。

ビートは「遅いけど楽しいクルマ」であるとよく言われる。自分はその言い方について、わかるような気が確かにするし、でも何もわかってないのかもという気もする。
「青春デンデケデケデケ」で、坊主の息子がキャンプでカレーを作るために親父の鍋を持ちだすにあたり、鍋をカレーに使うことに渋い顔をする親父に、鍋にとってもいい経験だ、ただ知らないというだけの無垢はなんら美徳ではない、とかなんとか説得するくだりがある。
ビートのことを考えるといつもそのフレーズを思い出す。


0514

CIVICタイベルなど交換。計算してみたら、58万で買った車だがすでに77万整備している。金額だけみると「コンパクト新車買えたじゃん」だけど、多少知識が身についたのでよしとする。

ミニサーキット見学してきた。
4輪も面白かったが、それより小学生のポケバイが衝撃的だった。
ハングオン小学生かっこええ。
みているときに一人、こけてしまった子がいたのだが、係員によるイエローフラッグの対応、本人のコースからの退避と待機行動などがマナー良くて、関心してしまった。

0617

サーバのHDDが故障し、1ヶ月近く復旧できずにおりました。
バックアップや運用の技術不足、全くお恥ずかしい話で
申し訳ありません。

0618

リンク備考
Google のソフトウェア・エンジニアリング

/.J 記事から漂着。参考になるっていうか、ならないっていうか、
優秀な人材がそろっている企業でないと実行できなそうな方針ですね。
「Google では、偉い人ほどコードを書きまくっている」とか。

リモート処理でのデータ表現で循環参照

RPC等のリモート処理、SNMPでのデータ取得等で構造化データをどう送受信するか、という問題がありまする。
近年、なんとなくこの問題に興味があってちょこちょこと勉強しているわけです。

リモート処理の種類データ表現
DCEのRPC(IBM HP MS方式)NDR
ONCのRPC(Sun方式)XDR
SNMPBER(ASN.1は表記法)

で最近は「Webサービス」とかでXMLっていうかSOAPっていうかそういうのがあるわけですが

渡したいデータが循環参照を含む場合、どうすればよかろうね?

下記のような話題があります。
  • 本質的にそんなデータを渡す必要があるのか
  • 呼び側のバグで渡されたときにライブラリはどう対処すべきか

というか、深さ優先符号化と幅優先符号化の比較などという、基本的な部分からちゃんと勉強せねばだめポです。orz

頭にヘッダ、そのあとに可変部分が続く電文構造で、ヘッダにおいて下位データを参照する部分を、プログラム中はポインタ、電文ではオフセット+1、などと表現するとわりといい感じの符号化方式になる、などと考えているのですが、はて、これでは幅優先で符号化されてると「ポインタを配列の先頭とみなす」ことでうまい具合にいけそうですが、深さ優先では無理です。

XMLは深さ優先符号化ですよね。XMLのパーザーは「このタグ来たヨ」というイベントドリブン方式にすると、無限の長さに対応できるということは分かります。
でもそれって結局、送信側も受信側も、有限長の配列方式はダメダメで可変長リンクリストで持つようにすべし、ってこと?

結局は、短い(簡潔な)電文をやり取りしたい場面と、長い(表現力の豊富な)電文をやり取りしたい場面とを切り分けして、適切な方式を使い分けないといけないっつーことでしょうか。
線引き問題...マネージャがヤマを張るべき問題のひとつに入るのか。

どっかの文書で、「リモート処理の電文の問題はXMLの登場により一気に解決」とか言ってるのがあったけど、別になんも解決してないじゃんと改めてオモタ。

脈絡なく書籍のブックマーク


google:こども大変時代

産経の「こども大変時代」が本になったそうな。

0627

用語「マシン」

現場で、いつのころからかPCやワークステーションのことを「マシン」と呼ぶ習慣があるのだが、どうもなじめない。

オープン系(この言葉も古いが)の先輩がたは「ホスト」と呼んでいるなぁ、くらいに考えていて、自分も「ホスト」をよく使っていた。でもあれだ、「オープン系」の対語って「ホスト系」だったな。
そうするとホストって何?いわゆる中央コンピュータは計算サーバであって、計算サービスをホストする。オープン系では個々の機械が計算クライアント兼計算サーバであり、計算サービスをホストする。だからホストなのかなぁ。マウス・キーボード・画面のサーバとクライアントを考えると、計算とはホストする関係が逆になるわけだが うーん…

そんな風な悩みごとがオレにもありましたが、今日ふと、自分の中で用語「マシン」使い分けの案を思いついたのでメモ。

「マシン」は、
(1)生産や製造にかかわる機械というニュアンスで使う。
   たとえば工業ロボット。
(2)ソフトウェアを論ずる文脈では、それが仮想的な機械であることを匂わすときに使う。
   たとえばチューリングマシン、状態遷移機械、仮想計算機。
(3)物理的な計算機を指す言葉としては、使うことを避ける。
この案でしばらく生活してみよう。

で、いわゆるDOS/VっていうかIBM PC互換機やワークステーションのことは、「PC」とか「WS」とか「デスクトップ コンピュータ」と呼んでみる。
たとえば「マン マシン インタフェース」というときのマシンは、あんましデスクトップ コンピュータを含まないイメージ。

「機械的に」という言葉を使うときは、「比較的単純な仕組みにより」というニュアンスがあると思うのだが、どうだろう。



用語の話で、中央コンピュータに対してユーザが対面するものは「端末」と呼ぶ習慣があったけど、これも「何の端末なんだよ」となじめなかった。
まあ中央コンピュータに接続するネットワーク回路の端っこだから端末なわけですが、携帯電話を略すときはケータイと書くように、タンマツと書くひとが一人くらいいてもよかった気がする。

「プロバイダ」もね。ISPが正解なわけだが、一般的にもうアレだ。

0628

リンク備考
google:「2+2」を5にする発想
OOPS! I NEVER THOUGHT OF THAT! - CREATIVITY is just Common Sense原著のPDF?

高校生のときに、講談社ブルーバックスの『「2+2」を5にする発想』を読んでとても影響を受けた。訳者は上出洋介先生で、当時は京都産業大学に居られた。
そのころ私は第一志望が東京理科、第二が中央、すべりどめで京都産業と考えていたのだが、スティーブ・ジョブズの本を読み「大学に行くなら地元を離れて遠くに行かなければ意味がない」などと書かれていたのを真に受けていたこと、「上出先生の授業を受けてみたい」との想いなどから、早々と京都産業の推薦枠で受験することを決めてしまった(まぁ逆立ちしても理科大には入れなかったと思うけど)。

入学後もブルーバックスを読み返し、実際に上出先生の授業を受ける機会にも恵まれた。しかし私はその授業(物理)の成績が良くなかった恥ずかしさをどうしても克服できず、とうとうサインをもらうことができなかった。自分を売り込む他意があるなどと思われてはいやだと考えていた記憶もある。

卒業後、上出先生は他の大学へ移ってしまったと聞いた。

せめて卒業式の日にでも、先生を訪ねてサインをいただけばよかったと後悔している。

まぁそれを言うなら、今からでもぜんぜん遅くないわけですけどね。
そうだ、家族で京都旅行に行って帰りに名古屋に寄ってこようか。
いやぁ…どのツラさげてノコノコ行けばいいものやら。
結局、自分が頑張ってないと、頑張ってるひとに気後れしてしまうということだよね。KANの「東京ライフ」で、昔の友人を見かけたが「今はまだ声をかけたくない」という歌詞がある。学生のときもずっとそうだったし、私はその類のいじけ癖がどうも抜けません。

本棚演算、協調フィルタリング

今やっている業務は文書登録やその検索システムなわけですが、

リンク備考
Unix Magazine「インターフェイスの街角」関連資料増井先生のページ

の、2005年12月号 「本棚演算」は大変興味深い内容でした。「あなたにお勧めなのはコレです」という演算をどうやるか、という内容で、一般的には協調フィルタリングと呼ばれるようです。

月は無慈悲な夜の女王

実は「協調フィルタリング」よりも、本文の中にでてきた上記書名が気になりました。

リンク備考
google:月は無慈悲な夜の女王

ロバート・A・ハインラインといえば、「宇宙の戦士」ですなぁ。
映画スターシップ・トゥルーパーズの原作だが、映画と原作は主題がぜんぜん違う。映画は映画で、馬鹿っぽさをわざと「狙った」ものだと考えればよい作品だが、ちょっと原作者がカワイソスな映画です。
ガンダムの富野氏もハインラインから影響を受けていると言われていますね。

で、月は無慈悲な夜の女王、Wikipediaを見てすぐに読みたくなった。
Wikipedia:ノーフリーランチ定理とかって、コンピュータに携わる全員にかかわる話だしね。
この説明を、前のプロジェクトにいた(別会社の)某、バカの一つ覚え小僧に小一時間説いてやりたい。

0717

1つのものは1つ。複数のものは複数。

なんだかね。情報産業の従事者なら自分たちの作業も効率化を考えるのがスジだと思うのですが、いつまでたっても「1つのものを1つで管理、複数のものを複数で管理」とビシッといかんのです。

個々の提案はできるけど全体を貫くような妙案はなし。うーん

0719

Google:修悦体
Wikipedia:ブリコラージュ

「ブリコラージュ」と「エンジニアリング」、
「野生の思考」と「栽培された思考」の対立、
シーモア・パパート、
...興味深いキーワードが続く。


ソフトウェア エンジニア という肩書きはわりと一般的だと思うが、はて、ソフトウェア ブリコルール という肩書きを名乗ってみると何が起こるだろうか。

うーん、たいした役には立たない希ガス。まぁ誰かがキーワード ジャーナリズムに使ってビジネスにするならそれもまた人の業と思う。

対極を知るのは自分の立ち位置を把握するのに有効だとは思うが、やはり自分はブリコルールよりはエンジニアでありたいなぁ。


Amazon:シェリー・タークル「接続された心」
私は西垣 通さんに一時期凝ったのだが、上記はもしかしたら似た系統の本なのかもしれないと思った。

Amazon:西垣 通「デジタル ナルシス」

0720

エンジニアリングとブリコラージュ再び

思い出した。前の現場でですね、院卒のプロパーさんに言われてあーそうか、と気づかされたハナシがある。

いわく「要件を把握したら、まず理想を思い描くだろ。次に、今あるリソース(人員、納期、使用機材、予算など)でたどり着ける場所のうちで一番理想に近い着地点を考えるんだよ」と。

それがつまり「エンジニアリングの思考とブリコラージュの思考の対比による最適解の求め方」なのかな、とおもったことです。


全く別のハナシで、以前とあるWebシステム雑誌で面白い言葉を見かけました。
「理論のない実践は盲目だ。実践のない理論は空虚だ」
たしか
theory without practice is blind,
practice without theory is empty
とかそんな原文だった希ガス。


かの先輩は、そういった「理論と実践」をうまくマージできているタイプでした。
ブログみてると相変わらず苦労してそうですが、体調大丈夫ですかね…。

0723

いまちょっと調べて知ったのですが

パパート先生、ハノイでバイクにはねられ重体だったそうで、自動車・バイクを運転するものとして気が引き締まります。
英語を誤解してるかもですが、1月時点では-まだ外部からの面会は謝絶だが徐々に回復しており、家族は世界中からのお見舞い(?well wishes)に感謝してます-とのこと。

早く元気になっていただきたいです。

自分も同じヒト科のいきものとして、酸素や石油を浪費ばかりしてないで頑張らないといかんと思います。

バイク便 meets ユビキタス

全く別のハナシ。

バイクにも、ナビやETCなどの情報装備を搭載できる環境が整ってきた。
巡回サラリーマン問題 巡回セールスマン問題 のプログラムがバイク用ナビに搭載されたら、バイク便運営会社に売れるだろうか。

昨今は、1分単位で渋滞情報を受信し、最適ルートを導くナビも開発されていると聞く(ホンダなど)。
そこで、一方通行や渋滞情報を加味した巡回サラリーマン問題演算プログラムをバイク用ナビに入れたら便利かも知れない。

ただ、すでに答えが「見えてしまう」点は、熟練した人間には絶対にかなわないだろうってこと。

まぁそれでも、4輪用ナビは一大市場を形成していることから類推すると、すくなくとも副産物的には何か興味深いものを生み出せるアイデアかもしれない。

どっちかっつーと

アレか。巡回サラリーマンプログラムは、バイク用ナビ本体よりまずは、
事務所にあるWindows PCにあればいいんだな。

そんで、バイク用ナビ地図ソフトと情報連動(ポイント情報をナビに送信)できればOKか。

0817

レーシングカート初体験しましたよ

ツインリンクもてぎでカートしてきました。コースレコードが44秒、基準タイムが45秒とのことでしたが自分のタイムは54秒。orz

ハンドルがクイックでびっくりしました。

前日にアクティブセーフティーの講習を受けたのですが、これも面白かった。日常点検のミソ、スムーズなハンドリングのコツ、雪・氷を想定した繊細なブレーキング等個々のハナシも面白かった。オーバルコース遊覧走行は期待ほどでは...。

なにより4輪でパイロンスラロームしたのが初体験で楽しかった!

なんせ私は2輪免許教習のスラロームでは、アクセルコントロールすらできなくて、免許とったあとでブレーキで倒す・アクセルで起こすことをおぼえたのでした。2輪の知識は4輪でも使えますね。

ジムカーナやってみたくなりました。

0820

CIVIC Cピラーに錆を発見。

ウツです。

とか言っておいて、もう忘れてた。アハハー

どうしようかね...

0824

先日のアクティブセーフティートレーニングにて、「ハンドル操作が一瞬止まる癖がある」という指摘を受けたので、解消のため練習中です。

自分でも気づかなかったこのクセ。どうやらステアの持ち替えで片手になるあたりで、ステアの角速度が遅くなる、あるいはゼロになってしまうようです。

先日の講習では9時15分ハンドル方式(持ち替えても常に同じところを持つ)を指導されました。実は以前から
  • 10時10分方式
  • 9時15分方式
  • 8時20分方式

を比較検討していたのですが、いまだにどれがいいのか確信がもてません。
なんとなく思うことは、9時15分はやはり持ち替えが難しいです。ステア持ち替え位置は180度未満、というか120度までがやりやすげ。

そこで昨日は「基本形を10時10分とし、持ち替えは常に6時を持つ」方式を心がけて運転してみました。(Live For Speedの「中の人」がやっているのもこの方式です。CGですけど。)

この方式、2回以上の持ち替えがない場合(クイックなハンドルの車種)はうまくいきそうですが、2回目の持ち替えはどうする?と悩みます。

また、日常走行するコースで90度以上の方向転換をする場所はそうないので、時間に対して練習効果はなかなかあがらず。
どこか、周りに迷惑をかけずに練習できる場所がないかなぁ。

0925

道を歩いていて脈絡もなく考えたことをメモ。

子供を育てるにあたり、親が子供に「こうなってほしい」像を押し付けることは好ましくないと考えていた。

私が少ない人付き合いから得た直感では、否定要素を多少含むアイデンティティを持っているひとは、面白いひとが多いように思う。
逆に、いわゆる肯定的アイデンティティを持つひと、つまり親がこうあれと考えたアイデンティティに対し素直にそれを受け入れて育ったひとには、私の感覚では「つまらない」ひとが多かった。

それで、親はとくに子の将来像を持たずに(積極的にバイアスを排除して)育てるのがいいのではないかと漠然と考えていた。


が。
その考え方は一見いい考えに思えたが、実は無秩序な放任主義であって、あまり良くはないものかも知れない。ある意味「子育てアナーキズム」と名づけても間違いではないかも知れない。

数学の授業を思い出すと、乱歩はどちらかに傾くほうが多いし、統計でも層別抽出法のほうが現実との誤差が少なくなる。
てことで、完全なニュートラルというものがそもそもなく、ある程度サポートしたほうが、(その子の生まれ持った素性自体に対して)素直に育つのかも知れない。

未整理。

これはひどい


「痛いニュース」より。
【朝日新聞】「『アタシ、もうアベしちゃおうかな』という言葉があちこちで聞こえる …そんな大人げない流行語を首相が作ってしまったのがカナシイ」

まさにアサヒってる。


私は、日本人が遠い過去に、粗末な下着しかつけていない貧しいものであってもとても礼儀正しかった、と外国人から評された(おそらく馬屋さんに対する評価)という話を聞いたとき、多少なりともそれを誇りに感じていた。



また、常識をわきまえない勧誘員(不法侵入、身分を偽っての勧誘)があまりに多い 読売 は一生購読しないと決めているが、

朝日は記事がひどい。これはひどすぎる。
国民からの間接選挙で選ばれた自国の首相に対する、それがあなたがたの礼儀か。


学生時代は朝日と日経をとっていました。歴史に詳しい友人から「割と学のあるひとでも無知による左傾のひとがかなりいる」と指摘され、複雑な心境でした。

大人になって自分から情報を取捨選択するようになって、彼の言わんとしたことが少しずつ分かってきた。



従業員が自然破壊の捏造をしたり、放火をしたり、幼女を誘拐するのは、おそらく朝日新聞社の体質のなせる業なのだろう。
読売の勧誘員が不法な勧誘を行うのと同じくらいに。


産経の偏向もかなり痛々しいし、つまり新聞はもうだめってことか。

0928

無理かと思った単体テストが期限を1日残して消化完了。

ケーキ買って家族で食べました。

1022

話が通じる喜び、プライスレス

しかしアレです。どんなに作業がたくさんあっても、話が通じるプロパーさんがいるのはとっても幸せです。

話が通じるってのは、立場とかどうすべきかとか、分かった上で筋を通してくれるということで。

「あんたがいうなら頑張るよ、無理もするよ」そう思えるプロパーさんがいるプロジェクトは、実在するのですよ。絶滅したかとおもったけど。

1114

動的なバージョンチェックは必要だ

今回リモート処理の部分を担当したわけです。

リモート処理では、電文の頭にバージョン番号を入れて動的なバージョンチェックを行うのが「定番」ですが、今回それをやりませんでした。

結果、バージョン齟齬で苦労しました。してます。

「昨日まではちゃんと動いてた」->いや、だから今日から新しいほうでお願いします
「新しいのに入れ替えたのに動かないよ」->で、実は古いままだった

とか。今度やるときは絶対バージョン番号入れます。

1120

ミシュランは本業をガンガレ。

F1でブリヂストンの前倒しワンメイクレース化とかそういう状況で、何がレストラン評価かと。

まぁ、速く走るだけが車の魅力じゃないっていう姿勢は、それはそれでいいと思うけど。そういうのは本業がしっかりしてこそ美点になると思う。

あとあれよ。東京は星が多くて云々っていうけど、

レストランガイド作る前に駐車場ガイドつくれよ


1121

gacutil はバージョン1と2で互換性なし


です。

SNMP

このWikiは逆リンクを勝手に作成してくれるのでたまにたどってみたりします。で、

SNMPという略語が「スパ西浦モーターパーク」を表す場合がある

ということを知りました。
まぁアレなんですが、世界は広いです。

1122

組み込みデータベースカタログ

だそうで。
(リンク先は@it)
普通に読み物として成立していてよいです。
Linterは名前だけ聞いてしっていたけど
Entierとか
Ultra Lightとか
ENCIRQ DFFとか

ほんの2年前にしらべたときは一切出てこなかった名前が並んでて面白い。
その2年前に出てた名前というと

商用
SOLID
SQL Anyware
Times Ten
SleepyCat BerkleyDB

フリー
FastDB
QDBM

あたりですが、Times TenのみならずSleepyCatのアレまでオラクルに買収されたとはちょっと驚きでした。

Silverlightについて調べていて

思ったのだが、Javaにしても、これにしても、なんでonHTTPにこだわるのかね?

なんでWebアプリが広まったかっていうと、HTTP路がすでに開かれていればそこそこアプリケーションプログラム的なことができますよってなわけだが、そもそもなんでネットワーク管理者が80番ポートを空けるかっていうと、HTTPが主にはハイパー文書伝達のプロトコル(で、ある程度安全)だからじゃないの?
(どこまでがハイパーかっつうと確かにあいまいだが 文書 に重点。)

優れたリモートアプリ実行プロトコルを作ってそれを広めてくれれば、どこのネットワーク管理者もポート開くっつーの。逆に、80で危険なものが流れるなら80を閉じざるを得なくなるよ。

onHTTPのリピータ(ブリッジ)は危ない、だめだって分かるくせに、じゃぁどこまでならいいんだよ?

てこと。

F#

(リンクはWikipedia)

関数型言語F#だそうで。

名前を聞いた瞬間、「うわー、なんて黒いキーなんだ」
と思ったが、よく考えてみりゃC#も相当黒いです。

ギターなら1フレットずらすだけだけどね...


あれでしょうか。
「Cを基調にして、たまに色気を出して使うといい音がする」
ていうシャレ?(FM7の代わりにF#m7-5とか?)

あるいは
「Cから一番遠いキー(言語)です」
ということか。

リンク先、Mathematicaという懐かしい単語があって目頭が熱くなった

戦うタートルグラフィクス

なんか今日はさえてる気がする。よく寝たからかなぁ

PlayStationで「パンドラプロジェクト」というゲームがあって、結構遊んだ。知らないヒトには「カルネージハート」と同じコンセプトというと伝わる気がする。

(実は愛知県稲沢市の会社に就職試験にいって、パンドラプロジェクトについて熱く語った結果、内定もらってたんですが、失礼ながら別の会社(四角い感じの会社の関連会社)に行ってしまいました。その節は社長すいませんでした。結局その◆関連社でおいらはボコボコにされてクビ切られて現在に至る、なんですが、あのとき稲沢に行ってたら別の人生だったッス)

その『「パンドラプロジェクト」は面白かった』という記憶が今でも強烈にあるわけです。

それで、今ふと時間があいたのでGNUのロボゲー以上、パンプロ未満なものを書いてみようと思い、

FOW 5
ROT 30
GUNA 4
SRCH

こんなソースを想像した3秒後に

それってミサイル打てるタートルグラフィクスじゃん

と気づいた。

パパート先生元気になったかな?
+ タートルグラフィクス

1126

momoseさん

会社起こされたようですね。
こっそり応援させていただきます 壁|ω・)ジー

恥ずかしながら ここうをしのぐ が読めませんでした。

2008/4/15 タイトル訂正。monoseさんになってました。失礼いたしました。

1127

なんか今後の仕事で関係しそうな話

地理情報システム
リンク備考
Wikipedia:地理情報システムGIS
THE GIS-GRASS MINI-HOWTOJF

あんまし関係なさそうだけど
ベクターアニメーションについて
リンク備考
ググるベクターアニメーションでググる
ウェブアニメーションソフトウェアを利用したテレビアニメーション番組のフルオンライン制作[pdf] 宮下芳明さんの論文
FG3 Lectures - [Independent DVD production diary]自主制作でFlashを用いアニメーションDVDを作成する話

リンク備考
可視化情報学会


1203

自作PCの必要電力を概算してくれるソフトらしいです
eXtreme Power Supply Calculator

1207

メモリ管理関係
JF manpage of brk
brk, sbrk - データ・セグメントのサイズの変更する

freeBSD manpage brk
brk() 関数と sbrk() 関数は、現代的な仮想メモリ管理が現れる以前の、
古いインタフェースです。

直接関係ないですが、intptr_t という型をはじめて知りました。

1227

ふとした検索キーワードがきっかけで、久々に結城さんのWebページを拝見。

宗教の力もあるかもですがやはりご本人の人柄なのでしょう。
癒されました。


自分の日々の行動を反省。

...

はて、それで自分の場合、宗教はちとぴんとこないのでやはり武道の稽古をやらなければと思う。

武士道
切れるけど切らない。倒せるけど倒さない。壊せるけど壊さない。
手加減したことを相手に気づかせる。

石破茂氏が最初に防衛庁長官の任期を終えるとき、自衛隊とは何か? という文章でノブレス・オブリージュ云々と書いていたのだが、それを思い出した。

ハインライン氏は、軍隊とは、政府に対し統制された暴力を提供するものだとかそんなことを言っていた気がする。
それも確かにそうなのだけど、軍事力と武道、宗教というのはなんだかつながっている気がする。

未整理。

あぁ、それで、

結城さんは宗教をやってるけど、自分の場合は攻撃的な性格を逆手にとって、切ること、倒すこと、壊すことを日々鍛錬する中で何かを学びたい

と思ったのだった。

1229

友人のお通夜でした

お悔やみを



仲間で思い出話をして
なんというかまだ整理つきません