March 02, 2006

Rubyでディープコピー

Rubyでディープコピーをするのに目から鱗な技があります。

deep_copied = Marshal::load(Marshal::dump(target_object))
こんなことができるのもRubyのシリアライザMarshalが非常に優れていて、ほぼ全てのオブジェクトに対応しているからですが、対応し過ぎているために時に思った動作をしないことがあります。例えばディープコピー対象のオブジェクトにシングルトンオブジェクトが含まれていたらどうなると思いますか?当然といえば当然ですが、これらについてもディープコピーが取られてしまい、シングルトン性が破壊されます。

そういうときはMarshalの内部的な動作を規定するためのメソッド、_dumpと_loadをオーバーライドすればよいみたいです(Ver 1.8ではmarshal_dumpとmarshal_load)。コードの例は続きをどうぞ。

続きを読む "Rubyでディープコピー"
06:28 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/467

March 03, 2006

『ウェブ進化論』と『攻殻機動隊』

[Timely]

ウェブ進化論 本当の大変化はこれから始まる
仕事の関係でお世話になっている、かつ人生の先輩であるA氏から、最近出版された『ウェブ進化論』という本を読むとディジタルディバイドがいかに深刻かがわかるよ、ということを言われたので読んでみることにしました。『ウェブ進化論』は日本の有名ブログ『英語で読むITトレンド』をされていた梅田望男さんが書かれた本です。この記事はその本に関する感想です。

A氏の主張は、この本の主張を理解できるかどうかで読者のデイジタル的世代がわかるよ、ということですが、この本によると、その世代としてのは、次の3種類に大別されます。『Web上の不特定多数という量に可能性を見出し、そのアウトプットを信頼しようとする世代』、『Web上の不特定多数という量の可能性は理解できるが、そのアウトプットに対しては慎重であり、できるだけリアルな社会構造において問題を解決しようとする世代』、『特定のいわゆる権威的な意見にのみ信頼を寄せ、Web上における不特定多数の理論を理解できない、リアルな社会でしか生きられない世代』。3者は現状のWeb界の言葉でいうとそれぞれ『Web 2.0』、『Web 1.0』、『Web 1.0 未然』です。具体例として、日本の大企業の重役は『Web 1.0 未然』、Yahooやマイクロソフトは『Web 1.0』、Googleは『Web 1.5』とでもいうのでしょうか、『Web 1.0』の『Web 2.0』中間、ということが挙げられています。
実際、この本の言っている事を理解できる世代は限られていると思います。現状の社会における『意見が主張ができる者とは、結果としてそれで飯を食えるのみ』という事実から考えると、不特定多数の力というのは『Web 1.0 未然』の世代では全く理解が及ばないと思います。『Web 1.0』の世代でも苦しいのではないでしょうか。理解しない、驚異を感じる、等々そんな生易しいものではなく。どうして理解が及ばないのでしょうか。僕なりに考えてみることにしました。

この本ででてきた『あちら側』と『こちら側』という言葉は古くて新しい新鮮な響きです。本では現代の社会においてはリアルな世界を『こちら側』、Web上の世界を『あちら側』と表現していました。
『こちら側』と『あちら側』という言葉を用いるとすれば、太古なら自分の村が『こちら側』、隣の村が『あちら側』でしょう。それが経済活動の拡大に伴って、村が町に、そして国、リアルな社会全体になっていったのだと思います。自分にとっての『あちら側』の人と実際に会ったり、物品を交換しながら自分にとっての『あちら側』を『こちら側』に取り込むことによって、『こちら側』を広げていき、『こちら側』が現在のリアルな世界全体になったのだと思います。
ここでですが、いままでと同じ方法で現在における『あちら側』ことWeb上の社会を『こちら側』ことリアルな社会に取り込むことが可能でしょうか。それは無理だと思います。Web上の仮想人格(ここで仮想人格と称しているのはコンピュータの画面を通して得られる個人情報は結局のところリアルな人ではないから)に会ったり、Web上で生計を立てたりすることで、今までと同じ『あちら側』が『こちら側』になった感覚が得られるでしょうか。この感覚は今までのものとは違うのではないでしょうか。従ってこの感覚が『あちら側』が『こちら側』になったという意識をもっている世代しか現在の『あちら側』の力の源泉である不特定多数の力を理解できないのだと思います。

