井上

2005・11・29

C++ vs. Java vs. C#のネットワークパフォーマンス比較

Comparing Two High-Performance I/O Design Patterns
http://www.artima.com/articles/io_design_patterns.html
を読んでみました。

ここで比較しているReactorパターンとProactorパターンを、それぞれPOSIX風に言い換えると次のようになります。

Reactorパターン
select(2) or poll(2)でソケットの監視をして、non-blockingなrecv(2)、send(2)で送受信します。
ソケットが読み書きできるようになるまでカーネルで待機して、読み書きできるようになるとユーザアプリに制御が来ます。ユーザアプリはrecvで読み込んだデータをバッファにコピー(読み込み時)するか、バッファにデータを書き込んでsendを呼びます。実際のネットワーク上へのデータ送受信は、カーネルの仕事です。

Proactorパターン
非同期IOのAPI(aio_のprefixの付いたAPI)で送受信します。
ネットワークの送受信が完了した時点で、カーネルからユーザアプリに制御が来ます。読み込みの場合、バッファに読み込みデータが既に入っているので、ユーザアプリはそれを使えます。


後者の方が効率的という話は新しい話題ではなく、POSIXのリアルタイム拡張(10年以上前)の頃からの話です。もっとも、10年以上経っても前者が優勢である現実はaioにも問題があるゆえだと思っていますが(率直に言って、あまり使いやすくありません)。

上記の記事自体は、OSごとに両方のパターンを混ぜて使うのは大変なので、select/pollでProactorをエミュレートするテクニックの紹介です。やっていることは、Proactor jobと呼ばれるユーザアプリのイベントハンドラが読み書きを完結させて、改めてReactorパターンに従うイベントハンドラを叩く、というだけです。

興味深いのは、C++、Java、C#のパフォーマンス比較です(3ページ目のグラフ)。C#がJavaに負けてます。Javaは自分の手元で使うと遅いのに、公開されたベンチマークだと良い結果を目にすることが多いです。本当はできる子なのに、ぼくの前では手を抜いているのか、と厭味を言いたくなります。
2005 11 29 01:57 - inoue - トラックバック(DISALLOWED (TrackBack))

2005・11・27

IBMのナレッジマネジメント

IBMではナレッジマネジメント(以下、KM)が成功しているようです
(ある意味、一時期IBMのシステム内にいたのに)聞いたことがありません...

これは
のどれかでしょうか。


KMに誰も情報を蓄積しない問題はずっと昔から続いている問題です。銀の弾丸はまだ見つかっていません。ただし、ソーシャルブックマークなど類似のサービスがたくさんある中でも、ポジティブに回り始めるものがごく稀に突然変異的に現れます。この転換点がどこにあるのか、それとも既に銀の弾丸を見つけた人がいるのか、気になります。IBMに答えがある気はしていませんが。

(*)一応、笑うところです。マニアすぎて誰も分からないと思いますが。"raven lotus"でWebを検索すると少し情報が見つかります。
2005 11 27 03:12 - inoue - トラックバック(DISALLOWED (TrackBack))

prototype.jsの勉強会。そしてRubyの影

今日の勉強会のネタはprototype.jsでした。と言っても、prototype.jsの使い方のような軟弱なネタではなく、prototype.js自体のコードを辛口で講義する内容でした。

Enumerableの日本語の説明を見つけました。そして、prototype.jsのEnumerableはRubyのインターフェースをそのまま踏襲していることを知りました(Rubyの方を見ていませんが、内部の実装もほぼ踏襲しているのかもしれません)。

そう言えば、昨日存在を知ったdiggでprogrammingセクションを見ると、意外(?)にRubyが目につきました。

「Why Ruby Shouldn’t Be Your Next Programming Language (Maybe)」は、RubyなんてしょせんCやJavaやPerl(これら3つはlegacy扱い)の延長線上の言語なので、新しく学ぶならLisp系の言語にしなさい、と言うまことにありがたい記事です。批判があってこそ一人前ですし、C、Java、Perlの後継として位置付けられている点は興味深いものがあります。

一方で、SourceForgeのプロジェクトの利用言語でJavaがC++を抜いてトップにという記事もあります。そもそもC++がCを抜いてトップだったことすら驚きです。
もっと読む...
2005 11 27 02:28 - inoue - トラックバック(DISALLOWED (TrackBack))

2005・11・25

