ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Domによる、XMLデータ操作を、じゃらん宿表示APIで示してみる(その1:仕様とソース)

2006-06-21 17:24:56 | JavaとWeb

 ってことをやろうと思ったんだけど、時間がないので、今回は、仕様とソース。
 次回以降で説明を書きます。




■仕様
 リクルートの提供APIのなかに、「じゃらん宿API」というのがある。
 ここ http://www.recruit.jp/mashup2006/api_jalan.html

 ただし、詳しい内容は、実際には、以下のところにある。
じゃらんWebサービス
http://jws.jalan.net/ws/viw/U00001


 で、じゃらんWebサービス/チュートリアル/あるエリアの宿泊施設を検索するフォームを作成する
 の内容を元に、
 「東京都:130000、お台場・汐留・新橋・品川:137100、お台場・汐留・竹芝:137102」

 地域のデータを取得し、テキストエリアにホテル名と住所をいれよ。


参考:発行するURLは、以下のとおりとなる
http://jws.jalan.net/APILite/HotelSearch/V1/?key=guest&pref=130000&l_area=137100&s_area=137102




■ソース

 以下のとおり
<?xml version="1.0">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<title>AJAX版?じゃらん読み取りだよ</title>

<script language="javascript" type="text/javascript">
var	httpObj;
var	timer;		//	タイムアウト用

//*==============================================//
//*	関数:httpRequest()		  *//
//	内容:XML読み取り開始		  *//
//*==============================================//
function httpRequest(target_url)
{
	try
	{
	      	if(window.XMLHttpRequest)
		{
			httpObj = new XMLHttpRequest();
		}
		else if(window.ActiveXObject)
		{
			httpObj = new ActiveXObject("Microsoft.XMLHTTP");
		}
		else
		{
			alert('エラーです');
			return;
		}
	}
	catch(e)
	{
		alert('エラーです');
		return;
	}

	//	タイマーセット
	timer = setInterval("timeoutError()",60000); //60秒にセット

	//	データを取得する
	httpObj.open("GET", target_url, true);
	httpObj.onreadystatechange = DataRead;
	httpObj.send("");

	return;
}

//*==============================================//
//*	関数:timeoutError()		  *//
//	内容:タイムアウト			  *//
//*==============================================//
function timeoutError()
{
	clearInterval(timer);	//	タイマーとめる
	httpObj.abort();
	alert('タイムアウトです');
}

//*==============================================//
//*	関数:DataRead()			  *//
//	内容:XML読み取ったあと		  *//
//*==============================================//
function DataRead()
{
        if ( httpObj.readyState == 4 )
	{
		clearInterval(timer);	//	タイマーとめる
		if ( httpObj.status == 200)
		{
			DataOut();
		}
       	}
}

//*==============================================//
//*	関数:DataOut()			  *//
//	内容:書き出し			  *//
//*==============================================//
function DataOut()
{
			//	返り値XMLの取得
	xtree = httpObj.responseXML;

			//	ホテルリストの取得
	hotellist = xtree.getElementsByTagName("Hotel");

			//	書き出し
	buf = "";
	for(i = 0 ; i < hotellist.length ; i ++ )
	{
		//	1件分のホテルデータ取り出し
		hotelnode	= 	hotellist[i];

		//	各種データ取り出し
		HotelName = hotelnode.selectSingleNode("HotelName").nodeTypedValue;
		HotelAddress = hotelnode.selectSingleNode("HotelAddress").nodeTypedValue;

		//	書き出し
		buf = buf + "¥n" + HotelName + " " + HotelAddress;
	}
	document.form1.textarea1.value = buf;

}

</script>
</head>


<body bgcolor="#ffffff" 
    onload="httpRequest('http://jws.jalan.net/APILite/HotelSearch/V1/?

key=guest&pref=130000&l_area=137100&s_area=137102')">
<form action="" name="form1">
    <textarea name="textarea1" rows="15" cols="80"></textarea>
</form>

</body>
</html>

(上記 < > ¥ は本当は半角)



■説明

今度、気が向いたときします(DataOut以外の関数は、こことおなじなので、そのDataOutの中だけ説明します。)




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ケータイまで考えると、検索エンジンはサーバー型からP2P型になるのかな?

2006-06-21 15:56:32 | Weblog

 前のブログに書いた、グーグルの限界の話のつづき。

 グーグルのような検索エンジンは、結局、クライアントサーバー型で、サーバー側に検索エンジンを置くということになる。そうすると、

   グーグルから検索可能になるということは、

   すべてのデータはグーグルでアクセスできなければならない。

ということになる。アクセスできなければ検索できないから。




 しかし、これは、非現実的である。たとえば、ケータイ電話のメールを考えよう。

 ある人のメールのデータが、他の人、たとえば、彼女とか奥さんとか上司とかに検索できちゃったら、大問題である。

 システムのセキュリティ、ばっちりだから大丈夫!といっても安心できない。

 漏洩する可能性があるから。。

 つまり、秘密にしたいデータは、世の中にあるわけで、それは、自分では検索したいけど、他人には検索されたくないわけだ。

 じゃ、その場合、どうするか。。




 答えは、ちょー簡単!

 ケータイ側に、検索エンジンがあって、自分のデータは、そのエンジンで検索して、
 自分以外の外部のデータの検索は、外部に検索要求を出す形にすればよい。

 たとえば、A会社のB氏との打ち合わせのメールをもらったが、その中身が見たい、さらにA社の資料も見たい。っていうとき、

 ケータイの検索エンジンから
 「A社」
 と入力すると、その検索エンジンは

1.まず、自分のメールやアドレス帳からA社の検索データを取得する
2.同時に、WebのAPIで、大手検索エンジンに、キーワード「A社」で検索をかける。
3.1、2から見つかった情報を、きれいに表示する

とすれば、ケータイの内容を公開しなくても、大手の検索エンジンと、自分のケータイの中身を見ることができる。




 もちろん、このシステムの場合、さらに発展させて、検索結果にもとづき、自動処理を行うようにすると、もっと有効だろう。

 たとえば、宛名に、Aさん、Bさん、Cさんとあった場合は、そのメールは、すべて一括削除!という命令を入れられれば、イザというとき(どーいうときだ!)
いっぺんに消すことができる(どーいうときに使うかは、ご想像にお任せするぞ!)

 っていうことで、このシステムは

1.ローカルのデータの検索
2.指定された箇所へ検索を投げ、結果を受け取る
  →上記の場合は、大手検索エンジンに投げている
3.自動処理も登録可能
  →ちなみに、検索範囲も指定可能

 っていう機能を満たすことになる。

 でも、ここまでだと、あちら側とこちら側の話でP2Pでない。




 しかし、ここで問題なのは、今の例のようなケースの場合、会社のデータも参照したいだろう。
 このようなとき、どうするか?会社のサーバーにも、上記のような検索エンジンが入っていたとすると、

1.ローカルのケータイで、情報を検索
2.会社の検索エンジンにも、検索を依頼
   →大手の検索エンジンには、この会社のサーバーが検索依頼という
    形にしてもいいし、ケータイから直接検索をかけてもいい
