Enviar pesquisa
Carregar
197x 20090704 Scalaで並行プログラミング
•
4 gostaram
•
1,092 visualizações
Net Penguin
Seguir
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 21
Baixar agora
Baixar para ler offline
Recomendados
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
Ra Zon
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編
takeuchi-tk
はてなブックマーク in Scala
はてなブックマーク in Scala
Lintaro Ina
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門
SatoYu1ro
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
Hiromi Ishii
あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)
x1 ichi
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
Phantom Type in Scala
Phantom Type in Scala
Yasuyuki Maeda
Recomendados
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
Ra Zon
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編
takeuchi-tk
はてなブックマーク in Scala
はてなブックマーク in Scala
Lintaro Ina
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門
SatoYu1ro
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
Hiromi Ishii
あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)
x1 ichi
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
Phantom Type in Scala
Phantom Type in Scala
Yasuyuki Maeda
Scala2.8への移行
Scala2.8への移行
guest5f4320
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
mametter
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
Ryosuke839
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
Lintaro Ina
IdrisでWebアプリを書く
IdrisでWebアプリを書く
Hideyuki Tanaka
ScalaMatsuri 2016
ScalaMatsuri 2016
Yoshitaka Fujii
Scala による自然言語処理
Scala による自然言語処理
Hiroyoshi Komatsu
Scalaで型クラス入門
Scalaで型クラス入門
Makoto Fukuhara
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
Sns suite presentation
Sns suite presentation
Jason Namkung
Scalaノススメ
Scalaノススメ
Yasuyuki Maeda
BOF1-Scala02.pdf
BOF1-Scala02.pdf
Hiroshi Ono
Why Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuri
Yuta Okamoto
Thinking in Cats
Thinking in Cats
Eugene Yokota
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
Rpscala2011 0601
Rpscala2011 0601
Hajime Yanagawa
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
Ruby 3のキーワード引数について考える
Ruby 3のキーワード引数について考える
mametter
MVCのつぎは・・・
MVCのつぎは・・・
Net Penguin
Brita tester pol
Brita tester pol
Ciszewski MSL
Mais conteúdo relacionado
Mais procurados
Scala2.8への移行
Scala2.8への移行
guest5f4320
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
mametter
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
Ryosuke839
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
Lintaro Ina
IdrisでWebアプリを書く
IdrisでWebアプリを書く
Hideyuki Tanaka
ScalaMatsuri 2016
ScalaMatsuri 2016
Yoshitaka Fujii
Scala による自然言語処理
Scala による自然言語処理
Hiroyoshi Komatsu
Scalaで型クラス入門
Scalaで型クラス入門
Makoto Fukuhara
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
Sns suite presentation
Sns suite presentation
Jason Namkung
Scalaノススメ
Scalaノススメ
Yasuyuki Maeda
BOF1-Scala02.pdf
BOF1-Scala02.pdf
Hiroshi Ono
Why Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuri
Yuta Okamoto
Thinking in Cats
Thinking in Cats
Eugene Yokota
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
Rpscala2011 0601
Rpscala2011 0601
Hajime Yanagawa
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
Ruby 3のキーワード引数について考える
Ruby 3のキーワード引数について考える
mametter
Mais procurados
(20)
Scala2.8への移行
Scala2.8への移行
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
IdrisでWebアプリを書く
IdrisでWebアプリを書く
ScalaMatsuri 2016
ScalaMatsuri 2016
Scala による自然言語処理
Scala による自然言語処理
Scalaで型クラス入門
Scalaで型クラス入門
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Sns suite presentation
Sns suite presentation
Scalaノススメ
Scalaノススメ
BOF1-Scala02.pdf
BOF1-Scala02.pdf
Why Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuri
Thinking in Cats
Thinking in Cats
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Rpscala2011 0601
Rpscala2011 0601
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Ruby 3のキーワード引数について考える
Ruby 3のキーワード引数について考える
Destaque
MVCのつぎは・・・
MVCのつぎは・・・
Net Penguin
Brita tester pol
Brita tester pol
Ciszewski MSL
OW2con'14 - erOCCI, a scalable, model-based REST API framework
OW2con'14 - erOCCI, a scalable, model-based REST API framework
OW2
Chapter 11
Chapter 11
dphil002
프로젝트N 기획문서
프로젝트N 기획문서
Matthew Chang
XWiki OW2 Conference Nov10
XWiki OW2 Conference Nov10
OW2
LinkedIn and Twitter Lab
LinkedIn and Twitter Lab
Helen Buzdugan
eGov 2.0 keys to success white paper June2009
eGov 2.0 keys to success white paper June2009
etienneveyret
Microsoft Power Point Facet5 Presentatie Linked In
Microsoft Power Point Facet5 Presentatie Linked In
Michiel Castelijns
OW2con'14 - OW2 Big data initiative, SpagoBI Labs by Engineering
OW2con'14 - OW2 Big data initiative, SpagoBI Labs by Engineering
OW2
Ciszewski internet credentials and case study eng
Ciszewski internet credentials and case study eng
Ciszewski MSL
Cloud Computing Presentation V3
Cloud Computing Presentation V3
David Oliver
CHOReOS: "Large Scale Choreographies for the Future Internet", from theory to...
CHOReOS: "Large Scale Choreographies for the Future Internet", from theory to...
OW2
Ow2 X Wiki Use Case Open World Forum09
Ow2 X Wiki Use Case Open World Forum09
OW2
Life Beautiful Monday
Life Beautiful Monday
Pentiux
Star Animation I
Star Animation I
guestaa9bece
Solving Web Applications Challenges with Build Process and SOC
Solving Web Applications Challenges with Build Process and SOC
OW2
I.M Psmate Con Estas Fotos
I.M Psmate Con Estas Fotos
alfcoltrane
10 steps to primary 1
10 steps to primary 1
woan shya
Holiday Sparkle For Jewelry Lovers
Holiday Sparkle For Jewelry Lovers
Art Intervention & www.artintervention.com
Destaque
(20)
MVCのつぎは・・・
MVCのつぎは・・・
Brita tester pol
Brita tester pol
OW2con'14 - erOCCI, a scalable, model-based REST API framework
OW2con'14 - erOCCI, a scalable, model-based REST API framework
Chapter 11
Chapter 11
프로젝트N 기획문서
프로젝트N 기획문서
XWiki OW2 Conference Nov10
XWiki OW2 Conference Nov10
LinkedIn and Twitter Lab
LinkedIn and Twitter Lab
eGov 2.0 keys to success white paper June2009
eGov 2.0 keys to success white paper June2009
Microsoft Power Point Facet5 Presentatie Linked In
Microsoft Power Point Facet5 Presentatie Linked In
OW2con'14 - OW2 Big data initiative, SpagoBI Labs by Engineering
OW2con'14 - OW2 Big data initiative, SpagoBI Labs by Engineering
Ciszewski internet credentials and case study eng
Ciszewski internet credentials and case study eng
Cloud Computing Presentation V3
Cloud Computing Presentation V3
CHOReOS: "Large Scale Choreographies for the Future Internet", from theory to...
CHOReOS: "Large Scale Choreographies for the Future Internet", from theory to...
Ow2 X Wiki Use Case Open World Forum09
Ow2 X Wiki Use Case Open World Forum09
Life Beautiful Monday
Life Beautiful Monday
Star Animation I
Star Animation I
Solving Web Applications Challenges with Build Process and SOC
Solving Web Applications Challenges with Build Process and SOC
I.M Psmate Con Estas Fotos
I.M Psmate Con Estas Fotos
10 steps to primary 1
10 steps to primary 1
Holiday Sparkle For Jewelry Lovers
Holiday Sparkle For Jewelry Lovers
Semelhante a 197x 20090704 Scalaで並行プログラミング
ATN No.2 Scala事始め
ATN No.2 Scala事始め
AdvancedTechNight
GParsの?Actor Model
GParsの?Actor Model
pocketberserker
Scala is-unscared
Scala is-unscared
Kota Mizushima
こわくないScala
こわくないScala
Kota Mizushima
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews, Inc.
Start!! Ruby
Start!! Ruby
mitim
Shibuya.lisp #28: 仮題: R について
Shibuya.lisp #28: 仮題: R について
tnoda
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
Takuya Iwatsuka
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
bitter_fox
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
y_taka_23
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Yoshimura Soichiro
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18
Shuya Tsukamoto
JavaScriptクイックスタート
JavaScriptクイックスタート
Shumpei Shiraishi
Vim scriptとJavaとHaskell
Vim scriptとJavaとHaskell
aiya000
LDA入門
LDA入門
正志 坪坂
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
Tomohiro Kumagai
Trait in scala
Trait in scala
Yuta Shimakawa
Semelhante a 197x 20090704 Scalaで並行プログラミング
(20)
ATN No.2 Scala事始め
ATN No.2 Scala事始め
GParsの?Actor Model
GParsの?Actor Model
Scala is-unscared
Scala is-unscared
こわくないScala
こわくないScala
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
Start!! Ruby
Start!! Ruby
Shibuya.lisp #28: 仮題: R について
Shibuya.lisp #28: 仮題: R について
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18
JavaScriptクイックスタート
JavaScriptクイックスタート
Vim scriptとJavaとHaskell
Vim scriptとJavaとHaskell
LDA入門
LDA入門
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
Trait in scala
Trait in scala
Último
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
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...
博三 太田
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Último
(9)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
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...
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
197x 20090704 Scalaで並行プログラミング
1.
Scalaで並行プログラミング
NetPenguin
2.
自己紹介 • NetPenguin
– http://d.hatena.ne.jp/NetPenguin/ – http://twitter.com/NetPenguin/ • プログラマ(否SE) • Java, Scala, C/C++, PHP, etc... • Scala-be – http://groups.google.co.jp/group/scala-be 2
3.
目次 •
Scala • アクターモデル • Scalaのアクターライブラリ • まとめ 3
4.
Scala • オブジェクト指向+関数型 • JVM上で動作 •
ScalaからJavaのライブラリを利用可能 JavaからScalaのメソッドを呼び出すことも可能 • 変態豊富な言語機能 – Implicit parameter, Implicit conversion, Trait, Structual typing, Pattern match – Partial Function, タプル, Immutableなリスト, etc... 4
5.
Scala • その他
– TwitterもScalaで動いているらしいです – マスコットキャラも出来たようです・・・ 5
6.
• 魔法少女 Scala
ちゃん id:secondlife さんのところから拝借しました。 ●http://subtech.g.hatena.ne.jp/secondlife/20090701/1246418689# 6
7.
アクターモデル • 全てのものはアクターである –
OOの「すべてのものはオブジェクトである」 と同じようなもの • 基本的に非同期メッセージを使用 – OOでは基本的に同期メッセージ – アクタ間のやり取りはメッセージのみ • 状態は各アクターに閉じている 7
8.
自然と並行に動作可能
8
9.
Scalaのアクターライブラリ • 特徴 –
言語の一部のように見える構文 – パターンマッチ – スレッドを無駄使いしない • やれること – アクターの生成/開始 – メッセージ送信 – メッセージ受信 – メッセージ返信 9
10.
アクターの生成/開始(1) • Actorクラスを継承
– Actorクラスを継承し、actメソッドを実装する – start メソッドを呼び出して、アクターを開始する class SampleActor extends Actor { def act():Unit = { : } } object Sample { def main(args: Array[String]):Unit = { new SampleActor().start } } 10
11.
アクターの生成/開始(2) • Actor.actor メソッドで生成
– actor に続くブロックが act メソッドに相当 – ただちに開始される(start不要) import scala.actors.Actor.actor object Sample { def main(args: Array[String]):Unit = { actor { : : } } } 11
12.
メッセージ送信 • 任意のオブジェクトを送信可能 • !、!?、!!でメッセージ送信
– ! → 一方通行 – !? → 返信を待つ – !! → 返信受信時にコールバック def main(args: Array[String]):Unit = { val sample = actor { ... } sample ! “message” // 文字列を送信 println(sample !? 1) // 数値を送信、返信を出力 } 12
13.
メッセージ受信(1) • receiveで受信
– メッセージが届くまでスレッドを止めて待つ (メッセージ待ち中もスレッドを消費する) – reveiveの外側に値を返すことができる actor { val result = receive { case t: String => println(“receive text. text=”+t) “text” // result == “text” になる case 1 => println(“receive number.”) “number” // result == “number” になる } } 13
14.
メッセージ受信(2) • reactで受信
– メッセージ処理中のみスレッドを使用する – reactの外側に値を返すことはできない actor { react { case t: String => println(“receive text. text=”+t) case 1 => println(“receive number.”) } } 14
15.
メッセージ受信(その他) • 受信を繰り返す
– loopで囲う actor { loop { react { case t: String => println(“receive text. text=”+t) case 1 => println(“receive number.) } } } 15
16.
メッセージ返信 • reply で返信
– 任意のオブジェクトを返信できる – !?, !! によるメッセージ送信側で受け取ることができる actor { loop { react { case t: String => reply “receive ”+t case 1 => reply “receive 1st” } } } 16
17.
試してみた • クイックソート
– 10,000個の整数をソート×100回 • すべてをアクターにしてみた – 分割(Separator) – 結合(Combaine) • 大量にアクターを生成 – 分割毎にアクタ生成 ※ソースはhttp://svn.coderepos.org/share/lang/scala /sandbox/samples/actor/ に置いてあります 17
18.
結果 • CPU使用率80~90%
(Core2Quad 2.4GHz) 18
19.
結果 • すべてをアクターにすると –
メモリを大量消費 – オーバーヘッドで遅かった(10倍くらい) • 通常のソート → 2~3秒 • アクター使用 → 28秒 _| ̄|○ 19
20.
まとめ •
自然と並行処理になる • 同期処理不要 • CPUパワーを余すことなく使える • アクターの粒度はほどほどに 20
21.
ご静聴、ありがとうございました。
21
Baixar agora