Skip to content

30分で試せる分散並列プログラミング Linda (PC遠隔操作編)

 さあというわけで、インストール&起動に成功したら、実際にLindaを使ってチャットもどきを作ってみよう。

 といっても、これも橋本商会のページにあるサンプルをほんの少しだけコピペするだけだ。

 しかしこれほど簡単にチャットが実装できるのは面白いを通り越して本当に驚きだぞ。

<!DOCTYPE html>
<html>
    <meta charset='utf-8'>
    <title>Linda test</title>
    <script src="jquery.min.js" type="text/javascript"></script>
    <script src="linda.min.js" type="text/javascript"></script>
<script>
var io = new RocketIO().connect("http://localhost:5000"); //ローカルホストに接続
var linda = new Linda(io);
var ts = new linda.TupleSpace("test"); //とりあえずtestというスペースを作った

io.on("connect", function(){
    ts.watch(["chat"], function(tuple){ //chatを監視するコールバックを設定
      $("#result").prepend(
        $("<p>").text(tuple[1]) //chatタプルがきたら、表示する
      );
    });
});

$(function(){
  $("#send").click(function(){ //send(送信)ボタンが押された時の処理
    var m = $("#message").val(); //message(メッセージ)の内容を取得
	ts.write(["chat", m]); //chatタプルを発射
  });
});

</script>
</head>

<body>
<BR>
<input type="text" id="message" value="hello" size="30">
<input type="button" id="send" value="send">
<div id="result">
</div>
</body>

 たったこれだけで、チャットが作れてしまう。
 実際の動作する様子は以下のGIFアニメの通りだ。

 やばい。マジで簡単だった。これは。

 当然、タプルでは好きな文字列が送れるのでJSONデータなんかも好きなだけ送ることが出来る。

 リモートのPCを操作する危険なチャットを敢えて作ってみよう。

 chatタプルを受信したときの処理に以下のように追加した

    ts.watch(["chat"], function(tuple){ //chatを監視するコールバックを設定
      $("#result").prepend(
        $("<p>").text(tuple[1]) //chatタプルがきたら、表示する
        eval(tuple[1]);  //[危険]うけとったメッセージをとりあえず実行してみる
      );
    });

 これはやばい。
 広い意味ではPC遠隔操作ができちゃう。
 まあ厳密には、動作中の画面を取得したりできないので無理だけど、プログラムを送り込んで実行することができちゃうというのは普通にやばい気がする。

 しかもこれのヤバいところは、もうちょっと頑張っちゃうとトロイの木馬なんか使わなくても、このURLを踏ませるだけで相手のPCをある程度は遠隔操作できちゃうことだ。

 まあでもLinda-baseが稼働してるサーバーは、たぶんいまのところ世界に増井研を含めていくつかしかないはずだから、すぐ足がつくと思うが。

 そういう意味ではLindaは非常にシンプルかつ強力だが、悪意ある情報や偽情報からシステムを保護するのが難しいという弱点がある。まあそれはLindaを使うアプリケーションが個別に実装しろということかな。SSL使うとか?わからないけど。そうなるとLinda-base自体も改造する必要がありそうだけど。

 でも面白いのは、Lindaは並列プログラミング言語といいながら、普通の直列(?)プログラミング言語から簡単に使えてしまうことだ。

 特にJavaScriptで簡単に使えてしまうというのはとても嬉しい。
 

 ネットゲームからなにから、色々と応用範囲が広そうなのも嬉しい。
 とにかくとても気軽に並列プログラミングの練習ができるのでLinda-rocketioで遊ぶのは凄くお勧めだ。

 nodeJSを使うよりもずっと簡単に並列プログラミングができちゃうぞ。

 これで作る場合、サーバーもクライアントもブラウザーで動かすというところがnodeJSと違うところだ。新しいような気がする。

 つまり途中にLinda-baseというサーバーを挟んではいるが、Linda-baseはあくまで並列処理のための橋渡ししかしないので実際の高度な処理はクライアント側で実装することができる。

 もちろんLinda自体がHTTPさえ通ればなんでもアリの仕様なので、増井研でやってるみたいに温度計や接近センサをArduinoで接続してHTTPにその状況を垂れ流して、全世界プログラミングを楽しむこともできちゃうわけだ。

 なるほど、こいつは面白いや

このエントリーをはてなブックマークに追加
はてなブックマーク - 30分で試せる分散並列プログラミング Linda (PC遠隔操作編)
Post to Google Buzz
Share on GREE

Related posts:

  1. 30分で試せる分散並列プログラミング Linda (起動編)
  2. 日本語スクリプト言語JapaScript
  3. 9Days Challenge #8 「90秒で遊べるゲーム」結果発表!!
  4. “食欲の秋”をゲーム化するコンテスト 9Daysチャレンジ 2012終了。賞品の高級マツタケは誰の手に!?
  5. 10分で作るnode.jsで動くリアルタイムwebチャット

Facebook comments:

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*