SlideShare a Scribd company logo
1 of 26
Download to read offline
NanoStrand
Smalltalkで分散ネットワーキング
第77回Smalltalk勉強会
合同会社ソフトウメヤ 梅澤真史
NanoStrandとは??
● nanomsgのラッパー
● 気軽に高速なネットワークシステムが組めるよう
にするためのライブラリ
● Smalltalk間はもちろん他言語とのやりとりもス
ムーズに
● https://github.com/mumez/NanoStrand
nanomsgのこと
● 一言でいうと、Mini ZeroMQ (in C)
● マルチプラットフォーム
● 様々な通信パターン(Scalability Protocol)を提供
○ PUSH/PULL, REQ/REP, PUB/SUB, PAIR, SURVEY, BUS
● マルチトランスポート
○ TCPのみならずIPC、INPROCも
● 豊富な言語バインディング
○ http://nanomsg.org/documentation.html
NanoStrandの構成
● NanoStrand-FFI
○ FFIでnanomsg APIを呼ぶ部分
■ nanomsgのAPIをほぼそのまま使っている
■ NativeBoost版のみ (NanoStrand-NativeBoost-FFI)
● Legacy FFI版を作るとSqueakやCuisでも利用可能になる
● DLLCC版だとVisualWorks
● NanoStrand-Core
○ 上記FFI部を使いOO的なAPIを提供する
■ NnSocket(とそのサブクラス群)
インストール(1)
● nanomsgのビルド
○ 32bitのCog VMを使う場合、32bit指定でコンパイル
○ Windowsの場合は32, 64bit用が両方できるので楽
● ビルドした共有ライブラリ(libnanomsg)をVMのディレクトリに
コピー
CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32 ./configure
インストール(2)
● ConfigurationOfNanoStrandのロード
● 共有ライブラリを置いていないと定数初期化に失敗する
○ NnNbNanoMessageConstantsプールに値が入らない
○ 失敗した場合、ライブラリを置いて
”NnNbNanoMessageConstants initialize”すること
Gofer new
url: 'http://smalltalkhub.com/mc/MasashiUmezawa/NanoStrand/main';
package: 'ConfigurationOfNanoStrand';
load.
(Smalltalk at: #ConfigurationOfNanoStrand) load
例: PULL/PUSHを書いてみる(1)
"Setup PULL socket"
sock1 := NnPullSocket withBind: 'tcp://*:5575'.
sock1 onReceiveReady: [:sock | Transcript cr; show: '#PULL: ', sock receive asString].
"Setup PUSH socket"
sock2 := NnPushSocket withConnect: 'tcp://127.0.0.1:5575'.
sock2 onSendReady: [:sock | sock send: '#PUSH: ', Time now asString].
● パイプラインな処理
● NnPullSocketで受信、NnPushSocketで送信
例: PULL/PUSHを書いてみる(2)
"Start a Poller for multiplexing"
poller := NnPoller startWithSockets: {sock1. sock2}.
● NnPollerでポーリング
● 異なるプロトコル、エンドポイントのSocketをまとめて登録できる
● 適切なタイミングで、onReceiveReady:, onSendReady:のコールバックが呼
び出される
例: PULL/PUSHを書いてみる(3)
1 seconds wait. "The process ends after a second"
poller stopAndCloseSockets.
● stopAndCloseSocketsでNnPollerを止める
● 実際にはensure:で確実に止めるようにしたほうが良い
結果
● Transcriptに表示させなければ20000qpsほど捌ける
例: PUB/SUBで他言語との連携 (1)
# PUSHのクライアント起動。"HelloWorld"を1秒ごとに送る
$ nanocat --push --connect tcp://127.0.0.1:5585 --
data HelloWorld -i 1
● クライアント側をnanocatに
○ Cで書かれたnanomsgの公式クライアント。テストに便利。
例: PUB/SUBで他言語との連携 (2)
# SUBのクライアント起動。全てのイベントを受け付ける
$ nanocat --sub --connect tcp://127.0.0.1:5586 -A
● PUSHの他、SUB役のクライアントを2つ起動
# SUBのクライアント起動。"Evt:Rem0"イベントを受け付ける
$ nanocat --sub --connect tcp://127.0.0.1:5586 --subscribe Evt:Rem0 -A
例: PUB/SUBで他言語との連携 (3)
● サーバ側はPharo
○ PULLで受け取ったメッセージの数を10で割った余り(rem)を
計算
○ 余りが0または5のときイベントとしてPUBLISHする
例: PUB/SUBで他言語との連携 (4)
received := OrderedCollection new. "A message box"
"Setup PULL socket"
sock1 := NnPullSocket withBind: 'tcp://127.0.0.1:5585'.
sock1 onReceiveReady: [:sock | | rec |
rec := (sock receiveFor: 200 timeoutDo: ['']) asString.
rec ifNotEmpty: [
received add: rec. "Stock the received message"
Transcript cr; show: 'Received:', rec, ':', Time now printString].
].
例: PUB/SUBで他言語との連携 (5)
"Setup PUB socket"
sock2 := NnPubSocket withBind: 'tcp://127.0.0.1:5586'.
sock2 onSendReady: [:sock | |rem |
rem := received size rem: 10. "10で割った余りを出す"
"余りが0か5の時、イベントとして送る"
rem = 0 ifTrue: [sock send: 'Evt:Rem0:', Time now printString].
rem = 5 ifTrue: [sock send: 'Evt:Rem5:', Time now printString].
].
例: PUB/SUBで他言語との連携 (6)
poller := NnPoller new.
poller startWithSockets: {sock1. sock2}.
30 seconds wait.
poller stopAndCloseSockets.
● 30秒ほどポーリングして終了させる
○ 実際にはensure:を使ってstopさせること
今後は?
● Smalltalk-Smalltalk間
○ FFI部を充実させ、Squeak, CuisやVWに展開
○ シリアライザとしてはMessagePackや StOMPを使える
● 他言語間
○ Node.jsやVert.xなどとつなぐと広がりがありそう
NanoStrand-RPC
● RPCのI/Fを提供し便利に使えるようにする
○ ZeroMQに対するZeroRPC的な位置づけ
■ http://www.zerorpc.io
● 同期、非同期、oneway(送りっぱなし)をサポートする予定
○ 現在は同期のみの実装
○ http://smalltalkhub.com/#!/~MasashiUmezawa/NanoStrand-RPC
例: 足し算サービスの利用 (1)
● 足し算するのみの簡単なサービスクラスを用意
NnRpcSampleService class >> plus: a with: b
^a+b
● #RpcSampleServiceという名前で登録しておく
NnRpcServer addService: NnRpcSampleService
named: #RpcSampleService
例: 足し算サービスの利用 (2)
● サーバの起動
server := NnRpcServer bind: 'tcp://127.0.0.1:6677'.
server start.
● クライアントの接続、RPC呼び出し
client := NnRpcClient connect: 'tcp://127.0.0.1:6677'.
client invoke: #RpcSampleService
selector: #plus:with: arguments: {1. 2}. ”=> 3”
速度は?
● 500回起動で80ms程度
[500 timesRepeat: [client invoke: #RpcSampleService selector: #plus:
with: arguments: {1. 2}]] timeToRun. ”=> 0:00:00:00.078”
● なかなか速い
● Pure Smalltalkで書かれたRPCライブラリと比べてどうなのだろう
か?
Remote Messagint Toolkit (RMT)
● 昔書いたPure SmalltalkのRPCライブラリ
○ http://smalltalkhub.com/#!/~MasashiUmezawa/RemoteMessagingToolkit
● 同期とonewayをサポート
● 某基幹系で毎日動いている
● Squeak用であったが、最近Pharo用に復活
○ シリアライザはDataStreamからFuelに置き換えた
RMTで計測
● 500回起動で1300ms程度
service := (RmtTcpService on: 4566) acceptorClass: RmtRpcAcceptor.
service start.
RmtRpcAcceptor receiverDictionary at: #RpcSampleService
put: NnRpcSampleService.
client := RmtRpcConnector connect: 'localhost' port: 4566.
[500 timesRepeat: [client invoke: #RpcSampleService selector: #plus:with:
arguments: {1. 2}]] timeToRun. ”=> 0:00:00:01.33”
RPC系の予定
● 非同期のサポート
○ Futureを返し、値の取得後にコールバックされる仕組み
● ORB?
○ 非同期ベースでいまさらORBっぽいものを作りたい
○ E言語に似た感じの何か
まとめ
● NanoStrandで、気軽に高速なネットワークプログラムが書け
る
● いろいろなものとつないで楽しみましょう
● 今後の拡張にご期待ください!!

More Related Content

What's hot

オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみるオープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみるKenichiro MATOHARA
 
SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門Masashi Umezawa
 
主婦は見た!Azureでtensor flow
主婦は見た!Azureでtensor flow主婦は見た!Azureでtensor flow
主婦は見た!Azureでtensor flow美穂 山田
 
Tarantubeでメッセージキューを使い倒す
Tarantubeでメッセージキューを使い倒すTarantubeでメッセージキューを使い倒す
Tarantubeでメッセージキューを使い倒すMasashi Umezawa
 
Python Kyoto study
Python Kyoto studyPython Kyoto study
Python Kyoto studyNaoya Inada
 
HTML5-pronama-study
HTML5-pronama-studyHTML5-pronama-study
HTML5-pronama-studyNaoya Inada
 
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall博文 斉藤
 
Lagopusとvagrant
LagopusとvagrantLagopusとvagrant
LagopusとvagrantMasaru Oki
 
サーバー実装いろいろ
サーバー実装いろいろサーバー実装いろいろ
サーバー実装いろいろkjwtnb
 
第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村Koichi Uchimura
 
PHPとJavaScriptの噺
PHPとJavaScriptの噺PHPとJavaScriptの噺
PHPとJavaScriptの噺Shogo Kawahara
 
ParliamentでGeoSPARQL
ParliamentでGeoSPARQLParliamentでGeoSPARQL
ParliamentでGeoSPARQLTeppei Inaba
 
RPCノード構築方法【Litecoin】
RPCノード構築方法【Litecoin】RPCノード構築方法【Litecoin】
RPCノード構築方法【Litecoin】qaz_id
 
PHPカンファレンス2016 初心者セッション
PHPカンファレンス2016 初心者セッションPHPカンファレンス2016 初心者セッション
PHPカンファレンス2016 初心者セッションHideo Kashioka
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツールtotty jp
 

What's hot (20)

オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみるオープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
 
SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門
 
主婦は見た!Azureでtensor flow
主婦は見た!Azureでtensor flow主婦は見た!Azureでtensor flow
主婦は見た!Azureでtensor flow
 
Tarantubeでメッセージキューを使い倒す
Tarantubeでメッセージキューを使い倒すTarantubeでメッセージキューを使い倒す
Tarantubeでメッセージキューを使い倒す
 
Lxc on cloud
Lxc on cloudLxc on cloud
Lxc on cloud
 
How To Drink Wsgi
How To Drink WsgiHow To Drink Wsgi
How To Drink Wsgi
 
Python Kyoto study
Python Kyoto studyPython Kyoto study
Python Kyoto study
 
Clack meetup #1 lt
Clack meetup #1 ltClack meetup #1 lt
Clack meetup #1 lt
 
HTML5-pronama-study
HTML5-pronama-studyHTML5-pronama-study
HTML5-pronama-study
 
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
 
Thrift
ThriftThrift
Thrift
 
Lagopusとvagrant
LagopusとvagrantLagopusとvagrant
Lagopusとvagrant
 
サーバー実装いろいろ
サーバー実装いろいろサーバー実装いろいろ
サーバー実装いろいろ
 
第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村
 
Fluentdの使い方
Fluentdの使い方Fluentdの使い方
Fluentdの使い方
 
PHPとJavaScriptの噺
PHPとJavaScriptの噺PHPとJavaScriptの噺
PHPとJavaScriptの噺
 
ParliamentでGeoSPARQL
ParliamentでGeoSPARQLParliamentでGeoSPARQL
ParliamentでGeoSPARQL
 
RPCノード構築方法【Litecoin】
RPCノード構築方法【Litecoin】RPCノード構築方法【Litecoin】
RPCノード構築方法【Litecoin】
 
PHPカンファレンス2016 初心者セッション
PHPカンファレンス2016 初心者セッションPHPカンファレンス2016 初心者セッション
PHPカンファレンス2016 初心者セッション
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツール
 

Viewers also liked

Smalltalkで文字列解析・集計
Smalltalkで文字列解析・集計Smalltalkで文字列解析・集計
Smalltalkで文字列解析・集計Masashi Umezawa
 
Sistemas integrados de manufactura
Sistemas integrados de manufacturaSistemas integrados de manufactura
Sistemas integrados de manufacturaROSS_ANGEL
 
MultilineクラスとMultilineメソッド
MultilineクラスとMultilineメソッドMultilineクラスとMultilineメソッド
MultilineクラスとMultilineメソッドMasashi Umezawa
 
super super & sub sub の話
super super & sub sub の話super super & sub sub の話
super super & sub sub の話Masashi Umezawa
 
Smalltalkで四則演算パーサ
Smalltalkで四則演算パーサSmalltalkで四則演算パーサ
Smalltalkで四則演算パーサMasashi Umezawa
 
第二章
第二章第二章
第二章jxhtq
 
視覚化エンジンRoassal
視覚化エンジンRoassal視覚化エンジンRoassal
視覚化エンジンRoassalMasashi Umezawa
 
Smalltalkでじゃんけん
SmalltalkでじゃんけんSmalltalkでじゃんけん
SmalltalkでじゃんけんMasashi Umezawa
 
何が変わった? VisualWorks 8.0
何が変わった? VisualWorks 8.0何が変わった? VisualWorks 8.0
何が変わった? VisualWorks 8.0Masashi Umezawa
 
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)Masashi Umezawa
 
