the industrial

ブログと言うより自分のためのメモ以外の何モノでもないです。でも読んでくださってありがとうございます。

ScalikeJDBCでDDD的な

大したことではないのだけど、便利そうだったのでメモ。

Long値である従業員IDを明示的に型として保持したいニーズがあるとして、こんな case class があったとする。

case class EmployeeId(value: Long)

SQLのWHERE句を組み立てる際、下記の様になる

val where = sqls.eq(Employees.e.employeeId, employeeId.value)

この .value がちょっと煩わしいなと思っていたのだけど、下記のような implicit conversion を定義しておくと

implicit val intParameterBinderFactory: ParameterBinderFactory[EmployeeId] = ParameterBinderFactory{
  id => (stmt, idx) => stmt.setLong(idx, id.value)
}

こんな風に書けた。

val where = sqls.eq(Employees.e.employeeId, employeeId)

あくまでも自分へのメモw

knotfestおしまい

https://www.instagram.com/p/BMePsXuhlH2/


主催のslipknotは、僕の中で好きなバンドランキングで現在2位のバンドで、人生2回目のライブ参戦。


バンドが大きくなりすぎて、ライブ1つやるのも壮大な調整が必要だそうで、次に日本でライブしてくれるのは何時になるかわからず(メンバー一人亡くなっちゃったし)。

 

なので、嫁ちゃんにお願いして参戦してきました。

 

最前列まで行き、メンバー一人一人を間近で見れて、本当に楽しかった。

メールアドレスをあらわす正規表現について

今日、個人的に信じていたメールアドレスの正規表現に穴があった。

どういうものかというと、

input type=email – e-mail address input control (NEW) - HTML5 で仕様とされている

\b[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*\b

が、RFCが策定しているメールアドレスの形式に違反した形である foo.baa.@domain.co.tokyo という形式(※アットマークの前にドットが存在する)に合致してしまう問題。

なので、少し手入れしてこんな感じに...

[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(?!\.).@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*

ちなみに、

^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(?!\.).@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*

とすると、foo..baa.@domain.co.tokyo も弾いてくれる。

ただ、コレが絶対的に正しいのかというと自身なし。

メールアドレスを表す正規表現は、多分、永遠の課題なのかもしれない...。

regexr.com

ミッドナイト・ミート・トレイン

ミッドナイト・ミート・トレイン (字幕版)

いやはや、何を血迷ったのか久しぶりにグロ(ゴア表現)映画を見てしまった。

まったく期待せず、つまらなさそうなら途中で観るのもやめようかなって思っていたのだけど、主演がブラッドレイ・クーパーだったのは本当にビックリ。

ギャングに絡まれていた女性を助けた、写真家である主人公。

しかし、直後に女性が失踪してしまい、近くに居た謎の大男が犯人では調べはじめ・・・

ラストは「地下鉄」という舞台にふさわしい不気味な終わり方で、割りと面白かった。

けど、ストーリーが読めてしまうのは、監督が日本人の方だからか。

IntelliJ IDEAのsbtビルドがコケまくった話

会社のMacに入れているIntelliJ IDEAのsbtビルドが盛大にずっこけるようになり、プロジェクトの作り直した等していたら、そもそもソースコード自体開けなくなった。

原因を言ってしまえば、例のXcodeのAgreeをしていなかったから。

最近OSをSieraにしたので、たしかにそのタイミングぐらいからコケるようになった気がする。

こんなことで午前中を無駄にしてしまったorz-3

ちなみに、気づいたのがbrewコマンドを叩いた時w

brew大好きだぜ。

同じ原因でずっこける人も要るかもしれないので、念のためにエラーログを貼っておこう!

[info] Set current project to stanby-ats (in build file:/Users/omiend/hogehoge)
java.lang.RuntimeException: Nonzero exit code (69) running git.
  at scala.sys.package$.error(package.scala:27)
  at scala.Predef$.error(Predef.scala:142)
  at com.typesafe.sbt.git.ConsoleGitRunner$.apply(ConsoleGitRunner.scala:25)
  at com.scalapenos.sbt.prompt.promptlets.GitPromptlets$class.gitStatus(GitPromptlets.scala:51)
  at com.scalapenos.sbt.prompt.promptlets.GitPromptlets$class.com$scalapenos$sbt$prompt$promptlets$GitPromptlets$$gitInfo(GitPromptlets.scala:31)
  at com.scalapenos.sbt.prompt.promptlets.GitPromptlets$$anonfun$gitPromptlet$1.apply(GitPromptlets.scala:15)
  at com.scalapenos.sbt.prompt.promptlets.GitPromptlets$$anonfun$gitPromptlet$1.apply(GitPromptlets.scala:15)
  at com.scalapenos.sbt.prompt.Promptlet.render(Promptlet.scala:15)
  at com.scalapenos.sbt.prompt.PromptTheme$$anonfun$1.apply(PromptTheme.scala:12)
  at com.scalapenos.sbt.prompt.PromptTheme$$anonfun$1.apply(PromptTheme.scala:12)
  at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
  at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
  at scala.collection.immutable.List.foreach(List.scala:318)
  at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
  at scala.collection.AbstractTraversable.map(Traversable.scala:105)
  at com.scalapenos.sbt.prompt.PromptTheme.render(PromptTheme.scala:12)
  at $b60c967c006b29b77803$$anonfun$root$6$$anonfun$apply$1.apply(build.sbt:31)
  at $b60c967c006b29b77803$$anonfun$root$6$$anonfun$apply$1.apply(build.sbt:31)
  at sbt.BasicCommands$$anonfun$shell$1.apply(BasicCommands.scala:172)
  at sbt.BasicCommands$$anonfun$shell$1.apply(BasicCommands.scala:170)
  at sbt.Command$$anonfun$command$1$$anonfun$apply$1.apply(Command.scala:30)
  at sbt.Command$$anonfun$command$1$$anonfun$apply$1.apply(Command.scala:30)
  at sbt.Command$.process(Command.scala:93)
  at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:96)
  at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:96)
  at sbt.State$$anon$1.process(State.scala:184)
  at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:96)
  at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:96)
  at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
  at sbt.MainLoop$.next(MainLoop.scala:96)
  at sbt.MainLoop$.run(MainLoop.scala:89)
  at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:68)
  at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:63)
  at sbt.Using.apply(Using.scala:24)
  at sbt.MainLoop$.runWithNewLog(MainLoop.scala:63)
  at sbt.MainLoop$.runAndClearLast(MainLoop.scala:46)
  at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:30)
  at sbt.MainLoop$.runLogged(MainLoop.scala:22)
  at sbt.StandardMain$.runManaged(Main.scala:54)
  at sbt.xMain.run(Main.scala:29)
  at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109)
  at xsbt.boot.Launch$.withContextLoader(Launch.scala:128)
  at xsbt.boot.Launch$.run(Launch.scala:109)
  at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:35)
  at xsbt.boot.Launch$.launch(Launch.scala:117)
  at xsbt.boot.Launch$.apply(Launch.scala:18)
  at xsbt.boot.Boot$.runImpl(Boot.scala:41)
  at xsbt.boot.Boot$.main(Boot.scala:17)
  at xsbt.boot.Boot.main(Boot.scala)
