Enviar pesquisa
Carregar
Ruby1.9のfiberのかっこいい使い方
•
Transferir como PPTX, PDF
•
10 gostaram
•
2,679 visualizações
Kindai University
Seguir
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 23
Baixar agora
Recomendados
Ruby講座一回目
Ruby講座一回目
Masayuki Matsumoto
Ruby講座一回目
Ruby講座一回目
Masayuki Matsumoto
Start!! Ruby
Start!! Ruby
mitim
ランダム・シャッフル
ランダム・シャッフル
Maruyama Tetsutaro
Ruby1.9のfiberのかっこよくつかおう
Ruby1.9のfiberのかっこよくつかおう
Kindai University
I Pv6 Service Deployment Guideline
I Pv6 Service Deployment Guideline
guestfcd0535
Ruby 1.9 Fibers
Ruby 1.9 Fibers
Kevin Ball
new Objctive-C literal syntax
new Objctive-C literal syntax
Wataru Kimura
Recomendados
Ruby講座一回目
Ruby講座一回目
Masayuki Matsumoto
Ruby講座一回目
Ruby講座一回目
Masayuki Matsumoto
Start!! Ruby
Start!! Ruby
mitim
ランダム・シャッフル
ランダム・シャッフル
Maruyama Tetsutaro
Ruby1.9のfiberのかっこよくつかおう
Ruby1.9のfiberのかっこよくつかおう
Kindai University
I Pv6 Service Deployment Guideline
I Pv6 Service Deployment Guideline
guestfcd0535
Ruby 1.9 Fibers
Ruby 1.9 Fibers
Kevin Ball
new Objctive-C literal syntax
new Objctive-C literal syntax
Wataru Kimura
これからはじめるCoda2とSublime Text 2
これからはじめるCoda2とSublime Text 2
masaaki komori
Next Generation Web Application Architecture
Next Generation Web Application Architecture
Koji SHIMADA
Sinatraのススメ
Sinatraのススメ
@odailly_jp Odai
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
Masahiro Nagano
Rubyはとても「人間的」
Rubyはとても「人間的」
Kazuhiro Serizawa
本格的に始めるzsh
本格的に始めるzsh
Hideaki Miyake
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
Kunihiro TANAKA
プログラマとして仕事をするために勉強すること
プログラマとして仕事をするために勉強すること
なおき きしだ
Project Lambdaの基礎
Project Lambdaの基礎
Yuichi Sakuraba
受託開発時におけるAWSクラウド活用術
受託開発時におけるAWSクラウド活用術
Hiroshi Koyama
Code as data as code.
Code as data as code.
Mike Fogus
ARC環境で メモリリークを起こす 7つの方法
ARC環境で メモリリークを起こす 7つの方法
ushiostarfish _
ES6 at PayPal
ES6 at PayPal
Jamund Ferguson
Eclipse活用術
Eclipse活用術
Masahiro Wakame
Storm Anatomy
Storm Anatomy
Eiichiro Uchiumi
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Teppei Sato
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Naotoshi Seo
ChefConf 2013: Beginner Chef Antipatterns
ChefConf 2013: Beginner Chef Antipatterns
Julian Dunn
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまで
Hideaki Miyake
Build Your Own SaaS using Docker
Build Your Own SaaS using Docker
Julien Barbier
Blockchain and Virtual Currency- Technical issues -
Blockchain and Virtual Currency- Technical issues -
Kindai University
Gbec finance and blockchain
Gbec finance and blockchain
Kindai University
Mais conteúdo relacionado
Destaque
これからはじめるCoda2とSublime Text 2
これからはじめるCoda2とSublime Text 2
masaaki komori
Next Generation Web Application Architecture
Next Generation Web Application Architecture
Koji SHIMADA
Sinatraのススメ
Sinatraのススメ
@odailly_jp Odai
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
Masahiro Nagano
Rubyはとても「人間的」
Rubyはとても「人間的」
Kazuhiro Serizawa
本格的に始めるzsh
本格的に始めるzsh
Hideaki Miyake
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
Kunihiro TANAKA
プログラマとして仕事をするために勉強すること
プログラマとして仕事をするために勉強すること
なおき きしだ
Project Lambdaの基礎
Project Lambdaの基礎
Yuichi Sakuraba
受託開発時におけるAWSクラウド活用術
受託開発時におけるAWSクラウド活用術
Hiroshi Koyama
Code as data as code.
Code as data as code.
Mike Fogus
ARC環境で メモリリークを起こす 7つの方法
ARC環境で メモリリークを起こす 7つの方法
ushiostarfish _
ES6 at PayPal
ES6 at PayPal
Jamund Ferguson
Eclipse活用術
Eclipse活用術
Masahiro Wakame
Storm Anatomy
Storm Anatomy
Eiichiro Uchiumi
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Teppei Sato
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Naotoshi Seo
ChefConf 2013: Beginner Chef Antipatterns
ChefConf 2013: Beginner Chef Antipatterns
Julian Dunn
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまで
Hideaki Miyake
Build Your Own SaaS using Docker
Build Your Own SaaS using Docker
Julien Barbier
Destaque
(20)
これからはじめるCoda2とSublime Text 2
これからはじめるCoda2とSublime Text 2
Next Generation Web Application Architecture
Next Generation Web Application Architecture
Sinatraのススメ
Sinatraのススメ
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
Rubyはとても「人間的」
Rubyはとても「人間的」
本格的に始めるzsh
本格的に始めるzsh
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
プログラマとして仕事をするために勉強すること
プログラマとして仕事をするために勉強すること
Project Lambdaの基礎
Project Lambdaの基礎
受託開発時におけるAWSクラウド活用術
受託開発時におけるAWSクラウド活用術
Code as data as code.
Code as data as code.
ARC環境で メモリリークを起こす 7つの方法
ARC環境で メモリリークを起こす 7つの方法
ES6 at PayPal
ES6 at PayPal
Eclipse活用術
Eclipse活用術
Storm Anatomy
Storm Anatomy
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Mobage を支える Ruby の技術 ~ 複数DB編 ~
ChefConf 2013: Beginner Chef Antipatterns
ChefConf 2013: Beginner Chef Antipatterns
Scala 初めての人が Heroku で Web アプリを公開するまで
Scala 初めての人が Heroku で Web アプリを公開するまで
Build Your Own SaaS using Docker
Build Your Own SaaS using Docker
Mais de Kindai University
Blockchain and Virtual Currency- Technical issues -
Blockchain and Virtual Currency- Technical issues -
Kindai University
Gbec finance and blockchain
Gbec finance and blockchain
Kindai University
Blockchian definition
Blockchian definition
Kindai University
Blockchain economy
Blockchain economy
Kindai University
ブロックチェーンエコノミーのコンセンサスとガバナンス
ブロックチェーンエコノミーのコンセンサスとガバナンス
Kindai University
福岡ブロックチェーン・エコノミー勉強会セミナー
福岡ブロックチェーン・エコノミー勉強会セミナー
Kindai University
福岡ブロックチェーン・エコノミー勉強会公開版
福岡ブロックチェーン・エコノミー勉強会公開版
Kindai University
ブロックチェーンによるデータガバナンスと社会基盤の再構築
ブロックチェーンによるデータガバナンスと社会基盤の再構築
Kindai University
やっぱりブロックチェインより仮想通貨
やっぱりブロックチェインより仮想通貨
Kindai University
FinTechと金融サービスの将来像
FinTechと金融サービスの将来像
Kindai University
Congre chain説明資料
Congre chain説明資料
Kindai University
仮想通貨のブロックチェイン技術によるFinTech
仮想通貨のブロックチェイン技術によるFinTech
Kindai University
ビットコイン福岡勉強会法的課題
ビットコイン福岡勉強会法的課題
Kindai University
ブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocol
Kindai University
Open fintech and Kachatter
Open fintech and Kachatter
Kindai University
電気マネーでエネルギー問題解決
電気マネーでエネルギー問題解決
Kindai University
仮想通貨実験計画
仮想通貨実験計画
Kindai University
Bit Nexus
Bit Nexus
Kindai University
電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)
Kindai University
薬院サルー仮想通貨プロジェクト
薬院サルー仮想通貨プロジェクト
Kindai University
Mais de Kindai University
(20)
Blockchain and Virtual Currency- Technical issues -
Blockchain and Virtual Currency- Technical issues -
Gbec finance and blockchain
Gbec finance and blockchain
Blockchian definition
Blockchian definition
Blockchain economy
Blockchain economy
ブロックチェーンエコノミーのコンセンサスとガバナンス
ブロックチェーンエコノミーのコンセンサスとガバナンス
福岡ブロックチェーン・エコノミー勉強会セミナー
福岡ブロックチェーン・エコノミー勉強会セミナー
福岡ブロックチェーン・エコノミー勉強会公開版
福岡ブロックチェーン・エコノミー勉強会公開版
ブロックチェーンによるデータガバナンスと社会基盤の再構築
ブロックチェーンによるデータガバナンスと社会基盤の再構築
やっぱりブロックチェインより仮想通貨
やっぱりブロックチェインより仮想通貨
FinTechと金融サービスの将来像
FinTechと金融サービスの将来像
Congre chain説明資料
Congre chain説明資料
仮想通貨のブロックチェイン技術によるFinTech
仮想通貨のブロックチェイン技術によるFinTech
ビットコイン福岡勉強会法的課題
ビットコイン福岡勉強会法的課題
ブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocol
Open fintech and Kachatter
Open fintech and Kachatter
電気マネーでエネルギー問題解決
電気マネーでエネルギー問題解決
仮想通貨実験計画
仮想通貨実験計画
Bit Nexus
Bit Nexus
電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)
薬院サルー仮想通貨プロジェクト
薬院サルー仮想通貨プロジェクト
Último
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Último
(12)
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
論文紹介: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
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Ruby1.9のfiberのかっこいい使い方
1.
Ruby1.9のFiberとクロージャのかっこいい使い方 Rubyist九州 山崎重一郎
2.
まず、関数、クロージャ、継続の気持ちを説明してみます マインド Rubyではどうなっているのか?
3.
関数とマインド 関数はいつも上から目線 自分自身の心が行っていることを幽体離脱して外から眺める感じ
ああして こうして こうなったら こうして 関数の定義
4.
0マインド 「何もない」状態を考えてみましょう 0
= φ = {} {}
5.
1マインド 「何もない」と思っている自分を見ている自分 1 = {φ}
{}
6.
2マインド 1マインドの自分を見ている自分 2 = {φ,{φ}}
7.
3マインド 2マインドの自分を見ている自分 3 = {φ,{φ},{φ,{φ}}}
8.
ωマインド これってずっと無限にできるよねと思っている自分 ω = {φ,{φ},{φ,{φ}},...}
... 「我はαでありωである」 ヨハネの黙示録
9.
ω+1マインド 「これってずっと無限にできるよねと思っている自分」を見ている自分 ω+1 = {ω}
10.
11.
まだまだ 3ωマインド ω×ωマインド
ωωマインド .... ★でも、ずっとずっとやると精神を病みます
12.
ωマインドの関数定義 λを使うことがωマインドの例 ->
x { ... } 階乗の再帰的定義 fact = -> n {n==0 ? 1 : n*fact[n-1]} ★下のように書く方が Ruby っぽいけど fact = -> x {(1..x).reduce(:*)}
13.
ω+ωマインドの関数定義 λを二つ使うとω+ω ->
x { -> y {...} } 組み合わせ関数(再帰なのですっごく遅い) combi=->n{->r{r==1 ?n:(n==r ?1:combi[n-1][r-1]+combi[n-1][r])}}
14.
でも有限のマインドも大切 クロージャ:上から目線でつくった状態 ωマインドの視点から -> nマインド(状態)を見る
ファイバー:継続、ジェネレータ ジェネレータ: n マインドから ωマインドを見る その逆も
15.
16.
関数のメモ化 関数には時間の概念がない でも、もう一つ上のωの視点から見おろせば状態が作れる
組み合わせ関数のメモ化 combi_memo= ->m { ->n {m[n]||={}; ->r {m[n][r]||=combi[n][r]}}} > cm=combi_memo[{}] > cm[3][2] => 3 > cm[30][7] => 2035800 > eval('m',cm.binding) => {3=>{2=>3}, 30=>{7=>2035800}}
17.
Fiber f=Fiber.new{|x|
puts '最初' Fiber.yield puts x y=Fiber.yield puts y } > f.resume 3 #new メソッドへ 最初 => nil > f.resume #yield メソッドへ 3 => nil > f.resume7 #yield メソッドへ 7 => nil > f.resume FiberError: dead fiber called 継続、軽量スレッド Fiber.new {|x|...} ファイバーの生成 Fiver.yield(obj) 親のコンテクストに行く resume(obj) メソッド 子供のコンテクストに行く (途中でとまっていた処理を継続)
18.
Fiber によるジェネレータ nマインドとωマインドを行き来する
無限ループでデータを無限に生成するプログラムの最初のn要素 自然数ジェネレータ num= -> a {loop {a+=1}} > num[0] ... 無限ループ〜 無限集合を素直に生成しているんだけどね ファイバーにした自然数ジェネレータ n = Fiber.new{|a|loop{Fiber.yielda+=1}} 無限集合の最初の5個だけ取り出す (Haskellみたいでかっこいい!) > 5.times {puts n.resume 0} 1 2 3 4 5 => 5
19.
Fiber によるジェネレータ フィボナッチ数列バージョン!
フィボナッチ数列ジェネレータ fib = -> x {a,b=x loop {a; a,b=b,a+b}} >fib[[0,1]] ... 無限ループ〜 フィボナッチ数列を素直に生成している ファイバーにしたフィボナッチ数列ジェネレータ f = Fiber.new{|x| a,b=x loop {Fiber.yielda; a,b=b,a+b}} 無限集合の最初の5個だけ取り出す > 5.times {puts f.resume [0,1]} 0 1 1 2 3 => 5 もっとHaskellチックにこんなのもいいかも! deff.take(n) n.times {puts self.resume} end > f.take 10
20.
Fiberによるコルーチンで軽量イベント駆動マシン 初期のMacintosh OS
多数のコルーチンの集合体でできていた (すっごく軽量なスレッドみたいなもの) Macintosh 128K 8MHz 128Kb コルーチン コルーチン コルーチン コルーチン 操作による イベント 実際のメモリ コルーチン ビットマップ への表示など
21.
Fiberによるコルーチンで軽量イベント駆動マシン Rails 3.2
からPjaxが標準に WebサーバにFiberプールで軽量スレッド メモリ節約、起動/再起動の高速化 コルーチン コルーチン Pjax ブラウザ コルーチン コルーチン 操作による イベント Fiber対応Webサーバ unicornとかGoliathとか コルーチン ブラウザへの 表示変更
22.
FiberとThreadの比較 出典:Ruby Fibers
Vs Ruby Threads http://oldmoe.blogspot.com/2008/08/ruby-fibers-vs-ruby-threads.html
23.
Fiberによるリアルタイム処理 次回にね!
Baixar agora