アリエルエリアにユニマガ原稿を公開しました

ユニマガ原稿(UNIX MAGAZINE 2005年 9月、10月、11月のP2P特集)
http://dev.ariel-networks.com/modules/xfsection/index.php?category=13

執筆陣のアリエル関係者(原稿公開対象者)
井上、大谷岩田

他の執筆陣
亀井さん、大谷卓史さん@吉備国際大学

# かなり力作ぞろいです。
# xoopsは相変わらず腐っています。文書公開に非常に気を使います。
2005 11 25 22:04 - inoue - トラックバック(DISALLOWED (TrackBack))

2005・11・24

IPv6の専門家について行きました

久しぶりにIPv6界隈に顔を出しました。
アリエルにはIPv6の専門家(浜岸さん)がいるので、ぼくはついて行っただけですが。

面識は無いのですが、itojun氏の最近の様子を聞きました。
日記を見ると、元気なのか死んでいるのか分かりませんが。

考えてみると、そんなに年齢が違うわけではないのに、向こうは遥か昔に伝説的ハッカーになっている気がします。まあ、有名であることが良いかは知りませんが。
2005 11 24 23:36 - inoue - トラックバック(DISALLOWED (TrackBack))

2005・11・17

圧力団体その2

世間の普通の人気サイトをあまり知らないので、更新停止でサイトの存在を初めて知りました。
http://ameblo.jp/dukkiedukkie/entry-10006178492.html

世間には圧力団体があふれています。
2005 11 17 23:27 - inoue - トラックバック(DISALLOWED (TrackBack))

P2P業界の新しい圧力団体?

先週の記事ですが、japan.internet.comに「Microsoft と Cisco、『ICE』技術をサポート」があります。
この記事の内容はともかく、オリジナル版(英語版)を見ると、後半が翻訳されていません。翻訳されていない部分は、MSサイドから見たSkypeの弱点、と言うか、もっと率直に言うと、Skypeの悪口部分です。

これはjapan.internet.comに連載記事を持つ某P2P企業社員が政治的圧力をかけた結果でしょうか。真相は不明です。

ICEのIETFドラフトに目を通してみるかと、"ice nat ietf"で検索すると、吉澤氏の記事を見つけました。と言うことで、IETFドラフトを読むのはやめて後編を待つことにしました(軟弱)。
2005 11 17 22:45 - inoue - トラックバック(DISALLOWED (TrackBack))

P2P MLの整理を兼ねたネタ集

最近、P2P MLのメールが未読のままだったので、整理ついでにリンクを載せます。どれもまともに見ていないので、見た順に何か書くかもしれません。他の人が書いてくれてもいいです。


http://www.allpeers.com/
開発拠点がチェコのプラハって所が良いです。
SDKの説明から抜粋。ここまで包括的にカバーするP2P SDKは意外に希少です。
> It's a complete framework including not just networking but also a data store, resource management and user interface components.


http://www.amicima.com/technology/index.html
The Secure Media Flow Protocol ("MFP")
UDPの上のプロトコル? もしくはUDPの同階層?
なんとなくRTSP(rfc2326)を想起させます。


http://wwwcs.uni-paderborn.de/fachbereich/AG/agmadh/WWW/schindel/pubs/WDHT.pdf
WDHT(Weighted Distributed Hash Tables)
数式がたくさんです。たぶん適度に重み付けすると、適度な環境下で(論文をでっちあげられるぐらい)適度に良い結果がでるのでしょう。


http://www.iglance.com/
機能は次のような感じです。
> push-to-talk, video presence, integrated screen and window sharing
サイトがアングラっぽいです。


http://p2p.cs.mu.oz.au/software/OPeN/
OPeN stands for Open Peer-to-Peer Network
yet anotherなP2P SDK。オーストラリアって所が良いです。


http://p2p.cs.mu.oz.au/software/Localhost/
上との関係は不明です。BitTorrentとKademlia(DHTの一種)の技術を利用しているようです。先端的な技術の中ではシンプルで動きそうなふたつの技術を選んでいる気がします。微妙にNECのP2P Webを想起させます。


http://dks.sics.se/jdht/
JDHT (Java Distributed Hash Table)
DHT部分はDKSを使っているようです。スウェーデンって所が良いです。


