April 01, 2008

そろそろ50万ヒット + 記念品

このサイトをはじめてから早5年が経過しましたが、お蔭様で右上のカウンタが50万を超えそうです。今まで読んでくださった方、どうもありがとうございました。実はある程度の数を回った時点でこのサイトを閉鎖しようかと思っています。そろそろいい区切りではないかと。

続きを読む "そろそろ50万ヒット + 記念品"
11:07 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (12) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/629

April 06, 2008

『地頭力』はフェルミ推定で量れるか

[Timely]

最近の就職活動では、新採用者に対して『地頭力(じあたまりょく)』というものが求められている、ということが先日ニュースで取り上げられていました。何でもこの地頭力というのは、大企業病に苦しむ日本社会において持続的な発展を維持するためのキーとなるもので、無から有を生み出す創造性のことを言っているらしいです。『無から有』を生み出すためには、何でも知識や経験を取り除いた部分での賢さ、つまり生の頭『地頭』の良さがモノをいうそうです。
番組を見ていてかなりひっかかる部分がありましたので、その感想を残しておこうと思います。

『地頭力』の言葉の定義はさておいて、この『地頭力』を審査するひとつの方法として取り上げられていたのが、フェルミ推定という方法です。例をあげるなら『富士山をどうやって動かしますか』という課題に対して、『トラックで動かす、そのためにはトラック一台の大きさは大体2 x 3 x 6mだから、1台で土砂36m^3が運べて、富士山は大体底辺半径20km、高さ4000mの円錐だから体積は(hoge)m^3で、割り算すると(hoge)台分で…』という仮説に支えられた論理的思考ができれば合格だそうです。

しかし待ってください。これで本当に創造性というのが推し量れるのでしょうか? 僕はまったくそう思いません。おそらくこの『フェルミ推定』が身近すぎて、これはできて当たり前、『地頭力』によって得られるはずの創造力それ以前の問題ではないか、と感じてしまったのが正直なところです。

このサイトを見られている方の大半は、理系、文系というくくりをあえてするなら、理系であると思いますが、皆さん少なくとも『オーダー』という考え方をしたことはあると思います。例えば、ここのセンサの感度はだいたい1mV(p-p)程度だから、あのコンパレータを駆動するには1V程度の電圧が必要なので、ゲインはだいたい10^3くらいかな、といったことです。つまり数字の大小を感覚として感じ取ることに他ならないのですが、これはまさに『フェルミ推定』に他ならないと思います。

この『オーダー』を正しくつかむためには、当然知識や経験が必要不可欠です。特に経験は重要で、何度も失敗しないと身につかないものです。優秀で経験豊かなエンジニアが示す数字が、計算機がたたき出す数字と等しい、はたまたそれよりも優れているということはよくある話ですが、果たしてそういった感覚は『地頭力』によって成しうる創造性、独創的な問題を設定し解を導く力、によるものなのでしょうか? 創造力というのが知識や経験と切っても切り離せない関係にある、つまり『地頭力』の存在自体怪しい、とは僕の意見ですが、それにしてもこのフェルミ推定で『地頭力』を量るのは筋違いでないかと思います。

そういえば僕の先輩で、彼女に求める3つの条件が『オーダーがわかること』、『遊園地にあるフリーフォールを見て(2gh)^{0.5}』、『omega^{3}=1がわかる』だった方がいます。それと照らし合わせて考えると、『地頭力』をフェルミ推定で量ろうとしているのは、単に理系が得意とする論理的思考ができることを求めているだけなのではないでしょうか。論理的思考は概して解の多様性と相容れない部分があるので、『地頭力』による創造にあふれた世界の真逆、益々つまらない社会になってしまうのではないかと心配です。

23:59 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (2) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/630

April 09, 2008

apache2 + mod_perl2 + mod_ruby + mod_ssl + mod_dav

最近もっぱらサーバの移行作業を行っています。というのも、今年で6年目になる現役サーバ(PowerMac G3 350MHz + MacOSX 10.2.8)のHDDがいつお亡くなりになるかわからず、はらはらドキドキの毎日が続いているからです。バックアップはこまめに取っているのでデータ消失の心配はひとまずないのですが、サーバが一時的にでも落ちるとこのサイトの休止をはじめとして、複数の拠点のデータ共有ができなかったり、と大損失になります。ということで最近は時間を見繕って、新サーバ用に購入したMac Mini(MacOSX 10.5.2 + Intel Core2 Duo 1.83GHz)への移行作業をできるかぎり早く進めています。

新サーバとなるMac Miniでは、メモリの増強(1G -> 2G)とHDDの換装(24時間稼働を想定したサーバ用HDDへ変更)を、過去記事で紹介した分解ヘラを利用して完了してあります。またソフトについても
Postgresとsquidの移行については、自動起動デーモンlauchdの設定について完了したことを報告ずみでしたが、今回は大物のapache2を処理しました。

