Enviar búsqueda
Cargar
Ruby1.9のfiberのかっこいい使い方
•
Descargar como PPTX, PDF
•
10 recomendaciones
•
2,679 vistas
Kindai University
Seguir
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 23
Descargar ahora
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
Más contenido relacionado
Destacado
これからはじめる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
Destacado
(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
Más 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
Más 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
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Último
(9)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
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によるリアルタイム処理 次回にね!
Descargar ahora