Skip to content

Instantly share code, notes, and snippets.

View j5ik2o's full-sized avatar

Junichi Kato j5ik2o

View GitHub Profile
@j5ik2o
j5ik2o / sbt.md
Last active September 5, 2019 01:58

https://github.com/j5ik2o/akka-persistence-dynamodb

sbt.version = 1.3.0 にしてビルドしたら以下のエラー

以前、sbt-coursierにしたときも同様のエラーでたことある

$sbt clean compile
[info] Loading settings for project global-plugins from idea.sbt,sbt-updates.sbt,plugins.sbt ...
@j5ik2o
j5ik2o / gist:4041a22c5396052ce2239ee3cae8e702
Last active September 20, 2019 05:15
モデリングのお題

お題

勉強会に参加する方は、以下の映画料金表を参考して、映画料金を決定するドメインモデルを考えて実装してください(実装言語はScalaを想定しています。が、チームで相談して違う言語を選択してもよいです)

具体的には、入力として顧客や時間の条件を与えると何らかの計算を行い、出力として映画の価格を返してくれるクラスを実装するイメージです(ドメイン駆動設計の戦術的なプラクティスにこだわらなくてもOKです)。入力条件から複数の映画料金が求められる場合は安い価格を決定してくださいね…。クラスは何個作っても構いません。ただし永続化とかGUIのことは考えないでください。動作を確認できる、コンソールアプリケーションかユニットテストがあれば十分です。

https://cinemacity.co.jp/ticket/

以下の要件を満たすのは必須ではないですが、時間がある方は挑戦してみてください。思った以上に複雑な要件なので注意してください。 また、レディースディ(女性でかつ毎週水曜は安くなる)など新しいルールを作って実装してもOKです。

package domain

import java.time.temporal.ChronoUnit
import java.time.{DayOfWeek, LocalDate, LocalDateTime}

import enumeratum._

sealed trait Age extends Ordered[Age] {
  def breachEncapsulationOfValue(today: LocalDate): Int

入力されたリストの要素を2倍し合計する関数

def loop(in: List[Int], acc: Int): Int =
  in match {
    case Nil => acc // 終了条件
    case head :: tail =>
      val result = head * 2 // headのタスク
      loop(tail, acc + result) // 残りのリストと計算途中を渡して処理を継続
 }
public static boolean isNameHashUpperCase(String name) {
  boolean result = false;
  for (int i = 0; i < name.length; i++) {
    if (Character.isUpperCase(name.charAt(i)) {
      result = true;
      break;
    }
  }
 return result;
object PersistentWalletAggregate {
def behaviorProxy(
id: WalletId,
chargesLimit: Int = Int.MaxValue
): Behavior[CommandRequest] =
Behaviors
.supervise(Behaviors.setup[CommandRequest] { ctx =>
val childRef: ActorRef[CommandRequest] =
ctx.spawn(WalletAggregate.behavior(id, chargesLimit), WalletAggregate.name(id))
object TestMain extends App {
import akka.stream.scaladsl._
import akka.actor._
import akka.stream.ActorMaterializer
import scala.concurrent._
import scala.concurrent.duration._
implicit val system = ActorSystem()
implicit val ec = system.dispatcher
implicit val mat = ActorMaterializer()
curl -v -X GET https://oss.sonatype.org/content/repositories/releases/com/github/j5ik2o/reactive-redis-core_2.12/1.0.20/reactive-redis-core_2.12-1.0.20.pom                        INT(-2) ↵  3243  22:31:44
Note: Unnecessary use of -X or --request, GET is already inferred.
*   Trying 23.22.160.79...
* TCP_NODELAY set
* Connected to oss.sonatype.org (23.22.160.79) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
@j5ik2o
j5ik2o / btree.go
Last active December 21, 2018 08:37
package btree
package btree
type Node interface {
Size() int
Sum() int64
Min() int64
Max() int64
Find(value int64) *int64