takeda_san’s blog

KotlinとVRを頑張っていく方向。

Kotlin

doma-codegen-pluginを触ってみる

概要 doma-codegen-plugin とはデータベースのテーブル定義からEntityを生成してくれる素敵なgradleプラグイン。 今回はこのプラグインを動かしてどんなコードができるのか確認してみます。 github.com 便利なサンプルリポジトリ doma-codegen-plugin入りのK…

Spring Boot+Kotlinでコマンドラインバッチをこう作ってます

概要 みなさん、バッチ作ってますか? 私はもりもり作ってます。 そのときの選択肢として、Spring Boot+Kotlinを使うことが多いので基本的なテンプレを改めて作りました。 ついでに、なんでこんな構成なのかみたいなところを書いていきます。 このコマンドラ…

ExposedのtransactionでSQL関連の例外が出るとリトライされますよ

きっかけ 処理上どうやっても、1回しか実行されないはずの処理が3回実行されていて怪現象発生か?という事件がありました。 再現のコード JetBrains謹製のKotlinのSQLライブラリExposedを使って、transaction単位での処理をしてました。 github.com import o…

SpringをKotlinで書くとバリデーションつらい

きっかけ ズバリこの話なんだけれども。 【Kotlin】KotlinでJava EEのBean Validationを使うときの注意点 - B-Teck! こんな感じのControllerとRequest用のエンティティがあって コントローラー @RestController @RequestMapping("address") class AddressCon…

Kotlinで多次元配列ってどう書くんですか?

きっかけ 配列、つかってますか? こと業務システムにおいては使う機会ってめったにないですよね。 ふと思ったわけですKotlinで配列ってどう書くんだっけ… Kotlinで配列 まず心のふるさとJavaだとこう。 なんとなくint型の箱(ものを投げないでください)が3つ…

SpringでAthenaを使おう!

きっかけ Athena便利ですよね。 S3にCSV形式とかのファイルを置いて、Glue crawler実行するだけで集計できるようになっちゃうんですよ。 ディレクトリを日付ごとに分けることで、パーティションも自由自在! こんなに簡単にログ集計できていいんですかね。 …

build.gradleでCannot resoleve symbol 'KotlinCompile'と出るので

事象 ちょっと検証したいことがあって、Spring InitializrでKotlin&Gradleのプロジェクトを作って Intellij IDEAいつものようにインポートしたんだけど、なぜかビルドできない… なんでや! https://start.spring.io/ 5/18追記 今日またプロジェクト作ってみ…

SpringでGETのAPI作ったときに結果なしをどうやって返そうか考える

きっかけ それは、Springの諸々をKotlin書いていたときの出来事です。 id指定で1件レコードを返すAPIを愚直に書いていたのですが… (関数名の適当さは目をつぶってほしい) Controller @GetMapping("{id}") fun getAddress(@PathVariable("id") id: Int): Find…

名前付きのPointcutって論理演算子で組み合わせができるって本当ですか?

きっかけ SpringでAOPのAdvice対象を指定するPointcut式があるでないですか。 こんなの。 @Before("execution(* jp.takeda.aoplogs..*.*(..))") fun before(joinPoint: JoinPoint) { println("beforeだよー") } "execution(* jp.takeda.aoplogs.*.*(..))" こ…

Doma2のinsertで採番されたIDを戻り値で取得したい

きっかけ Doma2だとinsertの戻り値でシーケンス採番後のエンティティが取得できる。 これがあると何がうれしいかというと、親子関係のエンティティで親のデータを挿入した際のDBで採番されたIDを利用して子のデータを作るみたいなことが簡単にできる。 なん…

Doma2+SpringBoot+Gradle+Kotlinをやっていくときのアレコレ

似たようなタイトルの記事がありますが、お察しの通り続きです。 takeda-san.hatenablog.com きっかけ Doma2をKotlinで使うときにベストプラクティスとしては、エンティティをData Classで書くのが良いらしい。 Kotlin サポート — Doma 2.0 ドキュメント と…

Serverless Java Containerをやっていく

きっかけ AWS Lambdaちからが欲しい…!というわけでAlexaスキルをちょいちょいやっていたけど、これではギョーミングLambdaちからが育たない…というわけで Serverless Java ContainerでギョーミングLambdaをやっていこう。 Serverless Java Containerって? …

Vaadin Flow+Kotlin+Gradleで開発をしたい

きっかけ ふつう何かVaadin Flowで作るときは公式のテンプレみたいなのをダウンロードして作り始めると思うのですよね。 この辺のやつ。 Starter Packs | Vaadin でも、解凍して出てくるのはJava+MavenなのでKotlin+Gradleでやりたいときには使えない。 頑張…

LambdaをKotlinのjarで動かそうとしたらNoClassDefFoundErrorが出たので

起きたこと いっちょ、KotlinのサンプルプログラムをLambdaで動かしたるかいーッとGradleでJarを作って、いつものServerlessFrameworkでデプロイ。 その後、AWSのコンソールからLambdaのテストを実行。 あれ、失敗。 Error loading class com.serverless.Han…

KotlinでビルドしようとするとArrayIndexOutOfBoundsExceptionになる

起きたこと KotlinでLambdaやったるかいーッとビルドしたところArrayIndexOutOfBoundsExceptionになる。 ハローワールド並みに単純なコードなのにおかしいなぁ… 環境 IntelliJ IDEA 2018.1.6 (Community Edition) OpenJDK 10.0.2 Gradle 4.3 Kotlin Plugin 1…

Springで二重送信をチェックする仕組みってないんですか?

きっかけ Springで二重送信のチェックってどうやるんじゃろか。 周りに聞いても自分で適当な文字列でトークン発行して、それをチェックすればよろしいみたいな感じだったんだけど、よく使う機能だと思うのでフレームワーク側に既にあるんじゃないかと思いま…

Spring MVC + Thymeleafでバリデーションしたい

いつも書き方を忘れて、ネットの海をさ迷っちゃうのでいい加減自分でまとめようと思う。 コードはここです。 Kotlinなのは特に意味はないけれど、定期的に書かないと忘れちゃうからです。 github.com とりあえず入力チェック編 まずは、必須入力チェックをし…

自分コインで採掘ごっこをしよう

やりたいこと 暗号通貨の採掘をしたい!!! でも、今更採掘しても報酬が少ないらしい。 ゴールドラッシュを体験したい!!! よし、自分でコインを作って、ザックザック掘ってやるぞ。 コードはここ。 github.com あそびかた 注意事項 採掘して得たコインは…

JavaからKotlinにクリック一つで変換できるって本当ですか?

Kotlinスタートブック -新しいAndroidプログラミングを読んで、Kotlinをやっていく気持ちが高まった。 けど、いざ自分でいろいろ作ってみようって時にどう書いたものかと、ひとり悩んでいたんですが、IntelliJでJava→Kotlin変換できるらしいですね。 おー、…