Enviar pesquisa
Carregar
Perl 非同期プログラミング
•
30 gostaram
•
7,329 visualizações
L
lestrrat
Seguir
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 99
Recomendados
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
Shuichi Tsutsumi
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
Yoshifumi Kawai
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
T. Suwa
PHPの今とこれから2022
PHPの今とこれから2022
Rui Hirokawa
Create Development and Production Environments with Vagrant
Create Development and Production Environments with Vagrant
Brian Hogan
がんばれ PHP Fiber
がんばれ PHP Fiber
infinite_loop
機器人齊步走 mBlock5 mbot_ver8_探奇邱信仁
機器人齊步走 mBlock5 mbot_ver8_探奇邱信仁
信仁 邱
Boost.Preprocessorでプログラミングしましょう
Boost.Preprocessorでプログラミングしましょう
digitalghost
Recomendados
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
Shuichi Tsutsumi
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
Yoshifumi Kawai
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
T. Suwa
PHPの今とこれから2022
PHPの今とこれから2022
Rui Hirokawa
Create Development and Production Environments with Vagrant
Create Development and Production Environments with Vagrant
Brian Hogan
がんばれ PHP Fiber
がんばれ PHP Fiber
infinite_loop
機器人齊步走 mBlock5 mbot_ver8_探奇邱信仁
機器人齊步走 mBlock5 mbot_ver8_探奇邱信仁
信仁 邱
Boost.Preprocessorでプログラミングしましょう
Boost.Preprocessorでプログラミングしましょう
digitalghost
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
Tokoroten Nakayama
Integrity Protection for Embedded Systems
Integrity Protection for Embedded Systems
Samsung Open Source Group
使用 laravel 的前與後
使用 laravel 的前與後
Shengyou Fan
「ウチの事業部の商品をWebサイト・アプリで目立たせて!」私だけじゃなかった! 社内政治と落としどころの見つけ方
「ウチの事業部の商品をWebサイト・アプリで目立たせて!」私だけじゃなかった! 社内政治と落としどころの見つけ方
Yoshiki Hayama
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeNA
難読化PowerShell芸入門
難読化PowerShell芸入門
xztaityozx
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
DeNA
AnyObject – 自分が見落としていた、基本の話
AnyObject – 自分が見落としていた、基本の話
Tomohiro Kumagai
以用戶旅程地圖設計用戶體驗
以用戶旅程地圖設計用戶體驗
YI-LING HSIEH
リアクティブプログラミングとMVVMパターンについて
リアクティブプログラミングとMVVMパターンについて
Hidenori Takeshita
コルーチンの使い方
コルーチンの使い方
Naohiro Yoshikawa
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
えっ今日はハッキングしてもいいのか?(CTF Web入門)
えっ今日はハッキングしてもいいのか?(CTF Web入門)
otya mura
Sublime text 極速應用教學
Sublime text 極速應用教學
Amos Lee
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
CODE BLUE
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
やりなおせる Git 入門
やりなおせる Git 入門
Tomohiko Himura
OS入門
OS入門
Shuntaro Saiba
업무 기술 향상을 위한 스마트워크 실천 가이드
업무 기술 향상을 위한 스마트워크 실천 가이드
HwanJin 'David' Choi
Bapp Storeを調べてみたよ!
Bapp Storeを調べてみたよ!
zaki4649
Em synchrony について
Em synchrony について
Tomoya Kawanishi
軽量高機能webサーバーnginx
軽量高機能webサーバーnginx
ngi group.
Mais conteúdo relacionado
Mais procurados
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
Tokoroten Nakayama
Integrity Protection for Embedded Systems
Integrity Protection for Embedded Systems
Samsung Open Source Group
使用 laravel 的前與後
使用 laravel 的前與後
Shengyou Fan
「ウチの事業部の商品をWebサイト・アプリで目立たせて!」私だけじゃなかった! 社内政治と落としどころの見つけ方
「ウチの事業部の商品をWebサイト・アプリで目立たせて!」私だけじゃなかった! 社内政治と落としどころの見つけ方
Yoshiki Hayama
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeNA
難読化PowerShell芸入門
難読化PowerShell芸入門
xztaityozx
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
DeNA
AnyObject – 自分が見落としていた、基本の話
AnyObject – 自分が見落としていた、基本の話
Tomohiro Kumagai
以用戶旅程地圖設計用戶體驗
以用戶旅程地圖設計用戶體驗
YI-LING HSIEH
リアクティブプログラミングとMVVMパターンについて
リアクティブプログラミングとMVVMパターンについて
Hidenori Takeshita
コルーチンの使い方
コルーチンの使い方
Naohiro Yoshikawa
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
えっ今日はハッキングしてもいいのか?(CTF Web入門)
えっ今日はハッキングしてもいいのか?(CTF Web入門)
otya mura
Sublime text 極速應用教學
Sublime text 極速應用教學
Amos Lee
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
CODE BLUE
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
やりなおせる Git 入門
やりなおせる Git 入門
Tomohiko Himura
OS入門
OS入門
Shuntaro Saiba
업무 기술 향상을 위한 스마트워크 실천 가이드
업무 기술 향상을 위한 스마트워크 실천 가이드
HwanJin 'David' Choi
Bapp Storeを調べてみたよ!
Bapp Storeを調べてみたよ!
zaki4649
Mais procurados
(20)
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
Integrity Protection for Embedded Systems
Integrity Protection for Embedded Systems
使用 laravel 的前與後
使用 laravel 的前與後
「ウチの事業部の商品をWebサイト・アプリで目立たせて!」私だけじゃなかった! 社内政治と落としどころの見つけ方
「ウチの事業部の商品をWebサイト・アプリで目立たせて!」私だけじゃなかった! 社内政治と落としどころの見つけ方
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
難読化PowerShell芸入門
難読化PowerShell芸入門
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
AnyObject – 自分が見落としていた、基本の話
AnyObject – 自分が見落としていた、基本の話
以用戶旅程地圖設計用戶體驗
以用戶旅程地圖設計用戶體驗
リアクティブプログラミングとMVVMパターンについて
リアクティブプログラミングとMVVMパターンについて
コルーチンの使い方
コルーチンの使い方
TLS, HTTP/2演習
TLS, HTTP/2演習
えっ今日はハッキングしてもいいのか?(CTF Web入門)
えっ今日はハッキングしてもいいのか?(CTF Web入門)
Sublime text 極速應用教學
Sublime text 極速應用教學
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
インテルMEの秘密 - チップセットに隠されたコードと、それが一体何をするかを見出す方法 - by イゴール・スコチンスキー - Igor Skochinsky
C++ マルチスレッド 入門
C++ マルチスレッド 入門
やりなおせる Git 入門
やりなおせる Git 入門
OS入門
OS入門
업무 기술 향상을 위한 스마트워크 실천 가이드
업무 기술 향상을 위한 스마트워크 실천 가이드
Bapp Storeを調べてみたよ!
Bapp Storeを調べてみたよ!
Destaque
Em synchrony について
Em synchrony について
Tomoya Kawanishi
軽量高機能webサーバーnginx
軽量高機能webサーバーnginx
ngi group.
データベース屋がHyperledger Fabricを検証してみた
データベース屋がHyperledger Fabricを検証してみた
Hyperleger Tokyo Meetup
Using Dancer
Using Dancer
Yoshihiro Sasaki
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
goccy
理解したつもりになるGit入門
理解したつもりになるGit入門
Yoshihiro Sasaki
Plack::Request with Encoding
Plack::Request with Encoding
moznion
Currying in perl
Currying in perl
Masahiro Honma
テーマ「最適化」
テーマ「最適化」
technocat
Google trends to_irc
Google trends to_irc
rarere
Games::* - Perlで 「ゲーム」しよう #hokkaidopm
Games::* - Perlで 「ゲーム」しよう #hokkaidopm
鉄次 尾形
Takao.mt 2013
Takao.mt 2013
moznion
Use Carton
Use Carton
Yoshihiro Sasaki
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
moznion
YAPCレポートの舞台裏
YAPCレポートの舞台裏
Masahiro Honma
Asset Pipeline for Perl
Asset Pipeline for Perl
Yoshihiro Sasaki
PHPカンファレンス北海道_20160416
PHPカンファレンス北海道_20160416
Yoshihiro Sasaki
YAPC::AsiaとHokkaido.pm
YAPC::AsiaとHokkaido.pm
Yoshihiro Sasaki
"Ops Tools with Perl" 2012/05/12 Hokkaido.pm
"Ops Tools with Perl" 2012/05/12 Hokkaido.pm
Ryosuke IWANAGA
テーマ「なんでもないようなこと」
テーマ「なんでもないようなこと」
technocat
Destaque
(20)
Em synchrony について
Em synchrony について
軽量高機能webサーバーnginx
軽量高機能webサーバーnginx
データベース屋がHyperledger Fabricを検証してみた
データベース屋がHyperledger Fabricを検証してみた
Using Dancer
Using Dancer
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
理解したつもりになるGit入門
理解したつもりになるGit入門
Plack::Request with Encoding
Plack::Request with Encoding
Currying in perl
Currying in perl
テーマ「最適化」
テーマ「最適化」
Google trends to_irc
Google trends to_irc
Games::* - Perlで 「ゲーム」しよう #hokkaidopm
Games::* - Perlで 「ゲーム」しよう #hokkaidopm
Takao.mt 2013
Takao.mt 2013
Use Carton
Use Carton
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
YAPC::Asia 2013 - CPAN Testers Reports の情報を上手に使う
YAPCレポートの舞台裏
YAPCレポートの舞台裏
Asset Pipeline for Perl
Asset Pipeline for Perl
PHPカンファレンス北海道_20160416
PHPカンファレンス北海道_20160416
YAPC::AsiaとHokkaido.pm
YAPC::AsiaとHokkaido.pm
"Ops Tools with Perl" 2012/05/12 Hokkaido.pm
"Ops Tools with Perl" 2012/05/12 Hokkaido.pm
テーマ「なんでもないようなこと」
テーマ「なんでもないようなこと」
Semelhante a Perl 非同期プログラミング
ATSプログラミングチュートリアル
ATSプログラミングチュートリアル
Kiwamu Okabe
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
Arata Fujimura
サーバー実装いろいろ
サーバー実装いろいろ
kjwtnb
Swift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswift
Tomohiro Kumagai
Hack/HHVM 入門
Hack/HHVM 入門
y-uti
Cinnamon - simple deploy tool
Cinnamon - simple deploy tool
Yuki Shibazaki
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia
鉄次 尾形
詳説ぺちぺち
詳説ぺちぺち
do_aki
Development app-with-elixir
Development app-with-elixir
k1complete
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
WCO2012「PHP教室」
WCO2012「PHP教室」
Takuma Morikawa
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
kwatch
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistrano
kumachang_LL
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発
Kentaro Ohkouchi
最近つくったrecent_zombies - Perlで始めるTwitterタイムライン分析
最近つくったrecent_zombies - Perlで始めるTwitterタイムライン分析
Masahiro NAKAYAMA
Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~
Masahito Zembutsu
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
Sotaro Karasawa
Local php-100828 2
Local php-100828 2
Akio Ishida
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数
Wataru Terada
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
hiro345
Semelhante a Perl 非同期プログラミング
(20)
ATSプログラミングチュートリアル
ATSプログラミングチュートリアル
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
サーバー実装いろいろ
サーバー実装いろいろ
Swift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswift
Hack/HHVM 入門
Hack/HHVM 入門
Cinnamon - simple deploy tool
Cinnamon - simple deploy tool
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia
詳説ぺちぺち
詳説ぺちぺち
Development app-with-elixir
Development app-with-elixir
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
WCO2012「PHP教室」
WCO2012「PHP教室」
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
Itcamp長崎2012 capistrano
Itcamp長崎2012 capistrano
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発
最近つくったrecent_zombies - Perlで始めるTwitterタイムライン分析
最近つくったrecent_zombies - Perlで始めるTwitterタイムライン分析
Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
Local php-100828 2
Local php-100828 2
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
Mais de lestrrat
Future of Tech "Conferences"
Future of Tech "Conferences"
lestrrat
ONIの世界 - ONIcon 2019 Winter
ONIの世界 - ONIcon 2019 Winter
lestrrat
Slicing, Dicing, And Linting OpenAPI
Slicing, Dicing, And Linting OpenAPI
lestrrat
Oxygen Not Includedをやるべき4つの理由
Oxygen Not Includedをやるべき4つの理由
lestrrat
Rejectcon 2018
Rejectcon 2018
lestrrat
Builderscon tokyo 2018 speaker dinner
Builderscon tokyo 2018 speaker dinner
lestrrat
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
lestrrat
Google container builderと友だちになるまで
Google container builderと友だちになるまで
lestrrat
筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション
lestrrat
iosdc 2017
iosdc 2017
lestrrat
シュラスコの食べ方 超入門
シュラスコの食べ方 超入門
lestrrat
OSSの敵になるのもいいじゃない
OSSの敵になるのもいいじゃない
lestrrat
Coding in the context era
Coding in the context era
lestrrat
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)
lestrrat
Opening: builderscon tokyo 2016
Opening: builderscon tokyo 2016
lestrrat
Kubernetes in 20 minutes - HDE Monthly Technical Session 24
Kubernetes in 20 minutes - HDE Monthly Technical Session 24
lestrrat
小規模でもGKE - DevFest Tokyo 2016
小規模でもGKE - DevFest Tokyo 2016
lestrrat
いまさら聞けないselectあれこれ
いまさら聞けないselectあれこれ
lestrrat
Don't Use Reflect - Go 1.7 release party 2016
Don't Use Reflect - Go 1.7 release party 2016
lestrrat
How To Think In Go
How To Think In Go
lestrrat
Mais de lestrrat
(20)
Future of Tech "Conferences"
Future of Tech "Conferences"
ONIの世界 - ONIcon 2019 Winter
ONIの世界 - ONIcon 2019 Winter
Slicing, Dicing, And Linting OpenAPI
Slicing, Dicing, And Linting OpenAPI
Oxygen Not Includedをやるべき4つの理由
Oxygen Not Includedをやるべき4つの理由
Rejectcon 2018
Rejectcon 2018
Builderscon tokyo 2018 speaker dinner
Builderscon tokyo 2018 speaker dinner
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
Google container builderと友だちになるまで
Google container builderと友だちになるまで
筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション
iosdc 2017
iosdc 2017
シュラスコの食べ方 超入門
シュラスコの食べ方 超入門
OSSの敵になるのもいいじゃない
OSSの敵になるのもいいじゃない
Coding in the context era
Coding in the context era
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)
Opening: builderscon tokyo 2016
Opening: builderscon tokyo 2016
Kubernetes in 20 minutes - HDE Monthly Technical Session 24
Kubernetes in 20 minutes - HDE Monthly Technical Session 24
小規模でもGKE - DevFest Tokyo 2016
小規模でもGKE - DevFest Tokyo 2016
いまさら聞けないselectあれこれ
いまさら聞けないselectあれこれ
Don't Use Reflect - Go 1.7 release party 2016
Don't Use Reflect - Go 1.7 release party 2016
How To Think In Go
How To Think In Go
Último
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
Último
(11)
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
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...
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
Perl 非同期プログラミング
1.
非同期プログラミング
with Perl 2010/08/07 Japan Perl Association 代表理事 株式会社ライブドア 牧 大 輔 (@lestrrat)
2.
さっそくですが 「複数URLに接続して HTTP GETするコード」
3.
普通の書き方 use strict; use LWP::UserAgent; my
@urls = qw( http://www.livedoor.com/ http://www.dena.jp/ http://mixi.jp/ http://www.gaiax.co.jp/ ); my $ua = LWP::UserAgent->new(); foreach my $url (@urls) { my $res = $ua->get( $url ); ... }
4.
ポイント •シンプル! •命令を順番に処理 •ソケットからの読み込みに時間がか かると次の処理に進めない
5.
理想 •とりあえず可能な限りのホストに接続 •接続できたらとりあえずHTTPリクエ スト発行 •読み込み可能なところ(先に返信が来 たところから)読み込む
6.
read •read(2) は読み込めるデータが到着 するまでブロックする •一個だけ遅いホストがあると全体が 遅くなる :/
7.
効率よくread
8.
効率よくread
ソケット1
9.
効率よくread
ソケット1 ソケット2
10.
効率よくread
ソケット1 ソケット2 ソケット3
11.
効率よくread
読める? ソケット1 (データ来た?) ソケット2 ソケット3
12.
効率よくread
ソケット1 読める? ソケット2 (データ来た?) ソケット3
13.
効率よくread
ソケット1 ソケット2 読める? ソケット3 (データ来た?)
14.
効率よくread
ソケット1 ソケット2 読める? 来た! ソケット3 (データ来た?) 読み込め!
15.
効率よくread
ソケット1 ソケット2 読める? (データ来た?)
16.
効率よくread
読める? ソケット1 (データ来た?) ソケット2
17.
効率よくread
読める? 来た! ソケット1 (データ来た?) 読み込め! ソケット2
18.
効率よくread
読める? (データ来た?) ソケット2
19.
効率よくread
読める? ソケット2 (データ来た?)
20.
効率よくread
来た! 読める? ソケット2 読み込め! (データ来た?)
21.
効率よくread
読める? (データ来た?)
22.
効率よくread
23.
イベント駆動
24.
メインループ (プログラムの進行) を他人に任せる
25.
イベントループ
= while ( $still_alive ) { ... 処理 ... }
26.
ループから呼ばれる コールバックを登録する
27.
イベントループ
キュー コールバック 実行! コールバック コールバック コールバック このイベントを待っている イベント発生! コールバックがあるか確認
28.
イベント?非同期? • イベント駆動の仕組みの中でI/O処理→ファイル ハンドル等を「非同期モード」にする • イベント駆動のメリットを生かすにはI/O等ブロッ クする処理が多いときに使う •よって「非同期プログラミング」と「イベント駆動 プログラミング」は同義で使うことが多い
29.
AnyEvent
30.
なんで?
31.
POE Danga::Socket IO::Async Event Glib Qt
32.
お互いに 互換性無し
33.
AnyEvent 非同期フレームワークのラッパ
34.
汎用API
これだけ覚えていればOK AnyEvent デフォルト Event その他 Glib POE EV
35.
standard API++
36.
混ぜることもできる 例:POE+EV
37.
新規に書くなら AnyEventでおk
38.
先にお知らせ
39.
名前空間
40.
AnyEvent
vs AE
41.
スタイルの違いだけ AnyEvent->timer( after => $after, interval
=> $interval, cb => sub { .... } ); AE::timer $after, $interval, sub { ... };
42.
ここではAEを 使います
43.
基本コンポーネント •ループ •ウォッチャー •コンディション変数 •ガード
44.
ウォッチャー
45.
AnyEventコンポーネント
IO コールバック 実行! タイマー コールバック 「ウォッチャー」
46.
AnyEventを使う = ウォッチャーの管理をする
47.
Timer my $timer; $timer =
AE::timer 0, 1, sub { warn “timer invoked”; undef $timer; };
48.
I/O my $io; $io =
AE::io $fh, $read_or_write, sub { .... # $fhから読んだり、$fhに書いたり undef $io; }; 注意:$fhは非同期モードに指定しておく
49.
fh_nonblocking use AnyEvent::Util qw(fh_nonblocking); my
$fh = get_socket(...); fh_nonblocking $fh, 1; my $io; $io = AE::io $fh, 0, sub { ... };
50.
シグナル my $sig; $sig =
AE::signal "TERM", sub { ... undef $sig; };
51.
子プロセス my $child; $child =
AE::child $pid, sub { ... undef $child; };
52.
待機状態 my $idle; $idle =
AE::idle sub { ... undef $idle; };
53.
なにこれ? my $timer; $timer =
AE::timer 0, 1, sub { warn “timer invoked”; undef $timer; };
54.
Perl: スコープが終わると メモリが解放される
55.
AnyEvent: ウォッチャーが解放されると イベントがキャンセルされる
56.
NG { my $timer =
AE::timer 0, 1, sub { warn “timer invoked”; # 走らない! }; } # ここにたどり着いた時点で $timerが解放 スコープ終了。リソース解放され $timerも解放されてしまう
57.
Good my $timer; $timer =
AE::timer 0, 1, sub { ... # どこかで $timer を使うコード undef $timer; # 明示的に解放しないと消えない } クロージャで使用されているため 明示的に解放されるまで生き残る
58.
コンディション変数 • いくつかの違う機能が同居してる • ちょっと混乱しやすい •
が、重要 • 以降 「condvar」と表記
59.
1. 何かを待つ •現処理の流れを「止める」 •「知らせ」を待つ •スクリプトレベルでは「ループに制御 を渡す」
60.
#!perl use strict; use AnyEvent; my
$cv = AE::cv { print "Endn"; }; my $timer; $timer = AE::timer 10, 0, sub { print "Waited 10 seconds!n"; undef $timer; $cv->send; }; $cv->recv;
61.
#!perl use strict; use AnyEvent; my
$cv = AE::cv { print "Endn"; }; my $timer; $timer = AE::timer 10, 0, sub { print "Waited 10 seconds!n"; undef $timer; $cv->send; }; $cv->recv; 知らせ が来るまでこの次にはいかない (→イベントループが起動)
62.
#!perl use strict; use AnyEvent; my
$cv = AE::cv { print "Endn"; }; my $timer; $timer = AE::timer 10, 0, sub { print "Waited 10 seconds!n"; undef $timer; $cv->send; タイマーが起動したら 知らせ を送る }; $cv->recv;
63.
#!perl use strict; use AnyEvent; my
$cv = AE::cv { print "Endn"; }; my $timer; $timer = AE::timer 10, 0, sub { print "Waited 10 seconds!n"; undef $timer; $cv->send; }; $cv->recv; 知らせ が来たら次の処理へ (→スクリプト終了)
64.
#!perl use strict; use AnyEvent; my
$cv = AE::cv { print "Endn"; }; my $timer; $timer = AE::timer 10, 0, sub { print "Waited 10 seconds!n"; undef $timer; $cv->send; }; $cv->recv;
65.
#!perl use strict; use AnyEvent; my
$timer; $timer = AE::timer 10, 0, sub { print "Waited 10 seconds!n"; undef $timer; };
66.
#!perl use strict; use AnyEvent; my
$timer; $timer = AE::timer 10, 0, sub { print "Waited 10 seconds!n"; undef $timer; }; 何も「待つ」ことがなかったので イベントループも起動しない
67.
#!perl use strict; use AnyEvent; my
$timer; $timer = AE::timer 10, 0, sub { print "Waited 10 seconds!n"; undef $timer; };
68.
2. 複数の知らせを待つ •フラグをあげる→落とす •一つでもフラグがあがっていれば待つ •フラグが全部落ちるとお知らせ
69.
#!perl use strict; use AnyEvent; my
@delay = (1, 2, 5, 10); my $cv = AE::cv { print "All timers are donen" }; foreach my $delay (@delay) { my $timer; $cv->begin; $timer = AE::timer $delay, 0, sub { print "Timer for delay = $delayn"; undef $timer; $cv->end; }; } $cv->recv;
70.
#!perl use strict; use AnyEvent; my
@delay = (1, 2, 5, 10); my $cv = AE::cv { print "All timers are donen" }; foreach my $delay (@delay) { my $timer; $cv->begin; フラグをあげる $timer = AE::timer $delay, 0, sub { print "Timer for delay = $delayn"; undef $timer; $cv->end; }; } $cv->recv;
71.
#!perl use strict; use AnyEvent; my
@delay = (1, 2, 5, 10); my $cv = AE::cv { print "All timers are donen" }; foreach my $delay (@delay) { my $timer; $cv->begin; $timer = AE::timer $delay, 0, sub { print "Timer for delay = $delayn"; undef $timer; $cv->end; フラグを落とす }; } $cv->recv;
72.
#!perl use strict; use AnyEvent; my
@delay = (1, 2, 5, 10); my $cv = AE::cv { print "All timers are donen" }; foreach my $delay (@delay) { my $timer; $cv->begin; $timer = AE::timer $delay, 0, sub { print "Timer for delay = $delayn"; undef $timer; $cv->end; }; } $cv->recv; フラグが全部落ちたらお知らせ
73.
#!perl use strict; use AnyEvent; my
@delay = (1, 2, 5, 10); my $cv = AE::cv { print "All timers are donen" }; foreach my $delay (@delay) { my $timer; $cv->begin; $timer = AE::timer $delay, 0, sub { print "Timer for delay = $delayn"; undef $timer; $cv->end; }; } $cv->recv;
74.
3. 処理終了時の
コールバック •何か戻り値が必要な時処理結果を待つ •ウォッチャーを作る関数に知らせて欲 しいcondvarを渡す
75.
#!perl use strict; use AnyEvent; sub
add { my ($x, $y, $cv) = @_; my $timer; $timer = AE::timer 5, 0, sub { $cv->send( $x + $y ); undef $timer; }; } my $cv = AE::cv { my $cv = shift; my ($result) = $cv->recv; print "Result = $resultn"; }; add( 3, 2, $cv ); $cv->recv;
76.
#!perl use strict; use AnyEvent; sub
add { my ($x, $y, $cv) = @_; my $timer; $timer = AE::timer 5, 0, sub { $cv->send( $x + $y ); undef $timer; }; } my $cv = AE::cv { my $cv = shift; my ($result) = $cv->recv; print "Result = $resultn"; }; add( 3, 2, $cv ); 結果を受け取るコールバックを渡す $cv->recv;
77.
#!perl use strict; use AnyEvent; sub
add { my ($x, $y, $cv) = @_; my $timer; $timer = AE::timer 5, 0, sub { $cv->send( $x + $y ); 計算結果をcondvarに渡す undef $timer; }; } my $cv = AE::cv { my $cv = shift; my ($result) = $cv->recv; print "Result = $resultn"; }; add( 3, 2, $cv ); $cv->recv;
78.
#!perl use strict; use AnyEvent; sub
add { my ($x, $y, $cv) = @_; my $timer; $timer = AE::timer 5, 0, sub { $cv->send( $x + $y ); undef $timer; }; } my $cv = AE::cv { my $cv = shift; my ($result) = $cv->recv; 結果を受け取る print "Result = $resultn"; }; add( 3, 2, $cv ); $cv->recv;
79.
#!perl use strict; use AnyEvent; sub
add { my ($x, $y, $cv) = @_; my $timer; $timer = AE::timer 5, 0, sub { $cv->send( $x + $y ); undef $timer; }; } my $cv = AE::cv { my $cv = shift; my ($result) = $cv->recv; print "Result = $resultn"; }; add( 3, 2, $cv ); $cv->recv;
80.
基本はこれだけ •ウォッチャーとcondvarだけで基本 的に全てまかなえる •実際にはこれらを使った高レベルライ ブラリを使う
81.
AnyEventで 「複数URLに接続して HTTP GETするコード」
82.
AnyEvent::HTTP
83.
use strict; use AnyEvent; use
AnyEvent::HTTP; my @urls = qw( http://www.livedoor.com/ http://www.dena.jp/ http://mixi.jp/ http://www.gaiax.co.jp/ ); my $cv = AE::cv { print "Fetched all urls!n"; }; my $guard; foreach my $url (@urls) { $cv->begin; $guard = http_get $url, sub { print "Got $urln"; undef $guard; $cv->end; } } $cv->recv;
84.
以上! •万が一どれかが遅くても、他のURL は先に処理される
85.
ライブラリ AnyEvent::Twitter
AnyEvent::Memcached AnyEvent::FriendFeed::Realtime AnyEvent::Twitter::Stream AnyEvent::ReverseHTTP AnyEvent::HTTP::MXHR AnyEvent::CouchDB AnyEvent::SuperFeedr AnyEvent::AIO AnyEvent::BDB AnyEvent::DNS AnyEvent::Beanstalk AnyEvent::DBI AnyEvent::SNMP AnyEvent::MP AnyEvent::Gearman AnyEvent::XMPP Cache::Memcached::AnyEvent
86.
Twiggy Plack用非同期HTTPサーバー
87.
1 スレッド! 複数接続高速処理
88.
plackup -s Twiggy
...
89.
ちょっとずつレスポンス use strict; use AnyEvent; sub
{ my $env = shift; return sub { my $start_response = shift; my $writer = $start_response->( [ 200, [ "Content-Type" => "text/plain" ] ]); my $count = 1; my $t; $t = AE::timer 2, 2, sub { $writer->write( ($count * 2) . "秒たったよ!n"); if ($count++ == 5) { undef $t; $writer->close; } }; } }
90.
用途
非同期サーバー •接続後切断しない or •何らかのイベント待っている •いつ来るかわからないデー •メッセージキュー、速いか遅 タを待っている いかわからないサービス等
91.
プロキシ •外部サーバーと連携するサービス •サーバーの性能を自分でコントロールできな
い場合など •某SNSとか某SNSとか
92.
イベントサーバー •ブラウザゲーム •複数のクライアントが同時にイベント を共有する場合など
93.
注意 •「やりたいから」非同期にすると失敗 する •「必要があるから」使うべき •非同期コードは難しくなる
94.
非同期にする条件 • リアルタイム性が重要
• いつ起こるか分からない •ポーリングではリクエスト回数が多すぎる • I/O待ちが多い •データを常時送り続けているのは x •待ち時間が長いとメリットがある
95.
非同期にしない理由 •コードが複雑になる •コードが複雑になる •コードが複雑になる •コードが複雑になる •コードが複雑になる
96.
必要な時だけ使う =効果絶大
97.
98.
Questions?
99.
ご静聴ありがとう ございました
Notas do Editor
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n