3.1.2の結果を見やすく表示

ってことになる。

 ってことは、この検索エンジンは、少なくとも、ケータイから会社の検索エンジンを検索するように登録しておけば、会社の検索エンジンは、さらに大手検索エンジンを検索し。。。っていう感じで検索ができる。そのため、ケータイでは、非力でも、会社サーバーを充実させればいいってことになる。まあ、このような、バケツリレー的な検索、これはまさにP2P検索といえるだろう。




 さらに、自分のケータイ情報のうち、差出人Aさん、Bさん、Cさんの情報は、見られちゃ困るけど、D部長からきたメールは、みんなに公開したほうがいいっていうケースもあるだろう。
 そういう場合は、会社サーバーに、D部長メールの情報を置いて公開できる機能(データごと転送するか、私、その情報持ってる!っていうインデックスだけでいいかは、時と場合によると思うけど、技術的にはどっちも可能だろう)も付けられる。

 ということで、会社サーバーが、データの中継地点ということになる。

 実際の場合、パソコンなら、

1.自分の検索エンジン
2.会社の検索エンジン
  :(この間にグループ会社の検索エンジンとかもあるかも)
3.大手プロバイダの検索エンジン

 とインターネット上で、組めるけど、ケータイの場合、会社の検索エンジンにアクセスするとき、ローカルに会社のサーバーを立てると思うから、そのローカルのネットワーク(LAN)に入っていけるようなFTP(192.168指定で入れるような)のしくみが、ケータイにないといけない(あった気がするけど。。たしかではない)




 ってことで、自分のデータは検索エンジンで検索し、それ以外のデータは、中継点(たとえば会社とか)に検索依頼をかけるといったP2P式の検索にすると、自分のデータは公開しないで、検索をかけることができる。

 また、中継点に対して、自分のデータを公開すれば、公開したデータのみ、検索対象とできる。

 こうすると、検索エンジンがもろに検索するのは、自分のデータに対してだけだから、さほど大きな検索エンジンはいらないことになる。

 こういったかたちで、今後P2P型の検索エンジンっていうものが、考えられて。。
 。。。こないかな?こないか(^^;)

 まあ、ついでなんで、これによって、オントロジーの限界を超えるような話を、気が向いたときにでも、しようかな。。




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

グーグルも時代遅れで、限界ってこと。。

2006-06-21 13:21:18 | Weblog

 話題の「ウェブ進化論」を読みんだんですけど。
 まー、半年前の本だからねー、考え方が古臭いっていうのは、しょーがない。

 だけど、この本、読んでると、「グーグルも時代遅れで、限界かなあ・・・」って感じがするね。。
 まあ、その点を上げてみると(以下括弧内のページ数は、「ウェブ進化論」のページ番号から)

●第三章でロングテールについて取り上げている。
 ロングテールの重要なことは、負け犬、つまり出版競争から淘汰された、そんな本でも、意味があり、大きな利益を上げているということだ。
 出版競争は、情報競争といえるだろう。つまり、ロングテールとは、情報競争から淘汰された情報を、今までは切り捨てていたが、そこにも非常に意味があり、大きな利益を上げるチャンスがあるということだろう。

 なのに、グーグルのメンバーは、爆発的に情報が増えたら情報自身が淘汰を引き起こすんだよ(P84)一言で、片付けている。今の時代、淘汰されぞうな情報を、どのように引き出すか、そしてそれが引き出せれば、価値があり、お金になるのに、そーいうアプローチは、お構いなしでいまだにキーワード検索だ(^^;)。。。

 その問題点をばしっと突いて、解決して見せたみさこさんの、情報Aのほうが、おもしろかったぞ!


●Web2.0の中心は、その本が指摘するように誰もが自由に、別にだれの許可を得なくても、あるサービスの発展や、ひいてはウェブ全体の発展に参加できる構造(P120)だとしている。これは、ウィリアムのいたずらも認める。

 では、さてここで、googleに広告があるのはわずらわしい!といって、だれかが、グーグルから広告をなくして、検索結果だけを表示するサイトを仮に作ったとする(たしか、現状では、これをやらせないためか、グーグルのAPIは、与えられたキーみたいのごとに、1日1000回しかアクセスできない)。

 それは、便利ですよねえ。広告を見たいわけではないですから。。
 っていうと、この「検索結果だけを表示するサイト」のほうが流行ってしまい、広告は誰も見なくなる。広告を出してる会社には、意味がなくなってくる。。

 つまり、Web2.0が、今後もっとすすみ、マッシュアップが進んできると、わざわざ、機械的な広告なんかははじいてしまう。そーすると、広告会社は、googleに広告を出さなくなるだろう。これへの対策は何も書いていない。グーグル、大丈夫か。。
 Web2.0によって、マッシュアップが進むと、広告の出し方も違ってくるんだけど(それについての私見は、あまりにも話ぶっとびなんで、別の機会へ。ライブドアの臨時株主総会では、ヒントが出てたね)。。


●「グーグルブックサーチ」(P181から)という、世界中の本をスキャンして、グーグルで検索できるようにするということが、著作権違反で訴えられるというのは、あったりまえのことだ。
 ビジネスマンとして、人の権利を奪ってまで、自分が有名になろう、とか、選ばれた人間だけ、利益が享受できればいいなんつー考えが許されるわけはない。

 こんなビジネスモデル、ウィリアムのいたずら様なら、2、3分でちょっと考えれば、もっと皆に受け入れられるモデルに、すぐに変えられるのに(実際さらにその変形が、絶版本の販売になるんだけど)、そんなこと考えないで、自分の考えをごり押しするって、どーなの(ちなみにウィリアムのいたずら様の考えは今後紹介する。その前に、前提となる技術(P2P検索エンジン)があって、それを説明してからなので)

 こんな考えじゃ、本屋さんの広告は出してもらえなくなり。。そーしたら、広告で食べてるgoogleって、どーなのどーなの??




 まー、これ以外でも、「あちら側」と「こちら側」っていう、サーバーとクライアント議論みたいな、古臭い議論や、「自動秩序形成システム」というものがあたかも必要みたいな、グーグルの立場にたちすぎた考え(実際には、そこまで自由になると、人々は「自由からの逃走」を行うって、倫社か?現代社会か?でならったじゃん!これについても、機会があったらね)で、なんか、あちゃーって感じなんだけどね。。

 でも、この本を読んで納得しちゃう人って???矛盾、感じないの??
 たぶん、ウィリアムのいたずらのお客さんたちだったら、すぐに矛盾をついてきて、質問攻めになっちゃうけど。。

 っていうか、ウィリアムのいたずらのお客さんたちと、明らかに違うと思ったのは、
はてなマップの制作費で、ある会社のトップが「数億円、いやもっとかかるに違いないだろう」(P128)と質問してがっくりと肩を落としたっていう点。

 上のほうの偉い人たちって、なにもかんがえないってことだよね。

 これ、どう考える?

