Lambdaカクテル

京都在住Webエンジニアの日記です

Invite link for Scalaわいわいランド

cats effect

Cats Effect 3ではSIGINTはどこで処理されるか

この記事では、プログラミング言語Scalaにおいて関数型ライブラリCatsをベースとした非同期処理(グリーンスレッド)ライブラリである Cats Effect(CE) において、プロセスがSIGINTを受信した場合にどのようにCEが振る舞うかを解説する。 またこの記事は執筆時…

Cats Effectで同時実行数を制御しながらIOを並行実行する

Scalaの軽量スレッドなどを提供するCats Effectで、Seqに詰まったタスクを並行に実行したいが同時実行数は制限したいということがあったので、それに対応する実装をしたメモ。 typelevel.org IOのsequence Cats Effectでは、sequenceを使うことでSeq[IO[A]]…

Fs2 3.6.1で複数のワーカに処理を分散させるパターンを書く

Scalaの非同期・ストリーミング処理ライブラリであるfs2で、ジョブキュー的な感じで、複数のワーカにデータを分散して配りたいことがあり、それの実現方法について調査したメモ。 fs2.io 追記(2023-09-23) fs2 3.9.2で確認したが、stream.parEvalMap(N)(IO)…

Cats EffectのHotswapの使い方について調べた / 無限に出てくるトイレットペーパーを実装する

Cats Effectの勉強をしてたらHotswapというコンポーネントがあって便利そうだったので紹介します。 Hotswap Resourceを単体で使う欠点 そもそもResourceとは Resourceにできないこと Hotswap登場 応用: 途切れないトイレットペーパー ToiletPaperクラス toil…

Cats Effect 3でセマフォを使う方法 + よくある落とし穴 (標語付き)

Cats Effect 3のセマフォの使い方の例があまりないなと思ったので自分で書いておいた。標語もあるよ。 そもそもセマフォって何よ 前提知識 Cats Effect 3によるセマフォ 落とし穴 標語 (大きな声で読み上げよう) 解説 Cats Effectという、Scalaで非同期処理…

Cats EffectのforeverMのMはモナドのM

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|") >> …

Cats Effect 3のDeferredでGoroutine / channelっぽいことをする

GolangにはGoroutineという良いやつがある。非同期処理をいい感じにやってくれる賢い軽量スレッドだよ。 go-tour-jp.appspot.com そして、Goroutine同士はchannelという概念を通じて会話することができる。 go-tour-jp.appspot.com 他方、Scalaの非同期処理…

Cats Effectでダウンロードインジケータを表示する

Scalaの非同期処理まわりのハンドリングをやりやすくするライブラリ、Cats Effectの教科書を読んでいる。 essentialeffects.dev 英語は平易で分かりやすいので、諸君もぜひ読んでほしい。 そんな中、Cats Effectの機能の一つであるResourceの面白い応用を思…

★記事をRTしてもらえると喜びます
Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?