Archive for the '日記' Category

Apr242008

ドキュメントと動画の融合 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

晴のち曇 ひろまさ@ 4 月 24th, 2008 投稿時の月齢:17.5  月名:居待月  潮汐:中潮

実はドキュメントと動画の融合っていうのって結構面白いなって最近思っていて、近頃、投稿が youtube ずいています。

たとえば、なにか PC 操作的なことでこれは便利! とかいっても、なかなか伝わらないもので、逆に説明文書が長くなって、書いているほうも本当に伝わっているのだろうかと思ってしまうもの(笑) これが動画なら、いっぱつで伝わるんじゃないか!ってことで、たとえばスペシャルなキーボード操作を今回は例にしてみます。

今回のお題はキーボードマクロ。

キーボード操作こそ周りにやっている人がいてこそ盗む系の技であり、目の当たりにしないとなかなか実用度が分からない部分でもあります。

一応説明を書くと、キーボードマクロはテキストエディタなどに実装されている、「自分のキー操作を記録して再生する」機能です。 たとえば、CTRL +SHIFT + M して記録を開始し、できたところで CTRL +SHIFT + L で再生とかすると、繰り返し操作が簡単に・・・・。 ってもう文章での説明はいやになってくるような機能です(笑)

動画でごらんアレ

録画失敗して音ずれしちゃうましたが、雰囲気用に入れています :-)

やっぱり使うと速い?よね?

今回は、<td> をうつところにキーボードマクロを使っています。 一行目の td の入力を記録し、ほかに適応しているという図です。 このようにキーボードマクロは、同じような操作のくりかえしがある場合に非常に有効な操作です。

もちろん、正規表現の置換をつかってやる方法もありますし、ひとそれぞれですが、キーボードマクロは「あんまり考えなくてすむ」という部分で強力な方法といえましょう(笑)

さて、いままで動画といえばテレビとかの領域でしたが、これは映像主体でわりと push 式にだらだらみるもの。 インターネットは逆に pull で攻撃的に自分から取りに行くイメージがあります。

また、Web の基本は半リアルタイム。 オンデマンド。 しかもテレビと違って文書を読むことに長けているインターフェースです。 これに好きなときに再生できる映像がまざってくると、なかなか面白いですね。

こう、このエントリも上からながめてみると、動画が途中にあって、複雑な文書では伝えずらいことが、ぽちっと説明がみることができるというのは、なにか可能性を感じます。 たとえば、音楽の説明は楽譜をみるより実際の演奏がいいし、お料理とかだと、まぜまぜしているところみれたらいいし・・・。

最近だと録画や編集もお手軽になってきたので、こういったサイトがどんどん増えるといいな、と思っています。 :-)

Apr192008

携帯電話ポケベル打ち このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

晴れ ひろまさ@ 4 月 19th, 2008 投稿時の月齢:13.4  月名:待宵月  潮汐:大潮

携帯電話の文字入力方式に、ツータッチとかポケベル打ちというモードが存在する機種があります。 やっていて分かっている人にはわかるのですが、PCのローマ字入力と同じタイミングでうてるので、なれるとかなり気持ちよく打つことができます。 今回はぼくの入力しているところを録画してみました。

しかし!(笑)

マクロ撮影に失敗したため、

何打ってるのかわかんね

というわけで、hiromasa.another 読者の方に若干名いらっしゃる、ただの指フェチ動画とあいなりました。

・・・おたのしみください。(笑)

足にデジカメはさんで録画するという暴挙をやっているため、自分で携帯がよく見えずあまり速くうててなかったりするのですが、タッチタイプが可能というのもツータッチの利点の一つかもしれません。

と、これだけでは申し訳ないので関連動画で見つけた、別な方のポケベル打ち動画。 どうやら通常入力モードの携帯早打ち選手権の記録をはるかに凌駕しているようです。

これ覚えると、携帯で文字を打つのがなんの苦でもなくなります。 たぶん、慣れたら携帯にミニキーボードつけられるよりずっとストレスが少ないと思われます。

ぼくはたぶん、いままでで一番速くうてたのは SO504i。 ジョグ付で、まだ mova のころだったので機械の反応もよくいまでも使いたいくらいの携帯電話です。

so504i

では最後に、全然関係ない指芸を。 指といえば連射! ひろまさの連射風景とってみたぜ!

・・・おたのしみください(笑)

Mar242008

メモリと描画支援とFirefoxと このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

