SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
VerStix
Pharo Smalltalk と Vert.x
第102回Smalltalk勉強会
合同会社ソフトウメヤ 梅澤真史
VerStixとは
● Vert.xと連携するためのクライアントライブラリ
○ https://github.com/mumez/VerStix
● 簡潔かつリアクティブな形で
Pharoと外部サービスとの連携を行える
Vert.x
● リアクティブなシステム開発のためのツールキット
○ http://vertx.io/
● 非同期APIでWeb, DB, MQ, 認証などのサービスと連携
○ Verticle (いわゆるActorのようなもの)
○ EventBus経由で通信
● マルチ言語をサポート(Java, JavaScript, Groovy, Ruby,
Ceylon, Kotlin, Scala)
Vert.x EventBus
● Vert.xの根幹となる非同期通信機構
○ http://vertx.io/docs/vertx-core/java/#event_bus
● イベントをpeer-to-peer、pub-subなど様々な形式で送信可能
● イベントの配送順序は保証するが厳密な配送保証はしない
● TCP EventBus Bridgeにより、JVM言語以外との連携も可能
○ https://github.com/vert-x3/vertx-tcp-eventbus-bridge
TCP EventBus Bridge Clients
● Swift, C++, C#, Python, Goなど
○ https://github.com/vert-x3/vertx-awesome#vertx-event-bus-clients
● Smalltalk版がVerStixという位置づけ
○ 自動再接続や簡易なコネクションプールも提供
○ VerStix-Core パッケージのみ
■ わずか6クラスでできている
● Stick上に作られているため
TCP EventBus Bridge のプロトコル
● HTTPよりも簡単
○ TCPのSocketでJSONを送るだけ
○ 4バイトのメッセージ長+JSON
● JSONの形式
○ address
○ headers
○ body
○ メッセージ種別 (send, publish, register, unregister)
○ (replyAddress)
Vert.xのインストール
● SDKMAN が楽
○ 様々なプラットフォームに対応
○ JDM系のSDKのインストールをまとめて行える
● インストール後は vertx コマンドが使えるようになる
$ sdk install vertx
VerStixのインストール
● Catalog Browserから
○ 'verstix'で検索し、'install stable version'
● あるいはMetacelloでロード
Metacello new
smalltalkhubUser: 'Pharo' project: 'MetaRepoForPharo60';
configuration: 'VerStix';
version: #stable;
get; load.
サンプルのVerticleを起動
● 動作確認用のサンプルVerticle(groovy)を入手
○ https://github.com/mumez/VerStix/blob/master/example/
TcpEventBusBridgeEchoServer.groovy
■ helloイベントの受信、echoイベントの送受信ができる
● vertxコマンドでVerticleを起動
○ --instances <n> で複数起動もできる(ラウンドロビン)
○ --ha でクラスタリングもできる(プロセス間でRR)
$ vertx run TcpEventBusBridgeEchoServer.groovy
VerStixからのイベント送信
● 接続
eventBus := VsEventBus host: 'localhost' port: 7000.
eventBus connect.
● 'echo'イベントの送信
eventBus send: {'value'->'HELLO from Smalltalk'} to: 'echo'.
$ got: {"value":"HELLO from Smalltalk"}
=> コンソールに表示される
コールバックの指定
● 送信時にcallbackの指定が可能
○ サーバでの処理が終わると非同期で呼び出される
● 'echo'なので送信したメッセージのbodyそのものが
返ってきてインスペクタが開く
eventBus send: {'value'-> Time now asString} to: 'echo'  
callback: [:msg | msg body inspect].
Pub/Subをしてみる
● VsEventBus>>subscribe:callback:でイベントハンドラを登録
● VsEventBus>>publish:to:でイベントをブロードキャスト
● 複数のPharoイメージで試してみましょう
eventBus subscribe: 'echo' callback: [:msg | msg body inspect].
eventBus publish: {'value'-> Time now asString} to: 'echo'.
Goとつないでみる
● vxc (Goで書かれたVert.x EventBusのCLI)を使用
○ https://github.com/cinterloper/vxc
● echoイベントをsubscribeさせてみる
● Pharoからpublishすると
$ go run app.go -l -n echo
$ {"value":"1:39:31.546674 pm"}
Vert.x側のイベントハンドラ
● イベントに対するConsumerを指定
vertx.eventBus().consumer("echo", {msg ->
//msg.reply(new JsonObject().put("value", "Hello);
msg.reply(msg.body());
});
● JsonObjectにしてreply()で値を返す
EventBusBridgeの起動
● 生成時にBridgeOptionsで送受信するイベントを設定
TcpEventBusBridge bridge = TcpEventBusBridge.create(vertx,
new BridgeOptions()
.addInboundPermitted(new PermittedOptions().setAddress("hello"))
.addInboundPermitted(new PermittedOptions().setAddress("echo"))
.addOutboundPermitted(new PermittedOptions().setAddress("echo")));
bridge.listen(7000, {res -> System.out.println("Ready: "+ bridge)});
● listen()で起動
応用例: bolt.x
● Neo4jの純正Bolt Protocol DriverをVerStixから呼び出す
○ サーバ (Java)
■ https://github.com/mumez/bolt.x
○ クライアント (Pharo)
■ http://smalltalkhub.com/#!/~MasashiUmezawa/Boltx
● PharoからJavaのBolt DriverによるNeo4jへのアクセスが可能
● 非同期APIが使えるようになる
○ REST APIでは提供されていない
bolt.xのインストール (サーバ側)
$ $ ./bin/neo4j console
● Neo4jを入手
○ https://neo4j.com/download/community-edition/
■ tarballを展開して起動
○ http://localhost:7474/browser/ にアクセスし、サンプルのMovie
Graphを作成しておく
● Githubからbolt.xをcloneしてredeploy.shを起動
$ $ bash redeploy.sh
bolt.xのインストール (クライアント側)
Gofer new
url: 'http://smalltalkhub.com/mc/MasashiUmezawa/Boltx/main';
package: 'ConfigurationOfBoltx';
load.
(Smalltalk at: #ConfigurationOfBoltx) load
● Goferでいつものやつ
非同期APIでのCypher実行
client := BxCypherClient host: 'localhost' port: 7000.
req := client asyncQueryByCypher:
'MATCH (n:Movie{released:$y}) RETURN n' params: {'y'->2000}.
● asyncQueryByCypher:paramsを使う
● ifNext:で結果をpushでrowごとに取得
req ifNext: [:val | Transcript cr; show: val ].
● ifDone:で結果をまとめて取得
req ifDone: [ :vals | vals inspect ].
非同期で書き込み
client := BxCypherClient host: 'localhost' port: 7000.
req := client writeByCypher: '
MERGE (a:Person {name: $name1})
MERGE (b:Person {name: $name2})
MERGE (a)-[r:KNOWS]->(b)
' params: {'name1'->'test1'. 'name2'->'test2'}.
● writeByCypher:params:を使う
● ifFailed:でエラーがあった時に通知
req ifFailed: [ :error | error inspect ]
非同期でバルク書き込み
client := BxCypherClient host: 'localhost' port: 7000.
req := client writeBySameCypher: '
MERGE (a:Person {name: $name1})
MERGE (b:Person {name: $name2})
MERGE (a)-[r:KNOWS]->(b)
' paramsArray: ((1 to: 1000)
collect: [:idx | {'name1'->idx asString. 'name2'->(idx+1) asString}]).
● 同一のCypherでパラメータだけを変更して大量書き込み
同期APIとの比較
graphDb := N4GraphDb new.
req := client queryByCyphers:( (1 to: 1000) collect: [ :idx | {
'MERGE (a:Person {name: $name1})
MERGE (b:Person {name: $name2})
MERGE (a)-[r:KNOWS]->(b)'. {'name1'->'test1'. 'name2'->'test2'}
}]).
● Neo4reStの場合
○ 処理が終わるまでPharo側はブロック
○ 同一の重複したCypherを送っていて無駄が多い
Vert.x側での留意点
vertx.<JsonObject>executeBlocking(future -> {
basicExecute(msg, future);
}, true, res -> {
msg.reply(res.result());
});
● 各処理がブロッキングで止まらないようにする
○ 外部DB等の同期APIを呼び出す時に注意
その他の応用例
● EventBus経由でVert.x JDBC Clientを使えるようにする
○ PharoからMySQLやOracleに接続できるようになる
● EventBus経由で認証系APIとつなぐ
○ PharoからJWTやShiroなどの利用が可能になる
まとめ
● VerStixを使うと簡単なイベント送信のAPIで、既存のサービ
スを連携させることができる
● 同期のみのAPIを非同期化したり、何かと手厚いJavaのSDK
やドライバをPharoから手軽に利用したりするには有効

