Scala
3. cats-effect3(CE3)を利用したScalaの並列・並行処理 前編の続き。 並列処理入門(前編) - JKになりたい 3.1 実装サンプル 詳細な説明の前に、GoやRubyと同じ実装サンプルを提示しざっくりと動き方を確認する。 CE3でも、Goと同じくN:Mモデルを採用してい…
はじめに 個人ゲーム開発で困ることといえば、巨大な容量を誇るリポジトリのバージョン管理ですよね。皆さんどうしてますか? 色々なオプションがあるかと思いますが、一番格安かつデータ消失などにも強い方法として自分はAPIGateway+Lambda+S3の組み合わせ…
おはぽえ〜〜 先日、私の通っている女子高の同級生との会話で、Scalaの変位指定パラメータの話題になりまして。(イマドキのJKはScalaが流行中!) 変位指定パラメータって、どういうものかの解説はたくさんあるんだけど、どういう時に使うか?みたいな話が…
並行処理と並列処理 並行処理(concurrent processing) 1つのCPU(コア)スレッドを切り替えながら複数のタスクを実行すること。 人間の目には複数のタスクが同時に進んでいるように見える 実行するスレッドを切り替える必要があるのでコンテキストスイッチの…
ネストしたモナドの取り扱い モナドがネストして帰ってくることがあります。 例えば、DBに接続してユーザレコードを取り出す時、DBに接続できたかどうかを表すEither、該当のユーザがいたかどうかを表すOptionのモナドがネストして帰ってくるケースを考えて…
Functional Programming in ScalaのExercise6.11の問題をStateモナドを使用して解いてみます。 問題設定 スナックの自動販売機をモデリングする有限状態オートマトンを実装する。 この自動販売機は2種類の入力を受け付ける。 1つは硬貨の投入、もう1つはハン…
Stateモナドについてざっくりと。 状態の変化を伴うミュータブルな計算をFunctional Programmingのコンテキストで表現可能にしたもの。 catsにおけるStateモナドのapplyメソッドのシグネチャは以下のようになっています def apply[S, A](f: S => (S, A)): St…
自分のコードのボトルネックを探すための検証。個人的にメモった結果を貼ってるだけです><><> 10万回繰り返す時間を100回計測し集計しています。 とりあえず時間測定のために、簡単な計測関数を作っておきます。 def printExecutionTime(proc: => Unit)…