曇のち雨(8/3) ひろまさ@ 3 月 24th, 2008 投稿時の月齢:16.1  月名:立待月  潮汐:大潮

ThinkPad くんを購入してちょこちょこいじっているわけですが、購入初期状態の 1G メモリーではさすがにたりない! Apache と MySQL と Eclipse と Firefox あげよーもんなら、物理メモリ超えてしまいます。 これじゃーせっかくのデュアル CPU がもったいないーというわけで購入。 メモリといえばここだ!

上海問屋 - 本店 - ホーム

SO-DIMM 1GB 1,899円

1G 1,899円ってあんた。(笑) こちらは小さな部品はメール便で送ってくれるので、受け取りも楽チン。

もともと 1G ささっているので、1G 追加でデュアルチャンネルになるはずです。

memory

てなわけでいい感じになりました。 速くていいっすねー。 Firefox なんか一瞬であがります。 :-)

さすがにチップセット内蔵グラフィックなので、そのへんの値はでないようですね。 ただデュアルチャンネルにしたせいかここの数値もアップしました。 内蔵は VRAM がメインメモリにとられるせいだと思われます。

この数値をみて思い出したのが、最近のグラフィック描画のハードウェア支援です。

Windows Vista は AERO 機能をオンにすると、グラフィックカードの描画支援をつかってすべてを描くようになるのは有名です。

また、実は Mac のミドルもこの機能を持っていて、

Quartz - Wikipedia

Quartz (クオーツ) は、アップルオペレーティングシステムMac OS X の描画コアエンジン。前身である NeXT の DPS (Display PostScript) に代わり、PDF ベースの描画モデルを採用したもの。

Mac OS X v10.4 (Tiger)ではビデオチップのプログラマブルシェーダを使って、描画演算をほぼ全てビデオチップ内で実行できるQuartz 2D Extremeを実装する予定であったようだ。(開発途上のまま搭載されオフにされており、正式にはサポートされていない。)

最近は、この隠し機能をONにして性能アップを試みるのが Mac ユーザの間で流行っているようです。

どちらにせよ、アプリケーションの描画というのは年々複雑になっていますので、描画のミドルが専用ハードを使おうとするのは当然の成り行きなのかもしれません。

てなわけで、ベータ段階にある Firefox 3.0。

ぼくはまだつかったことありませんが、こいつも OpenGL を介してグラフィックチップの描画支援をうけて動作するようになる、、、はずです。

cairo - Wikipedia

cairoカイロ)は様々なバックエンドに対応したフリーのグラフィックライブラリであり、ソフトウェア開発者にデバイスに依存しないベクトルベースのAPIを提供する。現在、X Window SystemWin32 GDIQuartzOpenGLglitz経由で)、ローカルなイメージバッファ、PNG画像、PDFPostScriptSVGなどの出力をサポートするバックエンドを持つ。cairoは、利用可能な場合はハードウェアアクセラレーションを利用するように設計されている。

今回の Gecko は描画が cairo というライブラリに移行した最初のものになりますが、OpenGL サポートが enable になって出荷されると思われます。 これにより、画面のレンダリング時の基本描画、アルファブレンディング、アンチエイリアス等々、速く描画できるようになるハズです。 (そのかわり、Firefox 3.0 系は Windows 9x 系で使えなくなる)

周りの評判を聞いていると結構速いそうです。 まー描画以外のパフォーマンスアップも当然あると思うので一概にはいえませんが、楽しみな修正の一つです。 :-)

Mar232008

コンテンツの配信について考える このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

晴れ(12/2) ひろまさ@ 3 月 23rd, 2008 投稿時の月齢:15.1  月名:満月  潮汐:大潮

現在インターネット上でコンテンツを配信する一般的な技術は、HTML を Web サーバにおいて http にのせて配信することです。 で、よりユーザにつかいやすい formated な形式でコンテンツを配信してやろうじゃないか、というのが RSS とか ATOM とかの技術だと思います。

ぼのさんとこで、RSS について盛り上がっていたので、せっかくなのでぼくの思う理想のコンテンツ配信技術を書いてみます。 :-)

RSS や ATOM はそのサイトの”新着”をみる手段として今は主に使われていますが、たぶん本来的にはそのサイトのすべてのドキュメントを決まった形式でとりだすものです。