話が若干変わりますが、この本に対する考察をさらに深めてみようと思います。この本を読んでいて思い出したのが、『攻殻機動隊』という日本のアニメです。つい最近TVシリーズをやっていました。公安9課と呼ばれる未然にテロを防ぐという攻性的特殊部隊の話で、構成員は個々の力が最優先された組織構成という設定でした。
このTVシリーズの作品のなかで、テーマになっているのが『Stand Alone Complex』という言葉です。『我々にチームプレーという都合のよい言葉は存在しない、あるのは個々の活動が有機的に融合するStand Alone Complex、ただそれのみだ』確かそんな言葉を主人公が語っていたと思います。『Web 2.0』世界への対応をするためにはこの言葉に多大なヒントがあるのではないでしょうか。
結局これまでの不特定多数の力をそれほどまで意識せずに済んだ『Web 1.0』以前の世界では、『あちら側』を『こちら側』を取り込む際に何らかのチームプレーが発生しいたと思います。しかし『Web 2.0』の世界ではそのようなチームプレーが発生しないうちに『こちら側』が『あちら側』と溶け合っている、そんな世界なんではないでしょうか。つまり『個々の活動が有機的に統合される』ことが『Web 2.0』における『あちら側』が『こちら側』となる契機なのではないでしょうか。そして、『有機的に統合される』部分はWebを通じて自動的に行われるので、重要なのは結局のところ『個々の活動』であると思われます。
梅田さんは本の中において不特定多数の力をマクロ的に捉えていたと思いますが、『個々の活動』というミクロ的な視点があってもよいのではないでしょうか。僕は、貢献度が小さいにせよ、Webに関連した技術を裏で支えている一人だという認識が実際あります。そういう認識のもとでこの本を読むとマクロ的な視点だけでは『Web 2.0』を理解するとまで行かなくても触れてみるだけでも、少し物足りないのではないのかと感じました。そういう意味で梅田さんの個人的な『はてなへの転職に関する意志』のような記事が載せられていたことは非常に評価すべきことだと思いますし、このことに関した内容にもう少し紙面を割いていただきたかったという希望があります。

最後に梅田さんのサイトで、この本に関するブログ書評から言葉を、ということをされているようなのでキャッチフレーズでも考えてみようと思います。『Web世界という新しい"地球の歩き方"』なんていうのはどうでしょうか。

以上長文になりましたが、感想を述べてみました。

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

March 07, 2006

EZUSB FX2LP Keilからsdccへ

順調に作業が進んでいるUSB-ADC2ですが、USB-ADCと同じく作業環境をKeilとsdccの両面から攻めことにしました。そこで前の『EZUSB Keilからsdccへ、EZUSB.lib等の移植』と同じく、FX2LP向けにEZUSB.lib等を移植してみました。

ヘッダファイルライブラリの改変ソースを公開します。ライブラリは落としたあと、Makefile内のディレクトリを適切に設定してmakeをするとできます。
方法はほぼ同じですが、FX2LPとEZUSBではファイルが異なるようです。Development Kitの中のTarget/Lib/EzUSBとTarget/Lib/LPの内容を比較してみてください。

ついでにサンプルプログラムのbulkloopをKeilとsdccの両方からコンパイルできるようにしました。改変ソースを置いておきますので、USBJmpTb.asmやdscr.asmはこちらを参考にしてください。ディレクトリを適切に設定後makeをするとsdcc版が、同じくbulkloop_keil.Uv2を使うとKeil版がでてきます。動作確認済みです。
補足ですが、Development Kitの中のFX2LP向けbulkloop(Examples/FX2LP/Bulkloop/bulkloop.Uv2)をKeilでビルドしようとすると、