http://feedtree.net/
> a peer-to-peer distribution system for RSS and Atom feed updates
良く言うと富豪的、悪く言うと行儀の悪いRSS aggregatorが増えてくると、需要があるかもしれません。


http://www.cs.sfu.ca/~jcliu/Papers/CoolStreaming.pdf
CoolStreaming/DONet: A Data-Driven Overlay Network for Efficient Live Media Streaming
香港ですが、何か?


http://viral.media.mit.edu/index.php?page=vidtorrent
VideoストリーミングとBitTorrentを合わせてVidTorrent、名前が素晴らしいです。しかも、Viral Communications Group。AirOneもP2Pとかグループウェアとか呼ぶのをやめて、ViralWareと呼ぶのが良いかもしれません。


http://www.closestnode.com
> A DNS redirection service for closest node selection
よく分かりません。


http://hal.inria.fr/docs/00/04/31/40/PDF/bt_experiments_techRepINRIA-00000156_VERSION3_9NOVEMBER2005.pdf
Understanding BitTorrent: An Experimental Perspective
BitTorrentの定量的な評価です。貴重かもしれません。


http://www.its.bth.se/staff/der/
上の論文に対して、スウェーデン人が反応しました。フランス人には負けたくない、と思ったかどうかは知りません。


http://research.microsoft.com/mesh/
Self-Organizing Neighborhood Wireless Mesh Networks
真打ちは、マイクロソフト(リサーチ)のメッシュネットワーク。
2005 11 17 01:27 - inoue - トラックバック(DISALLOWED (TrackBack))

2005・11・15

Notes開発 vs. Web開発

1年以上前の記事ですが、「LotusNotesDominoR5で簡単にワークフローを」を読みました。
ぼくは、この記事で言う「その筋の人」かもしれませんが、ケチをつける気はありません。Notesの特性をつかんだ設計になっていると思います。これの良し悪しを書きたいわけではなく、ここから透けて見えるNotesの特性が興味深いと思っています。

少し用語の整理。
NotesのDBは、ドキュメント要素と設計要素の集合です。これらの要素は内部的にnoteと呼ばれています。だから名前がNotesです。Notes DBはODB(Object DB)と呼ぶのが適切ですが、あえてRDB風に言えばnoteはレコード相当です。noteはフィールド(内部用語はitem)の集合です。フィールドには型(数値や文字列など)があります。フィールドの型定義の集合がスキーマです(*)。


Notesではフォーム(表示表現(**))とスキーマ(内部表現)の関係が密です。まさにこの特性故に、上記例のように、フォームの上に内部状態の変数領域を隠しフィールドとして配置する、というスタイルが良く取られます。Webアプリ開発に馴染みのある言い方をすると、HTMLのformのhidden型input要素に内部状態が必ずあって、その値を使って状態遷移させるイメージです。もっと、過激に表現すると、(バックエンドの)RDBのレコードと、(Webアプリサーバの)モデルオブジェクトと、(Webブラウザに表示された)HTMLのform、この3つの表現が1対1写像になっているイメージです(RDBのフィールド <-> モデルオブジェクトのプロパティ <-> formの子要素)。

ぼくはこのアーキテクチャが嫌いではないのですが、今日、このNotes的アーキテクチャでは開発がスケールできないと言う意見を聞きました。いわゆるWebアプリ定番の3Tier的に言えば、バックエンドのDBとビジネスロジックとビュー/フォームの3階層が密に結合しているのはけしからんと言えます。言っていることは正しいですし、ぼくも立場次第では同じことを言いそうなので、結論はでていません。


(*)Notesの世界ではスキーマという用語は使いませんが、ここではスキーマと呼びます。
(**)ここでは、文書に対する入力、編集、表示に使う画面(設計)を総称してフォームと呼びます。
2005 11 15 05:07 - inoue - トラックバック(DISALLOWED (TrackBack))

2005・11・08

KAMEプロジェクト完成宣言、とのこと

「KAMEプロジェクトの完成宣言」
http://www.wide.ad.jp/news/press/20051107-KAME-j.html

中で作っている人の気持ちは、「(ソフトウェアに)完成なんてあるわけない」だと思います。
政治的に色々(お金を引き出すネタとか...)あるのでしょう。
2005 11 08 14:19 - inoue - トラックバック(DISALLOWED (TrackBack))

「yum/rpmでJava環境 on Fedora」をアリエルエリアに書きました