Introduction of Pharo 5.0
Introduction of Pharo 5.0Introduction of Pharo 5.0
Introduction of Pharo 5.0Masashi Umezawa
 
Smalltalkと型について
Smalltalkと型についてSmalltalkと型について
Smalltalkと型についてMasashi Umezawa
 

Viewers also liked (18)

Smalltalkで文字列解析・集計
Smalltalkで文字列解析・集計Smalltalkで文字列解析・集計
Smalltalkで文字列解析・集計
 
Pillarの紹介
Pillarの紹介Pillarの紹介
Pillarの紹介
 
Sistemas integrados de manufactura
Sistemas integrados de manufacturaSistemas integrados de manufactura
Sistemas integrados de manufactura
 
MultilineクラスとMultilineメソッド
MultilineクラスとMultilineメソッドMultilineクラスとMultilineメソッド
MultilineクラスとMultilineメソッド
 
super super & sub sub の話
super super & sub sub の話super super & sub sub の話
super super & sub sub の話
 
Cuis Smalltalkの紹介
Cuis Smalltalkの紹介Cuis Smalltalkの紹介
Cuis Smalltalkの紹介
 
Smalltalkで四則演算パーサ
Smalltalkで四則演算パーサSmalltalkで四則演算パーサ
Smalltalkで四則演算パーサ
 
