しおしお

IntelliJ IDEAのことなんかを書いてます

Spring BootのテストでTestcontainersを使ってみる

Spring BootのテストでTestcontainersを使って、データベースをコンテナとして起動してテストを実行してみる感じです。 これを使うことで、開発で使っているデータベースを汚染せずに簡単にデータベースまで通しのテストができそうな気がしています。 Testco…

IntelliJ IDEA系の自作プラグインでLanguage Injectionsの設定を行う方法

このメソッドのこの引数は自動的にHTMLやSQLとして認識させたいなーって思うことがあったりしますよね。 それを、自作のプラグインで自動的に設定してあげる手順的なやつです。 プラグインの設定手順 plugin.xmlの定義 org.intellij.intelliLang の拡張ポイ…

VueRouterでroute変更時にaxiosで実行中のリクエストをすべてキャンセルする

やりたいこと VueRouterでroute変更時に、前のページで投げられていたリクエストを一括でキャンセルしたい。 これが出来ると、遷移前のページで大量にリクエストが投げられていた場合、遷移後のページのcreatedで実行するリクエストがすぐに実行出来るように…

Gradle Dependencies HelperプラグインをKotlin DSL対応したよ

Gradle Dependencies Helper - Plugins | JetBrainsのKotlin DSL対応したよ。 これで、今までGroovy DSLでしか出来ていなかったArtifactやVersion番号の候補表示がKotlin DSLでも出来るようになるよ。 こんな感じのことができるよ。 ※2020.1 (eap)の対応とし…

Vue.jsのrouteパラメータを$router.paramsではなくpropsで受け取る

やりたいこと routeパラメータを、コンポーネント側で$router.paramsを使って取り出すのではなく、propsに代入してもらいコンポーネントはvue-routerに依存しないようにする。 お試しコード ルート定義 ルート定義する際に、 props: true を追加してあげます…

Spring Boot&JPAでコネクション不足になってハマったお話

起こったこと Spring BootでJPAを使ったデータベースアクセスを行っているアプリケーションで、 データベースアクセス後(特定の条件時のみデータベースアクセスが行われていた…)に遅いAPI呼び出しを行った結果コネクションプール不足となった。 原因にたど…

C3.jsのドーナツチャートの中に表示されるテキストの見た目を変更する