*** FATAL ERROR L220: INVALID INPUT MODULE
というエラーがでてできませんでした。どうやらUSBJmpTb.OBJとEZUSB.LIBが原因のようです。問題解決のためには
  1. USBJmpTb.OBJとEZUSB.LIBをターゲットからはずす
  2. ライブラリのソース(Target/Lib/LPの中の*.a51と*.c)をターゲットに加える
  3. この状態でコンパイルするとfx2reg.incがおかしいといわれるのでfx2reg.inc内の重複している定義をコメントアウトする(fx2reg.incはヘッダファイルと同じ場所にあります)
とうまくいきました。上記のKeil版もそのようにしてあります。

最後にですが、FX2で検証してくださったhamaさん、コメントをくださったhangさん、ありがとうございました。

※(2008/2) これらの情報をTeamKnoxさんが役立ててくださったようで、大変幸せです。

※(2008/10) ファイル階層を整理したついでに内容も見直しました。1) USBのディスクリプタ(dscr.asm)の配置が奇数番地だとうまく動かないことが多いので絶対番地(0x1900)に固定しました。2) SDCCマニュアル 4.1.1にある、MOVX命令によって下位アドレスへアクセス際に必要となるSFRの定義_XPAGEをfx2reg.hに書き加えました。

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

March 14, 2006

スキーのリフト券

[Tips]

最近スキーに行きたくて仕方がありません。実は先週末もスキーに行っていたりしたのですが…。今回のそのスキーのリフト券についてのどうでもいい話です。

スキーに行くと、必ずリフトに乗りますね。リフトに乗るためにはリフト券が必要です。IT技術の進歩のおかげかどうかはわかりませんが、かなり昔にあったような紙のチケットを見せて乗る、ということはほとんどなくなりました。
ではどうなったかというと、JRのスイカと全く同じで、改札装置にリフト券をタッチ・アンド・ゴーします。おそらく仕組みは両者とも同じで電波を出す半導体がなかに入っていて非接触で通信しているのでしょう。とにかく触ればいいのです。

ここで問題となるのがリフト券をどこにしまうかです。リフト券売り場にいくと、リフト券ホルダーなるものが売られていて、これを使えばリフト券を腕章のように取り付けることができ、改札装置にリフト券を接触しやすくなります。ところがスキーをしていると、こいつがずり落ちてきたりしてちょっと厄介です。そこで考えました、リフト券の保管場所を。

その場所は、グローブの中。リフト券はだいたい掌に入るくらいの大きさです。従ってグローブの中にいれてもはみ出ません。甲側にいれておくと腕章タイプのものよりも苦労せずにタッチできます。是非皆さんも試してみてください。

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

March 17, 2006

ezusb.sysとCyUSB.sys

USB-ADC2ですが、ファームウェアの移植が完了しました。ということで現在ホスト側に取り掛かっているのですが、ここで問題が一つ発生しました。新チップのFX2LPでは、デバイスドライバが旧チップのAN2131やFX2が使用していたezusb.sysではなく、CyUSB.sysという新しいものを使う必要があるようです。ということで今まで使用してきたオプティマイズさんのカメレオンUSB(ezusb.sysを簡単に扱うようにしたもの)が使うことができないので、どうにかする必要があります。

とりあえず作戦を立ててみました。
CyUSB.sysにはAPIドキュメントが付属しており、CyUSB.sysの上位ライブラリCyAPI.libにはエンドポイントを通じたバルク転送等の読み書きについて解説があります。ドキュメントをみる限り、ファーム転送の簡単な方法のみが見つからなかったので、これを解決すればよいようです。
解決の方法ですが、FX2LPのTechnical Reference Manualの3.8を読むとファームの転送はVendor Requestという特赦なコマンドを用いて行われているようなので、これを実装すればなんとかなると思います。