第二章
第二章第二章
第二章
 
視覚化エンジンRoassal
視覚化エンジンRoassal視覚化エンジンRoassal
視覚化エンジンRoassal
 
Smalltalkでじゃんけん
SmalltalkでじゃんけんSmalltalkでじゃんけん
Smalltalkでじゃんけん
 
iPadでScratch
iPadでScratchiPadでScratch
iPadでScratch
 
早わかりSmalltalk
早わかりSmalltalk早わかりSmalltalk
早わかりSmalltalk
 
何が変わった? VisualWorks 8.0
何が変わった? VisualWorks 8.0何が変わった? VisualWorks 8.0
何が変わった? VisualWorks 8.0
 
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
 
Smalltalkだめ自慢
Smalltalkだめ自慢Smalltalkだめ自慢
Smalltalkだめ自慢
 
Introduction of Pharo 5.0
Introduction of Pharo 5.0Introduction of Pharo 5.0
Introduction of Pharo 5.0
 
Pyonkeeの皮をはぐ
Pyonkeeの皮をはぐPyonkeeの皮をはぐ
Pyonkeeの皮をはぐ
 
Smalltalkと型について
Smalltalkと型についてSmalltalkと型について
Smalltalkと型について
 

Similar to NanoStrand

勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作るKenichiro MATOHARA
 
