しおしお

IntelliJのあれやこれや

GradleのcompileOnly知らなかったので使ってみた

Gradle2.12からコンパイル専用のスコープが導入されていたらしいので試してみた。 build.gradleの定義 compileOnlyを使うことで、コンパイル時のみ依存するライブラリを定義できる。 testCompileOnlyを使うと、テストのコンパイルじのみ必要なライブラリを定…

sphinx-javalinkを使ってSphinxドキュメントからJavadocへのリンクをはってみる

Sphinxで作ったドキュメントから、Javadocへのリンクをはれる拡張のsphinx-javalinkの使い方。 ※昔書いた、sphinxからjavadocへのリンク簡単に貼れる拡張 - しおしおのほうが使い方は簡単なんだけど、Java8で作られたドキュメントへのリンクがうまくできない…

IntelliJ IDEAのjump to colors and fontsが便利過ぎる件

いまいさんのこんなツィート見かけて、かなり便利そうなのでちょっと試してみた。IntelliJさん,"Jump to Colors and Fonts"なんで便利な機能,いつの間に作ったんやw— いまいまさのぶ (@masanobuimai) 2017年7月27日なにが便利かというと、jump to colors …

Gradleのsonarqubeプラグインを使ってみる

Analyzing with SonarQube Scanner for Gradle - Scanners - Doc SonarQubeを使ってGradleなプロジェクトの品質チェックを行う方法。 sonarqubeプラグインを導入する Gradleのbuildスクリプトに以下を追加する。(バージョンは現時点での最新) plugins { id "…

proxy環境下でUpsourceを使う

proxy環境下にUpsourceを構築して、外の世界のリポジトリ(例えばgithub)のコードを参照したい場合の設定方法。※古いバージョン(Upsource 2017.1以前)では、多分この方法ではproxyを突破することができないと思います。 かなり初期の頃は、どう頑張ってもpr…

JBeret SEで起動したJOBを停止する

JBeret SEで起動したJOBをJMXを使って停止させてみる。*1 MXBeanを作る インタフェースと実装はこんな感じに。 とりあえず、executionIdとステータスやジョブ名を参照できるようにして、操作としてstopを定義してみた。 インタフェース public interface Job…

IntelliJ IDEA2017.2でパンくずリストをエディタの上部に表示する

IntelliJ IDEA2017.2 EAPにしたらパンくずリストが、こんな感じにエディタの下に表示されるようになってしまった。 これを、2017.1の時と同じようにエディタの上部に表示するように変更してみた。※build no:172.2465.6からは、下に書いた面倒なことをやらな…

PostgreSQLでREAD COMMITEDとdelete->insertの組み合わせの問題のメモ

PostgreSQLのREAD COMMITEDでdelete->insertを使った場合、あるはずのレコードに対する削除がされずにinsertで一意制約違反が発生するらしい。。。 テーブルの状態 postgres=> select * from hoge; id ---- 1 2つのトランザクションで以下のSQLを実行 delete…

DomaでOracle12CのIdentity Columnを使ってみた

DomaでOracle12CのIdentity Columnを使う方法です。DomaのOracleDialectなどなどでは、使うことが出来ないので色々いじってあげる必要があります。 Oracle12C用のDialectを作る 基本は、OracleDialectと同じでいいので継承して作ります。 変更点は、Identity…

JBeretでジョブ定義ファイルの置き場所を変えてみる

JBeretでは、org.jberet.spi.JobXmlResolverの実装クラスを作ることで、ジョブ定義のXMLファイルの置き場所を変更できる。 JobXmlResolverの実装クラスを作る JobXmlResolverのJavadocによると、resolveJobXml以外は任意となっているので、 任意メソッドの空…

JBeretのカスタムなCDIスコープを試す

JBeret1.2から追加されたカスタムCDIスコープを試してみた。 JBeretのバージョン compile 'org.jberet:jberet-core:1.2.2.Final' StepScope 1つのStepがスコープとなるので、同一ステップ内であれば同じBeanのインスタンスが使用される。 Stepが変わるとBean…

DomaをIntelliJ&Gradleの組み合わせで使った場合にIntelliJでビルドできるようにする

DomaをIntelliJ&Gradleで使ったば場合にIntelliJ側でもビルドできるようにする手順です。 バージョンなど Gradle task wrapper(type: Wrapper) { gradleVersion = '3.3' } IntelliJ IDEA 下のバージョンで確認をしました。 2016.3.2 2017.1(EAP) プロジェク…

JenkinsでIntelliJ IDEAのinspectionを実行して結果をいい感じに表示させてみる

IntelliJさんのinsupectionはCI環境でも実行できるので、Jenkinsで実行&いい感じに結果を表示する方法を調べてみた。 *1 Jenkinsに必要なプラグイン Warnings Plugin - Jenkins - Jenkins Wiki IntelliJさんのinspectionの結果をいい感じに集計&表示するた…

JBeretでスクリプト言語を使用してバッチアーチファクトを作ってみる

JBeretのユーザーズガイド見てたら、「Develop Batch Artifacts in Script Languages」なる章*1があったので試してみた。 JBeretのバージョンは1.3系にする Gradleだとこんな感じです compile 'org.jberet:jberet-se:1.3.0.Beta3' 使用するスクリプト言語の…

H2データベースに複数プロセスから接続する

H2

こんな感じに、URLに;AUTO_SERVER=TRUEをくっつけるだけでいける。 jdbc:h2:./h2/db/nablarch_example;AUTO_SERVER=TRUEアプリ実行中にIntelliJから繋いで状態確認するレベルであればこれで問題なさそう。Featuresによると、最初の接続を閉じた場合に実行中…

Spring Bootの@Valueに指定するプレースホルダのプレフィックスを変更する方法

@Valueアノテーションを使ってプロパティの値をインジェクションする場合、デフォルトではプレフィックスに${を指定する必要がある。 Javaで書いてる場合は問題ないけど、Kotlinを使うと文字列内の$は変数を展開するために使うので下のコードのようにエスケ…

IntelliJ小ネタ:Compact Empty Middle Packagesでも好きなパッケージ配下にファイルを作る!

IntelliJさんの、Project Viewでパッケージの表示状態をCompact Empty Middle packagesな状態にしていると、間のパッケージにファイルを作成することができません。例えば、下の画像の状態でdomaパッケージを選択してファイルを作ると、domaの下に作られます…

Spring Bootでjackson-module-kotlinを使う

Jacksonのkotlin対応モジュール をSpring Bootで使ってみる。 バージョンなど Spring Boot:1.3.5 Jackson:2.6.6 Jacksonのkotlinモジュールを依存に追加 Gradleだとこんな感じですね compile 'com.fasterxml.jackson.module:jackson-module-kotlin:2.6.6' Js…

IntelliJさん標準で背景画像が設定できるようになってた

IntelliJさんの最新のEAP(build no:162.646.4)にしてみたら、 標準機能でIDEの背景画像設定できるようになってたので試してみた。 背景画像を設定する画面を開く Find Actionから「Set Background Image」を検索して、設定画面を開きます。下の画像の設定画…

JBeretでジョブ定義をロジックで構築して実行する

JBeretでは、ロジックでジョブ定義を構築することが出来るみたいなので試してみた。 これを使うと、xmlでジョブ定義をすることなくバッチを実行することができるようになる。 ただし、JSRで定められているわけではないので、バッチ実行時にJBeretを直接扱う…

Gradleで似たようなタスクをグループ化する

Gradleのグループ化機能を使うと同じ種類位のタスクをグループでまとめられるようになる。 IntelliJを使っている場合、Gradleウィンドウではグループ毎にタスクがまとめられて表示されるので、ビルドスクリプト側でグループ化しておくとIntelliJさんでもタス…

sphinxからjavadocへのリンク簡単に貼れる拡張

Sphinxのドキュメントから、Javadocページ編のリンクを貼るのを簡単にするjavasphinx User’s Guide — javasphinx 0.9.8 documentationという拡張です。この拡張を使うと、Javadocのトップページへのパスをconf.pyに設定して置けるので、 ここのページではク…

IntelliJ IDEA16でMavenプロジェクトが開けない場合の対処方法

IntelliJ IDEAのバージョン16で、Mavenプロジェクトを開こううとした時に下のエラーが出た場合の対処方法。 com.intellij.execution.ExecutionException: java.lang.UnsupportedClassVersionError: org/jetbrains/idea/maven/server/RemoteMavenServer : Uns…

IntelliJ IDEAのタブ設定で未保存のファイルをわかるようにする

設定画面のEditor -> General -> Editor Tabsで設定する。 Tab AppearanceのMark modified tabs with asteriskのチェックをオンにすると、未保存のファイルのタブにアスタリスクが表示されるようになる。表示のされ方はこんな感じ。 おわり。

ServletInputStreamをラップして、リクエストのボディをログに出力してみる

お仕事で、リクエストボディのJSONの内容をログに出力したいんだと言われたので作ってみた。 実現方法 1. FilterでServletRequestをラップする 2. ServletRequestのラッパーでは、InputStreamのgetterでログ出力機能をもったServletInputStream実装を返す 3.…

Oracle11gR2からはlikeのパターン一致文字に全角が含まれなくなったもよう

ドキュメントにこんな注意書きが増えてた。。。Oracle12cで試してみたら、全角はパターン一致文字にならなかった。全く把握できてなかった(´・ω・`) SQL> select * from test where value like 'ほ_'; ID VALUE -- ---------- 1 ほげ SQL> select * from te…

jax-rsなリソースクラスをArquillianを使ってテストしてみた

Arquillian REST Extension 1.0.0.Alpha3 Released · Arquillian Blog を見ながらやるとかなり簡単にできた。 テスト対象のリソースクラス シンプルなこんな感じのリソースクラスをテスト対象に。。。 public class HelloResource { @GET @Produces(MediaTyp…

JSR352-Batch Applicationを試してみた(ジョブの停止-Chunk)

Chunckステップ実行中にバッチジョブを停止する方法。基本的な考え方やステータスの遷移は、Batchletの停止と同じ。違いは、Chunkの場合はBatchletのような停止用の実装を行う必要はないこと。Chunkの場合は、Writerが処理中の場合はWriterの処理が終わり次…

JSR352-Batch Applicationを試してみた(ジョブにパラメータを指定する)

JSR352-Batch Applicationを試してみた(ジョブの停止-Batchlet) - しおしおの続編。今回は、ジョブにパラーメータを渡す方法を試してみた。 ジョブ起動時にパラメータを指定する方法 以下のコードのように、JobOperator#startの2番めの引数にジョブ起動時の…

GradleのjarタスクでMANIFEST.MFにgit情報を書き込むプラグイン作ってみた

Gradleのjarタスクで、gitのどのリビジョンをベースに作成したかをMANIFEST.MFに書き込むGradleプラグインを作ってみた。 作った理由 最近、社内のMavenリポジトリに古いソースコードベースのartifactが頻繁にアップされてかなりハマったので。。。 jarがど…

JSR352-Batch Applicationを試してみた(ジョブの停止-Batchlet)

JSR352-Batch Applicationを試してみた(Chunkステップ編) - しおしおの続編で、今回は実行中のジョブの停止を試してみる。 実行中ジョブの停止方法 JobOperator#stopを呼び出すことで実行中のジョブが停止する。 sotpメソッドの引数には、停止対象のジョブ実…

UpsourceのIntelliJ IDEAプラグインを使ってみた

JetBrainsのUpsource触ってみた(リポジトリブラウザ) - しおしお依頼久しぶりのUpsourceネタ。 お仕事系プロジェクトで使ってみようかなと思って久しぶりに触って見てたら、IntelliJ IDEA用のプラグイン出てたのでプラグインの使い方を少し整理してみた。 プ…

JSR352-Batch Applicationを試してみた(Chunkステップ編)

JSR352-Batch Applicationを試してみた(Batchlet編) - しおしおの続編です。今回は、chunkステップを試してみます。chunkステップは、ItemReaderでデータベースやファイルなどから読んだデータをItemProcessorで変換(ビジネスロジックで色々導出したりしてIt…

Gradleのcoberturaプラグイン2.2.7以上で発生するClassNotFoundExceptionへの対処方法

Gradleのcobertura-pluginのバージョンを2.2.7以上に上げた場合にClassNotFoundExceptionがでてテストが実行できない件の対処方法。 build.gradleの内容 plugins { id 'net.saliman.cobertura' version '2.2.8' } group 'siosio.test' version '1.0-SNAPSHOT…

JSR352-Batch Applicationを試してみた(Batchletをテストしてみた)

JSR352-Batch Applicationを試してみた(BatchletでDBアクセス-JPA編) - しおしお(´・ω・`)で作ったBatchletをArquillianでテストしてみた。とりあえず、BatchletでJPA使ってるのでhttp://arquillian.org/guides/testing_java_persistence/あたりを見ながら…

JSR352-Batch Applicationを試してみた(BatchletでDBアクセス-JPA編)

JSR352-Batch Applicationを試してみた(Batchlet編) - しおしお(´・ω・`)の続編です。今回は、Batchletでデータベースにアクセスしてみようかなと。データベースへのアクセス方法は、JPA使ってもいいし、素のJDBCやオープンソースのライブラリを使ってもい…

JSR352-Batch Applicationを試してみた(Batchlet編)

JSR352(Batch Application)を動かして見たので、その記録を残しておくと。まず、動かしてみたいレベルだったのでサクッと動かすことができそうなBatchletを使っています。 実際にバッチアプリケーションを作成する際は、BatchletにはSQL一発ですむ処理を実装…

IntelliJのGenerateメニューで生成されるアクセッサにJavadocも出力するように

IntelliJ14.1から、Generateメニューで生成するアクセッサのフォーマットがカスタマイズできるようになりました。 これで、旧バージョンでは出来なかったJavadocのカスタマイズなんかもできるようになるので、テンプレートの編集手順まとめてみました。 アク…

IntelliJでクラスのヘッダーコメントをプロジェクトごとカスタマイズしよう

@masanobuimaiさんの下のツィートを見て、そういえば IntelliJ IDEA 14.1 EAP is Available! | JetBrains IntelliJ IDEA Blogにファイルテンプレートをプロジェクトで持てるみたいなこと書いてあったなと思って調べてみた。@kis JetBrains系もIDEごとに設定…

IntelliJ IDEA14でのコード補完を整理してみた

コード補完の設定(IntelliJ IDEA12版)へのアクセス未だにあるので、バージョン14でのコード補完どうなってるか整理してまとめてみた。 コード補完の設定画面 バージョン14から設定画面ガッツリ変わったので、Code Completionの設定する場所にたどり着くの毎…

IntelliJでGradleプロジェクトを新規作成した時に出力されるbuild.gradleの内容を変更する

IntelliJでGradleプロジェクトを新規で作った場合、build.gradleが以下の内容で出力される。(Use default gradle wrapperを選んだ場合はwrapperタスクは出力されていないと思います。)この内容だと、ソースコードの準拠レベルが1.5だったりjunitのバージョン…

IntelliJのデバッグ実行でSpringBootのホットデプロイできちゃう感

SpringBoot+Gradleでホットデプロイを使えるようにを書いたところ、@makingさんから下の反応もらえた!@_siosio_ ちなみにこの変更であればデバッグ実行でもスワップされると思います(最近知った) ReqestMappingの変更はloadedがいると思いますが。— Toshiak…

SpringBoot+Gradleでホットデプロイを使えるように

GradleなSpringBootプロジェクトでホットデプロイを有効にする手順(IntelliJ IDEA大好きっ子なので、IntelliJ IDEAベースでの手順になってます。)Spring Boot Reference Guideによると、springloadedなるものを使ってあげるだけで、わりと簡単にホットデプロ…

IntelliJさんのpsvmで生成されるmainメソッドを可変長引数に変更してみよう

IntelliJさんのpsvmで生成されるmainメソッドの定義を変更する方法です。デフォルトの設定だとString配列を受け取るmainメソッドが生成されます。生成されるコードのイメージはこんな感じですね。 public static void main(String[] args) { } どうやら、Str…

Kotlinのチケットを眺めてみて

Kotlinアドベントカレンダーの12/20の記事です。Kotlinへの要望やバグの管理は、https://youtrack.jetbrains.com/issues/KTで行われているので、その中で私がふんだバグやこれ直してほしいな的なのを幾つかあげています。 これは的なチケットには、vote(+1)…

IntelliJでSystem.out.printlnのメソッド参照のLive Template登録したら幸せになれた

Java8のお勉強してるとSystem.out.printlnのメソッド参照をlambda式の中でよく使うので、Live Templateに登録してみたらかなりいい感じになりました。 Live Templateへの登録内容 下の画像の内容をLive Templateに登録しています。 内容はかなりシンプルで、…

KotlinでSpring Bootしてみた

Spring Bootってキワードよく聞くし、触ってみたくなったのでKotlinつかってちょっとだけ書いてみた。 やったこと 「Hello World!」と表示するhtmlを返すだけ。Viewは「thymeleaf」を使っています。 一応テストコード的なものも書いてみました。 プロダクシ…

IntelliJのショートカットのSecond Strokeをポップアップで表示させる

IntelliJ IDEA的な小ネタ。 KeyMapでSecond Strokeを割り当てているショートカットキーを使うと、デフォルト設定の場合下の画像のようにステータスバーにSecond Strokeの内容が表示されます。 まぁこれでも問題ないんだけど、でかいディスプレイ使ってると微…

IDEAVimの中の人の反応の早さ

IDEAVimの新しいバージョン(0.38)がきてたのでアップデートしてみたら、いたるところに行番号が表示されるように(´・ω・`) 例えば、Find in Pathの検索文字入力する欄やコミットメッセージ入力するとこなどでも行番号が表示されてました。気になったのでTwi…

IntelliJ IDEA用のDomaプラグイン作ってみた

IntelliJ IDEA用のDomaプラグインを公開しました。プラグインは、JetBrains Plugin Repository :: Doma Supportからダウンロードできます。 IntelliJ上のpluginメニューからインストールすることもできます。手順は以下の画像を参照ください。 インストール…