SlideShare una empresa de Scribd logo
1 de 110
Descargar para leer sin conexión
非同期したり
イベント駆動したり
∼Vert.xのちょっとした話∼
   2012/10/26 at G*ワークショップ
改め
非同期したり
 イベント駆動したり
あとは時々スケールしたり
 ∼Vert.xのちょっとした話∼
  2012/10/26 at G*ワークショップ
お前誰よ?
•名前:杉浦孝博

•@touchez_du_bois

•自称 アニメ営業 担当

•時々 他社製品営業 担当
閑話休題
前期(7∼9月)の
おススメアニメ
  と言えば
人類は
衰退しました
TARI TARI
ですが、
今期(10∼11
月)のおススメ
アニメと言えば
ジョジョの
奇妙な冒険
となりの
怪物くん
中二病でも
恋がしたい!
中二病でも
恋がしたい!
   Lite
デス!
です。
さて、
本題(営業活
動)が終わり
ましたので、
ここから40
 分弱、
余談
です。
さて、
時は西暦
2006年
C10K問題
C10K問題
• ハードウェアの性能上は問題がなくても、
 あまりにもクライアントの数が多くなると
 サーバがパンクする問題のこと。

• http://www.hyuki.com/yukiwiki/
 wiki.cgi?TheC10kProblem
C10K問題

• プロセスのfork、マルチスレッド化。
   • 生成にリソースが必要。
   • コンテキストスイッチが発生。
C10K問題

• ブロッキングI/O (同期I/O)。
   • アプリは作りやすい(素直なロジック)。
   • 入出力の完了を待つ必要がある。
C10K問題
• ネットワーク上のリクエストの増加。
   • スマートフォンの普及。
   • WebSocketsなどでクライアント/サー
   バ間を繋ぎっぱなしに。
そこで
C10K問題
• 次の方法で対応。
 • シングルスレッドモデル。
 • ノンブロッキングI/O (非同期I/O)。
 • イベント駆動。
Java界隈では
NIO
  from
J2SE 1.4
NIO.2
 from
Java 7
Netty
from
JBoss
Groovy界隈
   では
Gretty
  from
Alex Tkachman
Gretty
•次のURLを参照。
• http://uehaj.hatenablog.com/entry/
    20100819/1282168541

• http://d.hatena.ne.jp/toby55kij/
    20111223/1324568112

• http://www.ibm.com/developerworks/jp/java/
    library/j-javadev2-20/index.html
そして...
Vert.x
Vert.xとは
•非同期、スケーラブル、並列処
 理アプリケーション開発のため
 のフレームワーク。

•公式ページ:http://vertx.io/

• バージョン:1.3.0 final
Vert.xとは
•開発リーダー:Tim Fox
Vert.xの特徴
Vert.xの特徴 (1)
•JVM上で動作。多言語対応。

 • Java, Groovy, JavaScript,
  CoffeeScript, Ruby, Python
  に対応。

 •   Scala, Clojureに対応予定。
Vert.xの特徴 (2)

•
イベント駆動モデル。

 • イベントに対して、イベントを
 処理するハンドラを記述。

•   ハンドラは非同期に実行。
Vert.xの特徴 (3)
•
シンプルな並列処理モデル。

 • シングルスレッドモデルのよう
 にコードを記述。

•synchronized, volatile, 明示
 的なロックは基本的に不要。
Vert.xの特徴 (4)
•
割と楽にスケーリング。

 • メッセージパッシングや
 immutableな共有データなど
 を使用。

•   自前で頑張らなくてもよい。
Vert.xの
コンセプト
Verticle

•
Vert.xのデプロイの単位。

• メインのスクリプト、及び参照
されるスクリプトやjarやリソー
スを含む。
Verticle

•1つのVerticleのみで単独動作。

• 複数のVerticleがイベントバス
を使用して協調動作。
Verticle
インスタンス




            イベントバス

             JVM
Vert.xインスタンス

•Verticleが実行される環境。

• Vert.xインスタンス自体は、
JVM上で実行される。
Vert.xインスタンス

•
Vert.xインスタンスは、同じホ
スト、同じネットワークの異な
るホスト上に同時に複数存在
可。
Vert.xインスタンス

•
Vert.xインスタンスは、独自の
クラスローダでそれぞれの
Verticleを実行。

•Verticle同士は独立。
Vert.xインスタンス

•
Vert.xインスタンス同士でクラ
スタを構成、分散イベントバス
を形成して、Verticle同士が通
信できる。
Verticle
インスタンス

  Vert.x
インスタンス
            イベントバス


             JVM
多言語対応
•
好きな言語でVerticleを開発で
きる。

•
異なる言語で書かれたVerticle
同士をシームレスに連携でき
る。
イベント駆動
•
Verticle開発のほとんどは、イ
ベントハンドラの設定。

•
ノンブロッキング、マルチスレ
ッドによるコンテキストスイッ
チやスタック領域への対応。
イベントループ
•
イベントを処理し、Verticleに
ディスパッチするスレッド。

•複数イベントループを作成可。

• Verticleインスタンスは常に同
じイベントループに割り当て。
イベントループ

•
1つのイベントループに複数の
Verticleインスタンスを処理。

•マルチ・リアクター・パターン

 • イベントループが複数のため。
イベント
  ループ
 Verticle
インスタンス

  Vert.x
インスタンス
            イベントバス


             JVM
メッセージパッシング

•
同じVert.xインスタンス内、あ
るいは異なるVert.xインスタン
スで、イベンストバスを通じメ
ッセージをやり取りすることで
他のVerticleと通信が可能。
メッセージパッシング

•
あるVerticleから別の複数の
Verticleにメッセージパッシン
グすることで、マルチスレッド
的な使い方ができ。スケールも
可能。
イベント
  ループ
 Verticle
インスタンス

  Vert.x
インスタンス

            イベントバス

             JVM
共有データ

•
メッセージパッシングが常に最
良の解とは限らない。

•
ひとつのVerticleにメッセージ
が集中してしまう場合。
共有データ

•
不変なデータのみ、Verticle間
で共有が可能。

•
共有マップと共有セットが利用
可能。
ワーカーVerticle
•
Verticleインスタンスはイベン
トループに割り当てられ実行(デ
ィスパッチ)。

•
Verticleインスタンスは処理を
ブロックすべきではない。
ワーカーVerticle

•
でも、どうしてもブロックする
ケースが出てくる。

•例えば、JDBC API。
ワーカーVerticle
•
ワーカーVerticleとは、イベン
トループに割り当てられていな
いVerticle。

•
バックグラウンドのスレッドプ
ールで実行。
ワーカーVerticle
•いくつか制限がある。

• 複数のスレッドで同時に実行さ
れることはない。

•
TCP/HTTPのクライント/サー
バでは使用できない。
コアサービス
•
Verticleから直接呼び出し可能
なサービス(API)。

•
サーバやクライアント作成に必
要そうなものはひととおり揃え
てある。
コアサービス
•   TCP/SSLのサーバ/クライアント

•   HTTP/HTTPSのサーバ/クライアント

•   WebSocketsのサーバ/クライアント

•   分散イベントバスへのアクセス

•   定期的かつ単発のタイマー

•   バッファ

•   フロー制御

•   ファイルシステム上のファイルアクセス

•   共有マップ、共有セット

•   ロギング

•   SockJSサーバ構築

•   Verticleのデプロイ/アンデプロイ
モジュール

•
アプリケーションや再利用可能
なリソースをパッケージ化した
もの。

•どの言語でも記述できる。
モジュール

•
イベントバス上でJSONメッセ
ージを送受信することで
Verticleインスタンスや他のモ
ジュールから通信が可能。
モジュール
• https://github.com/vert-x/vertx-mods
 • Webサーバ
 • キュー
 • mongodbアクセス
 • メール送信
 • 認証
 • ファイルアップロード
ライブラリ
•
次のオープンソースライブラリ
を使用。

•   Netty : ネットワークI/O

• Hazelcast : クラスタリング
    各言語の実行エンジン
Demo
Hello,World
 的なもの
HelloWorld.groovy
vertx.createHttpServer().requestHandler
{ request ->
  request.response.end(“””
<html>
  <body>
     <h1>Hello, World!</h1>
  </body>
</html>
“””)
}.listen(8080, 'localhost')
$ vertx run HelloWorld.groovy
課題
課題
•エラーが意味不明。

 • 1.3.0でサンプルが動かなくな
 った...orz

•どこで落ちたかがわからな
 い...orz
auxo:demo02 rhapsody$ vertx run App.groovy
Exception in Groovy verticle
java.lang.NullPointerException
!   at org.vertx.java.deploy.impl.VerticleManager$1.handle(VerticleManager.java:169)
!   at org.vertx.java.deploy.impl.VerticleManager$1.handle(VerticleManager.java:166)
!   at org.vertx.java.core.impl.BlockingAction$1$1.run(BlockingAction.java:60)
!   at org.vertx.java.core.impl.Context$2.run(Context.java:122)
!   at
org.jboss.netty.channel.socket.nio.AbstractNioWorker.processEventQueue(AbstractNioWorker.jav
a:453)
!   at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:330)
!   at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
!   at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
!   at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
!   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
!   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
!   at java.lang.Thread.run(Thread.java:722)
Demo 2
ちょっと
凝ったもの
落ち穂拾い
ドキュメント
•
ドキュメントは割と充実。

 • メインマニュアル

 • 言語ごとにコアマニュアルと
 APIドキュメント
 モジュール用マニュアル
チュートリアル
•
Webアプリケーションを作る。

 • Webサーバ用モジュール、
 MongoDBを使った永続化、イ
 ベントバスを使った通信な
 ど。
サンプル
•
コアサービスの使い方がだいた
い分かるサンプル。
• TCP/SSL, HTTP/HTTPS
• イベントバス
• WebSockets, SockJS
• ファイルアップロード、など
Grailsから使う
•GrailsからSockJSを使う例

 • https://gist.github.com/
  2652835

 •BootStrapでSockJSServer
  インスタンスを生成し起動。
import org.vertx.groovy.core.Vertx

class BootStrap {

    def init = { servletContext ->
        def vertx = Vertx.newVertx()
        def httpServer = vertx.createHttpServer()
        def server = vertx.createSockJSServer(httpServer)
        server = installApp(prefix: '/events') { sock ->
            sock.dataHandler { buff ->
                sock << buff
            }
        }

        httpServer.listen(8585)
    }

    def destroy = {
    }
}
   var sock = new SockJS('http://localhost:8585/events');
   sock.onopen = function() {
       console.log('open');
   };
   sock.onmessage = function(e) {
       console.log('message', e.data);
       alert('received message echoed from server: ' + e.data);
   };
   sock.onclose = function() {
       console.log('close');
   };

   function send(message) {

     if (sock.readyState == WebSocket.OPEN) {
        console.log("sending message")
        sock.send(message);
     } else {
        console.log("The socket is not open.");
     }
   }
まとめ
まとめ (副業)
•
Vert.xは非同期でスケーラブル
な並列処理アプリケーションを
開発するためのフレームワーク
•
リクエストをせっせと捌くよう
な用途に使用することを検討し
てみてはいかがでしょうか。
まとめ (本業)

•
円盤(Blu-ray/DVD)買ってね♡
 • ジョジョの奇妙な冒険
 • となりの怪物くん
 • 中二病でも恋がしたい!
おまけ
先程の
ドキュメント
•
ドキュメントは割と充実。

 • メインマニュアル

 • 言語ごとにコアマニュアルと
 APIドキュメント
 モジュール用マニュアル
ですが、
株式会社
ニューキャスト
  さんの
Mybetabook
http://mybetabook.com/
で
絶賛翻訳中
 です。
ということで、
ご清聴ありがとう
ございました。

Más contenido relacionado

La actualidad más candente

Dynamic Allocation in Spark
Dynamic Allocation in SparkDynamic Allocation in Spark
Dynamic Allocation in Spark
Databricks
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Yoshifumi Kawai
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
 

La actualidad más candente (20)

トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2
 
トランザクションの並行処理制御
トランザクションの並行処理制御トランザクションの並行処理制御
トランザクションの並行処理制御
 
型安全性入門
型安全性入門型安全性入門
型安全性入門
 
jemalloc 세미나
jemalloc 세미나jemalloc 세미나
jemalloc 세미나
 
Step-by-Step Introduction to Apache Flink
Step-by-Step Introduction to Apache Flink Step-by-Step Introduction to Apache Flink
Step-by-Step Introduction to Apache Flink
 
全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!
 
"Simple Made Easy" Made Easy
"Simple Made Easy" Made Easy"Simple Made Easy" Made Easy
"Simple Made Easy" Made Easy
 
Consumer offset management in Kafka
Consumer offset management in KafkaConsumer offset management in Kafka
Consumer offset management in Kafka
 
Pythonでzabbix apiを使ってみる
Pythonでzabbix apiを使ってみるPythonでzabbix apiを使ってみる
Pythonでzabbix apiを使ってみる
 
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
 
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
 
About GStreamer 1.0 application development for beginners
About GStreamer 1.0 application development for beginnersAbout GStreamer 1.0 application development for beginners
About GStreamer 1.0 application development for beginners
 
Linuxカーネルを読んで改めて知るプロセスとスレッドの違い
Linuxカーネルを読んで改めて知るプロセスとスレッドの違いLinuxカーネルを読んで改めて知るプロセスとスレッドの違い
Linuxカーネルを読んで改めて知るプロセスとスレッドの違い
 
안정적인 서비스 운영 2014.03
안정적인 서비스 운영   2014.03안정적인 서비스 운영   2014.03
안정적인 서비스 운영 2014.03
 
Dynamic Allocation in Spark
Dynamic Allocation in SparkDynamic Allocation in Spark
Dynamic Allocation in Spark
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
 
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
 
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
 
SpringBootTest入門
SpringBootTest入門SpringBootTest入門
SpringBootTest入門
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 

Destacado (7)

Closures and methodMissing are real
Closures and methodMissing are realClosures and methodMissing are real
Closures and methodMissing are real
 
ジャパネットQB GPars
ジャパネットQB GParsジャパネットQB GPars
ジャパネットQB GPars
 
GContractsの基礎
GContractsの基礎GContractsの基礎
GContractsの基礎
 
Introduction to Spock
Introduction to SpockIntroduction to Spock
Introduction to Spock
 
Goos 001
Goos 001Goos 001
Goos 001
 
Groovyしたり RPしなかったり あとは時々布教活動したり
Groovyしたり RPしなかったり あとは時々布教活動したりGroovyしたり RPしなかったり あとは時々布教活動したり
Groovyしたり RPしなかったり あとは時々布教活動したり
 
GroovyからAnime
GroovyからAnimeGroovyからAnime
GroovyからAnime
 

Similar a Vert.x.tari.tari

Java scriptでslideを作ってみた
Java scriptでslideを作ってみたJava scriptでslideを作ってみた
Java scriptでslideを作ってみた
Katsuhito Yonao
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
Koichi Sakata
 
Tizen web app について調べたよ
Tizen web app について調べたよTizen web app について調べたよ
Tizen web app について調べたよ
Naruto TAKAHASHI
 
WordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうWordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょう
Hishikawa Takuro
 
ななめ45°から見たJavaOne
ななめ45°から見たJavaOneななめ45°から見たJavaOne
ななめ45°から見たJavaOne
AdvancedTechNight
 

Similar a Vert.x.tari.tari (20)

Pronama 0707 wf4
Pronama 0707 wf4Pronama 0707 wf4
Pronama 0707 wf4
 
20140803 docker
20140803 docker20140803 docker
20140803 docker
 
PHP7をDockerで動かしたという話
PHP7をDockerで動かしたという話PHP7をDockerで動かしたという話
PHP7をDockerで動かしたという話
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発
 
Java scriptでslideを作ってみた
Java scriptでslideを作ってみたJava scriptでslideを作ってみた
Java scriptでslideを作ってみた
 
スマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブルスマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブル
 
TypeScriptをオススメする理由
TypeScriptをオススメする理由TypeScriptをオススメする理由
TypeScriptをオススメする理由
 
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGGroovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUG
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
 
Tizen web app について調べたよ
Tizen web app について調べたよTizen web app について調べたよ
Tizen web app について調べたよ
 
SocketStream入門
SocketStream入門SocketStream入門
SocketStream入門
 
作られては消えていく泡のように儚いクラスタの運用話
作られては消えていく泡のように儚いクラスタの運用話作られては消えていく泡のように儚いクラスタの運用話
作られては消えていく泡のように儚いクラスタの運用話
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】
 
WordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうWordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょう
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
ななめ45°から見たJavaOne
ななめ45°から見たJavaOneななめ45°から見たJavaOne
ななめ45°から見たJavaOne
 
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しよう
 
初心者が伝えるDocker超入門
初心者が伝えるDocker超入門初心者が伝えるDocker超入門
初心者が伝えるDocker超入門
 
PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編
 
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集
 

Último

Último (11)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

Vert.x.tari.tari