WebRTC SFU mediasoup sample
WebRTC SFU mediasoup sampleWebRTC SFU mediasoup sample
WebRTC SFU mediasoup samplemganeko
 
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9	(2013-07)おまえらこのライブラリ使ってないの? m9	(2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)Toru Furukawa
 
WebRTC meetup Tokyo 1
WebRTC meetup  Tokyo 1WebRTC meetup  Tokyo 1
WebRTC meetup Tokyo 1mganeko
 
Fabricによるcloud stackインストール自動化
Fabricによるcloud stackインストール自動化Fabricによるcloud stackインストール自動化
Fabricによるcloud stackインストール自動化hiroyuki nakajima
 
[Basic 6] DNS / ソケット通信 / その他
[Basic 6] DNS / ソケット通信 / その他[Basic 6] DNS / ソケット通信 / その他
[Basic 6] DNS / ソケット通信 / その他Yuto Takei
 
WebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample updateWebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample updatemganeko
 
plotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgplotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgKentaro Ebisawa
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1Ryosuke IWANAGA
 
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境yut148atgmaildotcom
 
Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf)
Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf) Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf)
Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf) VirtualTech Japan Inc.
 
Docker 18.09 新機能
Docker 18.09 新機能Docker 18.09 新機能
Docker 18.09 新機能Akihiro Suda
 
