• 検索結果がありません。

smalltalk node linda

N/A
N/A
Protected

Academic year: 2018

シェア "smalltalk node linda"

Copied!
43
0
0

読み込み中.... (全文を見る)

全文

(1)

amber Smalltalk 

 

Web版Linda 

並列

分散処理

第78回Smalltalk 勉強会

ビュ イン ロ 林徹也 モtetha

201プハ07ハ31 19:00ハ21:00

(2)

橋本商会さん

(3)

法則

限界

対応策として

原理そのものを新たにする

既存のアーキテクチャを工夫により活 用する

(4)

並列分散処理

マルチコアの一般化

高速ネットワークの一般化

(5)

いまどきは……

FPGA, XMOS, GPGPU, OpenMP, OpenCL

Hadoop(MapReduce), Meshblu, PubNub, MQTT …

Erlang, Clojure, Go…

Etoys, Scratch…

ユニケージ開発手法(USP研究所)…

(6)
(7)

今回

お手軽に実験

すばやくアイデアを試す

温故知新

(8)

https://ja.wikipedia.org/wiki/Linda

並列プログラミング言語であり、

Prolog、C言語、Javaなどの他の(逐次 的)言語上に拡張として実装される。

(9)

並列

Nicholas Carriero (著), David

Gelernter (著), 村岡 洋一 (翻訳), " 並列 プログラムの作り方", 共立出版 (1993). ISBN: 4320023625

(10)

並列プログラムの作り方メモ

http://www2a.biglobe.ne.jp/seki/ ruby/how2para.html

http://www.cs.tsukuba.ac.jp/ yas/ cs/csys-2009/2010-01-29/

(11)

結果並列法

専門家並列法

手順並列法

(12)

3

メッセージパッシング

ライブデータ構造

(13)

原典では、素数列を求めるプログラムを 以上のパラダイムを用いて解を示してい るので、これにならって本日も進行しよ う。

と考えていたのでしたが、まずはクライ

(14)

Lindaの特徴

タプルとタプルスペース

4つの操作

操作

補足

<‘chopstick’, 2>

<‘a siring , 15.01, 17> <‘chopstick’, 1>

out

<‘chopstick’, ?n> in

<‘chopstick’, 2>

rd

(15)

タプル:型付きのデータの並び

本来は2種類のタプルがある

データタプル

ライブタプル

タプル = プロセス

タプルスペース:タプルの集合

タプルスペースはメモリ上やネットワーク上に存在する

ネットワーク上のタプルスペースの概念

JavaSpaces へ進化

(16)

基本操作

2

補助操作

操作 概要 別名 ブロック タプル種類

out タプルを出力する write 無 データタプル

in タプルを取り出す take 有 データタプル

rd タプルをコピーする

(読み出す) read 有 データタプル

eval 処理プロセスを起動

して結果を出力する - 無 ライブタプル

inp タプルを取り出す 不明 無 データタプル

rdp タプルをコピーする

(17)

inパrd

(takeパread)

タプルをin / rd する際にはタプルを引数にとる。そのタプ ルは値が入ってなくても構わない。値がない箇所は?を付 けて示す(formal)

例 <"a string", ?f, ?i, y>

それとマッチするタプルがタプルスペースから取り出され たりコピーされる

(18)

構造

タプルを巧く設計してやることで様々なデータ構造を実現でき る。

レコード

連想配列

多次元配列

ストリーム

バッグ

スタック

(19)

Rinda

Ruby(dRuby)上に実装されたLindaサーバー

操作はJavaSpacesの流れを汲む

簡単にセットアップ出来て、Lindaを体験できる

8章 Rinda

インターフェイスの街角‒並列プログラミング

(20)

橋本商会さん

node-linda

Web版Lindaによる実世界コンピューティン グ

socket.ioを活用して 最初 Ruby で Linda を実装 (Rindaとは別に)。

coffeeスクリプトで Node.js 上に再実装へ

(21)

特徴 (1パ3)

Rindaの影響

JavaSpaces風の操作名

ただし、read_all などは無し

運用面でのうれしさポイント

(22)

タプルはJSON

内部実装として配列であることを辞めている (Rindaでは配列だった)

そもそもJSやStでは、型がないので順序に依 存する型とか意識しない(うれしさ感が無い)

むしろ、1番目は名前で2番目は…のようなコ ードは避けたい(型チェック無いし)

(23)

read, take はブロックしない

代わりに後続する処理はコールバックとして与える

スタイルとしては、以下のような感じ

イベントドリブン風の書法(文脈が見えやすい?)

特徴 (3パ3)