「数億円かかるなら、数十億円儲ければいいんだね!ウィリアムのいたずらさん!そーいう絵(ビジネスモデルのこと)を描いて来てよ!」って言われるだけだし、ウィリアムのいたずらの2001年ころのお仕事は、まさにそんなかんじ!

 つまり、微々たるお金でも、出費は出費、むしろそれ以上の儲け話がプラスになれば、そっちのほうがgoなのよ!なので、そーいう儲け話を考えるっていう発想になる。。

 ちなみに、ウィリアムのいたずらなら、この場合、ゼンリンにたしか、SDKがあったはずなんで、ゼンリンとのビジネス展開だよねーとか考えて。。っていくんだけど、それを書いてると、長くなるので、今回はカットする。




 ってことで、この本、ツッコミどころ満載で、ブログネタを一杯提供してくれる。
 ってことで、この次あたりは、気分が向いたら、グーグルの検索方法ではだめで、どーいう検索エンジンが求められるのか、そのP2Pエンジンっていうのを書いてみたいと思う。

P.Sこのほん、そんなにキーワード検索が重要だと思うなら、索引くらいつけろよ!
 ここの引用でページ数調べんの、大変だったんだから(-_-;)

以降じぶんへのメモ(このとおり書くとは限らない。あくまでもメモなのだ)
今後の予定
 ・P2P検索―ケータイメールから、大規模検索までのシームレス感
 ・日本におけるインターネットビジネスの変化
    広告から、物品販売とオークションへのモデル変化の理由
    日本ブログ発展史

やばい、じかんないので、ここでUP

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

editaはWeb2.0のマッシュアップを簡単にできそうだが、とりあえずBREW関係をまとめた

2006-06-21 03:15:13 | JavaとWeb

なんか、「edit@」って言うのがあるみたいで

ここ http://www.edita.jp

あることがらについて、自分が編集長になってまとめられるようだ。

たとえば、BREWについてまとめたいとすると、指定されたブログからBREWの言葉の入っている記事をぬきだして、ブログにすると。。

おお、つまり、今流行のWeb2.0のマッシュアップってやつを、
プログラムをかかずに、簡単にできるっていうことですね!
すごーい!

 まあ、マッシュアップという概念は、今後、流行っていくことは確実だと思う。
 グーグルのキーワード検索は、ブログが繁栄しすぎた結果、自分に関係ないブログばかり検索できて、結局欲しい情報が見つからないという状況になりつつある。
 それへの対抗する1手段として、ある人の観点で記事をまとめて紹介するって言うのが重要で、その方法がマッシュアップってことになる。
 なので、グーグルで見つかんない人が増えれば増えるほど、マッシュアップは必要となる可能性は高い。。。

 そーすると、こういうマッシュアップの自動化ツールも重要。。。




 とかなんとか、世間では、高尚な目的が述べられるに違いないのだが、ウィリアムのいたずら、今回は、そこまでいかず、まあ、このブログを見てくれる人は、BREW関係を見てくれている人が多いので、BREW関係のまとめブログをとりあえず、作ろうと思って、使ってみました。

 で、作ったのが、これでーす!
BREW開発関係のまとめ
http://www.edita.jp/xmldtp/


うーん、もっと一覧がずらずらーっとでるほうが使いやすいにゃー
でも、なんか、設定すると、そうなるのかなあ(たぶん、なりそうだよねえ。。。)

ま、とりあえずBREWについてまとめてあるので、ここのブログよりかは、見やすいんじゃないかな?

とはいえ、まだまだなので、ちょっと、いろいろと研究してみますね。
うーん、グーグルに対抗すべき、BREW関連のポータルサイトとなるべき、道のりは、遠い(つーか、はるかに遠い ^^;)



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

どんなケータイからでもパソコン向けのWebサイトが見れるの?ぐるっぽって?

2006-06-20 22:19:23 | ケータイ


 へえー、(@_@!)そんなのあるんだ。。

ここのニュース
パソコン向けサイトを閲覧できる「ぐるっぽ」の最新版
http://k-tai.impress.co.jp/cda/article/news_toppage/28073.html?ref=rss


ちなみに、そのぐるっぽのサイトは
こちら
http://lupo.jp/


パソコンでもみえるけど、実際には、ケータイ用のサイトらしい。
そこからケータイのブラウザでぐるっぽに入って、みたいWebページのURLを入力すると、見れるって事らしい。。

無料と書いてあるとはいえ、パケット代は、かかるんだと思う。たぶん
(このブラウザを使うのが無料という話だと思う)

フルブラウザを使わないで
ふつうのHTMLのWebページが見れるんだ。。
ほー。。

なんか、便利そう。。
(と書きながら、ウィリムのいたずらは確認してません。
 もし、見たい人は自己責任で、どーぞ)




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

AJAXにおける、HTTPを使った通信(Getの場合)について

2006-06-20 17:00:26 | JavaとWeb

以前、ここのブログで、AJAXのお勉強カリキュラムとして

こんなのをあげた。

1.HTTPを使った通信
    GETの場合(XMLHttpRequestの使い方)
    POSTの場合(sendメソッドについて)

2.DOMの操作
    ファイルの操作
        getElementByIdメソッドなど
    動的な画面をつくる
        createElement,appendChild,removeChildなど
        テキスト、画像の追加
        スタイル変更.style.fontsizeなど

3.イベント処理方法
    attachEvent(addEventLisner)による方法
    (prototype.jsでEvent.observeによる方法)

