どちらか都合がよい方で決済してください。決済後にSlackにご招待します。
決済メールを見逃すことがあるので、@j5ik2o or j5ik2o@gmail.com までご連絡いただけると助かります。
どちらか都合がよい方で決済してください。決済後にSlackにご招待します。
決済メールを見逃すことがあるので、@j5ik2o or j5ik2o@gmail.com までご連絡いただけると助かります。
| -- Domain/UserAccount.hs | |
| module Domain.UserAccount where | |
| data UserAccount = UserAccount | |
| { accountId :: Int | |
| , username :: String | |
| , email :: String | |
| } deriving (Show) | |
| data UserAccountEvent |
bib.ymlに参考文献情報を記載する@<bibinfo>{id} で参考文献情報を展開できるようにする。review-ext.rbは認識される場所に配置してください。ruby generate-bib-re.rb bib.yml bib.re などとしてbib.ymlからbib.reを生成する| use std::fmt::Debug; | |
| use async_trait::async_trait; | |
| use std::future::Future; | |
| use std::pin::Pin; | |
| use std::sync::Arc; | |
| // 既存のインポートはそのまま維持 | |
| type BehaviorFn<M> = Box<dyn Fn(M, &mut ActorContext<M>) -> Pin<Box<dyn Future<Output = Behavior<M>> + Send>> + Send + Sync>; |
| // ここでいうステートレスというのはアプリケーションに状態があるのではなく、DBに状態があることを意味しています。 | |
| // 逆にAkka Clusterで実装されるEvent Sourcingシステムでは、アプリケーションの状態はアプリケーションが保持しており、 | |
| // DBはバックアップログを持つストレージの役割になります。 | |
| pub struct EventPersistenceGateway<'a> { | |
| journal_table_name: String, | |
| snapshot_table_name: String, | |
| client: &'a Client, | |
| } |
| // https://github.com/fpinscala/fpinscala/.../parsing/Parsers.scala の一部 | |
| extension [A](p: Parser[A]) | |
| // 中略 | |
| def opt: Parser[Option[A]] = p.map(Some(_)) | succeed(None) | |
| def map[B](f: A => B): Parser[B] = p.flatMap(f andThen succeed) | |
| def |(p2: => Parser[A]): Parser[A] = p.or(p2) |
| /* | |
| * Copyright 2022 Junichi Kato | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software |