Java

657. Robot Return to Origin

LeetCode の挑戦ログ Problem https://leetcode.com/problems/robot-return-to-origin/ 座標位置を上下左右に動かす指示が文字列で与えられる R (right), L (left), U (up), and D (down) 元の位置 (0, 0) に戻っていたら true , 戻っていなければ false を…

A - Remaining Balls

AtCoder の挑戦ログ Problem https://atcoder.jp/contests/abc154/tasks/abc154_a Solution import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String color1 = sc.next(); sc…

728. Self Dividing Numbers

LeetCode の挑戦ログ Problem https://leetcode.com/problems/self-dividing-numbers/ 整数の範囲が渡される 範囲の中から、自身の桁ごとの数字で割り切れる値を抽出する 0 を含む値は除外する Solution class Solution { public List<Integer> selfDividingNumbers(i</integer>…

961. N-Repeated Element in Size 2N Array

LeetCode の挑戦ログ Problem https://leetcode.com/problems/n-repeated-element-in-size-2n-array/ 2N サイズの配列が与えられる N+1 種類の整数が含まれている 一つの要素が N 回繰り返されている N 回繰り返されてる数を特定する Solution class Solutio…

JUnit5 を IntelliJ IDEA から実行できない #IntelliJIDEA

TL;DR Maven のプロジェクトに JUnit5 の依存を追加した コマンドラインからは通るが、 IntelliJ IDEA からの実行がエラーになる junit-platform-launcher を依存に追加したら実行できるようになった 環境 openjdk 12.0.1 IntelliJ IDEA 2019.3.2 詳細 公式…

905. Sort Array By Parity

LeetCode の挑戦ログ Problem https://leetcode.com/problems/sort-array-by-parity/ 正の整数からなる配列を渡される 偶数 -> 奇数の順にソートする 偶数 -> 奇数であれば他の順序は問わない Solution class Solution { public int[] sortArrayByParity(int…

832. Flipping an Image

LeetCode の挑戦ログ Problem https://leetcode.com/problems/flipping-an-image/ バイナリマトリックス(二次元配列)が渡される 各行をひっくり返した後、反転させる Solution class Solution { public int[][] flipAndInvertImage(int[][] A) { return Ar…

1299. Replace Elements with Greatest Element on Right Side

LeetCode の挑戦ログ Problem https://leetcode.com/problems/replace-elements-with-greatest-element-on-right-side/ 配列の右側で最大の値に置き換えた配列を作成する 配列の最後に -1 をつける Solution class Solution { public int[] replaceElements(…

数字の配列を降順にソートする #java

概要 数値の配列を降順にソートされたリストにする Stream の sorted を使う Collections の reverseOrder で降順になる サンプル int[] nums = {3, 6, 8, 1, 5, 4, 7, 9, 2}; List<Integer> sorted = Arrays.stream(nums).boxed() .sorted(Collections.reverseOrder(</integer>…

JJUG CCC 2018 Fall で登壇してきました #jjug_ccc #ccc_e4

JJUG CCC 2018 Fall にて「複雑なドメインに泥臭く立ち向かう」というタイトルで登壇してきました。 JJUG CCC での登壇は1年ぶりです。 セッション概要 www.java-users.jp 当日の資料 speakerdeck.com 前回登壇したときのブログ su-kun1899.hatenablog.com …

データベースのPRIMARY KEYを自動採番せずにアプリケーション側で生成する

データベースの自動採番 データベースにはPRIMARY KEY(要はID)を自動採番で生成してくれる機能を提供していることが多い。 MySQLのAuto Increment PostgreSQLのSerial OracleのSequence etc サロゲートキーのような、特に意味のないデータのIDを発行するとき…

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で書いた場合で、メソッドの呼ばれた回数を集計してる。 (実際に回…