これまで旧サーバではapache1.3+mod_perl+mod_ruby+mod_ssl+mod_dav(dav以外の拡張モジュールはビルトイン、davはDSO)という構成をとっていましたが、新サーバでもできるだけ同じ構成でいこうと思います。パッケージを導入すれば簡単だと思いますが、ここでは向学のために野良ビルドをしました。以下、ひたすらコマンドが並びます。

続きをどうぞ。

続きを読む "apache2 + mod_perl2 + mod_ruby + mod_ssl + mod_dav"
17:02 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (2) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/631

April 14, 2008

データストリームの終端をシリアルポートに

USBの工作は大好きですが、機器の制御といえば未だにシリアルポート(RS232等)やパラレルポート(IEEE1284)といったレガシーインターフェイスが活躍しています。そのため機器に添付されているPC側の制御ソフトは、そういったレガシーなインターフェイスのみが想定されており、最近のインターフェイスやLAN越しの制御がサポートされることはありません。もし機器のプロトコルを解析して自作のソフトウェアを作るとなると、いったい時間がどれだけかかるのでしょう? そこで何とかしてデータストリームの終端をシリアルポートにし、元からあるソフトウェア資産を活用しようという手段にうって出ることにしました。

まず考えたことはドライバの自作です。仮想的なシリアルポートが一方にできればよいわけで、それならばマイコンメーカー各社(例えばFTDIやSilicon Laboratories、Microchipなど)がそういったドライバを提供していることを思い出しました。ところがターゲットのマイコン側のファームウェアのソースは公開されている一方、ホスト側のソースはことごとく未公開という状況でした。ソースがあれば改造してなんとかできると思ったのですが、残念。

それならば、LAN越しにCOMポートを中継するソフトはどうだ、ということになりました。この類のソフトに対する需要はかなりあるようで、いたるところでシェアウェアを発見しました。しかしフリーでソースが公開されているものが、すぐには発見できませんでした(後で発見しました、後述)。これもまた残念。

結局行き着いたのが、ヌルモデムエミュレータを使う方法でした。ヌルモデムとはその名の通り何もしないモデムのことで、一端のポートに入れたデータが他方のポートから出て行く、逆もまた然りなデバイスのことです。これのエミュレータということは同一PC上にCOMポートが2個でき、双方のポート間でデータを中継してくれます。つまりは一方のポートを機器の制御ソフトから従前どおり指定し、もう一方のポートへは自作プログラムでデータを入出力してあげれば色々カスタマイズできるというわけです。
特にシリアルポートのデータの入出力はドライバを作るのと違ってとても簡単です。例えばM$ WindowsならCreateFileをしてRead/WriteFileをするだけなので、ファイルと同じ感覚で扱えます。

M$用ヌルモデムエミュレータも無償なものが発見できました。sourceforgeにあったcom0comというNull-modem Emulatorを利用しています。GUIを利用してポートの名前も任意に設定することができるので、例えば制御ソフト側のポート番号が決めうちだとしても対応可能です。勿論ソースも公開されているので安心です。
さらに同サイトではCOMポートをネットで中継するcom2tcpというソフトも作っていました。しかしながら今回の目的を達成するには、ドライバを作るよりかははるかにヌルモデムエミュレータを使ったほうが簡単できるということに気が付きましたので、こちらを見つけるのが後になって結果的には良かったのだと思います。

00:20 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/632

April 18, 2008

『からりおん』を見に行こう!!

[Timely]

『からりおん』ご存知ですか? EPSONのインクジェットプリンタ『Colorio』なら皆さんご存知だと思いますが、それで音楽を奏でてしまう素晴らしいアイデアです。詳細は開発元『マイナスドライバー』のページをご覧ください、衝撃の映像がご覧戴けると思います。

というわけで、次の日曜日はこの『からりおん』を見に、Make: Japan Tokyo Meetingに行ってみようと思います。『からりおん』の他にもニコニコ技術部不在通知Pさんをはじめとして、『技術の無駄遣い(褒め言葉ですよ!!)』をしている方がたくさん出展されているようです。このサイトでも何か展示できるものがあれば良かったのですが、あまりにも実用を意識しすぎ且つキナクサイ(笑)ので断念しました。次回があるのなら是非、出展者側で臨みたいですね。

※当日の様子
『からりおん』は予想のとおり、凄かったです。正直あの音を聞いて感動しました。製作者さんとお話しをさせていただいたところ、最近のプリンタではモーターが静かになってしまったため、わざわざ中古プリンタをヤフオクで落札しているそうです。機種はエプソンのPM2000あたりだったでしょうか。もしお持ちの方でタダで手放しても良いというなら喜ばれるかもしれません。個人的には50台くらいでひな壇に並べてオーケストラのパフォーマンスを期待したいと思いますで、現在は6台ほど『からりおん』の在庫があるそうです。

rerofumiさんともお会いしてきました。ニコニコ技術部のブースには、本家の『初音ミク』をはじめ『弱音ハク』やら『亞北ネル』やら亜種も展示されていてちゃんとツボは抑えられておりました。まったく今後の活動にも目が放せません。