ただ、RSS の略を見ると Really Simple Syndication と、Rich Site Summary の 2(3)種類あって、Summary の言葉もみえるので RSS はコンテンツ配信の意味合いはやや薄いのかもしれませんが、ATOM の思想は新着配信なんかではなくコンテンツ配信技術です。

たとえば、1サイトを “ドキュメント配信サーバ” と考えます。

HTML と RSS/ATOM のそれぞれはプレゼンテーションレイヤのひとつで、サイトのドキュメントデータベースから外部にデータを渡す役割を持ちます。 HTML はユーザインターフェースを含む HTML ブラウザへの表示。 RSS/ATOM は対応フィードリーダへの配信です。

情報取得する場合、HTML の場合は人の判断によるブラウザ操作が必要で、またフォーマットされたものではないのでデータの扱いが難しく、RSS/ATOM は昨日も書いたようにフォーマットがただの1ファイル。 配信として考えると、この形式は全記事全文をひとつのファイルに収める必要があり、条件抽出とかもできないので現実的ではありません。

コンテンツ配信としてはどっちも技術的にはいけてないのです。

もーしかしてとおもって、ATOM のプロトコルを読んでみたのですが、”必要な情報を必要な部分取り出す” といった API はないようです。 コンテンツを publish する API はあるのですが。

よく映画の中の世界とかで、妙なハイテク OS 画面(?)に調べたいことを入力すると、なにやらネットワークを調べ、たとえば人の情報がびっと表示されるとかあります。 また、「どこそこで情報が遮断された!やばい!」とかそんな場面もよくみられます。

現実をみていると、なんじゃそら(笑) と思ってしまいますが、意外と未来はあたっているのかな、、と思ってみたりすることがありました。

たとえば、いまは検索とかだとクローラが、Web をみてまわりキャッシュしフォーマットされていない HTML データをなんとかタグをたよりに解析し、タンキング集計。 それをもとにユーザに結果をかえす仕組みになっています。

問題は、クロールする時間があってリアルタイムじゃないし、取得できる情報はフォーマットされていないし、検索アルゴリズムをユーザが決められないという問題があります。

たとえば、”ドキュメント配信サーバ” から条件を指定してフォーマットされたデータを取得できるプロトコルがあるとします。

この日付でこの文字列を含んでいてとか条件指定すると、リアルタイムに最新ドキュメントが取得できる。 ”ドキュメント配信サーバ”が他の”ドキュメント配信サーバ”のドキュメントにリンクしていたら、さらに通信に行ったり。 認証があっても面白そうです。

これで、リアルタイムにフォーマットされたデータを取得できます。 また、条件から無関係なものをとりのぞくのは、こちら側の仕事です。 たとえば Google にされなくてすみます。 自由な世界です。

“ドキュメント配信サーバ”同士が、P2Pみたいに有機的にぱ~ってつながっていく様子はさながら SF でかっこいいし、検索や結果表示の UI は好き勝手できるし、 「どこそこで情報が遮断された!やばい!」も実現可能ですね。 :-)

リアルタイム性っていうのは娯楽的にも面白い部分で、またネットワークだと半リアルタイムがつかえて、今もニコニコ動画とか twitter とか人気のあるサービスには”動き”があります。 Microsoft の Live サービスってよく考えた名前だなと思ったことがあります。 たぶん、今後インターネットが発展するのに必要なのはライブ感。

てーーことを数年前に考えてできたサイトが、実は hiromasa.zone です。

WP じゃないところ、Eclipse の解説とかのせているところは自前のアプリなんですが、今は mod_rewrite で .html にごまかしちゃっていますが、ホントは

http://zone.maple4ever.net/document.php?mid=%3C20050807174620.42f5ca5c9be5a.unboard%40hiromasa.zone.ne.jp%3E

こんな引数つけて hiromasa.zone を呼んであげると、情報をかえすようになっています。 簡単な API で、ドキュメント部分だけかえすとかもできるようになっていたりするんですが、まぁ対応アプリなんかあるわけもなく、呼べるのはぼくのつくった管理画面だけです。(笑)

全文、全記事配信可能なプロトコルになっているわけです。 なんかドキュメントID を全世界ユニークにしたかったらしく、メールの message-id みたなのがついているのが見えます。 

