Java

JJUGで発表してきました #jjug_ccc #ccc_l1

JJUGで「SpringBootとMyBatisでデータベースを可視化する」というテーマで発表してきました。 speakerdeck.com CfPの書き方教えてくれたり、発表資料レビューしてくれた同僚たちには感謝しかない。 朝イチ・冬将軍・雨模様で果たして聞きに来てくれる人いる…

MySQLのConnector/J (JDBC)のconnectTimeoutとsocketTimeout #MySQL

MySQLのConnector/J (JDBC)にはconnectTimeoutとsocketTimeoutのパラメータがあり、JDBCの接続文字列に追加することで設定できる。 MySQL :: MySQL Connector/J 5.1 Developer Guide :: 5.1 Driver/Datasource Class Names, URL Syntax and Configuration Pr…

JJUG CCC 2017 Fall CfPに応募してみた #jjug_ccc

初心者枠があったので、ダメ元で応募してみた。 JJUG CCC 2017 Fall CfP 募集開始しました | 日本Javaユーザーグループ 参考にしたもの CfPどうやって書くのがいいかな、って思ってたら同僚が色々教えてくれた。 その中でも特に参考になったもの。 blog.buil…

SonarQubeを使ってみた #sonarqube

概要 Javaで作ってるリポジトリにSonarQubeを適用してみました。 SonarQubeとは? SonarQubeは、ソースコードの静的解析ツールです。 www.sonarqube.org 今回はオープンソースであれば無料で使えるSonarQube.comを利用します。 about.sonarqube.com アカウン…

Javaで期間の日数を計算する #java

概要 2016年1月7日から2017年4月27日みたいな期間の日数を数える方法。 Period…惜しい 日付の期間を扱うには java.time.Period クラスがあるが、悲しいことに日数をカウントするAPIがない。 getDays() は日付だけで計算をするため、月をまたいだ日数のカウン…

CircleCIでjacocoのカバレッジレポートをとる #circleCi #jacoco #java

概要 SpringBoot + Spock + maven で開発をしているんだけれど、せっかくテストも書いているのでカバレッジレポートをCI時に取得するようにする。 pom.xmlにjacocoプラグインを追加 ... <build> ... <plugins> ... <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.7.9</version> <executions> <execution> <id>prepare-agent</id> </execution></executions></plugin></plugins></build>

Mavenで特定のクラスのテストだけ実行する #maven #java

特定のテストだけ mvn test -Dtest=red.sukun1899.SampleSpec クラス名が一意になるなら、パッケージは省略できる mvn test -Dtest=SampleSpec 複数の場合はカンマでつなぐ mvn test -Dtest=HogeSpec,FugaSpec 特定のメソッドだけ実行する場合シャープでつな…

application.ymlの値をJavaアプリケーション側で受け取る #SpringBoot

org.springframework.beans.factory.annotation.Value を使うとよい。 ただし、まとまった単位で管理したいときは @ConfigurationProperties を使うのがよさげ。 例 @Configuration public class AppConfig { @Value("${spring.datasource.schema}") private…

SpringBootでMybatisの設定を動的に書き換えられないか挑戦してみた(失敗した)

MyBatisのConfigをJava側で動的に書き換えられないか調べてみた。 結果できなかったんだけど、備忘録として。 stackoverflow.com org.apache.ibatis.session.Configuration に値を突っ込むことでどうにかなりそう? configuration.getVariables().put("globa…

Javaの文字列結合はどうしたものか #java

以前はStringBuilderかStringBufferがお約束だったけども、String#joinがJava8から追加されてどうしたらいいものか。 StringJoinerなんてのもある。 というかString#joinは内部的にはStringJoinerを使っているらしい。 色々記事を漁ってみたものの、パフォー…

SpockでJavaの無名クラスを使ったらCircleCIがコケた #circleci #java #spock

CircleCIがテストの途中にタイムアウトでこけた。 command mvn test took more than 10 minutes since last output ログを見ても途中で止まっており、結果としてもタイムアウトなので検討つかない。 もちろんローカル環境では発生しない。 Revertなりなんな…

JavaのStreamで独自ソート #java

sortedにComparator Streamで独自ソートするにはsortedにComparatorを渡してやればOK。 List<Person> personsSortedByName = getPersons().stream() .sorted(new Comparator<Person>() { @Override public int compare(Person person1, Person person2) { return person1.get</person></person>…

SpockでオーバーロードされたメソッドをMockする #spock #groovy

JavaでオーバーロードされたメソッドをMockしようとしても、うまくMockできないことがある。 どちらのメソッドを呼べばいいかわからないからだと思う。(たぶん) 下記のようなメソッドをMockしたい場合の対応。 public String doSomething(String arg1) pub…

SpringBootのWebAPIでResponseのJSONをPretty Printにする #springboot

SpringBootでWeb APIを作ってる時に、ResponseのJSONをPretty Printにしたくなった時の対応。 やりたいこと こういうのを {"hoge":[123,456],"huga":"Yeah!","piyo":{"code":"AA1234","name":"Bob"}} こういう感じにしたい { "hoge" : [ 123, 456 ], "huga" …

Collectors.toMapで、同一キーを処理する #java

streamでMapに詰める Javaのstreamを使ってMapにつめかえる場合、Collectors.toMapを使う。 Map<Long, String> fooMap = fooList.stream() .collect(Collectors.toMap( Foo::getId, Foo::getName ); しかし上記の場合だと、キーが重複していた場合に IllegalStateException</long,>…

CircleCIでメモリ上限値越えエラー #circleci

現象 CircleCIのビルドが TIMED OUT で失敗して、見に行ってみたら下記のようなメッセージが表示されていた。 Your build has exceeded the memory limit of 4G on 1 container. The results of this build are likely invalid. We have taken a snapshot of…

JJUG CCC 2016 FALL に参加してきた #jjug_ccc

12/3(土)にJJUG CCCに参加してきたので印象に残ったことや感想など。 #ccc_a1 Be a great engineer! speakerdeck.com 追いかけるべきトレンドを見抜くには、その本質を見極めることが大事という話だった。 結局これが一番おもしろかったかもしれない。 体物…

最近迷っていること: メンバーオブジェクトのアクセサを用意すべきか? #java #プログラミング

最近迷っていること。 クラスのメンバーオブジェクトのアクセサを直接定義するよりは、隠蔽してあげたほうがいいんじゃないかと思うこと。 最終的にケースバイケースだろうとは思いつつ、気にする観点やポリシーなどはまだまだ引き出しが少ない。 直接アクセ…

Mockitoでvoidメソッドをゴニョゴニョする

doAnswer を使うと、Mockのvoidメソッドの中でゴニョゴニョできる。 全然違うことで悩んでいて見つけた方法なので、使い所はよくわからない(笑) けど、メモとして残しておく。 以下はSpockで書いた場合で、メソッドの呼ばれた回数を集計してる。 (実際に回…