OpenStack + Common Lisp
OpenStack + Common LispOpenStack + Common Lisp
OpenStack + Common Lispirix_jp
 

Similar to NanoStrand (20)

勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
勉強会向けサーバを作ってみる2 / Rasbian jessieを試す/ Google Authenticatorのパスコードを作る
 
Hacking Vox and Plagger
Hacking Vox and PlaggerHacking Vox and Plagger
Hacking Vox and Plagger
 
Reading NATS
Reading NATSReading NATS
Reading NATS
 
WebRTC SFU mediasoup sample
WebRTC SFU mediasoup sampleWebRTC SFU mediasoup sample
WebRTC SFU mediasoup sample
 
Ssaw08 0617
Ssaw08 0617Ssaw08 0617
Ssaw08 0617
 
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9	(2013-07)おまえらこのライブラリ使ってないの? m9	(2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)
 
WebRTC meetup Tokyo 1
WebRTC meetup  Tokyo 1WebRTC meetup  Tokyo 1
WebRTC meetup Tokyo 1
 
Fabricによるcloud stackインストール自動化
Fabricによるcloud stackインストール自動化Fabricによるcloud stackインストール自動化
Fabricによるcloud stackインストール自動化
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
[Basic 6] DNS / ソケット通信 / その他
[Basic 6] DNS / ソケット通信 / その他[Basic 6] DNS / ソケット通信 / その他
[Basic 6] DNS / ソケット通信 / その他
 
WebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample updateWebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample update
 
plotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgplotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfg
 
ICHIGEKI-MT 2015/03/14
ICHIGEKI-MT 2015/03/14ICHIGEKI-MT 2015/03/14
ICHIGEKI-MT 2015/03/14
 