まぁまぁ、このようなリアルタイムコンテンツ配信は、ぱっと考えても現在の通信インフラじゃできないかなーって部分もありますが、インターネット2 くらいになったら当然のようにでてきそうな技術ではあります。 プロトコルの名前は Gopher 2 !?(嘘

そーこー相当考えた結果、どうにもいまの RSS/ATOM が気に入らなくて、やれないんならやめちゃえ! というわけもあってぼくのブログは抜粋配信なのです。 単純にただの技術者の頑固です。

かわいそうに、とそっと見守っていただけると幸いです(笑)

ちなみに、このサイトは

<div class="entry" style="">

でエントリの内容がはじまりますので、全文ほしい方は適当に RSS 生成してもらえればとおもいます。

なにを隠そう、ぼくも Yahoo! とかのニュース、勝手に全部全文生成して Google Reader で読んでいます。。 ニュースとかは、ね。 いいのだ。 :-P

 
Mar192008

【重要】業務連絡(メール不通です) このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

晴のち曇 ひろまさ@ 3 月 19th, 2008 投稿時の月齢:11.8  月名:十二日月  潮汐:中潮

業務連絡です。

ひろまさが使っているメールアドレスで、ホスト名が @hiromasa.zone.ne.jp のものについてが 15日から不通になってしまっていました。

どうやら、SMTP は生きていてしまっているようなので、送信すれども返事がない状態となっている可能性があります。

お心当たりの方は大変申し訳ないのですが、

h1romas4@gmail.com

まで再送お願いいたします。

@sourceforge.jp のメールは gmail に転送していますので大丈夫です。 *@hiromasa.zone.ne.jp が該当です。

大変お手数おかけします。

ついにサーバ会社さん、はたんかな。。 インターネットレンタルサーバ初期時代からお疲れ様でした。

hiromasa.zone のコンテンツもコアサバのほうにうつそうと思います。 なんとか、.htaccess くらいはきけばこっちのサーバにそのまま 301 リダイレクトさせます。

Mar122008

PHP で遊ぼう(ハテナ) - 手続き型とアルゴリズムと このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

晴時々曇 ひろまさ@ 3 月 12th, 2008 投稿時の月齢:4.6  月名:五日月  潮汐:中潮

hiromasa.zone の MySQL があいかわらず落ちているため、このシリーズが何回目かわからなくなってしまったのでとりあえず (ハテナ)。

プログラム言語はコンピュータに何か処理をさせるための記述の塊ですが、プログラマと呼ばれる人は、そのコンピュータ言語に合わせて"普段の生活でやっていること"の記述をかける人です。

別にたいしたことをやっているわけではありません。 たとえば、前に書いたような、大きいものと小さいものの並べ替えとか、異なる種類のものの振り分けとか、そういった普段の生活でもやっているようなことを、言葉に置き換えているだけ。

人間は体で覚えてしまっているやり方とか、経験的にそうなることがわかっているのでやり方を意識していない部分というのがありますが、これを丁寧に紐解いていって最終的にコンピュータ言語に置き換えるのが仕事です。

コンピュータ言語というのは、こういった"やり方"をきわめて紛れなく記述できる人間のための言語です。 最終的には人間の言葉で書かれた仕様書なんぞ紛れが多くていらなくなります。

人間「1ヵ月後に実施する。」

1ヵ月後って 30日後? 31日後? 次月同日?

31日月末から1ヵ月後っていつ? 次の月が 2月だったら? 28日? あ、29日も考えないと。

等々。

人間の言葉でかかなければいけないのは"なんのためにやるか" というコンピュータ言語でかけない部分。

なんて、実はこれは夢物語。 現在はコンピュータに指令するための特有の記述も混在してしまい純粋にそれだけを書くことができず、時間もかかるので言葉としてはまだまだです・・・。

さて、このような何かのやりたい事を紐解いた手順を、アルゴリズムと呼びます。

アルゴリズム - Wikipedia

アルゴリズム (algorithm) は、なんらかの問題を解くための手順のことである。算法(さんぽう)と訳されることもある。

コンピュータにアルゴリズムを指示するための(電子)文書をプログラムという。人間より早く大量に正しい結果を導くことができるのがコンピュータの強みであるが、そのためには正しいアルゴリズムにもとづくプログラムが必要である。

だから、ソースコードを見られるというのは結構恥ずかしい。 なんといっても自分の思考の流れを赤裸々に人に見られるわけで、友達プログラマいわく「裸を見られるより恥ずかしい」です。(笑)

たとえば、AとBと書かれたカードが裏返しにおいてあって、そのカードの配置を知りたいとします。 どうすればいいかといえば、一枚めくってそれが A なら片方は B。 逆もしかり。 一枚だけめくるだけで片方は決まるので、2枚めくる必要はないわけですが、人によっては一応両方めくることをするでしょう。

1枚だけめくるのを言語になおすと、たとえば

   1: <?php
   2:  
   3:     // 無作為におかれたカード2枚(ここではカード1がB、カード2がA)
   4:     $card1 = 'B';
   5:     $card2 = 'A';
   6:  
   7:     // カード1判定
   8:     if($card1 == 'A') {
   9:         echo 'カード1 は A です。';
  10:         echo 'カード2 は B です。';
  11:     } else {
  12:         echo 'カード1 は B です。';
  13:         echo 'カード2 は A です。';
  14:     }
  15:  
  16: ?>

こんなかんじ。 "めくる" ってのは if で表現しています。

両方めくってみる人なら、

   1: <?php
   2:     // 無作為におかれたカード2枚(ここではカード1がB、カード2がA)
   3:     $card1 = 'B';
   4:     $card2 = 'A';
   5:  
   6:     // カード1判定
   7:     if($card1 == 'A') {
   8:         echo 'カード1 は A です。';
   9:     } else {
  10:         echo 'カード1 は B です。';
  11:     }
  12:  
  13:     // カード2判定
  14:     if($card2 == 'A') {
  15:         echo 'カード2 は A です。';
  16:     } else {
  17:         echo 'カード2 は B です。';
  18:     }
  19:  
  20: ?>

こんな感じ。 両方めくるので if が 2つになっています。

こんな風に、その人の思想によってプログラムも変わってきます。 思考の流れがプログラムから読めます。

片方だけみる派閥の人から見れば、片方だけめくるだけでよく、効率がよいので、両方みる派閥の人に対して「なにやってんだか」となります。 なんだかあたまのわるさを露見しているみたいなときもあるわけで、このへんがプログラマの一番のストレスとなるぶぶん。

そして3人目の人が現れて、は?って。

   1: <?php
   2:  
   3:     // 無作為におかれたカード2枚(ここではカード1がB、カード2がA)
   4:     $card1 = 'B';
   5:     $card2 = 'A';
   6:  
   7:     // は?
   8:     echo "カード1 は $card1 です。";
   9:     echo "カード2 は $card2 です。";
  10:  
  11: ?>

まー最後のは半分冗談ですが、状況によって、将来 C カードが増える可能性を考慮してプログラムをかかなければならないこともあり、結構神経をつかう部分でもあります。

職業柄、(自分のことはたなにあげ) 人の書いたプログラムをなおしたり、アドバイスしたりしなければいけないこともありますが、最近は"思想的な部分"については、きちんと動作しているかぎり自分のイメージと違ってもそっとしておくことにしています。 お疲れのときもあるですしね。

その部分についての指摘は、どーも人格まで否定しているような気がして・・・。 考えすぎですか。(笑)

ちなみに、人のつくってくれたラーメンにはコショウをいれない派です。 :-)

