cats effect
この記事では、プログラミング言語Scalaにおいて関数型ライブラリCatsをベースとした非同期処理(グリーンスレッド)ライブラリである Cats Effect(CE) において、プロセスがSIGINTを受信した場合にどのようにCEが振る舞うかを解説する。 またこの記事は執筆時…
Scalaの軽量スレッドなどを提供するCats Effectで、Seqに詰まったタスクを並行に実行したいが同時実行数は制限したいということがあったので、それに対応する実装をしたメモ。 typelevel.org IOのsequence Cats Effectでは、sequenceを使うことでSeq[IO[A]]…
Scalaの非同期・ストリーミング処理ライブラリであるfs2で、ジョブキュー的な感じで、複数のワーカにデータを分散して配りたいことがあり、それの実現方法について調査したメモ。 fs2.io tl;dr 1つのQueueにデータを入れて、複数のワーカから好きに取出せば…
Cats Effectの勉強をしてたらHotswapというコンポーネントがあって便利そうだったので紹介します。 Hotswap Resourceを単体で使う欠点 そもそもResourceとは Resourceにできないこと Hotswap登場 応用: 途切れないトイレットペーパー ToiletPaperクラス toil…
Cats Effect 3のセマフォの使い方の例があまりないなと思ったので自分で書いておいた。標語もあるよ。 そもそもセマフォって何よ 前提知識 Cats Effect 3によるセマフォ 落とし穴 標語 (大きな声で読み上げよう) 解説 Cats Effectという、Scalaで非同期処理…
Cats Effectには、foreverMという >> を無限に繰り返すことと等価なメソッドがある: import scala.concurrent.duration._ import scala.language.postfixOps val wait = 100 milliseconds def indicator: IO[Unit] = IO.sleep(wait) >> (IO.print("\r|") >> …
GolangにはGoroutineという良いやつがある。非同期処理をいい感じにやってくれる賢い軽量スレッドだよ。 go-tour-jp.appspot.com そして、Goroutine同士はchannelという概念を通じて会話することができる。 go-tour-jp.appspot.com 他方、Scalaの非同期処理…
Scalaの非同期処理まわりのハンドリングをやりやすくするライブラリ、Cats Effectの教科書を読んでいる。 essentialeffects.dev 英語は平易で分かりやすいので、諸君もぜひ読んでほしい。 そんな中、Cats Effectの機能の一つであるResourceの面白い応用を思…