mike-neckのブログ

JavaかJavaFXかJavaEE(なんかJava8が多め)

git secretsとJavaのserialVersionUIDの相性が悪い

念のためにgit secretsを入れて、aws providerを設定していますが、ちょくちょくJavaのプロジェクトのコミットで失敗が発生してた。 コミットのエラーログを調べると、serialVersionUID private static final long serialVersionUID = -8419924062942848690L…

JUnit5の標準のassertとDynamicTestの用い方

JUnit5でわりと便利だと思っているのが、JUnit5に標準でついてくる Assertions#assertAll と @TestFactory で返す Iterable<DynamicTest> です。 エンタープライズな現場でよく見かけるテストとして、こういうのがあるかと思います。 @Test void firstTest() { final Map<Long, UserEntity> </long,></dynamictest>…

ジェネリクス勉強会に行ってきた件

ジェネリクス勉強会に行ってきたよ、という話 + 抽象型でジェネリクスを実装してみるという話が面白かったので実際にやってみたという話

daabの開発をKotlinでできるようにする

今いる会社の提供するdirectというチャットサービスではボットの開発ができて、そのsdkがdaab(direct agent assist bot)というらしい。 で、daabチームが専修大学でハッカソンを共催するということで、僕も自分の会社のボットくらい作れないと恥ずかしいなと…

JJUG CCC 2017 Spring 参加メモ

表題の通りJJUG CCC 2017 Springに行ってきました。参加したセッションのメモです。 www.java-users.jp エンプラ開発におけるレガシーアプリケーションの巻取りとモジュール分割の戦い 既存のレガシーアプリケーションにアプリケーションを追加する案件から…

Java Day Tokyo 2017 参加メモ

Java Day Tokyo 2017に数年ぶりに参加しました。そのメモです。僕が参加したのは次のセッションです。 基調講演 Java 9 and Beyond: Java Renaissance in the Cloud Modular Development with JDK 9 Tuning G1GC Java SE 9のすすめ 緊急開催!Java技術メモ三…

Java9(ea163)でHttpClientを使ってみたノート

ディレクトリ構成やmodule-info.javaで少々ハマったので(10分)、ノート。 Java SE9から公式のやっと面倒くさくないHttp Clientが出るので試してみた。 試してみたのは jdk.incubator.httpclient モジュールの jdk.incubator.http.HttpClient とその関連クラ…

Spring BootでThymeleaf3を使うときのbuild.gradle

ググってもMavenの方法しか出てこないのでメモ。 start.spring.io で作ったbuild.gradleに次を追加するだけ。 ext['thymeleaf.version'] = '3.0.0.RELEASE' ext['thymeleaf-layout-dialect.version'] = '2.0.0' 元ネタはこちらのステファン・ニコルさんのコ…

JSUG勉強会 2017 - 3 〜ドメイン駆動設計 powered by Spring のメモ

JSUGの勉強会に参加したので、そのメモ。 jsug.doorkeeper.jp 資料は公開されるだろうから、ここでしか聞けないことを中心にメモ(ツイート)したつもりだが、資料に盛り込まれている可能性は十分にある。なお、資料は以下の通り。 ドメインロジックに集中せよ…

Javaでの和暦の扱いについて

Date and Time APIでの和暦の扱いをちゃんと調べていなかったので、調べた。 なお、以下で用いるコードにおいては次のフォーマッタおよび、タイムゾーンを使った。 final ZoneId tokyo = ZoneId.of("Asia/Tokyo"); final DateTimeFormatter formatter = new …

JetBrains系IDEと各種ITSとGitを連携してスマートに作業する

JetBrainsユーザーグループにて「IntelliJとYouTrack」というタイトルにて発表してきましたが、グダグダな発表をしたのでちゃんとまとめた記事を書きます。 jbugj.connpass.com 要点 JetBrains系IDEでは、標準に付属しているツールを用いることで、スマート…

testcontainersで使い捨てのデータベースコンテナを用意してSpring Bootアプリケーションのテストをおこなう

テストを流したらデータベースを起動していなくて、テストが全部コケさせることがよくあり、悩んでましたが、 @making さんに testcontainers を教えてもらったので試してみました(経緯は若干違う)。 github.com testcontainersはテスト時にのみ使う使い捨て…

Speedment ORMのメモ

Stream APIを使ったORM。 概要 MavenプラグインでDBスキーマからモデルのクラス/レポジトリー(に該当する)クラスを吐き出す Applicatoinクラスからレポジトリー(に該当する)クラスを取り出す レポジトリーにStream APIを通じてクエリーを投げる インストール…

Kotlin ts2kt の使い方メモ

KotlinがDefinitelyTypedに対応したと聞いたので早速試してみた 概要 ちょっと試しただけのメモ TypeScriptの型定義情報をKotlinの型定義情報に変換するKotlin公式のツール d.tsが型の定義を頑張ってくれていれば、Kotlinで楽できる ファイル名をそのまま出…

ArtifactoryのDockerイメージとgradleでのartifactのデプロイのメモ

少々こまったことがあったので、Artifactoryを調べたので、そのメモ。なお、数年前も同じことを調べたという記憶があるのだが、メモを残していなかったのであらたに調べることになった… 書かれていること ArtifactoryのイメージをビルドするDockerfile プロ…