Mar72008

ThinkPad X61 & Windows Live OneCare このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

晴時々曇 ひろまさ@ 3 月 7th, 2008 投稿時の月齢:29.4  月名:月隠  潮汐:大潮

私用でうちをあけている間に、先日頼んでいた ThinkPad X61 が届いていました。 :-)

P1000053

B5 なのに、キーも十分大きくきちんとストロークしてくれるので、ぱかぱかうてて気持ちが良いです。 トラックポイントも"いつものやつ"で大満足。 我が家初のマルチコア CPU は、 ZIP も展開しながらほかの事をしても処理落ちしなかったり良い感じです。

メールとか、ファイルとかデータ等は Linux のサーバに全部いれているので、あとはソフトいれるだけで Ready です。 いれたソフト。

そうそう、大事な ATOK はこれからこれから。 :-)

ほとんどいつもどおりですが、PaintShop がフリーの Paint.NET になりました。 あと、ウイルス対策ソフトを Norton AntiVirus から、Microsoft の Windows Live OneCare にしてみました。

ThinkPad がきて、Windows マシンが 3 台になり、またちょうど Norton 先生がきれかかっていたので、3 ライセンス 4000円弱の Live OneCare に乗り換えです。

実は1台体験版で 2ヶ月くらいつかっていたのですが、特に不具合もなさそうだったので購入してみました。