[error] Nonzero exit code (69) running git.
[error] Use 'last' for the full log.

チェイス

チェイス!日本劇場公開版(字幕版)

 

主演は、俺を涙のどん底に突き落とした最高のインド映画、きっと、うまくいく - the industrialアーミル・カーン

 

この人天才過ぎる。今回もめちゃくちゃ良かった。

 

前半はプレステージみたいな感じなんだけど、後半に行くほど話が深くなっていって、ラストは…

 

この秋観たいめっちゃオススメ映画でした。

 

 

 

ノンデザイナーズ・デザインブック(カラーを使ったデザイン)

とりあえず最終回

 

カラーを使ったデザイン
※色の話なので、実際に本を見た方がわかりやすい

- カラーホイール
 - 黄、赤、青の三原色から始まる
 - それぞれを合成し、二次色を作成
 - さらに合成し、三次色を作成
- 補色
 - カラーホイール上の真向かいにある色同士
 - メインとアクセントとして利用し、最大の効果を発揮
- トライアド
 - 等しい距離にある三色の組み合わせ
 - 心地よい色合い
 - 三原色はプライマリー・トライアド
 - 緑、オレンジ、紫はセカンダリー・トライアド
- スプリッド・コンプリメント・トライアド
 - ホイール上のどれか1つを選び、その色の補色の両脇の色を選択
 - さらに少し洗練された、鋭さを持つ組み合わせが生まれる
- 類似色
 - 隣り合う色の組み合わせ
- ヒュー
 - 純粋な色
- シェードとチント
 - ヒューに黒を加えるとシェード
 - ヒューに白を加えるとチント
- 単色の組み合わせ
 - 1つのヒューに対応する複数のチントやシェード
- トーン
 - ヒューの濃淡の特定の質を示す言葉
 - トーンが類似すると、濁った感じになる
 - 濃淡をつける(コントラストを強める)といい
- 暖色と寒色
 - 暖色は少し前に出る
 - 寒色は少し後ろに引っ込む
 - 赤や黄色で暖める
 - 様々な青で冷やす
- CMYK
 - C シアン(青)
 - M マゼンタ(赤)
 - Y イエロー
 - K key色(通常は黒)
 - この4色で何千もの色を作れるので、4色プロセスとも言われる
 - 白 全ての色が無い状態
 - 黒 全ての色が重なった状態
 - 印刷機を使って物理的なものに印刷する時に使う
- RGB
 - R 赤
 - G 緑
 - B 青
 - 反射光ではなく、色のついた光線でできている(つまり、モニターから直接目に届く光線)
 - 白と黒の関係は、CMYKの反対
 - ファイルサイズが比較的小さい
 - CMYKとRGB間でファイル変換を繰り返すと、その分データが失われるので、RGBで画像の処理を行い、最後にCMYKに変換するのが最善

ノンデザイナーズ・デザインブック [第4版]