いかがでしょうか。何か情報をお持ちの方がいましたら、是非コメントよろしく願い致します。

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

March 20, 2006

Windows DDKの入手(無料)

USB-ADC2ですが、前の記事のとおりFX2LPではCyUSB.sysを使う必要があります。CyUSB.sysやそのサポートライブラリであるCyAPI.libには、cyioctl.hやCyAPI.hといったヘッダーファイルをインクルードすることによって使用可能となるわけですが、これらのヘッダーファイルも実は外部のヘッダーファイルdevioctl.hやusb200.hというヘッダーファイルに依存しており、これらのファイルを入手する必要があります。

これらのファイルは実はWindowsのDDK(Driver Development Kit)というものに含まれているようです。DDKはその名のとおり、Windowsのデバイスドライバを作成する際に必要となる開発環境で、なかなかWindowsの生な部分です。
DDKは昔のWindows98時代にはMicrosoftのDDKサイトから自由にダウンロードできたようですが、現在はそのサイトからダウンロードができなくなっており入手にはCDを購入するか、あるいはMSDNに加入する必要があるようです。MSDNは結構高いので論外ですが、CDによる入手でも、CD自体の価格は無料のようですが送料が25ドルかかり有償のようです。

M$のWindowsをできる限りお金をかけないで開発したい僕としては、当然ここであきらめたりはしません。Windows DDKがただで落とせるかどうかをもう少しよく調べてみることにしました。
結果、Microsoftの別のキットとして無料で提供されていることを発見しました。Kernel-Mode Driver Frameworkというものがそうで、Win2000、XP、2003などのDDKが同梱されていました。

それにしても別のところで無償で配っているものを、どうしてダウンロードできなくしたりするのでしょうね。M$の意図がわかりません。

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

March 23, 2006

Open source GPS

僕は実は航法(ナビゲーション)という分野の研究をしていることになっているらしいです。ということで、最近GPSも守備範囲にしたいなと思い、日夜そういった関係の文献・サイトを漁っています。

日本ではほとんど行われていないのですが、海外ではGPSの受信機をオープンソースで作ろうというプロジェクトがあります。今回僕の中のプランではGPSを理解するために、GPSの受信機を自作することにチャレンジしようと思っているので、これらのオープンソースのプロジェクトは大変参考にしたいと思います。ということでネット上で見つけたサイトのリンクを張っておきます。

Fundamentals Of Global Positioning System Receivers: A Software Approach (Wiley Series in Microwave and Optical Engineering)
あと以前にも書きましたが、Fundamentals Of Global Positioning System Receivers: A Software Approachという洋書が非常に参考になっています。一通りの内容をこの一冊で理解することができます。洋書ですが平易な英語で書いてありますので、非常にオススメの一冊です。

ところでですが、GPSはこれほど世の中の役に立っているのに、なぜ国内で中身に興味をもたれている方が少ないのか、不思議なくらいです。GPSは確かにアプリケーションとして無限の可能性を秘めていて、アプリケーション的に取り上げられることはよくあるのですが、その中身ももっと注目を集めていいのではないでしょうか。
特にGPSの中身は、教育用途としてもっと注目を集めても良いと思います。なぜなら中身を理解するためには、衛星の軌道計画といった航空宇宙系の話から、高周波を含めた電気・電子分野、そして信号処理等の工学的数学など、非常に多岐の分野にわたった幅広い学問的知識が必要となります。GPSを一通り勉強するだけで、これだけ多くのことが学べるのです。
ということで、興味がある方は是非チャレンジしてみてください。なお、僕の方で成果がでましたらここで公表していくつもりです。まずはRF段だ!!

※その後、計画編へと話は続きます

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

March 26, 2006

Love 日本

[Timely]

国家の品格
ミリオンセラー本、『国家の品格』を母の薦めで読んでみました。その書評と感想です。