The basic of performance tuning
The basic of performance tuningThe basic of performance tuning
The basic of performance tuning
 
Puppet on AWS
Puppet on AWSPuppet on AWS
Puppet on AWS
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
 
Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf)
Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf) Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf)
Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf)
 
Docker 18.09 新機能
Docker 18.09 新機能Docker 18.09 新機能
Docker 18.09 新機能
 
OpenStack + Common Lisp
OpenStack + Common LispOpenStack + Common Lisp
OpenStack + Common Lisp
 

More from Masashi Umezawa

第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーションMasashi Umezawa
 
FileManで楽々ファイル操作
FileManで楽々ファイル操作FileManで楽々ファイル操作
FileManで楽々ファイル操作Masashi Umezawa
 
Smalltalk勉強会 - 過去、現在、そして未来へ のその後
Smalltalk勉強会 - 過去、現在、そして未来へ のその後Smalltalk勉強会 - 過去、現在、そして未来へ のその後
Smalltalk勉強会 - 過去、現在、そして未来へ のその後Masashi Umezawa
 
TarandocでJSONを永続化
TarandocでJSONを永続化TarandocでJSONを永続化
TarandocでJSONを永続化Masashi Umezawa
 
今からでも遅くないSmalltalk入門
今からでも遅くないSmalltalk入門今からでも遅くないSmalltalk入門
今からでも遅くないSmalltalk入門Masashi Umezawa
 
Oldtalk - あのころの処理系は今
Oldtalk - あのころの処理系は今Oldtalk - あのころの処理系は今
Oldtalk - あのころの処理系は今Masashi Umezawa
 
Smalltalk勉強会 - 過去、現在、そして未来へ
Smalltalk勉強会 - 過去、現在、そして未来へSmalltalk勉強会 - 過去、現在、そして未来へ
Smalltalk勉強会 - 過去、現在、そして未来へMasashi Umezawa
 

More from Masashi Umezawa (15)

第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
 
FileManで楽々ファイル操作
FileManで楽々ファイル操作FileManで楽々ファイル操作
FileManで楽々ファイル操作
 
TruffleSqueakの紹介
TruffleSqueakの紹介TruffleSqueakの紹介
TruffleSqueakの紹介
 
TaskItの紹介
TaskItの紹介TaskItの紹介
TaskItの紹介
 
Smalltalk勉強会 - 過去、現在、そして未来へ のその後
Smalltalk勉強会 - 過去、現在、そして未来へ のその後Smalltalk勉強会 - 過去、現在、そして未来へ のその後
Smalltalk勉強会 - 過去、現在、そして未来へ のその後
 
Revealing ALLSTOCKER
Revealing ALLSTOCKERRevealing ALLSTOCKER
Revealing ALLSTOCKER
 
TarandocでJSONを永続化
TarandocでJSONを永続化TarandocでJSONを永続化
TarandocでJSONを永続化
 
Dockerizing pharo
Dockerizing pharoDockerizing pharo
Dockerizing pharo
 
今からでも遅くないSmalltalk入門
今からでも遅くないSmalltalk入門今からでも遅くないSmalltalk入門
今からでも遅くないSmalltalk入門
 
VerStixの紹介
VerStixの紹介VerStixの紹介
VerStixの紹介
 
Oldtalk - あのころの処理系は今
Oldtalk - あのころの処理系は今Oldtalk - あのころの処理系は今
Oldtalk - あのころの処理系は今
 
Pyonkeeを鳴らす
Pyonkeeを鳴らすPyonkeeを鳴らす
Pyonkeeを鳴らす
 
Smalltalk勉強会 - 過去、現在、そして未来へ
Smalltalk勉強会 - 過去、現在、そして未来へSmalltalk勉強会 - 過去、現在、そして未来へ
Smalltalk勉強会 - 過去、現在、そして未来へ
 
Tarantalk
TarantalkTarantalk
Tarantalk
 
Why!? Smalltalk
Why!? SmalltalkWhy!? Smalltalk
Why!? Smalltalk
 

NanoStrand