「yum/rpmでJava環境 on Fedora」
http://dev.ariel-networks.com/modules/xfsection/article.php?articleid=51

昔、javacコマンドとjavaコマンドさえ動けば満足していた時代が懐かしいです。
2005 11 08 01:20 - inoue - トラックバック(DISALLOWED (TrackBack))

2005・11・04

kddilabのミラーサーバがダウン

Fedoraなどのミラーをしているkddilabがディスク障害でダウンしています。

http://ftp.kddilabs.jp/
にアクセスすると、
ディスクトラブルの影響で、数日間、ftp.kddilabs.jp (ftp.ne.jp) のサービスが停止しておりました。
現在、復旧作業を進めている関係で、 FTPサービスのみを限定的に運用しております。
* Linux Archiveのうち、いくつかについては復旧できませんでした。 Re-syncできるものは、作業を順次行っています。
* 現在あるLinux Archiveのうち、いくつかのアーカイブについては、 ファイルが壊れている可能性があります。
もし、そのようなファイルを発見されましたら、 お手数ですが、本ページ下部のメールアドレスまでお知らせください。
(日本語で問題ありません)

ご迷惑をおかけして申し訳ありませんが、何卒、ご理解いただきますよう、お願い申し上げます。
HTTP/rsyncにつきましては、1週間以内の復旧を予定しております。


中の人は大変そうです。
2005 11 04 20:21 - inoue - トラックバック(DISALLOWED (TrackBack))

2005・11・02

夜中の定期メンテナンス

夜中、銀行系のオンラインサービスにログインしようとすると、「定期メンテナンスのためX時からY時までは利用できません」と言われて、ログインできません。
これを見るたびに、インターネットの文化と違う世界を見る思いを感じていました(Webサイトが落ちることはあっても、毎夜メンテナンスのためにアクセス不可にするWebサイトは見たことがありません(*))。

【特報】東証で大規模システムダウンの本論とは無関係な部分で、その理由の一端が垣間見えた気がします。

> 東証のシステムでは月末に月次処理としてテーブルを自動で移動、整理して、データベース領域の容量を回復させている。

銀行系も、こんな風な定期処理があって、Webからのログインを止めるのかもしれません。

(*)とっても昔の頃、大学の研究室が立てているようなWebサーバで、みんなが帰るとマシンごと止められて外部からアクセスできないサイトもあったような。
2005 11 02 03:31 - inoue - トラックバック(DISALLOWED (TrackBack))

2005・11・01

CSS/JavaScriptプログラマ

最近、CSSやJavaScriptを見ています。ちょっとしたtypoでコードが動かないと悲しいので、キーワードに色の付くモードが必要です(軟弱)。

CSSのモードはこれを使っています。
http://www.garshol.priv.no/download/software/css-mode/

JavaScriptは次の3つを見つけました。最初のecmascriptモードを使うことにしました。
http://www.emacswiki.org/cgi-bin/wiki/ecmascript-mode.el
http://www.objectclub.jp/community/memorial/homepage3.nifty.com/masarl/article/js-oop.html#appendix
http://www.brigadoon.de/peter/javascript-mode.el

どれもコードが本当に短いです。
ecmascript-modeは、事実上キーワード(予約語)をfont-lock(*)に指定しているだけの短いコードです。しかもjava-modeのキーワードリストを再利用しています。

2番目のjavascript-modeは、次のようにjava-modeから機能を継承して、コードは非常に簡素です。
(define-derived-mode javascript-mode java-mode ...[略])

最後のjavascript-modeはtempo.elのテンプレート挿入にキーアサインをマップするコードと、キーワードをhilit(*)しているだけです。

Lispは、コードの再利用性や抽象化を言語自体が強く支援しないように見えます(知る限り(**))。emacs lispの開発を見ていると、コードの再利用性や抽象化は、言語ではなく書き手の問題だということが分かります。

(*)hilitとfont-lockはどちらもemacsでキーワードに色付け(色付け以外もできますが)をする機能です。emacs20以降、font-lockの方が標準的です。

(**)無知故の発言かもしれません。On Lispの前書きの「プログラムをただLispで書くだけでなく,独自の言語をLispを基に(on Lisp)書くことが可能であり,プログラムはその言語で書くことができる」を読むと、見ているレベルが違う気がします。
2005 11 01 23:47 - inoue - トラックバック(DISALLOWED (TrackBack))