mike-neckのブログ

Java or Groovy or Swift or Golang

2019-01-01から1年間の記事一覧

Spring WebFlux + r2dbc + Kotlin で簡単なアプリケーションをつくる

5日間休みなので、おさらいも兼ねて、久々に Spring をさわることにしている。なお、 Kotlin にしているのもおさらいを兼ねている。また Kotlin coroutine を使っていないのは r2dbc-postgres と組み合わせたときに、 ByteBuf の readableBytes がレスポンス…

クリーンアーキテクチャーの読書メモ(8)

§9 LSP: リスコフの置換原則 1988年 Barbara Liskov S 型のオブジェクト o1 の各々に、対応する T 型のオブジェクト o2 が 1 つ存在し、 T を使って定義されたプログラム P に対して o2 の代わりに o1 を使っても P の振る舞いが変わらない場合、 S は T の…

クリーンアーキテクチャーの読書メモ(7)

§8 OCP: オープン・クローズドの原則 1988年 Bertrand Meyer ソフトウェアの構成要素は拡張に対しては開いていて、修正に対しては閉じていなければならない(『アジャイルソフトウェア開発の奥義』) = ソフトウェアの振る舞いは既存の成果物を変更せずに拡張…

Hello r2dbc with Kotlin

リアクティブな感じで RDB に接続できるやつ。内容的にはバファさんのブログの下位互換未満。 bufferings.hatenablog.com 準備1 使ったデータベースは postgres で、docker で用意した。とりあえず、こんな感じのテーブルを作っておく。 create table users(…

pixela-java-client の CI(circle-ci) を1日1回まわすための lambda 作った

以前書いたとおり、CI でライブラリーのアップデートをslack に送るようにしてみました。 mike-neck.hatenadiary.com しかし、特に開発することがなくなったりすると依存ライブラリーのアップデートにも気づけなくなるので、1日1回 CI (circle-ci) をまわす…

クリーンアーキテクチャーの読書メモ(6)

第三部 設計の原則 クリーンなコードを書くための原則「SOLID 原則」 変更に強い中間レベルのソフトウェア構造 理解しやすい中間レベルのソフトウェア構造 コンポーネントの基盤として、多くのソフトウェアシステムで利用できる中間レベルのソフトウェア構造…

クリーンアーキテクチャーの読書メモ(5)

§6 関数型プログラミング プログラミング以前から存在する(1930年代の Alonzo Church のラムダ計算) 関数型言語の変数は変化しない 並行処理の問題は可変変数がなければ発生しない 変数が変更するコンポーネントと不変のコンポーネントを分離して、可変コン…

クリーンアーキテクチャーの読書メモ(4)

§5 オブジェクト指向プログラミング オブジェクト指向設計とは何でないか 関数とデータの組み合わせ o.f() vs f(o) - オブジェクト指向が生まれる前からやってる 現実の世界をモデル化 - 何を言っているんだお前は カプセル化 境界線の外からはデータが見え…

クリーンアーキテクチャーの読書メモ(3)

第二部 プログラミングパラダイム パラダイム ≒ プログラミングの方法 3つのプログラミングパラダイム §3 パラダイムの概要 3つのプログラミングパラダイム 構造化プログラミング オブジェクト指向プログラミング 関数型プログラミング パラダイムのやってい…

swift-nio-ssl に出したサンプルコードのPRがマージされました

すごい時間かかりましたが、Apple の swift-nio-ssl に出したサンプルコードのPRがマージされました。 github.com 時間かかったのは、僕がどうやら指摘されてた修正をすっかり忘れていたからっぽいです… 現場からは以上です。

クリーンアーキテクチャーの読書メモ(2)

表題の通り §2 2つの価値 プログラマーがステークホルダーに提供する2つの価値 振る舞い 構造 振る舞い 多くのプログラマーが価値だと思いこんでいるもの 機能仕様書とか要求文書とか 構造 = アーキテクチャー 振る舞い = ソフトウェアを簡単に変更できる手…

クリーンアーキテクチャーの読書メモ(1)

以前からちょっとずつ読んでいたけど、そのまとめメモ このメモもちょっとずつ更新予定 Clean Architecture 第一部 イントロダクション 正しいソフトウェア 少ない人数でソフトウェアを動かせる 少ない人数で保守・開発できる §1 設計とアーキテクチャ 設計…

Swift の Result 型メモ

わけあって、 swift-nio-ssl を急遽触っているが、その際に Swift5 の Result 型をさわったので、そのメモ。

Swift Package Manager 5.0 のDevelop バージョンを利用する

swift-nio-ssl に PR を出して早7ヶ月、もはや Swift を忘れた頃に、「ごめんごめん、完全に忘れてた。最新の状態にあわせてくれれば取り込むよ」と言われて、準備をしようとしたところ、 swift-nio-ssl が使っている Swift Package Manager のバージョンが …

JJUG ナイトセミナー 「JVM言語を作ろう! GraalVMで遊ぼう!」に参加してきた #jjug

表題の通りの勉強会に参加してきた。 jjug.doorkeeper.jp 今回も参加したときにはキャンセル待ちで、参加申し込みの段階で 50人待ちオーバー、2日前の時点で 45 人待ち、前日 26人待ちの状態でしたが、当日に参加できるようになりました。キャンセルしてくだ…

Reactor-Netty の http クライアントを Kotlin Coroutine とともにいじってみる

Reactor-Netty と Kotlin coroutine を同時にいじっているブログ記事を見かけなかったので、勉強がてらブログを書いてみることにしました。

JSUG勉強会 - 「Spring Boot ベースの DDD サンプル徹底解説」に行ってきた話

JSUG 勉強会 Spring Boot ベースの DDD サンプル徹底解説 に行ってきました。 jsug.doorkeeper.jp DDD については、考え方的にはわかっているところもあるのですが、実際のコードを見てがっかりしたり、コードの例が理想的すぎて現実味がないといったことか…

複数の goroutine で処理をした結果を集計するようなタイプの goroutine pipeline 改

この前書いた記事のコードを改善する。 改善のヒントは『Go 言語による並行処理』p.77〜78 の部分。チャネルの所有権を割り振ることで、デッドロック、 panic 、不適合なデータの書き込みを防げるようになる。 チャネルの所有者は… チャネルを初期化 書き込…

pixela-java-client の version 0.2 を maven repository にリリースしました

version 0.1 のアップロードについてブログを書くのを忘れていましたが、ブログを書かないうちに version 0.2 をリリースしました。

複数の goroutine で処理をした結果を集計するようなタイプの goroutine pipeline

chan と sync.WaitGroup と close(channel) を駆使して組み立てる package main import ( "fmt" "time" "sync" ) var items = []string { "foo", "bar", "baz", "qux", "quux", } func main() { producer := make(chan string) consumer := make(chan string…

Pixela の Java クライアントを書いてみた

くさ 先月に合同勉強会 in 大都会岡山に行った時に、草を生やす Pixela というサービスが面白そうだったので、 Java のクライアントがないか探してみたところ、なさそうだったので作ってみました。 github.com

try-with-resources に複数のリソースを指定した場合の close の実行順

年末年始に書いていたコードで気になったことがあったので調べた。 結論だけ先に書くと、 try-with-resources に選択したリソースの順番の逆順になる。 Java9 以降で使えるようになった effevtively-final variables in try-with-resources の実行順がどうな…