あんまり変なサイトとかファイルを落としたりしないので、ウイルス自体はどうでもいいのですが、気になるのはファイアーウォール。 インターネットからの inbound パケットはルータでふせいでくれるのでそれほど気にしなくて大丈夫ですが、ぼくが気になるのは outbound。

outbound は、PC から外に出て行くパケットですが、これはアプリケーション単位で制御しておいたほうが経験的に良いです。 わけわからないソフトはインターネットに勝手に情報を送ったりしてしまうのですが、これを防ぐことができます。(ポップアップしてくれる)

たまに、えええ! なんのために! ってソフトがインターネットにつないでいたりしますので、油断もすきもありません。 タスクトレイの通信ピカピカとか、ハブのピカピカとかみる手もあるのですが(昔はそうしていた)、最近はめんどくさくなったので、ソフトにまかせることにしています。

てなわけで、OneCare はこの機能が期待通り動作しているようだったので入れてみました。 もちろん、ほかの同種のソフトでもいいと思います。 まぁまぁ、ぼくは元来コンピュータに関して誰も使っていないものを使うのがすきなんです(かなり左より。。) なんたって、ぼくの Firefox のホームとかデフォルト検索とかは Windows Live だったりするのです。 別に Google じゃなくても困りませんよ? :-)

thinkpad_sc

てなわけで、こんな感じです。

こっちをメインにしていいぐらい、いい機械ですわ。 SD スロットついているので、ここから Linux 起動とかもいいかもしれないですね。 カワユスカワユス。 :-)

Mar22008

超合金タチコマきた。(動画) このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

晴時々曇 ひろまさ@ 3 月 2nd, 2008 投稿時の月齢:24.3  月名:二十五日月  潮汐:長潮

先ほどのエントリの続き。 タチコマさん。 Windows にソフトを入れてみました。 :-)

hiromasa.another :o) » Blog Archive » 超合金タチコマきた。

特徴は USB で PC につながって、声が出たりランプがついたりすること。

Linux では失敗しましたが、やはり USB audio として機能するようです。(←先に Windows でやれ。。)

センサー部と LED が動きます。

USB audio デバイスをメディアプレイヤーに割り当てて鳴らしてみるの図。

ちゃんと鳴ります。 :-)

みためふつーの USB audio デバイスなので、他の OS でも鳴るんじゃないかな~。 さっき、Linux で鳴らなかったは OS 側の設定っぽいですね!

Mar22008

超合金タチコマきた。 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

晴時々曇 ひろまさ@ 3 月 2nd, 2008 投稿時の月齢:24.2  月名:二十五日月  潮汐:長潮

超合金。 超合金。 なぜ、"超" 合金。 すごい不思議。 というわけで、超合金タチコマが我が家にやってきました。 といっても買ったのは同居の人です。

さすがに、定価 13,000 円だけあってできがよい。 ずっしり、ディテールもよく、ちゃんと墨入れもされております。

特徴は USB で PC につながって、声が出たりランプがついたりすること。

・・・ PC と接続できる。。

Img_0706 

・・・ PC と接続できる。。

かえして~

とは同居の人の弁ですが、早速 Linux に接続して lsusb です。 :-)

内蔵スピーカから声が出るということで、さすがに本体に wav をもたせることはしないとふんで USB 接続してみたら、やはり USB audio デバイスの模様。

$ cat /proc/bus/usb/devices
 
T:  Bus=04 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  3 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0992 ProdID=0706 Rev= 1.00
S:  Manufacturer=BANDAI
S:  Product=USB Tachikoma
C:* #Ifs= 3 Cfg#= 1 Atr=80 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=snd-usb-audio
I:  If#= 1 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
I:  If#= 1 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
E:  Ad=02(O) Atr=09(Isoc) MxPS= 192 Ivl=1ms
I:  If#= 2 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=1ms

BANDAI USB Tachikoma ですね。 HID のデバイスも見えるので、おそらくこちらは顔とLEDの動きの制御でしょう。

dmesg してみると、

usb 4-2: new full speed USB device using address 2
input: USB HID v1.10 Device [BANDAI USB Tachikoma] on usb-0000:00:02.0-2
usbcore: registered new driver snd-usb-audio

ということで、あっさり USB オーディオとして認識しているようなのですが・・・

$ mpg123 -a /dev/dsp hoge.mp3 
ALSA lib pcm.c:1972:(snd_pcm_open_noupdate) Unknown PCM /dev/dsp
[alsa.c:144] error: cannot open device /dev/dsp
[audio.c:517] error: failed to open audio device
[mpg123.c:687] error: Failed to initialize output, goodbye.