ってことで、このシリーズを書くため、今回は、「1.HTTPを使った通信」の「GETの場合」について、たいした内容でないのですが、書いてみたいと思います。
(というか、ひょっとすると、今日の内容、昔書いたかも。。)

 なお、このシリーズは、ここ(http://www.geocities.jp/xmldtp/index_ajax.htm)にまとめていく予定です。




■仕様について

 これからやろうとしていることの、仕様は、こんなかんじ。

・GooのブログランキングのRSS
   http://labs.goo.ne.jp/blogscope/rss/index.rdf
 をとってきて、

・そのうち、item内に入っている、タイトル(title)を取り出し、

・テキストエリア(名前textarea1)の中に書き出す。




■ソース
こんなかんじ
<?xml version="1.0">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<title>AJAX版?RSS読み取りだよ</title>

<script language="javascript" type="text/javascript">
var	httpObj;
var	timer;		//	タイムアウト用

//*==============================================//
//*	関数:httpRequest()		  *//
//	内容:XML読み取り開始		  *//
//*==============================================//
function httpRequest(target_url)
{
	try
	{
	      	if(window.XMLHttpRequest)
		{
			httpObj = new XMLHttpRequest();
		}
		else if(window.ActiveXObject)
		{
			httpObj = new ActiveXObject("Microsoft.XMLHTTP");
		}
		else
		{
			alert('エラーです');
			return;
		}
	}
	catch(e)
	{
		alert('エラーです');
		return;
	}

	//	タイマーセット
	timer = setInterval("timeoutError()",60000); //60秒にセット

	//	データを取得する
	httpObj.open("GET", target_url, true);
	httpObj.onreadystatechange = DataRead;
	httpObj.send("");

	return;
}

//*==============================================//
//*	関数:timeoutError()	 	  *//
//	内容:タイムアウト			  *//
//*==============================================//
function timeoutError()
{
	clearInterval(timer);	//	タイマーとめる
	httpObj.abort();
	alert('タイムアウトです');
}

//*==============================================//
//*	関数:DataRead()			  *//
//	内容:XML読み取ったあと		  *//
//*==============================================//
function DataRead()
{
        if ( httpObj.readyState == 4 )
	{
		clearInterval(timer);	//	タイマーとめる
		if ( httpObj.status == 200)
		{
			xtree = httpObj.responseXML;
			namelist = xtree.getElementsByTagName("title");
			buf = "";
			for(i = 0 ; i < namelist.length ; i ++ )
			{
				buf = buf + "¥n" + namelist[i].nodeTypedValue;
			}
			document.form1.textarea1.value = buf;
		}
       	}
}

</script>
</head>


<body bgcolor="#ffffff" 
    onload="httpRequest('http://labs.goo.ne.jp/blogscope/rss/index.rdf')">
<form action="" name="form1">
    <textarea name="textarea1" rows="15" cols="80"></textarea>
</form>

</body>
</html>

(上記 < > ¥は、本当は半角)




■せつめい

 アクセスするためには、以下の手順で行います。

・XMLHttpRequest(IEの場合は、ActiveXObject("Microsoft.XMLHTTP"))を生成

・タイマーをセットする場合、setIntervalでタイマーセット
 →この場合、読み込んだとき、アボートしたときclearIntervalする

・生成したXMLHttpRequestを使って、openする(GET指定でURLも指定する)

・生成したXMLHttpRequestを使って、onreadystatechangeで、読み込んだときに
 呼び出す関数を指定する
 →あらかじめ、用意しておくこと
 →(引数)は、いらない。関数名だけを=の先に書く
 →function(){やるべきこと}ってかんじで、関数をここに書き出してしまってもOK

・生成したXMLHttpRequestを使って、sendする。
 →Getの場合、引数は""(空文字)




 こうすると、読み終わったときに、onreadystatechangeで指定した関数にはいる。
 指定した関数の中では、以下の処理を行う。

・生成したXMLHttpRequestのreadyStateが4以外なら抜ける

・4のときは、clearIntervalでタイマーをとめる(タイマーを使ってる場合)。

・生成したXMLHttpRequestのstatusが200だったら、読み込めたということなので
 やりたい処理をやる。




 なお、タイマーを使っている場合、タイムアウトになると、setIntervalで指定した
ところにはいってくる。
 もし、この関数に入った場合(タイムアウトの場合)は、以下の処理を行う。

・clearIntervalでタイマーをとめる
・生成したXMLHttpRequestのabortを呼び出し、アボートさせる。




 と、こんなところです。




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

トラックバックを利用した脆弱性(インジェクション)?とizaの障害

2006-06-20 14:02:24 | Weblog

 トラックバックのフィールドにJavascriptを書いてしまうっていう手法は、ある意味、知られているかもしれない。なのでかなあ。。あんまり、izaの障害について、取り上げられていませんよね。

ちなみに、yahooニュースでは、ここ
産経の情報サイト「イザ!」でトラックバックが改竄される障害
http://headlines.yahoo.co.jp/hl?a=20060619-00000023-imp-sci


izaを開くと、このブラウザ、エラーになるので(これについては、別の機会に書こうと思う)、
izaの記事のほうからの引用はできなかったが、izaでは、この問題について、いろいろブログで書いている人が居るみたい。




 ちなみに、そのトラックバックを狙った脆弱性だが、
 具体的にみてみよう。

 トラックバックすると、たとえば、gooの場合、トラックバックしたページにも載るし、あと、左側のRECENT TRACKBACKにも載る。このとき、題名のところに、トラックバック元URLがリンクされている形になっている。

 HTMLで表現すると、

 <A HREF="トラックバック元URL">題名</A>  
 の形だ(実際には < > は半角。これを***とする)。

 で、ここで、トラックバック元URLは、どこから来るかというと、トラックバック元がつかっている、ブログのシステムから来る。
 たとえば、gooブログのウィリアムのいたずらに、楽天日記のある人がトラックバックしたいとすると、楽天日記のシステムが、gooブログに対して、トラックバック元URLを送る。
 
 このケースでは、まず正しいトラックバックがくると考えられる。
 楽天日記がおかしなURLを送るなんて、まず考えられない。




 ところが。。。だ、
 トラックバックは、ウィリアムのいたずらがここで示したように、実は、自分がプログラムをつくって、トラックバックを送ることもできる。
 この場合、トラックバックURLは、もう、自分のお好きなように、おくれる。

 そこで、トラックバックURLを、以下のように書いたら、どうなるだろう。

 "></A><script language="javascript">お好きなJavascriptを書いてね</script><A HREF="def

 結果として、トラックバックは、***のところとあわせると、こうなる

<A HREF=""></A><script language="javascript">お好きなJavascriptを書いてね</script><A HREF="def">題名</A>

 そうすると、どうなるかというと、

・お好きなJavaScriptがかける
・defというところに飛ばせられる

 という形だ。つまり、お好きなJavascriptを実行させられる可能性がある。

 なので、脆弱性なのだ。

 ここまでちゃんと書かなくても、”>とかいて、タグの数を合わなくさせるなどなどにより、下の部分を表示させなくしたりすることも可能だ。




 こいつは、SQLインジェクション対策をしていてもだめ!
 というか、しているからこそ、起こる。

 つまり、SQLインジャクション対策をして、”をエスケープすると、書き出しすときに、エスケープを元に戻すので、結局”に戻され、入力文字と同じになってしまう。

 ちなみに、じゃあ、SQLインジャクション対策をしないとどうなるかだが、今度、DBのSQLがおかしくなり、やっぱり、システムはとまる。
(なお、このほかに、トラックバック内容を送信、受信する際に、エスケープされる。なので、エスケープする文字を送るのか、エスケープしないで送るのかというのは、たぶん、トライ&エラーでためしてみて、うまくいったら、そいつで、テッテーテキにたたくって感じなのかな?)

 こいつをはじくには、トラックバックURLをサニタイズ、それもSQLインジャクションと違い、”や>があったら、エラーにする(で、いいのかな?)とか、しないといけない。




 しかし、これをやっていない可能性っていうのは、ある。
 
 なぜなら、トラックバックURLというのは、ふつう、ブログシステムから送られるからだ。

 トラックバックスパムとか、自分たちで、プログラムからトラックバックをつけようとしない限り、ブログシステム以外からはこない。さらにこの場合でも、正しいURLが送られてくるのがふつうだ。

 なので、ここをチェックしていない危険性というのはある。

 これが、izaだけの問題なのか、今後ふえてくる問題なのか。。

 でも、みんな、取り上げてないってことは、もう、百も承知で、対策をきちんとしてるってことなのかな(そうなのか??そうだといいけど。。)



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

モデルブログは、クリックアンドモルタル?

2006-06-19 23:14:12 | Weblog

 ライブドアのモデルブログの検索カテゴリや、アメーバブログのpure blogのオフィシャルブログ、gooブログトップの、右端のちょっと下、今回の一押しブロガーなど、最近、モデルのブログとその紹介が増えてきた気がする。。

 ただ、増えているだけじゃなくって、モデルブログの囲い込みというか、そんなふうな気がするのだ。。

 これって、ブログのクリックアンドモルタル化のような気がします。




 EC(電子商取引のほう。ユーロとは関係ない)の世界で、はじめ、インターネットだけの商取引会社が隆盛を極めた時期もあったが、その後、インターネットもやってるけど、実際にお店もあるという、クリックアンドモルタル企業が、だんだん盛り返してきた。
 どっかの会社のいう「有店舗カタログ販売」ってやつだ。

 バーチャルリアリティの世界も、バーチャルですべて片付けるという世界から、今や研究は、バーチャルとリアルの中間であるオーグメンテッドバーチャリティ、オーグメンテッドリアリティの世界に広がっていった。

 つまり、架空の世界だけではよわく、実際に、架空と現実のハザマあたりにいる距離感がおもしろいのだろう。

 で、一方、モデルの話。
 モデルは、スーパーアイドルなわけじゃない。
 さらに、モデルの行くお店や洋服って、買えないわけでもない。
 つまり、その点では、アイドルなんかより、現実に近い存在なのだ。
 昔、松田聖子というスーパーアイドルがいたが、松田聖子と同じ髪形をして、同じファッションをして、街中をあるいたら、そりゃーバカだ(いや、当時、そういう人はいなかったか?っていわれると ^^;)
 今のモデルのヘヤースタイル、ファッション、生活スタイルは真似ることは可能だし、むしろ、そのようなファッションをしている人を、世間はcool(わざと英語でかいた。英語の意味のcool,smartってかんじ)とみる。
 そういう意味では、モデルはスーパーアイドルより、現実に近い。

 しかし、エビちゃんファッションをいくらしても、エビちゃんにはなれないのだよ。そーいう意味で仮想なわけだ。

 なれそうで、なれない。その仮想現実間、クリックの世界(仮想)とモルタルの世界(現実)の間の距離感が、ウケているのだろう。




 で、その現実と架空の間をかいまみせる道具がブログというわけだ。

 ブログの世界にかかれていることは、そのモデル当人にとっては現実なんだけど、読み手にとっては、他人の話だ、自分が、それを真似ても、仮想現実でしかない。しかし、その仮想現実が、自分でも、手に届きそうなところにあるから、おもしろいと。。

 ただ、こんだけなら、こんなにモデルブログが流行んないだろう。

 モデルが、ライフスタイルを示していることが、ねらい目なのだ。

 メーカーにとってみれば、そのライフスタイル向けの商品を売り込みたい場合、そのライフスタイルを具現しているモデルを利用すればいい。

 ユーザーからみると、モデルが宣伝している商品は、そのモデルのイメージが強いので、そのモデルのライフスタイルに共感している人はもとより、そのモデルに好印象を持っている人は、その宣伝している商品まで買ってしまう。

 典型的な例が、小西真奈美のぐびなまのような気がする。。

 つまり、ユーザーの側からすると、モデルが好きっていう人は、そのモデルのライフスタイルも好きだし、興味がある(さらには、自分もまねしたいと思う)ので、そのライフスタイルそのものを書いている、モデルブログにも興味がある。

 CM打つ側からすると、モデルがライフスタイルをあらわしてるので、そのライフスタイルの人にプロモーションをかけたいとき、使いやすい。

 ブログ会社からすると、安定的に見てる人をふやせるので、やっぱ、モデルブログだよ!と。。




 ってなわけで、モデルがいまや、単なるモデルでなく、ライフスタイルまでもあらわしていて、それに人々が共感し、真似しようとしているってことで、モデル人気と、モデルブログの流れは、今後大きくなっていくと思うね。

 って、本家ネタより、コンピューターチックに書く予定だったが、うまくまとまんなかった。

 もちょっと話を詰めてから、この話題は、また書くかも。。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Domによる表操作:tableとtrの間にtbodyがあるんですね!(Domのお勉強その3)

2006-06-19 17:15:53 | JavaとWeb

 Domのお勉強の続きです。表枠で、行をたしたり、削除したりすることをしてみました。

 ここの本
 Ajax 実装のための基礎テクニック
 をみて、知りました。

 テーブルのとき、tableとtrの間にtbodyっていうのがあって、domで操作しようとするとき、これがないと、だめみたい!(たしかに、tableの下にappendChildでtrをしたら、できなかった)
 上記の本では、tbodyをdomでappendChildしてましたが、下の例では、tbodyタグを書いて、やってみました。

 で、ソースはこんなかんじ 
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>Domのお勉強その3:表</title>

<script language="javascript" type="text/javascript">
//============================================================//
//					                //
//	Domのお勉強その3:表	                //
//					                //
//============================================================//

//行数
var number = 0;

//---------------------------------------//
//	追加の場合		    //
//---------------------------------------//
function addItem()
{

  // 行数をたしてみる
  number ++;

  //=====================================//
  //	段落の文字を書き換える	    //
  //=====================================//
  document.getElementById('midashi').firstChild.nodeValue = "行数:"+ number; 

  //=====================================//
  //	行を追加する		         //
  //=====================================//
 //	追加する段落のテキスト生成する
  var newtr = document.createElement('tr');
  newtr.id = 'item' + number;
 document.getElementById('table').appendChild(newtr);


  //=====================================//
  //	ノードに文字を追加する	    //
  //=====================================//
  var newtd = document.createElement('td');
  newtr.appendChild(newtd);
 var mojiretu = document.createTextNode('追加した段落' + number);
  newtd.appendChild(mojiretu);

  //=====================================//
  //	ノードに画像を追加する	    //
  //=====================================//
  newtd = document.createElement('td');
  newtr.appendChild(newtd);
 var image = document.createElement('img');
  image.src = "http://www.geocities.jp/xmldtp/aj_testimg_new.jpg";
  newtd.appendChild(image);

  //=====================================//
  //	ノードにチェックボックス        //
  //=====================================//
  newtd = document.createElement('td');
  newtr.appendChild(newtd);
 var chk = document.createElement('input');
  chk.type   = "checkbox";
  chk.id     = "test"+ number;
  chk.value  = number;
  newtd.appendChild(chk);

}

//---------------------------------------//
//	削除の場合		    //
//---------------------------------------//
function delItem() 
{
  // 一応チェックなんかしてみる
  if(number == 0)
 {
    alert('削除できる段落がありません。');
    return;
  }

  //=====================================//
  //	最後の段落を削除する	    //
  //=====================================//
  var table = document.getElementById('table');
  table.removeChild(table.lastChild);

  //  段落数の修正
  number --;

  //=====================================//
  //	段落の文字を書き換える	    //
  //=====================================//
  document.getElementById('midashi').firstChild.nodeValue = "段落数:"+ number; 


}

//---------------------------------------//
//	チェックの場合		    //
//---------------------------------------//
function chkItem() 
{
 
  //=====================================//
  //	チェックされてる番号表示      //
  //=====================================//
  for(i = 1 ; i <= number ; i ++ )
  {
       if ( document.getElementById('test'+i).checked == true )
       {
          alert(document.getElementById('test'+i).value);
       }
  }
}

//==========================ここまでJavaScript=============================//

</script>
</head>

<body id="by">
    <input type="button" name="addBtn" value="追加" onclick="addItem()" /> 
    <input type="button" name="delBtn" value="削除" onclick="delItem()" />
    <input type="button" name="chkBtn" value="選択番号" onclick="chkItem()" />
    <p id="midashi">レコード数</p>
    <table border=1>
        <tbody id="table">
        </tbody>
   </table>
</body>

</html>

(上記の < > は実際には半角です。tbodyのところを赤字にしてみました)

 ということで、気が向いたら、説明というか、まとめの文を書くかも。。
 (書く必要もないか。。)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Domで、文字、画像、チェックボックスの追加と、値取得(Domのお勉強:その2)

2006-06-19 15:52:45 | JavaとWeb

 先ほどのJavascriptのお勉強のつづきで、文字のほか、画像とチェックボックスも
いれてみました。

 Javascriptでチェックされているかどうか取得するとき、1個のケースとそうでないケースと場合わけしないと、いけないことがあるようですが(複数なら配列とか)、このDomを使うやり方なら、1個でも、複数でもOKのようです(ただし、動作はIE6でしか、確認してません)。

ソースは、こんなかんじです。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>Domのお勉強その2</title>

<script language="javascript" type="text/javascript">
//============================================================//
//					                //
//	Domのお勉強その2:文字、画像、チェックボックス     //
//					                //
//============================================================//

//段落数
var number = 0;

//---------------------------------------//
//	追加の場合		    //
//---------------------------------------//
function addItem()
{

  // 段落数をたしてみる
  number ++;

  //=====================================//
  //	段落の文字を書き換える	    //
  //=====================================//
  document.getElementById('midashi').firstChild.nodeValue = "段落数:"+ number; 

  //=====================================//
  //	段落を追加する		    //
  //=====================================//
 //	追加する段落のテキスト生成する
  var newp = document.createElement('p');
  newp.id = 'item' + number;
 document.getElementById('by').appendChild(newp);


  //=====================================//
  //	ノードに文字を追加	              //
  //=====================================//
 var mojiretu = document.createTextNode('追加した段落' + number);
  newp.appendChild(mojiretu);

  //=====================================//
  //	ノードに画像を追加	              //
  //=====================================//
 var image = document.createElement('img');
  image.src = "http://www.geocities.jp/xmldtp/aj_testimg_new.jpg";
  newp.appendChild(image);

  //=====================================//
  //	ノードにチェックボックスを追加  //
  //=====================================//
 var chk = document.createElement('input');
  chk.type   = "checkbox";
  chk.id     = "test"+ number;
  chk.value  = number;
  newp.appendChild(chk);

}

//---------------------------------------//
//	削除の場合		    //
//---------------------------------------//
function delItem() 
{
  // 一応チェックなんかしてみる
  if(number == 0)
 {
    alert('削除できる段落がありません。');
    return;
  }

  //=====================================//
  //	最後の段落を削除する	    //
  //=====================================//
  var body = document.getElementById('by');
  body.removeChild(body.lastChild);

  //  段落数の修正
  number --;

  //=====================================//
  //	段落の文字を書き換える	    //
  //=====================================//
  document.getElementById('midashi').firstChild.nodeValue = "段落数:"+ number; 


}

//---------------------------------------//
//	チェックの場合	              //
//---------------------------------------//
function chkItem() 
{
 
  //=====================================//
  //	チェックされてる番号表示      //
  //=====================================//
  for(i = 1 ; i <= number ; i ++ )
  {
       if ( document.getElementById('test'+i).checked == true )
       {
          alert(document.getElementById('test'+i).value);
       }
  }
}

//==========================ここまでJavaScript=============================//

</script>
</head>

<body id="by">
    <input type="button" name="addBtn" value="追加" onclick="addItem()" /> 
    <input type="button" name="delBtn" value="削除" onclick="delItem()" />
    <input type="button" name="chkBtn" value="選択番号" onclick="chkItem()" />
    <p id="midashi">レコード数</p>
</body>

</html>

(上記の< > は、本当はすべて半角です)




説明は、もちょっとお勉強して、テーブルとかが、できてから、いっぺんに書きたいと思います。
(テーブルをお勉強することを覚えていて、さらにそのあと、説明を書く気があればなのですが。。)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JavascriptのDomを使って、段落の追加削除・文字変更をやってみる。

2006-06-19 13:11:44 | JavaとWeb

たいした内容でなくてすみません。
いま、JavaScriptのお勉強をしていて、Domで文字の変更をやるってことで、
その例として、段落の追加削除・文字変更をやってみました。
って、たいしたことじゃないんですけど。。

で、もう時間で移動しなきゃいけないんだけど。。
あ、USBがない(>_<!)
そっだ、今日、更新してないんで、たいした内容じゃないけど、いっか(^^)
ってことで、ここに、公開しちゃいます

なお、確認は、IE6でやってます。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>Domのお勉強その1:段落の文字変更と追加削除</title>

<script language="javascript" type="text/javascript">
//============================================================//
//					                //
//	Domのお勉強その1:段落の文字変更と追加削除	       //
//					                //
//============================================================//

//段落数
var number = 0;

//---------------------------------------//
//	追加の場合		    //
//---------------------------------------//
function addItem()
{

  // 段落数をたしてみる
  number ++;

  //=====================================//
  //	段落の文字を書き換える	    //
  //=====================================//
  document.getElementById('midashi').firstChild.nodeValue = "段落数:"+ number; 

  //=====================================//
  //	段落を追加する		    //
  //=====================================//
 //	追加する段落を生成する
  var newp = document.createElement('p');
  newp.id = 'item' + number;
  var mojiretu = document.createTextNode('追加した段落' + number);
  newp.appendChild(mojiretu);

  //   段落追加
  document.getElementById('by').appendChild(newp);

}

//---------------------------------------//
//	削除の場合		    //
//---------------------------------------//
function delItem() 
{
  // 一応チェックなんかしてみる
  if(number == 0)
 {
    alert('削除できる段落がありません。');
    return;
  }

  //=====================================//
  //	最後の段落を削除する	    //
  //=====================================//
  var body = document.getElementById('by');
  body.removeChild(body.lastChild);

  //  段落数の修正
  number --;

  //=====================================//
  //	段落の文字を書き換える	    //
  //=====================================//
  document.getElementById('midashi').firstChild.nodeValue = "段落数:"+ number; 


}

//==========================ここまでJavaScript=============================//

</script>
</head>

<body id="by">
    <input type="button" name="addBtn" value="追加" onclick="addItem()" /> 
    <input type="button" name="delBtn" value="削除" onclick="delItem()" />
    <p id="midashi">レコード数</p>
</body>

</html>

(上記の < > ¥ は本当は半角)

もちょっと難しいのとか(とはいえ、たいしたことないけど)、これから、がんばっていこうと思います。できたら、公開しまーす。
(なんか、みんなから、公開しなくていいよ!って言われそうだけど。。)




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

シンドラー社は、結局、構成管理ミス?構成管理といえばLinuxって。。ケータイ大丈夫?

2006-06-19 03:16:32 | Weblog

ちょっと古い話になるが、
シンドラー製52台にプログラムミス 事故機は「該当せず」
http://www.iza.ne.jp/news/newsarticle/event/accident/5772/


これ、プログラムミスとかいてあるが、発表のVTRを見ると、基本ソフトのバージョンが、修正前のものに戻ってしまい。。などといっていることからして、構成管理ミスだろう。

 バグの動作からみて(以下は推測)シンクロナイズドの問題か?そーすると、リアルタイムOS系のシンクロナイズドのところ(同期用の関数)にバグがあって、バージョンアップしたと。
 そして、開発・テストは、最新バージョンのものでおこなったので、正常だったが、OSを入れ替えたかどうかの構成管理ができていなかったので、アプリ側だけ、突っ込んでしまったら、前のバージョンのOSでおかしくなったってかんじなのかなあ(ここまで推測)。




 たしかにOSの構成管理っていうのは、難しいものがあって、とくにLinuxの場合で問題になるよね。

 Linuxの場合、OSのバージョンと、基本的ライブラリであるglibcとの相性関係があり、さらにLinuxを拡張した場合(リアルタイムOSにするには、拡張いるのかなあ?)、その拡張部分の相性、デバイスドライバの相性などがある。

 そのため、バグが出たからと、不用意にカーネルのバージョンをあげると、glibcは前のままだから、へんなかん今日になっちゃったりする。
 とくにこのライブラリ、基本的にはcなので、カーネルとglibcの相性が悪い(適切な組み合わせでない)としても、動いてしまう。そーすると、最後、おかしな動きになる。




そーいえば、ケータイでLinux採用っていう記事あったような。
 開発側としては、このバージョンあわせをちゃんとやってくるかどうかで、品質や開発工数、費用にかかわってくることだろう。

 もっとも、IBMのAIXのように、結局1社がOSを供給する場合は混乱しにくいが。。
 じゃあ、やっぱ、そのOSは、富士通だよね。頭文字をとるとFIX、フィックス!
 なんか、バグなんか、すぐに修正終わっちゃいそうな名前だ。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ニュースのRSSを取り出して、動画にするという作業の問題点

2006-06-18 15:09:36 | Weblog

 最近、つくろうと、考えているもの

・ニュースのRSSから、ニュースのタイトルと内容を取り出す。
・それをNHK技研のTVMLのXMLに変換する
・そのXMLをTVML Miniで呼び出すと、動画に変更される
  目の不自由な人には音声だけだし
  耳の不自由な人には字幕しかみれないけど
  健常者は音声も動画もみれると。。

そんなかんじ。
 RSS自身はXMLなので、変換は、そう問題ないんだけど。。
 問題はニュースのRSSのdescreptionの中には、中身がはいってないんだよねー
 ま、入ってたら中身をみてくれないので、当たり前といわれれば、それまでなんだけど。。

 ま、そんなことを考えてます。
 うまくいったら、披露しますね。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

エイベックスが出しているRSSについて(URLとフォーマット)

2006-06-17 18:28:15 | Weblog

 そうそう、エイベックスが出しているRSSについて、ここで、詳しくは、今度書くって書いておきながら、書いてないので、今回は、その話題。

エイベックスは4つのRSSを出しているみたい

avex アーティスト情報 http://rss.avexnet.jp/rss/avex_1.xml
avex ショッピング情報 http://rss.avexnet.jp/rss/avex_2.xml
avex コンテンツ情報 http://rss.avexnet.jp/rss/avex_3.xml
avex @MUSIC http://rss.avexnet.jp/rss/avex_4.xml

このうち、avexコンテンツ情報は、ほんとーにやってるのかどうか不明
(この前も、今日も、新着情報、空なのね。。)
なので、実質、それを除いた3つなのかもしんない。

 なので、AVEX所属のアーティストについて、関心のある人は、上記のRSSをRSSリーダーにいれておくといいかもお。




 なお、エイベックスグループホールディングス所属のアーティストの場合(つまり、リズムゾーンなどなど、レコードレーベルにAVEXと名前がつかないのも含む)それぞれのアーティストサイトのなかに、ブログがある場合がある。

 たとえば、鈴木亜美のブログや、スタッフブログとか。。
 で、その中でもRSSがあって、たとえば、

鈴木亜美自身のブログのRSSは、http://blog.avexnet.or.jp/ami/index.rdf
鈴木亜美のスタッフブログのRSSは http://blog.avexnet.or.jp/ami/staff/index.rdf

 でも、逆に無い場合もあって、misonoのダイアリー、スタッフダイアリーというのは、存在するが、RSSはない。
 というか、そもそもブログかどうか??
 (misonoのダイアリーの場合、下にjoyful noteって書いてあって、ここにとぶようになっている)




 では、そのブログにRSSがあるかないかの判別なのですが、

 blog.avexnet.or.jp

 のドメインの下にあるブログは、RSSがあると思う。この場合、ブログをみたら、左側に

 Syndicate this site (XML)

 ってかいてあれば、そこにRSSがあるので、そのRSSのURLをRSSリーダーにいれてくれれば、更新状況がわかる。

 じゃあ、自分のお気に入りの(エイベックスグループ所属の)アーティストのブログが、そこにあるかないかの判定だが、

 YAHOOの検索で、検索オプションを指定して、
  キーワードにアーティスト名をいれて、
  このドメイン内で検索に、blog.avexnet.or.jp
 といれれば検索できる。そのアーティストが一番上に出てこない場合は、まずblog.avexnet.or.jpにブログは無い
(misonoと同じように、アーティストサイト内にあるかもしてないが)

 ちなみに、YAHOOで、blog.avexnet.or.jpと検索すれば、どんなアーティストがブログをかいているか分かる(けどいっぱいあって、特定の人ばかりあたる)。




 で、今日は、blog.avexnet.or.jp内の個々のアーティストのRSSの話でなく、

avex アーティスト情報 http://rss.avexnet.jp/rss/avex_1.xml
avex ショッピング情報 http://rss.avexnet.jp/rss/avex_2.xml
avex @MUSIC http://rss.avexnet.jp/rss/avex_4.xml

の3つについての話。

 これらのフォーマットは、見ようと思って、上記URLをブラウザにいれて、開いても見えない。
 なぜなら、前にも書いたけど、そこのRSSは、XSLが指定してあって、その指定のフォーマットで表示されてしまうから。

 なので、フォーマットをみたければ、いったん保存し、ワードパットなどのエディタで開くことになる。で、開くと、こんなかんじ
(以下、item内だけ、取り出します。また、下記 < > ¥は、本当は半角です)

●avex アーティスト情報

<item>
<title>エイジアエンジニア 『純夏 ~Jun-natsu~』リリース情報をアップ!</title>
<link>http://avexnet.jp/news/060616/001ASIAE.html?ecruiser=5_64802</link>
<pubDate>Sat, 17 Jun 2006 04:00:07 +0900</pubDate>
<description></description>
</item>


●avex ショッピング情報

<item>
<title>ロングセラー - 浜崎あゆみ TEAM MESSAGE コラボTシャツ 【スペシャルリミテッドエディション】・M</title>
<link>http://ecweb1.avexnet.or.jp/SAPC/?ecruiser=5_64788</link>
<pubDate>Fri, 16 Jun 2006 20:02:03 +0900</pubDate>
<description></description>
</item>


●avex @MUSIC

<item>
<title>【今週のおすすめ 試聴】 Ricken's / SUNNY</title>
<link>http://atmusic.avexnet.or.jp/wma/data.asp?id=ABS1-30945&ecruiser=5_64821</link>
<pubDate>Sat, 17 Jun 2006 05:06:01 +0900</pubDate>
<description><a href="http://atmusic.avexnet.or.jp/wma/asx.asp?id=ABS1-30945">http://atmusic.avexnet.or.jp/wma/asx.asp?id=ABS1-30945</a></description>
<enclosure url="http://atmusic.avexnet.or.jp/wma/asx.asp?id=ABS1-30945" type="audio/mpeg" />
</item>





つまり、全てのケースでいえることは、ある特定のアーティストを抽出したい場合は、タイトルに、そのアーティスト名が含まれているかどうかで判断するしかなさそうだ。。。
(もっとも、その場合、たまたま引っかかったっていう可能性も無いわけではないが)

 と、こんかなんじなわけです。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

グーグルの時代遅れの技術を追いかけてどーする!国産検索エンジン開発!税金の無駄遣いにならない?

2006-06-17 14:05:34 | Weblog

ここのニュース

「Google独占にはさせない」--国産検索エンジン開発へ、産学官が一致団結
http://news.livedoor.com/webapp/journal/cid__2091748/detail?rd


役人、頭かてー!!
ウェブ進化論のよみすぎじゃないの?

 いまどき、グーグルとおんなじような検索技術を研究して、どーする。

 画像や動画検索なんて、すぐに思いつくだろう。googleだって、いや、googleの二番煎じ、ぱちもんの会社すら、やりそうじゃん!

 新しい領域を開拓ったって、もう、いま具体的に、何!って決まってないで、「したい」という要望だけでは、結局、なにやっていいかわかんないから、新しいものは出てこないだろうし。。

 グーグルは、たしかに、「ウェブ進化論」では持ち上げられているけど、ページランクという手法や、単語による検索という検索手法は、もはや時代遅れで、崩壊してるわけじゃん。




 たとえば、ページランクという手法は、ブログ以前にできた方法で、今の時代にこのやり方をやっても、ブログばかり検索できて、知りたい意味がわからない。

 なぜなら、ページランクという参照数が多いものをよいとする手法では、ブログが上位にきてしまう(個性的な意見は参照されやすいし、トラックバック(=結果として参照になる)もつきやすいので)。

 でも、ブログに定義を書く人はいない、むしろ定義からはずれた個性的な意見を書く人のブログのほうが参照されてしまうし、トラックバックも増える。なので、定義はわかりにくい。

 さらに、グーグルは、基本的に単語検索だ。

 文脈に沿った、意味的な検索はできない。たとえば、この前、「松井がホームランを打ったのは、何年何月だっけ?」とかいう質問は、単語でしか検索できないと、よくわからない。




 っていうことで、グーグルのような単語検索、ページランクは崩壊してしまうのだよ。
 それはなぜかというと、グーグルは、ページというレベルで、知識構造を考えているからで、
情報というレベルでデータベースに蓄えているわけではない。

 しかし本来は、情報というレベルでDBを構築し、それとページをリンク付けなければならない。
 で、情報というレベルでのデータベース検索をするには、どうしたらいいか。
 その情報の構造を定義しなければいけない、これは、オントロジーの分野になる。

 オントロジーの検索を試みたものとして、NHK技研の野球の検索があるが
(つまり、「松井がホームランを打ったのは、何年何月だっけ?」については、もし、データが入っていれば、いまの時点で検索が可能だ)この方法は、まず、

・野球に関する知識構造を定義し
・その構造に沿って情報を入れていき
・その情報とコンテンツ(技研の場合だと映像になるのかな)を結びつけ
・そいつを検索してくる

ということになる。




 今、知識の構築体系のほうをいったが、もうひとつの問題として、自然文による検索の問題がある。gooにも、文章検索があるけど、それも、単語に分解されて検索しているせいか、しっくりこない。それよりも、むしろ、上記の知識の構造をGUI化して、その知識の構造にあった検索をおこなったほうが、いいかもしれない。

 つまり、グーグルのような、単語検索という質問の文脈によらない検索と、ページランクという画一的な、ある意味乱暴なページ単位での知識スキーマの構築という考え方は、もはや、今のインターネット社会にはあっていないで、崩壊している。

 その点、オントロジーを加味した動画検索をやっているNHK技研などは進んではいるものの、この手法では、知識の体系をくみ上げるのに並大抵のことではない。

 とすると、もっと汎用的な、ゆるやかな知識体系というのが必要であり、その知識体系を構築し、いまのような、単語を入力するなんていう、ダサいGUI(??)でなく、もっとグラフィカルな知識を表現したGUIに変わっていくべきだろう。




 つまり、アメリカのグーグルやマイクロソフトっていうのは、量ばかりを追求して、技術的には、もはや崩壊しそうな検索技術のさえない路線ばかりを追っている。

 でも、日本のNHK技研とかは、いい線いってる研究(ただし、このままじゃXXだけど)なんで、NTTレゾナンド(Goo)あたりと手をくめば、おもしろいことできそうなところに、今の検索技術の面白さがあるのだよ。

 よーするにですねえ、何百億もかけて、アメリカの後追いの検索技術を研究していたら、ある日突然、gooラボで「知識情報検索はじめましたあ」とか出て、画期的なGUIによるオントロジーの検索をだされて、アメリカもそっちを追いはじめて、気づいたときには、上記ニュースの研究自体が、いみねー、税金の無駄づかいっていう可能性もありありってことだ。

 でもねー、参加企業が、日立製作所、NEC、富士通、早稲田に東大でしょー(>_<!)
 あたまかたそーで、アメリカ後追いしかできなさそーだよねー。

 やっぱ、選ぶんなら、NHK技研にNTTレゾナンド、ジャストシステム(ギャグで、コグニティブリサーチラボとか(CEOを見てね!(^^;))大学は、奈良先端に東工大なら、まだ、おもしろそー、だけど。。

ICOTの二の舞になって、
終わったときには
ブームが去ってたってことに、ならないでね(^^)

P.S 頭の固い役人は、「ウェブ進化論」を読んで、グーグルの発想が、今のインターネットの発想にあわない(=「ウェブ進化論」の趣旨も変)ってことに気づかないのかな?



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする