SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
PHP meets NodeJS
PHPに簡単にPUSH機能を組み込む
13年8月4日日曜日
まずは自己紹介
簡単に自己紹介
Name : takyam (たくやむ)
Work : WEBアプリケーションエンジニア?
Twitter : @takyam
Blog : http://new.takyam.com/
GitHub : http://github.com/takyam-git
Bitbucket : https://bitbucket.org/takyam
13年8月4日日曜日
PHPで通知機能
PHPでFacebookの通知機能のようなものを実装したい事ありますよね?
画面遷移を挟まずにユーザーへの通知が表示される機能です。
私はPUSH通知と呼んでるのですがこれをPHPで作りたいとおもいます
13年8月4日日曜日
通知機能を作るには
サーバー側からPUSHする必要がありますが、いくつかの手法があります
ポーリング(実際はPUSHでは無い)
Commet
Websocket
それぞれメリット・デメリットがあります
今回はWebsocketを使ってみたいと思います
13年8月4日日曜日
Websocketを使う
PHP単体でもWebsocketを扱えるようなライブラリはあります
とはいえWAFに組み込むのは難しいので今回はNodeJSを使います
Websocketの部分はNodeJSに全ておまかせです!
13年8月4日日曜日
NodeJS分かんねぇよ
そんな硬派なPHPerも大丈夫!
NodeJSは全部で100行くらいなので、コピペすりゃOK
一度作ればNodeJSメンテナンス不要なイケてるシステムです
13年8月4日日曜日
今回のシステムの前提
今回のPUSHを実現するための前提条件が2つあります
NodeJSがPHPと同ドメイン(ポート違いOK)で運用できる
Redisが使える
これだけ!
13年8月4日日曜日
まずはイメージをつかむ
文字で説明するのも大変なので簡単なイメージ図をご紹介
まず最終的な完成形のイメージを掴んでください
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
投稿に対してのコメントを
AjaxでPHPにPOSTリクエスト
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
コメントのDBへの保存処理などを実施
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
コメントが来たよ通知JSONを
RedisにPUBLISH
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
SUBSCRIBEしてるNodeJSが
通知JSONを受信
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
通知JSONから通知対象のユーザーを選択する
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
通知対象のユーザーのWebsocketを使って
PUSH通知(JSON)を送信!
13年8月4日日曜日
最終的な構成
HTTP POST
Redis PUBLISH
Redis SUBSCRIBE
Websocket Connections
受け取ったPUSH通知JSONを元に
画面の表示を更新
13年8月4日日曜日
どうですか?
そんなに複雑な構成では無いとおもいます
ポイントは以下の3つ
ユーザーからのデータ送信はAjaxので処理する
Redis経由でPHPがNodeJSに、一方通行でJSONを送る
NodeはPHPからのJSONを元にWebsocketでデータを送信する
13年8月4日日曜日
なんでAjax?
コレ以上Nodeに複雑な処理持たせたくないから
PHP側だけで処理できる事はPHPだけでやった方が楽ですよね
13年8月4日日曜日
Redisのpub/sub?
これもNode側の実装が楽だから
HTTPリクエスト処理するための何やかんや用意しなくてOK
JSONかわいいよJSON
13年8月4日日曜日
Nodeが送信?
Nodeは決まったフォーマットのJSONに従ってJSONを配信するだけ
つまり、かなり定型的な処理しか行わない
つまり、Nodeの実装が楽っ☆
13年8月4日日曜日
つまり
いかにNodeを触らなくて良いかを考えた構成になってます
Node大好きっ子ですが、メインがPHPなので複雑にしたくなかったのです
13年8月4日日曜日
PHP/Node間のJSON
target_user_ids のWebsocketに対して data を送るだけですね
{
“target_user_ids”: [1,2,10,22],
“data”: {
“type”: “notice_message”,
“message”: “コメントがありました”,
“datetime”: “2013-08-03 15:12:32”
}
}
←配信対象のユーザーIDリスト
←配信データ
}
13年8月4日日曜日
target_user_ids ???
ユーザーIDはPHP側にしか持ってません
NodeJS側は会員認証も何も持ってないのだから
ユーザーID渡されてもどのWebsocketがどのユーザーIDか分からなくね?
13年8月4日日曜日
ユーザーIDをNodeと共有
というわけで、ここが肝なのですが、ユーザーIDをNode側に知らせる必要があります
方法は簡単、ユーザーIDを返すAPIをPHP側に用意するだけ!
ではイメージ図いってみましょう
13年8月4日日曜日
ユーザーID取得処理
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
2. HTML/JSを返す
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
4. Websocket接続確立
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
4. Websocket接続確立
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
Session Cookie
受け取ったSession
Cookieを添えて
4. Websocket接続確立
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
Session Cookie
受け取ったSession
Cookieを添えて
6.ユーザーIDを返す4. Websocket接続確立
13年8月4日日曜日
ユーザーID取得処理
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
Session Cookie
受け取ったSession
Cookieを添えて
6.ユーザーIDを返す4. Websocket接続確立
7.Websocketと
ユーザーIDを紐付ける
13年8月4日日曜日
ポイントは
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
Session Cookie
受け取ったSession
Cookieを添えて
6.ユーザーIDを返す4. Websocket接続確立
7.Websocketと
ユーザーIDを紐付ける
13年8月4日日曜日
ポイントは
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
Session Cookie
受け取ったSession
Cookieを添えて
6.ユーザーIDを返す4. Websocket接続確立
7.Websocketと
ユーザーIDを紐付ける
Websocketコネクション時の
Handshakeの時に
PHP側のSessionCookieが送られる
13年8月4日日曜日
ポイントは
1.ページを開く(GETリクエスト)
3. Websocketを繋ぐ(リクエスト)
2. HTML/JSを返す
Session Cookie
SessionCookieが同時に送られる
5.NodeからPHPにHTTPリクエスト
Session Cookie
受け取ったSession
Cookieを添えて
6.ユーザーIDを返す4. Websocket接続確立
7.Websocketと
ユーザーIDを紐付ける
SessionCookieを含めてPHPにリクエスト
つまり、PHP的にはユーザーからのリクエストと一緒
13年8月4日日曜日
Nodeがユーザーになりきれる
Node側がユーザーを偽装する事ができますね!
PHP側がリクエストユーザーの、ユーザーIDを返すAPIを用意すればOK
これで、WebsocketにPHP側のユーザーIDを紐付ける事ができます
13年8月4日日曜日
ユーザーID偽装のために
PHP側のSessionCookieをNode側に送信する必要があります
Cookieの送信ポリシー的に同じドメインである必要があります
なので、ポートは違っていいですが、NodeもPHPも同ドメインで運用してください
13年8月4日日曜日
というわけで
省エネでPHPからPUSH通知を送る事ができます
例としてPHPあげましたが、PerlでもRubyでも同じ事はできるはずです
13年8月4日日曜日
最後に
この資料作るきっかけになった投稿をくれた方々に感謝です
https://groups.google.com/forum/#!topic/nodejs_jp/gU2347-33PQ
簡単なサンプル(通知ではなくてチャットですが)も作りましたのでよろしければ
https://github.com/takyam-git/phpchat_example/
13年8月4日日曜日
ありがとうございました
ご連絡は @takyam までぜひぜひ∼
ブログも見てね∼
http://new.takyam.com/
13年8月4日日曜日

Mais conteúdo relacionado

Mais procurados

Eclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtipsEclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtips
Hiroki Kondo
 
エンタープライズITでのOpenID Connect利用ガイドライン
エンタープライズITでのOpenID Connect利用ガイドラインエンタープライズITでのOpenID Connect利用ガイドライン
エンタープライズITでのOpenID Connect利用ガイドライン
Tatsuo Kudo
 

Mais procurados (20)

Flutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたものFlutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたもの
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
 
継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する
 
Blenderで和柄をつくるお話
Blenderで和柄をつくるお話Blenderで和柄をつくるお話
Blenderで和柄をつくるお話
 
Apiドキュメンテーションツールを使いこなす【api blueprint編】
Apiドキュメンテーションツールを使いこなす【api blueprint編】Apiドキュメンテーションツールを使いこなす【api blueprint編】
Apiドキュメンテーションツールを使いこなす【api blueprint編】
 
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューションOAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
 
Web API: The Good Parts 落穂ひろい
Web API: The Good Parts 落穂ひろいWeb API: The Good Parts 落穂ひろい
Web API: The Good Parts 落穂ひろい
 
Vue.js で XSS
Vue.js で XSSVue.js で XSS
Vue.js で XSS
 
WebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample updateWebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample update
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
Eclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtipsEclipseデバッガを活用するための31のtips
Eclipseデバッガを活用するための31のtips
 
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
 
WebRTCの技術解説 公開版
WebRTCの技術解説 公開版WebRTCの技術解説 公開版
WebRTCの技術解説 公開版
 
Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析
 
エンタープライズITでのOpenID Connect利用ガイドライン
エンタープライズITでのOpenID Connect利用ガイドラインエンタープライズITでのOpenID Connect利用ガイドライン
エンタープライズITでのOpenID Connect利用ガイドライン
 
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃうフレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
フレームワークも使っていないWebアプリをLaravel+PWAでモバイルアプリっぽくしてみちゃう
 
OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護
 
なぜOpenID Connectが必要となったのか、その歴史的背景
なぜOpenID Connectが必要となったのか、その歴史的背景なぜOpenID Connectが必要となったのか、その歴史的背景
なぜOpenID Connectが必要となったのか、その歴史的背景
 
Android BLEのつらみを予防するTips
Android BLEのつらみを予防するTipsAndroid BLEのつらみを予防するTips
Android BLEのつらみを予防するTips
 
僕らのデータ同期プラクティス
僕らのデータ同期プラクティス僕らのデータ同期プラクティス
僕らのデータ同期プラクティス
 

Destaque

Integrating Node.js with PHP
Integrating Node.js with PHPIntegrating Node.js with PHP
Integrating Node.js with PHP
Lee Boynton
 
Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)
VOYAGE GROUP
 

Destaque (20)

PHP + Node.js
PHP + Node.jsPHP + Node.js
PHP + Node.js
 
Integrating Node.js with PHP
Integrating Node.js with PHPIntegrating Node.js with PHP
Integrating Node.js with PHP
 
PHP and node.js Together
PHP and node.js TogetherPHP and node.js Together
PHP and node.js Together
 
Scaling and securing node.js apps
Scaling and securing node.js appsScaling and securing node.js apps
Scaling and securing node.js apps
 
Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)
 
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP Application
 
Nodejs
NodejsNodejs
Nodejs
 
Unit testing in PHP
Unit testing in PHPUnit testing in PHP
Unit testing in PHP
 
Nodejs and mongodb
Nodejs and mongodbNodejs and mongodb
Nodejs and mongodb
 
WiFi によるモダン・ネットストーキング
WiFi によるモダン・ネットストーキングWiFi によるモダン・ネットストーキング
WiFi によるモダン・ネットストーキング
 
Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)Phpではじめるオブジェクト指向(公開用)
Phpではじめるオブジェクト指向(公開用)
 
Laravelの認証について
Laravelの認証についてLaravelの認証について
Laravelの認証について
 
Spring Framework / Boot / Data 徹底活用 〜Spring Data Redis 編〜
Spring Framework / Boot / Data 徹底活用  〜Spring Data Redis 編〜Spring Framework / Boot / Data 徹底活用  〜Spring Data Redis 編〜
Spring Framework / Boot / Data 徹底活用 〜Spring Data Redis 編〜
 
3 tips of Laravel
3 tips of Laravel3 tips of Laravel
3 tips of Laravel
 
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
 
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
 
OpenStack マルチノード環境構築
OpenStack マルチノード環境構築OpenStack マルチノード環境構築
OpenStack マルチノード環境構築
 
LaravelアプリケーションをSeleniumでテストしてみた
LaravelアプリケーションをSeleniumでテストしてみたLaravelアプリケーションをSeleniumでテストしてみた
LaravelアプリケーションをSeleniumでテストしてみた
 
魔法少女 Laravel 2014
魔法少女 Laravel 2014魔法少女 Laravel 2014
魔法少女 Laravel 2014
 
PHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよPHP カンファレンス 2014 に行ってきたよ
PHP カンファレンス 2014 に行ってきたよ
 

Semelhante a PHP meets NodeJS

PHP-FPMとuWSGI——mod_php以外の選択肢を探る
PHP-FPMとuWSGI——mod_php以外の選択肢を探るPHP-FPMとuWSGI——mod_php以外の選択肢を探る
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
Yoshio Hanawa
 
Opauthライブラリによるtwitter,facebook認証について
Opauthライブラリによるtwitter,facebook認証についてOpauthライブラリによるtwitter,facebook認証について
Opauthライブラリによるtwitter,facebook認証について
松本 雄貴
 
まだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LT
まだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LTまだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LT
まだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LT
77web
 
MacRuby を使ってみました
MacRuby を使ってみましたMacRuby を使ってみました
MacRuby を使ってみました
Yoshiyuki MIYAGI
 
Introduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature EngineersIntroduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature Engineers
Takeshi Arabiki
 

Semelhante a PHP meets NodeJS (20)

PHP-FPMとuWSGI——mod_php以外の選択肢を探る
PHP-FPMとuWSGI——mod_php以外の選択肢を探るPHP-FPMとuWSGI——mod_php以外の選択肢を探る
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
 
Arduino を PHP で制御する
Arduino を PHP で制御するArduino を PHP で制御する
Arduino を PHP で制御する
 
NDS31 はじめてChrome App
NDS31 はじめてChrome AppNDS31 はじめてChrome App
NDS31 はじめてChrome App
 
20200129 cogbot lt
20200129 cogbot lt20200129 cogbot lt
20200129 cogbot lt
 
Opauthライブラリによるtwitter,facebook認証について
Opauthライブラリによるtwitter,facebook認証についてOpauthライブラリによるtwitter,facebook認証について
Opauthライブラリによるtwitter,facebook認証について
 
一六社ブログ-プラグイン作成入門
一六社ブログ-プラグイン作成入門一六社ブログ-プラグイン作成入門
一六社ブログ-プラグイン作成入門
 
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
初めての Raspberry pi 〜プラレールをunityの世界の中で走らせよう〜 (1)
 
まずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装についてまずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装について
 
PHP AV BINDING
PHP AV BINDINGPHP AV BINDING
PHP AV BINDING
 
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまでScala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまで
 
Php kansai-2013 lt-slide
Php kansai-2013 lt-slidePhp kansai-2013 lt-slide
Php kansai-2013 lt-slide
 
OAuth with OpenPNE3
OAuth with OpenPNE3OAuth with OpenPNE3
OAuth with OpenPNE3
 
あにみた!(PHPカンファレンス用資料)
あにみた!(PHPカンファレンス用資料)あにみた!(PHPカンファレンス用資料)
あにみた!(PHPカンファレンス用資料)
 
Web Driverでブラウザを操作する
Web Driverでブラウザを操作するWeb Driverでブラウザを操作する
Web Driverでブラウザを操作する
 
はじめてのWord pressプラグイン勉強会
はじめてのWord pressプラグイン勉強会はじめてのWord pressプラグイン勉強会
はじめてのWord pressプラグイン勉強会
 
まだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LT
まだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LTまだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LT
まだ技術ブログを始めてないPHPerのあなたへ。PHPカンファレンス関西2013 LT
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
 
コミュニティのある風景
コミュニティのある風景コミュニティのある風景
コミュニティのある風景
 
MacRuby を使ってみました
MacRuby を使ってみましたMacRuby を使ってみました
MacRuby を使ってみました
 
Introduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature EngineersIntroduction to Favmemo for Immature Engineers
Introduction to Favmemo for Immature Engineers
 

Último

Último (12)

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: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デバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: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...
 
論文紹介: 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
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

PHP meets NodeJS