Contenu connexe

Tendances

PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)do_aki
 
福岡ブロックチェーンエコノミー勉強会In東京「カラードコインの作り方」
福岡ブロックチェーンエコノミー勉強会In東京「カラードコインの作り方」福岡ブロックチェーンエコノミー勉強会In東京「カラードコインの作り方」
福岡ブロックチェーンエコノミー勉強会In東京「カラードコインの作り方」shigeyuki azuchi
 
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方tshiroyama
 
VarnishではじめるESI
VarnishではじめるESIVarnishではじめるESI
VarnishではじめるESIIwana Chan
 
JIT のコードを読んでみた
JIT のコードを読んでみたJIT のコードを読んでみた
JIT のコードを読んでみたy-uti
 

Tendances (6)

Ansible2.0と実用例
Ansible2.0と実用例Ansible2.0と実用例
Ansible2.0と実用例
 
PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)PHP AST 徹底解説(補遺)
PHP AST 徹底解説(補遺)
 
福岡ブロックチェーンエコノミー勉強会In東京「カラードコインの作り方」
福岡ブロックチェーンエコノミー勉強会In東京「カラードコインの作り方」福岡ブロックチェーンエコノミー勉強会In東京「カラードコインの作り方」
福岡ブロックチェーンエコノミー勉強会In東京「カラードコインの作り方」
 
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
 
VarnishではじめるESI
VarnishではじめるESIVarnishではじめるESI
VarnishではじめるESI
 
JIT のコードを読んでみた
JIT のコードを読んでみたJIT のコードを読んでみた
JIT のコードを読んでみた
 

En vedette

リクルート住まいカンパニーの新規事業でのスクラム導入奮闘記
リクルート住まいカンパニーの新規事業でのスクラム導入奮闘記リクルート住まいカンパニーの新規事業でのスクラム導入奮闘記
リクルート住まいカンパニーの新規事業でのスクラム導入奮闘記Tatsuya Yokoyama
 
Smalltalkと型について
Smalltalkと型についてSmalltalkと型について
Smalltalkと型についてMasashi Umezawa
 
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)Masashi Umezawa
 
Implementing Agile Data Governance
Implementing Agile Data GovernanceImplementing Agile Data Governance
Implementing Agile Data GovernanceTami Flowers
 

En vedette (6)

Smalltalkだめ自慢
Smalltalkだめ自慢Smalltalkだめ自慢
Smalltalkだめ自慢
 
リクルート住まいカンパニーの新規事業でのスクラム導入奮闘記
リクルート住まいカンパニーの新規事業でのスクラム導入奮闘記リクルート住まいカンパニーの新規事業でのスクラム導入奮闘記
リクルート住まいカンパニーの新規事業でのスクラム導入奮闘記
 
Smalltalkと型について
Smalltalkと型についてSmalltalkと型について
Smalltalkと型について
 
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
 