eclipseがメインのIDEに指定されているプロジェクトでIntelliJを使って開発する

職場のプロジェクトがメインで指定するIDEはeclipseですが、IntelliJ IDEAが大好きなのでIntelliJ IDEAで仕事しています。 するとどうしても問題が出てきます。 importの順番が異なるために無駄なdiffが出てくる コードスタイルが異なるのでレビューしづらい…

sdkmanでJavaのインストール

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

lombokで生成されたgetterにアノテーションを付与する方法と問題

lombokの既存バグにハマったので、その一時的な回避策のメモ。 なお、この情報は以下の環境でおこなった。 Java - 1.8.0_102 lombok - 1.16.12 なお、issueはこちら。 github.com lombokで生成されるgetter(あるいはsetter)にアノテーションを付与する方法 G…

JUnit5入門(6) - JUnit5とGuiceでDIが必要なオブジェクトを構築してテストする

前回の続き これまでの内容をまとめて、DIが必要なオブジェクトをテストするやり方(のひとつ)をやってみる。DIにはGuiceを用いる。 環境 JDK|1.8.0_102 junit-jupiter-api|5.0.0-M3 junit-platform-engine|1.0.0-M3 guice|4.1.0 テスト対象のインターフェー…

JUnit入門(5) - JUnit5の拡張(Extension)

前回の続き JUnitの Extension インターフェース JUnit4のRunnerと同様、JUnit5も拡張をすることができる。 JUnit5が提供している 拡張インターフェース(Extension を継承したインターフェース)は次のとおり。 ContainerExecutionCondition メソッド - evalu…

JUnit入門(4) - TestFactoryとDynamicTest - JUnit5におけるパラメタライズドテスト実現法

前回の続き @TestFactory @TestFactory はJUnit4における Theories ランナーを用いたテストパラメーターをいろいろと組み合わせるテストを実現するために用いる。 @TestFactory を付与したメソッドは次のいずれかを返すメソッドを実装する必要がある。 Itera…

JUnit5入門(3) - アノテーション

前回の続き JUnit4同様、JUnit5ではテストのメタ情報や、実行制御はアノテーションを介して行われる。今回はそのアノテーションをまとめる。 JUnit5が提供するアノテーション一覧 アノテーション 役割 説明 @Test メタ情報 付与されたメソッドがテストである…

JUnit5入門(2) - アサーション

前回 の続き 今回は値の比較、アサーションについて。 JUnit5が提供するアサーション JUnit5はJUnit4とほぼ同等のAssertion機能を提供している。また、より高度なAssertionを求める場合は、サードパーティライブラリーの利用を勧めている。 JUnit5のAssertio…

How to run test class whose name doesn't end with Test in JUnit5 with Gradle.

JUnit5 publishes junit-platform-gradle-plugin. With it you can run JUnit5 tests with gradle. But if you don't give Test at the end of the test class name, this plugin ignores to run it. If you want to run a test classes whose name don't en…

JUnit5入門(1) - テストクラスの作成とテストの実行

年末にかけてJUnit5(junit-jupiter)をいじったのでまとめ。 使い方的な話はQiitaにある記事のほうが詳しいかもしれない… qiita.com qiita.com qiita.com qiita.com JUnit5ライブラリーの導入 テストコンパイルスコープにjunit-jupiter-api、テストランタイム…

DateTimeFormatterのパターンとLocale

Junit5の ParameterResolver によってテストメソッドのパラメーターに渡せる日付文字列の形式をユーザーが自由に決められるようにするために、 DateTimeFormatter を使っていた際に、どうしても月のパターン MMM によって月が名前(例えば1月なら Jan)になら…

Kotlinの末尾再帰でFizzBuzz(Kotlin Advent Calendar 2016) #ktac2016

この記事はKotlin Advent Calendar2016の6日目の記事です。 昨日は RyotaMurohoshiさんの 「【!ってなんだ】KotlinとJava、nullとPlatformType【NullableにNotNull」 でした。 明日は kikuchy さんの 「」 です。 末尾再帰でFizzBuzz この記事ではKotlinの末…

Docker復習

歳なので覚えるのが遅くなったというよりも忘れるのが早くなった感じらしく、Dockerのことをすっかり忘れてたので、復習した。Dockerの使い方レベルなので自分が得するだけのエントリー。 dockerコンテナに環境変数を渡す -e VARIABLE=VALUE で渡す。 docker…

Freeモナドを使ってIOアクションをモッキングする的な

Freeモナドがすごい的な話がおよそ4〜5年前くらいに流行ってたのだが、その頃はHaskellなど触ってなかった僕には関係のない話でした。 Haskellを触ってて、IOアクションのあるようなプログラムをテスト的に動かしてみようとすると途端に困るわけです。 例え…

JJUG CCC 2016 Fall に行ってきた #jjug_ccc

表題のとおりです。 www.java-users.jp 以下、参加したセッションの独断と偏見によるレポートです。 Prepare for Java 9 : Java9に備えよう Java9先取りのセッションです。 Jigsaw Kullar 非互換情報 ファイル/ディレクトリ構造が変わる話 プロパティファイ…