タグ

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

  • Gradleでプラグインを利用する方法 - mike-neckのブログ

    今更なタイトルですが… incubatingなAPIで plugins DSLと呼ばれている方法です。plugins DSLはgradleのplugin repositoryにあるプラグインをid(とバージョン)だけで引っ張ってこれるようにする方法で、gradleの2.10くらいに登場しています。gradleにデフォルトに添付されているプラグインとgradle のplugin repository にあるプラグイン以外をこのDSLで指定する方法は登場した当初はなかったのですが、最近はsettings.gradleで頑張ればできるということ(そして、multipleなプロジェクトになるとすごく便利になるということ)を教えてもらったので、忘れてもいいようにメモしておきます。 実例としてJUnit5のプラグイン org.junit.platform.gradle.plugin を使います。 pl

    Gradleでプラグインを利用する方法 - mike-neckのブログ
  • Java9(ea163)でHttpClientを使ってみたノート - mike-neckのブログ

    ディレクトリ構成やmodule-info.javaで少々ハマったので(10分)、ノート。 Java SE9から公式のやっと面倒くさくないHttp Clientが出るので試してみた。 試してみたのは jdk.incubator.httpclient モジュールの jdk.incubator.http.HttpClient とその関連クラス。 1. ディレクトリー構成 Java9からはモジュールを定義しておかないと、使いたいクラスがうまく利用できない。したがって、まずモジュール名を決定した後にモジュール名と同じ名前のディレクトリーを作り、その下に src ディレクトリーを作る。 まずモジュール名は com.example とした。 ディレクトリーを次のように作る。 root/ └── com.example └── src 2. モジュールの定義 src ディレクトリーの下に module-i

    Java9(ea163)でHttpClientを使ってみたノート - mike-neckのブログ
  • sdkmanでJavaのインストール - mike-neckのブログ

    結構前のことですが、 sdkman でJavaをインストールできるようになったとのことで、Javaの更新をsdkmanでやるようにしてみた。 sdk list java まず、どのバージョンのJavaが利用できるのか確認してみます。 $ sdk list java ================================================================================ Available Java Versions ================================================================================ 8u111 7u79 6u65 =================================================================

    sdkmanでJavaのインストール - mike-neckのブログ
  • Gradle3におけるJavaプロジェクトのビルド入門(4) -- 実践編 #gradle - mike-neckのブログ

    Gradle3におけるJavaプロジェクトのビルド入門の一連の記事ではJVM component modelによるJavaプロジェクトのビルド方法について紹介してきた。その過程でJDK9より導入されるJigsawとの関連も指摘しておいた。 この記事では実践的なJVM component modelによるJavaプロジェクトのビルドについて、(簡単ではあるが)若干複雑な例を紹介していく。例題としてはJava8で随分とおなじみになっているOptionalの再実装をおこなう。 コンポーネントの設計 Optionalを使う場合、主に使われるのが次のような機能群である。 例外(ライブラリー名:exceptions) - Javaなので、完全に関数型スタイルでのプログラミングができないため、Optional自体にmapやfmapなどのメソッドを定義することになる。その際にnullを渡してしまった場合な

    Gradle3におけるJavaプロジェクトのビルド入門(4) -- 実践編 #gradle - mike-neckのブログ
  • 簡単な特徴もないJava用のテスティングフレームワークつくった - mike-neckのブログ

    諸事情により、JUnitが使えない状況でコードを書いていたのですが、書いたコードが動くかどうか確認したい衝動に駆られて、簡単な特徴もないテスティングフレームワークを作りました。 仕様 最初に書いた仕様がこれ。 github.com public class MaybeTest extends Test { @Examination public void mapStringLengthRemainsSome() { setup(() -> some("stringLength=15")) .when(maybe -> maybe.map(String::length)) .then(equalsTo(15)); } } そのときはこんなイメージでした。 setup(Supplier<? extends T>)でテスト対象のオブジェクトを生成する when(Function<? super

    簡単な特徴もないJava用のテスティングフレームワークつくった - mike-neckのブログ
  • Gradle3におけるJavaプロジェクトのビルド入門(3) -- 用語の再確認とJigsawとの関連 #gradle - mike-neckのブログ

    今回はJVM component modelにおける用語について整理しておく。 前回、前々回とGradle3におけるJavaプロジェクトのビルドにおけるJVM component modelの入門を行っていった。 mike-neck.hatenadiary.com mike-neck.hatenadiary.com また、JVM component modelに関連する知識としてJigsawについて簡単なまとめを行った。 mike-neck.hatenadiary.com 以上のエントリーの中で、僕は公式の(ただし今後変更される可能性のある)用語を幾つか混同していたので、それらをまとめておきたいと思う。また、公式のリンクは今後のリリースにともなって変更される可能性があるので、注意されたい。 用語 まず、基的な用語を抑えておく コンポーネント ライブラリー ソースセット バリアント バイナ

    Gradle3におけるJavaプロジェクトのビルド入門(3) -- 用語の再確認とJigsawとの関連 #gradle - mike-neckのブログ
  • Jigsawについて雑にまとめてみた - mike-neckのブログ

    以前、Gradle3におけるJavaプロジェクトのビルドについてのエントリーを書きましたが、Gradle3のJVM component modelって、まあ、わりと、Java9のJigsawみたいなものなんですね。で、Jigsaw自体知っている人が多いと思いますが、あらためてJigsawが解決したい問題(と僕が勝手に認識しているもの)とその解決方法について、雑にまとめてみることにしました。 なお、Gradle3のJVM component modelでのビルドについてはこちらを参照。 mike-neck.hatenadiary.com JVM component modelとJigsawとの関連について、少し言及があるエントリーについてはこちらを参照。 mike-neck.hatenadiary.com あと、Jigsawについて一番よくまとまっている資料見れば、このエントリーを見る必要は

    Jigsawについて雑にまとめてみた - mike-neckのブログ
  • Gradle3におけるJavaプロジェクトのビルド入門(2) #gradle - mike-neckのブログ

    前回は、JVM component modelによるJavaプロジェクトのビルドの入門をおこなった。 mike-neck.hatenadiary.com これまでのjavaプラグインに比べると記述量が増えてしまうが、遜色ないビルドができることは示せたと思う。 複数ライブラリー(コンポーネント) 前回、簡単にするためにmainというライブラリーだけに限ってプロジェクトのビルドを行いましたが、複数のライブラリー(コンポーネント)を指定することも可能でした。そこで、今回はまず複数のライブラリーを作成するプロジェクトを構築してみたいと思います。 前回用いたMainクラスとResクラスをそれぞれ別のライブラリーに分けることにします。 クラス ライブラリー sample.Main main sample.Res res また、resources/app.propertiesファイルはmainライブラリ

    Gradle3におけるJavaプロジェクトのビルド入門(2) #gradle - mike-neckのブログ
    yukung
    yukung 2016/02/21
    “JVM component modelはGradleのJava9対応でもあるわけです”
  • 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のブログ
  • Gradle TestKit用のプラグインをリリースしました - mike-neckのブログ

    表記のとおりです。 動機 Gradle2.6からの機能の一つgradleTestKitはかなり便利なのですが、まだまだ機能不足で、特に自作プラグインを読み込めないところが弱点であると言ってきました。 mike-neck.hatenadiary.com mike-neck.hatenadiary.com mike-neck.hatenadiary.com Gradle Forumで、質問してもやっぱり、そのあたりの機能はないんだよねーと言われています。 discuss.gradle.org まあ、やり方はわかっていたので、それらを自動でやってくれるようなクラスを作っちゃえばいいんだろうということで、自動で自作プラグインを読み込むクラスを生成するタスクを生やすプラグインを作りました。 Gradle - Plugin: org.mikeneck.gradle-testkit-support-pl

    Gradle TestKit用のプラグインをリリースしました - mike-neckのブログ
  • Rule Based Model ConfigurationのManagedインターフェースを生成するgradle pluginを作った。 - mike-neckのブログ

    なるべく、わからないようにリリースしたつもりだったのですが、さすがGradleの日の第一人者、綿引さんにすぐに見つかってしまいました。 @mike_neck さんのプラグインがポータルにあがっておる。https://t.co/YOdb34pLcK #jggug— Takuma Watabiki (@bikisuke) 2015, 8月 15 Gradle - Plugin: org.mikeneck.rule-based-model-generation Rule Based Model Configurationのインターフェースの制約 これ、結構ドキュメントがしっかりしていないので、インターフェースを書くのに、難しいところがあったりします。 それを簡単に解決するプラグインです。 まあ、webアプリを作ってる人にはほとんど関係無いです。 あくまでgradle pluginを作ってる人に

    Rule Based Model ConfigurationのManagedインターフェースを生成するgradle pluginを作った。 - mike-neckのブログ
  • Rule Based Model Configurationの @ Mutate フェーズ実装のベタープラクティス(若干) - mike-neckのブログ

    gradle2.4以来、gradleのRule Based Model configurationに魅力を感じて、いろいろ試しています。 mike-neck.hatenadiary.com 日人、破壊的な変更が入らない限り勉強しないので、今のところrule based model configurationを追っかけている人って僕の観察範囲では僕しかいません。しかし、この機能はGradle3.0の基部分になってくるので、ぜひとも抑えてもらいたいものです。 ベタープラクティス(小出しというか、これしか今のところない…(´・ω・`)) 幾つか作ってみた感触ですが、実装時のベタープラクティスとして、 @Managedモデルオブジェクトのvalidationは@Mutateフェーズではなく、@Mutateフェーズで生成するtaskのactionで実行するほうがよい まあ、ベタープラクティスとい

    Rule Based Model Configurationの @ Mutate フェーズ実装のベタープラクティス(若干) - mike-neckのブログ
    yukung
    yukung 2016/02/21
    “validationに関してはなるべく遅延して実行されることが望ましい”
  • gradle2.4のRule based model configurationがユーザーにとって地味に嬉しい - mike-neckのブログ

    gradle2.4のリリースノートを先日眺めていたらRule based model configuration improvementsという記述があって、そのユーザーガイドのコードを試してみました。 モデル モデル(POJO)をあらわすインターフェース。Managedアノテーションを付与することによってモデルであることをあらわす。このアノテーションが付与できるのはインターフェースかabstractクラスでないといけないらしい。というのも、gradleが場面場面でオブジェクトの可変性・不可変性を管理しているからのようです。 package sample; import org.gradle.model.Managed; @Managed public interface SampleModel { void setFrom(String from); String getFrom();

    gradle2.4のRule based model configurationがユーザーにとって地味に嬉しい - mike-neckのブログ
    yukung
    yukung 2016/02/21
    "Rule based model configuration形式でプラグインを実装すれば、ユーザーにとって何が設定できるのかがわかりやすくなる"
  • Gradle2.10のリリースノート意訳 - mike-neckのブログ

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

    Gradle2.10のリリースノート意訳 - mike-neckのブログ
    yukung
    yukung 2016/02/05
    ありがたや
  • Gradle-2.9-rc1が11月4日に利用可能になってました #gradle - mike-neckのブログ

    10月1日にGradle2.8-rc1が出たという記事を書いてから、1ヶ月、Gradle2.9-rc1が2015/11/4に出ています。 mike-neck.hatenadiary.com というわけで、いつもどおりリリースノートの意訳 Gradle TestKitがもっと便利になった Gradle TestKitがGradle2.6で出てからプラグインのテストが簡単になったわけですが、今回のリリースでもっと便利になりました。TestKitはデバッグ、クロスバージョンテスト、ビルド成果物を取得することができるようになりました。 より簡単になった機能テスト Gradle TestKitはプログラム的にGradleビルドを走らせて、プラグインの検証を行うわけですが、テスト対象のクラスなどに対してデバッガーを割り当てることを容易にしました。 Gradleビルドの正確なシミュレーションを提供するた

    Gradle-2.9-rc1が11月4日に利用可能になってました #gradle - mike-neckのブログ
  • 今 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のブログ
    yukung
    yukung 2015/10/27
    変わってたの今気づいた
  • gvmからsdkmanにアップデートする - mike-neckのブログ

    gradleユーザーの方も読んでもらいたい記事です。gvmがsdkmanに変わるらしいです。 gvmがgo version managerと名前がバッティングしてて、かつgo version managerの方が古くから存在していたとのことで、gvmがsdkmanに変わるそうです。 で、アップデートの仕方をすでにqiitaに書いていらっしゃる方がいたので、それを見ながら作業しています。人柱ありがとうございます。おじさんは、もう老害です。 qiita.com 特に入れたいcandidatesもないので、普通にgvm selfupdate forceでやりました。 ~ $ gvm selfupdate force GVM has been detected on your system... This update will upgrade GVM to SDKMAN! Do you want

    gvmからsdkmanにアップデートする - mike-neckのブログ
    yukung
    yukung 2015/09/18
    移行した!
  • 今更だけど、Gradleをちゃんと追いかけよう - gradle2.7-rc1がリリースされました - mike-neckのブログ

    Gradle2.7-rc1が2015/08/29の0:00頃にリリースされたようです。Gradleは2ヶ月に1回リリースするので、正式版は10月になると思います。今は人柱になりたい方が試してみるとよいと思います。 discuss.gradle.org 内容については、きっとよしださんがどっかの勉強会で詳しく解説してくれると思うので、ここでは雑に紹介します(人任せ)。 ソースはここ Gradle 2.7-rc-1 Release Notes なお、このURLは新しいバージョンが出るたびに新しいrc版のリリースノートになるので、2.8-rc1が出る頃は2.8のものになってるので注意してください。 結構重要:Gradle2.6のラッパー遅くなってごめんね Gradle2.6でラッパー作った人は、すみやかに2.7でラッパーを作りなおしたほうがいいよ。2.6でチェックサムの検証方法を変えたんだけど、

    今更だけど、Gradleをちゃんと追いかけよう - gradle2.7-rc1がリリースされました - mike-neckのブログ
  • Gradle2.6の新機能のうち二つを試してみた - mike-neckのブログ

    JJUG LT大会、行きそびれました。 完全に夜型というか一日の活動時間が6時間くらいしかない僕が夜7時のイベントに参加するなど、到底無理でした(言い訳) 一応、夕方4時くらいには起きていたのですが、雨が降り出して、気分が落ち込んでしまったため、寝て起きたら8時過ぎていました。 JJUGのLTで@grimroseさんがgradle2.6についてLTしていたようです。 そして、LTの2時間後の11:00くらいにgradle2.6がリリースされました。 discuss.gradle.org Gradle2.6の新機能 Playframeworkのサポート Gradleプラグインの機能テストサポート Rule base Model configurationのレポート改善 Tooling API のテストラウンチャー(よくわかってない) gradle wrapperのSHA-256サポート のよ

    Gradle2.6の新機能のうち二つを試してみた - mike-neckのブログ
  • SQLのUPDATE文と履歴系テーブル - mike-neckのブログ

    大したことは書いてありません。 気付いたことのメモ程度です。 『理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus) 』を少し屋で立ち読みしました。(ノットワーキングプアにあえいでいるので立ち読みしかできない(´・ω・`)) このの中で履歴系テーブルの扱い方というのに丸々一章が割り当てられていました。 だいたいこんなことが書かれてたと思う。 「時間軸と直交していない」という点は、履歴テーブルは過去の事実の集合で、データを取得する条件が変われば結果が異なるのは当たり前だと思うんだけども。— enum (@enum) 2015, 3月 16 たしかに、RDBMSでは履歴データというのは相性が悪い。 僕は陸上競技を見るのが好きなので、これのデータモデルをたまに考えたりしています。で、選手の氏名が変わることあるよなーと考えると、こ

    SQLのUPDATE文と履歴系テーブル - mike-neckのブログ