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

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

ポータルサイトがRPG風になると、広告を見る可能性は増えるかもね。

2006-08-03 23:31:34 | Weblog

 昨日のブログで、ポータルサイトのトップ画面に、上戸彩さんがでてきて、RPG風に、いろいろしゃべって、検索するとか、路線チェックとか、選んでいって、そうすると、画面が変わって、たとえば、検索なら検索キーワードを入れるっていうふうになって、それで検索すると、結果を上戸彩さんが、しゃべるように、教えてくれるという、「ポータルサイトをRPG風にする」という話のつづき(って、昨日はそこまでは書いていない気もするが。。。)。




 こうなると、上戸彩さんのガイダンスの言葉に宣伝をいれてしまうと、見ざるを得なくなるよね。たとえば、オープニングに

「こんにちは、ケータイはソフトバンクですよね。新しい機種が、シャープから出たようですよ。
 ここ。ところで、今日は、なにをしますか」

とか出てきてしまうと、文章に出ているので、思わず見てしまう。

 また、上戸彩さん以外の人にも変えられるってすると、その人ごとに、宣伝をかえられるかもしれない。ペヨンジュンだったら、オバサン向けCM,安田美沙子だったら、男性向けCM,みたいなかんじで。




 ってことで、RPG風ポータルサイト、面白いと思うんだけどなあ。。

 まあ、「いもうとデスクトップ」で、ポータルもできるようにすれば、いいんだけどね。



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

35万円(1.5メートル)のガンダムキット、動かないんでしょうか?ロボットに改造したら?

2006-08-03 18:29:55 | Weblog

ここのニュース
高さ1.5メートルの「ガンダム」キット、35万円
http://www.itmedia.co.jp/news/articles/0608/03/news058.html


写真は、ここ
おお、後ろに立ってるおねーさんと、そん色ない大きさです。
すごいです。

でも、35万円って。。。
これ、動かないんでしょうか?
35万円っていったら、おもちゃというより、ロボットの値段です。
うーん。。。
安いんでしょうか?
高いんでしょうか??




これ、ロボットにして、機関銃のところから、
赤外線でるようにして(昨日まで書いたようなかんじで)、
エアコンつけたり、テレビつけたりしたら、
あるいはまた、2足歩行するようにしたら。。。

ってなかんじで、私立大学が、ロボットに改造して、オープンキャンパスの
出し物にでもしたら、大学生あつまる・・・かあ?

あ、いっそのこと、東京理科大の受付、あのおねーさんロボットでなく、
このガンダムロボットにしたほーが、かっこいい。。。かあ??(^^;)


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

XMLをAJAXでPOSTで送信し、その内容をCGIで受けて、値を取り出すサンプル(2)

2006-08-03 16:22:44 | JavaとWeb

 さっきのブログ XMLをAJAXでPOSTで送信し、その内容をCGIで受けて、値を取り出すサンプル(1)のつづきで、サーバー側のCGIのほうです。

 その前に(1)にも書きましたが、まず、仕様から



■仕様
以下の、XMLデータ

<?xml version="1.0"?>
<methodCall>
	<methodName>imoto.doJob</methodName>
</methodCall>

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

をクライアントから送り(ソースはAJAXで書く)

サーバー(CGI)ではそれを受け取り、methodNameタグの値
を出力する。

クライアントでは、それを受け取り、警告(alert)ダイアログを出す。
つまり、imoto.doJobというアラートダイアログが出る。
これを、このプログラムを読み込むとき(onload時)におこなう。

クライアント側のソースは、ここに書きました。
今度はサーバー側CGIのコードです




■サーバー側CGIのソースコード

#!C:/Perl/bin/perl
use CGI;
use XML::DOM;

			#################################
			#	CGI=>$xml	    #
			#################################
#引数を取得
if ( $ENV{'REQUEST_METHOD'} eq "POST" )
{
	read (STDIN, $xml, $ENV{'CONTENT_LENGTH'});
}
else
{
	$xml = $ENV{'QUERY_STRING'};
}

