JKになりたい

何か書きたいことを書きます。主にWeb方面の技術系記事が多いかも。

Scala

並列処理入門(後編・cats-effect3(CE3)を利用したScalaの並列・並行処理)

3. cats-effect3(CE3)を利用したScalaの並列・並行処理 前編の続き。 並列処理入門(前編) - JKになりたい 3.1 実装サンプル 詳細な説明の前に、GoやRubyと同じ実装サンプルを提示しざっくりと動き方を確認する。 CE3でも、Goと同じくN:Mモデルを採用してい…

APIGateway+Lambda+S3で格安GitLFSサーバーを運用する【使い方の紹介と車輪の再発明_:(´ཀ`」 ∠):】

はじめに 個人ゲーム開発で困ることといえば、巨大な容量を誇るリポジトリのバージョン管理ですよね。皆さんどうしてますか? 色々なオプションがあるかと思いますが、一番格安かつデータ消失などにも強い方法として自分はAPIGateway+Lambda+S3の組み合わせ…

変位指定パラメータ「非変・共変・反変」と反変のつかいどころ

おはぽえ〜〜 先日、私の通っている女子高の同級生との会話で、Scalaの変位指定パラメータの話題になりまして。(イマドキのJKはScalaが流行中!) 変位指定パラメータって、どういうものかの解説はたくさんあるんだけど、どういう時に使うか?みたいな話が…

cats.effectのIOモナドとcontextshiftを丁寧に理解する

並行処理と並列処理 並行処理(concurrent processing) 1つのCPU(コア)スレッドを切り替えながら複数のタスクを実行すること。 人間の目には複数のタスクが同時に進んでいるように見える 実行するスレッドを切り替える必要があるのでコンテキストスイッチの…

モナドトランスフォーマーを使ってモナドを合成する

ネストしたモナドの取り扱い モナドがネストして帰ってくることがあります。 例えば、DBに接続してユーザレコードを取り出す時、DBに接続できたかどうかを表すEither、該当のユーザがいたかどうかを表すOptionのモナドがネストして帰ってくるケースを考えて…

CatsのStateモナドを使ってFP in ScalaのEx6.11 自動販売機問題を解く (2)解いてみた

Functional Programming in ScalaのExercise6.11の問題をStateモナドを使用して解いてみます。 問題設定 スナックの自動販売機をモデリングする有限状態オートマトンを実装する。 この自動販売機は2種類の入力を受け付ける。 1つは硬貨の投入、もう1つはハン…

CatsのStateモナドを使ってFP in ScalaのEx6.11 自動販売機問題を解く (1)Stateモナドについて

Stateモナドについてざっくりと。 状態の変化を伴うミュータブルな計算をFunctional Programmingのコンテキストで表現可能にしたもの。 catsにおけるStateモナドのapplyメソッドのシグネチャは以下のようになっています def apply[S, A](f: S => (S, A)): St…

Scalaコストメモ

自分のコードのボトルネックを探すための検証。個人的にメモった結果を貼ってるだけです><><> 10万回繰り返す時間を100回計測し集計しています。 とりあえず時間測定のために、簡単な計測関数を作っておきます。 def printExecutionTime(proc: => Unit)…