忍者ブログ
ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
[392]  [391]  [390]  [389]  [388]  [387]  [386]  [385]  [384]  [383]  [382
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

そういえばID通知のメールが来てから一カ月ぐらい経つのですが未だに他の作品が投稿されてません。
前参加したときこんなんだったけ?


何故か最近プロジェクトページへのアクセスがそれなりに好調です。
実のところOpenRTM-aistの公式サイトRTMコンテストのページには作品一覧のページへのリンクが存在しないので、僕のプロジェクトページを見るにはこのブログかTwitterかあるいは検索してたまたま辿り着くかしかありません。
このブログにはほとんど人は来ませんし、Twitterで#openrtmで検索した場合でもかなり下の方に来るぐらい時間も経ってるので、入口がないのに何故か人が来るという不可思議な現象に困惑しています。なおコメントも評価も付かない模様。人間が来ているとは限らないですからね。



今回は前々から気になっていたのでRTシステムエディタ on the Webがどのような処理をしているか調べてみました。

ただし、僕はWebプログラミングは素人なのであまり参考にしない事をお勧めします。



そのためにはXMLHTTPRequestについて知っておく必要があります。
XMLHTTPRequestとはJavaScript等でHTTP通信するためのAPIらしいです。
このサイトに詳しく書いてあるので参考になります。

通常CGIを利用する場合にボタンを押すなどしてCGIの処理を行いたい場合ページが遷移するわけですが、JavaScriptでXMLHTTPRequestを利用するとページを読み込むことなくCGIの処理を行い結果を取得できます。


簡単なプログラムで実験してみます。
ボタンを押すとJavaScriptの関数を実行するようにHTMLファイルに記述してください。

<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript" src="js/test.js"></script>
</head>
<body>
<input type="button" name="test" value="test" onClick="test();">
</body>
</html>
これでtest.jsファイルのtest()という関数が実行されます。

次にtest.jsの編集をします。

function test(){
  
  var obj=new XMLHttpRequest();
  obj.onreadystatechange = function(){
    if (obj.readyState == 4 && obj.status == 200){
      alert(obj.responseText);
      
    }
  }
  obj.open("POST", "/cgi-bin/test.py", true);
  obj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  obj.send(null);
  
  
  
}



見ての通りtest.pyというCGIと通信します。

正直全然見たことない関数だらけなので一応メモ程度に説明を書いておきます。
onreadystatechange

XHR通信の状態が変化するたびに実行される関数を指定

readyState

XHR通信の状態
4は通信完了
200はリクエスト完了

open

アクセス先のURLの設定
引数はHTTPメソッド、アクセス先のURL、非同期実行か

setRequestHeader

HTTP要求ヘッダの指定

send

送信開始
引数は送信データ




最後にtest.pyの編集をやります。
if __name__ == '__main__':
  print "Content-type: text/html;charset=utf-8"
  print ""
  print "test"
とりあえずこのように適当な文字列を送信します。


それからCGIを使うにはWebサーバーを立ち上げる必要があるのでtestserver.pyというファイルを作成して以下を記述してください。

import CGIHTTPServer
 
if __name__ == "__main__":
    CGIHTTPServer.test()



そして適当にフォルダを作成して以下の配置にしてください。

test.html
testserver.py
js
- test.js
cgi-bin
- test.py


実験してみます。
まずはtestserver.pyを実行してサーバーを起動します。

次にWebブラウザから以下のURLを入力して移動してください。


http://localhost:8000/test.html 


そして表示されたボタンを押して"test"と表示されれば成功です。





ページの読み込みがないのは便利ですね。簡単にCGIを利用できます。


後はrtctree等を使ってRTCを操作するプログラムを書けば良いと思います。












にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
フリーエリア
最新CM
[08/31 ysuga]
[08/31 Nobu]
[08/31 ysuga]
[12/11 Nobu]
[12/11 Kanamura]
最新TB
プロフィール
HN:
Nobu
年齢:
36
性別:
男性
誕生日:
1988/09/22
職業:
あれ
趣味:
妄想、自堕落
バーコード
ブログ内検索
P R
カウンター
忍者ブログ [PR]