タグ

ブックマーク / mike-neck.hatenadiary.com (11)

  • JUnit5の標準のassertとDynamicTestの用い方 - mike-neckのブログ

    JUnit5でわりと便利だと思っているのが、JUnit5に標準でついてくる Assertions#assertAll と @TestFactory で返す Iterable<DynamicTest> です。 エンタープライズな現場でよく見かけるテストとして、こういうのがあるかと思います。 @Test void firstTest() { final Map<Long, UserEntity> map = getUsers(); final UserEntity u1 = map.get(1L); assumeTrue(u1 != null); assertEquals(1L, u1.getId()); assertEquals("ユーザー1", u1.getName()); assertEquals("test1@example.com", u1.getEmail()); final Us

    JUnit5の標準のassertとDynamicTestの用い方 - mike-neckのブログ
  • Gradle2.10のリリースノート意訳 - mike-neckのブログ

    久々にパソコンの前に座ったので、リハビリ代わりに先月にリリースされたGradle2.10のリリースノート意訳というか、中途半端に翻訳した。分量が多かったので訳してないところがありますが、引き続き入院してるので、翻訳の続きはありません。 オリジナル(英文)はこちら 新機能と変更 ネイティブコンパイルのパフォーマンス改善 Gradleはインクリメンタルビルドする場合に、すべての入力値、入力ファイル、出力ファイルを必要としている。それによってGradleは入出力ファイルの変更がない場合にタスクをスキップできる。 ネイティブコンパイル系のタスクの場合、ディレクトリー構造も考慮しているため、インクルードされるディレクトリーが多い場合や、ルートディレクトリーがインクルードされている場合にパフォーマンス上の問題が発生した。UP-TO-DATEチェックを速くするために、以下の変更をおこなった。 インクルー

    Gradle2.10のリリースノート意訳 - mike-neckのブログ
    waman
    waman 2016/02/07
  • Gradle3におけるJavaプロジェクトのビルド入門(1) #gradle - mike-neckのブログ

    Gradleは元々の作りが非常にブラックボックスなため、設定されたオブジェクトのライフサイクルがわかりづらいなどの問題があり、Gradle3に向けて、それを修正している最中です。その中核となるのがRule Based Model Configurationという仕組みです。 その仕組については以前にもエントリーを書いているので、そちらを参照してください。 mike-neck.hatenadiary.com 基的な考え方は 値オブジェクトの生成(プラグインが値オブジェクトを生成する) 値オブジェクトの設定(ユーザーがオブジェクトの中の値を変更できる/mutableなオブジェクト) 値の利用(ユーザーもプラグインも値を変更できない/immutableなオブジェクト) という流れにそって設定を記述していくという考え方です。 では、Javaプロジェクトはどのように変わっていくかを今回は簡単に説明

    Gradle3におけるJavaプロジェクトのビルド入門(1) #gradle - mike-neckのブログ
    waman
    waman 2015/11/15
    メジャーバージョンアップだけあって互換性が…
  • 今 gradle.org に何が起きているのか? - mike-neckのブログ

    gradle,org に何か異変っぽいものが起きているらしいです。 Gradleさんどうなってしまったの https://t.co/L1ssx97cY4— Yasuharu Nakano (@nobeans) 2015, 10月 26 僕も昨晩確認してみたところ、こんなページになっていました。 @saba1024 なんか、直ってた pic.twitter.com/aA7ebZzNlG— Shinya Mochida (@mike_neck) 2015, 10月 26 何だろうと憶測で思いを巡らすのも面倒なので、聞いてみました。 discuss.gradle.org で、マーク・ビエイラさんが「Gradlephant」(gradle象)と「Build Happiness」について知りたかったら、読んでねと紹介されたのがこちらのページ。 gradle.org 簡単に訳してみましょう。 grad

    今 gradle.org に何が起きているのか? - mike-neckのブログ
    waman
    waman 2015/10/27
    象になったのか。 まさか蟻に負けたりしないだろうけど。
  • 今更だけど、Gradleをちゃんと勉強しよう - Gradleのタスク実行フェーズ その2 - mike-neckのブログ

    Gradleでなんらかのタスクを作って、実行してみると遅い時がありますね。 まあ、大量のファイルをコピーしてzipで固めるなんて場合は、遅いのは仕方ないです。しかし、cleanとかtasksとかコピーと関係のないタスクまで遅くなるようなことがあれば、設定フェーズでなんらかの重たい処理が必要もないのに走っていることがだいたい原因だったりします。 例えば、次のようなタスクを作ることにします。 payara-microのjarをコピーしてzipにしてbuild/payaraディレクトリーに保存する jarの中のファイルのリストをテキストファイルに書き出す 結構大量のファイルをコピーするタスクなので、2.の結果のテキストファイルを前回の結果と比較して、同じものであればUP-TO-DATEとする 関係ないタスクまで遅くなるビルドスクリプト 何も考えずに上記のタスクを書くと、このようになります。 ap

    今更だけど、Gradleをちゃんと勉強しよう - Gradleのタスク実行フェーズ その2 - mike-neckのブログ
    waman
    waman 2015/09/01
  • チェッカーフレームワーク(org.jetbrains:annotation)の使い方メモ - mike-neckのブログ

    IntelliJ IDEAとかAndroid Studioを使っている人は、メソッドの横の方に@が書かれているのを見たことがあるかと思います。 (Android Studioで実際に表示されるのかは知らないけど、ツイッターで観測している限りアンドロイダーの人で「この@Contractって何」ってツイートしている人がいたのでおそらく表示されている) ここにカーソルを合わせると、メソッドの性質について情報が表示されます。 例1:次のようなメソッドの場合には@Contract("null -> fail; !null -> !null")と表示されます。 nullを引数に渡すと例外が発生する nullでない引数を渡すとnullでない値が返される 例2:つぎのメソッドの場合には@NotNullと表示されます。 どのような引数を渡しても必ずnullでない値が返される この情報が表示されることで、ある

    チェッカーフレームワーク(org.jetbrains:annotation)の使い方メモ - mike-neckのブログ
  • Java 8u60で、Mapの初期化とかがすごい楽になってる件 - mike-neckのブログ

    夜中に8/15頃のツイートが回ってきた。 Java 8u60 adds reflection on lambda param names DSLs https://t.co/cflxFK468e Hash-Literals https://t.co/5rOCrrckcB pic.twitter.com/NEzj4X3Bt1— Benjamin Weber (@benjiweber) 2015, 8月 16 曰く Java8u60でラムダのパラメーターの名前に対してリフレクションができるようになってるよ というわけで 早速、件のツイートにあったレポジトリーをダウンロードして(mavenレポジトリーにはない…(´・ω・`))、プロジェクトに追加して、試してみた。 コード import com.benjiweber.typeref.NamedValue; import java.util.Col

    Java 8u60で、Mapの初期化とかがすごい楽になってる件 - mike-neckのブログ
    waman
    waman 2015/08/22
  • Gradle3.0で一部が激しく変更されるっぽい感じが漂う件 - mike-neckのブログ

    gradleは単なるタスク実行基盤ツールですが、僕が3~4年前に人から「gradleなんてクッソマイナーで型もないgroovy(偏見)のツールなんて誰が使うか」と言われてた頃から比べると、Androidでの採用もあり、かなり普及した感があります。 さて、そんなだいぶ馴染んできたgradleですが、gradle3.0のデザインドキュメントを読んでいると、Javaだけのプロジェクトならそれほど変わらないかもしれないのですが、nativeと一緒のプロジェクトにおいては激しく変更される(より親密になる)ような感じがあります。 Gradle2.4で新しい(というかバイナリービルドでは使われていた)機能のドキュメントにその変更について若干見え隠れしています。これは以前書いたエントリーを参照下さい。 mike-neck.hatenadiary.com 【補足】なお、この記事は5月に書いたものですが、すで

    Gradle3.0で一部が激しく変更されるっぽい感じが漂う件 - mike-neckのブログ
    waman
    waman 2015/08/09
  • Java 8 Streamの挙動を調べたった - mike-neckのブログ

    表記の件について、JavaのListから作るStreamは操作中に変更をするとその後の挙動についてなんら結果を保証しないので、ListからStreamを作った場合は、変更をしないか、あるいは不可変なListに変換してから作るのが良いです。 と、書いておいてからなのですが、こんなツイート見かけました。 これは思わぬ結果 ステートフルな中間操作のsorted()かますと 最終的にListは空になるけどforEachで全て出力される。 なんでだろう? これで今日も眠れないw pic.twitter.com/864kLHyK8K— Yucchi (@Yucchi_jp) May 8, 2015 peekでListの要素を削除するというやってはいけないパターンです。 @Test public void intList() { List<Integer> list = IntStream.range(

    Java 8 Streamの挙動を調べたった - mike-neckのブログ
    waman
    waman 2015/05/09
  • だから、あれほどFiles#lines(Path)を使うときはtry-with-resourcesでちゃんと包めといったのに… #jjug #ccc_f2 - mike-neckのブログ

    以前、こういう記事を書きました。 mike-neck.hatenadiary.com 僕は、世間的にあまり知られていない人間なので、この記事があまり伝わっていなかったのでしょう。ちょっと恐れていたことがありました。 JJUG CCC 2015 SpringのセッションF2で、このような発表がありました。 ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring) from Yuuki Fukuda www.slideshare.net これの33ページのコードにはリソース解放漏れがあります。 FIles.lines(path).lines().forEach(System.out::println); このバグの可能性のあるコードがJJUG CCCというかなり規模の大きくなってきた大舞台でサンプルコードとして紹介されてしまいました。規模の大きいイベン

    だから、あれほどFiles#lines(Path)を使うときはtry-with-resourcesでちゃんと包めといったのに… #jjug #ccc_f2 - mike-neckのブログ
    waman
    waman 2015/04/13
  • Gradle2.2の地味にうれしい機能 - mike-neckのブログ

    こんにちわ、みけです。 標記の件について、gradle2.2のリリースノートにうれしい機能が書かれていました。 Specify version control system for IntelliJ IDEA IntelliJ IDEAのバージョン管理ツールを特定する機能が追加されました。 apply plugin: "idea" idea { project { vcs = "Git" } } これで、プロジェクトのVCSがgitであるとIDEAに伝えることができます。 なお、これまでは、次のように書いていました apply plugin: 'idea' idea { project { ipr { withXml { def map = provider.node.component.find { it.@name == 'VcsDirectoryMappings' }.mapping

    Gradle2.2の地味にうれしい機能 - mike-neckのブログ
  • 1