オライリーのスタッフの方に聞いたところ、次回は10月頃にあるそうです。作品を考える期間は十分にあるので技術のムダ使いをしてみたいと思いますが、どうなることやら。できれば体験型の何かを作りたいですね。

13:33 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (5) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/633

April 23, 2008

Super Sylphide 進捗状況(16) -- Windows XPでMSD+CDCのUSB compositeが相変わらず動かない

年度が替わりまして、オートパイロットシステムSuper Sylphideの開発が別案件に組み込まれたせいもあり、開発スピードをあげる必要が出ています。できれば夏頃に完成させたい予定ですが、予定は未…、いや、がんばらせていただきます。

今回の記事は以前からこのサイトでもとりあげているUSBの複合デバイス(composite device)の話をとりあげてみようと思います。Super Sylphideには計算を担当するDSP以外に、SDカードへのログの記録、そしてセンサ情報の取得など、基本的な処理を担当するマイコンSilicon Laboratories C8051F340が搭載されていますが、これにはUSBの機能が搭載されています。ならばSuper SylphideをUSBでパソコンに繋げて、USBのメモリスティックよろしくログの送受信が簡単にできたり、あるいは通信機能を備えてHIL(Hardware in the loop)試験を簡単に行えたら、どんなに素晴らしいだろうという結論に至りました。そういう理由からUSBには2つの機能、記憶装置として認識させるMSD(Mass Storage Device class)と、通信環境を備えていることを示すCDC(Communication Device Class)、2つの規格に準拠させることにしました。

実はこの部分はGPSロガーと共通の実装であり、今までの開発履歴、『USBでMSD+CDC (Composite Device)』『WindowsでMSD+CDC (USB Composite Device)』『USB Composite DeviceでCDCが動作しない』を見ていただくと現状が把握していただけると思います。過去の記事の表題からもわかるとおり、この実装がうまくいっていませんでした。

そこで最近、久しぶりにコードや規格書のおさらいをしてみたところ、規格標準を無視している箇所がいくつか発見されて、これ以上バグがでないだろうという状態まで改善することができました。主な修正点としては以下のものがあげられます。

  • MSDにおいて、実装されなければならないSCSIコマンド(今回はRequest Sense)を見落としていた。それでもM$で動作していたのは不思議。
  • MSDで回避しなければならないエラーとその対処方法(usb.orgにある仕様書『Mass Storage Bulk Only 1.0』 (PDF)でいうと6章)の実装が不完全だった。特にscsiコマンドを格納しているCBWが不完全だった場合、Standard RequestのClear FeatureによってEndpointのHalt状態を解除してはならないことが盲点だった。
  • デバイスドライバusbser.sysの不具合のために、CDCの転送において64byteの倍数のパケットを送る際は最後にzero length packet(ZLP)を送る必要がある。この問題を通信単位を32byteに落とすことで回避した。
  • ディスクリプタでProduct Stringを特定していなかった等々。

現在の状態はGPSロガーのファーム、特にMSDの実装その内部コマンドであるSCSIの実装を見ていただけるとよいと思います。問題の発見にあたっては、USB.orgが提供している準拠度をはかるプログラム USBCV R1.3、並びにSilicon LaboratoriesのUser Forum(特にTsuneoさんという方の情報が的確)やusb.orgのDeveloper Forumが参考になりました。

さて、この状態で意気込んでWindows XPのPCに接続を試みたところ、従来どおり認識はされました。お次はデータのやり取りはできるか、というとことでファイルの読み書きをしてみると、これも従前どおりできました。MSDの機能は正常に動作しています。
最後はCDCの機能、これを調べるためにハイパーターミナルを立ち上げて通信を試みます。なんと数十秒間、データが受信できているではないですか(かなり狂喜乱舞しました、笑)、が、その後MSDの機能と同時使用しようとエクスプローラを立ち上げたところ、CDCによるデータの転送が止まってしまいました。再度ハイパーターミナルを立ち上げるも通信は回復しません。この状態でもエクスプローラからファイルの読み書きはできています。

残念ながら、今回の実装でも問題を解決するには至りませんでした。USB解析ツールのSnoopyProを使って取得したUSBパケットの流れは以下のとおりです。

usb_composite_fail_080423.gif
赤丸が問題の箇所。

CDCのCommunication InterfaceのInterrupt IN Endpoint 0x81とData InterfaceのBulk IN Endpoint 0x82がMSDのBulk IN Endpoint 0x83と心中している様子が伺えます。0x83はその後回復するのですが、0x81と0x82はその後復調していませんでした。これはWindowsのドライバ側の問題であると思うのですが、物理的にプロトコルアナライザによる計測はしてはいない為、真実はわかりません。新たに出たHotfixも色々と試してみてはいるのですが、状況は改善しませんでした。そろそろWindows XP SP3の提供がはじまるそうなので、現在はそれに期待しております。

※その後、I/O拡張基板の動作確認がとれました
※※さらにその後、ある方法でこの機能を実現することができました

22:04 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (2) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/634