yoskhdia’s diary

DDDとかプログラミングとかアーキテクチャとか雑多に

Scala

誰得: finagle-mysql + quill code reading

誰得情報ですが、せっかく読んだので公開しておきます。 Version finagle-mysql 19.12.0 quill 3.5.1

Scalaを例に「仕様」パターンを実装する

この記事はFOLIO Advent Calendar 2018の6日目です。 FOLIOでも使っている「仕様」パターンをScalaで実装する方法について紹介します。 「仕様」パターンとは Eric Evans氏とMartin Fowler氏による仕様パターンに関する論文があります。 https://martinfowle…

エンティティの同一性を表現するためにequalsをオーバーライドすべきか否か

このエントリは ドメイン駆動設計 #1 Advent Calendar 2018 の5日目です。 4日目は @s_edward さんの「Microservices と DDD」でした。 6日目は @kawakawa さんの ドメインオブジェクトとユースケースの関係について です。 TL;DR エンティティの同一性を表…

Kamonを使ってログにトレースIDを出力する(+Play Framework)

一般に非同期処理を行うと、その実行をログからトレースすることは難しくなります。 Scalaアプリケーションを運用する際もこれが問題となります。 コツコツとログにIDを埋めて回ることもできますが、横断的な関心事はAOPで解決したくもなります。 ということ…

「Reactive Messaging Patternsに学ぶシステム間統合」というテーマで発表してきました

第5回Reactive System Meetup in 西新宿で登壇してきました*1。 reactive-shinjuku.connpass.com 発表資料 docs.google.com 一部表現を変えつつ、補足をして発表資料を公開します*2。 トークスクリプトもつけてありますので併せてどうぞ。 明日から開催のSca…

Scalaで良い感じにURI(URL)を操作する

Java標準に良い感じのURL(URI)ビルダーが無いの微妙にしんどい— Okuda (@yoskhdia) 2018年2月26日 TL;DR sttpのcoreライブラリだけ使用しました。 しかし、デフォルトでデコードも行われるため、これを回避する方法を考えました。 将来的に使えなくなる可…

書籍『Akka実践バイブル』の翻訳レビューに参加してきました

書籍『Akka実践バイブル』の翻訳レビューに参加してきました。*1 書籍のレビュアーとしては2回め、技術書としては初めてです。 興味のある人を増やせれば良いなーと思い、少しばかり本の紹介をしてみたいと思います。 www.shoeisha.co.jp *1:主に11章〜13章…

JVMアプリケーションを運用する際のメジャーどころチューニングポイントメモ

JVMにチューニング項目は多々あれど、プロダクションで運用する際に予めおさえておきたい項目をまとめてみるエントリです。*1 勿論、OSもJVMもデフォルトである程度のパフォーマンスは発揮でき、計測を伴わないチューニングは悪手であることはよく知られてい…

ScalikeJDBC streamsモジュールの使い方解説

ScalikeJDBCをReactive Streamsに対応させる記事を公開してから、ScalikeJDBC公式にモジュールが取り込まれる*1こととなり、ついに本日バージョン3.0がリリースされました! github.com この scalikejdbc-streams モジュールの使い方を解説するエントリです。…

squbs探訪 その2(簡単なWebアプリケーションをつくってみる)

yoskhdia.hatenablog.com の続きです。 ごく簡単なWebアプリケーションを作成して、どれだけAkkaに近いかを見ていきましょう。 Activatorテンプレートが公開されているので、基本はこれを参考にすれば良いですが、折角なのでAkka HTTP + Akka Streamsを使う…

squbs探訪 その1

squbsというPayPalが作ったライブラリをご存知でしょうか。 github.com Webアプリケーションを構築する際には、色々なフレームワークの選択肢がありますが、Scala/JavaでAkkaを基盤にしたアプリケーションを作りたいなら、このsqubsを試してみると良いかもし…

ReactiveStreamsのTCKを通すまでの手順(Publisher編)

ReactiveStreamsではSpecificationだけでなく、TCKも公開されています。 reactive-streams-jvm/tck at v1.0.0 · reactive-streams/reactive-streams-jvm · GitHub 前回公開したScalikeJDBC-streamsもこのTCKを通してみました。 その作業記録エントリです。 ※…

ScalikeJDBCをAkka StreamsのSourceにする (ScalikeJDBC + Reactive Streams)

Scala Advent Calendar 2016の15日目です。 バッチアプリケーションを作ることになったので、Akka Streamsを使おうかと考えました。 Slickだと標準でstreamメソッドが用意されているため、Akka Streamsとも連携させやすいですが、ScalikeJDBCが学習コストが…

マイクロサービスとDDDをGo言語とScala+Akkaで比較したらEventSourcingの話にもなって面白かったまとめ

Reactive Messaging Patterns読書会のなかで、「マイクロサービスとAkkaとGo」な面白い話題が出たので代表でまとめる試みエントリです。(結構、色々な話題に飛んでいるので難度高い。) まとめ方としては、会話ログを転記して、最後にまとめる形をとってい…

false sharingの整理

マルチスレッド時代における意外なハマりどころfalse sharingについてまとめておきます。 参考にあげている書籍「Javaパフォーマンス」からのまとめです。 false sharingとは 例えば、以下の様なコードがあるとします。 public class DataHolder { public vo…

Scalaマクロへの誘いTweetまとめと補足

Scala 2.11時点でマクロはexperimentalな機能です。 将来のバージョンでは変わる可能性がある点にご注意ください。 将来的には scala.meta というプロジェクトに移るようです。 公開されているスライドを見ると、今のマクロ記述から新しい記述へはこう変わる…