やりたいこと ドーナツチャートの中に表示されるテキストのフォントサイズの変更や改行などして表示したい 何も考えずにdonut.titleを使った場合 単純に値を表示したい場合は、下のコードのようにdonut.titleに値を設定する。 c3.generate({ bindto: '#chart…

jest-whenを試してみたよ

Vue.jsのコンポーネントテストをjestを使ってやっている中で、モック用のライブラリのjest-whenを知ったので軽くお試ししてみたよ。 jest-whenとは ざっくりこんなことが出来るようです。 パラメータの内容に応じて、モックが返す値を簡単に定義できる Promi…

Vue.jsでC3.jsを使ってドーナツチャートを表示してみる

Vue.jsなアプリケーションでドーナツチャートを表示する必要があったので、C3.jsを試してみたよ。 ドーナツチャートを表示するコンポーネントの作成 C3.jsを使ってドーナツチャートを表示するためのコンポーネントを作ります。 とりあえず、ファイル名をDonu…

Spring BootでScalikeJDBCを使ってみた

Spring BootでScalikeJDBCを使ってデータベースにアクセスしてみたお話です。 build.gradle データベース関連のライブラリとScalikeJDBCを足してあげます。 implementation 'org.springframework.boot:spring-boot-starter' implementation 'org.springframe…

Spring MVCのHandlerInterceptorでPathVariableの値を参照する

HandlerInterceptorでPathVariableの値を参照する方法のメモ HandlerInterceptorの実装例 PathVariableの値はrequest attributeに入っているので、そこから取り出せばよい。 名前は、HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTEを指定する。 class Sam…

WebStormでVue.jsなアプリケーションをデバッグする

npm run devしたVue.jsなアプリケーションをIntelliJ IDEA(WebStorm)でデバッグする的な話を社内のIntelliJ IDEA勉強会でしたら盛り上がったのでブログにも手順を残しておく。*1 アプリケーションを起動する npm run devで起動してあげましょう。 こんな感じ…

古のspring-data-jpaでNativeQueryとPageableを使ってハマった件

Spring Boot 1.5系のバッチ的な処理に急ぎ手を入れる必要があって、RepositoryにNativeQueryでページングするようなメソッド追加したら謎のエラーでめっちゃハマったお話です。*1 Spring Bootバージョン 1.5系の古いやつですね。過去の遺産じゃないかぎり使…

法人番号のチェックデジットを算出してみた

法人番号のチェックデジットの求め方は、法人番号を確認するページにあるチェックデジットの計算リンクから確認できます。 チェックデジットを求めるコード 川口市の法人番号を使ってチェックデジットを求めるコードを書いてみました。 頭ひと桁がチェックデ…

Spring Batchのchunkステップを並列で実行してみた

Spring Batchのchunkステップの各処理を並列実行してみました。 並列実行するためのジョブ定義 Readerで1から100までの連番を生成して、Writerでtestテーブルにbatch insertするだけのシンプルなchunkステップを持つジョブを使って試します。 並列実行されて…

Spring Boot(MVC)でCORSを色々試してみた

雰囲気でCORSの設定してたので設定によってどんな結果になるか調べてみたよ。 クライアントとサーバのコード クライアント getとpostを行うだけの簡単なhtmlを使って試してみます IntelliJさんについている簡易サーバからSpring Bootなアプリケーションにリ…

java.nio.file.Files#linesのclose忘れをIntelliJさんに教えてもらおう

デフォルトの設定では、AutoCloseableのclose忘れを教えてもらえないので、教えてもらえるようにInspectionsの設定を変更してあげましょう 設定手順 下の画像の流れで選択して、 AutoCloseable used without 'try'-with-resources にチェックを入れてあげま…

Ktor 1.2.0(rc)で追加されたThymeleaf Featureを試してみた

KtorでThymeleafを試す - しおしおを書いたけど、Ktor 1.2.0(今はまだrc)からThymeleafが使えるようになるみたいなので試してみた。 gradle関連 gradle.properties Ktorのバージョンを1.2.0系に設定する ktor_version=1.2.0-rc2 build.gradle ktor-thymeleaf…

KtorでThymeleafを試す

Ktor標準ではThymeleafに対応していなかったので、Thymeleaf使えるかどうか試してみた感じです。 ※Ktor1.2以降からThymeleaf機能が追加されたようです→Ktor 1.2.0(rc)で追加されたThymeleaf Featureを試してみた - しおしお Thymeleaf用のFeatureを作る ktor…

elastic4sでcase classを使った登録と検索

elastic4sを使って↓を試してみました。 case classの内容をElasticsearchに登録する 検索結果をcase classにマッピングして取得する build.sbt build.sbtには、elastic4sを追加します。 val elastic4sVersion = "6.5.1" libraryDependencies ++= Seq( "com.s…

IntelliJ IDEA 2019.1でのJUnit実行について…

IntelliJ IDEA 2019.1からはデフォルトではGradleでテスト実行されるようになったようです。 例えばテストを実行すると、こんな感じにGradleで実行されます。 実行方法の設定変更方法 Settings -> Build, Execution, Deployment -> Build Tools -> Gradle ->…

Dockerコンテナ上で動いているJavaアプリケーションをIntelliJさんからデバッグしてみる

IntelliJ IDEA 2019.1 Release Candidate is Out! | IntelliJ IDEA Blogにあるように、 2019.1 からの新機能ですね。 Dockerfileの準備 デバッグ対象のアプリケーションをDockerで動かすためのDockerfileを作ります。 ※docker-compose.ymlでもデバッグいける…

Spring Bootなアプリケーションのキャッシュの内容を定期的にクリアしてみる

@Scheduled アノテーションを使ってタスクを定期実行し、キャッシュの値を定期的にクリアしています。 設定値(application.properties) 簡単に確認出来るインメモリキャッシュを設定しています spring.cache.type=simple サンプルコード @Scheduled で10秒毎…

JUnit5でTempDirを使って一時ディレクトリを扱う

JUnit4のTemporaryFolder的なやつですね。5.4から追加されて、アノテーションに EXPERIMENTAL とあるのでまだ実験的な機能のようです。 サンプル テストメソッド単位に一時ディレクトリを使う テストメソッドの引数として java.nio.file.Path を受け取り、 o…

IntelliJ IDEAのDomaプラグイン(Doma Support)をKotlin対応したよ

こんなツィートを見かけたので、Doma SupportにKotlin対応追加してみました。 Domaは対応されていて結構便利に使えますよ~(https://t.co/HDwCoENTdK )対応してないのはIntelliJプラグインですねsqlファイルをプラグインで作れないのが不便なだけなのでそこ…

KtorでDoma2を使ってデータベースアクセスしてみた

Ktor - asynchronous Web framework for KotlinでDoma2を使ってデータベースアクセスしてみました。 Ktorの公式サイト上にはデータベースアクセスする方法などが全く無いので、これが正解かどうかはわかりませんが… build.gradle データベースアクセスに必要…

Spring Cloud AWSのSecrets Manager機能を試してみた

昔自分で作った、AWS Secrets Managerの値をSpring Bootでいい感じに使えるようにした - しおしおと同じようにAWSのSecrets Managerの値をSpringの設定値として使えるやつがSpring Cloud AWSに追加されていたので試してみました。*1 ライブラリの追加 build.…

IntelliJ IDEAのHTTP Clientでレスポンス内容を他のリクエストで使用する方法

やりたいこと APIから返ってきたレスポンスの内容を他のリクエストのヘッダなどで使用したい。 例えば、レスポンス内に含まれるアクセストークンを他のリクエストのヘッダに設定したいなんてことをしたい。 試した環境 IntelliJ IDEA 2018.3.4(UE) サーバ側…

KDocを生成するIntelliJ IDEAのプラグイン作ったよ

プラグインでできること 下のようにfunction と class や interface でKDocの開始コメント(/**)を入力してEnterでKDocの雛形が生成されます。 なんで作ったの? KT-11079にあるように、公式的にはJavadoc形式の書き方は推奨していないようです。*1 ただ、ち…

KtorでHello World

Ktor触ったことなかったので、IntelliJ IDEAのプラグイン使ってさくっと動かしてみた。 準備 IntelliJ IDEA(使ったバージョン2018.3)にKtor - Plugins | JetBrainsをインストールします。 プラグイン使って雛形プロジェクトの作成 IntelliJ IDEA - Quick Sta…