全体的な紹介すると、現代の日本を憂える筆者が、日本という国家が現在どのような状態にあるかを見つめ、それに対して疑問をなげかける形で文章が展開されていきます。なかなか巧妙な作りの文章で、一方的に日本人としてはこうあるべきだ、という押し付け論ではなく、日本人が本来もっているものはこんなもの、あんなものではないか、と読者自身の内面を見つめさせようと細かな配慮がされています。それによって、自分が日本人としてどうあるべきか、日本が国家としてどうあるべきか、ということを考えさせるというのが筆者の狙いのようです。

筆者は、現在の世界にはびこる、自由や平等、そして論理といった概念に対して、それだけが全てではないだろ、と疑問を投げかけています。全くその通りだと思います。僕が思うに、これらの概念を使ってあえていうなら、自由とは権利でなく、自由を享受する責任という義務を果たさなければならないわけで、平等は不平等が存在してこそ成り立つものであり、そして論理は情には勝てません。何かあったときに『それがどうした』といわれれば、こちらも情をもって闘うしかありません。
本の中にある言葉を引用するならば、究極的には全ての原点は『ならぬものは、ならぬのです』、その言葉に尽きると思います。概念を導入して、それしかないと信じこんだ時点で負けなのではないのでしょうか。多くの議論に見られるような、枠組やルールを定義した上で論戦をはるのは楽しいですし、やり終えたときには結果は良し悪しの2通りの評価しかないためわかり易いです。しかし世の中そんな甘くないぞ、物事すべては灰色で混沌に満ちているんだぞ、と。

そのような白黒はっきりつけたがる欧米的な指向に対抗するために、筆者は特に日本的な様式美、道徳といったものを強調しているように思えます。美とは微妙で繊細なものであり、一概に良し悪しを決定できるものではありません。道徳も臨機応変に実践しなければ、その真価は得られないものです。欧米的な剛の指向で空いた隙間を、日本的な柔の思想で埋めてやることこそ、日本が日本たれると筆者は主張しています。柔良く剛を制す、とはよく言ったもので、理詰めで考えさせられることの多い日常生活を送っている僕としては、とてもはっとさせられました。

筆者は最後にまとめを兼ねて日本が日本であるための提案をいくつかしていますが、僕も日本人の一員として、また、将来の日本が自分にとって好きな国であり続けられるようにという願いを込めて、一つの提案をここでしてみたいと思います。
日本が日本的であるためには、筆者も本文中で述べているとおり、日本人はもっと日本の文化を知らなければならないと思います。日本の文化を知る方法は、古典や歴史書を読んだり、名所を訪れたり、と色々な方法があると思いますが、その他に僕が最も優れていると思う方法があります。簡単です。多くの日本人と会うこと、特に年上の日本人と会うこと、ただそれだけです。より多くの日本を感じるためには、日本に対する色々な見方が必要です。そして特に年長者は長く生きているだけあってより多くのことを感じているでしょう。そこからは必ず日本的な何かが得られるに違いないと僕は信じてやみません。

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

March 30, 2006

実験便利グッズ

[Tips]

最近いろいろと実験や機器試験といったものが目白押しで、忙しい日々が続いています。そのような中でよくあるのが、機器をどこかに固定したりする作業。いちいちネジ止めとかはめんどくさいですし、テープで張るとはがすのが非常に面倒であったりします。そこで東急ハンズあたりをぶらぶらしてみることにしました。

taishin.png
発見しました、最強の固定器具を。その名は『耐震プロテクター』。震度7の地震がきても家具を倒れないようにする、家具の下などに敷くゲル状のシートです。
このシート、非常に粘着力が強い(せん断方向にもほぼ無敵)だけでなく、きれいにはがれます。また水洗いするだけで何度も粘着力が回復するので、テープのように無駄になることはありません。

すいません、何か宣伝文句のようで。でも本当に便利なので、是非実験等でお困りの方は試してみてください。

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