#convert URI Encode;
$value = $xml;
$value =~ tr/+/ /;    #“+”=> space
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;   # %XX convert
$xml = $value;

			#################################
			#	Command Get	     #
			#################################
$parser = new XML::DOM::Parser;
$doc = $parser->parse($xml);
$nodelist = $doc->getElementsByTagName("methodName");

			#################################
			#	Disp		     #
			#################################
print "Content-Type: text/plain¥n¥n";
print $node = $nodelist->item(0)->getFirstChild->getNodeValue;

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

Domについての操作に関しては、ここに詳しく書きました。今回はそのうち、getElementsByTagNameのところを使っています。

今後、ここに書いたファイル仕様での送受信について考えます

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

XMLをAJAXでPOSTで送信し、その内容をCGIで受けて、値を取り出すサンプル(1)

2006-08-03 15:28:49 | JavaとWeb

 あんまりプログラムを書かなかったら、読む人が激減してしまったので、ここらで、プログラムを1つ。
 今回のお題は、「いもうとデスクトップ」の基礎中の基礎。

 AJAXで、AJAXをXMLのPOSTで送信し、
 その内容をCGIで受け取って、あるタグの値を返し、
 その返された値を、AJAXで受け取って、表示する

というものです。
 ただし、簡単にするため、エスケープがどーとかこーとかっていう話は省きます。



■仕様
以下の、XMLデータ
<?xml version="1.0"?>
<methodCall>
	<methodName>imoto.doJob</methodName>
</methodCall>

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

をクライアントから送り(ソースはAJAXで書く)

サーバー(CGI)ではそれを受け取り、methodNameタグの値
を出力する。

クライアントでは、それを受け取り、警告(alert)ダイアログを出す。
つまり、imoto.doJobというアラートダイアログが出る。
これを、このプログラムを読み込むとき(onload時)におこなう。




■クライアント側のソースコード
以下のような感じになります。
<?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>XML送信</title>
<script language="javascript" type="text/javascript">

//************************ここから********************//

//--------------------------------------//
//	共通変数			    //
//--------------------------------------//
var	httpObj;
var	timer;		//	タイムアウト用


//*==============================================//
//*	関数:UnLoad()			  *//
//	内容:終了			  *//
//*==============================================//
function UnLoad()
{

}

//*==============================================//
//*	関数:httpRequest()		  *//
//	内容:XML読み取り開始		  *//
//*==============================================//
function httpRequest(target_url,method,data)
{
	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.onreadystatechange = DataRead;
	httpObj.open(method, target_url, true);
	httpObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
	httpObj.send(data);

	return;
}

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

//*==============================================//
//*	関数:DataRead()			  *//
//	内容:XML読み取ったあと		  *//
//*==============================================//
function DataRead()
{
        if ( httpObj.readyState == 4 )
	{
		clearInterval(timer);	//	タイマーとめる
		if ( httpObj.status == 200)
		{
			DataOut();
		}
       	}
}
//*==============================================//
//*	関数:Load()			  *//
//	内容:読み取り開始		           *//
//*==============================================//
function Load()
{
	//------------------------------//
	//	データ設定	    //
	//------------------------------//
	//	XML開始
	data = '<?xml version="1.0"?><methodCall>';

	//	メソッド名
	data = data + "<methodName>imoto.doJob</methodName>";

	//	XML終了
	data = data + "</methodCall>";

	//------------------------------//
	//	データ書き出し	     //
	//------------------------------//
	data	=	encodeURIComponent(data);
	httpRequest("http://127.0.0.1/cgi-bin/domtest.cgi","post",data);
}

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

//************************ここまで********************//
</script>
</head>
<body bgcolor="#ffffff"  onload="Load()">

</body>
</html>

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


