2002-05-09
_ Terrarium始まってたのか
前にネタにしたマイクロソフトの.netを使ったP2Pゲーム開発競争「Terrarium」ってもう始まってたんだね。すっかり忘れていたよ。実際にダウンロードしてサンプルをコンパイルしてみたりしたんだけど、やっぱり結構面白そうだなー。今もうちょっと暇だったら.net系言語のお勉強がてら遊んでみたいんだけど、6月にはいるまではそんなんやっている暇はないよなー。コンテストの期間(6/28まで)が終わっても、サーバー運営を続けてくれるといいんだけど。
_ .netのDBアクセス
ASP.NET(の中の主にVB.NET)に関する覚え書き第2弾。DBアクセス周りについて。
従来のASP(Active Server Pagesの方ね。Application Service Providerじゃなくて)ではADOを使ってDBアクセスを行っていたが、.netではADO.NETというオブジェクト群を使ってDBアクセスを行う。ADO.NETのコアといえるオブジェクトはDataSetだ。DataSetは一般的なDBMS(SQL ServerとかOracleとか)を利用したデータベースのみならず、XMLファイルなどもデータベースソースとして扱うことができる。概念としてのデータベースを(DBMSから切り離して)高度に抽象化したデータ操作オブジェクトとなっている。
というのがASP.NETの売り文句なんだろう。しかしそれを聞いて、「ふーん、DBMSだけしか扱えなかったADOと違って、.NETではXMLもデータベースとして扱えるように拡張されたんだ」と思ってしまっては罠にはまる。ADO→ADO.NETの変更は拡張ではなく、根本的なポリシー変更(+おまけ的部分の拡張)だと考えた方が良さそうだ。
というのはなぜかというと、従来のADOでは基本的にデータベース=DBMSに限定されていた分、ADOを通してDBMSの機能をほぼそのまま利用することができた。しかし、ADO.NET(の中のDataSetを使ったデータ操作)においては、データベースはDBMSとは直接は結びつかない。DBMSのみならずXMLもデータベースソースとして等価に扱えるよう抽象化された結果として、DataSetというのはデータベース上にあるデータそのものではなく、データベース上にあるデータをメモリ上にコピーしたものになってしまった。
「従来のADOを使ったDBアクセスだって(参照系においては)似たようなものだったじゃないか」と思う人もいるかもしれないが、いざとなったらDBMSと直接接続できる(カーソル、トランザクションが使える)ADOと必ずDBの内容をメモリ上にコピーしてからしか扱えないADO.NETとでは、参照系以外のDBアクセスの使い勝手がまったく異なる。今まで調べた限りにおいては、DataSetを使ったDBアクセスにおいて、従来カーソルやトランザクションを使って行っていたような処理を、従来と同程度に手軽に実現する手段は見つけていない(DataAdapter経由でDBMSに直接SQLを発行して、前と同じ内容を前より面倒くさい手段で実現することはできそうだけど)。
ちなみに、データベースの参照系の使い方においては、ADO.NETは非常に便利な拡張をたくさん用意している。従来一般的に使われていた、RecordSetを1行1行ループで回しながら出力していくような処理は、DataSetという形でまとめて表示用コンポーネントに引き渡すことで、ページング処理まで含めて簡単に実現できるようになった。でも、それは確かに実装上の手間を大きく省くかもしれないけれども、クラス仕様の実質としてはおまけ的な意味しか持たないだろう。
という理解の元で、ひとまずお勉強がてらADO.NETを使ってDBアクセスするサンプルをいくつか作ってみたところ、データの参照・更新などを行うプログラムは非常に簡単に作ることができた。しかし、DataSetを使ってお手軽に作ったプログラムにおいては主に更新時のデータ整合性の保証が全然ないように思える。ADO.NETは標準でデータ整合性を保証する仕組みをサポートしないつもりなんだろうか? それとも俺の知らないどこかで保証する仕組みが動いているのか? まさかADO.NETは同時更新が頻発する規模のDBアクセスは、標準的に想定外ってわけじゃないよね。
いろいろ調べているうちに、従来のADOを.NET上でADO.NETと(ほんのちょっとだけ)連携させて使う方法を発見したんで、参照系以外の処理は従来のADOを使ってやった方がいいんじゃないだろうか、というのが今のところの結論。でもADOとADO.NETでは互換性がほとんどない(ADOのRecordSetをDataSetにFillできるだけ)んで、両方使うのって重複する(けど書き方が違う)部分が大きくてあほらしい気がするんだよな。実はDBアクセスはすべてADOベースで行いつつ、ADO用の表示を簡略化するためのコンポーネント群を作った方が開発が楽だったりして。DataSetの代わりにRecordSetを食わせるDataGrid(一覧表示用コンポーネント)みたいなものって、結構簡単に作れるんじゃないか?
2003-05-09
_ PHPのauto_prepend (13:49)
PHPに関するメモ。
PHPにはauto_prependという設定がある。これは、PHPファイルの頭に自動的に指定したファイル(コード)を付与する設定だ。あるディレクトリ以下のすべてのPHPファイルに共通する処理などは、このauto_prependを使うことによって手軽に実装できる。
auto_prependはphp.iniで設定するが、php.iniの設定は.htaccessで上書きすることもできる。
- php.iniの設定を.htaccessで上書きする方法 - http://ns1.php.gr.jp/pipermail/php-users/2001-November/003373.html
これらの機能を使用することによって、PHPにおける共通処理はかなり柔軟に表現することが出来るだろう。
これを使うと作りかけのライブラリのいろいろな機能がもっとスマートに書き直せるなー。と思いつつも、PHP5の言語仕様をちらっと見たところ、PHP4でもうコードを書く気力がなくなった(どうせ書くならばPHP5になってからにしたい)ので、まあしばらくこの知識は使われることがないと思うけど。
_ ソニー、スカパー!の録画にも対応可能な縦置き「コクーン」などを発表 from MYCOM PC WEB (13:49)
- ソニー、スカパー!の録画にも対応可能な縦置き「コクーン」などを発表 - http://pcweb.mycom.co.jp/news/2003/05/08/18.html
うわー、すげー欲しい。けれども、RD-X2(HDD+DVD-RAMレコーダー)で自力予約録画した番組もろくに消化できずにためまくってしまい、今やほとんど使っていない現状を考えると、買ってもどうせ見ている暇はないんだろうなー。半自動でばりばりDVD-Rに書き出してくれる機能とかあれば、老後の楽しみにできるのに。
_ MS Passportのセキュリティ問題で個人情報が漏洩 from ZDNet (13:49)
多分かなり基本的なミスだったんだろうなー。クリティカルな処理が実はGETで簡単に呼び出せてしまったりして、あとはその穴と標準機能を組み合わせていろいろ出来ちゃうって感じの。
_ Windows XP「2人同時利用」が可能に from ZDNet (13:49)
ようやくデスクトップのランタイム環境が仮想化されて、同時に複数のデスクトップ環境を実行できるようになったのか。X Windowみたいにデスクトップサービスみたいなのが裏で走って、それにユーザーのデスクトップ実行環境が接続するイメージになるのかなー。
Windows XP以降は、同時マルチユーザーログイン時の管理の切り離しがかなり進んでいるし、デスクトップ描画がDirectDraw Surfaceに割り当てられているんだったら、表示側でn個のデスクトップ処理を行うのは簡単そうだ。あとは、キーボードとかマウスとかの入力デバイスとかシステムイベントの通知とかが、きちんと対応するデスクトップに対して送られればいいのかな。
_ MSのNGSCB、ウィンドウ外観でセキュリティ保護 from ZDNet (13:49)
>セキュアなウィンドウの情報は、ほかのウィンドウがかぶさったりバックグラウンドに移動されると消滅する
なるほどそういうインターフェースはいいかもね。でも、そうやってセキュアさを強調したウィンドウを呼び出す処理はどうやるんだろうな? いちいち面倒くさい操作(パスワード入力とか)が必要というのはうざそうだし、かといって誰でも簡単に呼び出せるようじゃウィンドウ表示のインターフェースに凝る意味がなくなってしまう。
_ 理想はPCゲーマー?――Windowsクライアント戦略が狙うもの from ZDNet (13:49)
- 理想はPCゲーマー?――Windowsクライアント戦略が狙うもの - http://www.zdnet.co.jp/news/0305/09/nj00_poole.html
現在PCにお金を(過剰に)使ってくれるのは、一部のコアゲーマーと必要に迫られたエンタープライズ系顧客くらい、って感じなのかなー。その二つは両極端過ぎて、同時にサポートするのは難しそうだ。さらにもっとも数が多い、ごく普通のビジネス・ホームユーザーという層も捨てるわけにいかないし。
2005-05-09
_ キーワードとタグ (11:16)
「はてなブックマークとTaggingはてなブックマークとTagging」あたりのネタ。ちゃんと一般論としてまとめる気力がないんで、現在のMM/Memoの実装例を紹介してみる。
MM/Memoでは、
- ユーザーが自由に入力するタグ(ジャンル)
- タグ入力候補として、該当のドキュメントから自動抽出した特徴語を表示し、ワンクリックでタグとして追加可能な入力補助機能
- 上記で自動抽出した特徴語を、隠しタグとして登録。通常表示時は見えないが検索キーとしては利用できる。
- 検索から「自動ジャンルも検索」を有効にして検索すると、ユーザーが入力したタグと、自動登録した隠しタグをフラットに検索する
というようにしてある。
現状のインターフェースが使いやすいかどうかはともかくとして、ひとまず上記のような構造にすれば、ちゃんとタグを入力したい人はdel.ico.usみたいな使い勝手、タグを入力しない場合でもはてなブックマークみたいな使い勝手での、ブックマーク(メモ)の串刺し検索が実現できる。
あと、MM/Memoではブックマークのタイトル、タグ、コメントなどで使われているテキスト自体から特徴語を抽出し、特徴語が類似しているブックマークをEstraierの類似文書検索機能を利用して抽出している。だから、似たような話題に関するブックマークは、URLやタグが違っていても、related検索(各ブックマークの虫眼鏡マークをクリック)である程度抽出することができる。
MM/Memoは実験的に機能を追加していっているんで、インターフェースはあまり洗練されていないし、作ってみたらダメだった機能もいろいろあるけれども、上記のような機能群はかなり有用な機能だと思う。洗練されたインターフェースで実用レベルで実装してくれるところ希望。
_ メモを該当ページ上で書くbookmarklet (21:18)
「JavaScriptの動的ロード」話をみて最初に思いついたネタなんだけど、どうせ誰か作るだろうと思って放置していたら誰も作る気配がないんで、試しに作ってみた。
bookmarklet: その場でMemo!
何をするものかというと、MM/Memoにメモを登録するフォームを、現在開いているページ上の可動レイヤーとして生成し、ドキュメントを見ながら入力して投稿できるというもの。呼び出しているのは、このスクリプトね。
あまり真面目に作ってないけど、フォームの見た目を格好良くして、レイヤーの移動周りの処理ももうちょっとインターフェース的にわかりやすくしたら、仕組み的にはかなり使えると思う。一応WindowsのIE、Firefox、Opera8では動作した。
「隠す」をクリックするとフォームが消えるけど、もう一回同じbookmarkletを実行すれば、消えた前の状態でフォームが復元する。フォームを移動しても邪魔になる場合なんかに、一時的にフォームを消して、その下に隠れている文章を読んだりするのに使う。
呼び出しているjavascriptをダウンロードして、フォーム生成部分を適当に書き換えて使ったら、他のいろんなサービスにも使えるでしょう。blogツールに直接投稿できるようにしたりしてもいいかもしれない。wemaと連動させてもいいかもね。ユーザーサイドjavascriptなんかと組み合わせれば、どこでもwemaみたいなこともできそうだ。
JavaScriptコードが消えちゃった
サーバートラブルの影響で、上記JavaScriptコードが消えちゃった。もう一回書く気になれないんで概要だけ書いておくと、bookmarkletから外部JavaScriptコードをインポートして、そこで適当な可動レイヤーを作った上に投稿フォームを生成する、というコード。bookmarkletの文字数制限を回避するために、外部JavaScriptコードを呼び出す方法は、malaさんのところとかで詳しく説明されている。可動レイヤーとかフォームの生成は、JavaScript+HTMLの基本なんでまあ適当に作ってください。
2007-05-09
_ 麻布十番から渋谷まで歩いてみた
麻布十番の商店街を抜けて、六本木ヒルズ経由で六本木通りに出て、あとは渋谷までまっすぐ。寄り道しながらだらだら歩いても、50分くらいしかかからなかった。自転車で近いのは知っていたけど、歩くのもそんなにつらくない距離だな。ただ、六本木通りはあんまり面白みのない通りなんで、後半ただただ歩くしかないのがだるかったけど。
_ 昨日の自転車通勤のダメージは大きかった
3ヶ月も経つと、自転車関連の筋肉は完全に衰えてしまうもんなんだね。ケツが痛いのもそうだけど、(重い荷物を背負っているせいで)背筋から首にかけてもすげーつらかった。あと、足の持久力もなくなっているらしく、帰り道の後半は足がだるくて力が入らなかった。ケツをかばって乗っているうちに、両手の平も痛くなってくるし。
自転車に乗っていない間も、テニスはハードにやっていたから、それなりにいけるものだと期待していたんだけど、こんなんじゃしばらく自転車はリハビリ程度にしか乗れないな。たかが通勤でこんなにダメージを負っていたんじゃ、話にならない。