ts read: aTuple callback: [:err :returnTuple | "returnTuple はreadした結果"

.... ブロックポイントに続く処理

(24)

特徴 (3パ3)b

オリジナルの操作としてwatch

read はワンショットで終る。

センサ値の監視などの場合、繰り返しreadした

い場合に用いる。

タプルの追加があると確実に捉えることができる

※ read の場合は、他のプロセスのtakeが先だ

った場合、取り損ねることがある。

(25)

npm 一発で完了

"-g"オプションを付けるとlinda-server コマンドも利用できるようになる

nodeハlinda

イン

(26)

利用するJavaScript ライブラリ

socket.io-client

linda-client (lindaのクライアント側js)

amber Smalltalk

イアン

(27)

xxx.amd.json を用意する

設定 (1パ2)

//linda.amd.json { "paths": { "linda-client": "lib/linda-client" }, "shim": { "linda-client": { "deps": ["socket.io"] } } } //socket.io-client.amd.json { "paths": {

"socket.io" : "socket.io" }

(28)

grunt devel する

Package に imports を書く

設定 (2パ2)

(29)

今回

画面用

(30)

• LindaProxy

• JSオブジェクトのラッパークラス

• LindaClient

• ソケットを繋いで管理

• SocketIo

• socket.ioのラッパー

• Tuple

• タプルのラッパー

• TupleSpace

• タプルスペースのラッパー

イアン

勢い 作 け 実

(31)

最初

(JSONミリashedColletion)

十分書

……

イン

(32)

以下ノ

(33)

基本篇

階乗計算

並列篇

フィボナッチ(画面付き)

協調篇

スマフォのセンサー

IoT 篇

(34)

勉強会用LindaサーバーURL

http://node-linda-ststudy.herokuapp.com

デモ用URL

http://tty-hayashi.github.io/LindaClientDemo/

GitHub

https://github.com/tty-hayashi/LindaClientDemo

例によって中途半端です

環境パ準備

7パ31い ぱい

(35)

基本篇

LindaClientを使った基本的なサンプル

LindaBasicDemo

factorialMaster/factorialWorker

Workspace で利用する前提です

こ ロ ロ サ 利用

ロ lindaハserver 起動 確認 く さい (7パ31 heroku 方 見 )

(36)

いい問題がないかと考えあぐねたあげく時間オーバ ー。ひとまずフィボナッチ数。

LindaFibMaster : 出題するマスター

LindaFibWorker:計算するN個のワーカー

ワーカーで参加される方は、スマホで以下にアクセス

http://tty-hayashi.github.io/LindaClientDemo/

fibWorker.html

(37)

みんなのコンパス

ごめんなさい。iPhoneでしか試してないし、それほど面白 くもない

LindaCompass

http://tty-hayashi.github.io/LindaClientDemo/ compass.html

ジャイロ

本当はサッカーゲームみたいなのを目指してました。途中 です。

協調分散篇

(38)

node-linda 本来のねらい/利用スタイル

スマートwホーム

温度監視とエアコン制御

ルoT 

いこ

補足

ンサ ア ュ ゆ く 疎結合 あう

ンサ ッ ワ 経路 開け く ペ

(39)

温度センサ

赤外LED

OSI5FU5111c-40 作例の元ネタ

http://qiita.com/ KAKY/items/

55e6c54fa2073cdc0

bbe 1-wire接続のデジタル

温度センサー DS18B20

作例の元ネタ

(40)

クライアントについて

クラス名とかパッケージ構成を見直し ます。

サーバーについて

自分でもLinda作ってみる?

(41)

node Linda について

橋本商会さん (Special thanks !!)

node-linda

Web版Lindaによる実世界コンピューティング

平行プログラミングの作り方

空間、Linda、JavaSpaces、Ruby Linda(Rinda)

(42)

Rinda

並列プログラムの作り方メモ

8章 Rinda

Rindaを利用した事例

インターフェイスの街角‒並列プログラミング

インターフェイスの街角‒ Rindaで実世界指向 プログラミング

(43)

スマートフォンセンサ関係

iOS 5のSafariで追加されたコンパス情報の取得方法 - 強火で進め

ラズパイ関係

[コラム] 第9回『1-wire温度センサーで部屋の温度を測 定しよう』 : Raspberry Piブログ

赤外線リモコン - Slack経由で家の外からエアコンを on, offできる装置を、Raspberry Piで作ってみた。 (しかも御坂美琴ちゃんが応答してくれる) - Qiita

参照

関連したドキュメント

ても情報活用の実践力を育てていくことが求められているのである︒

  BCI は脳から得られる情報を利用して,思考によりコ

これはつまり十進法ではなく、一進法を用いて自然数を表記するということである。とは いえ数が大きくなると見にくくなるので、.. 0, 1,

このように、このWの姿を捉えることを通して、「子どもが生き、自ら願いを形成し実現しよう

ているかというと、別のゴミ山を求めて居場所を変えるか、もしくは、路上に

自閉症の人達は、「~かもしれ ない 」という予測を立てて行動 することが難しく、これから起 こる事も予測出来ず 不安で混乱

「欲求とはけっしてある特定のモノへの欲求で はなくて、差異への欲求(社会的な意味への 欲望)であることを認めるなら、完全な満足な どというものは存在しない

「1 つでも、2 つでも、世界を変えるような 事柄について考えましょう。素晴らしいアイデ