■クライアント側のソース説明
 LoadとDataOut以外は、一般的なPostの場合の送信と一緒です。
 なので、この2つの関数について。 

 そのうち、DataOutについては、受け取った値(httpObj)をテキスト表示にして(httpObj.responseText)alertダイアログでだしているだけなので、さほど説明は要らないと思います。

 Loadのほうに関してですが、今回は、DomでDocumentをcreateしてもよかったのですが、
 めんどいので、そのまま文字列にして送りました。
 このように、文字列でやる場合、1番初めの行
   <?xml version="1.0"?>
 は、ダブルクオートで、1.0を囲んでいるので、文字の開始は、シングルクオート、つまり

 にしています。

 そして、これをHTTP用にエンコードするためにencodeURIComponentを呼んでいます。
 なお、このため、関数httpRequest内で、
httpObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
 という処理をして、エンコードしていることを明示しています。





サーバーについては、長くなるので、次回にします。



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

HACCPの製造工程一覧図と、UMLのアクティビティ図と、LFDと

2006-08-03 12:55:12 | 開発ネタ

 いままで、事務的な、動作の最小範囲とか、UMLとの関係を書いてきていたので、こんどは製造業的な話。
 食品などでは、HACCPというのを、導入しているところが、増え始めていると思う。
 その場合、製造工程一覧図というのを、つくるようだ。

たとえば、

味噌製造のための衛生管理基準-HACCP方式への対応http://www.shokusan.or.jp/haccp/guide/3_2_2_miso2.html


の「味噌製造業のHACCP〔各論〕」のPDF36ページに、各工程を書いた一覧がある。
この工程の担当者(実際にやる人)は誰かを決め、その担当者を(スイム)レーンとし、上記の工程をアクティビティとして、書いていけば、アクティビティ図やLFDなどは、できる。




 でも、システム開発はできない。
 なぜか。。。
 たとえば、「仕込」とか、「発酵」というのは、どこでなにをすることだか分からない。
 もし、機械化するなら、

   ・あるところからあるところにはこんで、
   ・そいつをある入れ物の中に入れて
   ・秘伝のなんかをいれて、
   ・温度を何度かに保つ

 なんていう感じにしないと、機械は(システムは)作れない。




 つまり、「発酵」という処理は、なにをすることかというのを、きっちり定義しないと、UMLの図はできてくるので(発酵というクラスをつくってしまえばよい。このクラス定義、メソッド定義は、どこまでもできる。中身がわかんないけど)システムは出来た気になるし、ユーザーとのOKもとれるが、実際のプログラムは作れないということになる。

 じゃあ、それをどういった動作で定義すれば言いか?
 ここも、「最小の動作単位」となる。
 しかし、事務系の産能大記号では表現できないだろう。
 産能大記号には、「たたく」とか「かきまわす」とかない
 (あったりめーだ。書類をかき回してたら、怒られちゃうよ ^^;)

 とすると、産業における、動作の最小単位。。。っていうと、やっぱ、テーラーの標準作業って言う話になってくるかもしれない。
 ただ、ウィリアムのいたずら自身、テーラーの標準作業と、この作業の最小単位として捕らえたい最小単位が一致しているかどうか、たしかめていない。
 というのも、テーラーの科学的管理法って、絶版なのよね
 ちなみに、面白いことに、出版社は、産能大記号を生み出した産能大(の短大)の出版部だったりする。




 ただ、個人的な印象としては、このレベルにまで落とさないと、危険性って見えてこない気もする。たとえば、「発酵」では、危険がわかんないけど、
 A地点からB地点にものを運ぶとなると、
 A地点からB地点に行く間に、恋に落ちる・・・という危険は無いが
 運ぶ場合の危険とか、細かい動作にわけて考えたほうが、
  他の運ぶところでは、こんな危険があったから、ここでも、こんな危険は無いのか?
 とか、比較検討して考えやすくなると思う。




 ってなことで、やっと書きたい本題に近づいた。

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