うーん、なんでじゃろ。 たぶんぼくがミスってるだけだと思うんですが・・・・。

接続した Linux のサーバで、タチコマから時報でもならせれば面白いと思ったんですが残念。

まぁまぁ、 200% 同じことをする人がいると思うので、他の方の情報を待ってみることとします。  USB の信号 hook してモニタできるような Windows ソフトってあるんかな? :-)

Mar22008

RDBMS とグローバル変数 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

雪のち曇 ひろまさ@ 3 月 2nd, 2008 投稿時の月齢:23.6  月名:真夜中の月  潮汐:小潮

オブジェクト指向言語と、RDBMS のインピーダンスミスマッチというのは昔からずーっと言われてきていて、最近ではいろいろなライブラリ、フレームワークのたぐいがそれを解消してくれるようになってきました。 しかし、この2つの組み合わせにはもっと恐ろしい弊害があるなと思っていて、自分の中で整理するためにもここに書いてみることにします。

RDBMS はエクセルなんかでおなじみのみためは2次元の表の集まり。 これをリレーションと呼ばれる表間のキー接続をつかって様々なデータを表していきます。

ここで問題となるのが、プログラムにおけるデータの持ち方とデータベースにおけるデータの持ち方が異なること。 特にオブジェクト指向でつくられたプログラムは RDBMS の2次元の表とデータの持ち方が異なり、データベース保存時に変換する必要があります。 そして、オブジェクト指向の場合、カプセルの単位がデータだけでなく"機能"も含まれます。

よくメンテナンスされたプログラムは、このインピーダンスミスマッチを O/R マッピングライブラリなどで解消し、そしてオブジェクトの持つ"機能のカプセル"部分もうまく再現できるようにつくられています。

そのへんが不出来なプログラムをみていて、思ったことがあるのです。

RDBMS がグローバル変数。

オブジェクト指向の一番基本的な使い方は、同じ処理は同じところに書くこと。 継承などのオブジェクト指向特有の機能はそれを実現するためのツールです。

ところが、RDBMS のアクセスをいれたとたんそれが崩壊するときがあります。

それは、あちこちのモジュールからテーブルをアクセスし、データを書き換え、それを"モジュール間の連携手段"として動作させたとき。

同じたぐいの処理だったものが各モジュールに分散し、もはやオブジェクト指向の意味なし。 常に、各モジュールはデータベースのカラムの値を意識しなければいけない最悪。

不用意なカラムの書き換えは死を招き、調査にソースコードを全 grep する必要があり、恐ろしいアプリケーションに発展していきます。

まさにグローバル変数。

Java や C# などの言語は、たとえばグローバル変数を"使えない"ように言語体系でプログラマを縛ります。

言語はあるいみフレームワークとなり、無茶なプログラムが書けないようになるために、誰が書いても一定水準、メンテナンス製が高くなります。 また、できないことが分かっているため、修正等で考慮しなければいけない部分もぐっと減ります。

しかし RDBMS アクセスがはいり、それをたった1つの不適切なモジュールがした瞬間に、言語フレームワークの壁が崩壊してしまう印象があります。

モジュール間の連携で RDBMS を経由するのは、グローバル変数をつかってモジュール連携しているのと同じ意味です。 ソースコードの繋がりがそこでいっきに途絶えるので、特に MVC でつくられているプログラムは、処理シーケンスもデータフローもがソースコード上から読みとるのがとても困難で、また、読めた確証を持つ時間が大幅にかかります。

これはたとえ O/R マッピングのライブラリをいれても、プログラムの書きようでどーとでもなってしまう部分。 オブジェクト指向と RDBMS を組み合わせる場合最大のインピーダンスミスマッチ弊害なのかもしれません。

縛りを入れつつ、それを縛りとおもわせない解は RDBMS じゃなくて、オブジェクトデータベース使うことかなーって思うんですが、アプリをつかわずとも簡単にデータパッチできる RDBMS の運用性の高さ、信頼性、周辺ノウハウはなかなかおいそれと手放すわけにはいかず、歯がゆいところです。

"気をつけて書く" じゃなくて、書けないようにする。 窮屈ですが、人間考えることを少なくする方がいい結果を生むことも多いってもんです。 :-)

« Prev - Next »