Implementing Agile Data Governance
Implementing Agile Data GovernanceImplementing Agile Data Governance
Implementing Agile Data Governance
 
Why!? Smalltalk
Why!? SmalltalkWhy!? Smalltalk
Why!? Smalltalk
 

Similaire à VerStixの紹介

成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略Hiroshi SHIBATA
 
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphereQuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphereWataru Unno
 
WebSocket + Node.jsでつくるチャットアプリ
WebSocket + Node.jsでつくるチャットアプリWebSocket + Node.jsでつくるチャットアプリ
WebSocket + Node.jsでつくるチャットアプリKohei Kadowaki
 
Step by stepで学ぶTerraformによる監視付きAWS構築
Step by stepで学ぶTerraformによる監視付きAWS構築Step by stepで学ぶTerraformによる監視付きAWS構築
Step by stepで学ぶTerraformによる監視付きAWS構築Yo Takezawa
 
福岡ブロックチェーンエコノミー勉強会Vol.3「Segregated Witness」
福岡ブロックチェーンエコノミー勉強会Vol.3「Segregated Witness」福岡ブロックチェーンエコノミー勉強会Vol.3「Segregated Witness」
福岡ブロックチェーンエコノミー勉強会Vol.3「Segregated Witness」shigeyuki azuchi
 
AnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeAnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeSatoru Yoshida
 
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...Naoto Gohko
 
Behatで行う、E2Eテスト入門
Behatで行う、E2Eテスト入門Behatで行う、E2Eテスト入門
Behatで行う、E2Eテスト入門leverages_event
 
ラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaSラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaSnpsg
 
NAO/Pepper 開発環境 について
NAO/Pepper 開発環境 についてNAO/Pepper 開発環境 について
NAO/Pepper 開発環境 についてTakuji Kawata
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるdavid9142
 
OpenDaylightを用いた次世代ネットワーク構成管理の考察
OpenDaylightを用いた次世代ネットワーク構成管理の考察OpenDaylightを用いた次世代ネットワーク構成管理の考察
OpenDaylightを用いた次世代ネットワーク構成管理の考察Naoto MATSUMOTO
 
MicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組みMicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組みShinichiro Arai
 
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像Akira Inoue
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.Kensaku Komatsu
 
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)Iwana Chan
 

Similaire à VerStixの紹介 (20)

成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphereQuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
 
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
 
WebSocket + Node.jsでつくるチャットアプリ
WebSocket + Node.jsでつくるチャットアプリWebSocket + Node.jsでつくるチャットアプリ
WebSocket + Node.jsでつくるチャットアプリ
 
Step by stepで学ぶTerraformによる監視付きAWS構築
Step by stepで学ぶTerraformによる監視付きAWS構築Step by stepで学ぶTerraformによる監視付きAWS構築
Step by stepで学ぶTerraformによる監視付きAWS構築
 
福岡ブロックチェーンエコノミー勉強会Vol.3「Segregated Witness」
福岡ブロックチェーンエコノミー勉強会Vol.3「Segregated Witness」福岡ブロックチェーンエコノミー勉強会Vol.3「Segregated Witness」
福岡ブロックチェーンエコノミー勉強会Vol.3「Segregated Witness」
 
AnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeAnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a Code
 
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
 
Behatで行う、E2Eテスト入門
Behatで行う、E2Eテスト入門Behatで行う、E2Eテスト入門
Behatで行う、E2Eテスト入門
 
ラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaSラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaS
 
NAO/Pepper 開発環境 について
NAO/Pepper 開発環境 についてNAO/Pepper 開発環境 について
NAO/Pepper 開発環境 について
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
 
OpenDaylightを用いた次世代ネットワーク構成管理の考察
OpenDaylightを用いた次世代ネットワーク構成管理の考察OpenDaylightを用いた次世代ネットワーク構成管理の考察
OpenDaylightを用いた次世代ネットワーク構成管理の考察
 
MicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組みMicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組み
 
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
DAS_202109
DAS_202109DAS_202109
DAS_202109
 
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
 
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)
 

Plus de 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
 
SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門Masashi Umezawa
 
Smalltalk勉強会 - 過去、現在、そして未来へ のその後
Smalltalk勉強会 - 過去、現在、そして未来へ のその後Smalltalk勉強会 - 過去、現在、そして未来へ のその後
Smalltalk勉強会 - 過去、現在、そして未来へ のその後Masashi Umezawa
 
TarandocでJSONを永続化
TarandocでJSONを永続化TarandocでJSONを永続化
TarandocでJSONを永続化Masashi Umezawa
 
今からでも遅くないSmalltalk入門
今からでも遅くないSmalltalk入門今からでも遅くないSmalltalk入門
今からでも遅くないSmalltalk入門Masashi Umezawa
 
Tarantubeでメッセージキューを使い倒す
Tarantubeでメッセージキューを使い倒すTarantubeでメッセージキューを使い倒す
Tarantubeでメッセージキューを使い倒すMasashi Umezawa
 
Oldtalk - あのころの処理系は今
Oldtalk - あのころの処理系は今Oldtalk - あのころの処理系は今
Oldtalk - あのころの処理系は今Masashi Umezawa
 
Smalltalk勉強会 - 過去、現在、そして未来へ
Smalltalk勉強会 - 過去、現在、そして未来へSmalltalk勉強会 - 過去、現在、そして未来へ
Smalltalk勉強会 - 過去、現在、そして未来へMasashi Umezawa
 
Introduction of Pharo 5.0
Introduction of Pharo 5.0Introduction of Pharo 5.0
Introduction of Pharo 5.0Masashi Umezawa
 
何が変わった? VisualWorks 8.0
何が変わった? VisualWorks 8.0何が変わった? VisualWorks 8.0
何が変わった? VisualWorks 8.0Masashi Umezawa
 

Plus de Masashi Umezawa (20)

第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
 
FileManで楽々ファイル操作
FileManで楽々ファイル操作FileManで楽々ファイル操作
FileManで楽々ファイル操作
 
TruffleSqueakの紹介
TruffleSqueakの紹介TruffleSqueakの紹介
TruffleSqueakの紹介
 
SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門
 
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入門
 
Tarantubeでメッセージキューを使い倒す
Tarantubeでメッセージキューを使い倒すTarantubeでメッセージキューを使い倒す
Tarantubeでメッセージキューを使い倒す
 
Oldtalk - あのころの処理系は今
Oldtalk - あのころの処理系は今Oldtalk - あのころの処理系は今
Oldtalk - あのころの処理系は今
 
Pyonkeeを鳴らす
Pyonkeeを鳴らすPyonkeeを鳴らす
Pyonkeeを鳴らす
 
Smalltalk勉強会 - 過去、現在、そして未来へ
Smalltalk勉強会 - 過去、現在、そして未来へSmalltalk勉強会 - 過去、現在、そして未来へ
Smalltalk勉強会 - 過去、現在、そして未来へ
 
Tarantalk
TarantalkTarantalk
Tarantalk
 
Introduction of Pharo 5.0
Introduction of Pharo 5.0Introduction of Pharo 5.0
Introduction of Pharo 5.0
 
Pillarの紹介
Pillarの紹介Pillarの紹介
Pillarの紹介
 
NanoStrand
NanoStrandNanoStrand
NanoStrand
 
何が変わった? VisualWorks 8.0
何が変わった? VisualWorks 8.0何が変わった? VisualWorks 8.0
何が変わった? VisualWorks 8.0
 
Pyonkeeの皮をはぐ
Pyonkeeの皮をはぐPyonkeeの皮をはぐ
Pyonkeeの皮をはぐ
 

VerStixの紹介